From fb70e8b64a8149fbe3e5112397dce9ae8278d44b Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Sun, 21 May 2023 10:29:45 -0600 Subject: [PATCH 1/6] 1.3.0 (#64) --- __init__.py | 0 args/auction_house.py | 5 + args/challenges.py | 10 + args/chests.py | 19 +- args/coliseum.py | 45 ++- args/espers.py | 7 + args/graphics.py | 11 + args/items.py | 3 + args/misc.py | 9 + args/scaling.py | 28 ++ args/starting_gold_items.py | 1 + args/steal.py | 21 +- battle/auto_status.py | 7 + battle/scaling_functions.py | 28 ++ constants/items.py | 1 + constants/objectives/results.py | 1 + constants/status_effects.py | 7 + data/character.py | 8 +- data/chests.py | 43 +- data/coliseum.py | 26 +- data/data.py | 2 +- data/dialogs/dialogs.py | 374 ++++++++++++++++++ data/enemies.py | 58 ++- data/enemy_ability_tiers.py | 16 +- data/enemy_battle_groups.py | 101 +++++ data/enemy_formations.py | 2 +- data/enemy_script_custom_commands.py | 2 +- data/esper_spell_tiers.py | 4 + data/espers.py | 3 + data/espers_asm.py | 121 ++++++ data/event_bit.py | 1 + data/item.py | 7 +- data/items.py | 16 +- data/lores.py | 42 +- data/map_event.py | 40 ++ data/map_events.py | 215 +++++++++- data/maps.py | 87 +++- data/spells.py | 10 + event/auction_house.py | 12 +- event/baren_falls.py | 9 + event/ebots_rock.py | 26 ++ event/event.py | 11 + event/fanatics_tower.py | 9 + event/figaro_castle_wor.py | 5 +- event/gau_father_house.py | 8 + event/mobliz_wor.py | 23 +- event/mt_kolts.py | 24 ++ event/mt_zozo.py | 11 + event/narshe_moogle_defense.py | 14 +- event/narshe_wor.py | 1 + event/opera_house_wob.py | 22 +- event/owzer_mansion.py | 9 + event/veldt.py | 2 +- graphics/palettes/custom/Akari-HoxNorf-LB.pal | Bin 0 -> 32 bytes .../palettes/custom/Alice-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Alphys-LoneRedMage-Undertale.pal | Bin 0 -> 32 bytes .../palettes/custom/Amy-HoxNorf-Sonic.pal | Bin 0 -> 32 bytes .../palettes/custom/Angeal-HoxNorf-FF7.pal | Bin 0 -> 32 bytes .../palettes/custom/Antlion-Astaroth-FF4.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Aria-HoxNorf-FF3.pal | 1 + .../palettes/custom/Arle-HoxNorf-Madou.pal | Bin 0 -> 32 bytes .../custom/Arthur-JamesWhite89-GnG.pal | Bin 0 -> 32 bytes .../palettes/custom/Arvis-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Atma-Astaroth-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Beatrix-PocoLoco-FF9.pal | Bin 0 -> 32 bytes .../palettes/custom/Blaze-HoxNorf-Sonic.pal | Bin 0 -> 32 bytes .../custom/Bombette-HoxNorf-Mario.pal | Bin 0 -> 32 bytes .../palettes/custom/Bowser-Badass-Mario.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Boy-Zozma-FF6.pal | 1 + .../palettes/custom/Cagnazzo-Astaroth-FF4.pal | Bin 0 -> 32 bytes .../palettes/custom/Cait Sith-HoxNorf-FF7.pal | 1 + .../palettes/custom/Cammy-Quikdraw7777-SF.pal | Bin 0 -> 32 bytes .../Captain Falcon-JamesWhite89-FZero.pal | Bin 0 -> 32 bytes .../custom/Celes (Amano)-Astaroth-FF6.pal | Bin 0 -> 32 bytes .../custom/Celes (Opera)-Astaroth-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Ceodore-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../custom/Chun Li-Quikdraw7777-SF.pal | Bin 0 -> 32 bytes .../palettes/custom/Clyde-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Cultist-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Dancer-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Dark Elf-Astaroth-FF4.pal | Bin 0 -> 32 bytes .../custom/Donkey Kong-Badass-Mario.pal | Bin 0 -> 32 bytes .../palettes/custom/Draco-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../custom/Eggman-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes .../palettes/custom/Elena-Astaroth-FF7.pal | Bin 0 -> 32 bytes .../custom/Figaro Guard-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Fighter-CtrlxZ-FF1.pal | Bin 0 -> 32 bytes .../palettes/custom/Firion-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Frisk-LoneRedMage-Undertale.pal | Bin 0 -> 32 bytes .../palettes/custom/Futo-HoxNorf-Touhou.pal | 1 + .../palettes/custom/Genesis-HoxNorf-FF7.pal | Bin 0 -> 32 bytes .../custom/Gilius-JamesWhite89-GoldenAxe.pal | Bin 0 -> 32 bytes .../palettes/custom/Gordon-HoxNorf-FF2.pal | 1 + graphics/palettes/custom/Granny-Zozma-FF6.pal | 1 + graphics/palettes/custom/Gryz-HoxNorf-PS4.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Guy-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Hojo-LoneRedMage-FF7.pal | 1 + .../palettes/custom/Hotaru-HoxNorf-MOTW.pal | Bin 0 -> 32 bytes .../custom/Interceptor-JamesWhite89-FF6.pal | Bin 32 -> 32 bytes .../palettes/custom/Josef-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Kaguya-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../Kain (Holy Dragoon)-CtrlxZ-FF4TAY.pal | Bin 0 -> 32 bytes .../custom/Knuckles-Jameswhite89-Sonic.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Lady-Zozma-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Laguna-HoxNorf-FF8.pal | Bin 0 -> 32 bytes .../palettes/custom/Leila-HoxNorf-FF2.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Leon-HoxNorf-FF2.pal | 1 + .../custom/Link-FEOK-LegendOfZelda.pal | Bin 0 -> 32 bytes .../palettes/custom/LoneWolf-PocoLoco-FF6.pal | 2 + graphics/palettes/custom/Lucca-FEOK-CT.pal | Bin 0 -> 32 bytes .../custom/Lufia-JamesWhite89-Lufia.pal | Bin 0 -> 32 bytes .../palettes/custom/Lugae-Astaroth-FF4.pal | Bin 0 -> 32 bytes .../palettes/custom/Luigi-Badass-Mario.pal | 1 + .../palettes/custom/Luneth-HoxNorf-FF3.pal | Bin 0 -> 32 bytes .../palettes/custom/Maduin-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Malin-HoxNorf-KOF.pal | 2 + .../palettes/custom/Maria-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Mario-Badass-Mario.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Marle-CtrlxZ-CT.pal | Bin 0 -> 32 bytes .../custom/Metal Sonic-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes .../palettes/custom/Minwu-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Nakoruru-HoxNorf-SamSho.pal | 1 + .../custom/NarsheGuard-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Nitori-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Noire-HoxNorf-Neptunia.pal | Bin 0 -> 32 bytes .../custom/Pacman Ghost-HoxNorf-Pacman.pal | Bin 0 -> 32 bytes .../custom/Palom (Adult)-HoxNorf-FF4.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Paul-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Peach-Halkel-SMRPG.pal | Bin 0 -> 32 bytes .../Piranha Plant-JamesWhite89-Mario.pal | Bin 0 -> 32 bytes .../custom/Porom (Adult)-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../custom/Purple Sister-HoxNorf-Neptunia.pal | 1 + graphics/palettes/custom/Raja-HoxNorf-PS4.pal | Bin 0 -> 32 bytes .../palettes/custom/Ram-HoxNorf-Neptunia.pal | Bin 32 -> 32 bytes graphics/palettes/custom/Ramza-CtrlxZ-FFT.pal | Bin 0 -> 32 bytes .../custom/Rash-JamesWhite89-Battletoads.pal | Bin 0 -> 32 bytes .../palettes/custom/Refia-HoxNorf-FF3.pal | Bin 0 -> 32 bytes .../custom/Reimu (Blue)-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../palettes/custom/Reimu2-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../palettes/custom/Relm-HoxNorf-FF6PR.pal | Bin 0 -> 32 bytes .../palettes/custom/Returner-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Ricard-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Rom-HoxNorf-Neptunia.pal | Bin 32 -> 32 bytes .../custom/Rubicante-Astaroth-FF4.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Rune-HoxNorf-PS4.pal | Bin 0 -> 32 bytes .../palettes/custom/Ryu-Quikdraw7777-SF.pal | Bin 0 -> 32 bytes .../palettes/custom/Sanae-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../palettes/custom/Scholar-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Scott-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../palettes/custom/Seifer-Filipinac-FF8.pal | Bin 0 -> 32 bytes .../Sherlotta-HoxNorf_ScarabEnigma-FFCC.pal | Bin 0 -> 32 bytes .../custom/Siegfried-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../custom/Simon-JamesWhite89-Castlevania.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Slash-Badass-CT.pal | Bin 0 -> 32 bytes .../palettes/custom/Sonic-Badass-Sonic.pal | Bin 0 -> 32 bytes .../Squall (Uniform)-SApprentice-FF8.pal | Bin 0 -> 32 bytes .../palettes/custom/Squall-PocoLoco-FF8.pal | Bin 0 -> 32 bytes .../custom/Tails-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Thief-CtrlxZ-FF1.pal | Bin 0 -> 32 bytes .../palettes/custom/Tifa-Astaroth-FF7.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Tina-CtrlxZ-FF6.pal | Bin 0 -> 32 bytes .../Toadette (Explorer)-HoxNorf-Mario.pal | Bin 0 -> 32 bytes .../custom/Toriel-LoneRedMage-Undertale.pal | Bin 0 -> 32 bytes .../custom/Train Conductor-Zozma-FF6.pal | 1 + .../palettes/custom/Ultros-PocoLoco-FF6.pal | Bin 32 -> 32 bytes .../palettes/custom/Ursula-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../palettes/custom/Vargas-PocoLoco-FF6.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Vincent-FEOK-FF7.pal | Bin 0 -> 32 bytes .../palettes/custom/Wolf-HoxNorf-Starfox.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Wren-HoxNorf-PS4.pal | Bin 0 -> 32 bytes graphics/palettes/custom/X-Badass-Megaman.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Xion-Kzinssie-KH.pal | Bin 0 -> 32 bytes .../palettes/custom/Yoshi-Badass-Mario.pal | Bin 0 -> 32 bytes .../palettes/custom/Yuyuko-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes graphics/palettes/palettes.py | 119 ++++++ .../portraits/custom/Akari-HoxNorf-LB.bin | Bin 0 -> 800 bytes .../portraits/custom/Akari-HoxNorf-LB.pal | Bin 0 -> 32 bytes .../portraits/custom/Alice-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Alice-HoxNorf-Touhou.pal | 1 + .../portraits/custom/Alma-Unknown-FFT.bin | Bin 0 -> 800 bytes .../portraits/custom/Alma-Unknown-FFT.pal | 1 + .../custom/Alphys-LoneRedMage-Undertale.bin | Bin 0 -> 800 bytes .../custom/Alphys-LoneRedMage-Undertale.pal | Bin 0 -> 32 bytes .../portraits/custom/Amy-HoxNorf-Sonic.bin | Bin 0 -> 800 bytes .../portraits/custom/Amy-HoxNorf-Sonic.pal | Bin 0 -> 32 bytes .../portraits/custom/Angeal-CDude-FF7.bin | Bin 0 -> 800 bytes .../portraits/custom/Angeal-CDude-FF7.pal | Bin 0 -> 32 bytes .../portraits/custom/Antlion-Astaroth-FF4.bin | Bin 0 -> 800 bytes .../portraits/custom/Antlion-Astaroth-FF4.pal | 2 + .../custom/Aria-JamesWhite89-FF3.bin | Bin 0 -> 800 bytes .../custom/Aria-JamesWhite89-FF3.pal | Bin 0 -> 32 bytes .../portraits/custom/Arle-HoxNorf-Madou.bin | Bin 0 -> 800 bytes .../portraits/custom/Arle-HoxNorf-Madou.pal | Bin 0 -> 32 bytes .../custom/Arthur-JamesWhite89-GnG.bin | Bin 0 -> 800 bytes .../custom/Arthur-JamesWhite89-GnG.pal | Bin 0 -> 32 bytes .../custom/Arvis-JamesWhite89-FF6.bin | Bin 0 -> 800 bytes .../custom/Arvis-JamesWhite89-FF6.pal | 1 + .../portraits/custom/Atma-Astaroth-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Atma-Astaroth-FF6.pal | Bin 0 -> 32 bytes .../custom/Banon-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Banon-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../portraits/custom/Barret-HoxNorf-FF7.bin | Bin 0 -> 800 bytes .../portraits/custom/Barret-HoxNorf-FF7.pal | 2 + .../custom/Bartz-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Bartz-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes .../portraits/custom/Beatrix-Xeblon-FF9.bin | Bin 0 -> 800 bytes .../portraits/custom/Beatrix-Xeblon-FF9.pal | Bin 0 -> 32 bytes .../portraits/custom/Blaze-HoxNorf-Sonic.bin | Bin 0 -> 800 bytes .../portraits/custom/Blaze-HoxNorf-Sonic.pal | Bin 0 -> 32 bytes .../custom/Bombette-HoxNorf-Mario.bin | Bin 0 -> 800 bytes .../custom/Bombette-HoxNorf-Mario.pal | Bin 0 -> 32 bytes .../custom/Bowser-JamesWhite89-Mario.bin | Bin 0 -> 800 bytes .../custom/Bowser-JamesWhite89-Mario.pal | 1 + graphics/portraits/custom/Boy-Zozma-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Boy-Zozma-FF6.pal | 1 + .../custom/Cagnazzo-Astaroth-FF4.bin | Bin 0 -> 800 bytes .../custom/Cagnazzo-Astaroth-FF4.pal | Bin 0 -> 32 bytes .../custom/Cait Sith-HoxNorf-FF7.bin | Bin 0 -> 800 bytes .../custom/Cait Sith-HoxNorf-FF7.pal | 2 + .../custom/Cammy-JamesWhite89-SF.bin | Bin 0 -> 800 bytes .../custom/Cammy-JamesWhite89-SF.pal | Bin 0 -> 32 bytes .../Captain Falcon-JamesWhite89-FZero.bin | Bin 0 -> 800 bytes .../Captain Falcon-JamesWhite89-FZero.pal | Bin 0 -> 32 bytes .../Celes (Opera)-Astaroth_Zozma-FF6.bin | Bin 0 -> 800 bytes .../Celes (Opera)-Astaroth_Zozma-FF6.pal | 1 + graphics/portraits/custom/Celes-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Celes-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Celes-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Celes-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../portraits/custom/Ceodore-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../portraits/custom/Ceodore-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../custom/Chocobo-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Chocobo-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes .../custom/Chun Li-JamesWhite89-SF.bin | Bin 0 -> 800 bytes .../custom/Chun Li-JamesWhite89-SF.pal | Bin 0 -> 32 bytes .../custom/Cloud-JamesWhite89-FF7.bin | Bin 0 -> 800 bytes .../custom/Cloud-JamesWhite89-FF7.pal | Bin 0 -> 32 bytes .../custom/Cloud-asilverthorn-Dissidia.bin | Bin 0 -> 800 bytes .../custom/Cloud-asilverthorn-Dissidia.pal | Bin 0 -> 32 bytes .../portraits/custom/Clyde-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Clyde-PocoLoco-FF6.pal | 1 + .../portraits/custom/Cultist-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Cultist-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../custom/Cyan-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Cyan-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../Dancer-PocoLoco_sutebenukun-FF6.bin | Bin 0 -> 800 bytes .../Dancer-PocoLoco_sutebenukun-FF6.pal | Bin 0 -> 32 bytes .../custom/Dark Elf-Astaroth-FF4.bin | Bin 0 -> 800 bytes .../custom/Dark Elf-Astaroth-FF4.pal | Bin 0 -> 32 bytes .../custom/Donkey Kong-Badass-Mario.bin | Bin 0 -> 800 bytes .../custom/Donkey Kong-Badass-Mario.pal | Bin 0 -> 32 bytes .../portraits/custom/Draco-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Draco-PocoLoco-FF6.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Edgar-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Edgar-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Edgar-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Edgar-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Eggman-JamesWhite89-Sonic.bin | Bin 0 -> 800 bytes .../custom/Eggman-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes .../portraits/custom/Elena-Astaroth-FF7.bin | Bin 0 -> 800 bytes .../portraits/custom/Elena-Astaroth-FF7.pal | 1 + .../custom/Faris-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Faris-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes .../custom/Figaro Guard-JamesWhite89-FF6.bin | Bin 0 -> 800 bytes .../custom/Figaro Guard-JamesWhite89-FF6.pal | 1 + .../portraits/custom/Fighter-CtrlxZ-FF1.bin | Bin 0 -> 800 bytes .../portraits/custom/Fighter-CtrlxZ-FF1.pal | 1 + .../portraits/custom/Firion-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Firion-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Frisk-LoneRedMage-Undertale.bin | Bin 0 -> 800 bytes .../custom/Frisk-LoneRedMage-Undertale.pal | 1 + .../portraits/custom/Futo-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Futo-HoxNorf-Touhou.pal | 1 + .../custom/Galuf-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Galuf-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes .../custom/Garnet (Long Hair)-HoxNorf-FF9.bin | Bin 0 -> 800 bytes .../custom/Garnet (Long Hair)-HoxNorf-FF9.pal | Bin 0 -> 32 bytes .../Garnet (Short Hair)-HoxNorf-FF9.bin | Bin 0 -> 800 bytes .../Garnet (Short Hair)-HoxNorf-FF9.pal | Bin 0 -> 32 bytes .../custom/Gau (Suit)-Tsushiy_Gens-FF6.bin | Bin 0 -> 800 bytes .../custom/Gau (Suit)-Tsushiy_Gens-FF6.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Gau-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Gau-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Gau-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Gau-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/General Leo-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/General Leo-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Genesis-JamesWhite89-FF7.bin | Bin 0 -> 800 bytes .../custom/Genesis-JamesWhite89-FF7.pal | Bin 0 -> 32 bytes .../custom/Gerad-Tsushiy_Gens-FF6.bin | Bin 0 -> 800 bytes .../custom/Gerad-Tsushiy_Gens-FF6.pal | Bin 0 -> 32 bytes .../custom/Ghost-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Ghost-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Gilius-JamesWhite89-GoldenAxe.bin | Bin 0 -> 800 bytes .../custom/Gilius-JamesWhite89-GoldenAxe.pal | Bin 0 -> 32 bytes .../custom/Gogo-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Gogo-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Golbez_TAY-HoxNorf-FF4.bin | Bin 800 -> 800 bytes .../custom/Golbez_TAY-HoxNorf-FF4.pal | 2 +- .../portraits/custom/Gordon-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Gordon-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../portraits/custom/Granny-Zozma-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Granny-Zozma-FF6.pal | Bin 0 -> 32 bytes .../portraits/custom/Gryz-HoxNorf-PS4.bin | Bin 0 -> 800 bytes .../portraits/custom/Gryz-HoxNorf-PS4.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Guy-HoxNorf-FF2.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Guy-HoxNorf-FF2.pal | 2 + .../custom/Hojo-JamesWhite89-FF7.bin | Bin 0 -> 800 bytes .../custom/Hojo-JamesWhite89-FF7.pal | 1 + .../portraits/custom/Hojo-LoneRedMage-FF7.bin | Bin 0 -> 800 bytes .../portraits/custom/Hojo-LoneRedMage-FF7.pal | 1 + .../portraits/custom/Hotaru-HoxNorf-MOTW.bin | Bin 0 -> 800 bytes .../portraits/custom/Hotaru-HoxNorf-MOTW.pal | Bin 0 -> 32 bytes .../custom/Imp-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Imp-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Jessie-JamesWhite89-FF7.bin | Bin 0 -> 800 bytes .../custom/Jessie-JamesWhite89-FF7.pal | 1 + .../portraits/custom/Josef-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Josef-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Kaguya-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Kaguya-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../Kain (Holy Dragoon)-Unknown-FF4TAY.bin | Bin 0 -> 800 bytes .../Kain (Holy Dragoon)-Unknown-FF4TAY.pal | Bin 0 -> 32 bytes .../portraits/custom/Katarin-Zozma-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Katarin-Zozma-FF6.pal | Bin 0 -> 32 bytes .../custom/Knuckles-JamesWhite89-Sonic.bin | Bin 0 -> 800 bytes .../custom/Knuckles-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes .../custom/Krile-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Krile-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Lady-Zozma-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Lady-Zozma-FF6.pal | 1 + .../portraits/custom/Leila-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Leila-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../Lenna (White Mage)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../Lenna (White Mage)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../custom/Lenna-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna-metalliguy_Gens-FF5.bin | Bin 0 -> 800 bytes .../custom/Lenna-metalliguy_Gens-FF5.pal | Bin 0 -> 32 bytes .../portraits/custom/Leon-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Leon-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../Lightning-asilverthorn-Dissidia.bin | Bin 0 -> 800 bytes .../Lightning-asilverthorn-Dissidia.pal | Bin 0 -> 32 bytes .../portraits/custom/Link-Bluzhu-LTTP.bin | Bin 0 -> 800 bytes .../portraits/custom/Link-Bluzhu-LTTP.pal | 1 + .../Link-JamesWhite89-LegendOfZelda.bin | Bin 0 -> 800 bytes .../Link-JamesWhite89-LegendOfZelda.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Locke-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Locke-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Locke-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Locke-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/LoneWolf-JamesWhite89-FF6.bin | Bin 0 -> 800 bytes .../custom/LoneWolf-JamesWhite89-FF6.pal | 1 + graphics/portraits/custom/Lucca-FEOK-CT.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Lucca-FEOK-CT.pal | Bin 0 -> 32 bytes .../custom/Lufia-JamesWhite89-Lufia.bin | Bin 0 -> 800 bytes .../custom/Lufia-JamesWhite89-Lufia.pal | Bin 0 -> 32 bytes .../portraits/custom/Lugae-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../portraits/custom/Lugae-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../portraits/custom/Luigi-Halkel-Mario.bin | Bin 0 -> 800 bytes .../portraits/custom/Luigi-Halkel-Mario.pal | Bin 0 -> 32 bytes .../custom/Luneth-JamesWhite89-FF3.bin | Bin 0 -> 800 bytes .../custom/Luneth-JamesWhite89-FF3.pal | 1 + .../portraits/custom/Maduin-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Maduin-PocoLoco-FF6.pal | 1 + .../custom/Magus-asilverthorn-CT.bin | Bin 0 -> 800 bytes .../custom/Magus-asilverthorn-CT.pal | Bin 0 -> 32 bytes .../portraits/custom/Malin-HoxNorf-KOF.bin | Bin 0 -> 800 bytes .../portraits/custom/Malin-HoxNorf-KOF.pal | 1 + .../portraits/custom/Maria-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Maria-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../portraits/custom/Mario-Halkel-Mario.bin | Bin 0 -> 800 bytes .../portraits/custom/Mario-Halkel-Mario.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Marle-CtrlxZ-CT.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Marle-CtrlxZ-CT.pal | Bin 0 -> 32 bytes .../custom/Metal Sonic-JamesWhite89-Sonic.bin | Bin 0 -> 800 bytes .../custom/Metal Sonic-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes .../portraits/custom/Mini-JamesWhite89-FF.bin | Bin 0 -> 800 bytes .../portraits/custom/Mini-JamesWhite89-FF.pal | 1 + .../portraits/custom/Minwu-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Minwu-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Mog-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Mog-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Nakoruru-HoxNorf-SamSho.bin | Bin 0 -> 800 bytes .../custom/Nakoruru-HoxNorf-SamSho.pal | Bin 0 -> 32 bytes .../custom/NarsheGuard-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../custom/NarsheGuard-PocoLoco-FF6.pal | 1 + .../custom/Nitori-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Nitori-HoxNorf-Touhou.pal | 1 + .../custom/Noire-JamesWhite89-Neptunia.bin | Bin 0 -> 800 bytes .../custom/Noire-JamesWhite89-Neptunia.pal | 1 + .../custom/Orlandeau-Unknown-FFT.bin | Bin 0 -> 800 bytes .../custom/Orlandeau-Unknown-FFT.pal | Bin 0 -> 32 bytes .../Pacman Ghost-JamesWhite89-Pacman.bin | Bin 0 -> 800 bytes .../Pacman Ghost-JamesWhite89-Pacman.pal | Bin 0 -> 32 bytes .../custom/Palom (Adult)-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../custom/Palom (Adult)-HoxNorf-FF4.pal | 1 + .../portraits/custom/Paul-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Paul-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../portraits/custom/Peach-Halkel-SMRPG.bin | Bin 0 -> 800 bytes .../portraits/custom/Peach-Halkel-SMRPG.pal | 1 + .../Piranha Plant-JamesWhite89-Mario.bin | Bin 0 -> 800 bytes .../Piranha Plant-JamesWhite89-Mario.pal | Bin 0 -> 32 bytes .../custom/Porom (Adult)-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../custom/Porom (Adult)-HoxNorf-FF4.pal | 1 + .../custom/Porom (Devout)-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../custom/Porom (Devout)-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../custom/Purple Sister-HoxNorf-Neptunia.bin | Bin 0 -> 800 bytes .../custom/Purple Sister-HoxNorf-Neptunia.pal | 1 + .../portraits/custom/Raja-HoxNorf-PS4.bin | Bin 0 -> 800 bytes .../portraits/custom/Raja-HoxNorf-PS4.pal | Bin 0 -> 32 bytes .../portraits/custom/Ramza-Unknown-FFT.bin | Bin 0 -> 800 bytes .../portraits/custom/Ramza-Unknown-FFT.pal | 1 + .../custom/Rash-JamesWhite89-Battletoads.bin | Bin 0 -> 800 bytes .../custom/Rash-JamesWhite89-Battletoads.pal | 1 + .../custom/Refia-JamesWhite89-FF3.bin | Bin 0 -> 800 bytes .../custom/Refia-JamesWhite89-FF3.pal | 1 + .../custom/Reimu (Blue)-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Reimu (Blue)-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Reimu2-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Reimu2-HoxNorf-Touhou.pal | 1 + graphics/portraits/custom/Relm-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Relm-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Relm-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Relm-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Returner-JamesWhite89-FF6.bin | Bin 0 -> 800 bytes .../custom/Returner-JamesWhite89-FF6.pal | Bin 0 -> 32 bytes .../portraits/custom/Ricard-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Ricard-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../custom/Rubicante-unknown-FF4.bin | Bin 0 -> 800 bytes .../custom/Rubicante-unknown-FF4.pal | Bin 0 -> 32 bytes .../portraits/custom/Rune-HoxNorf-PS4.bin | Bin 0 -> 800 bytes .../portraits/custom/Rune-HoxNorf-PS4.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Ryu-HoxNorf-SF.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Ryu-HoxNorf-SF.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Sabin-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Sabin-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Sabin-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Sabin-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../portraits/custom/Sanae-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Sanae-HoxNorf-Touhou.pal | 1 + .../custom/Santa_Olaf-asilverthorn-AW.bin | Bin 0 -> 800 bytes .../custom/Santa_Olaf-asilverthorn-AW.pal | Bin 0 -> 32 bytes .../custom/Sarisa-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../custom/Sarisa-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../portraits/custom/Scholar-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Scholar-PocoLoco-FF6.pal | 1 + .../portraits/custom/Scott-HoxNorf-FF2.bin | Bin 0 -> 800 bytes .../portraits/custom/Scott-HoxNorf-FF2.pal | Bin 0 -> 32 bytes .../portraits/custom/Seifer-xeblon-FF8.bin | Bin 0 -> 800 bytes .../portraits/custom/Seifer-xeblon-FF8.pal | 1 + .../Sephiroth-asilverthorn-Dissidia.bin | Bin 0 -> 800 bytes .../Sephiroth-asilverthorn-Dissidia.pal | Bin 0 -> 32 bytes .../custom/Setzer-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Setzer-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Shadow-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Shadow-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Sherlotta-HoxNorf-FFCC.bin | Bin 0 -> 800 bytes .../custom/Sherlotta-HoxNorf-FFCC.pal | Bin 0 -> 32 bytes .../custom/Siegfried-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../custom/Siegfried-PocoLoco-FF6.pal | 1 + .../custom/Simon-JamesWhite89-Castlevania.bin | Bin 0 -> 800 bytes .../custom/Simon-JamesWhite89-Castlevania.pal | 1 + graphics/portraits/custom/Slash-Badass-CT.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Slash-Badass-CT.pal | 1 + .../portraits/custom/Sonic-Badass-Sonic.bin | Bin 0 -> 800 bytes .../portraits/custom/Sonic-Badass-Sonic.pal | Bin 0 -> 32 bytes .../Squall (Uniform)-SApprentice-FF8.bin | Bin 0 -> 800 bytes .../Squall (Uniform)-SApprentice-FF8.pal | 2 + .../custom/Squall-JamesWhite89-FF8.bin | Bin 0 -> 800 bytes .../custom/Squall-JamesWhite89-FF8.pal | Bin 0 -> 32 bytes .../portraits/custom/Steiner-HoxNorf-FF9.bin | Bin 0 -> 800 bytes .../portraits/custom/Steiner-HoxNorf-FF9.pal | 1 + .../custom/Strago-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Strago-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Tails-JamesWhite89-Sonic.bin | Bin 0 -> 800 bytes .../custom/Tails-JamesWhite89-Sonic.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Terra-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Terra-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Terra-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Terra-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Tifa-JamesWhite89-FF7.bin | Bin 0 -> 800 bytes .../custom/Tifa-JamesWhite89-FF7.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Tina-CtrlxZ-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Tina-CtrlxZ-FF6.pal | 1 + .../Toadette (Explorer)-HoxNorf-Mario.bin | Bin 0 -> 800 bytes .../Toadette (Explorer)-HoxNorf-Mario.pal | Bin 0 -> 32 bytes .../portraits/custom/Tohka-HoxNorf-DAL.bin | Bin 0 -> 800 bytes .../portraits/custom/Tohka-HoxNorf-DAL.pal | Bin 0 -> 32 bytes .../custom/Toriel-LoneRedMage-Undertale.bin | Bin 0 -> 800 bytes .../custom/Toriel-LoneRedMage-Undertale.pal | 1 + .../custom/Train Conductor-Mascot1063-FF6.bin | Bin 0 -> 800 bytes .../custom/Train Conductor-Mascot1063-FF6.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Umaro-Jones-FF6.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Umaro-Jones-FF6.pal | Bin 0 -> 32 bytes .../custom/Umaro-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/Umaro-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../portraits/custom/Ursula-HoxNorf-FF4.bin | Bin 0 -> 800 bytes .../portraits/custom/Ursula-HoxNorf-FF4.pal | Bin 0 -> 32 bytes .../portraits/custom/Vargas-PocoLoco-FF6.bin | Bin 0 -> 800 bytes .../portraits/custom/Vargas-PocoLoco-FF6.pal | Bin 0 -> 32 bytes .../portraits/custom/Vincent-Xeblon-FF7.bin | Bin 0 -> 800 bytes .../portraits/custom/Vincent-Xeblon-FF7.pal | Bin 0 -> 32 bytes .../custom/Vivi-asilverthorn-FF9.bin | Bin 0 -> 800 bytes .../custom/Vivi-asilverthorn-FF9.pal | Bin 0 -> 32 bytes .../custom/WedgeVicks-Laurel_Gens-FF6PR.bin | Bin 0 -> 800 bytes .../custom/WedgeVicks-Laurel_Gens-FF6PR.pal | Bin 0 -> 32 bytes .../custom/Wolf-JamesWhite89-Starfox.bin | Bin 0 -> 800 bytes .../custom/Wolf-JamesWhite89-Starfox.pal | Bin 0 -> 32 bytes .../custom/Wolf-JamesWhite89-Startfox.bin | Bin 0 -> 800 bytes .../custom/Wolf-JamesWhite89-Startfox.pal | Bin 0 -> 32 bytes .../portraits/custom/Wren-HoxNorf-PS4.bin | Bin 0 -> 800 bytes .../portraits/custom/Wren-HoxNorf-PS4.pal | Bin 0 -> 32 bytes .../portraits/custom/X-Unknown-Megaman.bin | Bin 0 -> 800 bytes .../portraits/custom/X-Unknown-Megaman.pal | Bin 0 -> 32 bytes .../portraits/custom/Xion-Kzinssie-KH.bin | Bin 0 -> 800 bytes .../portraits/custom/Xion-Kzinssie-KH.pal | Bin 0 -> 32 bytes .../portraits/custom/Yoshi-Badass-Mario.bin | Bin 0 -> 800 bytes .../portraits/custom/Yoshi-Badass-Mario.pal | Bin 0 -> 32 bytes .../portraits/custom/Yuffie-CtrlxZ-KH.bin | Bin 0 -> 800 bytes .../portraits/custom/Yuffie-CtrlxZ-KH.pal | Bin 0 -> 32 bytes .../custom/Yuyuko-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Yuyuko-HoxNorf-Touhou.pal | 1 + .../custom/Zidane-asilverthorn-FF9.bin | Bin 0 -> 800 bytes .../custom/Zidane-asilverthorn-FF9.pal | Bin 0 -> 32 bytes graphics/portraits/portraits.py | 175 ++++++++ graphics/sprites/custom/Akari-HoxNorf-LB.bin | Bin 0 -> 5792 bytes .../sprites/custom/Alice-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../custom/Alphys-LoneRedMage-Undertale.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Amy-HoxNorf-Sonic.bin | Bin 0 -> 5792 bytes .../sprites/custom/Angeal-HoxNorf-FF7.bin | Bin 0 -> 5792 bytes .../sprites/custom/Antlion-Astaroth-FF4.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Aria-HoxNorf-FF3.bin | Bin 0 -> 5792 bytes .../sprites/custom/Arle-HoxNorf-Madou.bin | Bin 0 -> 5792 bytes .../custom/Arthur-JamesWhite89-GnG.bin | Bin 0 -> 5792 bytes .../sprites/custom/Arvis-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Atma-Astaroth-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Beatrix-PocoLoco-FF9.bin | Bin 0 -> 5792 bytes .../sprites/custom/Blaze-HoxNorf-Sonic.bin | Bin 0 -> 5792 bytes .../sprites/custom/Bombette-HoxNorf-Mario.bin | Bin 0 -> 5792 bytes .../sprites/custom/Bowser-Badass-Mario.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Boy-Zozma-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Cagnazzo-Astaroth-FF4.bin | Bin 0 -> 5792 bytes .../sprites/custom/Cait Sith-HoxNorf-FF7.bin | Bin 0 -> 5792 bytes .../sprites/custom/Cammy-Quikdraw7777-SF.bin | Bin 0 -> 5792 bytes .../Captain Falcon-JamesWhite89-FZero.bin | Bin 0 -> 5792 bytes .../custom/Celes (Amano)-Astaroth-FF6.bin | Bin 0 -> 5792 bytes .../custom/Celes (Opera)-Astaroth-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Ceodore-HoxNorf-FF4.bin | Bin 0 -> 5792 bytes .../custom/Chun Li-Quikdraw7777-SF.bin | Bin 0 -> 5792 bytes .../sprites/custom/Clyde-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Cultist-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Dancer-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Dark Elf-Astaroth-FF4.bin | Bin 0 -> 5792 bytes .../custom/Donkey Kong-Badass-Mario.bin | Bin 0 -> 5792 bytes .../sprites/custom/Draco-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../custom/Eggman-JamesWhite89-Sonic.bin | Bin 0 -> 5792 bytes .../sprites/custom/Elena-Astaroth-FF7.bin | Bin 0 -> 5792 bytes .../custom/Figaro Guard-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Fighter-CtrlxZ-FF1.bin | Bin 0 -> 5792 bytes .../sprites/custom/Firion-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../custom/Frisk-LoneRedMage-Undertale.bin | Bin 0 -> 5792 bytes .../sprites/custom/Futo-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../sprites/custom/Genesis-HoxNorf-FF7.bin | Bin 0 -> 5792 bytes .../custom/Gilius-JamesWhite89-GoldenAxe.bin | Bin 0 -> 5792 bytes .../sprites/custom/Gordon-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Granny-Zozma-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Gryz-HoxNorf-PS4.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Guy-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Hojo-LoneRedMage-FF7.bin | Bin 0 -> 5792 bytes .../sprites/custom/Hotaru-HoxNorf-MOTW.bin | Bin 0 -> 5792 bytes .../custom/Interceptor-JamesWhite89-FF6.bin | Bin 5792 -> 5792 bytes graphics/sprites/custom/Josef-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Kaguya-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../Kain (Holy Dragoon)-CtrlxZ-FF4TAY.bin | Bin 0 -> 5792 bytes .../custom/Knuckles-Jameswhite89-Sonic.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Lady-Zozma-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Laguna-HoxNorf-FF8.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Leila-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Leon-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../custom/Link-FEOK-LegendOfZelda.bin | Bin 0 -> 5792 bytes .../sprites/custom/LoneWolf-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Lucca-FEOK-CT.bin | Bin 0 -> 5792 bytes .../custom/Lufia-JamesWhite89-Lufia.bin | Bin 0 -> 5792 bytes .../sprites/custom/Lugae-Astaroth-FF4.bin | Bin 0 -> 5792 bytes .../sprites/custom/Luigi-Badass-Mario.bin | Bin 0 -> 5792 bytes .../sprites/custom/Luneth-HoxNorf-FF3.bin | Bin 0 -> 5792 bytes .../sprites/custom/Maduin-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Malin-HoxNorf-KOF.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Maria-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Mario-Badass-Mario.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Marle-CtrlxZ-CT.bin | Bin 0 -> 5792 bytes .../custom/Metal Sonic-JamesWhite89-Sonic.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Minwu-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../custom/Nakoruru-HoxNorf-SamSho.bin | Bin 0 -> 5792 bytes .../custom/NarsheGuard-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Nitori-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../sprites/custom/Noire-HoxNorf-Neptunia.bin | Bin 0 -> 5792 bytes .../custom/Pacman Ghost-HoxNorf-Pacman.bin | Bin 0 -> 5792 bytes .../custom/Palom (Adult)-HoxNorf-FF4.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Paul-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Peach-Halkel-SMRPG.bin | Bin 0 -> 5792 bytes .../Piranha Plant-JamesWhite89-Mario.bin | Bin 0 -> 5792 bytes .../custom/Porom (Adult)-HoxNorf-FF4.bin | Bin 0 -> 5792 bytes .../custom/Purple Sister-HoxNorf-Neptunia.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Raja-HoxNorf-PS4.bin | Bin 0 -> 5792 bytes .../sprites/custom/Ram-HoxNorf-Neptunia.bin | Bin 5792 -> 5792 bytes graphics/sprites/custom/Ramza-CtrlxZ-FFT.bin | Bin 0 -> 5792 bytes .../custom/Rash-JamesWhite89-Battletoads.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Refia-HoxNorf-FF3.bin | Bin 0 -> 5792 bytes .../sprites/custom/Reimu2-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../sprites/custom/Relm-HoxNorf-FF6PR.bin | Bin 0 -> 5792 bytes .../sprites/custom/Returner-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Ricard-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Rom-HoxNorf-Neptunia.bin | Bin 5792 -> 5792 bytes .../sprites/custom/Rubicante-Astaroth-FF4.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Rune-HoxNorf-PS4.bin | Bin 0 -> 5792 bytes .../sprites/custom/Ryu-Quikdraw7777-SF.bin | Bin 0 -> 5792 bytes .../sprites/custom/Sanae-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../sprites/custom/Scholar-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Scott-HoxNorf-FF2.bin | Bin 0 -> 5792 bytes .../sprites/custom/Seifer-Filipinac-FF8.bin | Bin 0 -> 5792 bytes .../Sherlotta-HoxNorf_ScarabEnigma-FFCC.bin | Bin 0 -> 5792 bytes .../sprites/custom/Siegfried-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes .../custom/Simon-JamesWhite89-Castlevania.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Slash-Badass-CT.bin | Bin 0 -> 5792 bytes .../sprites/custom/Sonic-Badass-Sonic.bin | Bin 0 -> 5792 bytes .../Squall (Uniform)-SApprentice-FF8.bin | Bin 0 -> 5792 bytes .../sprites/custom/Squall-PocoLoco-FF8.bin | Bin 0 -> 5792 bytes .../custom/Tails-JamesWhite89-Sonic.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Thief-CtrlxZ-FF1.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Tifa-Astaroth-FF7.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Tina-CtrlxZ-FF6.bin | Bin 0 -> 5792 bytes .../Toadette (Explorer)-HoxNorf-Mario.bin | Bin 0 -> 5792 bytes .../custom/Toriel-LoneRedMage-Undertale.bin | Bin 0 -> 5792 bytes .../custom/Train Conductor-Zozma-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Ultros-PocoLoco-FF6.bin | Bin 5792 -> 5792 bytes .../sprites/custom/Ursula-HoxNorf-FF4.bin | Bin 0 -> 5792 bytes .../sprites/custom/Vargas-PocoLoco-FF6.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Vincent-FEOK-FF7.bin | Bin 0 -> 5792 bytes .../sprites/custom/Wolf-HoxNorf-Starfox.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Wren-HoxNorf-PS4.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/X-Badass-Megaman.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Xion-Kzinssie-KH.bin | Bin 0 -> 5792 bytes .../sprites/custom/Yoshi-Badass-Mario.bin | Bin 0 -> 5792 bytes .../sprites/custom/Yuyuko-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes graphics/sprites/sprites.py | 118 ++++++ instruction/field/custom.py | 88 ++++- memory/space.py | 3 +- music/song_utils.py | 24 ++ objectives/results/auto_overcast.py | 14 + settings/permadeath.py | 6 + version.py | 2 +- 653 files changed, 2105 insertions(+), 82 deletions(-) create mode 100644 __init__.py create mode 100644 data/enemy_battle_groups.py create mode 100644 graphics/palettes/custom/Akari-HoxNorf-LB.pal create mode 100644 graphics/palettes/custom/Alice-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Alphys-LoneRedMage-Undertale.pal create mode 100644 graphics/palettes/custom/Amy-HoxNorf-Sonic.pal create mode 100644 graphics/palettes/custom/Angeal-HoxNorf-FF7.pal create mode 100644 graphics/palettes/custom/Antlion-Astaroth-FF4.pal create mode 100644 graphics/palettes/custom/Aria-HoxNorf-FF3.pal create mode 100644 graphics/palettes/custom/Arle-HoxNorf-Madou.pal create mode 100644 graphics/palettes/custom/Arthur-JamesWhite89-GnG.pal create mode 100644 graphics/palettes/custom/Arvis-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Atma-Astaroth-FF6.pal create mode 100644 graphics/palettes/custom/Beatrix-PocoLoco-FF9.pal create mode 100644 graphics/palettes/custom/Blaze-HoxNorf-Sonic.pal create mode 100644 graphics/palettes/custom/Bombette-HoxNorf-Mario.pal create mode 100644 graphics/palettes/custom/Bowser-Badass-Mario.pal create mode 100644 graphics/palettes/custom/Boy-Zozma-FF6.pal create mode 100644 graphics/palettes/custom/Cagnazzo-Astaroth-FF4.pal create mode 100644 graphics/palettes/custom/Cait Sith-HoxNorf-FF7.pal create mode 100644 graphics/palettes/custom/Cammy-Quikdraw7777-SF.pal create mode 100644 graphics/palettes/custom/Captain Falcon-JamesWhite89-FZero.pal create mode 100644 graphics/palettes/custom/Celes (Amano)-Astaroth-FF6.pal create mode 100644 graphics/palettes/custom/Celes (Opera)-Astaroth-FF6.pal create mode 100644 graphics/palettes/custom/Ceodore-HoxNorf-FF4.pal create mode 100644 graphics/palettes/custom/Chun Li-Quikdraw7777-SF.pal create mode 100644 graphics/palettes/custom/Clyde-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Cultist-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Dancer-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Dark Elf-Astaroth-FF4.pal create mode 100644 graphics/palettes/custom/Donkey Kong-Badass-Mario.pal create mode 100644 graphics/palettes/custom/Draco-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Eggman-JamesWhite89-Sonic.pal create mode 100644 graphics/palettes/custom/Elena-Astaroth-FF7.pal create mode 100644 graphics/palettes/custom/Figaro Guard-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Fighter-CtrlxZ-FF1.pal create mode 100644 graphics/palettes/custom/Firion-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Frisk-LoneRedMage-Undertale.pal create mode 100644 graphics/palettes/custom/Futo-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Genesis-HoxNorf-FF7.pal create mode 100644 graphics/palettes/custom/Gilius-JamesWhite89-GoldenAxe.pal create mode 100644 graphics/palettes/custom/Gordon-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Granny-Zozma-FF6.pal create mode 100644 graphics/palettes/custom/Gryz-HoxNorf-PS4.pal create mode 100644 graphics/palettes/custom/Guy-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Hojo-LoneRedMage-FF7.pal create mode 100644 graphics/palettes/custom/Hotaru-HoxNorf-MOTW.pal create mode 100644 graphics/palettes/custom/Josef-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Kaguya-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.pal create mode 100644 graphics/palettes/custom/Knuckles-Jameswhite89-Sonic.pal create mode 100644 graphics/palettes/custom/Lady-Zozma-FF6.pal create mode 100644 graphics/palettes/custom/Laguna-HoxNorf-FF8.pal create mode 100644 graphics/palettes/custom/Leila-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Leon-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Link-FEOK-LegendOfZelda.pal create mode 100644 graphics/palettes/custom/LoneWolf-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Lucca-FEOK-CT.pal create mode 100644 graphics/palettes/custom/Lufia-JamesWhite89-Lufia.pal create mode 100644 graphics/palettes/custom/Lugae-Astaroth-FF4.pal create mode 100644 graphics/palettes/custom/Luigi-Badass-Mario.pal create mode 100644 graphics/palettes/custom/Luneth-HoxNorf-FF3.pal create mode 100644 graphics/palettes/custom/Maduin-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Malin-HoxNorf-KOF.pal create mode 100644 graphics/palettes/custom/Maria-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Mario-Badass-Mario.pal create mode 100644 graphics/palettes/custom/Marle-CtrlxZ-CT.pal create mode 100644 graphics/palettes/custom/Metal Sonic-JamesWhite89-Sonic.pal create mode 100644 graphics/palettes/custom/Minwu-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Nakoruru-HoxNorf-SamSho.pal create mode 100644 graphics/palettes/custom/NarsheGuard-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Nitori-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Noire-HoxNorf-Neptunia.pal create mode 100644 graphics/palettes/custom/Pacman Ghost-HoxNorf-Pacman.pal create mode 100644 graphics/palettes/custom/Palom (Adult)-HoxNorf-FF4.pal create mode 100644 graphics/palettes/custom/Paul-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Peach-Halkel-SMRPG.pal create mode 100644 graphics/palettes/custom/Piranha Plant-JamesWhite89-Mario.pal create mode 100644 graphics/palettes/custom/Porom (Adult)-HoxNorf-FF4.pal create mode 100644 graphics/palettes/custom/Purple Sister-HoxNorf-Neptunia.pal create mode 100644 graphics/palettes/custom/Raja-HoxNorf-PS4.pal create mode 100644 graphics/palettes/custom/Ramza-CtrlxZ-FFT.pal create mode 100644 graphics/palettes/custom/Rash-JamesWhite89-Battletoads.pal create mode 100644 graphics/palettes/custom/Refia-HoxNorf-FF3.pal create mode 100644 graphics/palettes/custom/Reimu (Blue)-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Reimu2-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Relm-HoxNorf-FF6PR.pal create mode 100644 graphics/palettes/custom/Returner-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Ricard-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Rubicante-Astaroth-FF4.pal create mode 100644 graphics/palettes/custom/Rune-HoxNorf-PS4.pal create mode 100644 graphics/palettes/custom/Ryu-Quikdraw7777-SF.pal create mode 100644 graphics/palettes/custom/Sanae-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Scholar-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Scott-HoxNorf-FF2.pal create mode 100644 graphics/palettes/custom/Seifer-Filipinac-FF8.pal create mode 100644 graphics/palettes/custom/Sherlotta-HoxNorf_ScarabEnigma-FFCC.pal create mode 100644 graphics/palettes/custom/Siegfried-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Simon-JamesWhite89-Castlevania.pal create mode 100644 graphics/palettes/custom/Slash-Badass-CT.pal create mode 100644 graphics/palettes/custom/Sonic-Badass-Sonic.pal create mode 100644 graphics/palettes/custom/Squall (Uniform)-SApprentice-FF8.pal create mode 100644 graphics/palettes/custom/Squall-PocoLoco-FF8.pal create mode 100644 graphics/palettes/custom/Tails-JamesWhite89-Sonic.pal create mode 100644 graphics/palettes/custom/Thief-CtrlxZ-FF1.pal create mode 100644 graphics/palettes/custom/Tifa-Astaroth-FF7.pal create mode 100644 graphics/palettes/custom/Tina-CtrlxZ-FF6.pal create mode 100644 graphics/palettes/custom/Toadette (Explorer)-HoxNorf-Mario.pal create mode 100644 graphics/palettes/custom/Toriel-LoneRedMage-Undertale.pal create mode 100644 graphics/palettes/custom/Train Conductor-Zozma-FF6.pal create mode 100644 graphics/palettes/custom/Ursula-HoxNorf-FF4.pal create mode 100644 graphics/palettes/custom/Vargas-PocoLoco-FF6.pal create mode 100644 graphics/palettes/custom/Vincent-FEOK-FF7.pal create mode 100644 graphics/palettes/custom/Wolf-HoxNorf-Starfox.pal create mode 100644 graphics/palettes/custom/Wren-HoxNorf-PS4.pal create mode 100644 graphics/palettes/custom/X-Badass-Megaman.pal create mode 100644 graphics/palettes/custom/Xion-Kzinssie-KH.pal create mode 100644 graphics/palettes/custom/Yoshi-Badass-Mario.pal create mode 100644 graphics/palettes/custom/Yuyuko-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Akari-HoxNorf-LB.bin create mode 100644 graphics/portraits/custom/Akari-HoxNorf-LB.pal create mode 100644 graphics/portraits/custom/Alice-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Alice-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Alma-Unknown-FFT.bin create mode 100644 graphics/portraits/custom/Alma-Unknown-FFT.pal create mode 100644 graphics/portraits/custom/Alphys-LoneRedMage-Undertale.bin create mode 100644 graphics/portraits/custom/Alphys-LoneRedMage-Undertale.pal create mode 100644 graphics/portraits/custom/Amy-HoxNorf-Sonic.bin create mode 100644 graphics/portraits/custom/Amy-HoxNorf-Sonic.pal create mode 100644 graphics/portraits/custom/Angeal-CDude-FF7.bin create mode 100644 graphics/portraits/custom/Angeal-CDude-FF7.pal create mode 100644 graphics/portraits/custom/Antlion-Astaroth-FF4.bin create mode 100644 graphics/portraits/custom/Antlion-Astaroth-FF4.pal create mode 100644 graphics/portraits/custom/Aria-JamesWhite89-FF3.bin create mode 100644 graphics/portraits/custom/Aria-JamesWhite89-FF3.pal create mode 100644 graphics/portraits/custom/Arle-HoxNorf-Madou.bin create mode 100644 graphics/portraits/custom/Arle-HoxNorf-Madou.pal create mode 100644 graphics/portraits/custom/Arthur-JamesWhite89-GnG.bin create mode 100644 graphics/portraits/custom/Arthur-JamesWhite89-GnG.pal create mode 100644 graphics/portraits/custom/Arvis-JamesWhite89-FF6.bin create mode 100644 graphics/portraits/custom/Arvis-JamesWhite89-FF6.pal create mode 100644 graphics/portraits/custom/Atma-Astaroth-FF6.bin create mode 100644 graphics/portraits/custom/Atma-Astaroth-FF6.pal create mode 100644 graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Barret-HoxNorf-FF7.bin create mode 100644 graphics/portraits/custom/Barret-HoxNorf-FF7.pal create mode 100644 graphics/portraits/custom/Bartz-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Bartz-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Beatrix-Xeblon-FF9.bin create mode 100644 graphics/portraits/custom/Beatrix-Xeblon-FF9.pal create mode 100644 graphics/portraits/custom/Blaze-HoxNorf-Sonic.bin create mode 100644 graphics/portraits/custom/Blaze-HoxNorf-Sonic.pal create mode 100644 graphics/portraits/custom/Bombette-HoxNorf-Mario.bin create mode 100644 graphics/portraits/custom/Bombette-HoxNorf-Mario.pal create mode 100644 graphics/portraits/custom/Bowser-JamesWhite89-Mario.bin create mode 100644 graphics/portraits/custom/Bowser-JamesWhite89-Mario.pal create mode 100644 graphics/portraits/custom/Boy-Zozma-FF6.bin create mode 100644 graphics/portraits/custom/Boy-Zozma-FF6.pal create mode 100644 graphics/portraits/custom/Cagnazzo-Astaroth-FF4.bin create mode 100644 graphics/portraits/custom/Cagnazzo-Astaroth-FF4.pal create mode 100644 graphics/portraits/custom/Cait Sith-HoxNorf-FF7.bin create mode 100644 graphics/portraits/custom/Cait Sith-HoxNorf-FF7.pal create mode 100644 graphics/portraits/custom/Cammy-JamesWhite89-SF.bin create mode 100644 graphics/portraits/custom/Cammy-JamesWhite89-SF.pal create mode 100644 graphics/portraits/custom/Captain Falcon-JamesWhite89-FZero.bin create mode 100644 graphics/portraits/custom/Captain Falcon-JamesWhite89-FZero.pal create mode 100644 graphics/portraits/custom/Celes (Opera)-Astaroth_Zozma-FF6.bin create mode 100644 graphics/portraits/custom/Celes (Opera)-Astaroth_Zozma-FF6.pal create mode 100644 graphics/portraits/custom/Celes-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Celes-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Celes-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Celes-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Ceodore-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Ceodore-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Chocobo-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Chocobo-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Chun Li-JamesWhite89-SF.bin create mode 100644 graphics/portraits/custom/Chun Li-JamesWhite89-SF.pal create mode 100644 graphics/portraits/custom/Cloud-JamesWhite89-FF7.bin create mode 100644 graphics/portraits/custom/Cloud-JamesWhite89-FF7.pal create mode 100644 graphics/portraits/custom/Cloud-asilverthorn-Dissidia.bin create mode 100644 graphics/portraits/custom/Cloud-asilverthorn-Dissidia.pal create mode 100644 graphics/portraits/custom/Clyde-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Clyde-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Cultist-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Cultist-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Dancer-PocoLoco_sutebenukun-FF6.bin create mode 100644 graphics/portraits/custom/Dancer-PocoLoco_sutebenukun-FF6.pal create mode 100644 graphics/portraits/custom/Dark Elf-Astaroth-FF4.bin create mode 100644 graphics/portraits/custom/Dark Elf-Astaroth-FF4.pal create mode 100644 graphics/portraits/custom/Donkey Kong-Badass-Mario.bin create mode 100644 graphics/portraits/custom/Donkey Kong-Badass-Mario.pal create mode 100644 graphics/portraits/custom/Draco-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Draco-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Edgar-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Edgar-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Edgar-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Edgar-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Eggman-JamesWhite89-Sonic.bin create mode 100644 graphics/portraits/custom/Eggman-JamesWhite89-Sonic.pal create mode 100644 graphics/portraits/custom/Elena-Astaroth-FF7.bin create mode 100644 graphics/portraits/custom/Elena-Astaroth-FF7.pal create mode 100644 graphics/portraits/custom/Faris-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Faris-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.bin create mode 100644 graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.pal create mode 100644 graphics/portraits/custom/Fighter-CtrlxZ-FF1.bin create mode 100644 graphics/portraits/custom/Fighter-CtrlxZ-FF1.pal create mode 100644 graphics/portraits/custom/Firion-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Firion-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Frisk-LoneRedMage-Undertale.bin create mode 100644 graphics/portraits/custom/Frisk-LoneRedMage-Undertale.pal create mode 100644 graphics/portraits/custom/Futo-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Futo-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.bin create mode 100644 graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.pal create mode 100644 graphics/portraits/custom/Garnet (Short Hair)-HoxNorf-FF9.bin create mode 100644 graphics/portraits/custom/Garnet (Short Hair)-HoxNorf-FF9.pal create mode 100644 graphics/portraits/custom/Gau (Suit)-Tsushiy_Gens-FF6.bin create mode 100644 graphics/portraits/custom/Gau (Suit)-Tsushiy_Gens-FF6.pal create mode 100644 graphics/portraits/custom/Gau-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Gau-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Gau-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Gau-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/General Leo-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/General Leo-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Genesis-JamesWhite89-FF7.bin create mode 100644 graphics/portraits/custom/Genesis-JamesWhite89-FF7.pal create mode 100644 graphics/portraits/custom/Gerad-Tsushiy_Gens-FF6.bin create mode 100644 graphics/portraits/custom/Gerad-Tsushiy_Gens-FF6.pal create mode 100644 graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.bin create mode 100644 graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.pal create mode 100644 graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Gordon-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Gordon-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Granny-Zozma-FF6.bin create mode 100644 graphics/portraits/custom/Granny-Zozma-FF6.pal create mode 100644 graphics/portraits/custom/Gryz-HoxNorf-PS4.bin create mode 100644 graphics/portraits/custom/Gryz-HoxNorf-PS4.pal create mode 100644 graphics/portraits/custom/Guy-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Guy-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Hojo-JamesWhite89-FF7.bin create mode 100644 graphics/portraits/custom/Hojo-JamesWhite89-FF7.pal create mode 100644 graphics/portraits/custom/Hojo-LoneRedMage-FF7.bin create mode 100644 graphics/portraits/custom/Hojo-LoneRedMage-FF7.pal create mode 100644 graphics/portraits/custom/Hotaru-HoxNorf-MOTW.bin create mode 100644 graphics/portraits/custom/Hotaru-HoxNorf-MOTW.pal create mode 100644 graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Jessie-JamesWhite89-FF7.bin create mode 100644 graphics/portraits/custom/Jessie-JamesWhite89-FF7.pal create mode 100644 graphics/portraits/custom/Josef-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Josef-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Kaguya-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Kaguya-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Kain (Holy Dragoon)-Unknown-FF4TAY.bin create mode 100644 graphics/portraits/custom/Kain (Holy Dragoon)-Unknown-FF4TAY.pal create mode 100644 graphics/portraits/custom/Katarin-Zozma-FF6.bin create mode 100644 graphics/portraits/custom/Katarin-Zozma-FF6.pal create mode 100644 graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.bin create mode 100644 graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.pal create mode 100644 graphics/portraits/custom/Krile-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Krile-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Lady-Zozma-FF6.bin create mode 100644 graphics/portraits/custom/Lady-Zozma-FF6.pal create mode 100644 graphics/portraits/custom/Leila-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Leila-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Lenna (White Mage)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (White Mage)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna-metalliguy_Gens-FF5.bin create mode 100644 graphics/portraits/custom/Lenna-metalliguy_Gens-FF5.pal create mode 100644 graphics/portraits/custom/Leon-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Leon-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Lightning-asilverthorn-Dissidia.bin create mode 100644 graphics/portraits/custom/Lightning-asilverthorn-Dissidia.pal create mode 100644 graphics/portraits/custom/Link-Bluzhu-LTTP.bin create mode 100644 graphics/portraits/custom/Link-Bluzhu-LTTP.pal create mode 100644 graphics/portraits/custom/Link-JamesWhite89-LegendOfZelda.bin create mode 100644 graphics/portraits/custom/Link-JamesWhite89-LegendOfZelda.pal create mode 100644 graphics/portraits/custom/Locke-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Locke-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Locke-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Locke-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/LoneWolf-JamesWhite89-FF6.bin create mode 100644 graphics/portraits/custom/LoneWolf-JamesWhite89-FF6.pal create mode 100644 graphics/portraits/custom/Lucca-FEOK-CT.bin create mode 100644 graphics/portraits/custom/Lucca-FEOK-CT.pal create mode 100644 graphics/portraits/custom/Lufia-JamesWhite89-Lufia.bin create mode 100644 graphics/portraits/custom/Lufia-JamesWhite89-Lufia.pal create mode 100644 graphics/portraits/custom/Lugae-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Lugae-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Luigi-Halkel-Mario.bin create mode 100644 graphics/portraits/custom/Luigi-Halkel-Mario.pal create mode 100644 graphics/portraits/custom/Luneth-JamesWhite89-FF3.bin create mode 100644 graphics/portraits/custom/Luneth-JamesWhite89-FF3.pal create mode 100644 graphics/portraits/custom/Maduin-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Maduin-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Magus-asilverthorn-CT.bin create mode 100644 graphics/portraits/custom/Magus-asilverthorn-CT.pal create mode 100644 graphics/portraits/custom/Malin-HoxNorf-KOF.bin create mode 100644 graphics/portraits/custom/Malin-HoxNorf-KOF.pal create mode 100644 graphics/portraits/custom/Maria-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Maria-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Mario-Halkel-Mario.bin create mode 100644 graphics/portraits/custom/Mario-Halkel-Mario.pal create mode 100644 graphics/portraits/custom/Marle-CtrlxZ-CT.bin create mode 100644 graphics/portraits/custom/Marle-CtrlxZ-CT.pal create mode 100644 graphics/portraits/custom/Metal Sonic-JamesWhite89-Sonic.bin create mode 100644 graphics/portraits/custom/Metal Sonic-JamesWhite89-Sonic.pal create mode 100644 graphics/portraits/custom/Mini-JamesWhite89-FF.bin create mode 100644 graphics/portraits/custom/Mini-JamesWhite89-FF.pal create mode 100644 graphics/portraits/custom/Minwu-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Minwu-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Mog-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Mog-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Nakoruru-HoxNorf-SamSho.bin create mode 100644 graphics/portraits/custom/Nakoruru-HoxNorf-SamSho.pal create mode 100644 graphics/portraits/custom/NarsheGuard-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/NarsheGuard-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Nitori-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Nitori-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Noire-JamesWhite89-Neptunia.bin create mode 100644 graphics/portraits/custom/Noire-JamesWhite89-Neptunia.pal create mode 100644 graphics/portraits/custom/Orlandeau-Unknown-FFT.bin create mode 100644 graphics/portraits/custom/Orlandeau-Unknown-FFT.pal create mode 100644 graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.bin create mode 100644 graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.pal create mode 100644 graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Paul-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Paul-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Peach-Halkel-SMRPG.bin create mode 100644 graphics/portraits/custom/Peach-Halkel-SMRPG.pal create mode 100644 graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.bin create mode 100644 graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.pal create mode 100644 graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Porom (Devout)-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Porom (Devout)-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Purple Sister-HoxNorf-Neptunia.bin create mode 100644 graphics/portraits/custom/Purple Sister-HoxNorf-Neptunia.pal create mode 100644 graphics/portraits/custom/Raja-HoxNorf-PS4.bin create mode 100644 graphics/portraits/custom/Raja-HoxNorf-PS4.pal create mode 100644 graphics/portraits/custom/Ramza-Unknown-FFT.bin create mode 100644 graphics/portraits/custom/Ramza-Unknown-FFT.pal create mode 100644 graphics/portraits/custom/Rash-JamesWhite89-Battletoads.bin create mode 100644 graphics/portraits/custom/Rash-JamesWhite89-Battletoads.pal create mode 100644 graphics/portraits/custom/Refia-JamesWhite89-FF3.bin create mode 100644 graphics/portraits/custom/Refia-JamesWhite89-FF3.pal create mode 100644 graphics/portraits/custom/Reimu (Blue)-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Reimu (Blue)-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Reimu2-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Reimu2-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Relm-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Relm-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Relm-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Relm-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Returner-JamesWhite89-FF6.bin create mode 100644 graphics/portraits/custom/Returner-JamesWhite89-FF6.pal create mode 100644 graphics/portraits/custom/Ricard-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Ricard-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Rubicante-unknown-FF4.bin create mode 100644 graphics/portraits/custom/Rubicante-unknown-FF4.pal create mode 100644 graphics/portraits/custom/Rune-HoxNorf-PS4.bin create mode 100644 graphics/portraits/custom/Rune-HoxNorf-PS4.pal create mode 100644 graphics/portraits/custom/Ryu-HoxNorf-SF.bin create mode 100644 graphics/portraits/custom/Ryu-HoxNorf-SF.pal create mode 100644 graphics/portraits/custom/Sabin-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Sabin-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Sabin-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Sabin-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Sanae-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Sanae-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.bin create mode 100644 graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.pal create mode 100644 graphics/portraits/custom/Sarisa-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Sarisa-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Scholar-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Scholar-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Scott-HoxNorf-FF2.bin create mode 100644 graphics/portraits/custom/Scott-HoxNorf-FF2.pal create mode 100644 graphics/portraits/custom/Seifer-xeblon-FF8.bin create mode 100644 graphics/portraits/custom/Seifer-xeblon-FF8.pal create mode 100644 graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.bin create mode 100644 graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.pal create mode 100644 graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Shadow-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Shadow-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Sherlotta-HoxNorf-FFCC.bin create mode 100644 graphics/portraits/custom/Sherlotta-HoxNorf-FFCC.pal create mode 100644 graphics/portraits/custom/Siegfried-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Siegfried-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Simon-JamesWhite89-Castlevania.bin create mode 100644 graphics/portraits/custom/Simon-JamesWhite89-Castlevania.pal create mode 100644 graphics/portraits/custom/Slash-Badass-CT.bin create mode 100644 graphics/portraits/custom/Slash-Badass-CT.pal create mode 100644 graphics/portraits/custom/Sonic-Badass-Sonic.bin create mode 100644 graphics/portraits/custom/Sonic-Badass-Sonic.pal create mode 100644 graphics/portraits/custom/Squall (Uniform)-SApprentice-FF8.bin create mode 100644 graphics/portraits/custom/Squall (Uniform)-SApprentice-FF8.pal create mode 100644 graphics/portraits/custom/Squall-JamesWhite89-FF8.bin create mode 100644 graphics/portraits/custom/Squall-JamesWhite89-FF8.pal create mode 100644 graphics/portraits/custom/Steiner-HoxNorf-FF9.bin create mode 100644 graphics/portraits/custom/Steiner-HoxNorf-FF9.pal create mode 100644 graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Tails-JamesWhite89-Sonic.bin create mode 100644 graphics/portraits/custom/Tails-JamesWhite89-Sonic.pal create mode 100644 graphics/portraits/custom/Terra-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Terra-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Terra-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Terra-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Tifa-JamesWhite89-FF7.bin create mode 100644 graphics/portraits/custom/Tifa-JamesWhite89-FF7.pal create mode 100644 graphics/portraits/custom/Tina-CtrlxZ-FF6.bin create mode 100644 graphics/portraits/custom/Tina-CtrlxZ-FF6.pal create mode 100644 graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.bin create mode 100644 graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.pal create mode 100644 graphics/portraits/custom/Tohka-HoxNorf-DAL.bin create mode 100644 graphics/portraits/custom/Tohka-HoxNorf-DAL.pal create mode 100644 graphics/portraits/custom/Toriel-LoneRedMage-Undertale.bin create mode 100644 graphics/portraits/custom/Toriel-LoneRedMage-Undertale.pal create mode 100644 graphics/portraits/custom/Train Conductor-Mascot1063-FF6.bin create mode 100644 graphics/portraits/custom/Train Conductor-Mascot1063-FF6.pal create mode 100644 graphics/portraits/custom/Umaro-Jones-FF6.bin create mode 100644 graphics/portraits/custom/Umaro-Jones-FF6.pal create mode 100644 graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Ursula-HoxNorf-FF4.bin create mode 100644 graphics/portraits/custom/Ursula-HoxNorf-FF4.pal create mode 100644 graphics/portraits/custom/Vargas-PocoLoco-FF6.bin create mode 100644 graphics/portraits/custom/Vargas-PocoLoco-FF6.pal create mode 100644 graphics/portraits/custom/Vincent-Xeblon-FF7.bin create mode 100644 graphics/portraits/custom/Vincent-Xeblon-FF7.pal create mode 100644 graphics/portraits/custom/Vivi-asilverthorn-FF9.bin create mode 100644 graphics/portraits/custom/Vivi-asilverthorn-FF9.pal create mode 100644 graphics/portraits/custom/WedgeVicks-Laurel_Gens-FF6PR.bin create mode 100644 graphics/portraits/custom/WedgeVicks-Laurel_Gens-FF6PR.pal create mode 100644 graphics/portraits/custom/Wolf-JamesWhite89-Starfox.bin create mode 100644 graphics/portraits/custom/Wolf-JamesWhite89-Starfox.pal create mode 100644 graphics/portraits/custom/Wolf-JamesWhite89-Startfox.bin create mode 100644 graphics/portraits/custom/Wolf-JamesWhite89-Startfox.pal create mode 100644 graphics/portraits/custom/Wren-HoxNorf-PS4.bin create mode 100644 graphics/portraits/custom/Wren-HoxNorf-PS4.pal create mode 100644 graphics/portraits/custom/X-Unknown-Megaman.bin create mode 100644 graphics/portraits/custom/X-Unknown-Megaman.pal create mode 100644 graphics/portraits/custom/Xion-Kzinssie-KH.bin create mode 100644 graphics/portraits/custom/Xion-Kzinssie-KH.pal create mode 100644 graphics/portraits/custom/Yoshi-Badass-Mario.bin create mode 100644 graphics/portraits/custom/Yoshi-Badass-Mario.pal create mode 100644 graphics/portraits/custom/Yuffie-CtrlxZ-KH.bin create mode 100644 graphics/portraits/custom/Yuffie-CtrlxZ-KH.pal create mode 100644 graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Zidane-asilverthorn-FF9.bin create mode 100644 graphics/portraits/custom/Zidane-asilverthorn-FF9.pal create mode 100644 graphics/sprites/custom/Akari-HoxNorf-LB.bin create mode 100644 graphics/sprites/custom/Alice-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Alphys-LoneRedMage-Undertale.bin create mode 100644 graphics/sprites/custom/Amy-HoxNorf-Sonic.bin create mode 100644 graphics/sprites/custom/Angeal-HoxNorf-FF7.bin create mode 100644 graphics/sprites/custom/Antlion-Astaroth-FF4.bin create mode 100644 graphics/sprites/custom/Aria-HoxNorf-FF3.bin create mode 100644 graphics/sprites/custom/Arle-HoxNorf-Madou.bin create mode 100644 graphics/sprites/custom/Arthur-JamesWhite89-GnG.bin create mode 100644 graphics/sprites/custom/Arvis-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Atma-Astaroth-FF6.bin create mode 100644 graphics/sprites/custom/Beatrix-PocoLoco-FF9.bin create mode 100644 graphics/sprites/custom/Blaze-HoxNorf-Sonic.bin create mode 100644 graphics/sprites/custom/Bombette-HoxNorf-Mario.bin create mode 100644 graphics/sprites/custom/Bowser-Badass-Mario.bin create mode 100644 graphics/sprites/custom/Boy-Zozma-FF6.bin create mode 100644 graphics/sprites/custom/Cagnazzo-Astaroth-FF4.bin create mode 100644 graphics/sprites/custom/Cait Sith-HoxNorf-FF7.bin create mode 100644 graphics/sprites/custom/Cammy-Quikdraw7777-SF.bin create mode 100644 graphics/sprites/custom/Captain Falcon-JamesWhite89-FZero.bin create mode 100644 graphics/sprites/custom/Celes (Amano)-Astaroth-FF6.bin create mode 100644 graphics/sprites/custom/Celes (Opera)-Astaroth-FF6.bin create mode 100644 graphics/sprites/custom/Ceodore-HoxNorf-FF4.bin create mode 100644 graphics/sprites/custom/Chun Li-Quikdraw7777-SF.bin create mode 100644 graphics/sprites/custom/Clyde-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Cultist-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Dancer-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Dark Elf-Astaroth-FF4.bin create mode 100644 graphics/sprites/custom/Donkey Kong-Badass-Mario.bin create mode 100644 graphics/sprites/custom/Draco-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Eggman-JamesWhite89-Sonic.bin create mode 100644 graphics/sprites/custom/Elena-Astaroth-FF7.bin create mode 100644 graphics/sprites/custom/Figaro Guard-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Fighter-CtrlxZ-FF1.bin create mode 100644 graphics/sprites/custom/Firion-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Frisk-LoneRedMage-Undertale.bin create mode 100644 graphics/sprites/custom/Futo-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Genesis-HoxNorf-FF7.bin create mode 100644 graphics/sprites/custom/Gilius-JamesWhite89-GoldenAxe.bin create mode 100644 graphics/sprites/custom/Gordon-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Granny-Zozma-FF6.bin create mode 100644 graphics/sprites/custom/Gryz-HoxNorf-PS4.bin create mode 100644 graphics/sprites/custom/Guy-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Hojo-LoneRedMage-FF7.bin create mode 100644 graphics/sprites/custom/Hotaru-HoxNorf-MOTW.bin create mode 100644 graphics/sprites/custom/Josef-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Kaguya-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.bin create mode 100644 graphics/sprites/custom/Knuckles-Jameswhite89-Sonic.bin create mode 100644 graphics/sprites/custom/Lady-Zozma-FF6.bin create mode 100644 graphics/sprites/custom/Laguna-HoxNorf-FF8.bin create mode 100644 graphics/sprites/custom/Leila-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Leon-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Link-FEOK-LegendOfZelda.bin create mode 100644 graphics/sprites/custom/LoneWolf-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Lucca-FEOK-CT.bin create mode 100644 graphics/sprites/custom/Lufia-JamesWhite89-Lufia.bin create mode 100644 graphics/sprites/custom/Lugae-Astaroth-FF4.bin create mode 100644 graphics/sprites/custom/Luigi-Badass-Mario.bin create mode 100644 graphics/sprites/custom/Luneth-HoxNorf-FF3.bin create mode 100644 graphics/sprites/custom/Maduin-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Malin-HoxNorf-KOF.bin create mode 100644 graphics/sprites/custom/Maria-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Mario-Badass-Mario.bin create mode 100644 graphics/sprites/custom/Marle-CtrlxZ-CT.bin create mode 100644 graphics/sprites/custom/Metal Sonic-JamesWhite89-Sonic.bin create mode 100644 graphics/sprites/custom/Minwu-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Nakoruru-HoxNorf-SamSho.bin create mode 100644 graphics/sprites/custom/NarsheGuard-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Nitori-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Noire-HoxNorf-Neptunia.bin create mode 100644 graphics/sprites/custom/Pacman Ghost-HoxNorf-Pacman.bin create mode 100644 graphics/sprites/custom/Palom (Adult)-HoxNorf-FF4.bin create mode 100644 graphics/sprites/custom/Paul-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Peach-Halkel-SMRPG.bin create mode 100644 graphics/sprites/custom/Piranha Plant-JamesWhite89-Mario.bin create mode 100644 graphics/sprites/custom/Porom (Adult)-HoxNorf-FF4.bin create mode 100644 graphics/sprites/custom/Purple Sister-HoxNorf-Neptunia.bin create mode 100644 graphics/sprites/custom/Raja-HoxNorf-PS4.bin create mode 100644 graphics/sprites/custom/Ramza-CtrlxZ-FFT.bin create mode 100644 graphics/sprites/custom/Rash-JamesWhite89-Battletoads.bin create mode 100644 graphics/sprites/custom/Refia-HoxNorf-FF3.bin create mode 100644 graphics/sprites/custom/Reimu2-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Relm-HoxNorf-FF6PR.bin create mode 100644 graphics/sprites/custom/Returner-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Ricard-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Rubicante-Astaroth-FF4.bin create mode 100644 graphics/sprites/custom/Rune-HoxNorf-PS4.bin create mode 100644 graphics/sprites/custom/Ryu-Quikdraw7777-SF.bin create mode 100644 graphics/sprites/custom/Sanae-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Scholar-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Scott-HoxNorf-FF2.bin create mode 100644 graphics/sprites/custom/Seifer-Filipinac-FF8.bin create mode 100644 graphics/sprites/custom/Sherlotta-HoxNorf_ScarabEnigma-FFCC.bin create mode 100644 graphics/sprites/custom/Siegfried-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Simon-JamesWhite89-Castlevania.bin create mode 100644 graphics/sprites/custom/Slash-Badass-CT.bin create mode 100644 graphics/sprites/custom/Sonic-Badass-Sonic.bin create mode 100644 graphics/sprites/custom/Squall (Uniform)-SApprentice-FF8.bin create mode 100644 graphics/sprites/custom/Squall-PocoLoco-FF8.bin create mode 100644 graphics/sprites/custom/Tails-JamesWhite89-Sonic.bin create mode 100644 graphics/sprites/custom/Thief-CtrlxZ-FF1.bin create mode 100644 graphics/sprites/custom/Tifa-Astaroth-FF7.bin create mode 100644 graphics/sprites/custom/Tina-CtrlxZ-FF6.bin create mode 100644 graphics/sprites/custom/Toadette (Explorer)-HoxNorf-Mario.bin create mode 100644 graphics/sprites/custom/Toriel-LoneRedMage-Undertale.bin create mode 100644 graphics/sprites/custom/Train Conductor-Zozma-FF6.bin create mode 100644 graphics/sprites/custom/Ursula-HoxNorf-FF4.bin create mode 100644 graphics/sprites/custom/Vargas-PocoLoco-FF6.bin create mode 100644 graphics/sprites/custom/Vincent-FEOK-FF7.bin create mode 100644 graphics/sprites/custom/Wolf-HoxNorf-Starfox.bin create mode 100644 graphics/sprites/custom/Wren-HoxNorf-PS4.bin create mode 100644 graphics/sprites/custom/X-Badass-Megaman.bin create mode 100644 graphics/sprites/custom/Xion-Kzinssie-KH.bin create mode 100644 graphics/sprites/custom/Yoshi-Badass-Mario.bin create mode 100644 graphics/sprites/custom/Yuyuko-HoxNorf-Touhou.bin create mode 100644 music/song_utils.py create mode 100644 objectives/results/auto_overcast.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/args/auction_house.py b/args/auction_house.py index 826c1a59..8df8b3ff 100644 --- a/args/auction_house.py +++ b/args/auction_house.py @@ -9,6 +9,8 @@ def parse(parser): help = "Unbuyable talking chocobo and 1/1200 airship not offered to increase odds of items/espers") auction.add_argument("-adeh", "--auction-door-esper-hint", action = "store_true", help = "Door NPC indicates whether espers are still available") + auction.add_argument("-ame", "--auction-max-espers", default = 2, type = int, choices = range(0, 3), metavar = "COUNT", + help = "Auction House has max %(metavar)s espers (can be less)") def process(args): pass @@ -22,6 +24,8 @@ def flags(args): flags += " -anca" if args.auction_door_esper_hint: flags += " -adeh" + if args.auction_max_espers != 2: + flags += f" -ame {args.auction_max_espers}" return flags @@ -30,6 +34,7 @@ def options(args): ("Randomize Items", args.auction_random_items), ("No Chocobo/Airship", args.auction_no_chocobo_airship), ("Door Esper Hint", args.auction_door_esper_hint), + ("Max Espers", args.auction_max_espers), ] def menu(args): diff --git a/args/challenges.py b/args/challenges.py index 12bd61db..fd2e6a94 100644 --- a/args/challenges.py +++ b/args/challenges.py @@ -27,6 +27,7 @@ def parse(parser): def process(args): from constants.spells import black_magic_ids, white_magic_ids, gray_magic_ids, spell_id + from data.esper_spell_tiers import top_spells # If no_ultima is on, add it to our exclude list for downstream use # If permadeath is on, add it to our exclude list for downstream use @@ -50,6 +51,8 @@ def process(args): args.remove_learnable_spell_ids.extend(black_magic_ids) elif a_spell_id == 'gray' or a_spell_id == 'grey': args.remove_learnable_spell_ids.extend(gray_magic_ids) + elif a_spell_id == 'top': + args.remove_learnable_spell_ids.extend(top_spells) else: spell_ids_lower = {k.lower():v for k,v in spell_id.items()} if a_spell_id in spell_ids_lower: @@ -116,6 +119,13 @@ def _format_spells_log_entries(spell_ids): spell_entries.append(("", id_spell[spell_id])) return spell_entries +def _format_spells_log_entries(spell_ids): + from constants.spells import id_spell + spell_entries = [] + for spell_id in spell_ids: + spell_entries.append(("", id_spell[spell_id])) + return spell_entries + def menu(args): from menus.flags_remove_learnable_spells import FlagsRemoveLearnableSpells diff --git a/args/chests.py b/args/chests.py index dfefa4e7..8d581a8b 100644 --- a/args/chests.py +++ b/args/chests.py @@ -15,6 +15,10 @@ def parse(parser): chests_contents.add_argument("-cce", "--chest-contents-empty", action = "store_true", help = "Chest contents empty") + chests.add_argument("-chrm", "--chest-random-monsters", default = [0, 0], type = int, + nargs = 2, metavar = ("ENEMY", "BOSS"), choices = range(101), + help="Chest contents will contain given percent enemies and, of those, given percent bosses") + chests.add_argument("-cms", "--chest-monsters-shuffle", action = "store_true", help = "Monsters-in-a-box shuffled but locations unchanged") @@ -22,6 +26,9 @@ def process(args): if args.chest_contents_shuffle_random is not None: args.chest_contents_shuffle_random_percent = args.chest_contents_shuffle_random args.chest_contents_shuffle_random = True + if args.chest_random_monsters: + args.chest_random_monsters_enemy = args.chest_random_monsters[0] + args.chest_random_monsters_boss = args.chest_random_monsters[1] def flags(args): flags = "" @@ -34,6 +41,9 @@ def flags(args): flags += " -ccrs" elif args.chest_contents_empty: flags += " -cce" + + if args.chest_random_monsters: + flags += f" -chrm {args.chest_random_monsters_enemy} {args.chest_random_monsters_boss}" if args.chest_monsters_shuffle: flags += " -cms" @@ -56,7 +66,12 @@ def options(args): result.append(("Contents", contents_value)) if args.chest_contents_shuffle_random: result.append(("Random Percent", f"{args.chest_contents_shuffle_random_percent}%")) - result.append(("Monsters-In-A-Box Shuffled", args.chest_monsters_shuffle)) + + if args.chest_random_monsters: + result.append(("MIAB Percent", f"{args.chest_random_monsters_enemy}%")) + result.append((" Boss Percent", f"{args.chest_random_monsters_boss}%")) + + result.append(("MIAB Shuffled", args.chest_monsters_shuffle)) return result @@ -68,7 +83,7 @@ def menu(args): del entries[1] # delete random percent line else: entries[0] = (entries[0][1], "") - entries[1] = ("MIAB Shuffled", entries[1][1]) + return (name(), entries) def log(args): diff --git a/args/coliseum.py b/args/coliseum.py index 83531e74..2d5180f9 100644 --- a/args/coliseum.py +++ b/args/coliseum.py @@ -7,16 +7,20 @@ def parse(parser): coliseum = parser.add_argument_group("Coliseum") coliseum_opponents = coliseum.add_mutually_exclusive_group() - coliseum_opponents.add_argument("-cos", "--coliseum-opponents-shuffle", action = "store_true", - help = "Coliseum opponents shuffled") - coliseum_opponents.add_argument("-cor", "--coliseum-opponents-random", action = "store_true", - help = "Coliseum opponents randomized") + coliseum_opponents.add_argument("-cor", "--coliseum-opponents-random", nargs='?', const=100, default = None, type = int, + metavar = "PERCENT", choices = range(101), + help = "Coliseum opponents original with a given percent randomized") + coliseum_opponents.add_argument("-cosr", "--coliseum-opponents-shuffle-random", default = None, type = int, + metavar = "PERCENT", choices = range(101), + help = "Coliseum opponents shuffled and then given percent randomized") coliseum_rewards = coliseum.add_mutually_exclusive_group() - coliseum_rewards.add_argument("-crs", "--coliseum-rewards-shuffle", action = "store_true", - help = "Coliseum rewards shuffled") - coliseum_rewards.add_argument("-crr", "--coliseum-rewards-random", action = "store_true", - help = "Coliseum rewards randomized") + coliseum_rewards.add_argument("-crr", "--coliseum-rewards-random", nargs='?', const=100, default = None, type = int, + metavar = "PERCENT", choices = range(101), + help = "Coliseum rewards original with a given percent randomized") + coliseum_rewards.add_argument("-crsr", "--coliseum-rewards-shuffle-random", default = None, type = int, + metavar = "PERCENT", choices = range(101), + help = "Coliseum rewards shuffled and then a given percent randomized") coliseum.add_argument("-crvr", "--coliseum-rewards-visible-random", default = None, type = int, nargs = 2, metavar = ("MIN", "MAX"), choices = range(ITEM_COUNT), @@ -34,16 +38,15 @@ def process(args): def flags(args): flags = "" + if args.coliseum_opponents_random: + flags += f" -cor {args.coliseum_opponents_random}" + elif args.coliseum_opponents_shuffle_random: + flags += f" -cor {args.coliseum_opponents_shuffle_random}" - if args.coliseum_opponents_shuffle: - flags += " -cos" - elif args.coliseum_opponents_random: - flags += " -cor" - - if args.coliseum_rewards_shuffle: - flags += " -crs" - elif args.coliseum_rewards_random: - flags += " -crr" + if args.coliseum_rewards_random: + flags += f" -crr {args.coliseum_rewards_random}" + elif args.coliseum_rewards_shuffle_random: + flags += f" -crr {args.coliseum_rewards_shuffle_random}" if args.coliseum_rewards_visible_random: flags += f" -crvr {args.coliseum_rewards_visible_random_min} {args.coliseum_rewards_visible_random_max}" @@ -62,15 +65,11 @@ def options(args): result = [] opponents = "Original" - if args.coliseum_opponents_shuffle: - opponents = "Shuffle" - elif args.coliseum_opponents_random: + if args.coliseum_opponents_random: opponents = "Random" rewards = "Original" - if args.coliseum_rewards_shuffle: - rewards = "Shuffle" - elif args.coliseum_rewards_random: + if args.coliseum_rewards_random: rewards = "Random" rewards_visible = "Original" diff --git a/args/espers.py b/args/espers.py index b35c5994..d1e0a15b 100644 --- a/args/espers.py +++ b/args/espers.py @@ -64,6 +64,9 @@ def parse(parser): espers.add_argument("-ems", "--esper-multi-summon", action = "store_true", help = "Espers can be summoned multiple times in battle") + espers.add_argument("-emi", "--esper-mastered-icon", action = "store_true", + help = "Add an icon to show when all spells have been learned from an esper") + def process(args): args._process_min_max("starting_espers") args._process_min_max("esper_spells_random") @@ -116,6 +119,9 @@ def flags(args): if args.esper_multi_summon: flags += " -ems" + if args.esper_mastered_icon: + flags += " -emi" + return flags def options(args): @@ -160,6 +166,7 @@ def options(args): result.append(("MP", mp)) result.append(("Equipable", equipable)) result.append(("Multi Summon", args.esper_multi_summon)) + result.append(("Mastered Icon", args.esper_mastered_icon)) return result def menu(args): diff --git a/args/graphics.py b/args/graphics.py index 36d56262..deb39926 100644 --- a/args/graphics.py +++ b/args/graphics.py @@ -19,6 +19,9 @@ def parse(parser): graphics.add_argument("-wmhc", "--world-minimap-high-contrast", action = "store_true", help = "World Minimap made Opaque with Minimap icon changed to higher contrast to improve visibility.") + graphics.add_argument("-ahtc", "--alternate-healing-text-color", action = "store_true", + help = "Makes healing text blue, to be able to distinguish from damage.") + def process(args): import graphics.palettes.palettes as palettes import graphics.portraits.portraits as portraits @@ -113,6 +116,9 @@ def flags(args): flags += " -frm" if args.world_minimap_high_contrast: flags += " -wmhc" + if args.alternate_healing_text_color: + flags += " -ahtc" + return flags def _truncated_name(name): @@ -177,9 +183,14 @@ def _other_options_log(args): if args.world_minimap_high_contrast: world_minimap = "High Contrast" + healing_text = "Original" + if args.alternate_healing_text_color: + healing_text = "Blue" + entries = [ ("Remove Flashes", remove_flashes), ("World Minimap", world_minimap), + ("Healing Text", healing_text), ] for entry in entries: diff --git a/args/items.py b/args/items.py index b97737ce..eed7a77f 100644 --- a/args/items.py +++ b/args/items.py @@ -49,6 +49,8 @@ def parse(parser): items.add_argument("-saw", "--stronger-atma-weapon", action = "store_true", help = "Atma Weapon moved to higher tier and divisor reduced from 64 to 32") + + def process(args): args._process_min_max("item_equipable_random") if args.item_equipable_balanced_random is not None: @@ -108,6 +110,7 @@ def flags(args): if args.stronger_atma_weapon: flags += " -saw" + return flags def options(args): diff --git a/args/misc.py b/args/misc.py index 43c32153..0c83c403 100644 --- a/args/misc.py +++ b/args/misc.py @@ -16,6 +16,8 @@ def parse(parser): help = "All enemies scannable. All characters start with scan learned. Scan costs 0 MP. Useful for testing/debugging") misc.add_argument("-warp", "--warp-all", action = "store_true", help = "All characters start with Warp learned. Warp costs 0 MP. Useful for seeds that limit Warp Stone access") + misc.add_argument("-npctips", "--npc-dialog-tips", action = "store_true", + help = "NPC provide general game tips") from data.movement import ALL movement = misc.add_mutually_exclusive_group() @@ -79,6 +81,12 @@ def flags(args): flags += " -scan" if args.warp_all: flags += " -warp" + if args.npc_dialog_tips: + flags += " -npctips" + + ### NPC tips + if args.npc_dialog_tips: + flags += " -npctips" if args.event_timers_random: flags += " -etr" @@ -153,6 +161,7 @@ def options(args): ("Warp All", args.warp_all), ("Event Timers", event_timers), ("Y NPC", y_npc), + ("NPC Tips", args.npc_dialog_tips), ] def menu(args): diff --git a/args/scaling.py b/args/scaling.py index 8bafeac6..0c8f9554 100644 --- a/args/scaling.py +++ b/args/scaling.py @@ -23,6 +23,9 @@ def parse(parser): level_scaling.add_argument("-lst", "--level-scaling-time", default = None, type = float, metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 55, 5)], help = "Enemies and bosses gain 1 level every %(metavar)s minutes") + level_scaling.add_argument("-lsbd", "--level-scaling-bosses-dragons", default = None, type = float, + metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 105, 5)], + help = "Enemies and bosses gain %(metavar)s levels for each boss and dragon defeated") hp_mp_scaling = scaling.add_mutually_exclusive_group() hp_mp_scaling.add_argument("-hma", "--hp-mp-scaling-average", default = None, type = float, @@ -43,6 +46,9 @@ def parse(parser): hp_mp_scaling.add_argument("-hmt", "--hp-mp-scaling-time", default = None, type = float, metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 55, 5)], help = "Enemy and boss hp/mp scales every %(metavar)s minutes") + hp_mp_scaling.add_argument("-hmbd", "--hp-mp-scaling-bosses-dragons", default = None, type = float, + metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 105, 5)], + help = "Enemy and boss hp/mp scales %(metavar)s * each boss and dragon defeated") xp_gp_scaling = scaling.add_mutually_exclusive_group() xp_gp_scaling.add_argument("-xga", "--xp-gp-scaling-average", default = None, type = float, @@ -63,6 +69,9 @@ def parse(parser): xp_gp_scaling.add_argument("-xgt", "--xp-gp-scaling-time", default = None, type = float, metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 55, 5)], help = "Enemy and boss exp/gp scales every %(metavar)s minutes") + xp_gp_scaling.add_argument("-xgbd", "--xp-gp-scaling-bosses-dragons", default = None, type = float, + metavar = ("VALUE"), choices = [x / 10.0 for x in range(5, 105, 5)], + help = "Enemy and boss exp/gp scales %(metavar)s * for each boss and dragon defeated") ability_scaling = scaling.add_mutually_exclusive_group() ability_scaling.add_argument("-ase", "--ability-scaling-element", default = None, type = float, @@ -91,6 +100,8 @@ def process(args): args.level_scaling_factor = args.level_scaling_ced elif args.level_scaling_checks: args.level_scaling_factor = args.level_scaling_checks + elif args.level_scaling_bosses_dragons: + args.level_scaling_factor = args.level_scaling_bosses_dragons elif args.level_scaling_time: args.level_scaling_factor = args.level_scaling_time else: @@ -108,6 +119,8 @@ def process(args): args.hp_mp_scaling_factor = args.hp_mp_scaling_ced elif args.hp_mp_scaling_checks: args.hp_mp_scaling_factor = args.hp_mp_scaling_checks + elif args.hp_mp_scaling_bosses_dragons: + args.hp_mp_scaling_factor = args.hp_mp_scaling_bosses_dragons elif args.hp_mp_scaling_time: args.hp_mp_scaling_factor = args.hp_mp_scaling_time else: @@ -125,6 +138,8 @@ def process(args): args.xp_gp_scaling_factor = args.xp_gp_scaling_ced elif args.xp_gp_scaling_checks: args.xp_gp_scaling_factor = args.xp_gp_scaling_checks + elif args.xp_gp_scaling_bosses_dragons: + args.xp_gp_scaling_factor = args.xp_gp_scaling_bosses_dragons elif args.xp_gp_scaling_time: args.xp_gp_scaling_factor = args.xp_gp_scaling_time else: @@ -153,6 +168,8 @@ def flags(args): flags += f" -lsced {args.level_scaling_factor:g}" elif args.level_scaling_checks: flags += f" -lsc {args.level_scaling_factor:g}" + elif args.level_scaling_bosses_dragons: + flags += f" -lsbd {args.level_scaling_factor:g}" elif args.level_scaling_time: flags += f" -lst {args.level_scaling_factor:g}" @@ -166,6 +183,8 @@ def flags(args): flags += f" -hmced {args.hp_mp_scaling_factor:g}" elif args.hp_mp_scaling_checks: flags += f" -hmc {args.hp_mp_scaling_factor:g}" + elif args.hp_mp_scaling_bosses_dragons: + flags += f" -hmbd {args.hp_mp_scaling_factor:g}" elif args.hp_mp_scaling_time: flags += f" -hmt {args.hp_mp_scaling_factor:g}" @@ -179,6 +198,8 @@ def flags(args): flags += f" -xgced {args.xp_gp_scaling_factor:g}" elif args.xp_gp_scaling_checks: flags += f" -xgc {args.xp_gp_scaling_factor:g}" + elif args.xp_gp_scaling_bosses_dragons: + flags += f" -xgbd {args.xp_gp_scaling_factor:g}" elif args.xp_gp_scaling_time: flags += f" -xgt {args.xp_gp_scaling_factor:g}" @@ -211,6 +232,8 @@ def options(args): level_scaling = "Characters + Espers + Dragons" elif args.level_scaling_checks: level_scaling = "Checks" + elif args.level_scaling_bosses_dragons: + level_scaling = "Bosses + Dragons" elif args.level_scaling_time: level_scaling = "Time" @@ -229,6 +252,8 @@ def options(args): hp_mp_scaling = "Characters + Espers + Dragons" elif args.hp_mp_scaling_checks: hp_mp_scaling = "Checks" + elif args.hp_mp_scaling_bosses_dragons: + hp_mp_scaling = "Bosses + Dragons" elif args.hp_mp_scaling_time: hp_mp_scaling = "Time" @@ -247,6 +272,8 @@ def options(args): xp_gp_scaling = "Characters + Espers + Dragons" elif args.xp_gp_scaling_checks: xp_gp_scaling = "Checks" + elif args.xp_gp_scaling_bosses_dragons: + xp_gp_scaling = "Bosses + Dragons" elif args.xp_gp_scaling_time: xp_gp_scaling = "Time" @@ -281,6 +308,7 @@ def menu(args): value = value.replace("Party Highest", "PHighest") value = value.replace("Characters + Espers + Dragons", "C + E + D") value = value.replace("Characters + Espers", "C + E") + value = value.replace("Bosses + Dragons", "B + D") entries[index] = (key, value) except: pass diff --git a/args/starting_gold_items.py b/args/starting_gold_items.py index 371e73a6..2faa23d9 100644 --- a/args/starting_gold_items.py +++ b/args/starting_gold_items.py @@ -52,6 +52,7 @@ def options(args): ("Start Warp Stones", args.start_warp_stones), ("Start Fenix Downs", args.start_fenix_downs), ("Start Tools", args.start_tools), + ("Start Junk", args.start_junk), ] if args.start_junk != 0: diff --git a/args/steal.py b/args/steal.py index baffee98..a809840a 100644 --- a/args/steal.py +++ b/args/steal.py @@ -10,7 +10,14 @@ def parse(parser): steal_chances.add_argument("-sca", "--steal-chances-always", action = "store_true", help = "Steal will always succeed if enemy has an item") + steal.add_argument("-ssd", "--shuffle-steals-drops", default = None, type = int, + metavar = "PERCENT", choices = range(101), + help="Shuffle items stolen and dropped with randomized percent") + def process(args): + if args.shuffle_steals_drops is not None: + args.shuffle_steals_drops_random_percent = args.shuffle_steals_drops + args.shuffle_steals_drops = True pass def flags(args): @@ -20,19 +27,27 @@ def flags(args): flags += " -sch" if args.steal_chances_always: flags += " -sca" + if args.shuffle_steals_drops: + flags += f" -ssd {args.shuffle_steals_drops_random_percent}" return flags def options(args): + result = [] + steal_chances = "Original" if args.steal_chances_higher: steal_chances = "Higher" if args.steal_chances_always: steal_chances = "Always" - return [ - ("Chances", steal_chances), - ] + result.append(("Chances", steal_chances)) + + result.append(("Shuffle", args.shuffle_steals_drops)) + if args.shuffle_steals_drops: + result.append(("Random Percent", f"{args.shuffle_steals_drops_random_percent}%")) + + return result def menu(args): return (name(), options(args)) diff --git a/battle/auto_status.py b/battle/auto_status.py index 09108dc7..aefda0c9 100644 --- a/battle/auto_status.py +++ b/battle/auto_status.py @@ -10,6 +10,7 @@ def __init__(self): auto_b_status_effects = ["Condemned", "Image", "Mute", "Berserk", "Muddle", "Seizure", "Sleep"] auto_c_status_effects = ["Float", "Regen", "Slow", "Haste", "Shell", "Safe", "Reflect"] auto_d_status_effects = ["Life 3", "Dog Block"] + auto_phantasm_overcast_status_effects = ["Overcast"] auto_addresses = [] for status in auto_b_status_effects: @@ -18,6 +19,9 @@ def __init__(self): auto_addresses.append(self.auto_status(status, status_effects.C)) for status in auto_d_status_effects: auto_addresses.append(self.auto_status(status, status_effects.D)) + for status in auto_phantasm_overcast_status_effects: + auto_addresses.append(self.auto_status(status, status_effects.PhantasmOvercast)) + src = [ # original replaced code @@ -64,6 +68,9 @@ def auto_status(self, status_name, status_effects_group): elif status_effects_group == status_effects.D: status_address = 0x1615 opcode = asm.ABS_Y + elif status_effects_group == status_effects.PhantasmOvercast: + status_address = 0x3e4d + opcode = asm.ABS_X src = [] if auto_status_name in objectives.results: diff --git a/battle/scaling_functions.py b/battle/scaling_functions.py index 11696b8b..833c5860 100644 --- a/battle/scaling_functions.py +++ b/battle/scaling_functions.py @@ -13,6 +13,7 @@ def __init__(self): self.ced_mod() self.checks_mod() self.time_mod() + self.bosses_dragons_mod() if args.level_scaling_average: self.level = self.party_average_level @@ -24,6 +25,8 @@ def __init__(self): self.level = self.ced elif args.level_scaling_checks: self.level = self.checks + elif args.level_scaling_bosses_dragons: + self.level = self.bosses_dragons elif args.level_scaling_time: self.level = self.time else: @@ -39,6 +42,8 @@ def __init__(self): self.hp_mp = self.ced elif args.hp_mp_scaling_checks: self.hp_mp = self.checks + elif args.hp_mp_scaling_bosses_dragons: + self.hp_mp = self.bosses_dragons elif args.hp_mp_scaling_time: self.hp_mp = self.time else: @@ -54,6 +59,8 @@ def __init__(self): self.xp_gp = self.ced elif args.xp_gp_scaling_checks: self.xp_gp = self.checks + elif args.xp_gp_scaling_bosses_dragons: + self.xp_gp = self.bosses_dragons elif args.xp_gp_scaling_time: self.xp_gp = self.time else: @@ -217,6 +224,27 @@ def checks_mod(self): space = Write(Bank.C2, src, "scaling function checks") self.checks = space.start_address + def bosses_dragons_mod(self): + # output: 16 bit a = bosses completed + + import data.event_word as event_word + boss_complete_address = event_word.address(event_word.BOSSES_DEFEATED) + dragons_defeated_address = event_word.address(event_word.DRAGONS_DEFEATED) + + src = [ + asm.PHP(), + asm.AXY16(), + + asm.LDA(boss_complete_address, asm.ABS), # a = bosses defeated + asm.CLC(), + asm.ADC(dragons_defeated_address, asm.ABS), # a = bosses + dragons defeated + + asm.PLP(), + asm.RTS(), + ] + space = Write(Bank.C2, src, "scaling function bosses") + self.bosses_dragons = space.start_address + def time_mod(self): # output: 16 bit a = game time in minutes diff --git a/constants/items.py b/constants/items.py index 4617dedb..c619eadc 100644 --- a/constants/items.py +++ b/constants/items.py @@ -295,3 +295,4 @@ "Marvel Shoes", "Exp. Egg", ] + diff --git a/constants/objectives/results.py b/constants/objectives/results.py index 445bb88d..92a46fe7 100644 --- a/constants/objectives/results.py +++ b/constants/objectives/results.py @@ -90,6 +90,7 @@ category_types["Item"].append(ResultType(60, "Sprint Shoes", "Sprint Shoes", None)) category_types["Auto"].append(ResultType(61, "Auto Dog Block", "Auto Dog Block", None)) category_types["Auto"].append(ResultType(62, "Auto Life 3", "Auto Life 3", None)) +category_types["Auto"].append(ResultType(63, "Auto Overcast", "Auto Overcast", None)) categories = list(category_types.keys()) diff --git a/constants/status_effects.py b/constants/status_effects.py index ebdee41e..143677cf 100644 --- a/constants/status_effects.py +++ b/constants/status_effects.py @@ -49,3 +49,10 @@ class D: 7 : "Float", } name_id = {v: k for k, v in id_name.items()} + +class PhantasmOvercast: + id_name = { + 1 : "Overcast", + 6 : "Phantasm", + } + name_id = {v: k for k, v in id_name.items()} diff --git a/data/character.py b/data/character.py index cabaa67c..db012726 100644 --- a/data/character.py +++ b/data/character.py @@ -25,8 +25,8 @@ def __init__(self, id, init_data, name_data): self.init_magic_evasion = init_data[14] self.init_right_hand = init_data[15] self.init_left_hand = init_data[16] - self.init_body = init_data[17] - self.init_head = init_data[18] + self.init_body = init_data[18] # https://discord.com/channels/666661907628949504/931737764205047858/1069220818300698675 + self.init_head = init_data[17] self.init_relic1 = init_data[19] self.init_relic2 = init_data[20] self._init_run_success = init_data[21] & 0x03 @@ -51,8 +51,8 @@ def init_data(self): init_data[14] = self.init_magic_evasion init_data[15] = self.init_right_hand init_data[16] = self.init_left_hand - init_data[17] = self.init_body - init_data[18] = self.init_head + init_data[18] = self.init_body + init_data[17] = self.init_head init_data[19] = self.init_relic1 init_data[20] = self.init_relic2 init_data[21] = self._init_run_success diff --git a/data/chests.py b/data/chests.py index d80f8234..8d596442 100644 --- a/data/chests.py +++ b/data/chests.py @@ -194,6 +194,36 @@ def random_scaled(self): chests_asm.scale_gold(gold_bits, self.gold_contents) + def chest_random_monsters(self, enemy_percent, boss_percent): + from data.enemy_battle_groups import event_battle_groups_to_avoid, boss_event_battle_groups, event_battle_group_name, dragon_event_battle_groups, name_event_battle_group + MIAB_noboss = [a for a in range(256) if a not in event_battle_groups_to_avoid.keys() and a not in event_battle_group_name.keys()] + if self.args.mix_bosses_dragons: + MIAB_boss = [a for a in range(256) if a in boss_event_battle_groups.keys() or a in dragon_event_battle_groups.keys()] + else: + MIAB_boss = [a for a in range(256) if a in boss_event_battle_groups.keys()] + + # Respect boss modification flags + if not self.args.shuffle_random_phunbaba3: + # Remove Phunbaba 3 encounter from the MIAB_boss pool + MIAB_boss.remove(name_event_battle_group["Phunbaba 3"]) + + randomizable_types = [Chest.EMPTY, Chest.ITEM, Chest.GOLD] + # Remove chests in the Zone Eater crushing ceiling room from the pool. + ze_crush_room_chests = [chest for chest in self.map_chests[0x118] if chest.x != 1] + possible_chests = [chest for chest in self.chests if ((chest.type in randomizable_types)) and + chest not in ze_crush_room_chests] + num_monster_chests = int(len(possible_chests) * ((enemy_percent) / 100.0)) + #gets the specific chests that will be randomized + random_chests = random.sample(possible_chests, num_monster_chests) + + for chest in random_chests: + chest.type = Chest.MONSTER + is_boss = (random.random()*100 < boss_percent) + if is_boss: + chest.contents = random.choice(MIAB_boss) + else: + chest.contents = random.choice(MIAB_noboss) + def clear_contents(self): for chest in self.chests: if chest.type == Chest.ITEM or chest.type == Chest.GOLD: @@ -280,6 +310,10 @@ def mod(self): if self.args.chest_monsters_shuffle: self.shuffle([Chest.MONSTER]) + # add randomized MIABs after other contents randomization/shuffle is complete + if self.args.chest_random_monsters_enemy > 0: + self.chest_random_monsters(self.args.chest_random_monsters_enemy, self.args.chest_random_monsters_boss) + self.copy_thamasa_chests() # update duplicates last after other chest mods finished @@ -301,6 +335,7 @@ def log(self): from data.item_names import id_name from data.item import Item from textwrap import wrap + from data.enemy_battle_groups import event_battle_group_name lcolumn = [] if self.args.chest_contents_random_scaled: @@ -328,8 +363,12 @@ def log(self): elif chest.type == Chest.GOLD: contents.append(f"{chest.contents * 100} GP") elif chest.type == Chest.MONSTER: - # TODO how to get enemy name? - contents.append("MIAB") + if chest.contents in event_battle_group_name: + # if it's a boss/dragon, append it + contents.append(f"MIAB({event_battle_group_name[chest.contents]})") + else: + # TODO how to get enemy name? + contents.append("MIAB") elif chest.type == Chest.EMPTY: contents.append("Empty") diff --git a/data/coliseum.py b/data/coliseum.py index 095f6a2f..ebb65909 100644 --- a/data/coliseum.py +++ b/data/coliseum.py @@ -30,9 +30,11 @@ def shuffle_opponents(self): for match_index, match in enumerate(self.matches): match.opponent = opponents[match_index] - def randomize_opponents(self): + def randomize_opponents(self, random_opponent_percent = None): + import random + for match in self.matches: - match.opponent = self.enemies.get_random() + match.opponent = self.enemies.get_random() if random_opponent_percent is not None and (random.random() < random_opponent_percent) else match.opponent def shuffle_rewards(self): rewards = [] @@ -44,9 +46,11 @@ def shuffle_rewards(self): for match_index, match in enumerate(self.matches): match.reward = rewards[match_index] - def randomize_rewards(self): + def randomize_rewards(self, random_reward_percent = None): + import random + for match in self.matches: - match.reward = self.items.get_random() + match.reward = self.items.get_random() if random_reward_percent is not None and (random.random() < random_reward_percent) else match.reward def remove_excluded_items(self): import random @@ -76,15 +80,17 @@ def randomize_rewards_hidden(self): self.matches[match_index].reward_hidden = 1 def mod(self): - if self.args.coliseum_opponents_shuffle: + if self.args.coliseum_opponents_random: + self.randomize_opponents(self.args.coliseum_opponents_random / 100.0) + elif self.args.coliseum_opponents_shuffle_random: self.shuffle_opponents() - elif self.args.coliseum_opponents_random: - self.randomize_opponents() + self.randomize_opponents(self.args.coliseum_opponents_shuffle_random / 100.0) - if self.args.coliseum_rewards_shuffle: + if self.args.coliseum_rewards_random: + self.randomize_rewards(self.args.coliseum_rewards_random / 100.0) + elif self.args.coliseum_rewards_shuffle_random: self.shuffle_rewards() - elif self.args.coliseum_rewards_random: - self.randomize_rewards() + self.randomize_rewards(self.args.coliseum_rewards_shuffle_random / 100.0) self.remove_excluded_items() diff --git a/data/data.py b/data/data.py index 1d22f42e..3624b986 100644 --- a/data/data.py +++ b/data/data.py @@ -38,7 +38,7 @@ def __init__(self, rom, args): self.maps = maps.Maps(rom, args, self.items) self.maps.mod(self.characters) - self.enemies = enemies.Enemies(rom, args) + self.enemies = enemies.Enemies(rom, args, self.items) self.enemies.mod(self.maps) self.swdtechs = swdtechs.SwdTechs(rom, args, self.characters) diff --git a/data/dialogs/dialogs.py b/data/dialogs/dialogs.py index 79803299..fe74b291 100644 --- a/data/dialogs/dialogs.py +++ b/data/dialogs/dialogs.py @@ -183,6 +183,380 @@ def mod(self): self.move_battle_messages() self.objectives_mod() + import args + if args.npc_dialog_tips: + + # clear out vanilla dialog to make room for tips + for lines in range(0,49): # Narshe intro, Terra's flashback, Locke's intro + self.set_text(lines,"") + for lines in range(113,145): # Figaro Castle 1st Kefka sequence, Locke and Terra dialog + self.set_text(lines,"") + for lines in range(248,267): # Vargas and Sabin intro + self.set_text(lines,"") + for lines in range(370,407): # South Figaro Locke scenario + self.set_text(lines,"") + for lines in range(667,684): # Phantom Train + self.set_text(lines,"") + for lines in range(724,736): # Phantom Train end + self.set_text(lines,"") + for lines in range(783,803): # Crescent Mountain scene + self.set_text(lines,"") + for lines in range(837,874): # Narshe Battle + self.set_text(lines,"") + for lines in range(879,917): # After Narshe Battle + self.set_text(lines,"") + for lines in range(1073,1133): # Ramuh at Zozo + self.set_text(lines,"") + for lines in range(1372,1380): # Ifrit & Shiva + self.set_text(lines,"") + for lines in range(1387,1403): # Magitek Room Cid sequence + self.set_text(lines,"") + for lines in range(1410,1422): # After Magitek Factory + self.set_text(lines,"") + for lines in range(1635,1655): # Sealed Gate + self.set_text(lines,"") + for lines in range(1656,1675): # After Sealed Gate + self.set_text(lines,"") + for lines in range(1959,2003): # Thamasa Strago intro, Burning House intro + self.set_text(lines,"") + for lines in range(2005,2027): # Thamasa after Burning House + self.set_text(lines,"") + for lines in range(2136,2162): # Floating Continent statues scene + self.set_text(lines,"") + + self.set_text(81, "The Figaro Throne reward exists in both worlds!") + self.set_text(82, "MasterPug doesn't grant any XP or MP. Too bad…") + self.set_text(83, "Blue Drgn uses Water magic. Use Imp gear to absorb it.") + self.set_text(85, "Open a hidden stairwell in the Ancient Castle by walking 5 steps south of the queen's throne and pressing “Aâ€.") + self.set_text(87, "Use a combination of RunningShoes and Wall Ring to be completely safe from Tentacles.") + self.set_text(89, "Hitting an enemy with Air Anchor means it'll be dead after its next turn.") + self.set_text(90, "Drill and Chain Saw both ignore enemy defenses.") + self.set_text(91, "Drill and Chain Saw both ignore enemy defenses.") + self.set_text(92, "Chests in Figaro Castle are the same in both worlds…") + self.set_text(93, "But shops sell different items!") + self.set_text(98, "Hey! Let us outta here!") + self.set_text(100, "Hey! Let us outta here!") + self.set_text(101, "Hey! Let us outta here!") + self.set_text(102, "When given a dialogue option, hold up/down before the options appear to automatically select the top or bottom option. This is useful for Auction House or Ancient Castle.") + self.set_text(176, "An old clock.") + self.set_text(177, "An old clock.") + self.set_text(179, "Towns sell different things between worlds, even if they look the same.") + self.set_text(180, "South Figaro has more free chests than any other town! The mansion's basement is open right from the start.") + self.set_text(181, "If you enter Mt. Kolts from the south and exit from the north, the airship will follow you to the northern exit.") + self.set_text(182, "If you land a Pummel on Vargas, the fight will end immediately. No XP from him if you do that though!") + self.set_text(183, "There are 2 hidden paths in Mt. Kolts that lead to treasure chests.") + self.set_text(184, "Equip relics to gain a variety of abilities!") + self.set_text(185, "Most Blitz moves utilize a character's MagPwr instead of Vigor. The 2 Blitzes that use Vigor are Pummel and Suplex.") + self.set_text(198, "Thrown weapons ignore enemy defenses - doesn't matter what type of weapon either.") + self.set_text(199, "Equip/unequip weapons/shields in battle to gain utility from weapons like Drainer or Assassin, take off an elemental shield to break it, or equip a Cursed Shld mid-battle. You can even take your weapon off and then throw it!") + self.set_text(201, "Shadow's Interceptor helps block attacks and can counter with powerful magic damage.") + self.set_text(202, "After recruiting a character, set up your party for Zone Eater or Veldt to save an airship trip. You can also do this after certain checks like Phoenix Cave.") + self.set_text(203, "Thrown elemental weapons will hit elemental weaknesses.For example, Blossom is Wind. Trident is Water.") + self.set_text(204, "If you're not sure you can survive a fight, running away with just one character will let you survive the battle.") + self.set_text(205, "Buy more consumables than you think you'll need! Better safe than sorry.") + self.set_text(206, "I'm blocking the eastern exit now, but in the World of Ruin I won't be here.") + self.set_text(207, "Hold A in the menus during battle to select commands/spells fast - best done with Memory Cursor.") + self.set_text(208, "Hold A in the overworld to buffer interactions with NPCs/chests/the environment.") + self.set_text(210, "If you Jump with a spear, it will do double damage instead of 50% more damage that a normal weapon would do.") + self.set_text(211, "Jumps land faster if characters are Hasted or have higher Speed.") + self.set_text(213, "Fixed encounter checks are good after free progression checks to catch up in levels before a boss fight.") + self.set_text(215, "There's always a nasty draft in this room. Check behind the bookshelf.") + self.set_text(216, "Depending on the seed, enemies will get stronger based on 1. How many characters, Espers, dragons, and/or checks you've done2. How high your party's levels are3. How much time has passed in the game.Check the flags if you're not sure!") + self.set_text(221, "Save before certain checks and reset if the reward is something you don't need. We call this a Save Scum.") + self.set_text(228, "When entering a map on a staircase, hold up or down, then once your character turns, you're able to walk the stairs faster. Saves time and looks cool.") + self.set_text(229, "Memorize each map to be able to buffer the direction you will need to walk ahead of time.") + self.set_text(230, "Enter South Figaro Cave from the south entrance to trigger the boss fight near the healing pool.") + self.set_text(297, "Morph will double the damage of spells and physical damage as long as it doesn't ignore defense.") + self.set_text(313, "Check this room for a hidden treasure passage!") + self.set_text(474, "Cherub Downs and Gaia Gear help with Dirt Drgn's Earth attacks.") + self.set_text(476, "Use Sleep to put Dirt Drgn to bed.") + self.set_text(599, "Welcome to Worlds Collide! NPCs throughout this world will now give you useful tips instead of vanilla dialog.By the way, default settings allow every character to equip a Moogle Charm.") + self.set_text(600, "Some monsters will freeze your characters. Use Fire to restore them to back to normal.") + self.set_text(601, "Phantom Forest and South Figaro Cave have healing springs that work like this pot.") + self.set_text(602, "This is a Save Point.You may use Sleeping Bags and Tents here. If you can, use Sleeping Bags to save time.") + self.set_text(603, "Check barrels, clocks, crates, and pots such as this one for hidden items.") + self.set_text(604, "Staying at an Inn will revive your party in full.") + self.set_text(605, "Ha!Sometimes monsters lurk inside of treasure chests!Memorize all locations of these kinds of chests! It will help in future runs!") + self.set_text(606, "Relics?") + self.set_text(607, "If the battle mode is set to “Waitâ€, opening a menu during battle/having the cursor up for some commands will pause ATB. We call this a “Wait trick†- use it to plan out actions in menus while letting animations play.") + self.set_text(608, "When shopping, you'll see some symbols next to your characters:Triangles pointing up indicate increasing battle power.Triangles pointing down indicate decreasing battle power.“=†indicates no change in battle power.“E†means the item is already equipped on that character.A symbol under a character means that person is now in your party.") + self.set_text(609, "Select the “Wait†Battle Mode from the Config Menu to take all the time you need to select spells or items without being attacked. Easiest settings? Set Battle Speed to 6 and Message Speed to 1.") + self.set_text(610, "Run from some battles by pressing (and holding) both the L and R Buttons.This can take time, but will be fast in a preemptive strike/side attack.Stock up on Smoke Bombs/Warp Stones and use them to escape.") + self.set_text(611, "In fights, “X†cycles character turns in order. “Y†cycles to the last character that had their ATB filled.") + self.set_text(612, "When selecting a spell, press the L or R Button to select multiple targets.Sometimes, this causes the damage to be lower than a single target attack, so be careful!") + self.set_text(613, "Press left or right in battle to choose 'Row' or 'Defense.' In Short command menus, hold L or R.Defense cuts damage in half until the next turn.") + self.set_text(614, "Damage is more severe when caught in a pincer attack! Enemies that hit you from behind deal double damage.") + self.set_text(615, "If you turn the ATB meter off, you'll be able to see a character's max HP value in battle.") + self.set_text(616, "In the back row, damage and attack power are halved.Change rows using the Main Menu: press left on the Control Pad, then press “Aâ€.Maximize character's Fight damage by placing them in the front row. Keep characters not using Fight in the back.") + self.set_text(619, "Use a curative spell or item on an undead creature for maximum damage.This will not work on some bosses under specific flags.") + self.set_text(621, "3-way attack indicates a fire, ice and lightning attack.If an enemy nullifies or absorbs ANY ONE of those elements, they will nullify/absorb all the damage.This applies to attacks like Maduin and Tritoch summons.") + self.set_text(622, "Use Rflect on your party to change enemy scripts - try it against SrBehemoth or Red Dragon.") + self.set_text(623, "Runic turns many spells, including those used by other party members, into MP. Can be used repeatedly, and expires when the Runic activates or the user performs another action.Morph increases Attack/Magic power. Duration increases after battles awarding Magic Points.Once selected, Dance and Rage make the user uncontrollable until KO or the battle is over.") + self.set_text(625, "To use an Esper it must be equipped. Choose “Skills†from the menu, then select “Espers.â€During battle, select Magic, and press up on the Control Pad. Press the A Button to use the Esper.An Esper can only be used once per battle if the Multi Summon flag is off.Learning MagicLearn new spells by equipping Espers. Switch Espers to learn different sets of spells.The higher the “Learning Speed†the faster a spell is learned.When equipped, some Espers will raise qualities (Strength, HP, MP etc.) to their maximum limits at the next “level up.â€") + self.set_text(626, "When HP is critical, you go into “Near Fatal†status. During this condition, you have a 1 in 16 chance for a super strong desperation move when choosing “Fightâ€.") + self.set_text(627, "Want to learn more about Espers? Yes No") + self.set_text(628, "See the NPC at the very end of this hall by the last door.") + self.set_text(629, "Each SwdTech has its own unique name.You'll gain more SwdTech skills by leveling up or completing objectives.") + self.set_text(630, "“Rflect†doesn't block spells that have been “Rflected†off others.Enemy protected by Rflect?Try bouncing an attack off a Rflect-protected individual in your party!") + self.set_text(744, "Io Rage uses Flare Star, which does damage based on the enemies' levels - it's solid if you're under-leveled.Prussian and Luridan Rage use Land Slide - stronger than Flare!") + self.set_text(745, "Talk to a shopkeeper to get the next letter to appear when doing the Injured Lad quest.") + self.set_text(746, "Each item you send for the Injured Lad costs roughly 1 to 3000 GP.") + self.set_text(747, "The Veldt check can be done in both the World of Balance and World of Ruin.This check is best done early if possible. Only Lobos roam the Veldt at the very start of a seed.") + self.set_text(748, "Summon Ragnarok to Morph Lobos on the Veldt for Dried Meat. Most beast-like enemies also Morph into Dried Meat.") + self.set_text(749, "The Veldt check reward will not appear on a back or pincer attack, nor will it appear after several battles against formations with many enemies. Ensure you have Dried Meat and less than 3 characters in the party when doing this check.") + self.set_text(750, "The Doom Drgn Rage freezes enemies. It works on bosses, but has a chance of failing.The Nightshade Rage charms enemies, but sometimes is nerfed - check the flags!") + self.set_text(752, "Many Rage specials boost physical damage, like Stray Cat, Gold Bear, and Trooper. Try them with Sniper or Man Eater. Even Fixed Dice damage benefits from these kinds of boosts!") + self.set_text(753, "Heard about the Serpent Trench? Yes No") + self.set_text(754, "Jump into the Trench from Crescent Mountain.") + self.set_text(755, "Jump into the Trench from Crescent Mountain.") + self.set_text(756, "In the Serpent Trench, go right twice to get both chests.") + self.set_text(757, "The Injured Lad quest can be started in the house right behind me.") + self.set_text(758, "By default, Rage users will learn monster skills after defeating them in battle.This eliminates the need to use Leap on the Veldt.") + self.set_text(759, "Dried Meat is guaranteed to be in at least 1 shop. It can randomly show up in chests too.Don't forget the airship has a shop too!") + self.set_text(761, "The entrance to the Serpent Trench is south of here, in Crescent Mountain.") + self.set_text(805, "If you wish, you can fight the enemy soldier NPCs in the Doma Castle siege.Your party will be fully healed after you defeat the boss there.") + self.set_text(806, "Hit the chest, don't kick it!") + self.set_text(807, "Items sold will be at most 1/2 their shop value, depending on the seed.") + self.set_text(809, "You can exit from this town from both the east and west.") + self.set_text(810, "South Figaro-bound ferry. (No thanks) (Hop aboard)") + self.set_text(812, "Nikeah-bound ferry. (No thanks.) (Hop aboard)") + self.set_text(813, "After the Serpent Trench check, you'll end up on the docks of this town.") + self.set_text(814, "Some towns have all 4 shop types: Item, Weapon, Armor, and Relic. This is one of them!") + self.set_text(815, "DANCER: Yoo hoo! You handsome thing. How 'bout joining me?Tee hee!") + self.set_text(825, "Save time shopping by knowing exactly what you want to buy ahead of time.") + self.set_text(826, "With No Priceless Items on, consider selling items for high GP values early on, like Elixirs or Genji Helmets.") + self.set_text(917, "The reward you don't pick during the Lone Wolf check can be found in the World of Ruin Moogle Cave.") + self.set_text(918, "With good timing you can run past the last line of soldiers during the Kefka at Narshe battle!") + self.set_text(919, "You can't warp out of the Narshe mines in World of Balance, except for the Moogle Cave.") + self.set_text(920, "In World of Ruin Narshe, some doors might be locked until you recruit Locke.") + self.set_text(926, "A Peace Ring or Ribbon can help deal with the negative effects of a Cursed Shld in battle.") + self.set_text(927, "The entrance to Umaro's cave can be found in the World of Ruin, after defeating the boss at Tritoch. If the reward is a character, they will be peeking out of a cave just north of town.") + self.set_text(928, "Once you spot him, follow Lone Wolf to the Narshe peak!") + self.set_text(929, "Use caution with Umaro: enemies like Whelk have mechanics where you need to carefully time your attacks.") + self.set_text(930, "Umaro comes equipped with a Snow Muffler. Consider giving this to another character, or selling even it.") + self.set_text(931, "Umaro's body slam attack ignores enemy defense.") + self.set_text(932, "Activate the Security Checkpoint from the checkpoint room's southern door in the World of Balance.") + self.set_text(981, "Beyond is the Engine Room. Head to Figaro Castle World of Ruin to go below.") + self.set_text(986, "ValiantKnife's HP differential damage is not subject to Offering's damage penalty - making for an effective pair.") + self.set_text(987, "Power up ValiantKnife by unequipping and reequipping Muscle Belt/Red Cap before a battle.Try not to heal ValiantKnife wielders in-between fights.") + self.set_text(988, "The airship faces North when entering from the world map. Buffer the direction you want to go as you enter.") + self.set_text(989, "If the Falcon allows you to “Search the Skiesâ€, select that to start the Doom Gaze spot's fight immediately.") + self.set_text(990, "Hold R or L to turn the Airship faster.") + self.set_text(991, "Hold R or L to turn the Airship faster.") + self.set_text(992, "Sniper and Hawk Eye both have a 50% chance to deal 150% damage to enemies.They'll deal 300% damage against floating ones. You can cast Float on enemies to make them vulnerable to this.") + self.set_text(993, "Fixed Dice ignores enemy defense and deals damage based on character level and the dice rolls.") + self.set_text(994, "Hold Y when flying to strafe. You won't trigger the Search the Skies encounter while doing this.Avoid that encounter entirely by flying to where your destination would be in the World of Balance, then switching to the World of Ruin and landing. Check your minimap to learn where locations are in both worlds.") + self.set_text(1012, "ValiantKnife deals bonus damage equal to the difference between the wielder's max HP and current HP.") + self.set_text(1014, "The Kohlingen Inn reward appears in both worlds.") + self.set_text(1016, "You might not expect it, but Dice and Fixed Dice gain Jump damage bonuses.") + self.set_text(1018, "Higher levels and equipping Sneak Ring will improve Steal success rate.") + self.set_text(1019, "Phoenix revives all Wounded characters in battle.") + self.set_text(1028, "Higher levels and equipping Sneak Ring will improve Steal success rate.") + self.set_text(1029, "Save time by only attacking with your highest damage character to reduce animation time.") + self.set_text(1030, "Two items in the Auction House can be bought repeatedly. That's not the case in World of Ruin though!") + self.set_text(1031, "Strength or MagPwr +2 Espers may guide which character builds you end up using.Consider keeping characters at low levels (e.g. out of the party) to maximize the use of the bonus later, after another character has made good use of it.") + self.set_text(1032, "Higher Stamina will increase the amount of damage you take from Poison each turn, as well as the amount of HP healed by Regen each turn.") + self.set_text(1033, "The Opera House is far to the south of here.") + self.set_text(1034, "Want physical damage? Go for Atlas Armlet or Hero Ring. Magic user? Equip 2 Earrings, 2 Hero Rings, or 1 of each.") + self.set_text(1036, "Bring Warp Stones if you venture into Zozo - both Mt. Zozo and Zozo Tower are long climbs down.") + self.set_text(1038, "In Zozo, the thieves will give you clues to solving the clock puzzle. Remember, they're all liars!") + self.set_text(1039, "Breaking elemental shields cast tier 3 spells that ignore defense and Reflect status.") + self.set_text(1040, "Breaking Rods cast tier 2 spells that ignore defense and Reflect status.") + self.set_text(1041, "The Auction House will always have 2 high tier items or Espers at 20000 GP and 10000 GP.") + self.set_text(1042, "Quick is a great defensive spell. After casting it, enemy ATB is frozen until your caster completes 2 turns.Enemies won't be able to counter your first turn actions. Damage your enemy one turn, then heal up the next.") + self.set_text(1206, "Oh my hero, so far away now. Will I ever see your smile?Love goes away, like night into day. It's just a fading dream…I'm the darkness, you're the stars. Our love is brighter than the sun. For eternity, for me there can be,only you, my chosen one…Must I forget you? Our solemn promise? Will autumn take the place of spring?What shall I do? I'm lost without you. Speak to me once more!…here you pick up the flowers.Climb the stairs to the balcony high atop the castle. Raise the flowers to the stars.") + self.set_text(1260, "Talk to Impresario first.") + self.set_text(1262, "Hit the 3rd switch from the left.") + self.set_text(1329, "Illumina deals the same amount of damage from the back row as the front.") + self.set_text(1334, "My child will heal you for 1 HP at a time!") + self.set_text(1338, "Magus Rod provides +7 MagPwr and 30% MBlock, an ideal choice for spellcasters.") + self.set_text(1339, "Man Eater will do 2x damage on human targets. SwordBreaker provides 30% Evade.") + self.set_text(1344, "Illumina's Pearl will critical hit with MP, dealing twice the damage as a normal Pearl.") + self.set_text(1346, "If you deal a killing blow with Ragnarok or Illumina, there will be no spell proc.") + self.set_text(1355, "Illumina and Ragnarok provide great Evade and MBlock - they're like great shields.") + self.set_text(1365, "Danger…") + self.set_text(1367, "Aura Lance has stronger battle power, but Pearl Lance can proc the Pearl spell.") + self.set_text(1368, "Tempest has a 50% chance of casting Wind Slash instead of its regular attack. Try it with Offering.") + self.set_text(1507, "Is your Blitz user Level 42 yet?") + self.set_text(1521, "The other reward you didn't pick is in the Narshe Mines World of Balance, past the Whelk check.") + self.set_text(1522, "Gogo and Umaro can't uncurse the Cursed Shld, so don't try it with them!") + self.set_text(1551, "Offering makes Fight swing 4 untargettable times with a 100% hit rate and 1/2 damage for each attack.") + self.set_text(1552, "Certain weapons drain MP to guarantee a critical hit. These criticals won't occur with Offering equipped, however.") + self.set_text(1553, "Desperation attacks have extremely high spell power and defense ignoring capabilities - don't forget about them when you're up against a wall!") + self.set_text(1554, "Physical damage is largely based off your level. Pair your Exp. Eggs with physical damage dealers.") + self.set_text(1555, "Atma Weapon damage increases with Level, but is not dependent on max HP.Damage IS lowered the more HP you have lost.") + self.set_text(1556, "Gauntlet is great with natural command Jump characters. It also works well with Fight at higher levels if you have a strong weapon, but beware of attacks since you can't equip a shield.") + self.set_text(1558, "Haste isn't great at getting extra turns, but can help for getting the first turn or running quicker.") + self.set_text(1560, "Memento Ring does the same thing as Safety Bit.") + self.set_text(1562, "The Remedy spell won't restore Imp status, but the item will.") + self.set_text(1564, "Seizure deals damage like Poison, but Antidote items won't cure it. Use Remedy.") + self.set_text(1566, "The Remedy spell will remove Stop status, but the item won't.") + self.set_text(1568, "Safety Bit protects against Demi, Quartr, W-Wind, Doom, and all other fractional or instant death attacks.It also prevents the Petrify status too! Great against Delta Hit.") + self.set_text(1573, "Recover from status effects in a pinch by KOing your own character, then reviving them. This can be a lifesaver if you need to unmute/unfreeze somebody!") + self.set_text(1574, "Berserked characters will be able to use: Fight, Capture, Jump, Rage, Magitek. They also deal more damage!") + self.set_text(1575, "Equipping a Relic that prevents a status will also heal that status immediately.") + self.set_text(1576, "Each time you apply Poison to a monster, it will deal 100% more damage during each poison tick (up to 8x).") + self.set_text(1577, "Muddled characters can be deadly. Hit them with the Fight command.") + self.set_text(1581, "Use Scan to identify enemy elemental weaknesses. Spells and elemental weapons can take advantage of those.") + self.set_text(1584, "Merton damage can be stopped with elemental shields, Rage Ring, Blizzard Orb, Red Jacket, Paladin Shld, and Minerva.") + self.set_text(1587, "Quake heals your whole party if they're all wearing Gaia Gear.") + self.set_text(1588, "Magic damage is greatly boosted by the MagPwr stat. Even gear like Magus Hat/White Dress can be worthwhile.") + self.set_text(1589, "Outside of battle, use Cure instead of Cure 2 and 3. It's more MP efficient!") + self.set_text(1590, "Fire, Ice, and Bolt 3 are incredibly strong spells you can use throughout the entire game.") + self.set_text(1592, "Pearl is a strong spell, but several bosses surprisingly absorb it: Atma, Goddess, Wrexsoul.") + self.set_text(1594, "Beating the boss at the Atma Weapon spot in Kefka's Tower will reward a high tier item and a Save Point.") + self.set_text(1595, "You can't get the treasure box behind me unless the world ends!") + self.set_text(1596, "Welcome!") + self.set_text(1597, "Outta here!") + self.set_text(1598, "Broke? Sell unused items!") + self.set_text(1599, "Whooopie!") + self.set_text(1600, "NPCs here have tips related to Magic and elements.") + self.set_text(1601, "Elemental shields teach tier 2 magic while equipped. Trade shields in your party to teach them to other characters.") + self.set_text(1602, "Meteor deals full damage even against multiple targets. It's not the strongest option against a single enemy, though.") + self.set_text(1603, "Cursed Rings teach X-Zone while equipped.") + self.set_text(1605, "Doom is more accurate at hitting enemies than X-Zone, but is only single target.") + self.set_text(1607, "Flare ignores enemy defense, although it takes a long time to cast.") + self.set_text(1608, "Sure!") + self.set_text(1734, "If you're looking for Lone Wolf, recruit Mog first and come back here (in the World of Balance)!") + self.set_text(1748, "If you should perish, you'll be able to play from your last save. You can save a game anywhere on the world map.") + self.set_text(1750, "Use Osmose on enemies if you need to recover MP mid-fight.") + self.set_text(1751, "Mirage Vests will provide Image status at the start of every tier.") + self.set_text(1763, "Learning new dances is as simple as winning a battle in new terrain without dancing.") + self.set_text(1766, "Dance chances, in order of their listing in the Skills menu:7/16, 6/16, 2/16, 1/16Think about those odds when Dancing!") + self.set_text(2082, "Pearl Wind heals the party for the same amount of HP the caster has.") + self.set_text(2083, "Try dodging Burning House flames by running past them the same moment they start moving towards you.") + self.set_text(2084, "Blow Fish is a great early Lore - unblockable 1000 damage!") + self.set_text(2085, "Characters won't learn Lores if they have the Dark status. Use Eyedrops or Remedy before the battle ends!") + self.set_text(2117, "General Leo...Play as him with the help of custom graphics!") + self.set_text(2201, "The Tzen Thief in World of Balance will mention a glowing stone if he is selling an Esper. However, he won't tell you that here in the World of Ruin.") + self.set_text(2202, "Gigantos is weak to instant death and only uses physical damage. Use Phantom to be safe.") + self.set_text(2203, "Monster in a box fights CAN be run from. But sometimes it's better to save before opening them if you're looking for Gigantos (EXP) or PM Stalkers (MP).") + self.set_text(2204, "Don't use instant death on Specter, PM Stalkers, or other undead - they'll be fully healed.") + self.set_text(2205, "Allo Ver can be taken out with a Revivify or Fenix Down. Sketch works too.") + self.set_text(2206, "Telstar will start summoning Soldiers if you don't kill it quickly.") + self.set_text(2207, "Claw weapons dropped by Presenter and Allo Ver often sell for very high GP.You can't Throw them, so why not get some GP instead?") + self.set_text(2208, "You can steal Minervas from Pugs, and win them from the fight as drops too.") + self.set_text(2209, "The Tzen Thief price can vary between 1 and 65535 GP, and it is different between worlds.") + self.set_text(2212, "There are monsters inside!") + self.set_text(2229, "NPCs here have tips for the game's final battle. There are 4 tiers to it, and each tier has its own challenges.") + self.set_text(2230, "Beads have a hidden effect to block physical attacks. Use them to dodge dangerous physical attacks like Calmness.") + self.set_text(2231, "Girl absorbs all elemental attacks. Use non-elemental damage on her.") + self.set_text(2232, "Heal Sleep out of Meteo phase (less than 10000 HP) if you're overwhelmed. Revivify will heal him for 5000 HP.") + self.set_text(2233, "Summon Fenrir or Golem in Tier 3 - they'll protect your entire party from Calmness.") + self.set_text(2234, "Tiger in Tier 2 can freeze your party, or turn them into Zombies. It's weak to Ice magic.") + self.set_text(2235, "You can retain your Morph infinitely if it runs out during a tier phase transition, or if the character is frozen or stopped.") + self.set_text(2236, "Kefka can't counterattack while charging Goner. Save big damage for when the screen starts shaking.") + self.set_text(2237, "Long Arm of Tier 1 and Tools in Tier 2 are weak to instant death. Mute or summon Siren against Magic in Tier 2.") + self.set_text(2238, "Vanish status or the Phantom summon will prevent all damage from 10 Hits or Tier 1 physicals.") + self.set_text(2239, "Watch me despawn this entire room…") + self.set_text(2240, "It'll never be the same again!") + self.set_text(2246, "You can only use Magic and Item commands in here.") + self.set_text(2247, "Check the wall to the right of the chest in this tower's first treasure room.") + self.set_text(2250, "You'll have to defeat the boss at the top to get the reward down here.") + self.set_text(2278, "We know about Esper summons!") + self.set_text(2279, "Summon Ragnarok to Morph dragons for a 1/8 instant kill chance.") + self.set_text(2280, "If affected by party-wide status effects (like Train), Unicorn is a great summon (casts Remedy on everyone).") + self.set_text(2281, "Odin and Raiden are instant death attacks on all enemies. Summon Sraphim and Starlet for a party-wide heal.") + self.set_text(2282, "Phunbaba's BabaBreath will send up to 2 of your characters back to the airship.BabaBreath is also prioritized to be used on Wounded characters.You'll have at least 1 character remaining in the party afterwards.") + self.set_text(2306, "Queue up attacks as you summon Palidor for extra damage.") + self.set_text(2323, "Set Battle Speed to 1 before fighting Zone Eater. This will save you time if it decides to use Demi instead of Engulf. But don't forget to change it back after!") + self.set_text(2324, "Use Mimic to re-use items like Super Balls, elemental shields, or strong throws like Excalibur. You can “Mimic†Mimic to keep using the same throw indefinitely.") + self.set_text(2326, "Flare, Hyper Drive, and Ultima all can be Runic'ed.") + self.set_text(2327, "Got money? GP Rain deals more damage with higher levels, and ignores all enemy defenses.") + self.set_text(2328, "Set Gogo's 3 unused command slots to any abilities of your choosing in his Status menu.") + self.set_text(2329, "If Possess hits, it will immediately kill its target. Works on bosses too!") + self.set_text(2335, "Once you start the Doma Dream sequence, you won't be able to warp out. Be careful when saving!") + self.set_text(2340, "Don't forget the reward on the Doma throne after finishing up the dream sequence.") + self.set_text(2350, "Left Crane absorbs Lightning. Right Crane absorbs Fire. Think: Left for Lightning!") + self.set_text(2351, "Fight Wrexsoul with physical damage, since his magic defense is so high.") + self.set_text(2353, "When Piranhas appear, you'll have to wait 5-55 seconds before Rizopas - the true final boss - appears.") + self.set_text(2354, "Ultros is always weak to Fire and always absorbs Water.") + self.set_text(2355, "Dragon Horn gives you 2-4 jumps a turn - a must for any Dragoon build. Make sure your character has Jump!") + self.set_text(2356, "If you defeat Moe and Curly in the stooges fight, Larry will eventually run away. Larry is weak to instant death.") + self.set_text(2357, "Use Ice on Ifrit, and Fire on Shiva. Non-elemental will work on both.If you time it right, you can even run away from the battle during their transition phases.") + self.set_text(2358, "Casting Imp on Number 024 and SrBehemoth will force them into using physical attacks only.") + self.set_text(2364, "Try using Pearl Rods on Doom Gaze, who has high magic defense but is weak to Pearl.") + self.set_text(2365, "Despite his appearance, Dullahan is weak to Fire.") + self.set_text(2366, "Chadarnook is weak to Fire and Pearl…") + self.set_text(2367, "But don't attack while the girl is visible!") + self.set_text(2368, "Poltrgeist is vulnerable to Stop and weak to Poison.") + self.set_text(2369, "MagiMaster is vulnerable to Bserk. Also, you can hit him with one elemental attack before the first WallChange. Make it count!") + self.set_text(2370, "Phunbaba has a lot of HP, but is weak to Poison. Just don't use Bolt on him!") + self.set_text(2373, "Inferno uses a lot of powerful magic attacks. Focus down the main body with Bolt magic.") + self.set_text(2397, "Debilitator will create a new elemental weakness for its target.") + self.set_text(2398, "Flash and BioBlaster both deal magic damage. Flash applies Dark status, while BioBlaster applies Poison.") + self.set_text(2400, "Sketch, if it hits, has a 25% of killing KatanaSoul.") + self.set_text(2402, "Muddle KatanaSoul to kill him fast.") + self.set_text(2403, "The Figaro Throne reward exists in both worlds!") + self.set_text(2421, "Try fighting here early in a seed. Low level enemies won't have MP to use their abilities.") + self.set_text(2424, "My Colosseum is built in the World of Ruin!") + self.set_text(2425, "This is my colosseum.") + self.set_text(2426, "This is my colosseum.") + self.set_text(2427, "I'm in 4 different boss fights throughout the game!") + self.set_text(2429, "Colosseum can turn low GP items into great ones. Buy stacks of cheap items to maximize Colosseum potential.") + self.set_text(2430, "Umaro is great in the Colosseum since he won't cast random Magic spells in battle.") + self.set_text(2431, "Betting the Striker here doesn't unlock any character.") + self.set_text(2432, "This is Dragon's Neck Colosseum.") + self.set_text(2436, "You can enter the Phoenix Cave as long as you have at least 2 characters.") + self.set_text(2437, "Those beautiful days…") + self.set_text(2438, "Pressing Start in battle to pause the game can help with lining up slots in the Slots command.") + self.set_text(2442, "Red Dragon uses Fire magic, and is weak to Ice. You can also Muddle it!") + self.set_text(2443, "At low enough HP, Red Dragon will start using Flare too - which isn't Fire elemental!") + self.set_text(2444, "Slots' triple Bar will summon a random Esper... hope it's not Crusader!") + self.set_text(2446, "Several Slots results can deal non-elemental, unblockable damage to enemies.") + self.set_text(2453, "Slots will give leniency after you stop the first reel, allowing you to land 7-Flush and Chocobop if you can line up Diamonds/Chocobo on the first reel.") + self.set_text(2454, "Spikes in the Phoenix Cave will drop your HP as you step on them!") + self.set_text(2455, "Slots' Lagomorph can heal Dark, Sleep, and Poison.") + self.set_text(2457, "Slots RNG starts off the same in each battle. If you can use H-Bomb turn 1 in a battle, it'll work in every battle if nothing has affected the RNG.") + self.set_text(2532, "SwdTech 2 and 6 deal more damage with higher MagPwr (instead of Vigor).") + self.set_text(2533, "Buy Rust-Rid in Zozo for 1000 GP to gain access to Mt. Zozo.") + self.set_text(2536, "If the Retort bug fix flag is disabled, try KO'ing your SwdTech user, reviving them, and then using Retort.") + self.set_text(2537, "What shall I talk about? (Narshe) (The Veldt) (Doma Castle) (Nothing, thanks!)") + self.set_text(2538, "Storm Drgn is weak to Bolt attacks, despite its name.") + self.set_text(2539, "Use SwdTech 5 to restore both HP and MP.") + self.set_text(2541, "Did you know that SwdTech damage is not increased by equipped weapon battle power?SwdTech 1, 4, and 7 do get stronger with higher Vigor, however.") + self.set_text(2603, "Characters selected to fight here have HP restored before battle, even Wounded ones.There's no restore after battles - so if they're injured when the fight's done, they'll stay that way!") + self.set_text(2623, "Hold A at the victory screen to skip text at max speed.") + self.set_text(2626, "In tough battles, wait to see the outcome of enemy attacks before queuing up your own.") + #2640 is used in Auction event, keep vanilla (Ho, ho, ho... There's nothing I can't buy!) + #self.set_text(2640, "Equip the Cursed Shld in the middle of a battle to avoid its negative status effects entirely.If the character survives the battle, this will still count towards uncursing it!") + self.set_text(2678, "128+ Evade/MBlock will block everything except unblockable abilities like Ultima.") + self.set_text(2679, "Higher Stamina will increase the amount of damage you take from Poison each turn, as well as the amount of HP healed by Regen each turn.") + self.set_text(2681, "Save time by arranging your item menu during battle animations. Group up items you want to sell.") + self.set_text(2682, "Use Economizer with an Esper like Bahamut or Lore like GrandTrain to quickly break open a seed.") + self.set_text(2684, "Sketch, if done successfully, can do one of two things depending on the enemy.") + self.set_text(2691, "Super Balls can help win a few fights if under-leveled. Also, seek undead enemies and kill them with Revivify/Fenix Down.") + self.set_text(2692, "Memorizing good Rages will help break open seeds quicker.") + self.set_text(2694, "Learn which attacks ignore enemy defense. Some examples are Flare, Bum Rush, and SwdTech 7.") + self.set_text(2695, "Use X-Magic on the second turn of Quick and you'll still have full ATB after the X-Magic.") + self.set_text(2696, "Use Tents/Sleeping Bags in multiparty dungeons when not on a save point by moving onto a save point, then immediately switching to a different party and going into the menu.") + self.set_text(2699, "Avoid counter attacks by not attacking with weak party members. Use X/Y to skip their turn if needed.") + self.set_text(2702, "Have you heard? The fourth Ultros fight with Chupon doesn't give you anything. Not even XP.") + self.set_text(2726, "You can save some frames by closing the command menu before a battle ends. I like to use Defend on everyone.") + self.set_text(2746, "The Auction House is always a bit of a gamble, isn't it?") + self.set_text(2747, "In the World of Ruin, you can eventually buy out every item in the Auction House for 90000 GP.Watch out for Imp Robots though - they'll just waste your time.") + self.set_text(2848, "Killing all the Hidonites will cause Hidon to use a strong non-elemental attack. Be careful when using attacks that damage all enemies.") + self.set_text(2849, "Hidon is weak to Fire and Pearl! If you kill Hidon first, any other Hidonites will die as well.") + self.set_text(2850, "22 Coral are required to get past the talking chest in Ebot's Rock.") + self.set_text(2857, "Lores can't be Runic'ed, making them a good pair (e.g. Runic + Pearl Wind).") + self.set_text(2915, "This is Figaro Castle.") + self.set_text(2920, "If Edgar leads your party, all the shops in Figaro Castle are 1/2 off.") + self.set_text(2921, "This discount works in South Figaro World of Ruin too!") + + # conditional flags for character gating + if args.character_gating: + self.set_text(749, "The Veldt check reward will not appear on a back or pincer attack, nor will it appear after several battles against formations with many enemies. Ensure you have Dried Meat, less than 3 characters in the party, and recruited when doing this check.") + self.set_text(1051, "Haven't seen any rewards here. Might want to check the top of the building after recruiting !") + self.set_text(1065, "This place is dangerous! Visit me in the World of Ruin after recruiting !") + self.set_text(1196, "Have you recruited Maria, I mean, yet?") + self.set_text(1333, "No one gets in without recruiting General !") + #adjusted in event\figaro_castle_wor.py + #self.set_text(2379, "I won't budge from this spot until you have recruited !") + self.set_text(2436, "You can enter the Phoenix Cave as long as you have at least 2 characters. also needs to be recruited to get the reward at the end.") + self.set_text(2685, "'s checks include Esper Mountain near Thamasa in the World of Balance, and right here in Owzer's Mansion in the World of Ruin.") + + #### end of NPC dialog tip mod + def write(self): self.dialog_data.assign([dialog.data() for dialog in self.dialogs]) for dialog_index, dialog in enumerate(self.dialogs): diff --git a/data/enemies.py b/data/enemies.py index 2e686a6f..9b620e1b 100644 --- a/data/enemies.py +++ b/data/enemies.py @@ -29,9 +29,10 @@ class Enemies(): SRBEHEMOTH2_ID = 127 INVINCIBLE_GUARDIAN_ID = 273 - def __init__(self, rom, args): + def __init__(self, rom, args, items=[]): self.rom = rom self.args = args + self.items = items self.enemy_data = DataArray(self.rom, self.DATA_START, self.DATA_END, self.DATA_SIZE) self.enemy_name_data = DataArray(self.rom, self.NAMES_START, self.NAMES_END, self.NAME_SIZE) @@ -305,6 +306,54 @@ def randomize_encounters(self, maps): self.packs.randomize_packs(packs, boss_percent) + def randomize_loot(self): + for enemy in self.enemies: + self.set_common_steal(enemy.id, self.items.get_random()) + self.set_rare_steal(enemy.id, self.items.get_random()) + self.set_common_drop(enemy.id, self.items.get_random()) + self.set_rare_drop(enemy.id, self.items.get_random()) + + def shuffle_steals_drops_random(self): + import random + from data.bosses import final_battle_enemy_name + + # Assemble the list of steals and drops + steals_drops = [] + for enemy in self.enemies: + if len(enemy.name) > 0: + loot_list = [enemy.steal_common, enemy.steal_rare] + if enemy.id not in final_battle_enemy_name.keys(): + loot_list += [enemy.drop_common, enemy.drop_rare] + steals_drops.extend(loot_list) + + # Randomize the requested number + random_percent = self.args.shuffle_steals_drops_random_percent / 100.0 + number_random = int(random_percent * len(steals_drops)) + which_random = [a for a in range(len(steals_drops))] + random.shuffle(which_random) + for id in range(number_random): + steals_drops[which_random[id]] = self.items.get_random() + + # Shuffle list & reassign to enemies + random.shuffle(steals_drops) + for enemy in self.enemies: + if len(enemy.name) > 0: + self.set_common_steal(enemy.id, steals_drops.pop(0)) + self.set_rare_steal(enemy.id, steals_drops.pop(0)) + if enemy.id not in final_battle_enemy_name.keys(): + self.set_common_drop(enemy.id, steals_drops.pop(0)) + self.set_rare_drop(enemy.id, steals_drops.pop(0)) + + def pad_enemy_packs(self): + from data.enemy_battle_groups import unused_event_battle_groups + for pack in self.packs.packs: + if pack.FORMATION_COUNT == 2: + # pack formation 0, 0 is Lobo -- it fills out unused spaces. Id 0, though, is MIAB Lobo, which we want to keep. + if (pack.formations == [0, 0] and pack.id > 0) or (pack.id in unused_event_battle_groups): + # Add random formations to the empty pack + this_formation = self.formations.get_random_normal() + pack.formations = [this_formation, this_formation] + def set_escapable(self): import random @@ -330,6 +379,13 @@ def mod(self, maps): if self.args.boss_normalize_distort_stats: self.boss_normalize_distort_stats() + if self.args.shuffle_steals_drops: + self.shuffle_steals_drops_random() + + if self.args.chest_random_monsters_enemy > 0: + # add more random groups to the otherwise limited event battle groups (all that's available for MIAB) + self.pad_enemy_packs() + if self.args.permadeath: self.remove_fenix_downs() diff --git a/data/enemy_ability_tiers.py b/data/enemy_ability_tiers.py index 5c73a83a..2cbaedda 100644 --- a/data/enemy_ability_tiers.py +++ b/data/enemy_ability_tiers.py @@ -568,31 +568,33 @@ name_id["Cure"], ], [ # tier 1 - name_id["Cure"], + name_id["Cure 2"], ], [ # tier 2 - name_id["Cure"], name_id["Cure 2"], + name_id["Sun Bath"], ], [ # tier 3 name_id["Cure 2"], + name_id["Sun Bath"], ], [ # tier 4 - name_id["Cure 2"], + name_id["Sun Bath"], + name_id["Ice Rabbit"], ], [ # tier 5 name_id["Sun Bath"], + name_id["Ice Rabbit"], + name_id["Cure 3"], ], [ # tier 6 - name_id["Sun Bath"], name_id["Ice Rabbit"], + name_id["Cure 3"], ], [ # tier 7 - name_id["Sun Bath"], - name_id["Ice Rabbit"], + name_id["Cure 3"], ], [ # tier 8 - name_id["Ice Rabbit"], name_id["Cure 3"], ], [ # tier 9 diff --git a/data/enemy_battle_groups.py b/data/enemy_battle_groups.py new file mode 100644 index 00000000..b467323a --- /dev/null +++ b/data/enemy_battle_groups.py @@ -0,0 +1,101 @@ +unused_event_battle_groups = { + 9: "B.Day Suit/Officer", + 10: "Merchant/B.Day Suit", + 49: "Empty", + 50: "Empty", + 51: "Empty", + 52: "Empty", + 54: "Empty", + 56: "Empty", + 58: "Lv60 Magic event battle", + 59: "Terra vs Officer", + 60: "Empty", + 61: "Empty", + 62: "Empty", + 63: "Atma (Broken)", + 74: "Umaro (Dummied)", + 75: "Unbeatable Guardian", + 76: "Guardian (Repeat)", + 77: "Tritoch (Vicks/Wedge/Terra)", + 78: "Tritoch (Terra)", + 88: "Dirt Drgn (Broken)", + 97: "Empty", + 105: "Empty", + 106: "Empty", + 111: "White Drgn (repeat)", + 115: "Terra flashback battle with 3 Soldiers", + 120: "Tritoch (repeat)", + 121: "Empty", + 122: "Empty", + 123: "Empty", + 124: "Kefka (Thamasa)", + 127: "Empty", + 128: "Phunbaba 1", + 129: "Phunbaba 2" +} + +event_battle_groups_to_avoid = { + 53: "Zone Eater", + 83: "Kefka (final)", + 101: "Face/Long Arm/Short Arm" +} + +boss_event_battle_groups = { + 6: "Marshal", + 18: "Rizopas", + 46: "Leader", + 57: "Kefka (Narshe)", + 64: "Whelk", + 66: "Vargas", + 67: "TunnelArmr", + 68: "GhostTrain", + 69: "Dadaluma", + 70: "Ifrit/Shiva", + 71: "Cranes", + 72: "Number 024", + 73: "Number 128", + 79: "FlameEater", + 80: "AtmaWeapon", + 81: "Nerapa", + 82: "SrBehemoth", + 84: "Tentacles", + 85: "Dullahan", + 86: "Chadarnook", + 89: "Air Force", + 90: "Stooges", + 92: "Wrexsoul", + 93: "Doom Gaze", + 94: "Hidon", + 98: "Doom", + 99: "Goddess", + 100: "Poltrgeist", + 103: "Ultros 1", + 104: "Ultros 2", + 107: "Ultros/Chupon", + 112: "Atma", + 114: "Inferno", + 117: "Umaro", + 119: "Tritoch", + 125: "Ultros 3", + 130: "Phunbaba 3", + 131: "Phunbaba 4", + 140: "Guardian", + 145: "MagiMaster" +} + +dragon_event_battle_groups = { + 132: "Ice Dragon", + 133: "Storm Drgn", + 134: "Dirt Drgn", + 135: "Gold Drgn", + 136: "Skull Drgn", + 137: "Blue Drgn", + 138: "Red Dragon", + 139: "White Drgn", +} + +event_battle_group_name = {} +event_battle_group_name.update(boss_event_battle_groups) +event_battle_group_name.update(dragon_event_battle_groups) + +name_event_battle_group = {v: k for k, v in event_battle_group_name.items()} diff --git a/data/enemy_formations.py b/data/enemy_formations.py index b6dfcdac..8c672e8b 100644 --- a/data/enemy_formations.py +++ b/data/enemy_formations.py @@ -182,4 +182,4 @@ def mod(self): def print_scripts(self): for formation_index, formation in enumerate(self.formations): if formation.enable_event_script: - print("{}: script {}".format(formation_index, hex(formation.event_script))) + print("{} {}: script {}".format(formation_index, self.get_name(formation_index), hex(formation.event_script))) diff --git a/data/enemy_script_custom_commands.py b/data/enemy_script_custom_commands.py index 82fe0efe..ae4e0317 100644 --- a/data/enemy_script_custom_commands.py +++ b/data/enemy_script_custom_commands.py @@ -358,6 +358,6 @@ def mod(self): self.hp_check_command_mod() self.hp_conditions_mod() - scaling_space = Allocate(Bank.C4, 944, "enemy script get random tiered ability") + scaling_space = Allocate(Bank.C4, 946, "enemy script get random tiered ability") if self.args.ability_scaling: self.random_tiered_ability_mod(scaling_space) diff --git a/data/esper_spell_tiers.py b/data/esper_spell_tiers.py index 4c652c1f..5778f167 100644 --- a/data/esper_spell_tiers.py +++ b/data/esper_spell_tiers.py @@ -80,3 +80,7 @@ (name_id["Quick"], 0.3), (name_id["Ultima"], 0.1), ] + +top_spells = tiers[7] +top_spells.extend(tiers[6]) +top_spells.extend(tiers[2]) diff --git a/data/espers.py b/data/espers.py index 0b595398..c09a5b12 100644 --- a/data/espers.py +++ b/data/espers.py @@ -304,6 +304,9 @@ def mod(self, dialogs): self.equipable_balanced_random() espers_asm.equipable_mod(self) + if self.args.esper_mastered_icon: + espers_asm.mastered_mod(self) + if self.args.permadeath: self.phoenix_life3() diff --git a/data/espers_asm.py b/data/espers_asm.py index 6d6e48c7..6171746a 100644 --- a/data/espers_asm.py +++ b/data/espers_asm.py @@ -1,6 +1,127 @@ from memory.space import Bank, Reserve, Allocate, Write import instruction.asm as asm +def mastered_mod(espers): + # Ported with mods from https://www.ff6hacking.com/forums/thread-4181.html + # Mods from Madsuir's original: + # 1. Rather than using the space at the right, I replace the ... before the MP + # 2. Using F0 freespace + # 3. Displaced code is different to deconflict with equipable_mod + from data.text.text2 import text_value + space = Reserve(0x487b0, 0x487be, "add star icon for text2 to unused space") + space.write( + 0x18,0x00,0x3C,0x18,0xFF,0x18,0xFF,0x7E,0x7E,0x3C,0xFF,0x7E,0xFF,0x66 # raw hex for star icon + ) + + MASTERED_ICON = 0x7f # points to the star icon created above + SPELL_OFFSET_STORAGE_RAM = 0x0203 # free Menu RAM location used to calculate character spell offset once per Skills menu + src = [ + asm.PHX(), # save X + asm.TDC(), # clear A + asm.LDA(0x28, asm.DIR), # load slot ID (0-3) + asm.TAX(), + asm.LDA(0x69, asm.DIR_X), # load actor ID in slot + asm.XBA(), + asm.LDA(0x36, asm.IMM8), # 54 spells + asm.A16(), + asm.STA(0x004202, asm.LNG), #prepare multiplication (actor ID * 54) + asm.NOP(), + asm.NOP(), + asm.NOP(), + asm.NOP(), + asm.LDA(0x004216, asm.LNG), #load multiplication result + asm.STA(SPELL_OFFSET_STORAGE_RAM, asm.ABS), #store it + asm.A8(), + asm.PLX(), # restore X + asm.JSL(0xc20006), # get actor stats -- displaced code + asm.RTL(), + ] + space = Write(Bank.F0, src, "set spell offset") + set_spell_offset = space.start_address_snes + + space = Reserve(0x31b64, 0x31b67, "calculate actor's spells starting RAM offset") + space.write( + asm.JSL(set_spell_offset), + ) + + src = [ + asm.PHX(), + asm.PHY(), + asm.TDC(), # clear A + asm.STA(0xfb, asm.DIR), + asm.LDA(0x7e9d89, asm.LNG_X), # load esper ID + asm.A16(), + asm.STA(0xfc, asm.DIR), # save it + asm.ASL(), # x2 + asm.STA(0xfe, asm.DIR), # save it + asm.ASL(), # x4 + asm.ASL(), # x8 + asm.CLC(), + asm.ADC(0xfe, asm.DIR), # x10 + asm.CLC(), + asm.ADC(0xfc, asm.DIR), # x11 + asm.TAX(), + asm.STZ(0xfc, asm.DIR), + asm.LDY(0x0005, asm.IMM16), # 5 spells max per esper + asm.A8(), + "LOOP", + asm.TDC(), # clear A + asm.LDA(0xd86e01, asm.LNG_X), # esper spell + asm.CMP(0xff, asm.IMM8), # no spell? + asm.BEQ("NO_ESPER"), # exit if no esper + asm.STA(0xfc, asm.DIR), # save spell ID + asm.A16(), + asm.LDA(SPELL_OFFSET_STORAGE_RAM, asm.ABS), # load current character spell offset + asm.CLC(), + asm.ADC(0xfc, asm.DIR), # spell offset + spell ID + asm.PHX(), + asm.TAX(), # set X as spell learnt percentage + asm.A8(), + asm.LDA(0x1a6e, asm.ABS_X), # load spell learnt percentage + asm.PLX(), + asm.CMP(0xff, asm.IMM8), # compare learnt rate to 100% + asm.BNE("NOT_MASTERED"), # branch if not 100% + asm.INX(), + asm.INX(), + asm.DEY(), + asm.BNE("LOOP"), + "NO_ESPER", + asm.INC(0xfb, asm.DIR), # set esper as mastered + "NOT_MASTERED", + asm.PLY(), + asm.PLX(), + asm.LDA(0x7e9d89, asm.LNG_X), # load esper ID -- displaced code + asm.RTL(), + ] + space = Write(Bank.F0, src, "check mastered") + check_mastered = space.start_address_snes + + space = Reserve(0x3552e, 0x35531, "check if current esper is mastered") + space.write( + asm.JSL(check_mastered), + ) + + src = [ + asm.LDA(0xfb, asm.DIR), # load mastered esper byte + asm.BEQ("NOT_MASTERED"), # branch if not mastered + asm.LDA(MASTERED_ICON, asm.IMM8), #load our mastered icon + asm.BRA("RETURN"), + "NOT_MASTERED", + asm.LDA(text_value['…'], asm.IMM8), # load the normal icon + "RETURN", + asm.STA(0x2180, asm.ABS), # add to string -- displaced code + asm.RTL(), + ] + + space = Write(Bank.F0, src, "add esper learned icon") + add_icon = space.start_address_snes + + space = Reserve(0x3553f, 0x35543, "set icon for mastered espers", asm.NOP()) + space.write( + asm.JSL(add_icon), + ) + + def equipable_mod(espers): from data.characters import Characters diff --git a/data/event_bit.py b/data/event_bit.py index f260ad63..fabd1a23 100644 --- a/data/event_bit.py +++ b/data/event_bit.py @@ -206,6 +206,7 @@ DISABLE_SPRINT = 0x1c1 DISABLE_MENU_ACCESS = 0x1c2 TEMP_SONG_OVERRIDE = 0x1cc +CONTINUE_MUSIC_DURING_BATTLE = 0x2bc ENABLE_Y_PARTY_SWITCHING = 0x1ce ALWAYS_CLEAR = 0x176 # this event_bit is always clear, used for branching diff --git a/data/item.py b/data/item.py index 578f4048..7c0b5445 100644 --- a/data/item.py +++ b/data/item.py @@ -11,12 +11,13 @@ class Item(): ITEM_TYPE_COUNT = 7 TOOL, WEAPON, ARMOR, SHIELD, HELMET, RELIC, ITEM = range(ITEM_TYPE_COUNT) - def __init__(self, id, rom): + def __init__(self, id, rom, desc_data): self.rom = rom self.id = id self.name_addr = self.NAMES_START_ADDR + self.id * self.NAME_LENGTH self.data_addr = self.DATA_START_ADDR + self.id * self.DATA_SIZE + self.desc_data = desc_data self.read() @@ -42,6 +43,9 @@ def remove_learnable_spell(self): self.learnable_spell = 0 self.learnable_spell_rate = 0 + def get_desc_data(self): + return text.get_bytes(self.desc, text.TEXT2) + def scale_price(self, factor): self.price = int(self.price * factor) self.price = max(min(self.price, 2**16 - 1), 0) @@ -50,6 +54,7 @@ def read(self): name_bytes = self.rom.get_bytes(self.name_addr, self.NAME_LENGTH) self.icon = value_text[name_bytes[0]] self.name = text.get_string(name_bytes[1:], text.TEXT2).rstrip('\0') + self.desc = text.get_string(self.desc_data, text.TEXT2).rstrip('\0') data = self.rom.get_bytes(self.data_addr, self.DATA_SIZE) self.type = data[0] & 0x07 diff --git a/data/items.py b/data/items.py index 06c5270d..172295b6 100644 --- a/data/items.py +++ b/data/items.py @@ -1,10 +1,12 @@ import args, random from data.item import Item +from data.structures import DataList from constants.items import good_items from constants.items import id_name, name_id import data.items_asm as items_asm +import data.text as text class Items(): ITEM_COUNT = 256 @@ -13,6 +15,12 @@ class Items(): BREAKABLE_RODS = range(53, 59) ELEMENTAL_SHIELDS = range(96, 99) + DESC_PTRS_START = 0x2d7aa0 + DESC_PTRS_END = 0x2d7c9f + + DESC_START = 0x2d6400 + DESC_END = 0x2d779f + GOOD = [name_id[name] for name in good_items] if args.stronger_atma_weapon: GOOD.append(name_id["Atma Weapon"]) @@ -29,6 +37,10 @@ def __init__(self, rom, args, dialogs, characters): self.dialogs = dialogs self.characters = characters + self.desc_data = DataList(self.rom, self.DESC_PTRS_START, self.DESC_PTRS_END, + self.rom.SHORT_PTR_SIZE, self.DESC_START, + self.DESC_START, self.DESC_END) + self.read() def read(self): @@ -37,7 +49,7 @@ def read(self): Item.SHIELD : [], Item.HELMET : [], Item.RELIC : [], Item.ITEM : []} for item_index in range(self.ITEM_COUNT): - item = Item(item_index, self.rom) + item = Item(item_index, self.rom, self.desc_data[item_index]) self.items.append(item) @@ -264,6 +276,8 @@ def mod(self): def write(self): for item in self.items: item.write() + self.desc_data[item.id] = item.get_desc_data() + self.desc_data.write() def get_id(self, name): return name_id[name] diff --git a/data/lores.py b/data/lores.py index a9054f49..c4cfa602 100644 --- a/data/lores.py +++ b/data/lores.py @@ -15,7 +15,7 @@ class Lores: INITIAL_LORES_END = 0x26f566 NAMES_START = 0x26f9fd - NAMES_END = 0x26fb65 + NAMES_END = 0x26faec # https://discord.com/channels/666661907628949504/931737764205047858/1069100781216739328 NAME_SIZE = 10 DESC_PTRS_START = 0x2d7a70 @@ -213,10 +213,50 @@ def random_lx_levels(self, dialogs): battle_message = re.sub('', '“', lore.desc) dialogs.set_battle_message_text(self.DIALOG_OFFSET + lore_index, battle_message) + def show_mp_mod(self): + # Show Party member MP in menus if they have Lore, even if they don't know any Magic + # Thanks to Lenophis for most of this work: https://discord.com/channels/666661907628949504/931737764205047858/1054557544942673940 + src = [ + asm.JSR(0x30d2b, asm.ABS), # check to see if this character knows magic; this is displaced code + asm.BCS("magic_exit"), + # if we are at this point, we have a magic command but no magic. + # so now we are going to do a back-up check and see if a secondary command is present so MP can be shown + # if not, it will be grayed out as normal + asm.LDY(0x67, asm.DIR), # this gets set earlier in our route. Let's pull this character's index again for our back-up check + asm.LDX(0x0000, asm.IMM16), + "command_loop", + asm.LDA(0x0016, asm.ABS_Y), + asm.CMP(0x0C, asm.IMM8), # Lore + asm.BEQ("command_ok"), + asm.INY(), + asm.INX(), + asm.CPX(0x0004, asm.IMM16), # have we done 4 commands yet? + asm.BNE("command_loop"), # branch if not + # if we have exited the loop with no match, we need to flag MP to not show up + asm.CLC(), + asm.RTS(), + "command_ok", + # at this point, we have matched supplemental command, so let's flag MP as ok to show up + asm.SEC(), + "magic_exit", + asm.RTS(), + ] + space = Write(Bank.C3, src, "check for Lore") + mp_hook = space.start_address + space = Reserve(0x30cb7, 0x30cb9, "check for magic command") + space.write( + asm.JSR(mp_hook, asm.ABS), + ) + space = Reserve(0x36134, 0x36136, "check for magic command 2") + space.write( + asm.JSR(mp_hook, asm.ABS), + ) + def mod(self, dialogs): self.write_learners_table() self.write_is_learner() self.after_battle_check_mod() + self.show_mp_mod() if self.args.start_lores_random: self.start_random_lores() diff --git a/data/map_event.py b/data/map_event.py index b9edb8f4..03497295 100644 --- a/data/map_event.py +++ b/data/map_event.py @@ -28,3 +28,43 @@ def to_data(self): def print(self): print("{}, {}: {}".format(self.x, self.y, hex(self.event_address))) + + +class LongMapEvent(): + # By analogy to LongMapExit() + DATA_SIZE = 0x06 + + def __init__(self): + self.x = 0 + self.y = 0 + self.size = 0 + self.direction = 0 + self.event_address = 0 + + def from_data(self, data): + assert(len(data) == self.DATA_SIZE) + + self.x = data[0] + self.y = data[1] + + self.event_address = data[2] | (data[3] << 8) | (data[4] << 16) + + self.size = data[5] & 0x7f # tile length + self.direction = data[5] & 0x80 # 0 = horizontal, 128 = vertical + + def to_data(self): + data = [0x00] * self.DATA_SIZE + + data[0] = self.x + data[1] = self.y + + data[2] = self.event_address & 0xff + data[3] = (self.event_address & 0xff00) >> 8 + data[4] = (self.event_address & 0xff0000) >> 16 + + data[5] = self.size | self.direction + + return data + + def print(self): + print("{}, {}, {}, {}: {}".format(self.x, self.y, self.size, self.direction, hex(self.event_address))) diff --git a/data/map_events.py b/data/map_events.py index 39e95112..1012d460 100644 --- a/data/map_events.py +++ b/data/map_events.py @@ -1,6 +1,7 @@ -from data.map_event import MapEvent +from data.map_event import MapEvent, LongMapEvent +from event.event import * -class MapEvents(): +class MapEvents: EVENT_COUNT = 1164 DATA_START_ADDR = 0x040342 @@ -53,3 +54,213 @@ def print_range(self, start, count): def print(self): for event in self.events: event.print() + + +class LongMapEvents: + EVENT_COUNT = 0 + POINTER_START_ADDR_LONG = 0x320000 # Bank $F2. Set dynamically? + DATA_START_ADDR_LONG = 0x320342 + verbose = False + + def __init__(self, rom): + self.rom = rom + self.read() + + # Modify the ROM to add long events + self.addLongEvents() + + def read(self): + # by default, no LongMapEvents in the rom + self.events = [] + + for event_index in range(self.EVENT_COUNT): + event_data_start = self.DATA_START_ADDR_LONG + event_index * LongMapEvent.DATA_SIZE + event_data = self.rom.get_bytes(event_data_start, LongMapEvent.DATA_SIZE) + + new_event = LongMapEvent() + new_event.from_data(event_data) + self.events.append(new_event) + + def write(self): + for event_index, event in enumerate(self.events): + event_data = event.to_data() + event_data_start = self.DATA_START_ADDR_LONG + event_index * LongMapEvent.DATA_SIZE + self.rom.set_bytes(event_data_start, event_data) + + def mod(self): + pass + + def get_event(self, search_start, search_end, x, y): + for event in self.events[search_start:search_end + 1]: + if event.x == x and event.y == y: + return event + raise IndexError(f"get_event: could not find event at {x} {y}") + + def add_event(self, index, new_event): + self.events.insert(index, new_event) + self.EVENT_COUNT += 1 + + def delete_event(self, search_start, search_end, x, y): + for event in self.events[search_start:search_end + 1]: + if event.x == x and event.y == y: + self.events.remove(event) + self.EVENT_COUNT -= 1 + return + raise IndexError("delete_event: could not find event at {x} {y}") + + def print_range(self, start, count): + for offset in range(count): + self.events[start + offset].print() + + def print(self): + for event in self.events: + event.print() + + def addLongEvents(self): + # Modify the ROM to check for long events in the field program & include long event pointers + # (Following Lenophis' code implementing long events, the event equivalent of long exits) + ROM_OFFSET = 0xC00000 + + # long event triggers + src = [ + # CHECK IF THERE IS A LONG EVENT ON THIS MAP + asm.LDA(0x82, asm.DIR), # C08C7B: LDA $82 [A5 82] + asm.ASL(), # C08C7D: ASL A [0A] + asm.TAX(), # C08C7E: TAX [AA] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 2, asm.LNG_X), + # C08C7F: LDA $F40002, X; load second pointer [BF XX XX XX] + asm.STA(0x1e, asm.DIR), # C08C83: STA $1E [85 1E] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET, asm.LNG_X), + # C08C85: LDA $F40000, X; load first pointer [BF XX XX XX] + asm.TAX(), # C08C89: TAX; put first pointer address in X [AA] + asm.CMP(0x1e, asm.DIR), # C08C8A: CMP $1E [C5 1E] + asm.BEQ("DO_NORMAL_TRIGGERS"), # C08C8C: BEQ C08CE8; branch if they do match, we don't have a trigger in this map + # Jump forward 0x5a lines? Check this. [F0 5A] + + # FOUND A LONG EVENT TRIGGER ON THE MAP. CHECK VERTICAL OR HORIZONTAL. + "ITERATE_LONG_EVENT", # ASM label for checking each long event + asm.TDC(), # C08C8E: TDC [7B] + asm.SEP(0x20), # C08C8F: SEP # $20 [E2 20] + asm.STZ(0x26, asm.DIR), # C08C91: STZ $26 [64 26] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 5, asm.LNG_X), + # C08C93: LDA $F40002, X; load trigger's length [BF XX XX XX] + # NOTE: the trigger horiz/vert value is the 5th bit + # (to maintain similarity to normal events) + asm.BMI("IS_VERTICAL_EVENT"), # C08C97: BMI C08CBB; branch if vertical [30 22] + + + # HORIZONTAL TRIGGER CASE + asm.STA(0x1a, asm.DIR), # C08C99: STA $1A [85 1A] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 1, asm.LNG_X), + # C08C9B: LDA $F40001, X; load trigger's Y coordinate [BF XX XX XX] + asm.CMP(0xb0, asm.DIR), # C08C9F: CMP $B0; compare to current Y position [C5 B0] + asm.BNE("SKIP_THIS_EVENT"), # C08CA1: BNE C08CDD; if they don't match, check the next trigger [D0 3A] + asm.LDA(0xaf, asm.DIR), # C08CA3: LDA $AF; load current X position [A5 AF] + asm.SEC(), # C08CA5: SEC (set carry flag) [38] + asm.SBC(self.POINTER_START_ADDR_LONG + ROM_OFFSET, asm.LNG_X), + # C08CA6: SBC $F40000, X; subtract trigger's X coordinate [FF XX XX XX] + asm.BCC("SKIP_THIS_EVENT"), # C08CAA: BCC C08CDD (branch if carry clear) [90 31] + asm.STA(0x26, asm.DIR), # C08CAC: STA $26 [85 26] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET, asm.LNG_X), + # C08CAE: LDA $F40000, X; load trigger's X coordinate [BF XX XX XX] + asm.CLC(), # C08CB2: CLC (clear carry flag) [18] + asm.ADC(0x1a, asm.DIR), # C08CB3: ADC $1A; add in length [65 1A] + asm.CMP(0xaf, asm.DIR), # C08CB5: CMP $AF; compare to current X position [C5 AF] + asm.BCS("TRIGGER_LONG_EVENT"), # C08CB7: BCS C08CEC; trigger the event (branch if carry set) [B0 33] + asm.BRA("SKIP_THIS_EVENT"), # C08CB9: BRA C08CDD (branch always) [80 22] + + # VERTICAL LONG EVENT TRIGGER CHECK + "IS_VERTICAL_EVENT", # ASM label for vertical event + asm.AND(0x7f, asm.IMM8), # C08CBB: AND # $7F ; remove vertical flag [29 7F] + asm.STA(0x1a, asm.DIR), # C08CBD: STA $1A [85 1A] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET, asm.LNG_X), + # C08CBF: LDA $F40000, X; load trigger's X coordinate [BF XX XX XX] + asm.CMP(0xaf, asm.DIR), # C08CC3: CMP $AF; compare to current X position [C5 AF] + asm.BNE("SKIP_THIS_EVENT"), # C08CC5: BNE C08CDD (branch if not equal) [D0 16] + asm.LDA(0xb0, asm.DIR), # C08CC7: LDA $B0 [A5 B0] + asm.SEC(), # C08CC9: SEC [38] + asm.SBC(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 1, asm.LNG_X), + # C08CCA: SBC $F40001, X; subtract trigger's Y coordinate [FF XX XX XX] + asm.BCC("SKIP_THIS_EVENT"), # C08CCE: BCC C08CDD (branch if carry clear) [90 0D] + asm.STA(0x26, asm.DIR), # C08CD0: STA $26 [85 26] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 1, asm.LNG_X), + # C08CD2: LDA $F40001, X; load trigger's Y coordinate [BF XX XX XX] + asm.CLC(), # C08CD6: CLC [18] + asm.ADC(0x1a, asm.DIR), # C08CD7: ADC $1A; add in length [65 1A] + asm.CMP(0xb0, asm.DIR), # C08CD9: CMP $B0; compare to current Y position? [C5 B0] + asm.BCS("TRIGGER_LONG_EVENT"), # C08CDB: BCS C08CEC; trigger the event (branch if carry set) [B0 0F] + + # ITERATE TO NEXT TRIGGER + "SKIP_THIS_EVENT", # ASM label for moving on to the next trigger + asm.REP(0x21), # C08CDD: REP # $21 (reset status bit) [C2 21] + asm.TXA(), # C08CDF: TXA (transfer X to A) [8A] + asm.ADC(0x0006, asm.IMM16), # C08CE0: ADC # $0006 (add with carry) [69 06 00] + asm.TAX(), # C08CE3: TAX (transfer A to X) [AA] + asm.CPX(0x1e, asm.DIR), # C08CE4: CPX $1E (compare X) [E4 1E] + asm.BNE("ITERATE_LONG_EVENT"), # C08CE6: BNE C08C8E [D0 A6] + + # MOVE ON TO NORMAL TRIGGERS + "DO_NORMAL_TRIGGERS", # ASM label for moving on to normal triggers + asm.LDA(0x82, asm.DIR), # C08CE8: LDA $82; otherwise let's do normal event triggers [A5 82] + asm.ASL(), # C08CEA: ASL A [0A] + asm.RTS(), # C08CEB: RTS [60] + + # TRIGGER THE EVENT: see e.g. C0/BCD3 for normal events. + "TRIGGER_LONG_EVENT", # ASM label for triggering long event + asm.REP(0x20), # C08CEC: REP # $20 ; (reset status bits) [C2 20] + # 'we must copy the whole address, not just the first byte :P' + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 2, asm.LNG_X), + # C08CEE: LDA $F40003, X; lower 2 bytes of trigger address [BF XX XX XX] + # Data structure: [x, y, trig_lo, trig_mid, trig_hi, d&size] + # (Lenophis used: [x, y, d&size, trigger]) + asm.STA(0xe5, asm.DIR), # C08CF2: STA $E5 (store A to memory) [85 E5] + asm.STA(0x05f4, asm.ABS), # C08CF4: STA $05F4 [8D F4 05] + asm.SEP(0x20), # C08CF7: SEP # $20 (set status bit 0x20) [E2 20] + asm.TDC(), # C08CF9: TDC (Transfer DP to 16 bit A) [7B] + asm.STA(0x0871, asm.ABS_Y), # C08CFA: STA $0871, Y (store A to mem, indexed by Y) [99 71 08] + asm.STA(0x0873, asm.ABS_Y), # C08CFD: STA $0873, Y [99 73 08] + asm.SEP(0x20), # C08D00: SEP # $20 [E2 20] + asm.STA(0x087E, asm.ABS_Y), # C08D02: STA $087E, Y [99 7E 08] + asm.LDA(0x01, asm.IMM8), # C08D05: LDA # $01 [A9 01] + asm.STA(0x078e, asm.ABS), # C08D07: STA $078E [8D 8E 07] + asm.STA(0x05c7, asm.ABS), # C08D0A: STA $05C7 [8D C7 05] + asm.LDA(self.POINTER_START_ADDR_LONG + ROM_OFFSET + 4, asm.LNG_X), + # C08D0D: LDA $F40005, X; load high byte of trigger address [BF XX XX XX] + # Data structure: [x, y, trig_lo, trig_mid, trig_hi, d&size] + asm.CLC(), # C08D11: CLC [18] + # # C08D12:; JMP C0ED8E I think we can skip this? + asm.ADC(0xca, asm.IMM8), # C0ED8E: ADC # $CA [69 CA] + asm.STA(0xe7, asm.DIR), # C0ED90: STA $E7 [85 E7] + asm.STA(0x05f6, asm.ABS), # C0ED92: STA $05F6 [8D F6 05] + asm.LDX(0x00, asm.DIR), # C0ED95: LDX $00 [A6 00] + # Note: standard event code uses LDX(0x0000, 'IMM16') [A2 00 00] + asm.STX(0x0594, asm.ABS), # C0ED97: STX $0594 [8E 94 05] + asm.LDA(0xca, asm.IMM8), # C0ED9A: LDA # $CA [A9 CA] + asm.STA(0x0596, asm.ABS), # C0ED9C: STA $0596 [8D 96 05] + # Note: Lenophis skips "LDA #$01, STA $05C7" (see C0/BD06) + # This is an efficiency, it's accomplished on line C08D0A. + asm.LDX(0x0003, asm.IMM16), # C0ED9F: LDX # $0003 [A2 03 00] + asm.STX(0xe8, asm.DIR), # C0EDA2: STX $E8 [86 E8] + asm.LDA(0x087c, asm.ABS_Y), # C0EDA4: LDA $087C, Y [B9 7C 08] + asm.STA(0x087d, asm.ABS_Y), # C0EDA7: STA $087D, Y [99 7D 08] + asm.LDA(0x04, asm.IMM8), # C0EDAA: LDA # $04 [A9 04] + asm.STA(0x087c, asm.ABS_Y), # C0EDAC: STA $087C, Y [99 7C 08] + asm.JSR(0x7e08, asm.ABS), # C0EDAF: JSR $7E08 (jump to subroutine) [20 08 7E] + asm.JSR(0x2fed, asm.ABS), # C0EDB2: JSR $2FED [20 ED 2F] + + asm.REP(0x20), # C0EDB5: REP # $20 [C2 20] + asm.BRA("DO_NORMAL_TRIGGERS") # C0EDB7: BRA C08CE8; do normal event triggers now [80 AB] + ] + + space = Write(Bank.C0, src, "Long event program code") + + hook = Reserve(0x0bcaa, 0x0bcac, "Hook for long event program code", field.NOP()) + hook.write( + asm.JSR(space.start_address, asm.ABS) + ) + + pointspace = Reserve(self.POINTER_START_ADDR_LONG, self.DATA_START_ADDR_LONG, 'Long Event Pointers', 0x0) + + if self.verbose: + print('Added long event program at: ' + str(hex(space.start_address)) + ' -- ', str(hex(space.end_address)) ) + diff --git a/data/maps.py b/data/maps.py index 064797a1..216312cf 100644 --- a/data/maps.py +++ b/data/maps.py @@ -6,7 +6,7 @@ from data.chests import Chests import data.map_events as events -from data.map_event import MapEvent +from data.map_event import MapEvent, LongMapEvent import data.map_exits as exits from data.map_exit import ShortMapExit, LongMapExit @@ -18,6 +18,7 @@ class Maps(): MAP_COUNT = 416 EVENT_PTR_START = 0x40000 + LONG_EVENT_PTR_START = events.LongMapEvents.POINTER_START_ADDR_LONG ENTRANCE_EVENTS_START_ADDR = 0x11fa00 SHORT_EXIT_PTR_START = 0x1fbb00 @@ -32,6 +33,7 @@ def __init__(self, rom, args, items): self.npcs = npcs.NPCs(rom) self.chests = Chests(self.rom, self.args, items) self.events = events.MapEvents(rom) + self.long_events = events.LongMapEvents(rom) self.exits = exits.MapExits(rom) self.world_map_event_modifications = world_map_event_modifications.WorldMapEventModifications(rom) self.world_map = WorldMap(rom, args) @@ -56,6 +58,10 @@ def read(self): events_ptr = self.rom.get_bytes(events_ptr_address, self.rom.SHORT_PTR_SIZE) self.maps[map_index]["events_ptr"] = events_ptr[0] | (events_ptr[1] << 8) + # LONG EVENTS INITIALIZATION: Vanilla code has no long events. + # Set initial offset to the vanilla value for each map. + self.maps[map_index]["long_events_ptr"] = self.maps[0]["events_ptr"] + short_exit_ptr_address = self.SHORT_EXIT_PTR_START + map_index * self.rom.SHORT_PTR_SIZE short_exit_ptr = self.rom.get_bytes(short_exit_ptr_address, self.rom.SHORT_PTR_SIZE) self.maps[map_index]["short_exits_ptr"] = short_exit_ptr[0] | (short_exit_ptr[1] << 8) @@ -137,6 +143,41 @@ def delete_event(self, map_id, x, y): last_event_id = first_event_id + self.get_event_count(map_id) self.events.delete_event(first_event_id, last_event_id, x, y) + ### LONG EVENTS ### + def get_long_event_count(self, map_id): + return (self.maps[map_id + 1]["long_events_ptr"] - self.maps[map_id][ + "long_events_ptr"]) // LongMapEvent.DATA_SIZE + + def print_long_events(self, map_id): + first_event_id = (self.maps[map_id]["long_events_ptr"] - self.maps[0][ + "long_events_ptr"]) // LongMapEvent.DATA_SIZE + + self.long_events.print_range(first_event_id, self.get_event_count(map_id)) + + def get_long_event(self, map_id, x, y): + first_event_id = (self.maps[map_id]["long_events_ptr"] - self.maps[0][ + "long_events_ptr"]) // LongMapEvent.DATA_SIZE + last_event_id = first_event_id + self.get_event_count(map_id) + return self.long_events.get_event(first_event_id, last_event_id, x, y) + + def add_long_event(self, map_id, new_event): + for map_index in range(map_id + 1, self.MAP_COUNT): + self.maps[map_index]["long_events_ptr"] += LongMapEvent.DATA_SIZE + + event_id = (self.maps[map_id]["long_events_ptr"] - self.maps[0][ + "long_events_ptr"]) // LongMapEvent.DATA_SIZE + self.long_events.add_event(event_id, new_event) + + def delete_long_event(self, map_id, x, y): + for map_index in range(map_id + 1, self.MAP_COUNT): + self.maps[map_index]["long_events_ptr"] -= LongMapEvent.DATA_SIZE + + first_event_id = (self.maps[map_id]["long_events_ptr"] - self.maps[0][ + "long_events_ptr"]) // LongMapEvent.DATA_SIZE + last_event_id = first_event_id + self.get_event_count(map_id) + self.long_events.delete_event(first_event_id, last_event_id, x, y) + ### LONG EVENTS ### + def get_short_exit_count(self, map_id): return (self.maps[map_id + 1]["short_exits_ptr"] - self.maps[map_id]["short_exits_ptr"]) // ShortMapExit.DATA_SIZE @@ -188,17 +229,54 @@ def _fix_imperial_camp_boxes(self): compressed = compress(decompressed) self.rom.set_bytes(tilemaps_start + tilemap_addr, compressed) + def _fix_Cid_timer_glitch(self): + from memory.space import Bank, Write + import instruction.field as field + from event.event import EVENT_CODE_START + # If you start Cid's timer and then leave, the timer can affect event tile, NPC and objective triggering + # Write some LongMapEvents to turn off the Cid timer when exiting to the world map. + HORIZ = 0 + VERT = 128 + + # LONG EVENT #1: play the lore sound effect on some horizontal tiles on the Blackjack + src = [ + field.BranchIfEventBitSet(0x1b5, "SetBit"), + field.ResetTimer(0), + field.SetEventBit(0x1b5), + "SetBit", + field.Return(), + ] + space = Write(Bank.CC, src, 'Reset Cid event timer') + + map_id = 0x18c # Cid's Island, Outside + + new_event_data = [(16, 1, 14, VERT), (15, 1, 14, VERT), # (x, y, length, direction) + (0, 1, 14, VERT), (1, 1, 14, VERT), # Include 2 layers to make sure it doesn't get skipped + (0, 1, 3, HORIZ), (0, 2, 3, HORIZ), + (7, 0, 2, HORIZ), (7, 1, 2, HORIZ), + (12, 1, 3, HORIZ), (12, 2, 3, HORIZ)] + for i in range(len(new_event_data)): + new_le = LongMapEvent() + new_le.x = new_event_data[i][0] + new_le.y = new_event_data[i][1] + new_le.size = new_event_data[i][2] + new_le.direction = new_event_data[i][3] + new_le.event_address = space.start_address - EVENT_CODE_START + self.add_long_event(map_id, new_le) + def mod(self, characters): self.npcs.mod(characters) self.chests.mod() self.world_map.mod() self._fix_imperial_camp_boxes() + self._fix_Cid_timer_glitch() def write(self): self.npcs.write() self.chests.write() self.events.write() + self.long_events.write() self.exits.write() self.world_map_event_modifications.write() @@ -218,6 +296,13 @@ def write(self): events_ptr_bytes[1] = (cur_map["events_ptr"] & 0xff00) >> 8 self.rom.set_bytes(events_ptr_start, events_ptr_bytes) + # LONG EVENTS + long_events_ptr_start = self.LONG_EVENT_PTR_START + cur_map["id"] * self.rom.SHORT_PTR_SIZE + long_events_ptr_bytes = [0x00] * self.rom.SHORT_PTR_SIZE + long_events_ptr_bytes[0] = cur_map["long_events_ptr"] & 0xff + long_events_ptr_bytes[1] = (cur_map["long_events_ptr"] & 0xff00) >> 8 + self.rom.set_bytes(long_events_ptr_start, long_events_ptr_bytes) + short_exits_ptr_start = self.SHORT_EXIT_PTR_START + cur_map["id"] * self.rom.SHORT_PTR_SIZE short_exits_bytes = [0x00] * self.rom.SHORT_PTR_SIZE short_exits_bytes[0] = cur_map["short_exits_ptr"] & 0xff diff --git a/data/spells.py b/data/spells.py index b6071edf..ad82b430 100644 --- a/data/spells.py +++ b/data/spells.py @@ -2,6 +2,7 @@ from data.spell_names import id_name, name_id from data.ability_data import AbilityData from data.structures import DataArray +from memory.space import Reserve class Spells: BLACK_MAGIC_COUNT = 24 @@ -95,6 +96,11 @@ def random_mp_percent(self): value = int(spell.mp * mp_percent) spell.mp = max(min(value, 254), 0) + def alternate_healing_text_color(self): + #Thanks to Osteoclave for identifying this change + space = Reserve(0x02c693, 0x02c694, "alternate healing color") + space.write(0x44, 0x7f) #default: F6 4B + def mod(self): if self.args.magic_mp_shuffle: self.shuffle_mp() @@ -113,6 +119,10 @@ def mod(self): if self.args.ultima_254_mp: self.ultima_254_mp() + # Graphical changes to spells + if self.args.alternate_healing_text_color: + self.alternate_healing_text_color() + def write(self): if self.args.spoiler_log: self.log() diff --git a/event/auction_house.py b/event/auction_house.py index 82fc0a53..f3fb34e0 100644 --- a/event/auction_house.py +++ b/event/auction_house.py @@ -44,12 +44,16 @@ def name(self): return "Auction House" def init_rewards(self): - if self.args.no_free_characters_espers: + # determine reward possibilities based on flags (reward1 = 10K, reward2 = 20K) + if self.args.no_free_characters_espers or self.args.auction_max_espers == 0: self.reward1 = self.add_reward(RewardType.ITEM) self.reward2 = self.add_reward(RewardType.ITEM) else: - self.reward1 = self.add_reward(RewardType.ESPER | RewardType.ITEM) self.reward2 = self.add_reward(RewardType.ESPER | RewardType.ITEM) + if self.args.auction_max_espers == 1: + self.reward1 = self.add_reward(RewardType.ITEM) + else: #auction_max_espers == 2: + self.reward1 = self.add_reward(RewardType.ESPER | RewardType.ITEM) def mod(self): self.requirements_mod() @@ -118,9 +122,9 @@ def mod(self): def get_reward_announce_dialog(self, name, start_price, item): if item: - reward_dialog = '“' + name + '“!' + reward_dialog = '“' + name + 'â€!' #https://discord.com/channels/666661907628949504/666811452350398493/1085018091844554832 else: - reward_dialog = 'The Magicite, “' + name + '“!' + reward_dialog = 'The Magicite, “' + name + 'â€!' # keep auctioneer dialog somewhat centered with new esper/item names # looks like about 32 characters on a line (32 is just an estimate, it is not monospace) diff --git a/event/baren_falls.py b/event/baren_falls.py index ebafea06..5d2cd5f6 100644 --- a/event/baren_falls.py +++ b/event/baren_falls.py @@ -101,7 +101,16 @@ def already_complete_mod(self): field.Branch(exit_function), ) + def character_music_mod(self, character): + from music.song_utils import get_character_theme + + space = Reserve(0xbc0ff, 0xbc100, "Play Song Gau") + space.write([ + field.StartSong(get_character_theme(character)), + ]) + def character_mod(self, character): + self.character_music_mod(character) gau_npc_id = 0x10 gau_npc = self.maps.get_npc(0x09f, gau_npc_id) gau_npc.sprite = character diff --git a/event/ebots_rock.py b/event/ebots_rock.py index c0d0288b..72435a67 100644 --- a/event/ebots_rock.py +++ b/event/ebots_rock.py @@ -25,6 +25,8 @@ def mod(self): self.hidon_mod() self.hidon_battle_mod() + self.warp_to_chest_mod() + if self.reward.type == RewardType.CHARACTER: self.character_mod(self.reward.id) elif self.reward.type == RewardType.ESPER: @@ -195,3 +197,27 @@ def item_mod(self, item): field.AddItem(item), field.Dialog(self.items.get_receive_dialog(item)), ]) + + def warp_to_chest_mod(self): + # If the player has sufficient Coral, make teleports have only 3 locations: Boss, Save, and Exit + CORAL_EVENT_WORD = 0x07 + NORMAL_LOGIC_ADDR = 0xb6f0e # Normal Ebot's Cave branch logic location in ROM + GO_TO_CHEST_ADDR = 0xb6fb5 # The address in ROM of the event instruction to go to Chest + GO_TO_SAVE_ADDR = 0xb6fa3 # The address in ROM of the event instruction to go to Save point + GO_TO_EXIT_ADDR = 0xb6fac # the address in ROM of the event instruction to go to the exit + NUM_CORAL_ADDR = 0xb7109 # The address of the number of coral that the chest checks + num_coral = Read(NUM_CORAL_ADDR, NUM_CORAL_ADDR+1)[0] + + src = [ + field.BranchIfEventWordEqual(CORAL_EVENT_WORD, num_coral, NORMAL_LOGIC_ADDR), #coral count == 21, branch to regular logic + field.BranchIfEventWordLess(CORAL_EVENT_WORD, num_coral, NORMAL_LOGIC_ADDR), #coral count < 21, branch to regular logic + # else, we've > 21 + field.BranchRandomly(GO_TO_CHEST_ADDR), # 50% chance to go to chest + field.BranchRandomly(GO_TO_SAVE_ADDR), # 50% chance to go to save + field.Branch(GO_TO_EXIT_ADDR), # else, go to entrance + ] + space = Write(Bank.CB, src, "Coral check to branch") + check_coral = space.start_address + + space = Reserve(0xb6f01, 0xb6f04, "Call Ebot's Cave branch logic") + space.write(field.Call(check_coral)) \ No newline at end of file diff --git a/event/event.py b/event/event.py index 11f6ee13..ce27df83 100644 --- a/event/event.py +++ b/event/event.py @@ -60,6 +60,17 @@ def get_boss(self, original_boss_name, log_change = True): self.log_change(original_boss_name, boss_name) return pack_id + # return the boss in place of the given boss_name + # example + # get_replacement_formation("Goddess") + # if you fight Ultros in the Goddess location, return Ultros + def get_replacement_formation(self, boss_name): + from data.bosses import pack_name + replacement = self.get_boss(boss_name, False) + location_boss = pack_name[replacement] + formation_id = self.enemies.formations.get_id(location_boss) + return self.enemies.formations.formations[formation_id] + def log_reward(self, reward, prefix = "", suffix = ""): reward_string = prefix if reward.type == RewardType.CHARACTER: diff --git a/event/fanatics_tower.py b/event/fanatics_tower.py index 124992c0..9d786a53 100644 --- a/event/fanatics_tower.py +++ b/event/fanatics_tower.py @@ -142,7 +142,16 @@ def magimaster_battle_mod(self): field.InvokeBattle(boss_pack_id), ) + def character_music_mod(self, character): + from music.song_utils import get_character_theme + + space = Reserve(0xc5327, 0xc5328, "Play Song Relm") + space.write([ + field.StartSong(get_character_theme(character)), + ]) + def character_mod(self, character): + self.character_music_mod(character) self.strago_npc.sprite = character self.strago_npc.palette = self.characters.get_palette(character) diff --git a/event/figaro_castle_wor.py b/event/figaro_castle_wor.py index b0beeefb..672441ee 100644 --- a/event/figaro_castle_wor.py +++ b/event/figaro_castle_wor.py @@ -51,7 +51,10 @@ def mod(self): self.log_reward(self.reward) def add_gating_condition(self): - self.dialogs.set_text(2379, "SIGFRIED: Pretty dangerous from here on. Wait here.") + if self.args.npc_dialog_tips: + self.dialogs.set_text(2379, "I won't budge from this spot until you have recruited !") + else: + self.dialogs.set_text(2379, "SIGFRIED: Pretty dangerous from here on. Wait here.") space = Reserve(0xa7778, 0xa7781, "figaro cave siegfried enters", field.NOP()) space.write( diff --git a/event/gau_father_house.py b/event/gau_father_house.py index f1bb4ea6..90a68573 100644 --- a/event/gau_father_house.py +++ b/event/gau_father_house.py @@ -1,4 +1,5 @@ from event.event import * +from music.song_utils import get_character_theme class GauFatherHouse(Event): def name(self): @@ -58,7 +59,14 @@ def entrance_event_mod(self): field.Return(), ) + def character_music_mod(self, character): + space = Reserve(0xb0b78, 0xb0b79, "Play Song Shadow") + space.write([ + field.StartSong(get_character_theme(character)), + ]) + def character_mod(self, character): + self.character_music_mod(character) self.shadow_npc.sprite = character self.shadow_npc.palette = self.characters.get_palette(character) diff --git a/event/mobliz_wor.py b/event/mobliz_wor.py index d794ff8d..d2514e49 100644 --- a/event/mobliz_wor.py +++ b/event/mobliz_wor.py @@ -109,14 +109,31 @@ def character_mod(self, character): self.dialogs.set_text(2307, "You're not gonna take <" + char_default_name + "> away, are you?") self.dialogs.set_text(2315, "I'm not gonna cry.If I do, <" + char_default_name + ">'ll feel sad…") - space = Reserve(0xc4cca, 0xc4cd9, "mobliz wor add character to party before phunbaba 4 if room available", field.NOP()) - space.write( + src = [ # check for 4 party members in case phunbaba 3 was not the previous boss and no bababreath happened - field.BranchIfPartySize(4, space.end_address + 1), + field.BranchIfPartySize(4, "RETURN"), field.CreateEntity(character), field.AddCharacterToParty(character, 1), field.RefreshEntities(), + ] + if self.args.start_average_level: + src += [ + # Average character level via field command - example ref: CC/3A2C + field.AverageLevel(character), + field.RestoreHp(character, 0x7f), # restore all HP + field.RestoreMp(character, 0x7f), # restore all MP + ] + src += [ + "RETURN", + field.Return(), + ] + space = Write(Bank.CC, src, "character joins before Mobliz battle") + add_character = space.start_address + + space = Reserve(0xc4cca, 0xc4cd9, "mobliz wor add character to party before phunbaba 4 if room available", field.NOP()) + space.write( + field.Call(add_character), ) boss_pack_id = self.get_boss("Phunbaba 4") diff --git a/event/mt_kolts.py b/event/mt_kolts.py index cbaff87d..cd5cea9d 100644 --- a/event/mt_kolts.py +++ b/event/mt_kolts.py @@ -21,6 +21,7 @@ def mod(self): self.shadow_vargas_mod() self.vargas_battle_mod() self.entrance_exit_mod() + self.vargas_trigger_mod() if self.reward.type == RewardType.CHARACTER: self.character_mod(self.reward.id) @@ -139,6 +140,29 @@ def entrance_exit_mod(self): new_event.event_address = exit_move_airship - EVENT_CODE_START self.maps.add_event(0x64, new_event) + def vargas_trigger_mod(self): + # Vargas appears on the map 0x62 via 2 tile triggers. With B-Dash, players can outpace him leading to soft-locks. + # Change the 2 event tile triggers to a different location. + old_event = self.maps.get_event(0x62, 10, 32) # get existing event + + self.maps.delete_event(0x62, 10, 32) # vargas event tile (left) + self.maps.delete_event(0x62, 11, 32) # vargas event tile (right) + + from data.map_event import MapEvent + # add event tile to earlier on the path + new_event = MapEvent() + new_event.x = 21 + new_event.y = 19 + new_event.event_address = old_event.event_address + self.maps.add_event(0x62, new_event) + + # add event tile to bottom right of stairs + new_event = MapEvent() + new_event.x = 21 + new_event.y = 20 + new_event.event_address = old_event.event_address + self.maps.add_event(0x62, new_event) + def character_mod(self, character): boss_pack_id = self.get_boss("Vargas") diff --git a/event/mt_zozo.py b/event/mt_zozo.py index fdbdc6fb..6b43c0b8 100644 --- a/event/mt_zozo.py +++ b/event/mt_zozo.py @@ -111,9 +111,20 @@ def letter_mod(self, char_name = ""): letter_text = "Dear Lola,I am writing to beg for your forgiveness. I am guilty of perpetuating a terrible lie…I have only now realized the error of my ways. I hope I can correct a great wrong.Your boyfriend, who you thought was in Mobliz, passed away some time ago. I have been writing in his stead…We humans tend to allow the past to destroy our lives.I implore you not to let this happen.It is time to look forward, to rediscover love, and embrace the beauty of life.You have so much of life left to live…" if char_name != "": letter_text += "< ><" + char_name + ">" + else: #https://discord.com/channels/666661907628949504/666811452350398493/1086426370910994493 + letter_text += "" self.dialogs.set_text(2568, letter_text) + def character_music_mod(self, character): + from music.song_utils import get_character_theme + + space = Reserve(0xc4007, 0xc4008, "Play Song Cyan") + space.write([ + field.StartSong(get_character_theme(character)), + ]) + def character_mod(self, character): + self.character_music_mod(character) self.cliff_cyan_npc.sprite = character self.cliff_cyan_npc.palette = self.characters.get_palette(character) diff --git a/event/narshe_moogle_defense.py b/event/narshe_moogle_defense.py index 70a1c2bb..e291385a 100644 --- a/event/narshe_moogle_defense.py +++ b/event/narshe_moogle_defense.py @@ -67,7 +67,7 @@ def _add_moogle_to_party_src(self, party_idx): field.SetPalette(character_idx, self.characters.get_palette(self.characters.MOG)), # Give it the name and properties of the moogle field.SetName(character_idx, moogle_id), - field.SetProperties(character_idx, moogle_id), + field.SetEquipmentAndCommands(character_idx, moogle_id), ] if self.args.start_average_level: src += [ @@ -457,7 +457,7 @@ def after_battle_mod(self, reward_instructions): field.SetSprite(character_idx, self.characters.get_sprite(character_idx)), field.SetPalette(character_idx, self.characters.get_palette(character_idx)), field.SetName(character_idx, character_idx), - field.SetProperties(character_idx, character_idx), + field.SetEquipmentAndCommands(character_idx, character_idx), f"SKIP_{character_idx}", ] src += [ @@ -497,7 +497,7 @@ def character_mod(self, character): field.SetSprite(character, self.characters.get_sprite(character)), field.SetPalette(character, self.characters.get_palette(character)), field.SetName(character, character), - field.SetProperties(character, character), + field.SetEquipmentAndCommands(character, character), field.RemoveStatusEffects(character, field.Status.FLOAT | field.Status.DARKNESS | field.Status.ZOMBIE | field.Status.POISON | field.Status.VANISH | field.Status.IMP | field.Status.PETRIFY | field.Status.DEATH), field.RemoveDeath(character), # added due to permadeath situations to make sure the corresponding party member is alive field.RestoreHp(character, 0x7f), # restore all HP @@ -506,8 +506,12 @@ def character_mod(self, character): ]) def esper_item_mod(self, esper_item_instructions): - #Using thematic Moogle sprite for Esper/Items - esper_item_sprite = self.characters.get_sprite(self.characters.MOG) + if self.args.character_gating: + #Using thematic Moogle sprite for Esper/Items + esper_item_sprite = self.characters.get_sprite(self.characters.MOG) + else: + # Open world -- use standard sprites + esper_item_sprite = self.characters.get_random_esper_item_sprite() self.terra_npc.sprite = esper_item_sprite self.terra_npc.palette = self.characters.get_palette(self.terra_npc.sprite) self.terra_collapsed_npc.sprite = esper_item_sprite diff --git a/event/narshe_wor.py b/event/narshe_wor.py index ce54f84d..25d36b6a 100644 --- a/event/narshe_wor.py +++ b/event/narshe_wor.py @@ -222,6 +222,7 @@ def weapon_shop_item_mod(self, item): ]) def cursed_shield_mod(self): + self.dialogs.set_text(919, f"G'ho! Everyone knows that these days, curses only last for {self.items.cursed_shield_battles} battles.") self.dialogs.set_text(1523, f"“Cursed Shldâ€â€¦{self.items.cursed_shield_battles}") if not self.args.cursed_shield_battles_original: self.log_change("Cursed Shield 256", self.items.cursed_shield_battles) diff --git a/event/opera_house_wob.py b/event/opera_house_wob.py index 326655b7..109a556c 100644 --- a/event/opera_house_wob.py +++ b/event/opera_house_wob.py @@ -1,3 +1,4 @@ +from constants.entities import SETZER from event.event import * class OperaHouseWOB(Event): @@ -55,10 +56,13 @@ def mod(self): if self.reward.type == RewardType.CHARACTER: self.character_mod(self.reward.id) + self.character_music_mod(self.reward.id) elif self.reward.type == RewardType.ESPER: self.esper_mod(self.reward.id) + self.character_music_mod(SETZER) elif self.reward.type == RewardType.ITEM: self.item_mod(self.reward.id) + self.character_music_mod(SETZER) self.log_reward(self.reward) @@ -254,7 +258,9 @@ def ultros_battle_mod(self): space.write( # game over if die to ultros instead of getting more chances # use the original game over so party is not refreshed (otherwise their stage positions are broken) + field.SetEventBit(event_bit.CONTINUE_MUSIC_DURING_BATTLE), field.InvokeBattle(boss_pack_id, check_game_over = False), + field.ClearEventBit(event_bit.CONTINUE_MUSIC_DURING_BATTLE), field.Call(field.ORIGINAL_CHECK_GAME_OVER), ) @@ -276,8 +282,10 @@ def after_battle_mod(self): # hide party leader to prevent possible conflict between celes being party leader and the person on stage at # the same time. also hide party leader when other npcs are hidden by shifting [0xcac16c, 0xcac26c] down # a few memory spaces into previous "what a performance!!" dialog code to make room for hiding party leader - space = Reserve(0xac16f, 0xac26f, "opera house move setzer entrance instructions") - space.copy_from(0xac16c, 0xac26c) + # bytes 0xac16c-0xac16d are inserted in character_music_mod() + space = Reserve(0xac171, 0xac26f, "opera house move setzer entrance instructions") + space.copy_from(0xac16e, 0xac26c) + space = Reserve(0xac16c, 0xac16e, "opera house hide party leader", field.NOP()) space.write( field.HideEntity(field_entity.PARTY0), @@ -298,7 +306,7 @@ def after_battle_mod(self): space.write( field.Call(show_celes), ) - + # do not animate the now hidden party leader space = Reserve(0xac28a, 0xac28d, "opera house do not turn party leader up", field.NOP()) space = Reserve(0xac30d, 0xac312, "opera house do not move party leader up", field.NOP()) @@ -337,6 +345,14 @@ def reward_mod(self, reward_instructions): field.Branch(end_event), ) + def character_music_mod(self, character): + from music.song_utils import get_character_theme + # 0xac16c-0xac16d typically play setzer's theme, + # but in the after_battle_mod() 0xac16c-0xac26c are shifted 3 bytes to the right, + # so the theme now occupies 0xac16f-0xac170 + space = Reserve(0xac16f, 0xac170, "Play Song Setzer") + space.write(field.StartSong(get_character_theme(character))) + def character_mod(self, character): self.setzer_npc.sprite = character self.setzer_npc.palette = self.characters.get_palette(character) diff --git a/event/owzer_mansion.py b/event/owzer_mansion.py index 8fd17a90..ae8eefd8 100644 --- a/event/owzer_mansion.py +++ b/event/owzer_mansion.py @@ -109,7 +109,16 @@ def chadarnook_battle_mod(self): field.InvokeBattle(boss_pack_id, battle_background), ) + def character_music_mod(self, character): + from music.song_utils import get_character_theme + + space = Reserve(0xb4d1f, 0xb4d20, "Play Song Relm") + space.write([ + field.StartSong(get_character_theme(character)), + ]) + def character_mod(self, character): + self.character_music_mod(character) self.relm_npc.sprite = character self.relm_npc.palette = self.characters.get_palette(character) diff --git a/event/veldt.py b/event/veldt.py index 09327d29..031cc4571 100644 --- a/event/veldt.py +++ b/event/veldt.py @@ -376,7 +376,7 @@ def battle_events_mod(self): # overwrite step 4. of rage tutorial after sabin/cyan/gau event esper_dialog_id = 182 gau_char_arrives_dialog_id = esper_dialog_id - self.dialogs.set_multi_line_battle_text(esper_dialog_id, " Received the Magicite “" + self.espers.get_name(self.reward.id) + ".“") + self.dialogs.set_multi_line_battle_text(esper_dialog_id, " Received the Magicite “" + self.espers.get_name(self.reward.id) + ".\"") # overwrite battle event $0d, fed gau dried meat for first time space = Reserve(0x10aa21, 0x10ac5e, "veldt gau/char fed dried meat", battle_event.NOP()) diff --git a/graphics/palettes/custom/Akari-HoxNorf-LB.pal b/graphics/palettes/custom/Akari-HoxNorf-LB.pal new file mode 100644 index 0000000000000000000000000000000000000000..00d52281ee334bcb482fe449c92f404b6899962f GIT binary patch literal 32 ncmZQzNap#Uucjaw9Ap+BJWuboOp(BAhYW*fGH$v-R#E-{qz4Lo literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Alice-HoxNorf-Touhou.pal b/graphics/palettes/custom/Alice-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..940972bf067a180895545db97edf466f62135b1d GIT binary patch literal 32 ncmZRuNap#UpQsYAEg=;j{6|)vL6|`)w8=o-@?7n9qyNbOnc@m_ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Alphys-LoneRedMage-Undertale.pal b/graphics/palettes/custom/Alphys-LoneRedMage-Undertale.pal new file mode 100644 index 0000000000000000000000000000000000000000..803a6a3a00e679a3001a221caa823ee0e03bead9 GIT binary patch literal 32 ocmexgpUm?=Kgdg7-I7V(eWz@7{`a^o0t!r91mv{dF?`Yl0L|SC?*IS* literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Amy-HoxNorf-Sonic.pal b/graphics/palettes/custom/Amy-HoxNorf-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..96a3acdb0fa1d64b2fa7edd4a2a96bb6b06be099 GIT binary patch literal 32 ncmZRuNap#U|A4VRPS!Wx`;V+VgDAs)=KWgFWZZOvtfKq@wWtcp literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Angeal-HoxNorf-FF7.pal b/graphics/palettes/custom/Angeal-HoxNorf-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..7e8ae548201b691e14d72de446fd2b436218412d GIT binary patch literal 32 ocmZRuaN_u1pK6A3_`G=vJ<}r!OL8oJnNd~L$WSVab0Iv`WWdHyG literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Atma-Astaroth-FF6.pal b/graphics/palettes/custom/Atma-Astaroth-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..9125cf6ae4fff559ea69f385d9572afe4dd8832f GIT binary patch literal 32 ecmZQzNapz;@2_}^sgTj$zEbO4t-2)x5&!^-#s*jb literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Beatrix-PocoLoco-FF9.pal b/graphics/palettes/custom/Beatrix-PocoLoco-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..3f5dd46f54685c15e91f243b8c9f29854092bd27 GIT binary patch literal 32 ocmcZ?mdx`%|GCU$$u~Um?mK0Jym}13Fyu2llX24xvWoHt0O83DTL1t6 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Blaze-HoxNorf-Sonic.pal b/graphics/palettes/custom/Blaze-HoxNorf-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..11911f794c3b924eebe14e28711f53636f09b9ff GIT binary patch literal 32 ncmeBSNap#UAIx|y>YQbK@E=)u9}yk#D!$lfGH$v-R#E-{!^8^_ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Bombette-HoxNorf-Mario.pal b/graphics/palettes/custom/Bombette-HoxNorf-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..954fb552bdfd9889a4648bc577b8f53ab6ae3c01 GIT binary patch literal 32 ncmZRuNap#UpT_e&?R}uU`%YQete-w{!lqo$WZZOvtfKq@$F~cI literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Bowser-Badass-Mario.pal b/graphics/palettes/custom/Bowser-Badass-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..f597997d2d480cc38a2014ec0db98a2175c42ca2 GIT binary patch literal 32 ocmZQzNap#U&%}Gf$zRdlzEbNJQxT&$!vjWj%X78cjs7PC0Gxda)c^nh literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Boy-Zozma-FF6.pal b/graphics/palettes/custom/Boy-Zozma-FF6.pal new file mode 100644 index 00000000..6750032c --- /dev/null +++ b/graphics/palettes/custom/Boy-Zozma-FF6.pal @@ -0,0 +1 @@ +€kBÿo·2ùFN!?;y*Î}9ûSæF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/custom/Cagnazzo-Astaroth-FF4.pal b/graphics/palettes/custom/Cagnazzo-Astaroth-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..01c362a2165f8381f4b3c4134d731ad703329f38 GIT binary patch literal 32 gcmZQzNap#UuO0EfUOc;=KUg-eZcQwQ0s|ZX0HCG^d;kCd literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Cait Sith-HoxNorf-FF7.pal b/graphics/palettes/custom/Cait Sith-HoxNorf-FF7.pal new file mode 100644 index 00000000..a1bcfbf8 --- /dev/null +++ b/graphics/palettes/custom/Cait Sith-HoxNorf-FF7.pal @@ -0,0 +1 @@ +)-c ÿo Dl-èÿ“f_^ÿ8ÑESQeªX¹Ÿ3 \ No newline at end of file diff --git a/graphics/palettes/custom/Cammy-Quikdraw7777-SF.pal b/graphics/palettes/custom/Cammy-Quikdraw7777-SF.pal new file mode 100644 index 0000000000000000000000000000000000000000..5304ef1bb74789e77135eb47adeaf6d77579276b GIT binary patch literal 32 icmZRuaN_u%pTRK2N=x>?-A~2Oy8NO&u1^dYpa1}_)(GwZ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Captain Falcon-JamesWhite89-FZero.pal b/graphics/palettes/custom/Captain Falcon-JamesWhite89-FZero.pal new file mode 100644 index 0000000000000000000000000000000000000000..9eebf4e4eb1f2a95a1b45a0f7f57c1e39d16af1a GIT binary patch literal 32 ocmZQzNaopB?!xgmYO25=J2AOy7VA{jL>;%xleCI`V{tVS0KYd3u>b%7 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Celes (Amano)-Astaroth-FF6.pal b/graphics/palettes/custom/Celes (Amano)-Astaroth-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..bac3c623286e83ae5a8303ffe19b9ae721ccd1b6 GIT binary patch literal 32 ocmZQzNap#UpQiECZX>I_`%YOKc~hy2k*_SC$++nTSw;B+0JahfH2?qr literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Celes (Opera)-Astaroth-FF6.pal b/graphics/palettes/custom/Celes (Opera)-Astaroth-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..f90ad7aeaed0243c90e7adf99d086223202f2062 GIT binary patch literal 32 ocmZQzNap#UKOyUemOrb!`%YOm-DfgU{y|pimgj1>8~slP0JT313IG5A literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Ceodore-HoxNorf-FF4.pal b/graphics/palettes/custom/Ceodore-HoxNorf-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..c7dd61df4b3a05116a2b47d9612a57995ccd74e8 GIT binary patch literal 32 ncmZQzNap#Uzr=M~_1QFeXDhkP*e4#g%H~YZWZZOvtfKq@yv_>x literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Chun Li-Quikdraw7777-SF.pal b/graphics/palettes/custom/Chun Li-Quikdraw7777-SF.pal new file mode 100644 index 0000000000000000000000000000000000000000..e54bf921daff2e550b7ee60947fb384a6916d1e5 GIT binary patch literal 32 icmZRuaN_u%KUHFim6q&(yPt|Zu1^d;>+*{-Kmh=_L^8cR>0JMV)6951J literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Cultist-PocoLoco-FF6.pal b/graphics/palettes/custom/Cultist-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..3f12ef570550dab49db54840caf8343b4793a038 GIT binary patch literal 32 ocmZQzaN_u%zmsXBn~S8q`%KBH0(=aYHP0~|kg(UXtovUN0Hs0-^8f$< literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Dancer-PocoLoco-FF6.pal b/graphics/palettes/custom/Dancer-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..1faf904f00af539b33d33f12889db88c314ed279 GIT binary patch literal 32 ocmZQzaN_u%e~zJ?>9VH1`%FoDt*HXS41u|pbq6H=*E28x0HdS|AOHXW literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Dark Elf-Astaroth-FF4.pal b/graphics/palettes/custom/Dark Elf-Astaroth-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..55e35a03762d144e8476aaacdd13315bef6a382c GIT binary patch literal 32 gcmZQzNap#UpXoTgcw&-3xQ>~J>MV=@=?riH0Hb0D^8f$< literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Donkey Kong-Badass-Mario.pal b/graphics/palettes/custom/Donkey Kong-Badass-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..773d27000078841d303150e935bcc1ae42ef2229 GIT binary patch literal 32 ocmZRuNap#U-^nn=N=x>?-A~2Oy8NO&u1^f6O6)O>^8cR>0LA?b;Q#;t literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Draco-PocoLoco-FF6.pal b/graphics/palettes/custom/Draco-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..65d6a012db40602f822551d5a113cd107941f186 GIT binary patch literal 32 ocmZQzaN_u%-{G>^k4@9w{kkEC;xUOp##6D!B#o8zWT#mH0HwSN6951J literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Eggman-JamesWhite89-Sonic.pal b/graphics/palettes/custom/Eggman-JamesWhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..f597997d2d480cc38a2014ec0db98a2175c42ca2 GIT binary patch literal 32 ocmZQzNap#U&%}Gf$zRdlzEbNJQxT&$!vjWj%X78cjs7PC0Gxda)c^nh literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Elena-Astaroth-FF7.pal b/graphics/palettes/custom/Elena-Astaroth-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..3ec046c8f43776a5b939521f8b1d32e252470a22 GIT binary patch literal 32 ocmZQzNap#UFV45mzfSwV-A~2!mI*d0wo7!>Ezi|%H~OCp0KSzBy8r+H literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Figaro Guard-PocoLoco-FF6.pal b/graphics/palettes/custom/Figaro Guard-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..50e3fed0679a68cf0fc4de722cf3b0ee39f86a96 GIT binary patch literal 32 ocmZQzaN_u%U(U4A%|+7QeWs)&gCN6Y&2tRjMB??{F?`Yl0GV0}QUCw| literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Fighter-CtrlxZ-FF1.pal b/graphics/palettes/custom/Fighter-CtrlxZ-FF1.pal new file mode 100644 index 0000000000000000000000000000000000000000..3e94cb80f00ba9271dab0d732c5387fe0cbbb9ee GIT binary patch literal 32 icmd1sOXm4oZNPHhGMY!;IY!CH@P)#?>L4!$C;$Mj(+H~o literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Firion-HoxNorf-FF2.pal b/graphics/palettes/custom/Firion-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..eb001d8f3eef2a525fe029235ec4ba4300d21591 GIT binary patch literal 32 ocmZRuNap#U-zM-q?wqB)cZ}8^83Tb+b?LdsB!kuUWT#mH0LS+WzyJUM literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Frisk-LoneRedMage-Undertale.pal b/graphics/palettes/custom/Frisk-LoneRedMage-Undertale.pal new file mode 100644 index 0000000000000000000000000000000000000000..f75520f2ee48ff973c8f7e639d4b2412ec8e2af6 GIT binary patch literal 32 ocmexgpUm?=|CmG%k2}kMyPt|ZMK2b%7 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Futo-HoxNorf-Touhou.pal b/graphics/palettes/custom/Futo-HoxNorf-Touhou.pal new file mode 100644 index 00000000..a183ccd8 --- /dev/null +++ b/graphics/palettes/custom/Futo-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +|c ÿo!4f_SüÈT†8Ú •¼5ZOÿg \ No newline at end of file diff --git a/graphics/palettes/custom/Genesis-HoxNorf-FF7.pal b/graphics/palettes/custom/Genesis-HoxNorf-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..af5c894673d564884a4b944f1178bd6fefeb4abb GIT binary patch literal 32 ncmZ?bNap#Uf55Rs^fX6&aJ12M8D0hs#ib(8WZZOvtfKq@uonst literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Gilius-JamesWhite89-GoldenAxe.pal b/graphics/palettes/custom/Gilius-JamesWhite89-GoldenAxe.pal new file mode 100644 index 0000000000000000000000000000000000000000..672f1eebf4d11cffc72831c45ff621fec11ce7aa GIT binary patch literal 32 ocmZQzNand!epn(f`Kh73eWlh}(M;Y5zLy-wWlrn(c?D+!0JjATW&i*H literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Gordon-HoxNorf-FF2.pal b/graphics/palettes/custom/Gordon-HoxNorf-FF2.pal new file mode 100644 index 00000000..364780e8 --- /dev/null +++ b/graphics/palettes/custom/Gordon-HoxNorf-FF2.pal @@ -0,0 +1 @@ +Bc ÿo d#³C\"~-x©~FiæF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/custom/Granny-Zozma-FF6.pal b/graphics/palettes/custom/Granny-Zozma-FF6.pal new file mode 100644 index 00000000..db7fca97 --- /dev/null +++ b/graphics/palettes/custom/Granny-Zozma-FF6.pal @@ -0,0 +1 @@ +_c ÿo`<Ø*OG¹S'ÆjKEæF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/custom/Gryz-HoxNorf-PS4.pal b/graphics/palettes/custom/Gryz-HoxNorf-PS4.pal new file mode 100644 index 0000000000000000000000000000000000000000..19dc123d863f7db298f02933e145f6dca6f55501 GIT binary patch literal 32 ncmZRuaN_u%AH*;vsK;=Q(G)=zVHTm5zy^b7GH$v-R#E-{pnnOq literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Guy-HoxNorf-FF2.pal b/graphics/palettes/custom/Guy-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..5894f0e60687a8120567f6c2b977ba55e538ae68 GIT binary patch literal 32 ncmZQzNap#U|2`*(_Y{k~bBvOvIg6ZyP#&+k<+ù!ZkÖZJ9ÎIÆS'.Ö: \ No newline at end of file diff --git a/graphics/palettes/custom/Hotaru-HoxNorf-MOTW.pal b/graphics/palettes/custom/Hotaru-HoxNorf-MOTW.pal new file mode 100644 index 0000000000000000000000000000000000000000..f211dc584a025018abd4ae8bdb23c40d1583a6fb GIT binary patch literal 32 ncmZRuNap#U?EqL{6|)vL6|`)w8`L^jGJzdRg^yfk}U}J literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Interceptor-JamesWhite89-FF6.pal b/graphics/palettes/custom/Interceptor-JamesWhite89-FF6.pal index c0feda60f3119f6e2d538f57e73d2c0807f28b03..c76ab39498ef6a3ff84ad81465df51b6a04e1adc 100644 GIT binary patch literal 32 ocmexgpUlIdSj2ctLQV5>&=14^_5Up{x(3Szrml|I$u!>>0NacWh5!Hn literal 32 ncmZQzaN^)l3}!qg!KQiB@PGY&C!VlF$h% diff --git a/graphics/palettes/custom/Josef-HoxNorf-FF2.pal b/graphics/palettes/custom/Josef-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..58714969edac0761c30ac671c761f72c3122e538 GIT binary patch literal 32 ncmZ?bNap#U-y5=(H$bx9J60)2sh!uFgP-Ab&;1rve#EGf@tGH$v-R#E-{yEqFK literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.pal b/graphics/palettes/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.pal new file mode 100644 index 0000000000000000000000000000000000000000..8b4ede7611e8e69dd7af6ba3f1cbb96f73669039 GIT binary patch literal 32 icmZQzNap#UUs4{blq)FjzEjpG%gu96abOSw6aWC7O9$}) literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Knuckles-Jameswhite89-Sonic.pal b/graphics/palettes/custom/Knuckles-Jameswhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..9eebf4e4eb1f2a95a1b45a0f7f57c1e39d16af1a GIT binary patch literal 32 ocmZQzNaopB?!xgmYO25=J2AOy7VA{jL>;%xleCI`V{tVS0KYd3u>b%7 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Lady-Zozma-FF6.pal b/graphics/palettes/custom/Lady-Zozma-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..162fb742f483f958108a1e422ef389bcebad5a82 GIT binary patch literal 32 ocmexwoy_w;|A52>Cs$c{_norgOhOEjbp^Rw1mv{dF?`Yl0LhsPbN~PV literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Laguna-HoxNorf-FF8.pal b/graphics/palettes/custom/Laguna-HoxNorf-FF8.pal new file mode 100644 index 0000000000000000000000000000000000000000..efb5955770ba39f30b84058b7fb9b4b616a19ebc GIT binary patch literal 32 ncmZRuNap#Uucnu)ctSwl*+wd-^qIq2Q+Cy3lELbFveT>prbP-7 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Leila-HoxNorf-FF2.pal b/graphics/palettes/custom/Leila-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..3aa1a7f06e1561da9bb8a609e58cdb6dfe4374b9 GIT binary patch literal 32 ocmZRuNap#U-^-9+ryUvZ{YQ3o=_i}}Tz-sGCH9y``TtJ`0Lf_#`Tzg` literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Leon-HoxNorf-FF2.pal b/graphics/palettes/custom/Leon-HoxNorf-FF2.pal new file mode 100644 index 00000000..af7d4be0 --- /dev/null +++ b/graphics/palettes/custom/Leon-HoxNorf-FF2.pal @@ -0,0 +1 @@ +Bc ÿo­P®mÉDC\">Ô ’z‰aÆS'.–: \ No newline at end of file diff --git a/graphics/palettes/custom/Link-FEOK-LegendOfZelda.pal b/graphics/palettes/custom/Link-FEOK-LegendOfZelda.pal new file mode 100644 index 0000000000000000000000000000000000000000..c0a458650434f882d61bc75887fd14fa8268bfbc GIT binary patch literal 32 ocmZRuNap#U|3Gjy(|5-Ic0UzAi}LfTt2aqamDpn%<^Mk&0M7mlt^fc4 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/LoneWolf-PocoLoco-FF6.pal b/graphics/palettes/custom/LoneWolf-PocoLoco-FF6.pal new file mode 100644 index 00000000..9be61087 --- /dev/null +++ b/graphics/palettes/custom/LoneWolf-PocoLoco-FF6.pal @@ -0,0 +1,2 @@ +@ +BÿoÆ·:?G™s#Æ·2SÆS'.–: \ No newline at end of file diff --git a/graphics/palettes/custom/Lucca-FEOK-CT.pal b/graphics/palettes/custom/Lucca-FEOK-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..0763287c09e32eb9032c9aca4d193d74362b60a0 GIT binary patch literal 32 ncmZQzaN_u%-yu;Q7izgbyw+&5R+pf?uszo|k$Am#44*Usue=L5 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Lufia-JamesWhite89-Lufia.pal b/graphics/palettes/custom/Lufia-JamesWhite89-Lufia.pal new file mode 100644 index 0000000000000000000000000000000000000000..56745ff3ba92514345c0371b2765fb32b226b04d GIT binary patch literal 32 ncmZQzaN_u%?_iOT<`Qb}ZYdS1IaT01Z{iY$C<}rz2##6D!B!kuUWT#mH0IfI*fdBvi literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Malin-HoxNorf-KOF.pal b/graphics/palettes/custom/Malin-HoxNorf-KOF.pal new file mode 100644 index 00000000..ee4d7d9a --- /dev/null +++ b/graphics/palettes/custom/Malin-HoxNorf-KOF.pal @@ -0,0 +1,2 @@ +Bc ÿo)ž75 +[û)Ïj ÖZk-æF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/custom/Maria-HoxNorf-FF2.pal b/graphics/palettes/custom/Maria-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..36bbcd2b12e63d886faf16052a57eb36c0e7ed0d GIT binary patch literal 32 ocmZ?bNap#U-^;MA@SID$_aE8L%o9G6%$pgX$++nTSw;B+0MerjF#rGn literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Mario-Badass-Mario.pal b/graphics/palettes/custom/Mario-Badass-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..92079fe98b193a09455525525b4d4dd69bc129dd GIT binary patch literal 32 ncmZ?bNap#U|G-98*`HP3eW$D#gCIk9mYeG{88_V^t0;c}o-PSx literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Marle-CtrlxZ-CT.pal b/graphics/palettes/custom/Marle-CtrlxZ-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..30bb10ec01804a5fdf53709eb61843573d0083d1 GIT binary patch literal 32 ocmZQzNap#Uzn}BJ`hL0k?EOI>;x+9`Bm)?p$++nTSw;B+0L=yq;Q#;t literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Metal Sonic-JamesWhite89-Sonic.pal b/graphics/palettes/custom/Metal Sonic-JamesWhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..6165fdc3629b789399ad3caf3b3f93123bd6580d GIT binary patch literal 32 ocmZRuNap#UZ^3psXsxNe^AAG?*JBcb3^8cR>0MWw@P5=M^ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Nitori-HoxNorf-Touhou.pal b/graphics/palettes/custom/Nitori-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..6245e0d1dfb31e95aba445c3f7ed2c4999c2e65c GIT binary patch literal 32 ocmZRuNap#Uf6!z?*|OaD;6Ji##*bwK>Jy5d$++nTSw;B+0Mu6ua{vGU literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Noire-HoxNorf-Neptunia.pal b/graphics/palettes/custom/Noire-HoxNorf-Neptunia.pal new file mode 100644 index 0000000000000000000000000000000000000000..a249294cef4049327b7e10a5b9d593120f2694d1 GIT binary patch literal 32 ncmZRuNap#UpTompm@F|rI9BVqOpCzbfJBpHlELbFveT>pseB4< literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Pacman Ghost-HoxNorf-Pacman.pal b/graphics/palettes/custom/Pacman Ghost-HoxNorf-Pacman.pal new file mode 100644 index 0000000000000000000000000000000000000000..92a571a8770e523cee678279a2161542ebce63ee GIT binary patch literal 32 ncmZQzNap#U&k%C0C@|}PoW0xH)RqWY1~GL8GeRilELbFveT>pm3s** literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Peach-Halkel-SMRPG.pal b/graphics/palettes/custom/Peach-Halkel-SMRPG.pal new file mode 100644 index 0000000000000000000000000000000000000000..923a1bf3daf208c62891fdc2c95e431f03ce75b2 GIT binary patch literal 32 ocmZQzNap#UzbazB@lGar_norwasMs;*B_90CgY|XWEJHP0L&*0od5s; literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Piranha Plant-JamesWhite89-Mario.pal b/graphics/palettes/custom/Piranha Plant-JamesWhite89-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..576768ad1531fee6e39f05954887bc0dfb05aef4 GIT binary patch literal 32 ncmZQzNand!&du;WPK3c;xl+iD=>TH@V<*FLnbSIcUcuP_jTH$s literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Porom (Adult)-HoxNorf-FF4.pal b/graphics/palettes/custom/Porom (Adult)-HoxNorf-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..f10a5c07ab03c9c68c99777b33a8a225ae5c0690 GIT binary patch literal 32 ncmZQzNap#Uuc&z6@~2FEu&mN{k%=;~VHTFpWZZOvtfKq@u7e7M literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Purple Sister-HoxNorf-Neptunia.pal b/graphics/palettes/custom/Purple Sister-HoxNorf-Neptunia.pal new file mode 100644 index 00000000..07be444e --- /dev/null +++ b/graphics/palettes/custom/Purple Sister-HoxNorf-Neptunia.pal @@ -0,0 +1 @@ +Bc ÿoæqUfŸ[ž>°a+I¾{ûvæF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/custom/Raja-HoxNorf-PS4.pal b/graphics/palettes/custom/Raja-HoxNorf-PS4.pal new file mode 100644 index 0000000000000000000000000000000000000000..19dc123d863f7db298f02933e145f6dca6f55501 GIT binary patch literal 32 ncmZRuaN_u%AH*;vsK;=Q(G)=zVHTm5zy^b7GH$v-R#E-{pnnOq literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Ram-HoxNorf-Neptunia.pal b/graphics/palettes/custom/Ram-HoxNorf-Neptunia.pal index 21c06acb44dbb6feb13db1cd88c01b794d255465..e5c96be8fcd3f82a468bf51bd349fe498bb5751c 100644 GIT binary patch literal 32 ocmZQzNap#Ue^h0b(InCM;6Ji;X|qBvRk75mTb`@kZuCDH0L;Vb(;npTfF#aqI*2*_!@WB8;A0K<b&@{{R30 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Relm-HoxNorf-FF6PR.pal b/graphics/palettes/custom/Relm-HoxNorf-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..84f889f3f6993fa984888a824a41066dbba1d209 GIT binary patch literal 32 ocmZQzNap#Uzc66F`Ans__*%Po4oL?2G#gKK%X78cjs7PC0IpLDSO5S3 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Returner-PocoLoco-FF6.pal b/graphics/palettes/custom/Returner-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..773d27000078841d303150e935bcc1ae42ef2229 GIT binary patch literal 32 ocmZRuNap#U-^nn=N=x>?-A~2Oy8NO&u1^f6O6)O>^8cR>0LA?b;Q#;t literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Ricard-HoxNorf-FF2.pal b/graphics/palettes/custom/Ricard-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..110056fba90cdd381546412eae95a59c8c8f2ebd GIT binary patch literal 32 ncmZ?bNap#U&&OaZEXpMB9HXRP+F@`#af8b-$zXLo*=be)kPZoX literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Rom-HoxNorf-Neptunia.pal b/graphics/palettes/custom/Rom-HoxNorf-Neptunia.pal index 21c06acb44dbb6feb13db1cd88c01b794d255465..e5c96be8fcd3f82a468bf51bd349fe498bb5751c 100644 GIT binary patch literal 32 ocmZQzNap#Ue^h0b(InCM;6Ji;X|qBvRk75mTb`@kZuCDH0L;V8Vx@EDUe}0Fo957XSbN literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Rune-HoxNorf-PS4.pal b/graphics/palettes/custom/Rune-HoxNorf-PS4.pal new file mode 100644 index 0000000000000000000000000000000000000000..c8337eacf887c87627e2213a5aa43435bcabf115 GIT binary patch literal 32 ocmZRuaN_u%&tSlj+!8p)Xo}#JpdLdOVHP2E%X78cjs7PC0Gz`Lng9R* literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Ryu-Quikdraw7777-SF.pal b/graphics/palettes/custom/Ryu-Quikdraw7777-SF.pal new file mode 100644 index 0000000000000000000000000000000000000000..784edc9686f4d3c8bd7f1e75eddb8d92f62b2af0 GIT binary patch literal 32 icmZRuaN_u%pTRK2N=x>?-A~1-68xf13_j~JKmh=&ZwSf& literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Sanae-HoxNorf-Touhou.pal b/graphics/palettes/custom/Sanae-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..6d1d70244d4249f618ba7710f307eefdab24e2d4 GIT binary patch literal 32 ncmZRuNap#U&mgGa%%E29UuV>i%HTVvcuUwZ$zXLo*=be)nPv&? literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Scholar-PocoLoco-FF6.pal b/graphics/palettes/custom/Scholar-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..f1d66dd3471bc69c388c61107889f53badf5eab5 GIT binary patch literal 32 ocmZQzaN_u%-@&leic9jp)lJ3AntX!)(~lTTmDpn%<^Mk&0J~ibr~m)} literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Scott-HoxNorf-FF2.pal b/graphics/palettes/custom/Scott-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..5b265d05519f5ddf2307200b123d44053f63d7d3 GIT binary patch literal 32 ncmb18Nap#UuWl*L=Fe#F9IKS6-XK=TxRpWO@?7n9qyNbOkCO^G literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Seifer-Filipinac-FF8.pal b/graphics/palettes/custom/Seifer-Filipinac-FF8.pal new file mode 100644 index 0000000000000000000000000000000000000000..bc75d2dc9d72ad8a97bbd00e528a11fafeccda60 GIT binary patch literal 32 ocmaD?pUiW=coX9-CR3*Wc0U#86mJb%Ybwt0!e=UDj@tiZ0P)-o9RL6T literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Sherlotta-HoxNorf_ScarabEnigma-FFCC.pal b/graphics/palettes/custom/Sherlotta-HoxNorf_ScarabEnigma-FFCC.pal new file mode 100644 index 0000000000000000000000000000000000000000..dc95323979ca487fba918d599f141ac9599c6c1a GIT binary patch literal 32 ncmZRuaOU}+-xeC1J~J#nSWc_QQB${GYcA(8$zXLo*=be)v78EI literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Siegfried-PocoLoco-FF6.pal b/graphics/palettes/custom/Siegfried-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..1d5956a67b3ace7355167d608a49294b73403bce GIT binary patch literal 32 ncmZQzaN_u%U#!fg*&<-?e$((&Y=_HsD?Z6%lELbFveT>pqL2z9 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Simon-JamesWhite89-Castlevania.pal b/graphics/palettes/custom/Simon-JamesWhite89-Castlevania.pal new file mode 100644 index 0000000000000000000000000000000000000000..672f1eebf4d11cffc72831c45ff621fec11ce7aa GIT binary patch literal 32 ocmZQzNand!epn(f`Kh73eWlh}(M;Y5zLy-wWlrn(c?D+!0JjATW&i*H literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Slash-Badass-CT.pal b/graphics/palettes/custom/Slash-Badass-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..6c350d1e354e3e023bb2848e8a217bd568aff9d1 GIT binary patch literal 32 ncmZRuNap#Uf81ehoo}kWzqOu~oT+3{;yZ_9lELbFveT>py#Nag literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Sonic-Badass-Sonic.pal b/graphics/palettes/custom/Sonic-Badass-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..92079fe98b193a09455525525b4d4dd69bc129dd GIT binary patch literal 32 ncmZ?bNap#U|G-98*`HP3eW$D#gCIk9mYeG{88_V^t0;c}o-PSx literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Squall (Uniform)-SApprentice-FF8.pal b/graphics/palettes/custom/Squall (Uniform)-SApprentice-FF8.pal new file mode 100644 index 0000000000000000000000000000000000000000..ce8d8f909c8a5f0aee1356c649b0ce1eae70f7e5 GIT binary patch literal 32 ncmZQzaN+o0-=a}zbcVy;db(tnC5NQF@NC9sGH$v-R#E-{pe+fU literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Squall-PocoLoco-FF8.pal b/graphics/palettes/custom/Squall-PocoLoco-FF8.pal new file mode 100644 index 0000000000000000000000000000000000000000..1bde7f6210cd55c3201b9b26b99608e506a2f8fa GIT binary patch literal 32 ocmZQzaN_u%-@!0h@(jm+tDA~FhAje?>BW9iCFUAN`TtJ`0J^#iFaQ7m literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Tails-JamesWhite89-Sonic.pal b/graphics/palettes/custom/Tails-JamesWhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..46acf7c4fa13e7d40083a6d36255e3bd7e001df6 GIT binary patch literal 32 ncmZ?bNap#UpI~!C%b!)=eW$E2124mbEN|CmGH$v-R#E-{qg@HA literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Thief-CtrlxZ-FF1.pal b/graphics/palettes/custom/Thief-CtrlxZ-FF1.pal new file mode 100644 index 0000000000000000000000000000000000000000..e09c11e7c95dc03f10350fd45dc5648d8aa1acf8 GIT binary patch literal 32 icmd0>OXj&(-N|r8mX9&szgBG)(*(xjMT^8cR>0KHla&Hw-a literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Toriel-LoneRedMage-Undertale.pal b/graphics/palettes/custom/Toriel-LoneRedMage-Undertale.pal new file mode 100644 index 0000000000000000000000000000000000000000..83c706464269a6316c7700ad0586302dbefb3672 GIT binary patch literal 32 ocmexgpUg8QNQhy-zdie$Vu@sL&t)23nM*?gQ&&Z-HJuU!0LVKGQUCw| literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Train Conductor-Zozma-FF6.pal b/graphics/palettes/custom/Train Conductor-Zozma-FF6.pal new file mode 100644 index 00000000..48f94ad2 --- /dev/null +++ b/graphics/palettes/custom/Train Conductor-Zozma-FF6.pal @@ -0,0 +1 @@ +8c ÿo¨@ÓR!?Cø1&)ÆrË]ÆS'.–: \ No newline at end of file diff --git a/graphics/palettes/custom/Ultros-PocoLoco-FF6.pal b/graphics/palettes/custom/Ultros-PocoLoco-FF6.pal index 81f733c654a92762cdff151cc8014771a204083c..5623a829f7e69ad761daed439c9c964576610556 100644 GIT binary patch literal 32 kcmZQzaN_u%A1qm%7MNOZypyRbq`~EXJp&j>F*-8>0HdJ@pa1{> literal 32 mcmZQzaN_6+X>bWlEl%6XRBs$C`9J@EeRl~15M(hkFaQ9l3JI+M diff --git a/graphics/palettes/custom/Ursula-HoxNorf-FF4.pal b/graphics/palettes/custom/Ursula-HoxNorf-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..91e75251e623bd9b0550e9293e930a24aa931073 GIT binary patch literal 32 ncmZQzNap#UpC@T+{#h{I|BtM#iYbeFFr(2k88_V^t0;c}q0pnK%jG literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Vincent-FEOK-FF7.pal b/graphics/palettes/custom/Vincent-FEOK-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..a69c71f89d1ef27dc05017062674dbe1092792e2 GIT binary patch literal 32 ocmZQzaN_t|e~Q6J^O%Ia`%T5091}VIYWXo9lMGhZlbvP-0J821$N&HU literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Wolf-HoxNorf-Starfox.pal b/graphics/palettes/custom/Wolf-HoxNorf-Starfox.pal new file mode 100644 index 0000000000000000000000000000000000000000..fbaa078e382329781b6da502062eed9950efd296 GIT binary patch literal 32 ncmZRuNap#U&&Mz&?!9NcdyE=~;!=@wA?X&+WZZOvtfKq@u$T(N literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Wren-HoxNorf-PS4.pal b/graphics/palettes/custom/Wren-HoxNorf-PS4.pal new file mode 100644 index 0000000000000000000000000000000000000000..f25d6b7c41be7396c84e523abb1a732a06e5999c GIT binary patch literal 32 ocmZRuNap#Uzf>e!_qog*qbY(C3_T1}f_e;(Nd~Ly$xgEZ0JNM@C}VQWpliNx!@WB8;A0IHY^bN~PV literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Yoshi-Badass-Mario.pal b/graphics/palettes/custom/Yoshi-Badass-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..a1531a838962cc76dff632066e4a85af57e8ac09 GIT binary patch literal 32 ocmZRuNap#U|3Gjy(|5-Ic0U#K1^Ic^)tjWIO6)O>^8cR>0LFq0CIA2c literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Yuyuko-HoxNorf-Touhou.pal b/graphics/palettes/custom/Yuyuko-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..48d604b86d041b4a233571fff55252dc2f05e91c GIT binary patch literal 32 ocmZRuNap#Ue^zH+(hSG=;6Jk2zQ-(#>b0}fEzi|%H~OCp0M*3}r2qf` literal 0 HcmV?d00001 diff --git a/graphics/palettes/palettes.py b/graphics/palettes/palettes.py index c803c293..38e5da3d 100644 --- a/graphics/palettes/palettes.py +++ b/graphics/palettes/palettes.py @@ -150,9 +150,128 @@ 208 : "Suwako-HoxNorf-Touhou", 209 : "Eiko_Miko-ScarabEnigma-FF9", + 210 : "Akari-HoxNorf-LB", + 211 : "Angeal-HoxNorf-FF7", + 212 : "Bombette-HoxNorf-Mario", + 213 : "Bowser-Badass-Mario", + 214 : "Cammy-Quikdraw7777-SF", + 215 : "Captain Falcon-JamesWhite89-FZero", + 216 : "Ceodore-HoxNorf-FF4", + 217 : "Chun Li-Quikdraw7777-SF", + 218 : "Eggman-JamesWhite89-Sonic", + 219 : "Fighter-CtrlxZ-FF1", + 220 : "Firion-HoxNorf-FF2", + 221 : "Genesis-HoxNorf-FF7", + 222 : "Gordon-HoxNorf-FF2", + 223 : "Guy-HoxNorf-FF2", + 224 : "Hotaru-HoxNorf-MOTW", + 225 : "Josef-HoxNorf-FF2", + 226 : "Knuckles-Jameswhite89-Sonic", + 227 : "Laguna-HoxNorf-FF8", + 228 : "Leila-HoxNorf-FF2", + 229 : "Leon-HoxNorf-FF2", + 230 : "Maria-HoxNorf-FF2", + 231 : "Metal Sonic-JamesWhite89-Sonic", + 232 : "Minwu-HoxNorf-FF2", + 233 : "Pacman Ghost-HoxNorf-Pacman", + 234 : "Palom (Adult)-HoxNorf-FF4", + 235 : "Paul-HoxNorf-FF2", + 236 : "Piranha Plant-JamesWhite89-Mario", + 237 : "Porom (Adult)-HoxNorf-FF4", + 238 : "Ramza-CtrlxZ-FFT", + 239 : "Ricard-HoxNorf-FF2", + 240 : "Ryu-Quikdraw7777-SF", + 241 : "Scott-HoxNorf-FF2", + 242 : "Tails-JamesWhite89-Sonic", + 243 : "Thief-CtrlxZ-FF1", + 244 : "Ursula-HoxNorf-FF4", + 245 : "Wolf-HoxNorf-Starfox", + 246 : "Futo-HoxNorf-Touhou", + 247 : "Kaguya-HoxNorf-Touhou", + 248 : "Reimu2-HoxNorf-Touhou", + 249 : "Antlion-Astaroth-FF4", + 250 : "Arvis-PocoLoco-FF6", + 251 : "Atma-Astaroth-FF6", + 252 : "Beatrix-PocoLoco-FF9", + 253 : "Boy-Zozma-FF6", + 254 : "Cagnazzo-Astaroth-FF4", + 255 : "Celes (Amano)-Astaroth-FF6", + 256 : "Celes (Opera)-Astaroth-FF6", + 257 : "Clyde-PocoLoco-FF6", + 258 : "Cultist-PocoLoco-FF6", + 259 : "Dancer-PocoLoco-FF6", + 260 : "Dark Elf-Astaroth-FF4", + 261 : "Draco-PocoLoco-FF6", + 262 : "Elena-Astaroth-FF7", + 263 : "Figaro Guard-PocoLoco-FF6", + 264 : "Granny-Zozma-FF6", + 265 : "Hojo-LoneRedMage-FF7", + 266 : "Sanae-HoxNorf-Touhou", + 267 : "Lady-Zozma-FF6", + 268 : "Link-FEOK-LegendOfZelda", + 269 : "LoneWolf-PocoLoco-FF6", + 270 : "Lucca-FEOK-CT", + 271 : "Lufia-JamesWhite89-Lufia", + 272 : "Luigi-Badass-Mario", + 273 : "Maduin-PocoLoco-FF6", + 274 : "Mario-Badass-Mario", + 275 : "Kain (Holy Dragoon)-CtrlxZ-FF4TAY", + 276 : "NarsheGuard-PocoLoco-FF6", + 277 : "Peach-Halkel-SMRPG", + 278 : "Returner-PocoLoco-FF6", + 279 : "Rubicante-Astaroth-FF4", + 280 : "Scholar-PocoLoco-FF6", + 281 : "Seifer-Filipinac-FF8", + 282 : "Siegfried-PocoLoco-FF6", + 283 : "Slash-Badass-CT", + 284 : "Sonic-Badass-Sonic", + 285 : "Squall (Uniform)-SApprentice-FF8", + 286 : "Squall-PocoLoco-FF8", + 287 : "Tifa-Astaroth-FF7", + 288 : "Train Conductor-Zozma-FF6", + 289 : "Vargas-PocoLoco-FF6", + 290 : "Vincent-FEOK-FF7", + 291 : "Yoshi-Badass-Mario", + # FFT 300 : "Alma-HoxNorf-FFT", 301 : "Orlandeau-ctrlxz-FFT", + + 302 : "Alice-HoxNorf-Touhou", + 303 : "Alphys-LoneRedMage-Undertale", + 304 : "Amy-HoxNorf-Sonic", + 305 : "Frisk-LoneRedMage-Undertale", + 306 : "Gryz-HoxNorf-PS4", + 307 : "Raja-HoxNorf-PS4", + 308 : "Reimu (Blue)-HoxNorf-Touhou", + 309 : "Rune-HoxNorf-PS4", + 310 : "Toriel-LoneRedMage-Undertale", + 311 : "Yuyuko-HoxNorf-Touhou", + 312 : "Cait Sith-HoxNorf-FF7", + 313 : "Wren-HoxNorf-PS4", + 314 : "Nitori-HoxNorf-Touhou", + 315 : "Donkey Kong-Badass-Mario", + 316 : "X-Badass-Megaman", + 317 : "Lugae-Astaroth-FF4", + 318 : "Gilius-JamesWhite89-GoldenAxe", + 319 : "Arthur-JamesWhite89-GnG", + 320 : "Sherlotta-HoxNorf_ScarabEnigma-FFCC", + 321 : "Purple Sister-HoxNorf-Neptunia", + 322 : "Noire-HoxNorf-Neptunia", + 323 : "Arle-HoxNorf-Madou", + 324 : "Simon-JamesWhite89-Castlevania", + 325 : "Aria-HoxNorf-FF3", + 326 : "Refia-HoxNorf-FF3", + 327 : "Nakoruru-HoxNorf-SamSho", + 328 : "Rash-JamesWhite89-Battletoads", + 329 : "Marle-CtrlxZ-CT", + 330 : "Relm-HoxNorf-FF6PR", + 331 : "Tina-CtrlxZ-FF6", + 332 : "Luneth-HoxNorf-FF3", + 333 : "Malin-HoxNorf-KOF", + 334 : "Toadette (Explorer)-HoxNorf-Mario", + 335 : "Blaze-HoxNorf-Sonic", + 336 : "Xion-Kzinssie-KH", } def get_path(id_): diff --git a/graphics/portraits/custom/Akari-HoxNorf-LB.bin b/graphics/portraits/custom/Akari-HoxNorf-LB.bin new file mode 100644 index 0000000000000000000000000000000000000000..4401abcee0e634dd5746f297de698eb919f1eb0a GIT binary patch literal 800 zcmZ{iOH30{6o&ul4AVhMAE{yqr4$Ul0%^k|5TJB;_+kOB#1Mm^3rz@VBTcAjEmJU2 z7b1x+T$q5}_#}eF1W;gL2Z`~qBbZVl0#Q;*MJNF}-ogSmo-g<0oO92)k8>}uFBE8M z-`lfJ>a&$e@&vh_wx>yLk_4#1ktv3Z6toiEjeyR+Zd~pO;aMaatGa_vu;MbD@Wxz( zNChiWj=}d?hTQ;(45AaK@f$CjUVA<}rrlrNZ{0qJ&soG|qk=0(CD}niuvQhF>ebGt zj#RY7yArQzCUl~PPfa(RKXNwnLS|LIduI4s_`^!*OE9>)8dwVBG4* z*bv&rouaF3WZWWJ_#u8M7ao+L6s5u*d*|8H0(jwHKV}5=*}}##ejZV@E4)|8b+=76mCaBOxM6?_ zG|*3Zq1lF#TW2K1MXJ$8vT4MJC~l2d`8qup>-YcUjJE@^N0UQEB~!(;m)>!(>62Mv|0&0u*np6F?mQIJzgtwNT} z6sIR0Pjb1!8=*fvzOvKz9wjrHtft!=+>UI7FBEQ&Wfr)#=+EGkzrb>?+51sb8L9n_ zMfDt|6b8QOAZcpMZ;@-(dW_*W(hTTfE8RrEqvE~_NO^shuBi7txP$p z)4v|F;VM)Lj>S!S}_uionf0LDoSO8@`> literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Alice-HoxNorf-Touhou.bin b/graphics/portraits/custom/Alice-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..809e8d413243c88f049306bcebf50230a968811a GIT binary patch literal 800 zcmY+BZAepL6vxkfylvB7?s5`aTF(N@3iGYdl`r>>p{=5%FA@YPW-Q2ZpeSPVKAHwa z?+__O>qA5sX^>e`x?7Q23=D)`AhsK(D>8S>mvp-OG^L2nkHi1`&bPw>SSW@;QLJ`3 zw;C_%-$nEagI0^NL+n-$kF{OFsk{%gV8o7E_e8~*=RMC;Ri%`LC<$=3g^%K{LBuI* zp&)aSp_~H9vhhG)UOGLyCe-|6YQZ1BFHl!<&jX>kx~cr?GvnvSTMu3K9rT%e8$HOb zxr8pEo5&0i7@@mQJ^!xbL;GC2*irB>Fk7SpNYW-Uz;N6u&Y*Spc6&m!hmP2kz`G%v ztcP{*ReowbNxmpl@ynC^_iR7!sT7Ar|M%LvIjIoKVw|`U68wCS5AlEQjRYZ*AW8qZ zBuO`AC2dAGV7Xp)qf|UK*9>N}Uau1@P)15oLld~r@z`>MJ?qt@w(0Vd>*{o_3i1Xifoub7bi-0GnQ}{rlUPWx&Y|gM`nmDXyub^^B^}C**?u}b_?F_e zc{w>*DVD<8gSC!oYc*%UNpYz-6&G@antjN=qjSG)@S@vQb|N?_z7f53YIuVBTGbJy zm9(%e5DM|OUdDwm^uqY&2m3^tHP>Gn2bupIwu%4F-;scgDxp-qEtH=3Pbg)@IvnYrHu= z&CychUH=7SB7j7IS$rFT{$?t9BntmnnT(9F&`30(K`ax4Lb<<8Dnl1h(Y!WGTfzBp cPww9Qt_y<`TSsO%1SS!xJZo¯óA¶bˆYÉ$ \ No newline at end of file diff --git a/graphics/portraits/custom/Alma-Unknown-FFT.bin b/graphics/portraits/custom/Alma-Unknown-FFT.bin new file mode 100644 index 0000000000000000000000000000000000000000..9a2430f5aa777ef54ab6d9c7567ba54463204b57 GIT binary patch literal 800 zcmaiyOK1~O6o&tqJIM_8F_Tq__Ay1p>Y^l8G=g@fC>S?w(S_h9)3~sLj}#Y;ZD|IK zG+MExA{50Yf~Y$aPz;F8^#OL_t0*D`ZMtcTsGYV#0%;O&V{uvUcRBZU?l~O(!*g~{ z1kZ7Vh<1@D01pCj4I&(Ub8)PGf7j0=ty8mOiNa(PI`9G`NMJ9{p-l~ir~O0jhlzot z*syJTv!@rg@eZvxi3~pDHHuO(Ts)XpPvemze#fyjgI+wvG>TY&kJM*6u&bOmZW1;GP;C*07PYF3%qs)1ZxqR)LlqQ@QAKw@)AK{{x zMTfRy*JfW%$O%?iRy3TJY}uaILRZz8I;;#U9~7_TjZmZ+R*5XKkRs-UuCrW#$yR;! zE@*nFhbBvVs5G6ntcf^P6f+r*XW>B=lFX-pdBnYjp;N?63JQ}_HEj%2SFD|?R5f)_ znpV>;S28(2-#PD{_hvm=%94);BEg9Dz)D(QvZc)H84*M-lO+OFv-PbA?%}{#w<-P-V{g(t$5bZWmAUt7BfRgSu2&@Zu zup`okQ~XOFUDm1hAW65%pj~B)9t)5I2eBAzvo!q5F+_R|9AXG4$t&4V<^BC zf_CmY_mMk{Gh6yTtw@opg(B1ZFB+E1bHaM1t-hI|Rj7uL>T7f>btQkM1DmQ^so-BY z7L?BmxwYn%A)}6=4R%-mFlK^9|F8D1&8g#4wjODYD`>QFvSO)XNl!IJ&qo*Ci(UQ2 a-Ftd^Z{CuphwAFbTE+)1kbFz(x%LP6)c*$n literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Alma-Unknown-FFT.pal b/graphics/portraits/custom/Alma-Unknown-FFT.pal new file mode 100644 index 00000000..d4eccc51 --- /dev/null +++ b/graphics/portraits/custom/Alma-Unknown-FFT.pal @@ -0,0 +1 @@ +é_õ)üJx62º>’%.ê72šB¦•F[g3!˜- \ No newline at end of file diff --git a/graphics/portraits/custom/Alphys-LoneRedMage-Undertale.bin b/graphics/portraits/custom/Alphys-LoneRedMage-Undertale.bin new file mode 100644 index 0000000000000000000000000000000000000000..ee16e7dffcf732a7b28cbc2b8f12a0740ae60b30 GIT binary patch literal 800 zcmb_a&1(}u6o0d`$s}&bM(oY%D&|lq!iq`-)2@YBul1~lfEPgz!HXZQ*{#y1L?j3Q zfE2xpM-OVZ6j3im5YdCsH3uU?$W#>9X1mWfX^Pgf@3(Ju=DmHt_c06bzl4L}mcEmX z1BVRXZ(iB+?NaN`tx>JF<=#LwZ_}V zVP~zojsYI-JY zS>^Y@Cj=mAHy2mDtsG?YZF@Ujy=|EabGgOEsi{elr*q@%CQF6Mcn&=R6-Ou*^Lfh> zK=WXXVu~m8d#%4n<`-&re{Aq5;sHaBFh5hf`aMg7rQnDA+bpDhf2`CpJHHAE|pQOoV8n~ZlzH64YYisn-$Q7iQVCttfP$ubXE(YV}eQS zP0GGX`U13`)?=GqCCCPKDauuK=do&R07DEJqt>~xCl{7o7w7?%Mp6$A7(Q-G6?%R+DU<2f`O%GDmZD{0+&_?ezcv literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Alphys-LoneRedMage-Undertale.pal b/graphics/portraits/custom/Alphys-LoneRedMage-Undertale.pal new file mode 100644 index 0000000000000000000000000000000000000000..e26c3ac5dd48c3ad6e8fd1668bc09bbc9c75020e GIT binary patch literal 32 ncmaFB?8hj=G=uA}&~83^@noLwaZ%XY>J*V11iMNh5OE2iy$8VQq+Gdl_tjPea^)qClFb_vK!tfTwmXv^ihn&5IH@-GT z&3VUbFS&)DVygJ7SaMYpJ?vveBMY{(hM zXd+?TY92~K^upz?QW6^iBB<|-e-RKx18$ND5?^`Qo^Q+FQKqP|>xDC4R>>k;Jk?lt z`S{PK1sz|46SW}Fc!CjVcA8Fy=s;*Wm{+je_;b(@Q9S^=q0A?KwXh)akdXD|U8xbn zg8@5WSM>a0-r*O_SLTATkoam(WKNbFZoirBYi((cM%V##1`Pj+XU=C_;n9}y_0Fp|^4d;j2Cil#x!9kvAT?je0mKgSFzFkeB_u+7OUO4YL&v_nze?@lZV|wr@-pW&q;VX`3>vvA7luGophND4ynN3vJLr6B{RjNJL@= zV1Qu&-$_@jXVd`p;b2xxV{S3vu}OQP3EWFhd-b;S$nU}w-DJ!d)e9FfQr1z>!8cpZ zTAB^4fnkHkU$n>WV*cdR>Bp^yep+#E7ZR=VzMVC(#rj&&yS&T)b6Ji?eVxvzGb-Wqq=kbsJiQ*MM&DEsc|tNLTEy4Ry9!O@d}sB_dc z1kYVJ#fPLHytlfvT5UuB;mEOP2O_(?(VZiqr(rhew|}k6>ne=r!KJd#{TU46ZJb6e zi9JcsomeU2a8~Gykma6(^Gc;f?LuVih$MLf)>vBZibK8Z1R0_bAm=0rhfB&56K}d( ztToUav(t8$_RG(KU|XgqC6nZ^~hS(DXlDivi?-Ck#;f1r$kO0{x2r z^ckf*oYB-}zvPuKNuOV6{ZZMQ;j`vBL(+f_hGq5KEP~VL0Ni`hc}JYCzcedmM0hF2X8N+O@c)*2$Z0zN=nfZ;{$cRtA=W7mZ$Y5$rEO_eo|8%$>zVdz9~Hb literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Angeal-CDude-FF7.pal b/graphics/portraits/custom/Angeal-CDude-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..b2bc1ae31603c9140185fc202391974319d5cdd9 GIT binary patch literal 32 ncmb1V*y9#yC8k#-yHS%}HcwMilSgtD&r69Ej%5-{MQYOlipL2O literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Antlion-Astaroth-FF4.bin b/graphics/portraits/custom/Antlion-Astaroth-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..003d20f68571b1368c12823b7d6f802082a8b674 GIT binary patch literal 800 zcmY*XTSyd982)BfUicl?D@+M;L?j9{GgDHyjltJ1(K*6|9(!IXy=3e~Nsz7XLh zbhaI2gWpCQmBcF(YE4BsM5PiQrjp&?=o7j$N*y}$s@Z%kSrWhPX((tfyCgN?neGej z!46;8fRIi2QqBSCCNnFP-0BEUOz&6LX%E)g522B|$@e6E^ROvq34i2qGu7DT;5A+& z?MpBVurSatBCi#8bOUuKq-YsYuDPh+NHI)tGw>;Znap#%k=4r>pf~j?CjVpCNAswu z-Lzor;k6}y0H)oAJ4_&I1a-gMac$9)a&$I1UP*}m3YoHEKciJ zlk%lWEGnWwPD+yNYEcGA|w6aV9Y(m73*e6{>&kG+FWZ2rG&x<|s zOpMjuYVmtRT!fFY({{C&z2R9>-=m;VRT+o->xEdiUrH)l{?*UK#180p-ON3nN_-DCS?oJ!D zcrM=!S>);M~KA2~;Ql07jq76#xJL literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Antlion-Astaroth-FF4.pal b/graphics/portraits/custom/Antlion-Astaroth-FF4.pal new file mode 100644 index 00000000..5af5b35f --- /dev/null +++ b/graphics/portraits/custom/Antlion-Astaroth-FF4.pal @@ -0,0 +1,2 @@ +`F› _ö? +|°ÐIþ´^Ê8;Üm@| \ No newline at end of file diff --git a/graphics/portraits/custom/Aria-JamesWhite89-FF3.bin b/graphics/portraits/custom/Aria-JamesWhite89-FF3.bin new file mode 100644 index 0000000000000000000000000000000000000000..d36e39e8822f378449b103d1cff3d4da375741fd GIT binary patch literal 800 zcmYjP?MqWp96smXyX|V%wsPVtI&r-zt658DiCb@0A6#Uq*bA;dV7avqiK)9eV}wgB z3N&L{gp^5y5@A9X^77Qhu`yqbDoFu`vI^42uMI| zsBi%>Nx%T*_QJGz@JMoK_cZ`Wk`W(Jq@5$@V#X9rfCHMt;!hD`VKjU|+`5NvacFsQ z>91>bWM!yeXze}3O$4nZ5T(t;t!bb{Rl!iol*hA72q1QaBJ4v!5)uT2*a8v&hARk| z)695MOH#Z#GpBd|uCGpA_xnu8m1K9`=-^THYd^K)wqY*)M|x*^r+h)aAnnO2FV@7| zD5@-~WDJa<;F5{kij>}($(qT_V~V#5zs4dKOOzRw3`@4)eGx22SaLz01 zAgodbD;n~6$MS@Qs{vNzQ>*RsJo@~l%%$a6uijkI(qA%>p-X%b5i4L>me>2A`6q+l zRu@Bo(EmI*iI$fkJ=(~JI{+sDRG3geZlR>~KH7r+5fc(5C8B95skAm)8`(Ct4QMDI zJ(J`_3}SeR7kmJF;S`yB3{O1F^+^k11b|_LT_7F{6w;OQfVPisrOc|-y2o`#>^J3S zPYKTx_QI_3j?y+*FS*&kzPqulZC_~NJ2s^@X{#U=GU-M#Ks xbg}H6%j5mCWWHVcZaj*WdYfexTn;z@0MjN6A^-pY literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Arle-HoxNorf-Madou.bin b/graphics/portraits/custom/Arle-HoxNorf-Madou.bin new file mode 100644 index 0000000000000000000000000000000000000000..d91534e4c66cc6401aefad347c647d9771fa93a5 GIT binary patch literal 800 zcmW-eTS!z<6o&tO=Hwh_OvkX2$#Ev>;z*f7bfL*P6+u0O)>uYm6NMltX((YabxtH@ zmj@q$tSIau?4`zsf~3R=qtYU~SWa0vmD)v2QRAGs?cKKh@29=izrM}ClFedDmT}Eu z`y6|^*=k5jGK+=(~qqnyY}Sy#onighcpfVXi^1TmuV zVPojad+Nh2(J7EbLP%<=(;~5Uqw&W4;#$YTqU~E3{Tlf^O>JhiY=K|&iytpICw{#g?F>(T9?-P7{zbfOOcUCKAt9Wg zCs25Im29i285vRBN@0(C*#JWX?Vlpgyvw@W!OHlmGd^^-+k9QS3PN)hG> zN!W?#&gi(V2dK&o{(L9uo^`$ja* zz2WSPKA>?L&$J1|ci`ENa_uGt1cqgLoU|`o*;9xdCFO3jtcy6WXbB2f}C@IZ{r+`apX%_fL~I0Hr`Bg2u4VU(77y=7&d aElt;aV$$<%ZVeg-{vm$_x!=AtCH4>37fxpY literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Arle-HoxNorf-Madou.pal b/graphics/portraits/custom/Arle-HoxNorf-Madou.pal new file mode 100644 index 0000000000000000000000000000000000000000..d674342c5bb232c67ddefbe1b9e41a282612eed6 GIT binary patch literal 32 ncmb2I5oWaWU(cYzGL2VCN}J)1nU88?j-r7GgRt4&;;m5td$|a6 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Arthur-JamesWhite89-GnG.bin b/graphics/portraits/custom/Arthur-JamesWhite89-GnG.bin new file mode 100644 index 0000000000000000000000000000000000000000..e55712c760f1070ece1eef40a9ea2be7b16e110e GIT binary patch literal 800 zcmZQzAP8h+>{)EM^@ZYv;X}d?feHpDpgLrL%46`X;QqlN&o0I(%`MI@&o6Gcz4$v512-Ed zJ2x{sJ3sql<_3B8AKb~i#sA;`U;lsKgFg)qq*-pR|D6xvYyS?t@AiB_{nGN)pZ`dF zk!_g5pv553z&Jr_#+;UPj#tQ56Txo4P}9KB&~TvPLBj)v1cnC;AE5FM3=RwjfcSyK zhXWsga{me&8tm=s6DBAuU{G*yXlN*`Z#clvz#xA{p+CX?gZT&RAG<5&)Xb~rvG=d< zKi_`7`8cz?L$X5xBNGEF11l3d5b`r}vxqY?0z-@$8fGjE987kA(5)bo zAQ0kkw9sc@@Tf1T@BPE_hv7d%J;Q%9JBAj94#r{z=875ydkG1SlMTkL#U1GxY-$G> z{xkmL=WjUE($g^`<0qTE!UH=yh7U}Kg+BNFXOI_R)a#oX*m{v+4?_+x?K}|qr%=eE z$6^N!FBpYkKfeGw2QvpSx;dFE*!HwmvU4!7v$8R-7I zMDmAPcOa_U&N&=_oj^N<7kC2? zfiL1=5q@O{QudCj!r}lB!uc_`*d*=%i-MX|D|mD)!&AdJ{M;CNy<^1wU+ z$NrXCmu{piMiKc5OnUbkEj~PL*HmKP6~B1@;q~U;3M-m zsU<^?HcX}~bh_8V<;%my)GT_dbYeU%X<+lyoOD_m9M!|oBz&75wv+~K?i~DoI0X*K zN^ZN^a<{y=MD;I2|24yQ;d}K)!%~ULI$=#;@!a<8zciRxF;=@4vlNqG7f^>soL7(Sy zPIPe!Z<$6A!tn?Zf4g-tE!|(+JZ(QBqp5`=NB ih>c=_bwlm+Bk!*qvzFDl8h-%mE=W~b06YKz7ybYg*eKWl literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Arvis-JamesWhite89-FF6.pal b/graphics/portraits/custom/Arvis-JamesWhite89-FF6.pal new file mode 100644 index 00000000..1e5fbb85 --- /dev/null +++ b/graphics/portraits/custom/Arvis-JamesWhite89-FF6.pal @@ -0,0 +1 @@ +ÿ!–>Ï$³)ð-*Þ{2 EÃ$=S®9ÛF \ No newline at end of file diff --git a/graphics/portraits/custom/Atma-Astaroth-FF6.bin b/graphics/portraits/custom/Atma-Astaroth-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..43a6a473161456cbc52c29b416efe4da926c2167 GIT binary patch literal 800 zcmbV|ZAepL6vxkf(XN~5oef;m>L#w%O1V&)h2+&KY2>_GmK4$*A&Cw&lJ!B#>noc? zh-r$NE*+IlYiXkh)LWn|FcnOxs5wELy^vDc3zc>!f?uOQJcs9h&hI=A=hPS0kC+aA zX+ZO5Oe(8W8p!N}Ve%L>CLMBZ77!G#Oiv}M*6>R92c~WhAo?ee5I&T zf#WSSr@jIPS}l(yclj$p@lu}5D$XyZ*#b{Qq+AbEYx}@MNI~9lcT?5z7u3~YiB6%Z z>Pg9*?Xa0?%{g!|L#Q^Uy&{`05+x=xtD{rZuAGG_^)$7DoUWV(2k{47 zusiPLo795d3G45OxEn2+0vFhDBma&n7HbBq9%l5fOf=0f{Q88gaETfLJ1>Yk@M=~< z$Vdr-03hIvOMY_@g(?9)i}vq3v2cZPmPo%u`)T~Lm(l_1fc>4kb(r4AOYgb7?g?s F{{>Z!>nQ*L literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Atma-Astaroth-FF6.pal b/graphics/portraits/custom/Atma-Astaroth-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..abc1a70e55cb7374bb4c33d9da15c5d86fc9b924 GIT binary patch literal 32 kcmb2IkrDQ1T_)np!X>F{sS)+R{(6`&pRif4A_Euz0Djg6<^TWy literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..d05d417d0bef45894ff41b2e71377884bb98430e GIT binary patch literal 800 zcmW+!TSydP6#jR|bR$~4h-onV%Q^DWov*LCgZVxsb`=9H}N9;pzw=tCtg!J5g85d z8rkoPqu!xlT_FG2<5i*XvhLvUPuVIBNDVzs!Lit`%1WO?h#>6U8*9G*JpPZnK9owR z2t*?a87Do&@b+r2i`906!MriNRMQR0Nx%kZ_!(gbqF_8-Hvl=^|0f#UCmQokW}bni zcG`FDs+%WmCR>&BbRfwy*#o)*jY#DEjLsBR7-$@AJnbzNk}AE4LV0IOXS{djn5~!X zP3R$BMvGGDH6ofqQiOQH%ve~9C)#t;Q}rq{E3aT}(IP&(%$ngWbL`C8opUIH&7I&Y zxoW9KQ2ha1?1k90$n zMFf&QhbkH!AByT~GhAV=+pbb{6Q&~yChkPTpxEEU+naxj!z=#T_1JKXZkgmy|ISKZ zktJs0llzaV{!snc<6dQ7@KJu4RXvhJ$&)b>}y}mxmlO|5oxytW+=~a5fORl+fUohjdXJHY#vTpU|5rI}4p} L7M-Dn_UHZwj1R}k literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Banon-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..f6f60ebde4adda56be29531f9916124205a7b3c8 GIT binary patch literal 32 ocmZQzc&u8?!6n$oyGc<*Y^R!q)HlsYquW-$rDV)){pY0v0F{6WAOHXW literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Barret-HoxNorf-FF7.bin b/graphics/portraits/custom/Barret-HoxNorf-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..2c877c4751d26ad2cd5cfbcebdefc6260d828401 GIT binary patch literal 800 zcmYL{PfXKL9LIlsZ|xgyYiC$iNG2T;@jwD-3<>`0lmqeP)x^t`11E``1QXNB1mxo8 zjROa69K3kbgK;GW7cV*!6TJXMh`ku;ghy@$0cJFF-tEZmE ziyX8B880LOiCYr~FZnii@^x@wANGrt=gk%e2~Ld{RRcTd;a;M?kxNXG+mcBp03{)W z5rrw4^zklPk(jJ3O+35#Y3RX>lAn*y9y`AV4bypZT^2T|$9@TWP#HLz`qugNgr)zM z-VMDU+^paE+1V=u)MsA!CybYnh0%qQh@4{G;hVci=wFaax#@F!ihF+G|M0*2o_JL# z5jsY91cbVDI`c}Je0*;)-5<|_Msp=tgBtR%&~4={u-EfK;i+`yZ7t4*2R`n$2k^SN bw)_8;!!tK!v@AMz)0AKuH$ELOfR*YE4M{H&V*!$Ss{2g-Nk9`Jr(`{=S6 zzwHbR(mYH$F4c^FicYc&e9TOY((Dq9j0~C#8Eh8Ja*Pa&Z8yC)U($+|3Ccy;D5L&Be;hz+irE1Ir)wDjs`~b4;O-pDvYACv zLGXgU^8K9qJN_^H=kVipaJ|m=jqdKA6Vqp1_B{|6yhNvArNsXoivO7YINCYbqgaN8 z!^FtUzzB?SH~_{u5|2Uaq~wWtjvx3}AFVuLn5BhJ6_X#q}u?U026z(g?>&VBQfBydYdjQDH=*<8C literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bartz-metalliguy_Gens-FF5.pal b/graphics/portraits/custom/Bartz-metalliguy_Gens-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..f5cbe6386e6125504153ac2fd56fa82e124ed078 GIT binary patch literal 32 ncmZQzn5e2No5FEIppA!9@{4Ym(=<29aF3!%LAB}ksvFn=k_ZZ5 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Beatrix-Xeblon-FF9.bin b/graphics/portraits/custom/Beatrix-Xeblon-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..e46572b9852207411dc68a2c907ad682bf873147 GIT binary patch literal 800 zcmZ8eT}TvB6h8CkjP0^BvV~&0Gq9lB57HlKAnX`HQbAh}AsDz1LJvu3TV!bN$Wj)B z6-X>3u|W`lu=@~H(9f7A_GAw|6f82SX!ui?eCYbq-p=g04|Tpd=YIEo_ue`89Dt&6 zAn-+A90epQr%Jk~!{1u-w(07Gt7u?gw9pk8xV}I~bN-(ei@jdgH{Anh8hU{eASO|! z8nSzQ>`c03O#vUssM_czx*H29urL%6&od5qOiUC+kLZz9&~xwy7;J2T!FlJDowO2( z{=o%$cXg+|pihO9@kH-n7nO21GVJq4M3eOw+t&{NY@7gPPZNB0DFm3y(~u0``OVeQ88 z`O7nz*}Bo`#LDSUoxEHomkM4%;|zfpR5dnPPQtd&iI1MM%Sig0mnjTb8G4ZUn8tW0 z1&-759dqxMpaeUlBJ_Oy({~Ok+u<1m;RtYu2#muLoP{jBfgFO>=32kj{n)=I&j((0 zuXeh30Pd3^z+IDL>Y=fYff=cNV|gj068V=L!ar34h3{I35K3sF_sw7`SG+x9+$eOv z9_oR|mwExyaG}YfANOQMOdK`^#!-1$eW3>Bz?g2EZDw1=u|Sg=z0htjgS|sMWsliC zHpFJ(M5ubPdNKU*;_dYv>r!Lm^UXOrMXc33r>3a8ud Mv!YhiiA18&ziJZn0RR91 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Beatrix-Xeblon-FF9.pal b/graphics/portraits/custom/Beatrix-Xeblon-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..02c9f67bc807803f72ab56cf321d470adc7bd4e4 GIT binary patch literal 32 ocmZQz=;oL%`9Z*ypq(Z8!UztrfiZeFKkq%=htrOnq3G!W`Wu zX%bg@6usW)G`(NmUTP*vd(LQ)Gz@RVR?CxZ>KTF3RXM4BPIhS3=orT;s=mDjp6hu# z3>^&5&Bva^j*rL~NT|9_>F`i$#z*(vdkPUP8XM>z8|7s%veY&5f$uLe1@MF(EHVOl z2tsKH1AqX96lWQ37Lv4s;DZaioN?mg<{f9@k50Y}qMh#*zj2}hKwiup1{1qOf^dUT zX<-5?NV+nnAqO6~N==>943_s|+kW@9R?}RH7NNzWxgcrU1;?FW=0qeRyE6 zBNQ#f)VkAYJgU_MS9CdJ1Bhzqv~PAcuSE<^(^OUNDLOrM!#<3(dzo9!RJ0gAvrF#rGn literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Blaze-HoxNorf-Sonic.pal b/graphics/portraits/custom/Blaze-HoxNorf-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..fe4398ae447f657a561f63a39da22ad98ea2bbb5 GIT binary patch literal 32 ocmZQ@no&0)u)h9J-PEW&*L(G*d6QH>MM|Vc6~D51p>Wd#0Pu_s-2eap literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bombette-HoxNorf-Mario.bin b/graphics/portraits/custom/Bombette-HoxNorf-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1ea1bcb801dca18096f0efa1d0b52cb7d4d058c GIT binary patch literal 800 zcmah{v5wR*6r5aEajxNo267@`cXVhgxMGDZLC*(Ju%AFlXA27G4r-8=|DcGGuA`x( zKsrm;oDfBdEmA}mp6y-emN$|Wk7u6kjDi1GfdWJ|-EL*`Pb~!1fW~}czs+AS!_D_s z?W=dZe#bq>B?=dY)&CJVgs`yDNohp5~F! z%!s%?$2mMBSAlL@kK8XXjtcDwYm0Oe$B?(DdYH4-knBg5H?&1_d z4(b2L93p@LBV%Ix<}9w-)>XdX1nRNdKK#`*Yj)jZH+QHXb$}4E)oM1@Sk5GtNcr@L zFrm24>eK&Rj6Gc9GF<-Ui;Kf~X;umAu6 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bombette-HoxNorf-Mario.pal b/graphics/portraits/custom/Bombette-HoxNorf-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..21a1b2039abe4c047feee98f9476627c1178fbaa GIT binary patch literal 32 ncmZQzNaNWPn#>dJxu-ft$Tse+!dKp?VmskEO5)ieK_RvPsV)k8 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bowser-JamesWhite89-Mario.bin b/graphics/portraits/custom/Bowser-JamesWhite89-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..c0aa4ebd96573ef67f47231276df5176a5bd1681 GIT binary patch literal 800 zcmZuuO=uHQ5dOBiCTkm;h|uIvy0P`tgNZ*##o$I-@FeP~J*hqELA0Vsz|h?iuoXlR z6+sYk^iWF$p&laL+C!B}Q|&=1;%+RZLBTvoHH+Eo_;zXZ;x|0rdo$k*Gv5ppuHHSo zAkgch>rWQzwc35i7{DZwLZn5P^zB)cEZ4189b;a<&6q(@FpLmXXb6v}xN%`MCQ0@A zN@6CO=m?6Buz@;KSiyIE+u6YWuBrCk)`$0gvEQ-A#YUkFhD}^T7*VT@a(Ssynyo&%FlBk7BilrK^M)r96#9xIVA) zLrp2Fl2z-YL=M^5g$41QltVy}JVLQZ_ zC?tx(AbB`{NG=*xW;<7G5j9A5<1?+(Sss}sjaB*<`d@Yr>2b(<7M9HS;C0_{T~5$A z#ng8AU5#lld%}2e9N#P2qDBxkY~iVd)oYP z<_mtJ*RNrkccvzv$rPe6DRrtxYkM|qQ}<&MhgE*_X?HwxlKJ^zN-}Rx2c|_|JO1?X E2iH755&!@I literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bowser-JamesWhite89-Mario.pal b/graphics/portraits/custom/Bowser-JamesWhite89-Mario.pal new file mode 100644 index 00000000..ce89278d --- /dev/null +++ b/graphics/portraits/custom/Bowser-JamesWhite89-Mario.pal @@ -0,0 +1 @@ +RJKñ!ÆTº–>ˆ c)"ßw˜¸ \ No newline at end of file diff --git a/graphics/portraits/custom/Boy-Zozma-FF6.bin b/graphics/portraits/custom/Boy-Zozma-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..cb882679ca688a0d671e607e16c4dbaccc54a7f4 GIT binary patch literal 800 zcmZ`%Uq}=|9RBUzy1VK9vxK%d+Rc}s2VIlufvd*H9e0K)(W zCIn&D5S7=l_p@!|?U#X8RIrqAPz3`UNMHnT$+NCIvt`e?0C13v2`2EvcRg^EvjlHI zlHI1pi1I2{oL@+R1|`Z5I}5uCL17N%G=j8PS4aFj<$QCwW91}iA{=@1Y33zv!+w$9 z@GyeQ2Y-$ywhaG2!+_nhuCuy}R>38%-q^NwRkn8_&|wZNdJ7XwWYQKIil*zxz!(tV zH5l$9u)@=X;lKic&-;11*!c9E!}eqvi`^OP_xEqHGavK%s3N0wqg}LvmToFbC~IV? z0!+3}wnm5YtXfFlq7o#Uil$Umoq{1s3O99{KeI`<_AkuD;??ZChYzM+JbyysYe@F) z6C+{*q7Va*hZn50z1LLUUdmm}9Ve01aDWq78IDO|DNJSX;B=att~@S3DjznR%xhLR zqE!z3oS&2ZvOmCWdYKTvpI5(1n`;0x(Uq~m5+skvG>Dy{L2t6B{A;&V=Vf^JlO>ZG zTeOu?z7%qNjsUCB$Mp41YbC|;ta>Gv@YGVtblq?x5R?A{H``h+Gw93yO>gMa)UEq@vwG zOl#8uNs-F=;g1T+(cRPv(jbtaa_m7HMs8`frn%ioI*0Gi`Of`5?!BiZ;ZkCHW@GEZ zk*FZ`hxtLt9_Lf46hSV;%wP&YE^;-KKx#u${`^9&BuT^7$#&UWy z)3^Ml*>Ul<&*J+?v$(*7kSz(Kn>WN8;@L^}vHaGdz|lgJNj?^071VBXV;LF|M3~Sf zg>m5FXJ>s!RDtE%1FC}`zFYY^{tt>|~ za~O&>@f38(1ga#dgwj7j*Zx!Qsa9)%E8{xt6BlRuDijRDg*J5hKg9Yiu_x+Ywzauj zJMtT_2_XbX&jAl{xk9x&`d$4lha;#E20gIK3ej)qgCro(*3#L&v1Iz-p1bXjnw(Bv zikDuafmYyPB+&zt71`Q|AZVH(=tuN>3(!c-B3D`LgAyhpDT492xMMPmgzDm}DasBgFRw9MxkK=lLuV!5`eP7!x#lOjes3#xy-mhcQD*o(MMPy zkD?NL)9%b`mcGG`A>ym7E|!yb3nCT6-VeaDwW?z{Az(VfXXS*$(ME$o=H;c^`G{)$ I{b&aG3lFIttpET3 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cagnazzo-Astaroth-FF4.pal b/graphics/portraits/custom/Cagnazzo-Astaroth-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..304446d790ecdf3372ed350dd3e72201a505320c GIT binary patch literal 32 ocmYe0_N{wc=gM)?W>s#s@0#kDmH+C0)i2Cu;JD0qF4v(30Qa&FF#rGn literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cait Sith-HoxNorf-FF7.bin b/graphics/portraits/custom/Cait Sith-HoxNorf-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..e5802efcbbc0116e5f9c6e3c942df0dd8d66fd2b GIT binary patch literal 800 zcmZuvO-NKx6h8Of=euv5pXVPo;`}xCgAwRxKNF^Jf(f!97cR0@W3-ScnlNbynR%wD zh@?Ub!JvVltpqLFNK+#vLZP@&+W3Ybi^|^MG!E07cbgvr7kwA*<>PSA`ObF^Kmi;l zlyh8JS)IK|f#)qI!XZld5(hxNSHrELwI6#N+4@FZi$Z$osP|MTd{FDwx>Ix7T*^qD zv};N%fQpn-@!$XdzB0)6W6ML)fX~PIt7~U(!0l&-Bu*L9NS{a_T4b^#Sk4&;7yu0$NC#8(9J5O| zXvpHRyB!S(P+rOgsF`5$?oKqZUstp1LU2EK*|>}T!M+DgEv-(YGkr28t{=hvn-n!+ zPxhRt+yvQysmSE+U}WOAP9oZiUaM#s8WBb^rZ7SvKY70t{JgoiFq)$bGbkRS@NXVc z4&#E10vKT)Wt{q?QXBvymlHA&D@LK69oKIql|L0*^1QMM%_Jl~2)xp4c9nbjFxd+UQwd{h0o$U4NyhpuiT)!)ZY?W=hS)Srrqd zI3<+id(T4w6^iBZQgZd+_?HpZ_Lu*`iiKJmLJCYZ>)>U1 zAHi#G@9w;}*2~AIyOg{O@$-+mCZ(AUw-!^Cf`+0qz)Tr;VpjA;_GE!TT@FF@$$tT6 CBmJ-d literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cait Sith-HoxNorf-FF7.pal b/graphics/portraits/custom/Cait Sith-HoxNorf-FF7.pal new file mode 100644 index 00000000..14ee0a59 --- /dev/null +++ b/graphics/portraits/custom/Cait Sith-HoxNorf-FF7.pal @@ -0,0 +1,2 @@ +|dÿÅð= +%Œ-½w×Z[kG16ktNèI®^Ü: \ No newline at end of file diff --git a/graphics/portraits/custom/Cammy-JamesWhite89-SF.bin b/graphics/portraits/custom/Cammy-JamesWhite89-SF.bin new file mode 100644 index 0000000000000000000000000000000000000000..75020687a1d10f8e56f1b41898b6365b5d29e48e GIT binary patch literal 800 zcmc&x-)qxQ6h3L%rYu_%MQx#D$&08@ErKZ9Sc3ZKKm^eTk$^9QIafy6`a2g}bs!TF zgo@(&q6qp>RzY2d>x*n4+6{bD*_9#eq0Csjnyzi)O;iT{1AZTubI-@&obTKV@CP*A z!}&PjZ)!z`PzXw@q^hQAm>siaW{3hDIZ@C7ks7RNx~3O43Qr1pevK<&z(f^gEazne zoJx`%Af)Uh)(s&^_8;I6@j<#51SjhZSgMQJ>tmb_*5z_{&BSM>sPACHBFs|9;cF_| z*-~S_4VgyTghn<24KScaY7Earq+X9Fh*4tLs2kO~k^@~_0W2dVTfM^}2#F-hwtGwY z&p_l6WWsV;Ea%J0ziucu?F1Kao_(+%VleNZfF@u##w+wmDb=_6^jzRFHFT<&O}Kly zxYJVyOD{_wJ`X?3PBwo2Xrb}!=+&`H501QzKT3W~zvAc4-aT_aGrDv%lYkVY$^Twd zJEm$;eJz~_@DLt@A?UTO7;O8YUePM}UPZip<)lPJii~GCPT-|rdXbuhruFjfre|w< z0;E{8ZNt#F8|{du!3r8#ehzhc0g`+)oGW9jEpLb;N|X=rp>UYpLwA!68K7-4EK8IA z6b+O$-U0Ib;dk9yF_Md1C{+h;rBc$suvEOckXbwNX}$Vo6VmX)p}y(&t~y(eZ)jX^ zZ=1E&lG}Uz+O9kOyXWjB{Qh>bG5CJ4);DJ7;0FbJWQ?crY+Arlgplw$q+GziJ%J9$jkRVtliiBA>f@-pKmm1_# zKGcI{ZF_3jLlOlNhK@Fw^WPR!QsH)Ow)qh5j``=#ZTECHgL?9Fp1$Yz;~Wlx984g< zafw8yvkdlLUko@L0s)4V9FxlpjfVCI@9sxf)&mLf!~1ZY{d(9HW?3GOAj}N|Du}}l zxDbRS^?Ik%7&Hc7Zq#n%v)f4pO+nM}Xo0x-_Oz#?TT!PV$}7t&3ybdD@_g*>s;eUi zF$crqFarbGyL;bLd#YEL7PTXsdBalU@{(3_q^Jm=a9mw+K5i%_JpAep9`|ZItO)mo zHz(DBpIO3l96m!U^oILF@ylTPa&2MI=RH4b@VCq_HPa@y-hbiX>;HcxITZD;v!6$q zb@hfaca4*BQk@jTsMSiPi9_X?Xfwlxc3r7Y-~{~|Ne7v^P;?@(!f+AnYc#?j8KU*1 ztfER#!9x(77BTgisf#~O#l$f&AQWXJj^2z$fkV>_0~8pc1UdoPuf$LXE<0qiq3A=K z6tz|iu@hHTWPk#?UA!)RVg)M^@b8>a`j=n0RH~5OYIVE0IZCz|MDfzMi@AGvJON*X ziclOot^Jz?A`Xu0G!DlMC$~Kb3}k_%NH#o6cldPHtab z`f2}od+oRJwr4%A_Nw)fM5R=t&?pozRm)JJCeEejAxJ_2dvMA|#qG}+WY`dcifccM7%^z=#w>uy@WEzcEu!)4~Q+rC;V(m6>Pz2Z~ybuwF!!MBPGn z&?nzUT{-=3d8V~)=?a-a?t6Kx@uV#_fE|r>PcWRkTUeafmdG$L0iBy{cWO&2QMD(u zC$P+Sld7{UzN8EQtzH(dkJroeJ6)^Q%2FGQVxxFWT&5L}ejt?_%k8(Da47XMD3u1o zwEjl&!w-kQ9_mfs>lJv+C0pPJKq#mrKa(kQZ#(Z#jc$gaCxdZDSBBE&O)7O^1^{9~ z5SA?D5Z6N0A(6dl#As*Nt5nT%{Bph$NstTyzyWrkudrxCt&GzUl?34%5_{3I=l{v^ zJiryY+1q%s?AZ>OJ(23amoM<#WxtDUgYm3wIn=18(wL&>uZq_AokB^2MOSO_W%a{3 z*bF6(;W<*T#oS-#AEKF7Q>DqnM;UFXEeo#luacYCCbndlo$n^E|42pC<>uxG>S4*Y z^@2;f9Y(-`-!=(Jg$*cUCkp4wc!?U{cRqP%eH1){~KUM G7X1Oh%v>-4 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Celes (Opera)-Astaroth_Zozma-FF6.pal b/graphics/portraits/custom/Celes (Opera)-Astaroth_Zozma-FF6.pal new file mode 100644 index 00000000..c27fd822 --- /dev/null +++ b/graphics/portraits/custom/Celes (Opera)-Astaroth_Zozma-FF6.pal @@ -0,0 +1 @@ +ÝtŸo_½[9g4/–>1*°2øRL%9Sì))%­5ß{ \ No newline at end of file diff --git a/graphics/portraits/custom/Celes-Jones-FF6.bin b/graphics/portraits/custom/Celes-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..e7dc2a6a16ac08ebc1b7cf9e0adec99be147667b GIT binary patch literal 800 zcmX|-ZA=q)9LInE```82>e?ERZVEk|8XcNcMz*S;Ey1VA5{)s$D6`cOUpP%nTwRgc zyMs)~QU_+s9(0Q(lAxJO5Mx9o-l=ugVSptj#01kaQNXH{hqkvq{XKo*=kw!^zcNfQDK3&|>6Yt*3r1vz3$}hQ?sLf@h;3I6DUg9% z4gz8Lw#6xY4bhos+CB44gRh}tU7>|G(Av46r3IRzHGoxzhkEuXDaFTUq~37Y*zeia zAu&WGn6KiC?WG)e(Fs(K%bJejqYKM#?r9>8meCrhzMP(tA$$mkH+Ri zQ~Y-Bw)YZmw{y-`&LHY207|3<83Nz}cA%j7`ijhhhB@hT2`)6;1>>eyrhb#(q(B=y zg&+CFCKfJ%lSrW824&Y8+yDB&t&rcKn>ZM3{Bo3qrdzkS*WBY^&d#LmKlQ?JW1!BjN4i-gG5+|JCrDU2Dqy1H-8 z;y!k()sNGkMapP literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Celes-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Celes-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..45ca46d4a61a912bec73ceea5e4a19c9067a8f21 GIT binary patch literal 800 zcmYjOeMl2=7=G_|yVJStW}|JP^R5z%2qpy;j=BZ*K@pWr6BG2>*qk&;PG8SZsFOOhO5O7F;j){13f@TFy z!n4pYAA{~l{M`#!zwjdLBJTpUtFh$AukndruRq5h4J2o-!wf@Ey8|8^6T?$OijuiYz;YOW}Ym`9>3GUSSe|b|+zk|A92;&rv z;*l?@gf>2gC$+Q=w35L(k$2K8;Iv7VNC|Z7Zy0cL*kKQGCy} zhNi-E9nHm&I=KTU6p8{P(0L|s*&HS_O_2tJfi%#Jm8C7T5s2o_H6ulFPt+rpo!Z#h zTUA~C$o;7e->8aIMS7Vqll+Y{`gBnLpv@&&t>yN-%`JOX?_p;;{2|=^=3!KfOC68j pzaN=?W08uL=?Ceqb zYpWLvjPTAg?IGOpBc0Xpo~{=3|H0wFy>PkrTw9uLi;d3| zk2>lcH| z*qyi$J%cTDPSF)Tp(osav)lC3d6kyZ9;#6TlbEC{E3RRjQK&?Pb*Av?^YrZ8Qfe{x z0ive|1FlF`I&6VaI0+}94BkMXK3X(%LiO}k>0-zga&^NwD3tr;$2FBu%;=U-+M{C? z6BVLdtp@LQWH(XbPNq%c653s(CL z1KZs#Y#Whsr%rX>346WBQ31uZTN5Rxo4t(+*W_y;_IuCoKTGI>MX=Pt1(@aPNFA~A zD`3D#_RI3b))*g?o>pePICOYYT9D56UFy4E{0* zHsY*tHcVLRJL3@FbtyZ4b9LAit_|l*4HqlN`vDSpQv>_a&>`~mC3 BW+ngt literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ceodore-HoxNorf-FF4.pal b/graphics/portraits/custom/Ceodore-HoxNorf-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..c3b56fbcdc59ce4ff269eacbdaa88b45867fb889 GIT binary patch literal 32 ocmZQzNRiMB+Ep!_e?lk6bbo%h*Ads|EZN{qmh+Q032ajZ0JQB42mk;8 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Chocobo-metalliguy_Gens-FF5.bin b/graphics/portraits/custom/Chocobo-metalliguy_Gens-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..d7aef26c0a7fc683e3f3f9068c9abcd3c14739eb GIT binary patch literal 800 zcmXw0T}TvB6h8OP?96J~UL(`M+|i^WeAxa-a%Cq45nuAPFffZE=wZ!=gcjyfJs5~d zPePdky;Kz0Lr^I+<%2?NyDvQimSYPpfz?%{Mj7{ZcC7Qwow?sR-<*$o55QI^suCiE z(0>$E2mt{F>29cGk;alI-y@BU9j5{w-p}lvBpaKCiOGSBE30c6u_`(*e?C3>MTc#$ z9kg&&nD2spyguFXr|Q8%pXGV)S8li`Qa&|0YyeKQP${jUTtyF}pfe!=l&TtjwkRPA zXvFEa`*OKU`I-EkkC_kAPdv?sVH~0mB?&!I*3#PC)@) z$v$$0@Y;HtQVA;}>o+dA*S)iw+9=!vj>ig>R$_Z9gew?JI!QoqW?%&b?k8{wh!rWg zOo*&&XH5g_A{WIM17-s^xQTUPyUqyiu`xGI8^8dEfgNznIN%sAAecaf1Ne(=peE)p zM>vcLH)+P~BDmui0(A};rqP7}oQi@|A?O$c4oSfq`%j@z?n{5&PY&F#ZYU-<{mp{6 zzBVvl9S=0tcy15*M&QVSIxvS}c!9kv?d1dxvh9cJvgV6Gq)-)TaR6%2Sb-1?JctIJ zR=Rt>`)$IqESZt!H4f*fv)2SXNHJy^779|z>HO>Uo<;L0rt!h3j?=4UO_NFAU#%tY zre`uzE)`C?Xawg+YK-8f2}G%`QC-mqLe)X18r2k9gs$s~qASt62}3#vj!>i)v7$18 zun!C&Fr&%8J;^tI?n!iesWiI`d^06ofl4~R2JJR?FD*oSJo7Is z_uxA7i`^teFhoHL_+wj;tWndOi^&4ti}l2u?6^csWE5duz&7a{gCkD6^Yi$MaF~C| z&w?8>I;4ka^*pNw9nv99poUgS(NG%7oF^^@0`iwg`z6UYHNfeXvCgTvFXL10uJnggXMH!3`8h+d})&}57y<7mVFlOP86m4KQz>vXU!l1<<${@ht1v3svH!wV4_<+O*F&8k* z<}sJh7l={}S14vkWN=_$Vqj(90_tRDPynl4UwAiV(}6e47i10yIn3J-#>pVerq6a* zMqXjAQlOqBTmOe$t5rNE%5ONR;H_}d@bnFZFZ}BF;uowBSR2HDf&ap#oIMFY6e1Kp zG<;}y0CbxI0|(F+hlT|}yMaz>09!(H!h*rwqNCjW{+;zOt1K)6%BSC7yME*S)%Oqo z&-lJQV@~~RnLiD;@87@w|Nr;z85#BUGIJUdJ{b zC+;t7EMGa^-d6bAQs?x)dlOTsz&nMvitOyn?Gq0xbnE*2&!2BU&;BptXQuN!b~f)h zzB7Dh@Mrk<|IfdVe-8Zp{Nu-uUq8Nm5ad)6_qPqRT2nYPd6WB9J~jp(VCX9{a5IPj zS)2^*(NlKnmPWnacunohS;<=l1`NpzhZtIbX-10iE7MB0%I+oi_BlUuygx^I&%v}~ zG2sl#4CV|?60r(4PX8EkCjV%7F(EI&`p&i!G7qL?+(`%k#z6-|6GIAv2au%!3l5z0 zjjRnRYs$i`;|+67subc?c$wTe+<|szGBB};vkS8u$MMPNc1Q<`ZPI=4i;IO}Ug96- zjM;NS literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cloud-JamesWhite89-FF7.pal b/graphics/portraits/custom/Cloud-JamesWhite89-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..47dc3bc3da37f123295f491a9bb80e15cbaef507 GIT binary patch literal 32 ncmaDZqsTIaH(V(u{x#2UzbdEAni5tu`3)uvt_iUmifc^)x@Zd2 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cloud-asilverthorn-Dissidia.bin b/graphics/portraits/custom/Cloud-asilverthorn-Dissidia.bin new file mode 100644 index 0000000000000000000000000000000000000000..922c225a8d86d5c47e07877648ba1278654dae37 GIT binary patch literal 800 zcmah`TS!zv82;y+U1!(U^>}G@QI{htrjfc{z|^uaLh41V2NCjeEK2ajl}Z+(-H}X} z*lEcH%blx2pr0ba6@AaC22RreAX3;L}5f41?>yzAq z#x`bsW4-V{Fu*X(pF<3Tv7GKGFw(9pdE8m4X=!85ny85Sr`o?w?3C|kSZRpamm8OX5XMT3SVgwN7y-K(4s(c=d)-7{ zc4YPT1PPV~hriCbw$wZb4l{9@?S(gc%deGo+KxS$%wEYHFKTbUd_Hy@eOCYC7WgUS j!2D^9tE+7`ueYy{5RZpakMDbP{ko5BvJLvM&*u9Lzqb8B literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cloud-asilverthorn-Dissidia.pal b/graphics/portraits/custom/Cloud-asilverthorn-Dissidia.pal new file mode 100644 index 0000000000000000000000000000000000000000..a5ec0273a0a92f58f8a9e5e49e85480710d1ec05 GIT binary patch literal 32 ncmexgzb`r_SjggPK^B5{2Cs39Z)lprQw%K_WJn(t?L*s#z7Kp+K)n)*Xhvd#Loo22yWd<<{qeZ#zY^8r<( zXqGV>*;)!v*g#w}n%#Zc`rY@U26d|aqX-5IKk31hNE?1@obiP0s9eNH( zl%d!&=_}WBNGPHLvp13)*|o{xaT?rg8)vcO3L0Q1{f*d8Jl*b(C@uch*_&+N=8N%L zD_F!wF3Q{aC_jy3O;)ACKDeOHyLu0JlHqKZiZXfG-~6L7XIpGN_b?=_(5dThsIhD5 z&d%2~8}%AXHv-{6vcngdJ!~jx^N1p3Q5GdKQr&8aC6g*~e?I5vg71sxzJYu=gA%?X zk4Yqu!r4UZs^!w1-tg!|(()npOooO8ah?FUyPuEMoBmHwU1Y|tFsq@u-UL~YLsCdm z5t5?boNYa;sxEoPC7WeN`wvAi41}5V(l15P>ME+DG7a{+lW61Ue zf__X96&Uafd&YX4?is6zYZ?z6oU7@opJl{@I|jysef>6}IFw(wcUixmuIoQi`CAUg z&#Rw?juxMsdfcpFxz1^|v>P@?S-WD%`waB?v>EM=eZwbSW=Gre6j{L5Y;vP){6@WP zbZkk^FBKG}#FtPYn&|iq=exCDB&wJIj-xmbaD&~$-CTi`S0PR~$yzic!blLoOR`wk JNRnh3(m&HSBg6mz literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Clyde-PocoLoco-FF6.pal b/graphics/portraits/custom/Clyde-PocoLoco-FF6.pal new file mode 100644 index 00000000..df661ceb --- /dev/null +++ b/graphics/portraits/custom/Clyde-PocoLoco-FF6.pal @@ -0,0 +1 @@ +ä…§è*!L%ò=UFGT6vw}_vpE>9Kck|;Xch$V5SUrCQ0*=V83YPl3tSV*Lx&}ZgqE3KdI-W$ z=v)h4I>sJ4Y3x`YHG?ie((V?x&>x(%+)-!u^?u{7)%(m0@4eq|-tYb1dq7>ZkY+$M zENHChFmUq3*qL-!%5m716QvF<@Me(!A%m5@{edD=9RYo{yRDR(MOf!$g%i-`d9msyMKgvqh*Xi{vNr44MsXKIuEHH~T7 zimabrTI}_8!a(kA&lc9PgkHV{kV8%uk(Mzh?1jDY%y{PMjVPw^A&6kX!U$ej`LTSm z5G{0MZ<&-I>O+!=GAR^Uv-1yZbzy!CJ8zTZzf_J&Btw72BZrc~!apCimymFDU#sc9 zS=?Q6)D8G8a-JHRw3f)>Ls6DwQrQN3_Xl-K;GQ#k)t-pG%MWH>Oy&AlJmCpyo8>wV zVGup2v@N&9FOpAQb%Q>akDgmwUMEMz-sTgCJFe=z*8`3%>b~7RxXoU;#qPl6MRD%BGX#++vl#$$A_PBi9E^q>*zxqZ1NPu zOhz0Rrf4^WwlAbk?GAD{f@UyDZAa4EnM#Q|)+pKbzW)tR8d7 Q8Jy$HEZhugtn-}w0l!-#S^xk5 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cultist-PocoLoco-FF6.pal b/graphics/portraits/custom/Cultist-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..f114dc89206b3855425621e88c770a8ac4952d7e GIT binary patch literal 32 mcmaE9@1uIbv`<&aZkY&|>??^v#a&K+yv&WRs_Mxy0098N0tycR literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..f72767f38a30418d1466359a8c9be442f46829ea GIT binary patch literal 800 zcmah`QA-q282!ds=5A?>W{8m6ENWC_jcC@EOLtH(9||+-B?QMLgkE+Z3M_SJR8XNb zL&A-sHu?d*Lsvn;6((N3(ev&=BJJ1uBEbw159u9{xfB!?In{-C+d?Cdp?YVV!Kt9hkW2B0z#9uG~?CC!gD5+qw#VEujNw zk`6|(0p_H6-mcl!^A!?G1@P_U3pf_B$b)zuA(jPTskzH9vma(=q6xA7Rny>0uG=>_ z;bB4#rqiFOb&mWboz-PY?)$@yS?%1Qk6HU_DTG)gOI3&RG+C(=cZ<A1X+y9#18^lPy*GZWZE?q^yFgNEaI~eLJ>N`PlQETit~~ zgo|nz{NR^l+KhepB;KoBP+FDNP{TmaziuilFRrCC**@!(RhJn>2&sOpSofM9)3fOv zGXfegE+Q@EAo7ABZsk+1U>QqT_BlSMZ#+)8eT+G3zq9G$bZ?-utwV-#F+35k7z)BI zPu82NSg4tZ2Zsk(3uX9qAuX)p<}-)+qQXMzT*&X>i&&Oc2=SD87&Km;Xr$hrH4bwJF+qNS%j@Vx3ExF>9kb4e8N{(L6@6Uis zIjov)&cHGp$Iu(xZMS~tPnCG1;o9`(O_TIz+dsC>@`PYsU=hRQa+prS^zMLOW7?vgmBlQQRiNro0y{ly1kfmmSAqsb^uTu;aeSqn>sZ1fmY)1^X*P%hM- XINs0|zSbKuQl`uI_PjH0jaa_{hZ{I! literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Cyan-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..2c936abf6609cfa1bf23550f90b197eff78c4c0f GIT binary patch literal 32 ocmZQzSSoT%v_x2jiUceK{9DTKd=l@mCSB;G-6r^vpo8!zHCZj$)0K-{k`hzJ zAyH4!fQMiBhH(%fv5(zDj^4#K%~#59nPw=qBa=f5w15Sg;quny^p_LIV(ZP@%@>X9 z&P#oauHq;ghU~}#!|9pad~S1ab+F!FKYyoxTKc39<6_EcHUBeGVgZD7gQ!hbfq3k!^F=g8Jsb%sFS~d}qFy5JYge@EP;P zD3}e$fC3972z;eu!m(~{Y-RLSbEtkMoaC8Qazcv6QNyiv_^s1#yS9F~^L}WP5h%nA zN#2--Vk9?NFpVRu(|aiJdbHPS1AfRe`be z=8gkXd%JB@75SzjHi_6iXWl-xy)_A+9$ozIep@=?9U5EfNFQ&pW$c$sq|mpc(Vh7X zEjhJPgUmao2D`}b!Of75!)QgoX)(%NBmCT*Us2rWTJc%q`vfU+gL;>=(Fx?X^@l>Z ztOV0S_C&>nooYWIm-!I18zm^{!$6CtbJuWLdlz03nnMbt=e2wbqdPORpPs$E#EfEi%oc7H z7<}-dy;bW3Fg1N#k&z!wTQl&5UY6-@yN2ks%kFI%W?_!8ZJ#kR8}QAI9ue>%39%t6sgiE+`0`$5%Bty8T$9Jnhvv z>brt4mJ3|K!a}&$(iTrkPy1HBJ)WFIjKx?iaNvcA<8gK-mp;TF6i-QG@sU_Sx14}2 zFlh!VtzXCS%Ytf{A;{pfqK8F_?J7d&E9rg&B@rwO)c}?=x(+-b)^Y7*pwP~Fyu!Y^ z?zXJ9f4IebHqY~-C`lNv|6>8}^>+MhD%~oc(em0I?bD?tn!W;)@XAV&6qzFTbMKAI zh5=W<;#5Am5S5_?j!?bY$8k}L)bn?92bSi4kS9H4{KSKJmQ<4pI@g}u6AA>+$5+T! z(wi$Z)b8kP$n@8*nT|8Nn?Pu#;t4|1up7Ey7r0@-d3_qO{+)h5!yuWajh0dUY*s5K w%AqyspF4z+g!q8K34*73+mO3Eqv;@S(wz)wDj4$v$$o3F&rNS`)>+Da14HhYDF6Tf literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Donkey Kong-Badass-Mario.pal b/graphics/portraits/custom/Donkey Kong-Badass-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..b188e784ab9abec7b777d2a66a127d7e0843a374 GIT binary patch literal 32 ncmd-p`d>e%*fO2Bgn@zEB*Dl&_?}yh*>%+`niCay1v?o4y8;Tj literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Draco-PocoLoco-FF6.bin b/graphics/portraits/custom/Draco-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..3a55a061fcae9c84dae4e0be714d94d87079bdb2 GIT binary patch literal 800 zcmZQzpeC@RreR>Sc$xXw<=MpeMfnBz#W=+|K!Thgf{BTN6-crFNSpawB5g+6jKA~i z{@3kgXIRRh0>n!hl7O;KjS~_o9+h|n? zb0IAvFCa)KPv%d=js;~I0te;*;f96<4Gazr4>}&?2HjYGQ(gD6&gFTD?mG_K%sF7u RV8L*QA*NxOL!`nP0|2a1jg|la literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Draco-PocoLoco-FF6.pal b/graphics/portraits/custom/Draco-PocoLoco-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..ad67ac2c837f3e3b6a7fe93b984df0ba8dc83787 GIT binary patch literal 32 ncmZQzXb~{auP)yhwmDAEZ*RP%e|30a*kr*Tqik#>&rNUf%|)Y$NY1un5Lw3`qi(-sIJsSWZ*+7X1J zFbRSrEWIjlwv4oaF4uC7UiqCx}-Dk=nFN!VDsRy#6$vGT3m3&zN(VVKW?hu}mI zcMPn_K-2JtWDcc(iAI2SKOgEkT_%!b+2bZ#cAheCVIt#vmm};DEOYA3?1H%&`H?7Y zZLN21P6vZCbGGI7N=(RPfAQ?mFuQC+ri#Op-LHBV=0`=hQyA(BeCw%tuz!IOGsj+! z*#o<=|Fw7kp61QwEU&S3$0(wq0!nTcLNze6>Er6}2YK@(w~& z$kEt7lpA1znr-kPS%E2R4sRmBu(Ah-LKu6n1DiAL zoSCz8R*Th=L0PpHMGnN!7T_p?ii!p;dQS|v7xM?)8+99}28;QKrMmf&&w1x$i?g$! zo)0c93iHBxNw~1+xj_BUh(<9BP#3#SXicfQ_;^s278j@L_V!u(B&oc->)rg% zsTFhFguBJHzzV*Pb$731j31ggQPmd63MEW_$*)}%u)wx$mp*B&@w|9;y}z8rfq>t^ ZdjJDQG9i)M+DI!q$g(72DYS`0zW~AsDDwaS literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Edgar-Jones-FF6.pal b/graphics/portraits/custom/Edgar-Jones-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..8d957f67bdcbd7329c133d33c0c4aea1c30beb7a GIT binary patch literal 32 ocmZQz*sXO#aDRB5^Ev?uqxs1tiu1CSSZ2A|g==N~Wnw4<0JGK#%>V!Z literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Edgar-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Edgar-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..dbfa22ad1942d07223aefc4aae015b1e50379bff GIT binary patch literal 800 zcma))K}Zx)7{|Xiv%6#KeZbT4BIVrIgqTUn~9nst{VW!-2bf5Ejvv$~H|KH*9-uLl+@Bh6A@Sj3R z5`#)pNj5)GBmlosS*hr)IVKju?l^#0Oo^(Lt+E&cAj9&!Wl@!`O}A~l0vK+Yjdq1{ z&S6U2b9of-2aq3$ND=~pV0pCw9ulu2AmJd24E!1SQTt49-P`L)74`<6-&8u($9fY( zu0Wq8!{+S5;L!KNncn)%^O?+S{d+a1=5SW;+pe+{OUY(^zXBWZ6By_m4464vtW^7c zhyl?OXHc>w{M_J}JSV9o`Gyc;8irw;ovN&mi#j3dI5sWn1SKYreTZh5M#(jJYa&M?>2UL%)U9j3zqza@bsFlz zFE5S9+CM%`Kk5$V;{6|f7-(ZwTQ8_&KIspLoway`I< z74iBZKwP3I2>dvaJu$J86@1YTD)oKSB|Of|IYUGo<+ zZzsPvJLZbX9x`QnD2Hbx=Am8w*M}hnwm5-HhHo>ARv!pfNyj4%r&{g)x`p}>iZqsm zeGm!Vtua5v{7u%DJ~fok**d#mD@HG|`KSOM=!XI$+@cOdqq4|r!adIr^y;`=L?E+t zv27oKid3jDvWeBi6(eCMd8*5pJ~kF-oc=bqZM5@4L%g{snEd~fDZ6@O$C&((jc60IW(3o&W#< literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Eggman-JamesWhite89-Sonic.bin b/graphics/portraits/custom/Eggman-JamesWhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..320a53df730ea05767645edc1465abf549ba832b GIT binary patch literal 800 zcma)4L1@!Z82*#@Nb#<#r7Sw!Ek`1U z$4>Kck@Yhn!ILxZ>@Bl8H!_$hkQ&N@y=ZRC%?_?J<^zK+I0+Rff&~rf``g=7)0~lj@_E>uqdqQ7f8i}djXjm=GH~PHC1NqQG8bKn^>ajZg@z?nP zCU8jUXY`}$F&b~pR|j2HDUH$&UFEu|r@77j3$N{`QwmnIOPmBqYU8hm_|qaCEdGiPj0YG58KwzrXPhkr0KoDJe*gdg literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Elena-Astaroth-FF7.bin b/graphics/portraits/custom/Elena-Astaroth-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..e95ed9ee681fbe2a61874ea8d8caa8064bb1d807 GIT binary patch literal 800 zcma)3O=uHA6n?Xl&2BX51}#`^$VSYeo-9(Z)Hb_SK|v25L;^*2tAz$H78Lv;HX|0n zQzP`$%PyiK2)1}pDkM{>Cl5Uc9$IZy3^W%>+Cma-cE?FuYw;j{AH#g#do#>?Zvb`z z?KImOLl8Q_gjr!+*bHLaqV#CD@47#^*X({_mlztkfbiHDw=fu$YprXKzc}t4#`Cm7 zJM4HYxGL`1EpyA6HB;G9Xf3^{A)g2$ARiX7&xiaNV~G=CKb8b6fN<*V*;;>D7{v)& zJ)~Z?7Wa3hXFA*ni&}5wNi?(^xFYs=-A->+BKf4E+wf$>)H zgy;^n^(A+LoneH{v3r`M72AR55&F|0-f4LFd_Ftnu(^Tfnmnv4nmnbc^BGIMa#J~d zEF*P?!2`BQnZ>x`eKz5FZezW^Tv474$E!0#ou%Y7)S(h}4102@_guJS+DRwOnV=a` b4Sb8N@YK7$;sAUmw*r-j(?V6!N7~^R;Pm-i literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Elena-Astaroth-FF7.pal b/graphics/portraits/custom/Elena-Astaroth-FF7.pal new file mode 100644 index 00000000..bf4ce318 --- /dev/null +++ b/graphics/portraits/custom/Elena-Astaroth-FF7.pal @@ -0,0 +1 @@ +a¥§+!Lu>CØ2/:_G\O|?|K¾cÞs \ No newline at end of file diff --git a/graphics/portraits/custom/Faris-metalliguy_Gens-FF5.bin b/graphics/portraits/custom/Faris-metalliguy_Gens-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..498d91192afeb1df409e0958b64c119dd0a1fef5 GIT binary patch literal 800 zcmYjPT}V_x6#nkd&bUbC&qJxTdxgj#i5o7tVd*sk6O;BK=uIsuhy*V^ZNc;qS#p1+pL6kK8BfZ=FB-W-#NgBDGHPg z21yiEa!m3@R4y;c`<9E}YaUsIL8Pf`KtQKDfua}FNjxDv40#Su(R8t8h8qsvgRH6h3rCJ~mpqs{SOkd;TCqKy-SX&!In9Qg{ z(M)1Bk!Z=h$P7uXUn0-<@&4iaT7-@uNDdv)b3swLaAstds#K9NRU*|_bQ!fMyDDp- z%L%HAr4QNn@7M{}>J)35aSkF*e_$8097tI39~UMDNnXp-JSk{Ca;ReC29=c~vUwDI zySI|>^|BKym;G34%Y1bb9e8VWmQSG-%NRAJ-o-K#$ZT?5Wd9p!X02|S8;q-o(ojjX zv_+32uEfcHr9}n^BkW`KA6DQyNw(It#mR literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.bin b/graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..e314a6087c326725f7bda1111bfb6b23ce062495 GIT binary patch literal 800 zcmZQzARaI>FymGHpW%ozssamCF2eydK8VZAz{J1^gh&91b3nfSKLZf`XZR!Vhi8Gj zyaJHhz`(#LAui4>&n^Gq&xaojAOA7@Wct%u(`x1PhxrHlM?MBd7KWw+Ob1#o$S|-l z@GMCBU{tZQW@k;0T|$Gzg9QN}cq&?Im};2p9Fc6L0u$&kG|<2Rg$)f19~gK(ph+`a z)_HM#OShG&iMECMliL^cFEG3~@TK9G!54)e3QrDPV2Ib)7hAhZ`|2Nt)vNw7uolR3 z*vZsrXaGYk1Q-YfU3CjDJ1m^zV|SRJvAFQRT|EP{0#6LnK1P0n;vP^)edK#A^DN?z zQeFFje+&m1?N#P`*j=bivTSGg$9T}r{s6jr(E0p~a%_?uih>4mdi>_%3P5Q_1~vvE z9yvyN27U$x`F)M|)ojk(S1@xTd#Pdo|-7C2m3aAL!Y z3oim*2&70b0K?-z!-0ke2Oc;i0NKcZpTPiVBq~r4Q($ngun-aC;bT0(Vs=;_1nkA- z+4xzR+1Z(y^@4Z{_zn0C_zY!|Esj>SH(pr$;mL<5KOg))_`UzR(D^fR&-k|G-7?FW zvDv%6;f=DKBA*~1BO5R&vj80;&~VjjvCMMmcVXMKyje{r%{r;d;LPC8%+Kb|WZc;4 Ha6|zB+IFrR literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.pal b/graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.pal new file mode 100644 index 00000000..989c9bc4 --- /dev/null +++ b/graphics/portraits/custom/Figaro Guard-JamesWhite89-FF6.pal @@ -0,0 +1 @@ +|! !º.6*q%  zFüREÿc0\cÔ1 \ No newline at end of file diff --git a/graphics/portraits/custom/Fighter-CtrlxZ-FF1.bin b/graphics/portraits/custom/Fighter-CtrlxZ-FF1.bin new file mode 100644 index 0000000000000000000000000000000000000000..b61aca3c71892c0376b6c9dc554baa17298b1227 GIT binary patch literal 800 zcmZ8fTSyd97(R2KZP#YCqV>i2s3(UO4%84L5WJu zz@BWZm!e`9g0u&7Ol9#U=c$aW9WfHZ%Pb=}#JH!KT@dX1;ph9#e>t50KLFUEX@>(R zP^Tj!CDYCU2nQ;P2;zEJ{k3_y_WSu&=eQLT0gBN~CR@ld{v!a)%#=s=g{$$cL zt+3mNe??3P^_-!w=5RXSj86hat3(qXB>x!nz9WTZPe~b*&rEd|%fDC{vp20jbjL;dAV z6a_Lst|yb*-vU}{=xj%}crY`sfV;*^gWlKC#Oa}vPqLQCDdK*96@D2!;_lE+geFS% zaalPiiJ~Ow!il34>fCAX0V7D_?xlo<`FUNRn`>HRV_wDfqf?^n)b@u?48 zx5kQmD?VR$x(?G+ZqOvG!)> O6V;EE$1rvubGVOx_ zg9(^D>L$Cjx!W^kzj^wIid3^#^+T;~+&s_R>2!&VrXa7$OZ1SQOPvN!m(hyJL+Z#2 z^xj|yJ-Os~DF_80j=DS@9>1sUb@*y;1nLO|9TZSZ#|23iML|GPSVKC}D`GrnaiNIL z%Z#!vBSz!obUm)aA61p4${LZ8`jxnXsD%X{-lZNMtQ?0Hab~P=tT2AVz1rM+B@t?w zNXx0tsm^5vtS~{|kiH~cNGMyD*>jsSr4eDGHiBX~pUfrMJ>{0RFGq@8*~yF_JwN+` zg!cHB!t>b6HZ=V@m;^3hnD}4iGuX_q21Z4gflOysmNk_D^v^|L44;u6)~4nDcwW3C z>}-T}C>2kMO=J!_z!^<3x8C*Ke>R?ZvvmZgP0y73trj-@dg-vQabXS2Aj9Iv@L)1V zleBBw71Y+??C0jk1@oNjBQDT@>Pv}Wf-KAZN{W;xWpn_OmFmsDMYxBD^7D!_w19#m zav;Fs^x}dj$N|7uu#JKWbIwAAllPL}iQLeB^1EkK#Ymm3l~KP-;RVjgDivZinS^$O z(_jb9qF7XR=bLspfUL;P5)k3LvAY6Q4O7>?M&ncp$gaimsrHqudxcxh4e-Gk5X^3K e7cGj~WZOnum-!7|vL~RspafPyLnBNK>hWK^2siKm literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Firion-HoxNorf-FF2.pal b/graphics/portraits/custom/Firion-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..1d33a6a1c3520dbbdac9235cc55d34da2b84ddb2 GIT binary patch literal 32 ocmZQzC^zDgJmXs&_S?-*@v^3eZ;Qb9xccxD2D|gGbKYhE0JoS7i~s-t literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Frisk-LoneRedMage-Undertale.bin b/graphics/portraits/custom/Frisk-LoneRedMage-Undertale.bin new file mode 100644 index 0000000000000000000000000000000000000000..0758eda6d542be5f580a83c9b1859cf2711605c7 GIT binary patch literal 800 zcmZ9KYe-XJ7{{Nv(eW}J64FZBQEW=iybxX*Ye$U2X8J)lDkxbdeONWG)M({aN?9x~ zA7&EbAO$h)f+8~{JkGKYm4hUfi8eK~0_~WUvt8ca<5HpL2QTNm?|J?_|MUL2z~crH z+XZ{bT&nxBY6 zRsy&f0t7%pC7cCGMnq(AXmIEbktAJ`e*O{-PTa}hmBtvMc<#une0x{}zaekz^t28| zK_;YN^)kFh<5`qX3VUj<-mPfTYAxq1bUZs=0EB@EC``OCZ|vlBmHXlk(pi1|s5O@I zcL4-JBp{$@{jG_3Q)R7Q>iy&0?c>N;Z5PIa@qx_7&~;Bc2JW|Jzc@S^Gh5sakcCm> zDKfFoC@APF=)2?Yn()*9kq>;}!M1|O2G*Fr7WARBA2(*v9s zdPChSZ7!8AXjZ@e{`S*|J+o}oXV(`dhiO!+TU>1=owh?8`_KYy!XcSKm8?ipq{ZzN z?-CIq()|^i=K(&mf&#ZZ_5Zkz$A3z`k3Wd}%O$}u+0w-BtUXGHM z5dJF&44ANTK;h`|RM9ilpjjWXD)t^&t6bS?55OMz&}DtMH1G4e&F*f8#F6000uE-Y zlG2qI-Y@pPemI#hskDmchoJ`F4{x17oRh(Y{zYYvvZq=5pr|+h%1!q6*o3eu97u&S zRDt5$iVQ_YgjSVwJb6pm|1_Yp7%V!w%r1}p6#o6xoQ^Pnj*xNX91>@Y0E7_j_k@gS z#()se)Vf7vG|Y(b+lUW&1TJz-K6`C+t$uk#hCslOPKvHJdTn2O)}$DQ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Frisk-LoneRedMage-Undertale.pal b/graphics/portraits/custom/Frisk-LoneRedMage-Undertale.pal new file mode 100644 index 00000000..244e4f39 --- /dev/null +++ b/graphics/portraits/custom/Frisk-LoneRedMage-Undertale.pal @@ -0,0 +1 @@ +àîQ’!6|:ÿF)%?[ÎAN.^ø9ñ`` \ No newline at end of file diff --git a/graphics/portraits/custom/Futo-HoxNorf-Touhou.bin b/graphics/portraits/custom/Futo-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..beef73acb8a1c94ef8d9ccbf5207a98ff2c2407d GIT binary patch literal 800 zcmX|`iU;rWoyRtiKQ$1^odl6T&x@D+>$F{fO0q zq)7z{May1f6rqqWqLw>z<{&Di7ZbAGTtP)c&lY;M+pevk@AvJ)!}EQPhJ9IfU|s7!fLK9-l_3g?oE` z7-k_;aGWD{ApF9S%C)wscA$o9`X2>rdFr!Gualn$Q7BkOV?TtEmF4r~;KCJwYNAXJ6A> zXjE3{j>OATl(*`vsUzSVaYmid7cbjAfwoK98?803Dwi8@0|LJa=g>NRP}8Q_B)c?a zEOD5H&>F@Cg`}1|dbPnk%W{slxD|JBQHTz@MW+OZaoiBt-v@PKl^>#}4E9y^8hW|& zji-G$k0egwveffUuPY^}sVCDQQ6Gd`%oTV9t7Q7=*2x-`EYeZrqprWHyJnJ9iChsh zE;QBEwylP%VDv!fD6#}@r@UJ^o?)pnT`6IL@_^Jk6VbvspQiZ^b`W-}R$q(~i6d`yvQ(-Kup{c8DIF|qDxM){D_6ZgD38*WWAN+g+KAeOCkUO literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Futo-HoxNorf-Touhou.pal b/graphics/portraits/custom/Futo-HoxNorf-Touhou.pal new file mode 100644 index 00000000..5698db34 --- /dev/null +++ b/graphics/portraits/custom/Futo-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +|SJð=¿oÿ•V:oJMm)÷^^_Æ,ÚN:ïu¥ \ No newline at end of file diff --git a/graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.bin b/graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..44b6629dc88755f8b40b3ef89d53c0ce46da7660 GIT binary patch literal 800 zcmY*WT}V_x6h3qB-8-wRyXy~T3%O%iTE2)@_G7yfJ*Xj6kf2+!SB#=qWF^7vhxTr} zu{|s)04;?l!!VwL4g3=fe6Y*D$GjjF_vIqW@gRI5(@dQ1(-!7j0pW&ap1CA3q#Of z+52g$6HP#zCg@MiPXo7(-d0V>Q97vG((26Z$DdV|kM4XUt_;tnwnP^56on{?rYjm~ z6nIUbP*4dFqJYMw#)%(tqB_-yMhTCnnno2K!^_n8-Daqp<^M`mb+Sowq4KE#e^{p! zC~!lnaU!Zh^rZg%J1DvS0pfe!t$!GO|G-AdNGUl$wpG>EH3}7%R$S-nFPv^HCuYS# z^(|gZ%TV0v_pL)W_`X8|#n1~87_jb|cM>*PBugqrSTd)`k|3ZoFhRN`8%;<+MkGz6 z$%|p%-BY=RH#1n&KjNTvjMXM}29JXspyXwBe9x;RcD=JOXQ=H;c;+!o!2q(u4BijL zaFY0=QO}8|ma(wE_0ih+d>j&*<5DmL6(}cr#XWp3~iMa3sVK^RcndS7Fc<%7`IfKKS4@ z)XPq=_1K1UyE=|qX@76swt7Ed_gX8R>_8a%S)+P5sbgu8CbH298<}&vfz1ho| RtJZ{d#kMT16-|5Y{{l4L@RI-l literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.pal b/graphics/portraits/custom/Galuf-metalliguy_Gens-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..aa64bccfaac2acea356e734a8c414937e80774ce GIT binary patch literal 32 ocmb2IiOinib~Vb>PAdGf;l1h!s)c^KvL^%>7*aUqrEjSO0Lx|!0ssI2 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.bin b/graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..4609879ec5fdcc52cfe09a17f1ba33cf44d8f155 GIT binary patch literal 800 zcmZSJ=V0ex=Vaqx<6`4y;pJk00!9#EU}gB<)bZWH{z3f*eTnZPkL^x^q#GIzG(0%) z;lYm|e?BzSAFxlD&+s1v8UHc_|eh)nY+cdxpVeIdWT z+Lm zP0r=~#_^r;-$AChW``{0)GRpb%7 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.pal b/graphics/portraits/custom/Garnet (Long Hair)-HoxNorf-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..0ead599ea8ccfe490d2f50a608908c3b0e6c03ab GIT binary patch literal 32 ncmb2Iab{s)NaeX`ctS+hKTk6*dVac@)h;(J#UMY4Wce~rX+qt6Q#BfUp{}4EvL@2r$R`leE9t^RKB#B5yzE<2UwEltb-gb=lx zd-EWE{cLwtnG6a@W<~Sqt)cdFhpJ_&P>EV)wP4i#`F5asYErQk6D{YRX{<4Ih(}rM)XRroi#uC<0aXNJ zko_jcCkDdpZyVo80VW`vXnI|*pJz?%M(=vTTFugh*_PzpNcl>D_x!ZHx88A#6rQOV hX|0?ICYxKMQSLPj5{xs(_b)_;yt)n?f?lsF^dH03``!Qm literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Garnet (Short Hair)-HoxNorf-FF9.pal b/graphics/portraits/custom/Garnet (Short Hair)-HoxNorf-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..4184013f6d74157742f52392337cb602010b1f95 GIT binary patch literal 32 ocmb2Ixu4C*5Fh>DZ+>zLPo$HG-Cnm75*u}WRnObr401OG0LV2AGXMYp literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gau (Suit)-Tsushiy_Gens-FF6.bin b/graphics/portraits/custom/Gau (Suit)-Tsushiy_Gens-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..3a8a9553cfb94914ff93ce4bc67c2202aa9a661f GIT binary patch literal 800 zcmb7CT}V@57=FHU=FZIG%xJknwq=P)CW1lT#5srr)rHzs1-RGb6JTT%lBr%DfNF#5)H=vj4*-a z@+gwN!RYamtuc{Qph}XZYPn{+V3vPv1nj0nvSy;IeVPWArU&M;Y=U>VWam(C^6|Z6 z7vl%UyXCyZrUG;C4K|Ba{J}T8fpBQ_M#FqZ)Sc2ti@HA^Ys&Gmukzyicyt6|)%>Kq z856J>%b&dgkFv+r)tv9n{TnIjkgvbzg$ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gau-Jones-FF6.bin b/graphics/portraits/custom/Gau-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..d1ffb8f2c976e0b748eea9bb1ac6e265a7785817 GIT binary patch literal 800 zcmbV~?@Lo*6vxl?&duMOSvu7DTpd(M;UZ{Tsn2ADK@s)NLU0jbf{>8prKa~Tdm#z2 z7hzH1_QrY>SQ0u!+E$iUi+mxZS?n57%L=b)xNO_$nJ@YSIv<|r#l!cU^F2JLQ17Jt zpMg}KyF6hNAr36oU=hy4Q_wLG=jW;_HJp);@$M4u4S*f+9uQVF%Z4R53t;JsXC}E6 zmx2@*1o{TLU;~m2AM`LC$LeK5HT1y?SULW+4cS{dyT3CkT!R4s3FuB;by2gur?scc zWEH^%<;LP&<_brBdudMHMUVAMd8BMUdkVrcw`Tm>t}-|6uy<04O5>7O+PZiu5eSZc z7%Ip&)z#_gJ^i}YMV?DzIE<9hXb)oVw}tS#LSE*EIL||^n|}+HlZIpqwxScSz(lQ& zT#&5Ry$9}0T*3sKTLBrSVG^9o`-x~f-cP+uc~ZUTK^X-$k>MXkkTD~9b?t6^Fg_k1 z5d-2$utOlL&(dcRWl?VO2Rgip;#Wd0#pQR%j0d0yA%*o&z`^>2*zI6_{x@#BiQ6Pa zsn17<$!H{Ivb(6&SXtrK1KFZ4((@WtSqATfqM(Y1zuDS(DjUkU=qDl_K zUWZ$X7f$I~HlfZBQD43yep&`%e zs5FZr!}-Ik417%T5()|o4Ezj?a)%8VnV1-57=T=cy2kAu@e0>9l0*)jSh%3cp`reO zeZu@-tR>y2Oc%yE*-AdEZ#ZjI(_nZ=%`uNPS%~?M&|C8pYl1)Xq|8p3@3a4a!Q|BI z+B+Q!8-)*fCn+--od3@8pW!FlMn9o9tF9dS1GEAO95{f)0Wv`jWnfs)-~gm2I3zGU zZ~$@{z+8p{3LwUTh9eC=GUpBcGdz|#;`}nLg}JNs z%7H}+OAZ(vakt19V6W&exT38T`=tKcf9E|D;~b71JpSR|r@x>6e*f|R|NHa%+xE4c zKldL9>Ve^hAJ_}>GvsoK2s1GXfE5bxbC_$03urT1K=?q{HaHw;>Cw3IaAA3Xtt!yW z|NHBUzeg{hU*~C~3JiBKMivGmMh-?ECMnKj1|~*!4hCyx9!54kLv9uZd2xl6VJWkt zR6p}nwmp%)p>A-#qp06AVH~umu%qj1XdSZTp?<4OgiRa9J<|O0y9RouxQw4_whY61s8waxpuNYyqC0Vh^5FGb$=dE(M8`&<9N|G)Rw%;%>*6h3(Iol!~2 zRD_#df>oMbP_9j!_u#+FZ=U~n_u=`E%s=l6|2{I+V6w~)U@MGX{$Bo0&5nwj&u>59 Qet!G;`u_j&zb(oO0F0*t(*OVf literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gau-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Gau-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..b76e47a66c5f3cc43960db55a73f956188b62886 GIT binary patch literal 32 ocmZQz&=S2@JxfB|P%+E*zKb+YMfZWY`n zI`u(OkuCb*s~{rX6dD|3FM@MVgNX|=VGqgz)-97X*T%RXA9@aa+;h%_bK!mfTY)wN z0*C*MK$TLL#>c>G>lS)S43X{RfsAD*cSV&ToboE{4O?eihsjr>5brNv(aEs{DR?M( z>r%GXAg_%Y9!o0p-g5HF^9#Mx?Qc4H0!L^0H=ZuoL-*DcI>ydNlbIb!Xn^s~?gnOB zCL)QLHCBz4s4Y>dh>1!xqL+!{%J7|;Bx)Xd3$NKmwLKr5y^62oO!O)~5nrJzHv`}e z+GiWi+)NzDcGr{jtZZ$80=n9&Mf8N`m@0q(eqh6FPz!3GhhngF&qzgdw-IKm!$Qx@ zQp)eg?BB~2P{@sZh-YM87OC>L&@LCaVHe8@JUr5T`XRNn*V0$CRc%>ifQADw4XdzR z<^n`ek#4Mhdb)nJ?lBkO=x;7Rr}1iAuK(s`&yVJL=RK8YCtQM1NDx7m3}TYsrF7}cv!D8~QDrWc2ClV^Lk_)X zjEm-)Rc|3Hm(67-WB)gA?w{@38+erAk<`>7TyUp&iPI&K%7Vb}gZ*5Af4RV6h76K+ zYosmQpZyQo?q>w5*NGyzW&40Gc@pegFUf literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Genesis-JamesWhite89-FF7.bin b/graphics/portraits/custom/Genesis-JamesWhite89-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..9a600983ab19f1be4263341862690e388ef8b4fc GIT binary patch literal 800 zcmZQz00KrvCI)tP4n{UMNidfI$YthcW@D0Mlu0h`=`V2G*;yw1CS>*6pnCZ~H6K3w z{Q3R+dmy-X?}5MvKB2d7g{EcZOkNclx=Mh7kKyfuPaodCnLVSl@bzPmc?=&4Iy9~r zoY~;V@eRyn=xDeSa3|v4oPT@FJavQeCW>Vm`lZce%j6M`lnfT0%$&{a$2ONGlR=o_ zs@6%fMUk64mjUkxzWsaB0v63dAZ9T=ai)L!g z%rcnDF_l9U2*p^eSEU}>%k-3~m#vehyG2SwDt#9FBX%kFBE|ydA6yT(K7idv58?rX zghNHc5tvmE7=AqXap2F6h9eD!8V)fuGBmooJ2@#Y{@Z;y7A2lp0 z3=$G`b^jkfZftz;;KvVpd3pA9#zqDihB^jWCU%Br&!0Sd@+>Ehqi4pS2R|w*{{Q>` z7YwUwr6t*$*%|bib=dTn#hJxj!#{og^!fjVKbL=A`19h=i+^u`YX1r9@d@$@NvVox zTe{^%cqgI8k3Z0s@%XMzj+_~1))z#%d@b2B& zGp|l8jq=~%x3RBqPSU=Dnu{_IZ(rWDY4fV0?6gw1(3WK%+NNc$3zU24X4zKhb#{@g zlWi`~)fCqd-WF~qb0_yz|Ct#08Q2*(nYb7@*u>bx`1C+rel~t~es+0&d479&zK84| znqM$}VW?+dIehrhnGZZxZ;P}JwN9usgiX9&I74`G$r+;Vu&dl&(LcxOv f2Tuyh{`k-K|KP#;_WX8vc6;{s%c6Z^&}OTpJ1bK0hnV2CVra(IIC(I5xI7pHzzlH)C%;KElv0b) zVBA~CG&ODCYJmS07~u#EnQS8dEL9gT+_?CCl_H znI#tpPgyjS?2!<{LSXQ0yv#YoLg$NkuP%UN?>+z%Mz0hsWIR(xS{7;~UF-=A z@Mi@JET{%mwHmi?bex|XCi6^mO||=mcE$b&S!q}F_^s`)AOZ=(Rm(=fcJFW&(j}pW zvan<*)ty`U_54X)Rs2erRl6A4GpB>G>n5K2w+NJfMrpB z$K`020wTcH!A6cpKm#xclyS&r$YiFbQmN&T6>Fv{RY{O0jdrzd#auB*F3~316?@$} Z)}1;wad~~roP;SYC2zqF^rHd%?hi)BEvx_l literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gerad-Tsushiy_Gens-FF6.pal b/graphics/portraits/custom/Gerad-Tsushiy_Gens-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..18e8a7af4c95035370543f4a3710d95ddce0dee7 GIT binary patch literal 32 ncmZQz;85(<{a_m8CSbQzq}c0wRF9!`xJ~%{^!wFrkxL^0q(=*s literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..45d8d9fc9ed45986a4134fd9f62a2223d83934be GIT binary patch literal 800 zcmah{OH31C5T5O}-EC>zO-iC5fd$b9^xd0pnm$<VJ$LdK*^w(CNaC*mwSLRmN zpF=l_D{s}j7F^q>)B0wi|GFTA)hL336r_r(fHrWYV~j(b#^i{@mjSjAPNMj!53C!`<=i;#sG2zg{Sd{Z9ox?P>#KTU~4yE5c4 zPtXyv`3b)z28l#l;{50(M_Xj@N_*V4Aed9;qM0*I+@Fd96#mM_QwGYiM^a0QDpn`yFj26Mgxfck`WYwrtQ>^$^j3a=7X6Oak5{T5a-+^Te%YlJ( zB8=DN&$3|2*InIoW3(oD(K6jURmBZ0!n#$4Rxluq6$W9~!tOb5;^AcW(bB7xbH94( znL4I}>14W?7OIx|NMa#dEF9jX-bfKK@1w8zf#|zTI`clW{JOU?XjB?OqeXAYAIjIS l{M2Gs<5JtIfA;BxgHOf>Bd3?tY%=xo?i<_uPQ@d7mEX@S7t#O# literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Ghost-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..f4a72e66b3cf3f5bfd0743b0188e8f83b7652ea8 GIT binary patch literal 32 ncmZQz;846*y)mw`*gW6B>#U=iCtqB5qM`(Yfs;wHgO(-$q+AI| literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.bin b/graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.bin new file mode 100644 index 0000000000000000000000000000000000000000..1748c47e4a156d7c2181b3b7e26c25a2c005b4ea GIT binary patch literal 800 zcmXZXUq}=|90%~!9`#+>mI;0U|G`nA^LVf#=$$G8ASOX3 zeq%FY6y}-yF8~x!L7NtqHmWJh?22)(D0Wp*cP%@#RqARhVz7a-f)!}6BFaKpu@MuZ zu_f54zy2x|Mv9`ws|#fE`}&eW+k|I>*ZAi}9!yqMRYv;1%)B2OZEs%IRJ_&el>M@zaPkpxQtl3S`%9z} z*_h8Qn>ZtO$zD8;!^yL`Ik`Cq#y+YuQra=b&J?~hp>2%w&yUeau(6_lsLC^37paRd zS%UB4ujpLMXZ?ZpP#SwmMqHGFO?aoVNf4=pT$QvH-TA{{^BDg)K*O zJdThgg%a+S7443y_BVxm67eg796ZC^VnHW_C4e=rcVYhbl8{ey!eR}u&LkXNK817s zCey?yeg+b!mrtBHr)H?rD${(~v5;TArMfnlg0E7Cs6BW$RR}($+2~~EiuF~8x39kU zl>5z@yM!iA=%?_*csS literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.pal b/graphics/portraits/custom/Gilius-JamesWhite89-GoldenAxe.pal new file mode 100644 index 0000000000000000000000000000000000000000..30061079a6a6ff4068874b3468c96dc24b159285 GIT binary patch literal 32 ncmZq3`JcZ{m4zYNY=Phbv-@5~g2_BA46(`a;R^D~j0s8ry_gBC literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..2926bb238784fc94a366f2f8cf9acaab1bdc634b GIT binary patch literal 800 zcma)4O=uHA6n-~4N+qCyOqHj8=@3f(k%5R2Jb#U8|p2kR{x)I%*|Lj=K)W?Sq@ zX{|zoe`!wQO+l$WlypP=L0B6K1(DRWO$9wz8xf(ln;my!XnPXpV|d@pgYUg><^lYB z5#%s|Y)%`G7~lv-b`#)W98SU_hQ#Bs*xAlh>d|PSSSUt~8}VDQC!Jj*a(d64Fb8@` z!^NTB*{jAyy=}#lKTuyvC{f&s5hfdj5m?wYKUtFm5=0lhLCY=Tu=qcEr`4!ulvT%t-Yp5KltVN z_F74@UPDWdHoY`suHt?k;<+i~@p08oj{qJcAK2fdFHZ5gSVYn*f3sbKICZ zF`HX%ekbTaQ$}4EegMO t|2T1(`@F5YA=#cBrUK9T_R0_J(HD|Z%~L`d3VG4L7*b6aTgR}P{{y;4+$sP7 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Gogo-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..1d242989ff254918ff40bf0f52f74d683e944d55 GIT binary patch literal 32 ncmZQzsL|i+z0)W}Q&ZJKYLmb*iEV=KB=~fbC5_y|^z@Ygo!JR3 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.bin b/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.bin index 2d946ebc81fbf3c62bbe27e3f5909a0b999bab9f..e0f627cbfd4c23ad48aed7243057567c5afc1fb4 100644 GIT binary patch delta 372 zcmV-)0gL{i2A~EU0}2xy9~}=7JZG`*e_Vf%0t68p91sEkD`URSksNXo5bzEG6ay&) zLp%@g4e||QA8?VNU>f+C9P|kEN%@U;Kga)x_Zb)n3hT;P+rt5F7xIfbSph&n#mT;21!h5bpqQfRIceA3G)=G>=%vAYcR>0UN(x>WuMF&HH=~fR);euyT9{_pr_I1)c+8u5npLv~njPJ!z17}x#c({eo=P`9o(zLN z)8oS2N+yu-fVw!ZdBQRub=RE@=cZf9Xo|0O?r%Ci7rst*W5wQ4Yh>7_>+NR#qMOM2 zxWyFb$1J8W1QRB&?G5{tRW+*|!i*de*aF~y7iAEpI7S<+uru993<0=c*6z}@M2-6Y zl0eqB)1i{bz%6v}Y^9lPW_Y zb-F`a${HU)8gVx*ND5B{Img!!2fr+dGeI$ODjY&)Iljw{s(2q7)mf9HW|Me(E2@fJk6?FUUe_wok`Tzg` diff --git a/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.pal b/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.pal index 5b653405..3ab01298 100644 --- a/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.pal +++ b/graphics/portraits/custom/Golbez_TAY-HoxNorf-FF4.pal @@ -1 +1 @@ -A”Z¥Zs¨÷fò-J(-M¬=v>úJ~_Þ{| \ No newline at end of file +|”Z¥Zs¨÷fò-J(-M¬=v>úJ~_Þ{A \ No newline at end of file diff --git a/graphics/portraits/custom/Gordon-HoxNorf-FF2.bin b/graphics/portraits/custom/Gordon-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..8760ea4e1288989cc1ae03d04ca4462de3b2c429 GIT binary patch literal 800 zcmaiwT}V@57{{OYJ!jjQnmaBbHQA2l#~`UpFfHwzV`3jz%o~G(oM}NMwjy#X^&HcN zp~IOGBkN45i>}J*A`D9{L8GFGF04o=eOUD2azZobd0TcJ{eL|0f8e?KJ@HlSJ6o_U zj6+eOrF%5N^bQrKL0Ijy1^A1LYFp?N*LPb{x| z6YBS>9@0q^(iNebTwb_n^BwV2Dm7iz-8Egcorlj)!!#WzzA&d`k#HH1&{fU{M2AzaDjIm zKO2+N4<^pX8P?I8ba~oP)ulSujgk8nl~rdKzuKD^IaW@h>zHrG=sAc47x!)go@_Tp$DbU2?fW|*F H^(FWlW=t0V literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gordon-HoxNorf-FF2.pal b/graphics/portraits/custom/Gordon-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..59cd2761d74376595560ecb8e25b1a236dccacfe GIT binary patch literal 32 ocmZQzxT-l(kxR1N$kyLaa<^5v)^Dq20{hcX7`XW!3uRyc0HwqVy#N3J literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Granny-Zozma-FF6.bin b/graphics/portraits/custom/Granny-Zozma-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..db7509bd227e6698c7ce7fd5f1294dc043a5ffef GIT binary patch literal 800 zcmaiyO=uHA6vy9W(8OU`2DxNpca^BBTdlR~yWRtoxj8*qVdH|BvC#`{2zRW&kEDrDrJPjK6TV zten)VN7X7!C6(zep!v|S;_j|Taza1KtBuS$iJKn^FJ}+VwV#yQ7f;%0n}VT8PA5*q z6Y+iR+j#xI_d?D+UJ|>JtBerFI3gXEkuPGIQZvUNXzQeW&CB>F%=acU3A#g%dSCqS z*x);eejeNO2ETIWOkwVGZ}06RISV#>oqv_zsoiVbUh$=@W>S#NELZlkZmr`;u+-dE zs?M^l+Om^qZwt5DsmoeR6hVTlu87hIa034jF*bP+8TZ3f5VsVeLf-+W=$714#T71e zvZ|{C71cq6g_CXaLgYLEN$JNyk4$ONd1KMg4MRVxgAP*=^{<;tW!=&lkKqDZw1Mw_ z_l6d-CJf-CdW!$(O_PKbLW)(fS>!lkWJI^8T_%@E1_G?48})wv8uVS;u^s=b?VPq} za0ZhY!>4M+xVAUGL5CD{O`WJ(a{u2cX960d_j>%W=zcsxb ye-^K9t~J%^!`QHeb#!nQty}8;ievp`KY?j1H$8qAH4lEM*}CuvHb8^t;QayMga^_9 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Granny-Zozma-FF6.pal b/graphics/portraits/custom/Granny-Zozma-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..fc50d326ec16751a882c383f1352f273d483bb8c GIT binary patch literal 32 mcmYe0=2Z07JT75kb;E0ts-El>-B%LJM9j_pc+GNR00ID}unE@y literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Gryz-HoxNorf-PS4.bin b/graphics/portraits/custom/Gryz-HoxNorf-PS4.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b8de6cbed637488f05b5f60c0ea8f1f3a6dceb6 GIT binary patch literal 800 zcmZ`%J#W)c6g`d|KMNdOi6ui6_a|f{2#B492~}N?*wTqkh>RUV{Yn@zAcYMi1|l&q zFwm$IOZzHNU}}(9Iv^A%A{`L8q9Tss_;GEMMilXm<@#E??mtchjx&nc1bwA{I}+Q@x#v|GrPTlb@wqx^3B(v>n@XJZBy%67Ft)So_!w z+mjtBWhCX?p56wMOGsZv&7pRLzswDIsHmYDZmd_gg(G%^(`=|vv4JWC+|#MZlFgh} zp4HBq&+@(U*ZlW|5Fs)I9ry4WCf?!@YdqGb2oRtSAN!;~#3tThnKV8INhcz)EE6wJ zNaD$M@Fjn2+-zNKH4B-7R@T<`DeDcC(ZCcFf)IY`vUx6}f_E4Lk3c!eWk^x)tL z?4f>9DS~met`wm10Wn522M=u=kk@M1pZ=Imu3Xx)Mr^FC1GH8`TutnmW2PP>tLg+s z8&4fbCa2b^J-z;Xse5hfXZyv6#`^^x!=U2nab0{W_FftzB9!SS{)C-~02SeJkE@~O zE0Hzt z7YbowQj)m;aIIYFtg?R@|8nm6iqn;;+jl}aM1?IvnVcc@34W`?)!}-PyZqkDE2Vyf z>+6nz4QA&|%`wY=hSwO?UIa~FzptdFRdz^=B+B*nhC;#M!WlyH7I77SOPm7p!3}S~ zggCsL{MkNMB!m|w!6szc>?zzhffsm5Okre*4&os1@GX9#I~wcje>7fKFS}DC&M1dI zY+^Dnh{Z*xn%#V*<1lfl2FCC)ZJ-Hi(gA89V2s?vlJ)S&m53(7=*2uM3m!w%*`L{$ z*`MjXIKQjysiJficNXX8Z&Lh6!%+`};Wne4^%`(Ou;amj)q$!=BqE2J17#5x?1nrk z8?xaZSkS1KnKpWeu0WI4{v5U5cdzyPYJ4^Ju-`M&m~43U^w)FRE}12-Jdx$*Qo0$v zx&h1J8&LSo5{Sd#$R6B<_x~{u=V5~7S9fq&`pb|!By$}6w-hYhw834$N>tO?tghvf zC2AQ%bY-*60?midXo#NprFXUC?ExRmTceFuv(q2IK;H= zrE@f*kyIjyGH>HH;=`u_-oS?_qvyl5uVY3$Xt89Ub49whDL1g!+Y{^jmPUbQK3Ona z`0PUYk#Z$G@iT9==O1ibOwaK>wbRt|YKD7>*8MB;-GUY{7(r+P0t!rWPRO#c58!y< znO9CENrbh3{55`e)OTiUe0N-mr_qyGpyhS_CQ(I15eJCO8)`MS;2!OcdR%E!>$D2Z zdlAq_+iAbm5kC-bvg*)ew;4rBEo+1hj?^4AlPz|+1RzrajDfksf|{a@Nz58;9m?rP Q=mLw6i-Y8&(xPS2KX%<=SpWb4 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Guy-HoxNorf-FF2.pal b/graphics/portraits/custom/Guy-HoxNorf-FF2.pal new file mode 100644 index 00000000..222177c9 --- /dev/null +++ b/graphics/portraits/custom/Guy-HoxNorf-FF2.pal @@ -0,0 +1,2 @@ +Æ„†È +LL!Ž!‘ÓÓ)w2ù:{Oÿ_ÿ \ No newline at end of file diff --git a/graphics/portraits/custom/Hojo-JamesWhite89-FF7.bin b/graphics/portraits/custom/Hojo-JamesWhite89-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..31f5a1080aa3b2a9d75b4c239ea0ccd99cc92a85 GIT binary patch literal 800 zcmb_Z?@JSL9R7Uowt48>>?@ZI?_FOV*?!FH^&-b1KNDKl5 zbmHajrXiPdn*D{|6YKet=iMPyNQNzhJh0>$gJW#q7@D#kulG$=zN}Yu9x9=aYy>(U zKm-ZA0_$a+jLdjcT^)g(v)}}+j)0=k27n@ph7fHMz&)ufcdxhAw@ii1_iNra_S>~v zFKWN~gUIIWvKC}_FS~X&O`p5H`bHU4nw3`B{&Z`|~2E>v##j#sPvw zJc}FL5mSVf*>6l|Z;q_vXnlkGjQipAVz@b$y%t&fuBd(pC`2JW>5C@~sU49cMALdB zYdLiwSmwCuFw~|TvK42hYf_W-sAzb6aI`m9JSa8ExE+t<8vG8oD>fxJ{;aLvdXyPu z^3(dM8IVDsiMN*05o)OR$&Z}45m$VgXe+cB(k*w5#?v&*aT@#0 zSFNG_G5guNj?C8d7irh{|3sz ywo%°nG=×bêMÿóE \ No newline at end of file diff --git a/graphics/portraits/custom/Hojo-LoneRedMage-FF7.bin b/graphics/portraits/custom/Hojo-LoneRedMage-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..412187ce9b0a07b2f90c08f83402e18e0c89f270 GIT binary patch literal 800 zcmZ9KUr1A76u{5*8*RjDSG$Ucwu`MANRg#!Xl=^~A0#%55Q13PgAv4nkV(3I*SpFh z<|v;+a)A#DArbjlToZDLSd~JsKFqO8`@X5(p*Rh%B=l_p$n;J&e zk_)jEv$3IYkZq5*Di_o{MXE>40V48hj|u;KtZQ10CTy zA-Y8|9+PFasJ{q$>+^mMv$#-bYqXS`4yy-DH^IQclUOas1My&B)nKbE$!HA8C$Cj( zSJY-zBV>nS#`$^7j_@1gcgRJab$;;0D<|FxCSoF1vT=V5hQI}3kWYInC5Qivv)SFD zBs_ga?dHZYxt6K(KiN+*KGA*Fix^+m3P^<>?!UjxfZQ%gJu{;UcpOb z0eabrtuMS{6Y={Sw*J6I|BbUaQXDDjEmTAbF~D7knV1EFFJG6}jb^FUcS-%^f^+qiNoWD3}PMNJPjCKnd^Qbf; oIVHYRJ50eO!vBI0Jh)Xgcj)7ZcTIz>gL9?amxA;f--NH^AI3oOb^rhX literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Hojo-LoneRedMage-FF7.pal b/graphics/portraits/custom/Hojo-LoneRedMage-FF7.pal new file mode 100644 index 00000000..d2ae7dd8 --- /dev/null +++ b/graphics/portraits/custom/Hojo-LoneRedMage-FF7.pal @@ -0,0 +1 @@ +à1Î9ð=32–BOc µVò5Ð1J9ÎIsZ_`` \ No newline at end of file diff --git a/graphics/portraits/custom/Hotaru-HoxNorf-MOTW.bin b/graphics/portraits/custom/Hotaru-HoxNorf-MOTW.bin new file mode 100644 index 0000000000000000000000000000000000000000..a55bccb1d21356a4883853163b0a41507477f371 GIT binary patch literal 800 zcmY+CK}^$77{~vwE!%X1mJtIX%oPq^Bv8x}G%#DEcMm2Wytr^6MiavoGt;Wb$%uG? z3(>n5&q~}=W~K>do(xfxIuQ~BYY!wWQ1<+~ktqLP+NOEmd-=Zq|2YolZ~4;wUk^5; zp6aP^7!QHlM3}-Bi}e$=>%MRW7Xl%5JckAyfcPbJb0-~i?ll%fKpzunbkbTVA;dEw ziy`k?=XTQ5%0LbQ?cb(~B#dSey(9E6M)kCNGBO$Yh#5#Mijk2UH~D*BOfi#IOmO94 z@^~hmkt^UK5)`!bzL4K22aN_QSwH@@Z$0DoN>X@uwY>ak_Fg-?fLX0#{23U~diqjh z*~#rg&81-;d2CUii_lk$pgm-ZZN;m%s;6)UN!FyB-C@-Y zZ+a8NMx`P0hJ|#o6hht|YI<5x5~M6zz=;3kG$uLpI|dy2XUa^zJX$hKqjPyXI2}Zk zN5OJX+AZzOt=oyg#P^;bC%H|zM9F1YMD_E!Y1=~7sQUmlI5JdMpx_i>!*=Y8dDTz5 z!m%4}3CB~bZ3l@U;lrmibii$QWncDHqHL_`SMB;0Vck|zsn;W(x3KVqvMXR86%@&* zF<4@Cxc<1>zvBGNmG~03uu3P_*rz0Mb*JAYBS{Rh zBqObvS{mkF@^{N+wY4=K@93~BrFJZ#b?dM68jVZkfg&9=;-bi!hSX)jnly9#3;R1V AasU7T literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Hotaru-HoxNorf-MOTW.pal b/graphics/portraits/custom/Hotaru-HoxNorf-MOTW.pal new file mode 100644 index 0000000000000000000000000000000000000000..5d5139f6e3a8ab6078b82f025e51cc545595cfd0 GIT binary patch literal 32 ncmb2Iu@6@Yb(B%yX)?H1|H$E%EFVL0k{D;5S#|YXzWLGsrRNH3 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..4d23b8a6167434d22f0102efcb624c779cc7620f GIT binary patch literal 800 zcmb`FO=uHA6vy9YCA0X!B&X~lIDrV>G(FXiwYxWOdiG*hig>Wt90XU4-8l#;2(~9f zL7GCri-K1VY6l8dEG6FbmWerR4uMQ)X{WN?ake3%Hxd88%l|#zJl@P3fWMS!;sQQL z#?=UHR3e@`iWf>Z(ya|JHAr&;+S&DK6-E(bocmfXxS$}incE|? z&3nz!B~79x_Jer~`(pmz#5Mrr(tx-5xYPTzj}&4+uZcUVAfi04v7D?9=D% z&GqZbZMEukgf=$T{8niZLTFVQK|yXg)Z-N)g^;zkfs@3us~|vX99m>I*)zTOKb8K1 zl(D#$J{^Q%=n{mih;SmXL`vTxgaS<9GQr{5$J?)XTlH0%PDz&TFjtt`CQ7Njc%{E< q_c*5>971eJ!_UZL!iH4<&c6vRccrKWwP4E0K~GN?Yv$=Zb=Xh$oZ(LZ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Imp-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..8c27ac3a4c28eea05284b813b9a6734eb0e46033 GIT binary patch literal 32 ocmZQzcrLR-a;c4`>Py9QmVJ6g_L_m+iF|RT?$g6JrbXQRbvltR7%nu_fE5Ve77;D>cm>LaR zAZbxx)Q8G1QXj$(#Y#dMLPe2ZEGNUT52>WZaxb@YP4W-u`Eky9e$UG}59fJ+U17lN zk{ykKn#twz7)SQc6W4}r-;~V?x;P}D2WJsCnsclZ?!H*`Q}YYuoEPv@ACL#L#s!B_ zjweKf4dYlR>wcM23x&9?nY3rP_JS5wi`uHSYLBu>$U-Iz6onMkU>5DaM*FsibiQ8I zp&hM)eotz=b5Nykj77dn4Q|KA@^XzLdQOQL$#+&cIpWHk!GlK0CAmG4N4k*yB>nx7 zv4QygN@Iz|BFOLBRKePy7!+s85ZNx`zc=|-fe2(={CAaXqRc1$1#jCY)-fy~?0^Q! zza2uvHgI(%^!sZlci2AWmh&$|2NiPAjdsdx@Y$|+wUs`;l($tJmi;z#L5~(J;T`Rc zTEQ|KOkirS-8?;QW}r|oRLYod2qKDn-D|T)s+St#QZyP_mlnU6Yoxg3jJv{N7O6Bp zNtvul=CU*yOa)uX1MD``T#6=1lY;2}?%Eoo`?y$nODrU;kHrnVlKVFRGu*fsvEChN zt}E)h6F9b1ww!3%L`aMYF20&hKngg27p>kR82CrN&E9Bhn}N{!37rvXlj~_)Ngo$mRa*YMTpPZr;=HPNd(*`Ekzg@H^i*-**5&pb#Ys zl1NJkRw{&mrr?O*#~PS4e&A>LrE{wmG5B!~dAvt6s=*0Kg6^I7j2(A(T5SrU4pq2m zOJLQWcBEv(ffAVdi{Jwf_S4i$T@fsy8zMx(A(y!JAVDJjJxG`hUk^^ILDdfxv|xT6I+$W8xYp#;)1B04T(MCP*{&?YDhcZ*iw^?8;sN|QWubLZ+>smqp+OWC`jWyQvS`m!ab&xXT~dYeRLvt zI~;9~wy-82?vtt$q{4H|AP&Ja>v#!wahY2oFJq1r$RJBPOI8*O&I_VoSwUtL7_I59 z2hOcCUpgL!-`TUBScPG$#xdI^=P5Wa4mbHI?nu12ckndxMYU*OW!r1~z+d#^8p61Y zDZpfTBVy!`$qQK_CCI2mfL)yta1zySGx9%dSZA{aBy3b$M1Q#3e zClNp`G|bZ5dgv!e!_u%T6}jh1!OOhxWw1@BUd24^_0#(X76}~!Fa1@TtX%3ItD=AT m2wm91M^unfTyFTv!+eLQb8m9Da`tUh*zRHjzfq4Hbk;wZn*cok literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Josef-HoxNorf-FF2.pal b/graphics/portraits/custom/Josef-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..20aff07770785ea205c52d79a6b8f677edf6f7db GIT binary patch literal 32 ocmZQz*q?1?maAwRyixbI9k=9bo~IJVvdaX{iQJOiD$2kB0IW<3Z2$lO literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Kaguya-HoxNorf-Touhou.bin b/graphics/portraits/custom/Kaguya-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..61abe27e2b863f4c78d27fe123135ee161a20194 GIT binary patch literal 800 zcmYjPU1-yA5Wh58Q(d-ZADVSVQ_EN%R1`&=R+`9U3Qi_$emf@YMVPX=p_|k->DmVs zp@O1&5bKlpAS!-O#bl^BKUn>EP;q0ysja%Tm56PZG=Ecl@ptz-xZ^l}#~tmg^E5W^ zX*+f%c&5yKuAP8tdP&Xf#XbA|{i%HCIQ`W1&XxfLsIquFBMLq&L5`4>kLXXoW|G;k z?uau9Yt}WsG*;*l1?~eg&LrK*H9r${3k-mtkR?%o%+a2Pp~nvQ2~Fdt2R{3FA24tc zn&B;|P!F?U2dsmA5C9#Q1^w zHz@WWKf+-EQ8Wp>%=1%B*k90L63Nml=_XM-QM;aIAvQA4U3QFlCM0}rzJCV+;fA8Hy&X8#^WRv+9r_PQ>_0}AW+ea#1vB@cN^ z9@nkehPyj2_{C-8i0*?0Py}0`6^;O|1HueT{`rc-#Ltq7k~mdLkXFL-44=Wfab$V9 zJhHOMc70PY;BF0-L_fx01TyALpYgHUz_o+Z)sMd_RJwAc{IsrB8V(V`E`A%(VaEt-i|kk`=|;q+?EbWsOT=GB%CM5c90XmST*Bw4$oW zgr*l_TU%FDrOcU_Mw;&kQKe8di~!P6ZYF1_x`7!O!umrRX^_9|Q|zNLPgRQUJQ?Zw Xj5(a$hji}!1kHA_X|5W5LC4V_`=445 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Kaguya-HoxNorf-Touhou.pal b/graphics/portraits/custom/Kaguya-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..8a9b9b7b66db49c78b8a2c2ab690a71d8e854d4a GIT binary patch literal 32 ncmZQ@N|VSnROVT!z^%E#a)0*y@@O|fx47g#L8X4*EXC6SrUnaZ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Kain (Holy Dragoon)-Unknown-FF4TAY.bin b/graphics/portraits/custom/Kain (Holy Dragoon)-Unknown-FF4TAY.bin new file mode 100644 index 0000000000000000000000000000000000000000..c597de59a8060c208837d4f0a756cec7e6ea8a1a GIT binary patch literal 800 zcmYk3dq`7p6vxlKdtKY(&XUa3-7O6lsk^3RXu509Wuk#Z1fdp%L9b=ew8!pGoi)P{ zNyrFt6;yvzibYmPyIaP3NM;&Ig z7&p%Tr~}Z7;yB14N-Wr+vpF-LY@GFW(;K&Y_t9?xu;?%DW=z_|*y7|%TUuG6H0kE` zmjgE{zU*_4**W0gk@P&=T{B?f%!r*Df7QO}1+NCN|Gg)-=IRXUG0L`hp(&@?ec@wV7><@@q-cA9mCD^{8o zH?{dDOtc{tQ`ENCc6s~O8d=Qk8TNesJywz25lX+1&|4fjaK*6a9Y^-69gV8~1t}`B zWFw{<8RK%JA&r{~IV|*pdIuhffj?R!zA2#_7^~NyOJU@mSZO4$2Gw4T42^W~%ewWP z#`9uC9Y_u+uPT{>vJ6gJFo(E!ZdaFdB5~q0lK2z44ZgLAM03v;yoo>D)z7fTSA6R? zn&LB^S6WOPSi~X$1h90b2Cp5NeD>r1r_E1qo!KeCuu*^@@p!4532y*m5O8`9cx@R9 zINKS}i-t1-M1Yim84wg@#AeK-)<)DvMI6PL!EDeSj#H|y_Ihf8EO}d|!64-P^qEsMoI1=^J$~M@_E2U(KP&00aQ|NevxK6Skg9#1Zr4E@Q;jpGXPco4OQo&%S>t}k%ULVkaTH?Bc~7z@+NUPBkX$Ai&l&S zrx9fCCgu~bQMSrvx%ub{89p?k-s~ACm#p;gaSZWEK945NTd%t8q zvnSlo;_2c7e-6frc!m3#>W3e0ENgchl<(llY2b>qSfE&T;eOyE1- Ln#{P9pUVFRR7}TF literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Katarin-Zozma-FF6.pal b/graphics/portraits/custom/Katarin-Zozma-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..f8bbfc0d677ed0867e615e71814aab304977435b GIT binary patch literal 32 mcmYe0)|0(uWubRfb&~2UiDe?Qoc?%4r*BdfQ=6&900aQOLJDXA literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.bin b/graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..cce96f5d9ddbdd56101f061055887ba946a0567e GIT binary patch literal 800 zcmb7CUr19?82`4rcCPN~y`{BfdX3U5?fv|IrK9$_9ESYMz4tI%xi>nQIPx*izi}ExgeKvHK8oX=r**$B#a_u(7WG_ztRPkx zVI|ABBe{dA zfLb_iRL~UI!9m(d#4t9Bhr9GcyN5hqoT|kQScRtD*ZmH${mfO{d#fiH7zXvmr;<>I z&_8h!d+>6$g%M0pdz}MlK;hDOdb%W?> WXe1C=NhG7ms5+%iz3iP2>4D$N;aU9v literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.pal b/graphics/portraits/custom/Knuckles-JamesWhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..b04a124c821c7853a49aca3835163cc816f9961d GIT binary patch literal 32 ncmeZq`(Mw+U?AwkVO&>Rzg=;E@?Nzcbunr}45d863<3-Qwa*FO literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Krile-metalliguy_Gens-FF5.bin b/graphics/portraits/custom/Krile-metalliguy_Gens-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..b9fbfe89b530f9c5c4c92b97b389432d20c736ac GIT binary patch literal 800 zcmZQzAPO+?v5BVe8RrByOMDYj9^K*ju{QLq^2ddg0zAxj>U}OXd@Cukb{K1yi zd1o;*kiYWgNA=K^3W*GE3_F{f++FG)#Q#(eFzB;rWOD%N#|MOEL>YzovcnRy?N#^< z<&?QZE&f{}BBs`$>9rcUmWUin8YZn&~c+<24g1E^Mjua%1vgOXnwHh zNfB#izH#u)j)Dl&S0W;_IUFv0obY=>_k*V%Y$a6|E+*YK*e0+%5c$Eh!S@HNfwrN! z(j$w-9IXlx1w9Y;yb<`xV9ucuVc-?Kgt=g|LqkQwxehzd<$`*dKd$GjeD;~8P~l|4 zMUN8~|1qXaE;|{naYUhq0}%q2@mbG0T6lO6BKTQstPIQ$6^snbKyNd#GsE~m9y9Zw z#}D{5#QALhKl}gi{fGBIWSRbd&@eYr6#Vc24Dp-Jz`()F%*`+5?%*C!?;;-{Zz3hA zX278$lVRl}U65g*Veq&9AHxrpKOFy={!ISQ_n)DWi3#Wsb_PZU9#GUX0A0t*c$BHD zE$q*|KWu;Iv;1KC!EC`?vfRU#;V(l9A?q3B733B4h2*)!CFEJSdH6XD6$}&%6$Aws zBqSslc-VOC6aF*&SGce6{{xU_{Lj{KfPvuvgTMob!Hf*Qg#R=Bm;bNyApX45u^Swqii6&7n z2^?@7F!3TM@&d;^6g;V;j&y0iIAD@$K?2+`HCvY|t-Rp4+~|{KIhrPNGDW5vwuaV2 z7AiV}WGA^wi+U)hzXFD8MZ{7-?K3<%Z`=nK41Ew)7L{TA4kz+C_kxA56n85Qw|uD%8V!D1iqmuUcO8UU}WF#xD3Dc5eQ|`rz)p@1tF#Hy_nl5maej930AUANemXtsFN_Emnsw zIyPND1L5<}k0x0c{|Ws&|9k|ovI;05VSYhrlJ|B?I8G+1f9sI0=$G`{#-eS@=utY97HLAcs@=s}(l8nM9T&6aPoCL7zkuEN zVm%6zhTCwb)?7$0%hVrzlZwXa3b??_2%;b&`-z*91f5}ob_aKajU&VT%>nUF*Y+9#2zY^xP#e{K$H?*3-ÙJ.šB[gò5ê86’%üJ¹:Ô-W2 \ No newline at end of file diff --git a/graphics/portraits/custom/Leila-HoxNorf-FF2.bin b/graphics/portraits/custom/Leila-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..8bce2118df5a4df7f87d94a0960fd6d091b86c18 GIT binary patch literal 800 zcmYjOUr19?82`?_xjS&)J6qxA=B_2B(1VjbY~u1x5QK{D#fRRUNfs40F>(*qz4ix< zLLZ9gLAL0j$D9~eFWcP|H*;V@Z)si|xQJ+5O5MS@r!)1T^Mk`VhwnSTKOco`v_)q! zH1hrSetv+bPy^LKnV``YXbA8D{`#}dghkF-VnT=T`Fk`OcnmQRc6h*m9VrGcAYYWt z7j7=J8|2C13y!$Ria|Dw3arC#nyy`wTW^`6445xQLfxK|cBL4=Ab`vYOdM^=xa(dG zRp4|bcM9mbe%8;R1?iBnufRQ+0ElzxCjbfCHXXj6oH$QNL>-vi&WQ zOe7bV81i1xcK{J4W9utd1_e*t9qIGV@yfOx6Xz-@hZO^Skjt5kdDG85y))C23UWa< z4`2k7F$Yd?H_CMSL0|&WG{ektePMt6qM!;c?X=ph8VZKsRpT!m#w0xwMuijdx{`XJ zd4I39A3fe+4{vT7cIq*MnU%j=%B*tvQe%_Vf=EU3?9{OAG&9G}faq966eMA4+n_Ta zF#B`I{*x2`2 pIP`d!2EquB|0j(c5#Yu0l4>rtCD!RCdeQo29O(UQMbfJg`~&lCH^Kk_ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Leila-HoxNorf-FF2.pal b/graphics/portraits/custom/Leila-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..50a421b4324ca240aa4a1f4bf92f6faf240c9ae4 GIT binary patch literal 32 ncmZQzn4irP5$A8N^^&Du_O@F|>AH+B8d0vIb=8qKsu&mmw(1M2 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (White Mage)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (White Mage)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..ce111a42ade1e1128fdc1507b61ff1f326159aa0 GIT binary patch literal 800 zcmZQzAPO)tGBLBTbMPC$R6_*#`5E|mjBO78VP;_X!G6FVL^Ja!+kF1>|3CW=`vd>~ zF#O^9%=m-h4+Bp<1A7DW4+fyXfA;^(|3Cl#|G)k}JGU9Py1K8Kzit!=>P1U&NlBTQ zn3`y5fS`s3_rAq{ABDDM`F?f$v+)1S{~H`U895k&osM5Qe4ukt>#UjUe8ksHUoJV( zjiGiyc|gsPhDQtw9WMw}I5aUd=z33iaqUWW(%emFFTPt_l{nAv8$YMI3O84Clc#59 zrl6qZRYBC-xV44g2bhOP^edIr3u%& zB8Ut~?p@fKFDg>C2? z_vh8#ud!#evvIE9|G)mig#`37zh}Sw&&>Yg12AftnH?Ms zIIyrhlriX=k$%SbnP76qMxPtY{y+X-SU;;cx9PFz1}{WKEdq= zUkBS0wl6@)qH|)#o3z^qFGZtJ5@VX xCwe{_D`_Q!5^e!Ty@`2FSnqAwYL#_jOC>LQ>30N?lxh5!Hn literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..d34edd313708c1ae9bef594f6e8d8183e363a20c GIT binary patch literal 800 zcmZQzAQCV$urtar*dtUk1DSFR419cof=mqc_8(r{|E#ZmA13d>AR@xe9UjggA(4_Y z3mxcxhM@x%`M@EK#faO-0 zd%$!9!vPdNLjyxYLc@Xs8yq$`Oh^Dj2L=WQ1%?F-4GS8;z+uCK4-Y;pC|FRS@WJ54 zh8qnHAQK#b;J^Wpf()tS_NpG)8IBGN42+B}E<8L84Cd?w z&k}tOOR{}(|LFEn;M{zN%BJF$=Nx>3{sDdtiiQjJL(KxlE;B!~JdZh)&%n&U!ob5I z#2{Z`^W6Gv`t5t)_rI&XUt_Pp;KJg;(ZC=eprGL7#N4o;{<+2R|MrLf^Ug1m|2_My zzP^SA#0+2vIIys6J{SG{_S@TUzdUdL|F-V$?v9QlM_gP~RFt)91cZdRxS05vSeaN^ z_*u9)#ku9UvVcaHBI>_7A`%t>U(W-4VW70q&$V*O?ITP%C3 zXQyhX>I9Dm0t^R)HZ?IZ)o;0-Q|wu0;BVe>NYGVjo7p6xq(yFR3>)0b-@Utg2LQ0` B`Q!iq literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna-JamesWhite89-FF5.pal b/graphics/portraits/custom/Lenna-JamesWhite89-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..f82530b8e6112799a0daaf1aca074fe5cdef8399 GIT binary patch literal 32 ocmexgU*pTbU>_D`_Q!5-dA$F;_!w?~(U*)n8GkZdbrDbi0Mo||Hvj+t literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna-metalliguy_Gens-FF5.bin b/graphics/portraits/custom/Lenna-metalliguy_Gens-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..656607b350d157a859f33517178d75ed3d4b3744 GIT binary patch literal 800 zcmah`Pe>GT6n^uY-I*Wkt~0X1OzkWVEUVU9J1Xc#n>(en{ROE@(V-1eqDvcjm{8jZ z#g&rWqjX3Jf{q@Fh!jSaQV6w!L73G_fuT~P84WhOzg8$v5cYeQ_ddS&y~le1r9pW> zC=XYPY+YmdrW$dWFPE#pgCZ;khqKcaNVxw+>glDX5pe$8cUXdl&;&v##<*~L_J(Y~_I92ZSbirh+4t=c060Oc$Vng9R* literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Leon-HoxNorf-FF2.bin b/graphics/portraits/custom/Leon-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..84817512ad0d65b4071f7b2170d01f24ecf4dd9e GIT binary patch literal 800 zcmXBPZ)nqa7zgmDNxNihZQ>kftFB2^`~!n^>|iQmjVMe-wlYDyS61%?50tgeJ6ku_ z-_$Kr%c4wV{;enued8*Ej-%Mr9oK=w?e%+Zr5~c6DvL+zAwLgc^Ho2 zHgQ#m5gCs15Kb3Uv?*BSVq#&2q6igq&`AwbOQjuBn^dEZ<;AQR&87K7m||MO0P%gY zvET`+1c;J9-K_d_oVx@ znd~XGn=Ke__TBGXGH)qNM*LsuNqhHv`uKeZ}16e6NF)i=Ci{)(z1^ zY;Re0*<$Gu+15Awfhw3}n`2pCPA;EX*?OTVQvY7~U03*C-lzovyif2JQ2>FBM2O~8CJ3XOBAppK%gC8b84Wub-$+iksm?cn1(of0#Yfz z;ASVi&IpL;I{}4vAN2P{oZpHFL{8*T1pLJf9W;ZEci8AQ0}?936;?H5E6J43Mh7x z7^`jOdT`p@KnBSmp*gy0U1r>ZZ8Q#c4|ZGV9ah#(mq;~{CZYX#+tc>KyOZ|1YHDsn z>KAM0`nHh8d1L@)>{I27f{-Hrm_0W<-g2XQT$VE6-PSs4!f(Ud$G>&9U%Hs3Y`Jm@ zh3nNUN%D9|@VNd;=ac6=gWZP>3$VZFXO!XA#9491YKWpJdVoUkC&-VJPn4UHsfcL% z)pq9LmqL$rnH8|qBqhFyzaf)w9lk7t{Y`2@cjbs2kx$G`w$M(V-2k!CALlE#R+8HT ze2%!(yEieCs7zV3=|)svaeCblI(C&qXRmbP4WAnSt%(FZ`jJd1vw42=JTdafQFZE7 Nvk#Li;#=Zdz5)TeWzGNq literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Leon-HoxNorf-FF2.pal b/graphics/portraits/custom/Leon-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..7987420788db2d59fdfd0e8cb8ef52b958b2faa4 GIT binary patch literal 32 ncmZQz_-NX0aKr1QOQ~C~Dz~b2xUtm*T^-9-8Q<7>>1MJ3wMhz& literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lightning-asilverthorn-Dissidia.bin b/graphics/portraits/custom/Lightning-asilverthorn-Dissidia.bin new file mode 100644 index 0000000000000000000000000000000000000000..8795eeb777aa3624ef0f59546e3c1a41ec787d79 GIT binary patch literal 800 zcmYjOZAcVB7=CAGy*<3c+fqC~?!2iJy~^?;i^I~}Fw7sKVjxmSE*2qCd6KE2-mU%V zhoA@jkmy4LGk+8wS}9T8Mv|cU5q%kfZX#t6DW~Wr>b9qdJ`XcI@59VIGw%Rw2Zgp* zn;L-z=_!XsrfYN|4*{(X1d-4V43Kj_%&V<@-r^jt)~o`UR4=ylgHtv%(liAiNIqXq zvAz<{-^d^N8rn~|f=*b;?n@ctYz)JKmPG^*cN`D`J<`*xmSqW1bJUPQ*XJfiQf7K> zEjDYS)sfrttmc;ds~~wS%zxOXOFUEFc6ynSnFYKMzJ}MZZp;8dZ7^Jhc`67&D7u_2 zpR7$iR5IT*KRo_Pdi1=!t2*Fqo^*~lCsJnBGIKm4YA$(g%fTU97)U`wq1fo(Rgs?0paiUu+F5?6cM3CH^AM6G8iOfD{Rb6S) zOlRc+FU^$6a}JMNme)LMK6N@xN;~j3 z<4Jva;GTIT%`$4#8L=_Tf|NJPF0UiTp2YvIs8EuWgsItgXT1uqTu?R;RDLQr0t2SC zls1Y!1z5|dXR3{-F^a&+8Vb;WHom`{ZI$-9O6G(r>>(`0(_#Y%U`Ko2es3uptzlxP z>ix}JiWQ|c8g_%g=aO`;pu2ml&^JHVVQz?O&#$KcG+cafB9J&7#V?Z>``z?!nE`X= zL(A*+UsfYSph2f!f8j>CF&hnWT1#}~j%W%W-CNXeiHS2A5vD1Ip%cs|r+jk-D@fKX z?aZJ8C!MGd4x(%D4_`4HQ=E!dY47g;NcTK7J&4PhzVkTi(yP4H-0|V4A;$nWIrF96 kcjUHze@A7SYiKauw%B{M)=f&?*R9cAEB9S5?Vcs?fAm8A^#A|> literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lightning-asilverthorn-Dissidia.pal b/graphics/portraits/custom/Lightning-asilverthorn-Dissidia.pal new file mode 100644 index 0000000000000000000000000000000000000000..6af6421e81718914a6d82d43166a9b778f0f2d80 GIT binary patch literal 32 ocmZQzxD{66C+sBZHZOaV=@rX--3f-esvj(0$vE?fJ1rLh0JF0SwKJ1&=GvJgS`>JM%1y;{!hu1UK@dTPGrI6XWQ(X3);U>Z zR-m@Tq$n>UGa@gvnq9b4;YVO8eUPEJ`2mI#oD^>AJa5NTy7K>fA0D3f=HcN7upWdc zlBVhZBT12@)}WyohT$m8{i7ADbSOcuf7ds>SXAV6xxy-ujSa{$#&`wCu#D^e#AS=0 z$^@1(Hl7%MF*^uhuz?u}rx=xD4jHqU#s$oH@o4cN)t7jjG!QgFAr+vt%><=VsYyU+ zeHKJc%5*a=r7fJu@d|?9Uo!V7z%h@pAaI;0^a$yTWNo0i$=>bu^A&fteos!Xm5uGT z>4uj>{`iC1ukZs!&_ZFj&vnDeM}`)TT{?f6wZ9P#$ks04!3stN4Mf2MX`&G{T`zZyx`?K zVES31rcWI@bGyP@;T5yQGAUI;5&;tm)km@{WtP-@lt-8+%oA1BA|X1!0cwSQC>LE- zgw5e|MAcC>+h1P}t_>fX^$gd}JT{lLr)*D7(PHb=kG1^bMd{ze9f+tX~t}lrVOjlhP9wLwVGIsme7$jNoNQ(T#}+}xn|`W zzAA_&-;Pt`jV`@qiCYmA0|ERIPvPHqQL*onXE0R^XkcJz+1iyDxZl+iO2-X&1~16( zWw(q>WcYM^0jLualt<08F?Fo#-La!@l&Vygo3YhnCb#nN3@<&f;tiXPv#+XRqz^oZh+Y_R*>f zP1n1#)*rk9WMdQRPznW&w443T!AHIcbEuH{z$^eb+O$M?P=jcW^?d!tk_|i3Z?-QC zW;O5XK?T}y7260~pu#z1IqheT!8Lu?2j2e3UM0Z~2PJ314jE6d54lP%7RUwmd?78y zC8wJ>lg*?E5M&M%J6lIHM?B;rxOv=Z*jF_@=$p(7|KlfC-+RC3%b0Ssu0GPx@vh8^ zevIJ|{ZfDi9((UrHrD9T!2PQB-N#T}XF?n#x)wFT=ykSwLW!(^ z^d)3rDK^7}EO|+ST{4?2QoQJhT`np!&F3jn4b;H{7dxz7TA$Rf29uKFWD|K(12?>I z!b&oN%P6Yt^w~!cF%(vnr_;Yf0iiv~PZnL{%FmRvy|A5&X-m#vHfGml zf@ttYtiHYI#jTtK?LqBYf5oLMQ>cZF3J|HpM(Qv4w3xY^$Ck?#C3uy>xd4I3hFwQMZ(5g-dHGZ82QMtLv*~ef3i7ywhj5 o?$!e=zziA;9SpPl|M{4nXEF=%yhB_emn$>;AN(fuZy3Srzgv&?m;e9( literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Link-JamesWhite89-LegendOfZelda.pal b/graphics/portraits/custom/Link-JamesWhite89-LegendOfZelda.pal new file mode 100644 index 0000000000000000000000000000000000000000..470b136367e50748755319c14303f53deed6e198 GIT binary patch literal 32 ocmZRuI41E`@~_w}rU#4(Os!(Ot>oO}{Sz$y=O<+HvaBls0LRD+`~Uy| literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Locke-Jones-FF6.bin b/graphics/portraits/custom/Locke-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..39afd68b423dc3df3b9551963397daa09cb3676c GIT binary patch literal 800 zcmZuveMnPL6hCio+gs{3!EDp!KKdM{WGQ5*^YsBq1&#huh;T?T@(&wWIWpbFiV_MX z`y|al6d{Eck;6ouMNEvcD9f1DldKs!Tz=%7d+&BA4j?>+yD|-^3B-fBrnpQCuLs?!)evj+q?Q5p}f^ZH$Xx8U%{+ib6 z0^f>Dr6Y-aQn0(C+11G9JL)oK6uvUAMeOLRY9;ScMo;dru1(eLL91uP!|UBqP8@DxRw!b{c|JeUL>9{Z>88VKDQN)z%kgi51S(pf_gBjC^;pi zr2taJ!I;cNu_P)*6s8%*W>3poykvQTRBl?f@=1TUHjG}Z=rn$~ zKW*)^_Qk8?)f%;?PIY!v@2YpXF^Bn(J!GEl0!TGcoK0Irz|od5s; literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Locke-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Locke-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..bc96ff155732c1d6226aaf4ceb922735788978da GIT binary patch literal 800 zcmZ8f&rcIk5dL0Y*|(6$R!%iR-k$WPO}Id$*|7jL0OBG5(sQ5%0ibN-P1jSpBw z6$>eqqy`(kkIz4SU214$*>j_>^$cFw{`z+DyYt@0pzh7j-!5TYUq4ms{p8wr(eL$p zzBl1cxG6W`CI(E5tD~73$CYnh{_F9rT_c$D^W~pgQ#N!z2*X;-LWM#w9XO#Kjs~%i zg`nUN(JIyZb)>5Q+&DCF)hkwyE1xORkhmUOYx<_YObx2U&CJk5^;r3Y+vz-mfX0~U zFxssi*`6D+hSFWblaH9XE2d@}XBrp0k8`qf@2qStpiXO%b}6IsWOBBefm55r(b;d( zSbhf&k+##0bPU&UZ@T*w{l)?JXpai4%*r_6AN)e1TR$GXvIY(duLsD!W-r3ZaP_97 z-U3tF7A#YmQWv_=SOpdAuw_wf-At;25@km) z=bg@DrA#Vqh8&=Sak&b4R8>V`FoHbms$0gh!!f-mnF8c>WkrQ|$GrrS6yKp*rF8%W zaRdWF)BtzY4rLTfUKSu8bgG23!M#SG+AMdV)QrBy(8S_rci)GSk?I5u4}6UQhx^I5 z*|24*Or95gaw6HW`D{KbXf~DD1y8r3C1PsVH7sBrF2oA1{JQ;p)06DY7?^=5MD&%T z=LeTE6O?#FJSrB7MQFyUSX^n{W3(_fV%Kg~>^CocI)u~c!h8&nXUxyR^$r#-MQ?W*{s&BX&{pf{l1=%PqZ4 z>eD$Bk+gL}(hQmVn_5%D!?Ar)BX(X3$&uyyWF2=dm|tuJ!O>%LAINl2YAqI`0n=jz av7yzAE4>E^E9fqnyxCpZ)kEpmGkyayf&dEu literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/LoneWolf-JamesWhite89-FF6.pal b/graphics/portraits/custom/LoneWolf-JamesWhite89-FF6.pal new file mode 100644 index 00000000..f3d482c2 --- /dev/null +++ b/graphics/portraits/custom/LoneWolf-JamesWhite89-FF6.pal @@ -0,0 +1 @@ +ÿ!”Rk“:3Gÿæ2y[Å<„ b U \ No newline at end of file diff --git a/graphics/portraits/custom/Lucca-FEOK-CT.bin b/graphics/portraits/custom/Lucca-FEOK-CT.bin new file mode 100644 index 0000000000000000000000000000000000000000..968916ae46f1fd1dc8224fa1f0903644cb42d317 GIT binary patch literal 800 zcmZ`#Ye-W86h7Cx$JLg*%^%aWHl4{0R^CcwN$AZMT9FGi>xbf1e3IrwAz9{bv{u=2 zMv}9K(^hGsDH1Uxa_BNM(fyFJ7f$T4$m(ioRx7*uzXRv|INyWw9Rv^`zMvl+^7XAT zomY^+6$8nz+ebZMK+V*&?5k`n?y>4O-!tV+>At;;FBb|HVaT*S(Rk2S#fm=?y49a< z+;R#~g2RMRDD|7KEvqTt!I%OoRRYUBs?DU6jEpONyqjGy zL+OM>WJuV`@iMfgiF=rbeBg8$nEIr`W^j-!#^dyaQ$CVmuz08)XD75&9j&eFrrq>4 zbq3RnH*-n=oNE`jX@-&m?!ss&1VX#Abvxv43u|E~y7@vBT_OKxi0-EsiE&gMrqF2W zq~Nas!-{iA2uXTMXZ0=5qn}+mpztKva~hQua(VXps8wVnE)yaG>poP?M;pPdHpu3Kgwn>A}RC-Y%Sis8V zEXED=#+?QG$`hkE$3_H6*GN|R#Q}+_0LOv=0}=3`J?6@eK68vQClilX$3Dp)!(Z_x zVU)Xl2ELoRxfi?g1`5B=MskphrLNvR_tnxv(`TJcLm(h z@0aO&_t+oq1U(hsBLatL4!qyUrN9d@?KM$Vti4{1V>~bJ2KPMQHqcP;blZ=|{{S?V BB{Tp4 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lucca-FEOK-CT.pal b/graphics/portraits/custom/Lucca-FEOK-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..5a9dcd9c498fe50e66cac5c18c3c16794774ffff GIT binary patch literal 32 ncmYeOQDtanIK{%l=`XlZ^_ymu)8D8P(fj2e88X9~Oc@veu~7>e literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lufia-JamesWhite89-Lufia.bin b/graphics/portraits/custom/Lufia-JamesWhite89-Lufia.bin new file mode 100644 index 0000000000000000000000000000000000000000..7f0bbf4d08ef6531fd47125caea4ee2eb9da4a42 GIT binary patch literal 800 zcmZQzKmbMtCPoAg!Qy8ygYF#G{?hn`#DgMdes4@wtysWp`~h0VD(r+A;iHxDbBN(N1al?N0LG#rSGn0n_e!~-z< z@X!rF_ktigfQULYz#zIjP@F-5VFA$p2|zr-fdOd70WfrEIKYqq41oX!4}lJa6$~!~ zGA6vZkN{Mzz#ssGAaH;|lu3grfYm{Fx5I1)edB5-77l&^D+VzJ9w209U}BM48tXO9 zuzf9m%&s^fqo|zqb_wU%AKfmr3 z{bQRW_v8Lg`@bwqEXn-i88J61E~Md^9j z1+V|d@Q?8i;~VCi%$>}g!jeK$IFe2(n0N=BI{fPK+eZhE*EdK#Is54OhJObC1bzwp zGHnWRTs1Msv!*3VZOy8(F0mU5Zv;-LJY%@7usYx;gQo%~BOfC(qa>>cs~LkDgD22O zK$|(Z7`T9`N0>p0CE@bfH9l)yw|(+{9knxM$}0Q)_QrO`^47BQEb@GO?))F>_V2$h zpTGW^SYFb)u&X)s{r?ZtC&+*J|1x=|`bYolsk3yQY|=}3O)oq(@Y#Akgi(&dX;WeDg6gH<^zS4cpF=Vvkbnu=`_^(7*ITaqM2i}uzV z{d;zP@?+JiELqK)e~Wwea+iBtgqOdHCV;KfB}-YCNmCm!Tgm%4m_ro2W0| zapwQDW^W1mOsJ3Vrnaq*gE?SNPV?@4mM<8i%;3z$D9*ooZOKvrp^taRe3-!55!UwA zKM!DD1AFe61^d7`#sz#k`=LqG0-=-pH0mVn0nk?fedtrsJ^$&`sd0DX!&6%r-;h&I MQOEsr9eKa`7nG#A;{X5v literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lugae-HoxNorf-FF4.pal b/graphics/portraits/custom/Lugae-HoxNorf-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..e599b07b4198912c271d46342e0ea97fc6fe8362 GIT binary patch literal 32 acmZQDaN_x2ZyYzD-`lo2eSQ`L8UO%=+6Auw literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Luigi-Halkel-Mario.bin b/graphics/portraits/custom/Luigi-Halkel-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..3358b8b98e9d8fe40cd227fd8d19a112de72d4d6 GIT binary patch literal 800 zcmah`K~ED=5T4yFyKR6z8WXKy?LI_9Vo0lzNC||ugn$|jz}-+2qgRU|LQKPZ!~>`p zI1*z7e}UfQBx^9xgSJGj*e+tkgGsjoNH zfFz^{a0Vh_1prVLd&rSofddB@INROutpilRg75M~G@DJAqx-Y8pGaB+O-yIo%i;aN zK~4#P9zF0}j8k?HIXW3(i=gWm2a^&30#qkAH3Ay6;AD~zSKJn+gg`(H$Kr%@4u4|i zB-@8FysPuFd1{Fm)H5^~(Lb976IQ$`)F7tzGS$pm__Q)tn@5|Gr$PmOOC_LeeCG0p z#1?hAYunad)T*-sj_inz=z4>?HaH&KD*PS=?nC0ptL=$<)c3!!ynhbC311|~;{;Ny zi1IH|v4Xl4T*juZvxJe*U+Hn9)wsrhc{Kk=y863&sX)b1E$?X7WPVhi&@=Er9M(QM zr>qgfA6Es&zN&@p97%J11?Y}SL4qmBh0}CR49jZ$>5gQyEpzXUVRfvQl^wLEt!qz6 zP5Z_MQfg6c6yX#QoiNT21R)?bAguWgpcSj<%kbEyS_=IPxUwypXb3Tc*BibCe?cWs zSytXlpN1dL06sU=zi@Z{D(f`rmuk|AEo}*JVbS0^$NV+FK?%_`q#WnRw*}I0vHRrt z6RnLM1DykxuE*mEj6)aXX5~)rSnvHF>aqHqHW4tn!Hptgp1Q?j1#bEaz{N*qqtV4O zV1q4`#T{Y1v|C(Vd6-db*{-wH?ObFQt722+HVk3{bAtI}GrK*X!_WHW2Mv-A_sMMw R)fF6WW0^7L-#t~;e*x0iK)e6| literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Luigi-Halkel-Mario.pal b/graphics/portraits/custom/Luigi-Halkel-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..f9f9799e49b5e0f5955b6783f258be27996da9e1 GIT binary patch literal 32 ncmb10=1|NroMtEI-yo=<-yn9sygu2XPJp3=QA~}6At4h0klqM= literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Luneth-JamesWhite89-FF3.bin b/graphics/portraits/custom/Luneth-JamesWhite89-FF3.bin new file mode 100644 index 0000000000000000000000000000000000000000..c61c8aa63059c956131660a29452fc076631fbda GIT binary patch literal 800 zcmZQzU}WHDkY|u!mjTl33?RVB$j{Hg&&|!k!on^8bJT zKKj>c-`)DO?Yrd}{xJV%Xs?J~qIyecE$<};26>sskN>pXt9x%=etUQ30fq+*76<+? zv}OEac`V|*hJoS0fd>jde%#qoQ?Y8_wO`vjzj1!!e8!o|kjh}dD9Mnk;_Bn-!uas zUxvR7>Q`IYef|Gcv;4F;`iJQUo5BUYcLEP4CC$xwEO1`nF4MNmhQdv;cQ#(wbn)!u z#nZNc{DU7fFdSg0XsBzbZ+I&4SOBE9p`n4nV#hMIjVo<*KJYw{ev$7gf$ob?XL z4Er~4USp%bfAe~o>)y%A3JL}c77TLGa0Tf#Fp!X7V`F3lu|ePf!w-i22hJCqFSdVH zasKmtu$V)EL9xNJ1LxcCgTouF5C@?zpeG>AA;KZb!OddFStlyN%^}Ib0D>$GoQ$H3 zbEX(8{bS6P-x^nx7h<_U5c z7mvJf17p8zj$B zzB4h;$GDF1E7#qvZ|;1{s#<0nJWscs?fui8PLE}BCLgeEO#8=}I8XM;oqOfk^JRV= zkG9>vFX+sUC`MrV!w0-OvYXaBZFSi09HtPh7^|?+Y>IWDjHg_Njux+onUVNE1~62x zXS~n6yD^XJ13w5};Qz#X#EPRNamFr{bqY%sxHz;lc)6@va_bC_2TzR8lobLV1}!Bl qUo;Mw%bd6M|5N_Q{@?C@tNyP0eTT!=;?9f`g}RVm0c%-*2Lb@gG!TIR literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Luneth-JamesWhite89-FF3.pal b/graphics/portraits/custom/Luneth-JamesWhite89-FF3.pal new file mode 100644 index 00000000..e7d2eda3 --- /dev/null +++ b/graphics/portraits/custom/Luneth-JamesWhite89-FF3.pal @@ -0,0 +1 @@ +ÿB EQ:ýJJf »FW–Zy>žoM-¨$oI \ No newline at end of file diff --git a/graphics/portraits/custom/Maduin-PocoLoco-FF6.bin b/graphics/portraits/custom/Maduin-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..2344543de4d070884b13c796bdb48934dd6e509b GIT binary patch literal 800 zcmY*XZ%7ki7=P})+itVrF40<eoa1+ey$YH z?@knT6+Eme1sERodL;>Chr{Ix27yL2XgV3F6#v}Jdj4Q8$CG5i&Xc7>?)lm#1!S^n zgsZmF&1Tm9v^L)yzG*ZJJnHTF@GTUB!XD(#%9_pst|-|)am3n zgMp$9JM?C?YMWV`OdECEBFcCKkYKaTZf$E7wh{gpi=MG~C=_>i9#qzaj|NDER0st$ z3*b>6OS}Z>{=iJCXRUg*=2u34X~|aE=1Y88S^%@kYtLRy`2o^tMbY>Pu&=)-(xBwe z?70_y-9FuZ=T-GSPyZ8-rSHPK!yos%`iGp;hpt7CQEvpJ&VbbJX|1Cu0KFa|Ejtau z&ne}xQlpHtj+`cN?QNcKXlQM%s4yDK%l!}lIekigmaJOQ#XIN<^Mt*uY-MF^EF894 zTUz4rTiHQJ&;c*SLQ#;S!X$S!!zzmEr{Y<*lgY#zGY0X$7%(QLK(L&n4rG-OyL5SI zyPLH`vBk{fWtm|cl?~&AiP@qfm+K}vvfk(R9?MTKzahaa!yB%Pwe!U@?4(s37tRQR z*LvJ{adt4u4O_>lw>c6>mLDb=HJvRl>4`bM#@tsf{aN$*6i5>(^gUOB`}K4(BNirMacngFCaLW6g7#6xd7O-^>5|d-&Zxe+{Y9 zk{Y}+OOu~Y=hOKhC56JEwq+O$HiJ!mNoj=79;etNKAhzS?GToE(IHL_a92`p#@y{M5k8k>uqN@^>nNVOJ_(2BR9 zf_w;6N+Kl)7!U~fV6mM_^U{Vr!END?yxs4QyS{XUhC@|A&dN-JpWWZ~&Ey&JCIU*5 zC)?coLyXhZM0=P4vY+8txS$ZvUJqogu~pei`+$rj)q*PN85?N2)pVwIbnE%6BZW6x zuU`DHx#if6#_3Ea7=hf;ULv9=&0M9OJ7g~Q6?7H(n<~oOyrae&jCLPzNv^*BzPaFJ z{Mn{Rc};pzp6refvybL1-j>yGo(#?09i)wdJuKJod>v6lF#Py&zM)=U$%*v6c~?R$ zl=ikx-2NJ>9=C`)1srC=%nPT0m9g9?8)8}cuK<7$ArfI7rKXIODdmA8#VC~{G1loC zYvqVEE1nnW1&j1k(yiB+0EYaPfmc&e1QLl985S_mr%39B$SSM{GRKBPshh}1)_t1? zbhu%dBRrHVY?F5CsEHSP%EY(+C5ODPdEyhFar2 z)vc_sVTnAHun+}He(`0AE{|o$EYauNpYFwi Q@b*XdRPb}v=&1?rH-894ZvX%Q literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Magus-asilverthorn-CT.pal b/graphics/portraits/custom/Magus-asilverthorn-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..07d8691c33cfd3e5c7b1f5a8f067a5787a630cb5 GIT binary patch literal 32 ocmZQzcqwwkgNb9BmzO6`P>$lcM5*XG#bHSwP1QNP1-6+00H#I?cK`qY literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Malin-HoxNorf-KOF.bin b/graphics/portraits/custom/Malin-HoxNorf-KOF.bin new file mode 100644 index 0000000000000000000000000000000000000000..c63c0626e90f230de922728a47c91545d920ceac GIT binary patch literal 800 zcmV+*1K<1r0000F0Qe7&`1S>v1``ed0000F59{;mXJPvupB_B`0002?F#aF#|HXYN z;lGs+03QHH&)(qo2Ue1PQ0heQ2sbb?5Ie~;BL2+x*7wkm0LTFB!Iz+1figiULN5US z0RMpBAU~k1Ozi?XDRm?O0000$puoVe9DsT{#cY~8I8;#>0rer?f#{)wgQKHE{G|K* z=NaynZi3pu^Py8Xe|+~y>&(x2rUdu|^ML=rNQ{8Aq_hA4NdN~341jTkB*Nnqva=P3V&68o^`eJWy|$f+u0m+ovaq* zoy+|2Fz^WQ4EhA%9`FzF4GQfZNMj+E|zfh-j!_0N^0MK=c4*0O!EBz*hkOfZrexkVAst zz@gzmfq(&o2ZRGp;6319pdNrfKz@Sw0QiK62N0jppW>fDKfwP8e-Qt0h#)|*K|^B0 z07n3ih#wF@fZ*Vu&`=;gFf1_i2m}hiz~BI2U~q6g4;UPA75R<&xV{OI81W{pwB=+z9PK9zkz*&amt6Je^I|g{~(`!0lG)c zKT|rVWFOI-WMGh&@;mfH{)7Di{RaI3{SNvq(D5q6L4kq+0tNsB1`h#GTu@(dPq5E0 z&mhkf&o;}gqcWlozYqTp|EYPsX}fI|K^p^)2Z@0Rfd~Kq0Dyp%mzkZ1iHQjb0SE*D z2Y>*0{{;U4{|xsQ^M>$`_|I_Yc78m=PB+F z2?78D00IRZ2^nV#8#oz#fBfS3y_$PBE@EGMrzln5;dG$Qv7Z>2q&i?)f e`vLv{za+%yCN3kdTMamLxks6f)5 zbD##%ZNid~Npx#3{I4S_tcc_+f?nk?79pz(1s;TS6Vo(UJRU-2&cN!O`mEB zJ49iBmCbzxTlnzTLD@eC!VuwF3<-MF+}I-n5UCv?tM{?v)<@Qv0ndLMf1@({Qb5iN^ub>53FnKHhD9B)>=S>3RD@msQQ>a|w03q*$~67KKm z$A3(0@eG0nQVybtZDJc~B_ByDol4CCpbpdlDC-Ph1d~|8Rf>BuKjdWv8C6y6Z>fxa zq3w6HfPg}jUTTflFjIS{_Kx+L`$}nDZc~i4S(KmE&LLgt1ZYM5#-K6Sb*RhP<;*;e zJ!#!|YJ;#%I}k!4)aAUe*KoDhyRU#n_gcm`M$h^$X2L8HXY%!*Dm{Q-|Kl_ur zduT`KVgIdsssJ@0FY>^dU+g1H!kF%CyVyGYW!+s(3QLWAA&kOPn1=JfzWDx6M~GH? zPxhYdYwmH$Ae-V$(7M<}j{LK}H_!fV_*m!!_knwFpWPMns6C#^-IL{Sw_Q8ecV69O zdpgXJDDiliI1n$f5I@uWIT>GjLi1sQMRuGWU-#TGST(>09k(3)u8XHHc&|2GJ^X89 zuW<9bOQ#}}(p0CP?xrAP$$nL3^)*RNfI;zJXCt5xk%-w|L_#!=*GjCp>(XZn1RdEK z^WmtHP*W-e;yWaxb$TYxY%u5yy5yN6)e@xeB`~Uy| literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Maria-HoxNorf-FF2.pal b/graphics/portraits/custom/Maria-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..bb7c045af0b7893d85dae9cec735f85c49f6e1e5 GIT binary patch literal 32 ncmZQz_#NiwTOVH@$7Ogz;j-pVH*>2N0WLx7@<7SUq2ZPQv`-4M literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Mario-Halkel-Mario.bin b/graphics/portraits/custom/Mario-Halkel-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..38186bac6b9fcca0d4d223eb9edaf15f3bb0c9cb GIT binary patch literal 800 zcmZ8fQAiVU82@hn28)VT59K6b$C6xNd78RIZujrDQlj4v{_yepzK`$!eLpj*CHGNn zl$*Xrcl$Cv_z#)^-2naz1PBO&JBUR3`oiH*h;ffd8J*UK;XXWuI4lBJO}P>t;CeVp zz%mvwU_+50Y7uwJ0pTijq}kRq;%(Ee00e=M&z*mPpXp%@sU#;kmjRPN!4aYfGcQ?6el%0#(#(U#W zmZsCw>EL8ZJ@56dK3`T5YqZJYii@Y)iHeXuLRAA(0 zw98C_$%If%jmIO1^Y-uFbMKR+07*f^17q{8FE8q+1zr@ZLt;^oX`U=8TQ-$M#tEu% zv}Canm7W=2RQSV;uRB5FYRx~7ZtPgaYj_=h!&yDA?MM|55QZ0gs-Q>;sdAD^$|z~H zL?9S2o9NB4<^7)zmKjh$1*^g=I#y16I{EQvgiSoWKGQXNOS+Mo z@y~vJG}n3O=B!`hNHx_l9Pwly^oT;bosag9bfl){D${6K6Zk~`_)OQ-B}(2?X;`sV zm3F0W+xW#U=RLTl1kEucM>MFOx6}|8%jGYC+p+>CGuHB9y=B2sfO6S1r0Lj{A_^@z M#}7i+L4!i%H@R|2d;kCd literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Mario-Halkel-Mario.pal b/graphics/portraits/custom/Mario-Halkel-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..8b92db181ac6b6ac3f61ef3f815b99c455c157e7 GIT binary patch literal 32 ncmb107GRKIs1>+hF6Ymom}5B2uE?uC*`bbwp@dOPEg=&Cg=Pq7 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Marle-CtrlxZ-CT.bin b/graphics/portraits/custom/Marle-CtrlxZ-CT.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c20196b53a26bbe795ddd82755c4830d3f066d1 GIT binary patch literal 800 zcmV+*1K<1v3;_uT00t2W2L%rW4=N7>000IL00#&k03QG!06QeEWy@`J%S_QM_c-z_ z{w)6N6X+N457I9Y&J@oB+ymU&(=E4w`lVPTS!Eez7zR5!YK(Y$62_v1N9H|r%0s;aW2?Y-eCjtfl00aOX9t;l` z9xKF7X$1oZ1_uVnLqp~xCTIu90jU9j3MMG-J-$i)$^OaR>i+EX>uC*{sR3VU(k;scocrXJgP6KF0Cx~eX2P}yz~k4j=0vl)V|QT zfVRTmU@)+7Fu;JAh>*aM(gH}3fJgwyKzKlO5Iqqs05*fHAb<)0OdvpzAV6CSgG>jN z#`J)&0I(p)fT03?4*1UlBLY#D3*v(3kCoV0SgBJ z4*(Am9~=_{2M-4Z2L%Td4?7GCEC&b=2n!4z866rN6F4_G7cf7WvXS3F=Xv-Z{>(nq zG4CJLXZs*|n16>I;}_{4?hEwCe-8N;{TcDFHmOpTs@=dwxeoRl=AUl=$-JOJ!M}e1 z4+;$h3=ISa79s`*84Ce33^NQp0zCpH2s|MM1P%^3{=WJe&Qwwj0FW}$adcuA$d^o$ zXh*CM_P9;PI$xz{d-GcYnr6EL)`f|HzN$W~5V(XHWLyL=2!0e%4B6&F+J5$aW_4ho zWFQd~;z;p{G>H(IfR~Mvi01B}agBNc009F81OfvH2LS~G0|5sE0ssI31{fR(2m=BQ z4i5+_H?=Z2{}|s2K9)%`mD literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Marle-CtrlxZ-CT.pal b/graphics/portraits/custom/Marle-CtrlxZ-CT.pal new file mode 100644 index 0000000000000000000000000000000000000000..72df322569b215c59fff6709c89a7c9d50814744 GIT binary patch literal 32 ocmZpuNoP63^Mm0M$4yZSy*+N_ocqgV!z-LFYX-=2C^0Yq0L~f;-v9sr literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Metal Sonic-JamesWhite89-Sonic.bin b/graphics/portraits/custom/Metal Sonic-JamesWhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf8fa84e7a60cd0873528da2d591fae7f8424fb9 GIT binary patch literal 800 zcmZQzARaI?urQ;mW@KPuF%GF^D`90~-SmgA9WOLjw@v11wA|Oh4En zuW!x|);H%D<6~k3K?SH5MuzOVSO3o(p3%O!$DAWwB45C;L6E_op`M|J;Rg_YV0goC za@_2=)Z^L7Ck@XSyc75U7XJg3w*#t^XIPQ2A|Ymn&JB?l=RVZev9k*>2*91w08~p& z@SoxTKXmiTYI=T1d?+|@prHXMwFe_Kj@j&w+MlyG>#uZe_HOgr@-Y1k4F?`P_)t*6 z%FM*b2oz*wU}j`z;)6+pM1Voh!0>zq&{pR8@%`%y82W*#fI-f{z?@(I;eUTWNbz2q zzkh!H`1y7_E|KIoD;@=OT=Oq$AYCwP;7`LpD9bOG`3CKMRK%X37NNCvFX3AE|_LlD@6jngv_J7F&=qBa9@c`OnRZX-t_LH8em~Bi?|k1m-}!y#2yh7= z8gK`kb_>^mL$Es=gg6-tBO>oCl$@WBhdXxGfe>^!Axe_Iz{fqT>AO95?)@I5oTuBt|mJ%#r>9@LxZU$2PcwiA3wacZ5tX_X(EZ@ zVDZUF%(|iEmHfu^Ms9-NdHPR)CQVDZ4bE!5^4QdMTQ8)Xl;aY$nqkNN7nO=-F}5G} zuf6X%Xx7pYJQ{2Yx10clm#BaTCj}9$y!?WvA(g^nR#}u8%9(P8Wf>G%Cdg!Bv1}|W zzgCo+N3NY3>%M)yudA=_9M1CXA}_xKlyJJ?D@koc4VZ&WWmxZ6JuRY0Gz6gWR4?3f zw7qnB@!4?sd4Vx;KK1fet?CMq`6v#AjQL7apu~1uPFv!G;nDkE@Uo%`?#K6g%l!vw z`g`r&l}i!X<>kNB>p1LeX@H6d_#p%i>Y(s2rW&foADUdS$eUVrBbA0lxKc%a1y;2x wd#FIyOwN3QzqoC3Xi+Un6Zu3TUTEG8CTWzKviA1&f8<5KA>i_@% literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Mini-JamesWhite89-FF.pal b/graphics/portraits/custom/Mini-JamesWhite89-FF.pal new file mode 100644 index 00000000..1a1b446f --- /dev/null +++ b/graphics/portraits/custom/Mini-JamesWhite89-FF.pal @@ -0,0 +1 @@ +ÿB 0©í´!D9P™BqÓ!66É=ç•ÿ \ No newline at end of file diff --git a/graphics/portraits/custom/Minwu-HoxNorf-FF2.bin b/graphics/portraits/custom/Minwu-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..5f98807f7f42920c3996c6bc65ec413a110369b8 GIT binary patch literal 800 zcmXYvTSydP6vxl(touzOJDQRku5P-L-P3NnOXjSJK18>-dfcTTp_^rx!nX5O>19_i}mR&{*hOSSrA-q!^a94e!O-)cwe;<}O`HV)u5yaPac zPNK0r2nkA{z6)W8>V-$v!MbbU^0C9#K=Ow z7D{%bVnFoduwT>(^I)4SgTc#KdN;Bc4@;|9ND&~Sc=x$fe_PF69>@HRg&@1(YBKDnJ%^KCQdcaCAx= z??1ovz`5qSMX;4`A=%<;PnR4)h6`M!pO2+>rp|vRyqfoGTem}Wdm>k_U>CMy2M*z% z;u(l>N@0J&=9CJ1`KhO5hL8CasbAXMQ_)l2Q~W%1^2u6`J z?Tl&-!HhWQF@0k4d%gE<=0RtZLnNX|c(H{n?#x^c7wu0yFB4p1!|Nk)XAPT=?>#lc>b?zP*Yg*sBA-^7(?3e2$msIWX z4P_6NY|kllW>`{X*2P7&JPAGMob%4=Ee=`^r+K#}C^{B`jSI~B%FoRmv(>b1EF~_n ZCa?Fz=|9ADnqc^qbS+FzfqfQ>`wJ%*X2Jjf literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Minwu-HoxNorf-FF2.pal b/graphics/portraits/custom/Minwu-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..f4411e30528582436fb0940fa71f8d6805d10d7e GIT binary patch literal 32 ocmZQzIIiHWDrh%Jw$y7HgP7ipxS3|r*>~MyllPY2tDesZ0Hjk3(f|Me literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Mog-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Mog-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..08b3cfa106ff97f3894a177be9d56edd0ecde9f2 GIT binary patch literal 800 zcmbu7O=uHA6vroS>TJxK1d-Y(G;7b&P4!YxI$OL1K?r*BQnok2OFalpq{%L{U~VFK z$VnFT;Kxl5f*;)lh2HewB~b0|A<#k&T}>d9-RVqcwxp(>3jQ7p??3bA@#f8gAPvu+ z2I(^ykc0pL2o#vlTu3UCB5}#FfNKGuPfRGy8w;|~x}{sdYRHOmDiensF0Oj$9@9aN zgP3_>4swwB4~*gH_uh8jV-9m1#v!cR-`(}RSa6LHUl<`#M5*wOV%fIUv_ZM$KK)eE zTP;`M+rIC+J3-KHAG6H=3e&+ND66Gnv;4JmkVprrTFmLiMrF;Kx-|Xbnfg|}ud3n@ zE4{`8dy!v>rIsH*nUm8}YAgxFhor`{DVT*&f|8KHG!28dkTUw^PyWv5YvT2uH&>_h z+t&Jey}t2ob^giiThZO`_eu-$hs*EZ%-62hUTwYfz^|#-%gX>HPK+fw(xY>aHKSk@ zL{3S9aB0af5a;LlYIU@uSJ9|qEGM`95bqJn5huQnG2v<$CGy2sd~UdnVsVVZ%|tOX zJ)_NPvvU_`CK0-VvIP{IR+!8V^N6wFQ*s0@|L%1Ao$bwykHdg&x6|4D;XL2*0}_y4 r&JeW@TjeqUfib$5 z*^!JMvs?HtiwQHaqL|7`UN74_d~wkn|`PuFdGYHDzBr^{{gn)d`=`@9jRVcJYR>WG{j9IDg((0-^& zDHTP=1a~7|l5Cl?bUrhl8FSruT#{s&vDtinJU`Z5>^0){WB$;&5NH&|h2n)21)>uj zjL=I`%sxo|`r`J??U{QKErKmLLi=(jb2oCAbLn}z-EME~Z0m@2#D-&)?n-uhYxRTk zZg*{WdN;l+?H#WstBDEymQk>+yOrO+^zEo_)BSnrCY*tz&;~6a=%CUp{tGa+@U*5dlo+Va}+_2p+<&en&`$MaID zm-xhk&5$kp2Bl=_(<{Gm5yFAsHZHTN_VX&Jzyf4YQLEiw?N{HjDyzz6)dWq`wStBj VRB#Ue9nfY`OEvyL3u@Fk^&6MsagP81 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Nakoruru-HoxNorf-SamSho.pal b/graphics/portraits/custom/Nakoruru-HoxNorf-SamSho.pal new file mode 100644 index 0000000000000000000000000000000000000000..864634a886a4da7c35d2302b3c0505d6c9167ae6 GIT binary patch literal 32 mcmb2IIiL{Cu!n)cvYvOEY=UR3mc4Uy{5H4$^&fN@fB*od-U=JQ{TE<$2U6pL_`5ELy%CFr1_x<1h+J8S8{z~Pq zSyuXd+Vy?WTAGt@F8y;bPtc6RyhFZWHj6jQS*95i?gX6ic%xx9!)(HKkxAhb5^gAX zY{-~U!%)KUjbj@J%steh8!(J%0QwUF51`98H~_=IpkabAkUyLZo$FA%)-nL41Y#8 zb`E}EY*?m0x_w^ZxwOrh2MY6NRHRolJYl%ZpZ>sx`GNfWgo*~9+n;NGFg$)B!<;NR z&$*a4M&UEViSLhPWFDk6tdN)(l*4euz=Y!q2gipW3NJ2LBuvOS!C-LU1IU>N9xxO% zfFl{^Xe@N|_H&$fgOd5v)$BNp<>h#{d-xf|D(DNSOUMCT%*Qa*SG0Gg>&mE2-bSt4 zVsa)fWlCjQ%hb&>izSR>E`t%nF7Mr5ySb{ng1IJX#4VZYGK*z4%V`#FmDRx1;m@#+ n!Ea;A<>PBQ!`bcPcJ6q1_~{Xb7Yx@K)-&8^sAKrYaGL=DSRlV} literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/NarsheGuard-PocoLoco-FF6.pal b/graphics/portraits/custom/NarsheGuard-PocoLoco-FF6.pal new file mode 100644 index 00000000..c1ad5021 --- /dev/null +++ b/graphics/portraits/custom/NarsheGuard-PocoLoco-FF6.pal @@ -0,0 +1 @@ +ÿ!”Rçï=c{oZkÿ!¸F2[„]k  \ No newline at end of file diff --git a/graphics/portraits/custom/Nitori-HoxNorf-Touhou.bin b/graphics/portraits/custom/Nitori-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..3028c3a0055e346cb4576bc2f211515b0c62b61a GIT binary patch literal 800 zcmY+BYe-XJ7{}kUsb`hCX+<~nSfT}faAkp_Y+f?EYhd-MH0?q+<^?oMJ?~~TAq}f9 z73Cz%$kI78FC@HYVx~wPA-WMbFXa@eIdr+X<9XWpBL1Ea5Bz!f^ZcJjt!5axd}mzl zsjhcHO;MRhjTj`SRok*wJC5TfUzme_kUkIwJr^}uIa zjSCyxYnEtH%BSuah|39S4Gf_JDH=%!V(lQnGHM7^N##h2JYdA(91M0su~LI1qwm9a zO~IjE$ljHFt@3VeYC9J_N!6d2*)v^XR2o}fwsm)Onh3#T>!vd63+oFTid#!fELrvj zAOwhgg#cjudhTs`Wx4K3(?Gk68y`b@MFgf^P%jm)asPlY>K$i+fCU!74O8%cGn~YQ z=g8uG{AniSWW|I-TX9t21zX~uhhju0m4|M}m|K!Z!bi5+6bD3y$f~9TKZV^3NeeKn zEs-VknZ={SVfE|I9O_tq{&&IBn9J~yUFUuAoWJ8Ld>v#mLIzze@WkKyZ5&C+Lns5J6_zl?)Wu1mMMnGP}N#ls9W&7 z&*qTTqQAC!?REO5`AGNB-#9UM_GO#+xY!oy?zH@Q;Q=SZC5D9#NejLdyh!_)_f(3V ziJw)D&4!_Zp@1QQK}2A2OyIh}bsE=oF6&(O*_<|0T7s8{m8GqX5eOI<8XC%0)=!At z5V|9EhR2401s4<=7BC1X0HFYb0uVMZJYYBgfwp$4EH5NMhpz$C!LAY?DJ z-s!v4>n-8y-bCNtZhn?Qh(UluNMykZHen7G;S;R7LUxQY%o^ev;tKMPcFs1e416qn zTs$nith~HjTr4af`DVDyaXzEGOmI2_H=8Jbh=`OB9~Ubt69Xdy3lles%drIs1p+=> zrf1|${Ga%Lc2lK;J%hZ0dW46h083(n1TPyGs}Qdo<0IK%8{RI~Q!ES+pRusq?5uP& zWRQOlzu>OY8>W{`ca?6coiy9OI^N^%)xT5!&b=#go9VUEZI#y|k9a=w82U}jo0d5v z{WimE#os%B@BDlB+O-Q8jvY#v&+z|}Zl@XVrn5%An|wBBbL;4QPrZF9HX=6S?v;Df zf_Sq;GsOzo3fThHJk5NKY;06jm6$+~iAhLEMBuRfRqgNFK5h{u8x1(N~S<3q&eP3I8!d7%133m9}76x_c{F z1Yrh2L4p_&^^XVz`iE>!41W+zp?@S0Clgm7OqsAdH+{Y5@LxM0?z#7#bK#utxd2C- z8Cg*Y6dfxqwwKsB`@v%bCa~ynT#T&kbDpt#JtPs@_*SJkG?3sXyao}<(8^*`)3lm| zIcN%wH!p=*-Jdhe+bMo7ds{?X{i&toQf6l7=;{E~e6`g;u`0z1R(LEHKr)iCkC&oA zo@$f;0S)w>hDb=$h+f!mglLnZV`XxHl{1lvd3mR{=~7p&DYt&WY&MoPsaziILlC@R z2Q$n8c-y8x?;`m^g9z`+7hrxFLc4nYFtgLIk*qq z;F9JXNwv|yXhj_7@4?pqb%v@eotsbdG34Gp^PYFt|6BVDqzH?bht)b z=ib07te*V)?hc0x5Fp^d#F?;hLWQ9rz#Our+=~q{J|Dgtelpn55lO*3A47TEb($M6 z_lX~8ermy~pe-e2TDC3eIq5qHRG_w(C)73?pwj=wuMedXD!FQ?0vE32s(Ag|owyw7 zaOL2{VnO7Ar;l;}v@!XD?UTq}G{n5jy)9?l!ymq+#_Oc~%#NCwW%I0)O|)OneY$s|!5n0Os6^enrCp9Tf4y<7ic;l5*o8c_Y3ft1!fa;@D^te#E8F)3(e)gB3^$c(M U7_nLUVN%(`%QZvi-K~A$e>BJufdBvi literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Orlandeau-Unknown-FFT.pal b/graphics/portraits/custom/Orlandeau-Unknown-FFT.pal new file mode 100644 index 0000000000000000000000000000000000000000..48486147baf5f3e63de5fb9ac8e3f8bb0669017f GIT binary patch literal 32 ocmbQ8xJ*RYtkmg--$u<>5(TO}vR5?qWGk)2jdnXlr!z1B0KfSPdH?_b literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.bin b/graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebfd77214a4348b130ea80ac5c5775fabbecd016 GIT binary patch literal 800 zcmbtS&ubGw6n>MZJ4IsFix6aW1A>SYOfEICw24w99yIkYD7GmcjI`8CilkXxNkq{U z5mZV~-lT_$MS?$YOOh@^Vs52}2n#JONWhptvNfBmvw>(7#Dnt~X5RN^-uGs{2hcl& zUZ-bI0GV-wBR@d`9gv4Zi=t(`Dg zTnR+Aa)pg*HIcY@`lxXHz~Mg8ZttWX7!XC#$?fU#MC3fCCq_4Q6l@m1q5_4J@RhMp ztEe=l&`t*mUUY`iXY^2W+4VcFbpF5 zLFUHcd0-VPfe+K8uFI|qZb6tEkDu|oLm|K0?-}-TWIsN@0_K_Z)GPEE`eYw^m=?Buwqwr4$*bqog8I2w zQ2+HhOLLA`w8+Y31^?Q1dNGz6)5bOnhUu1G{$6g?>&<4XWujrg&eqQMjhbiIX@JROfgcD`;rsvq literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.pal b/graphics/portraits/custom/Pacman Ghost-JamesWhite89-Pacman.pal new file mode 100644 index 0000000000000000000000000000000000000000..2c30e3099cd006418751af7be81ee3f93ccee634 GIT binary patch literal 32 ncmexg&%nUTbB19P++$=>m)y3<3fGlWPY7 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.bin b/graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..0e246e81fd9278a1d9ce24e49d71b85d6ac59ad4 GIT binary patch literal 800 zcmW;JYfMsc7zXhF;c}o-j^s2d@z~n3ts54V8i=j3mR(${RkJ0nT33Ulfh_W9vC2); zwLa+Ps&)Nh<<@1a+%}fjUId zd?RQ`ZT7M38|&#gLkH>o4ef!Izh2SqkT=K#nO%c>MwdVAHTNF*65@Keo;aru|D7G} zjW(#yjkk|Kw>K)^v}UL5sjP0uYU6CbYzM**Bq&!h1_&VfN$&sxNlY>#;Ru#swJ#Fh z&ex+mE2|DJkdsOxm1x3-oHl>h*j{{Co~le0V-PX95*~AT_`(k|2|lXlDKw|&XI^Q( zn1;%V{m!l5!I(4|#(^v;v%H%?1j3WXB1J1+_SN}%5+M!;C1AYJuz5>?YKcIi6#XAy z4#c14TfoNx3l7k5C60P?>mlC__5;g09Gb#)4#N|+m7T(_e%Q^~zF zOg9hY)YR3~jS4oW&zeqX#TqgmyI)TJ{w2VZX#)i#LSDb7`*HHfCZ zSbRTkS+3jKsN0b{A-~D#+OYJ#>f+2NmL+@Umfg+xQ#k=fnntMD1t~}&%x74H5i^eC zNVH=&CQd-%XvO3Hq97R}3D7~pS6HyUZJ;P94oxCnc6N#@u|Aue&q|Ra3`<^k>@1&0 z^8ujw!)LO;l79F>s}?KL?WGY_latSsbzIrzRwXc9A4x~D*g~kT{|k-aKTjiG zAR2pYX-QSG-+aXg9!m&$VKnud_H#_%^`cvdAptH>$}%Qu7F6ij`laG>VrD=XsEw0u X^0{PiQP1qRk(59d;Hvz5jW_!r7eI%l literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.pal b/graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.pal new file mode 100644 index 00000000..70a9a60c --- /dev/null +++ b/graphics/portraits/custom/Palom (Adult)-HoxNorf-FF4.pal @@ -0,0 +1 @@ +|¿ks6=S¢ûFK:iE)&×B›g±JVc·:Ï% \ No newline at end of file diff --git a/graphics/portraits/custom/Paul-HoxNorf-FF2.bin b/graphics/portraits/custom/Paul-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b478f5413ff3c8a72ccb425b80cc83c413095e4 GIT binary patch literal 800 zcmX9+3v5eK82;|P+uCxqHAKg)c4plW)0)Q^diRV3V~N)ikJ@C0q}xoSNTiF$5T+Bc zHR-foBc6L@-g*}`3>zUbGTP0g5@D-hLG?QLznq+t@BH7%|NZ~TY3#Ua>(6cSY(Kce zA%1eNn(#8(R+#_FW0xIOQqg?Xq^O!?SF*3f?VnYX)7dRsR=)V$((_BN@^R_A#vP%W zDk|g4f``|6wcj^vJC?NEHh<3Zp3#@HGshPxUup-egW}}Tia@OR+uJElX?Lg50Sr9T z#df^Wc0vgUrX|csm^fXj2K6^U^T>t_G~{H_2uGY(qXPp$(3+gJ?bkd$6bejmrQ4@j z0|mmEjQTyB!@q=;gnzsj^M2UTjRtA4G$6I?`=E+f6-lG8C$rKLWY!)pIp`MdG>g{j z*o}Uy#sU~H7i*ApBkSuT@y^Fau}NI`t>>1kCF4M*_2iOTzLrmA8UAPJgukJ|ZZG&? za<%9LT?$l0n~#x1YbWrGU0J`q>Fey8b-M0!53JQVg#AcGbwpG|a@bbbY0Ulryu-425LHy&Ep&d{hRxczrHbqRGGwEQhs?t%}!U@ zwV2t%IIE;ILXBD09HbMc-7q;4ycK4rIJP;@n(H(QrwF^2sK;;==fZu2s1Wr!_J=>v wyX><>l!wYm=Ud4Pl^9C0C~(2#UuV`|DvYd7Fqn%&T@1od1sifn)&bJLKWSTVuo3*zqs7|^eMb|jLz}=ua}nlUtcZ=0IwYj&Hw-a literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Peach-Halkel-SMRPG.bin b/graphics/portraits/custom/Peach-Halkel-SMRPG.bin new file mode 100644 index 0000000000000000000000000000000000000000..b4a976a93206ff93721c101328c7340965545a59 GIT binary patch literal 800 zcmah`Pe>F|82`=A=FF-zv)ExRbDkL_8Mby&37lCy>@B@@3ilF0rwO4FwS8KthiEtO zAQY@%fwz|G813^9S*O*Lm%xFb?Ua*xSasd$o3Wr%{eH}QZ@%C6z3w4s?(bkhdlq|J4k5fb)mT>a!=lxel#^T_DmN6L;h~qRYB%xatU~!^=1IJ=K>u?;? zA`ep0rsxWk7G+6$n7(D6ZPuY8MvRjNFl>}IN}qPWeP8;KEp|-g`c=}yh^l&sX@k*@ zma12+9#uyxUG@++S4JlRzhX!;GJ7gjl}gcAGrk(E=qg_lhird>fpG}RBF?2&yFWJi z&i_XWw!UD?DQBMII5<^7 z1hOdS5ARp~CMxf2o5vhZ(NYkpQU-_466$~&Re^jW6bh6uBD4otB)fetad3CMGp>$2 zno_0Sm&$GVj{HViLkJPOR}9Z;>xNT5ynLf_#zh5cF18Jidu*IPx6@;3|3W`sND504 zxl{K4e_JR+J^Ib*w6djaC37p8h2lcdS6RR~y}k}3ZF*_qA8_B{FU+{J7#)0g^aHi=+995sP&h^qB_lh6p6=y&ZC$lc5(Ggqd2gvN)g3vG(VF123Mld-tL z2IelWD{nJ}zQU5>TwlDGH%0qu-_hjQ!~=NnRQi}#etbB!qq#Ld!=(g^TkcI8!1_FWhW&By%9CJCcpRvz+T=S literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Peach-Halkel-SMRPG.pal b/graphics/portraits/custom/Peach-Halkel-SMRPG.pal new file mode 100644 index 00000000..cffb0518 --- /dev/null +++ b/graphics/portraits/custom/Peach-Halkel-SMRPG.pal @@ -0,0 +1 @@ +c!{"ß7¶ßwßj@~YcOl1–>=n@ \ No newline at end of file diff --git a/graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.bin b/graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..b744468936319ca37e0f71dad5b96d7782889d4d GIT binary patch literal 800 zcmah`&r4KM6#m{1XWrO2?~Yo{i0PY@bRqaE!XHRJhnQ()mIMVYp5-4fvx&sWD^5}b zHsRLARGVleZHj`plZpi)Pirmf3c3aOG)yQ(f-*x$j4A=fm&zQemFG&(Ce#IJX#H4D)78 z#w^Rq(~v`mp__N;ktI=Z`8i*#yWlT+`d(#?Eit(%U788X`^ z06_=@4m7p*3?1kzp{V*MD(SQ5gy5>wRW_UdekaD*(aw& zq7$No6h-!n9?>I6=X+y4N5Zu=HIl@+Q^>>v4@9S|E7MrO2-R86%+HrNx3N@Tv?-zz zm3b`(F)=)LcB8dae_e4PB53tAsnewN)ToUzN?7E(kMgsZ$Huwc?Pe9lr6p%Nw*3bM C2-P3} literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.pal b/graphics/portraits/custom/Piranha Plant-JamesWhite89-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..0a21b15944f8fd1856f59c0479edb12ba134f41a GIT binary patch literal 32 ncmexg@5CX*z@a#&Sdt+}#*;xJeruQlW02Pa#(pLq1px&Bkgx~} literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.bin b/graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f3697c15dec8d7bfb3ece0b9ea9f0767d329a7b GIT binary patch literal 800 zcmYL{T}V@L7{=fK&e{3T+&q(Fxi)uBtr~)XE1E@fTV@$V6d7F@)z(O(z-CfY%=3{Y4kIZt9JRmN$@-#Nwve2B|(+60|#WEDfbi-X>1~ z1*|m%Hlx9`-?YV9>MUh;G27`CwDQqy@-)x!9ejcpt{;Bo-WFUNNVrq3yU@Yj(7uKU zD=I~0Dl3^QfWRiThZGnv(4eQRrUIRws;Fa^`&wre_9u2B@1u6&ZRS>8J5r#2=!Y@% z6$L}npFS7=?3CX3l>aHtTsWn1sOcCU#h%cE;jO8%s5j>52~KsT1P3j)f@d@HPji)Z;~{8;#Vc;?>kOP6~u#0K$s+=d76 zX)2r+g<1Fj?ZC?|o`Dt$Q-qRG(zJ=z8BESXAb~_AQW1Hww75u)O2{;jd8yIJ?)U-%m+t(E8b@}HE z>JrB1{0G-X=pMVV`6TE1kOb&qyn|vgaQ=h-QKGY zcRj4UQu(>FK4O2Lcs&)#2-5>2W#eW3l{SmOw&~`$Cyl9``moV#qqi?*83q`617YxT uU`P77aVrQCtAH(%P*Z3IPva?if=R4%r-W|K1)MAZK}Z5{Nf7>fclTfMl_g{V literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.pal b/graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.pal new file mode 100644 index 00000000..5d74c3fe --- /dev/null +++ b/graphics/portraits/custom/Porom (Adult)-HoxNorf-FF4.pal @@ -0,0 +1 @@ +c$ÿsY1)~[üI¿g»=üJñ ¨ŽX:]V¾^Ó1 \ No newline at end of file diff --git a/graphics/portraits/custom/Porom (Devout)-HoxNorf-FF4.bin b/graphics/portraits/custom/Porom (Devout)-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..504e357a997df6f463d874ff0f7f0a380df915cb GIT binary patch literal 800 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 E0L;+S`2YX_ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ramza-Unknown-FFT.pal b/graphics/portraits/custom/Ramza-Unknown-FFT.pal new file mode 100644 index 00000000..c097ac9c --- /dev/null +++ b/graphics/portraits/custom/Ramza-Unknown-FFT.pal @@ -0,0 +1 @@ +{-’%y*GÕ%72Ú2.êšBüJ¦[gè$+1lE \ No newline at end of file diff --git a/graphics/portraits/custom/Rash-JamesWhite89-Battletoads.bin b/graphics/portraits/custom/Rash-JamesWhite89-Battletoads.bin new file mode 100644 index 0000000000000000000000000000000000000000..6516f03bdefa13a0c786c44beaede098244dc6ca GIT binary patch literal 800 zcma)(PiPZC6vp4~#7wB|PPHP9)@uuJJ^1e6kJ$P>b{$I_| zN*dJ!!X&Y$;p>sn@CH!Bq7CmxKF{Ai0Lj411DCst-S4|sf-AvS%A~?8+thfCi<+pZ zkWgqxA@b&smg^mjXFxzXMEx{C!`ki`j?bLpsFOBF&GXt6^EuOJfP+d&939DGpMbtH z6`=)LGSHAIC!6;700js^4Y)LDLdos;w+z?@3^C~Z1`sCQmWm2;ROsJqg_~O@&tYN1|EQuz=+_mk__;EUU6nX_88j)yZ`)63J83y5CM1w1|JlR z!s{%K{DKr{^& zo|jGov09kCX=5(Zx=QnOY@tuj=fUQH4NxI(glI=!= ql8#g)q{a4kU1_m2etmpaJ*W1lW6sLM9{IZ*lizx&XRal?7ybZ7;~*XY literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Rash-JamesWhite89-Battletoads.pal b/graphics/portraits/custom/Rash-JamesWhite89-Battletoads.pal new file mode 100644 index 00000000..9ec7cb08 --- /dev/null +++ b/graphics/portraits/custom/Rash-JamesWhite89-Battletoads.pal @@ -0,0 +1 @@ +LFÿº+B3~}³¿c]3ø~÷€À   \ No newline at end of file diff --git a/graphics/portraits/custom/Refia-JamesWhite89-FF3.bin b/graphics/portraits/custom/Refia-JamesWhite89-FF3.bin new file mode 100644 index 0000000000000000000000000000000000000000..d1d48660f8c60b69ba9de3ccac0cc406b6fedc11 GIT binary patch literal 800 zcmaKpYe*DP6vxl(uFhI4vr1;-V;`(3B=B!fD9%ATt&9*gRDp09tnr0X+vzCcAbfmW*b{(F$b!LtH=EDB; zq#Q^gSdd>dOKxdg!jHIsm$&&ZPCY)Mz>$6XBZ8DnI~j$afccMnwZA3MzQDhCE;&Gk zL#DSTpVem-Imxi<2LX>H(NpXxUd{i-56=6xJ2jnYovgj3puw*N;E5;_Qjn35!;Z0I z#z|wZ@iXCccRkd@I^xDh94c4>ZEWN1jm_Ox^}9A0A4(071H~v03Q-?=h4kpI(`Cz< zOSYmk433bcrUBW(NT&CZEpq5Lo;!y5gVR4+1>BFja5HWS^@UPH75G%%IsW_fc%G?)R>B`L%^biRV#7paTcU60-DK}TY zv)9pb@SYvC1Q)oe*zhb!hsb_c=8dX%8AF+kr`ErY@Y>1D7&H*{l$o+qo1?bG2q{-J zGlicDzMU;G=?q#!40lOL7B&gdLL#?eebe>Pkr&x7vPX80jt-0SflAr7JP;ZPJ;z%y zhx5A&Jx4QAKUT~U=ttyLh`J`@w+(>RI+LO@JB78s1R> p?Wey)M$fzXt^Th`&Gi#|My{M(08y5Q^-*kPfOS^O@wFUB<3Ai46|VpQ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Refia-JamesWhite89-FF3.pal b/graphics/portraits/custom/Refia-JamesWhite89-FF3.pal new file mode 100644 index 00000000..ba1859f4 --- /dev/null +++ b/graphics/portraits/custom/Refia-JamesWhite89-FF3.pal @@ -0,0 +1 @@ +|B ¸Z›B÷1Y>ÜFKo+N83ehD+pX-TP-QVR7!AJ?Tjpx8dz48bazCO)x6cr*3OwLmn~8& zN>Mmo!2Hm~vdg5JXY;Zd=0+E0b~!63EiGqit#)?)Ww+<|;pKTAc)vVfGrQX^hpWXC zZGubR-`#ilO+{;%rws7}9C^EsFWEkaGd%M_zJVRYNtm(o$CEc81W2Xex9Y*B;yW%6 zJucLY9b@br3QYYOfWIYBaOgRDb=*c-EH6Ad$_LR0i4%ScHP;OSyzkNa+~X*gNLG0k z($ZI1V=A^M?gd_{t@-nLl@bZ%n}JziBy%x01mAoa{vc7dDG--l;Y#2Vvi{+fNU4US zp6|+$EQv{4ow6L&ArP?O3%|)-*l)KeI`u|~KxAvu2+G{v)pD&lwr^bE=-gc)0$Ebg z+6}XlirA4Mg@V!(4-@pK>if_4_Iy35#vl%bn2BquSrArf+FEj=VBPVsW&GrFYZJML z#%*av0(2prK=}&*5JX`sI5TkNU?My)oVmBgk&OHbBLq$JV&|#WqnU!%;Iy9BN7}qY z+9A>{0p+~H!_W43E4;hCz?a}_DYB$HU1O6u2ck13%Yq&1yMsk}N7D*)qs1^1a_}k` zKEZ|9zRwp9ebn_ed;IM;BBn{Aa5tLmZ zQpBFpVWfbK=ZRzi1KJE(gF$+ry=#|C&LRvdcbvrS^sTc6G5O~vLPt??q-;U+s733> zu$%hA;3p{V2cq9o^fJ}86gA`z3~{ScTS%|pHF?qR@Q%u2H9T%wx@cD8IBN}RvaMRD zxJO=^ofaakYgn}8dP7`;szDXxCD4mrGrjKYZH>4okb2A{1VTaTYA$htASflE>L#Q1 zRu`J#=|K*I>dY*0+8{9S3}t0v1cU)2f_7N(lB;Lh30gTtyjOhz)~6-48crY`+Ho6J3%Iqtg3XdGdm+Q#RMWT@_AR)NHe>r;y0Q1{JK2>x|Iy0 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Reimu2-HoxNorf-Touhou.bin b/graphics/portraits/custom/Reimu2-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..6fd95971a49b9f47f190c146cbd7f11ddb683158 GIT binary patch literal 800 zcmV+*1K<2dD*k!&b4dq#4_iCAeGI=+T0C)gg0Ez?=0`CyJ9Jvm^2jv_m-W=$i!JR>?2(bXT z0OJ59#24T{V838~h|K`KaN7*aD6bIz0RI4f0r&>YN^rn@;E+gwK!8C11pff@1^EX4 z1N;O30RI3F5DyRr2n7ZJ0s{g70f2yqfZ_qE5P#{v&U?da2mS*80RI5*z*b4^#9`R z0Oo*qLBENfjay02#Q);|HSC_}$@m)ZYNdt!9={>H8;tgN6yNad|}DqG=FUN!SGZ zfcALaaJT4u1HJ)EfS~{q0Sg5M0t*EPgNH-Iw4ojo4Gskd0}clpWd0HV`Tu=)Hp7~| zotx|b=KmM|`}%qPgnxo#!4~4|18|RleuI2NxEJV0ro(y5dR2IgKq>ZKp!BR8#_Dh|MEZZ z-|!Fn&(9YpK;_rzCK@mzyE#z{qOSYT7WPB literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Reimu2-HoxNorf-Touhou.pal b/graphics/portraits/custom/Reimu2-HoxNorf-Touhou.pal new file mode 100644 index 00000000..de236814 --- /dev/null +++ b/graphics/portraits/custom/Reimu2-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +|¿kˆ )P-FB´9^_»R=•ZJÞ{9kª$ \ No newline at end of file diff --git a/graphics/portraits/custom/Relm-Jones-FF6.bin b/graphics/portraits/custom/Relm-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..9609c12dc8c0f8f0feb80f01fb848372e618354e GIT binary patch literal 800 zcmYk4T}TvB6vxl(tTXG^uCiJ#j_y{F7KR^DrsmH05e5C_Xr(bD9$jd#q(Iz!!m=fBTDrPYoxmR9E0E$liwRo>z6Q=kDA z<-diQJP13ni080Z){uSyl>YudH1f~n1`1L^(zG&IDZAMe4FZ%aOeH4sVa{x%cgH1S zTd{qt<69GM@bn(JVXmT+)#li)FruD1xy87jklo;Qykx7ddzC&{fHARGr?=(w(T~X| zno7Elew*^?nPgkCU$m~U7VO3VybMAjFLp}Z0>A0ZV1Oh5gTPfe4x(!kT61)xZlMzl z{uewT;5py`L?lTrS7FWkg3%rQHRHH{DgeiqUhn5z@SrsROkP=DS^lZwx_n3Bhmhub zoL`qs4`19b=;h)CVa;iIc_QV&QEvvdO}{+`)}ln6XqY5?o@!q$t`n|E%9#kH%%w&t ziFijA>@mfN3`)qpi*|}Mii^ogGbAU4hn0{OwP+Qt0^X1n>^L50v?0NIN*~3l*l<=C6Ucx{Nvm{J&^~Pfvm-={`Pt~< zN^}#Q1_$AQiAD>E*)1*A?UkvMsW@>JgSAUFmPAQGGrBtHr#QQTJAZ2(W3SJPeHc$O zVnWt|;Xoz-?eGk9hWvkax||cnq~(!ZVWGD^P!}j1T=HVh?WNmRzq&lSrQWR!=DfIb z+t@bp>LV_#KchS;@=Xb>-|JBkoAgzye-5efo&=R=4I?;=yQF4m6#jtz75J+bQudg*KW~*;m~pDfuNmi>Cd*LZ%5XTrX17;oZi>{vY{&qo-3D2<|mmL;@2A?wjVaWfI$%@%A3;6R~aDWFR1<39e7$&ThD| z+k;u>mK>S!hWrTS=lh*PY3a^Lc=wE%#HAvdE#16T`m&KqJf}@TMUf;=TehSq9!U|c z-3;`+MZDDqPeDBxPb7x1H|gkdABJKk_oeRXWXKu6AAkH{&kmnqrAQyq^|B^kS@uaN zE-#O+ZCRP2!VOvrQ>Rxnk8PN%l%R~2$|SVafLD!1g}kwuq>Zcy2t-f=7)f18N$5e( zRYCO*VamF~A4uxI!GAKnqx08+)9QuEdvm18S#>}24Q>z_sd&vgX`p?e?0JCrl$^ZZW literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Returner-JamesWhite89-FF6.bin b/graphics/portraits/custom/Returner-JamesWhite89-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..e2d53746fbb3606a8079f9f93d73ffd533229e14 GIT binary patch literal 800 zcmbtSL2DC17=4=wJ8Riw8geifGwDIe!9%cxv~w=%gp!QyqWpl0RKKHEIM87!gC>~ z^BzL47EbarIg{lH1(_tq>-uNNx>UB(^SXQ8y;GTlYp>huObG6Z0WJNwd%xP~l)**{ zE!4u6=!s#5#1ec!x0yvPW??YmJ@_e3{r-2NZD_A=pJdP2R3Hv#zgAD4M{T(qy$`m` z2nMpaf&#RW(l{<1TT%HJ8`2?-snq@uXN&*}PB*#lPL$DJ*?n|<`RxrO%DyCrh~}w5 zvdAde8fMjDm+LFdcH!H-@AY@hgNyDnU(CI^<1DP*syL{mW<+`C$PCTtdE|_wlu?xg zx`vEn_uV*<^kDv|_G#nDOShngO$Fy%rHGblqrf1Pf`3`))2Fai1miS)^h?5A)Gghj zF;h8^7}NTmT=}m-#{KEOxY>O0_|lx7KVK{sR;#wdm-rIntCE>ieVk6Y+DLNm@D6`f z=7pYUDfEP&!V@a<EdT%j literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ricard-HoxNorf-FF2.bin b/graphics/portraits/custom/Ricard-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..7daf4d302b93473001c86669556a56a682139587 GIT binary patch literal 800 zcmaiyT}TvB6vxkuj(ewqjEGvHhmlrh`k<$%C@CsQqk=HWg?tcOozaby zqVI=_B9k6^2#SItsMsk(4WuG^D9mBr57;qh=XMwBx&QCsoO{mUoO>^aa1vkb zIha?WSLoUevH=DML9<{8tk67kuohEUmK zl)w`s1re>CoRQiuYjXi&3Qc(qWbp0wtz=n<1Z9Z8eFw^ z=eQAMEZ{_duxco!5q>GW{AE#2Az^vlY*!eo8C y+KQS6yA<7Et+T2k!H9!jU|V3385n@)%5ME0T!jX6eXgrHhT~A1PSA(3_v8;djWP!S){h7sUqtkotwU$a;x&Ie$|}n3P)x_Zph%)xTrqD zNb^+AklECHw3Zx^J)q7)a$9R7o3 zqf%K@Q+nvG$*Ts87*egPmo#sWG-tIdZW|@hCsp&JT`Y+OY{?X`%;!o@YKUb>Y(3GK zR^Z4mac*s)DLZMQKdARL^&?3CN)=_QsdGbLY|qnIZ2px`>)*~^(&_hFD)=HIWT-e5 z=hZsyg$;`afBszVY~Db_dxstKlq2G(_(AmGn)Yw$1X`lbOzVih2{ho*tcyU&uuLMe zjjTzlQq*3IM5vLBWhlXcrIYF~Y*?cPm+qqaib7Cyu{Tu&1Riv$Js5>+Yws*e*ikmm ze03wfbtM^N1kTS8%ol|$a+(`%Rw&Ln^`x56xS+j>2$oExm+_0H%l?&u$tCMpSU+9R z@N1sljgn~S^@YesT8k_hGk&nM<~MZ%q3Li-PjS#lX`%C*Nk5j}1WRQ2!kyaJwJ#k{ x9gpjt**K;f*C~5QA9<+iQ@kjfv{j6s9-r%e(EYAw5Pf(>JKs%t1~ydg_ycvC?8^WE literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Rubicante-unknown-FF4.pal b/graphics/portraits/custom/Rubicante-unknown-FF4.pal new file mode 100644 index 0000000000000000000000000000000000000000..29f4f56dfe6151167902d0df4183ad727be2b118 GIT binary patch literal 32 mcmaE(o+I&7C0NFV!``&TCnW5Ap=PaA_Wt^O+rNPfKmY*3;tK%) literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Rune-HoxNorf-PS4.bin b/graphics/portraits/custom/Rune-HoxNorf-PS4.bin new file mode 100644 index 0000000000000000000000000000000000000000..d686cc10d7a3a9bb2f7927a84d63231cb3034a97 GIT binary patch literal 800 zcmY+CK}Zx~6vzLwGrK#+nyX$`GquIqE~VAM(uEyDO3~1ugH-4mWf5f>rE974X<{2> zEm8-A&{GEwvRW)1hb;1tbqR`67=!50V#6M6v~9lLxJLAT@I83%<9*-zzvo5{N)Qr4 zqAIE`?iAssNHK~K#39@O4{(*+_M6}2A9!LO3>nM#jU49|e@yqzef_kV+;oN5%&Yt< zUm{ij4@4ADl^Vhip2KBRTF1KdOImaE%LY2pgX`!be+~P=CsPZ{E#G`$Uxn=T#L5{K z&;lPO@DATm3*Eaer5(+soq9zS0;m@!)xXVhl>3SWj`s1!_`T!BJFDt~bNk-ru8bp2 zwU?z)NyJv{g~oKv&`l%#+*-7fe3d~#DPoAC0cFSoPw_QwT4^h3UE`F~inP)MIjA4j!cHTC-UIyS6l42(M_hjIVAK`6lyUc+3+B|9o!Z=9k z7f^>E(ad&h19t{St!(Zg8tCRo6Hed(5fhq(lX#?z$b%9)tjxq~8)j#Zjb80VpJPA> z(F{c0PHLL2?0qVaR+fYdLeO?K2AX+(Jsg+E&PBzBQNAus))_^9Y&_6HGhLFG+ z2E{1m@KQyFUROj4A}Ho|vLR=G+5Vz>xJUls Xoj9WoPK0%@R>~9_q08YBiqQWDgtQsD literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Rune-HoxNorf-PS4.pal b/graphics/portraits/custom/Rune-HoxNorf-PS4.pal new file mode 100644 index 0000000000000000000000000000000000000000..2fe95e75968a69d4886b358700f854c42e19cb27 GIT binary patch literal 32 mcmbPl!ocvqeo5qgv&{T$f(<6U3@$<`!fQ>hMb!&40098Z(F(Ny literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ryu-HoxNorf-SF.bin b/graphics/portraits/custom/Ryu-HoxNorf-SF.bin new file mode 100644 index 0000000000000000000000000000000000000000..c984e6f6e9312ed1ee8dc6a60a5923ff6346ceb5 GIT binary patch literal 800 zcmX}pUr19?90%~xG7jg!!-$?m;zSgB)c`4i}&GqwDswifVm@<_44$O~v1Ze4>|VQ@%RC zvovLPJD18WB}Ov_4Iaaw@wu=|$P~Wou^w4tupqM`TNm5KhS*WImz7E1N{S=~Fu?yL zr-K@fWr;h)$zU#D$-^|oW#BjP9x?y}0`Oul7WNCLsu|Z<`6hp{POd9}`*C#rBdJ{a zB>^LBVYn(h#xMY+Az;8vngyKDMF1cYGOPuYTUYO0U)UJQNkq0bf)K_G=3!j3APcAh zDt{WU2q*D6K_5+DR0oKV;!jd|)k5OBa8hh-eYTL;ccrh`$vDq(`!L&RLn|X^umPJ! zi^qzGAuLIwFJC*VQCk#z15(JO)(oCT6lP){wgPWK&70r-rRTc4f63b60CiK!sdb

r=I+~W79y;Y~a@?5%rIFgxBR;9mzVaZ7S!GCB!$JY* zVS-SBU7lF~bCwHmp~%u?q%4qK_Mu}&Ij!=`g}5nA4Kmkis0m8-)a{p1zwGyjMJB<#A;65a#!}5`b?gyq~gSCZ^ndw$UoHU>-D|xwa&K&JAyzFYmq@5 z=oG95K?(XO($jgPpQ0E#5XfT{$hKwZsWY hAyqJ7JG3RzcqdAgL?p|iP)OBLG?hSJ(NPid)IZ78MhgG{ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ryu-HoxNorf-SF.pal b/graphics/portraits/custom/Ryu-HoxNorf-SF.pal new file mode 100644 index 0000000000000000000000000000000000000000..a328664648cb551944c9f86d27fcb2389cd08a2d GIT binary patch literal 32 ncmZQD;1isx7-N;raT literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sabin-Jones-FF6.bin b/graphics/portraits/custom/Sabin-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..eb28181606e723b7620ab8319e16b57e1de84630 GIT binary patch literal 800 zcma)(T}TvB6vxlZo!#+^oqZ57G@S}EdT33A6wMtaFp$KTAkfIDFoJ5;%&*zGqi!l9 zYef%IrUTVmg@_Pk=x9(qh#?UgMNQeKUo$S4vtKjK?t`!O`=86X=Wsa({ucqFXt0qa z0R%}R1aU|}mIy1gjgHm^guq1wD_A}yVH#Y{U0I%lqXk@U73+j-+4FE?sc1D_jhd}t zy;lNsFGZpE0eCz-k1_5U$?i5+8u=xo-K;*`eg;lE4S3-rB6Wku0>fpHA@ zr{&-u0w~0~z%81-aEBq9$f}(#&RuM_g*_Up?Bs1tbTf?+MqcD4%`U#LskeFXvahbQ zR4j$*v^8H?5D3CFqGl+%87Z47R5}EM0E3L!Lu3FUB5r(Aii1j^lI(y;BL4S|M0+xo zXuqx!m~*H9L^7v4wL|l)B(V}(rA%_P&S*J{c)D#Sa&~i5m@LS>kotbBq{QvMeP?-@ zD}4hhm7w1Jpt>S%Tvv|lMR_F)HJ<$3v3gAp@*Q8`bzxHIpB7=jT#@+fo&UjH_xHXP zAK%mds;K-~gFkOJ<6G(qzVFzocoOZz6Z_XRW~%+|9t9++vDfFjbsoTO*Jf*)KrkxK~^ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sabin-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Sabin-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebb356e4654e1ce86015d56e2a663727844f3a4d GIT binary patch literal 800 zcmZ`%T}V@57=F)pwwQZkiHB-w$>N$%dkqQY!6LGr|Ny=H48tq4ot&lLJ zB(QR+H&L=~#K3AZEfc|65S0aLf{JKvDxBrE^ENZ<%ICRwzvq47<$1pE1K5O&#Hb=9 zZ1`UZ5(tw>2}KBDAVpzJnJq7jN=V>&00I(HEbENTb3Q~TGE!Z>Bdnyv;V3DIjI>$- zWZ)>s>jUh@C9xg>rtB-NVzMU9W6$0Htb1cWfeFZVy@yO!m}mW5FcbOd#wjgNxp)ht zN1Ub;DJ?}P8XACtAF+!uU$W+-9-plmik@$(nZY^1y}a%=lRu-=9OeHC<-;nJB!tyG#Ls7T$S!QVui*~N|$|VylzGf7I1~ggU2=R3HYud zCvqYi2oK19u|C!l6h#b#7!-Zz#ns^LOD%@c%x_6%ORc5$CW03Qzu*t0#O2R!!7Xg( zYpYMm2o<^}>Ys-H=Z&5SnxOzy*QAf;pMU`X14jd5-F45rp+LVekCWx7vK5yz>i78% z2oiIyf|k)S%q~{LoKP0YS!ifzYwPKmn5g7#^fv~zuT5BiJhon_ylXQznYAdF_x9>^ zWjbT0Nl5o)qkwrRT`#j62bNa+q9~RYpW+`p%B?QyK3F=IaWUe~)S2h^^)Jcz=;Gc* zwfM)whL7z~tyIm%Bpp&7CR8ekB~mY^;&hymGiF?&%V|Qq>~y@3@vtvWeoxFfmh%R2 zIrQp6=x0tkon|yu46ik>HP4P%M_3E1X7$ct92VStZnPmY$#gK`$9GtvMQ#JPa+

=T_-z1(MT)QYMaqdJ8#$9PFC)7yk&#u#qY}o0FrVFx&QzG literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sanae-HoxNorf-Touhou.bin b/graphics/portraits/custom/Sanae-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d69ef042476f4bd2b8dc70cd811c77c07f0f7a1 GIT binary patch literal 800 zcmYL{TWm{l9LInEbGEjuv~*-l+QW$JLx;>nt!IhEHFhMf$!OV&xTGW=wy|?j)&~zN z60rwVNK8C*iMU^Sx?z}b36Nl%SPqV=##sVb2Plkr4qeK#HxfO!%Xh1lKW&%4*rq2>~J~vcH9NqH=dwM_yEV-0$FA9SQndss-p7ZSo zeT($oNoUK>3=_`@ftW&UA)3h}la7_e4u_;W{qOEdUp$_X_t`9LvTCyvbVk;rO^XmLE&wHS-O0-_p&saQ0+QM8_eTahJDCBV=4l9s zX1AY;m^*oflKxAJMX7%R1vC_IrGPs?Nk>I2Mc4Rv2=K+#fU2h1u)0iZNi}hy+NkUd zTvO$2E}48&Ip&iiFJznBvP5S_)(yLBR!_HC3ZBat-CxDBSJ#D?$EU*-n9Oo~F9@Dg zQ)cG}-$m6s${&$x$3(m67_=$26JFQjv)H5HaWvfr6@F~?v2hNHAVlV|TCn0a%s998cE>DpHBJpE^FZoNPOptfuhX-^+)#KbZNeu=#5vqM}qE)n~rR zB+P3J+YC|XikB;u+}b{ePMemz@V%D&tjAF1UnItLU-Sojj_wyk;u*$iL#`w~OB$Y6 z@#w^^hdkE+O)x6XkxGLQ5}wkU8#As3myDTG8tQpOgFCu90BM z6C?{{ZpT%_vEu8vp^LV29LxP}9M8n@9MAK@c;jCXSTzMJIF03$l>L|)O%E6+8p}+E s$p&M^)N-?Bwms5u%2Z;S_ykzJD%ÿ Eíe \ No newline at end of file diff --git a/graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.bin b/graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.bin new file mode 100644 index 0000000000000000000000000000000000000000..8920a354f4ceffcdbc543a4784fba60a8ba31e03 GIT binary patch literal 800 zcmZ8fO=#0#7=FGc`o$TVY!hv#m@xEKYXzHe$2&OX8QdDPwsF@Bh#9y{~T9K_C!LND)!Mo-Z;Z z#yoe`HW2k_kKa`W_P&<^!jLGJh=Xu1stHw56Dfx6QeA9M>=iKTeDX2;k}n5?6IHDswM#rDU#{ zJ59SbI0I~Q912IkFCr57pTzZrfP?D8QmgUZ6wRfI_~F2hvCdu8cxV&r7}uZi4ayt) k{Xwp`+#ul^t@G8zRT@%&0#cEt4g9e&x&_VY`+F+>14CgawEzGB literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.pal b/graphics/portraits/custom/Santa_Olaf-asilverthorn-AW.pal new file mode 100644 index 0000000000000000000000000000000000000000..6bebec73638d012a43866c7ada40165385c3921e GIT binary patch literal 32 ocmZ4J-O3YDFVDay8n1ajyF~M+?tUwK_y6@wENhwm2qy*r0J!c8o&W#< literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sarisa-JamesWhite89-FF5.bin b/graphics/portraits/custom/Sarisa-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4eb34075bbfca18e7b8ccacc3def4f5f4ce5115 GIT binary patch literal 800 zcmaiyPe>GT6vy9hezP+x>;5?ejpW+Y!7i?5QcCGGgNHm6dF&AE8i92P3IjK6nO`7m zb}8sm5N;F^o{Xd<1b1{LJ(vZ7No>w8MGzh~8qlrXnP0!(l6&p*J^bGLy~n&azxM#@ zU?d@_?lA)~*nuI8d)q#)92vh1uXr5eaJZv`QqNmkW3H2H1G{mgYc-M4vpnuNrBXI) zn#JPgCUXl`PvVjCouqz-pvvQgLb+V6dY`$sWsSlkf$;0)LkBKvSEL3Ha)TWfJYb#K{_cU< z(=&(8@ra`I^;IhQe2JmPBhwl6?w~%c+Jw^N&Q7^ZYnUb>G?|15i9p2KIQ&hiEZsbt zOh-yg9m-x2=U|n8?tft19MxKf`*W;&!jmyXK?AcUMMY(4=%F+;$*LF4ksjI5o4 z#!`#m0DHp_Q%j^>jq5XL(N`lFj7B><4F=3X=Da%iRDZ6|ks+90U*Fow=RUl*>JC>Fb9 H3q|2Cn2Yh^ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sarisa-JamesWhite89-FF5.pal b/graphics/portraits/custom/Sarisa-JamesWhite89-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..ddc8d929771f32a77e7534565164eedefe56ccd3 GIT binary patch literal 32 ocmexg@6XG?P@OL?9<5a>JB#hFA3K9>cq-FMi!G@aYHq0l0IMPkL;wH) literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Scholar-PocoLoco-FF6.bin b/graphics/portraits/custom/Scholar-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..fd6799946961e24b603eab842a73d7767d329029 GIT binary patch literal 800 zcmZQz00BlQ1X6H5L|l|Vle1?IgF)K{-N|c%KguyMlriKpFrI7h&R}a|@n<-A@ISx5 zxt=(Oxq!w7jUDQC3?CSFFx+6cz~J9-j?sbR!+{Tfj_gvqE2k@N!7Rf+fq{XC!HGeU z;V{EFhMWcs7Y0U<-3S0=BXb#;nHw4oGA18Veyre-puph3@Q>j?!~O+w2V@!I8R{ME z=g*UuUmsjQf4jf^^?LbYVTQj9|3j1)u%0lUkS=iCpr8GR;W^2t=S^SBf0zF+{@v;a z`w8<0@&-Ip7&@32NS-x9*v!xXhHwE0_W%O~La7Fz3&60!p}_$t*3iHJ!Y~p@0%q2WNofddZ?Jiu=VBO|{YhlC`f439jA06V{(Tb%%l0J{Xc1hXWA zigrQfuaEof>}~%4D6e=g@Q<;iJ8WfR9rGXNADjm!GB7r9AL%RrMLan68G!)A0S7-M z3P9vF&Ux(3%`jImGD<2irZCh4;{Xb6ju@SNe zgIS{0%J)|8sh8JYi+FFzo-!x7vy4eah((Segh6En%TA}g2IpZW|04%z%*`@#By#betGv5e^~zjcIKgbt}Ur*GtEly8u4s0RSP`NvZL literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Scholar-PocoLoco-FF6.pal b/graphics/portraits/custom/Scholar-PocoLoco-FF6.pal new file mode 100644 index 00000000..fb4766d6 --- /dev/null +++ b/graphics/portraits/custom/Scholar-PocoLoco-FF6.pal @@ -0,0 +1 @@ +`’%š62ûBÕ).[g»Bê¦y:)J­%2 \ No newline at end of file diff --git a/graphics/portraits/custom/Scott-HoxNorf-FF2.bin b/graphics/portraits/custom/Scott-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..f9b4558724863ebeb501eeca7ce6e7618df08658 GIT binary patch literal 800 zcmaKoT}V@57{{M;&OB$s&2w~$M;mT_pc978cB3`i)G`WUh6K??J2uh_DczNd)AMc$ z_F<(-p*dO+;ayo5VJYrJUKAK=7eVC5`~VFi&#+|L+S{>9FZ%zko`?Sf4?ixgJUf@P z(xp0^vC(oRiv$Y^izB_E=Vk7eForm_erS^NQFYp(BCD%( z*?}FH#;!2F?cMTj&6h0ZeJR{a+R;?JJ^QS33WzDLDa<=<$ zNX9<=&WN-Ts7Kon62@G+W|CSpes-*M?0HsYh!XE%0U|J??SUYi9CnSl zA`HsuuNbp~0FMB{kUFm2)KpQ^%z&{0nxTn^qlIg6b(~L>zAhgx8@D$!Uh;T6fo_Ib zu6=Ny%L2c7)ag*9BnniQRa+X7a8qGMWO3+#o&zJnk|d?bQUI2Ymi8SXRG``~ktElW z0%xH8Rco6=>Ke9JVIBcO)>A!HZq9{*r@T@U8PUR~wCN~n12;zh){ia@3X!2q&7O)44@#u_w@@iG(RQ*FCD*`z_C8ri@E{jj_L>VLCT~keCIz~rz+bJ9A tqt0qH5ACQOeKNJ6P1xeUTBiix@gTz|%iLPtDk-V_FvvNDg2)|YfWME~5+VQq literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Scott-HoxNorf-FF2.pal b/graphics/portraits/custom/Scott-HoxNorf-FF2.pal new file mode 100644 index 0000000000000000000000000000000000000000..b84086357b3add107963fd203af1f1bdce7fa8dd GIT binary patch literal 32 ocmZQz*r>SEO;{`3>bKV)t-ACV61Ktnifw~+ICVJ91uv-r0J;kb>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Seifer-xeblon-FF8.bin b/graphics/portraits/custom/Seifer-xeblon-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..b192cb7858a49a0d62c76e4e414d92b0707fde9b GIT binary patch literal 800 zcmY*XK}Zx)82)Ewb*4kk90qpDV%|Z>TZ<7+P|kFU>|nR{QZ5K#owhEG#Ajuo^Zv2)TfcjxcT4yJyO_w&B*J^t_g?|%RRI1YpW ztu0N;ILGsx0Id;1lF2!`@@k{D-dOufGqTZc@8X|(>dK9*Ui!cRPzq!4h8)12J7by$ z2sk$Ma^OK^P4dJi1u&H*FaU(QHO^)9s99LLY!m@aW;9IIDgX~Wvp)ng=6E>b-+7T- z&#xQrYPCMp?9UtMRN|n67RNXy?`{L`%a1-S4hSWnFX%Tq2?9Ky)W~K}!7kXdc2B8L zPMf|{p&g(CfonbG3ua+k8@ESs2Uk&1Kmo5gX22u)TUDhRPzhqm6y(if#bi`+vxDKO z3h^Muc0*7IRj{(0rm76)mQJfSd#fg-2HYn>PPV&Z8G<@Dp zUu-)=K#NM7Keim7{mib@y2gPdI&=F8oX6h!f={g6>(u-H#M}8hy&o5DldW7|YD!{{ zKF&qp1R1-9m@!9Yx_bdCftZMiNOR_9b literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Seifer-xeblon-FF8.pal b/graphics/portraits/custom/Seifer-xeblon-FF8.pal new file mode 100644 index 00000000..eda504ec --- /dev/null +++ b/graphics/portraits/custom/Seifer-xeblon-FF8.pal @@ -0,0 +1 @@ +è?g í )*=o1q%Ô5õ-÷1TRwFx>ûRfZk \ No newline at end of file diff --git a/graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.bin b/graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.bin new file mode 100644 index 0000000000000000000000000000000000000000..d114838c0ac2a456d684d654e0905540dbacec8b GIT binary patch literal 800 zcmZQzAQmt(GBdNYVX9_i;O5jeyxg^^drD#T0tN;)1{MYu4jYCP0c`iNrOr$jG_Tz>5K(;qi41RRZVyy1A_=Kps$m2N7XE%NwuV4K6X3(qd5-L>rw zX1vrN&?4U=za)N%e|@v^oCWgh(k>HOVpdJGH#3<&}Z z1uX?E9~vqdKJ9oQ@vwpQg~SU9?w6tOpZ{GF#PHqW|B3G}zW?~XXs-}&Y1Z3aPdT4HXJEUKG6e0OUUah5<7JGb0Ny z@L8Fen3);a8QB=v7}=OuS(q7_n3<|uFZ+JylxN(?t~pu$`~ClG9hN#U9!c)G&gp91 zUVUG^Ykshw+xN3;KTq0o@@~(${hG%N&xxLDiC%Q~#P&10@2y7(a4Z}?PAO3Ver+*# z8>vLs9Wp0@Q37-jCzBAX5&t9pSK<*(ncHh07alow!TrX@wSoTa1(y^=66PhyKA4&? zEAhs{_p>d$|M7YL>91LFecjRisz9YH%9B$!xtBLrx2Ml`nhUg&nT3gsfr){Um63&& zg^3Xafnq>k12MbU2~jU)lSNB*tXs>xg!4?I;CrFBY%j%Mvc433A@|VkV1AI1uYmq$ z*6o7x-!{K&+;wnS>!bGvo}GMjw#irMEYsPAd<*#J2rDkuUb0?c#WoGK^YZ8A|MQ=f tJ1_4t-yaC|5;uPSzuo+Q_3HfH|GOi7+2*&(9hdi?%zRJ!Shug{c>ws|F{l6l literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.pal b/graphics/portraits/custom/Sephiroth-asilverthorn-Dissidia.pal new file mode 100644 index 0000000000000000000000000000000000000000..93e85102ad9222b30f0a5d9340e32b9e5294a5b9 GIT binary patch literal 32 ocmZQzs4f;yzgr%ee>G`x)N_S3wt;?Ly8K=n3~zbWMkfmZ0L;P+TmS$7 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..115e59f8ac0437488fc1f39de5c8643f14490b3e GIT binary patch literal 800 zcmZ`%Ye-XJ82--A<~D6R)8&+s=1?R^&?Q-swEc*Mkq}{7D7h#EMVWIj(7YU$NI@{| zNBuA-6ouH2Rg$qxcA!#=QnQwZ)wUMQdE0Rpx4FyPrtW9Y1MkOs;d}U=??q?_ID>^V zSv-6I`qU>gR5#yl9OIi7WZ1`zsf*y-#< zgea=G_ml78rY9B(Z-f)~+o&KNj07W*SR}SDJ(b5#6N_YpDJ*^(|2Ch+U@nc?>zY_aQ&VGwWY#K6><(Qbk4q;@AnJKM$s zuvP9`i#-Oz*lSn)zyLTm{hk|J>J6nI-9y^kvf1Q&|96tRpyZTXPEqpY9EnJTND?Kg za+I6fTRb$ov=CfMR4J08DCNO(xdH)-{5?hr38BMmH)AUoCQoD|UHd9pV#*nE29tr9 zx)xoVPTQlM7|k;CCy!e=%sq(7L2*vm)WQ6Z+H!5R;*8?b#mnD**ngg_#wC~plcr0M zgpnsK*qc|RQ0a@nSfQ`c`(~aTo$l}Z(tCH-d)}crRI*=MQtmtjO2~n6aKvipXOZr( zGvQEY?VAG*5-13Ai8LaW;P3@vfhZ$0LyWU=b^<(tN2Kx)?|Z1h|9tp`>nSZXXDv3B zZibfq{`Ju{Bh14qaF4w6uQcUHQA3p8aXtoH?T5oJlivU(EssVWbqbfl1XhBqIor0mU!q$$USKT;A&5^}qGoqQE6i5m1{{b5|oe2N{ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Setzer-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..b662b62c9ed2f5f329de3b69df22f5569d04f861 GIT binary patch literal 32 ncmZQzNYPnt!J*iv*<*N7^^@&%y<27iPNq)9e$vrDl4`O6r;7_n literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Shadow-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Shadow-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..a7a40025d9f6349c9952d87d8abdbd8e38037d53 GIT binary patch literal 800 zcma)4J!lhQ7=G?9xm-z1q8N-|lT!o*5vz3Q5Svf2P!ww190U&$TomFUwx;I3NU5Q# zOA*09GYAUprnc3bbx;@W(7~ngrcxZ5lhl~lB& z+{30&LsVUPwJ^Ceb1(1B^@)7(-NGnt%OCpsPgJ^IA5Xipy%eIuM6qK*E-h(mOdb~} z{7Vl;=U1!Fjtsc`2qTa4Z1P#pjHVgLv4m!si`pZWfJrrQFm6DDr7dbE%Q41zi<(hY ztmXaR@5Ra4f#rS0y*Adi+t}=HC-S?eA*C~MBVgUp2VUC4;?J&&)TLqQT;~PjqFD;3 z#%)+FDCGtPR7u->!J_(2DFy$=uS2J(&S;XljbETP*2d>hVw%$>u6wExbBl9x7SP>n zq>K7cK`$IByot_v?xP>w2q1#9xPmfsn4QQsv#GHg6LY72#{-q!8@>(SSHJDA2P*W+ zf`UT1yWocpGRvZ|eLms}T^*Mpp(H8s87iB~NK`X!T_!N8 zDq5FRmy%5;_KAB(kqAQGqNdwbXl3i=C?OWLerPzH;JI5fG;f?Ky`H8_lf-e} zX;YhvwL97ty1yr{5{O*lzW!Wd-0|lMoS7mew(yQ8cHU9v|2#4}6LCdcfq8aG8|{iJ z*4WpWAgk3X6jFs$N>Kzw0Kp0YGs-R&?&k)JOD2+s2=D?275+U{HDrujXv&>y?l|7z z_SM~K>Z!QxXcrU4Qo0U~rw*$JlDhRbiyHj=iDzbwx!u;w*Uvn5j%jRz<$O6mrPGJT zf}b3hiuxBrm>oaZ9zT^E3m!=-qwGm+m&xHDb@Htw29gsT7{-kUaFI* zfr(3rOQ*Dilx`f9K{{OeB?uNSIT=x&R+&0|;acZQ%k#4Hy|P4oYKba8)no7&+?nnS zdZ&)g0$OjQZS+yP3aUMTbhRUub*DSUw|UD3j>F^QpyrNoPN;wjPajUD=oFaXyQ0~wAA@r_(UXmD0@d^S{Yn-T#$k1r@)Z_-&Zgu<0YzaeZWEPHn-GXC zE0cdFV*(O3S|Y7sdBnA5T+LoJuH=L-#>&@y>r5=+9>IEZ%lb;j$6FtUL8N@mh40JO K*~NZ)AoLe`1{L@K literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sherlotta-HoxNorf-FFCC.pal b/graphics/portraits/custom/Sherlotta-HoxNorf-FFCC.pal new file mode 100644 index 0000000000000000000000000000000000000000..5b5e8f2d4a66e610cc3e550f18278a59dc596336 GIT binary patch literal 32 ocmaE$9G}0x`hWfXbOweyN%i5&M06C_nO6D*`~CC!YAVhN0Qcez$N&HU literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Siegfried-PocoLoco-FF6.bin b/graphics/portraits/custom/Siegfried-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..e83bd96482227e273da1579acf6f3c64737e17e0 GIT binary patch literal 800 zcma))Ur19?9LImZd+v6RLT*Oked_GNFbU)~DK3$1-n5Ls9(pUnF~k(47DOb3yZa-p zB-}$pQLw!PJq{u=G`!_dp-3U4K*_-hAt~=(YQ^QAu5V%1rZ1efP_jlQVpT# zFgQFC`6B-kf6z(oraKG^^tWyo>@qj`ktk%~0)4Ht29LoE4!H?jO`TM%pamAFsJkuT z5gR&hg-624WtfHUSYUSt0!bEUdH_`LA}|=(zR$lF2r-Q7TD-Hpv0|$*YC=c6v17m1 z+;u2_I6b&;QF)wGlg-KIlpp-wUdRWjuWO+}TA5SR5nrJ{+n*iG(hI(MiF-KXY-&S& z*)zGJ@xjT7o|UFm`I^M0JQ*oN#$ei+RvCDnzvavP9)HfC@W0h5b8p#i)!S(^j&H zJK|(;9s+H&1*t${UvgvHtCxYNT6b(zY@it^BTfr#I9yG~#ijmdz3=W6uO#N0#!rOC ud`rO(sa9H~MenM2RvC+*@4J6mc@R2a45U8FIVHr5jql-Ppg-kRW&RI;`Wd(Y literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Siegfried-PocoLoco-FF6.pal b/graphics/portraits/custom/Siegfried-PocoLoco-FF6.pal new file mode 100644 index 00000000..873c3d1a --- /dev/null +++ b/graphics/portraits/custom/Siegfried-PocoLoco-FF6.pal @@ -0,0 +1 @@ +¦7.¶û"Ò–:úJFMã8Ä$¥Œ1cÿŠ@I4 \ No newline at end of file diff --git a/graphics/portraits/custom/Simon-JamesWhite89-Castlevania.bin b/graphics/portraits/custom/Simon-JamesWhite89-Castlevania.bin new file mode 100644 index 0000000000000000000000000000000000000000..998820eaf155251d725519e157970450922658ea GIT binary patch literal 800 zcmZQz00Bk@CPo%!7G@51Fc*oCXLumrP|xt6_ml6Y-lDllNK#+PklO;?NF76F=X05pVwVZj4|gbNQIfS3(ncz^)}(E&)z zp&_9`;Q$Civ?8l9IPihtL&J>)CpNqhSQD@&09g*i-r_MW&%o5fXv+Mf;Xm_#b|B<`WvXTRi}e(1=RMI` zqPtkF7%m*RaNvOf!;c$3X8hRk!$Muc(`-`Cyo8-G8zUYWJ}v}V%?N~YGIA0&hP4H? z33DZOC+siYU6;P+`M&LQoaPIqoBApF7`mvmoo_VkB>o%tuiEg^ zID;XSi%t3Z#peo)ZWE$KcJutTD*d(c+v}3>jPR5P4 i`@ZdaS^m5CZ{NSYf5&A;lSUH<6Nl0SRY6t3I|=|rcNjYW literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Simon-JamesWhite89-Castlevania.pal b/graphics/portraits/custom/Simon-JamesWhite89-Castlevania.pal new file mode 100644 index 00000000..a14ba0db --- /dev/null +++ b/graphics/portraits/custom/Simon-JamesWhite89-Castlevania.pal @@ -0,0 +1 @@ +|B„O!ép ¨²%©ÿ.˜:NÓ \ No newline at end of file diff --git a/graphics/portraits/custom/Slash-Badass-CT.bin b/graphics/portraits/custom/Slash-Badass-CT.bin new file mode 100644 index 0000000000000000000000000000000000000000..8c1859c22f94459d5e9c6e41faea7ada12b3a7d5 GIT binary patch literal 800 zcma)3ZAep57=DjOcZW-_rK3V+`w{rVXhN7Hmzykv=u3Z9KSHS}sHjPh#%jAmC@Ct9 z0>S!IKP(~qsI)+LuV2#)ToJ@V+=g2krn^hS-MDx6bT<26&jT+!=WyQhJnswePaveh zY*ul$Inz4|n^e=@Fb2aGwQ7uvWHMSdzvxj%ciGFb>BeR(kvIvHQ|kU?wTxArvS}?#Ud{PY zP@s$IiXz$sRx%Xo&j4bW{4z*v+TZ^bL6D?W-oFq)0t;AtK6zaRqTr%PHrXTlpb~UI z04rEwBwgGm56D;LAWtVh zvZ08>q#Lo5G$qK?(ramF`~ejVTOo{sPs2AT_y5%yd&BX zeLPPYc@oK4&6HBipj${yC`0M}9$4SG_sd*qOrN+dPb5Vqfn>A~f*?W@o#o8~sD`y^ zh0PX;L2JF`^|qdTr1s;(=orQ{T{BU56_V-<85b3dK~Z@AdDA&r zOavA?7YF@K_f4T%6XyoPP!HO8tE1Lv3gr@gOds36Q20$FYvfvEAJ^U1-Bx3sFze#F F_#c00RT}^R literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Slash-Badass-CT.pal b/graphics/portraits/custom/Slash-Badass-CT.pal new file mode 100644 index 00000000..e5565731 --- /dev/null +++ b/graphics/portraits/custom/Slash-Badass-CT.pal @@ -0,0 +1 @@ + j{o6:)%­5ï=„RJ±rÂ(%9ˆEÉU+b™BO \ No newline at end of file diff --git a/graphics/portraits/custom/Sonic-Badass-Sonic.bin b/graphics/portraits/custom/Sonic-Badass-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..b130bfdfe6d9034bcb8d09ba70c3b326f54fa6d7 GIT binary patch literal 800 zcmY*X&1(}u6#vccHXGD@2t5RqZaj&2Xl(-`e(dVSQ_)*b(o{sjgBE(Q;zu?p#8aX- z4_X8L13Y*r=phL`^rEDA=|M14EJm<)7u06A`!T+4k{aKSncX+Z3faYM}) zAbKu+GBEd?0ty9LFoCeY)QvF=Cnhq-54FcXElu4`-dx<25F?}r6}-j>aTumyR*kB0 zrTP?Qr(X|>%#ve7dk&z>`!A~>V?qvNf$9!Kz#v0%;lbnHPU6+|ZRfME$X!6TWruyq zUVCZZM)LW>s`hMpRpX;9WMN+9MOM!ivO4tt_?RsB{fIk;11PEO(o*~IT*bNQDMAV} zq)Qx6C{3ZkPz*}Jr3aJq`ss6vCs$5o+BeNbqs6~D8_oy&1-C~y zICJ2`A=o&ze5<&|reg1o+9|HpTU@TI7==aEyQ++7T!S{F&*&F)nNTPGERDzv!ae)9 z{grdxs4v$`X2pzQKaN1dd7Q;ODg5WY&@IiE1%3`+%{|Ns6sYMGRZrkO-lDHBgd;ZE zX>FIdH)X(qkZyedY%qcTwT2QXA|A&5Azuk%K^Bn$3=)$f31!v)6*|d;TAq{KA(sVF zIdRz3yf69mo`fV6k?Yu*_9ne!?znqrlPLEvgo9YHYAb7R zYV9ALZ8r!zqGmKnJPRFq7SXY{@Tj;hy4KW%Fg0ti9SGrz^)O`z*g<*rOweuBr&H1` HF`xYfCwmaM literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Sonic-Badass-Sonic.pal b/graphics/portraits/custom/Sonic-Badass-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..fa65cf07440f87d2d12310e1f0fb8468f2a69688 GIT binary patch literal 32 lcmb0RU|?V2Wz(!9ErJMb9Z{Ve^-s3qW_2geBb%c!#U^s0CaR9 z#CP!5Y)6^BCMy69t$Ke}3zKiyO&Up#6Q*DlLeLH?umO)aNO}q_O85B2b>FG}?~8(9 zk@boOgLP#f3g^>Hs*3~USb za1Xz+GFGsnV2sHWnWE$D3^(Tc;tWD;BK;l(Lq$)@J1cvHX9o1A zpZ^AgHp>LmAa0j!G5`b(TX7qszxZFkVo_VE#bVgC{Y#m&n%wg9sLB>GuiU{mt2)oR z&UsFkMN4z|X3;M-)z4j=yKv=G<7bkjX_}-760}-EuhS7401DDclGLSXNFDr&ZwQ#c zwxn45E%LtimDXY|ZIH!TiK!ck?H}>qt+`sfxNB7vFCivUiFkHDu|i#9i>(ae;AH+9f#J3uU{+Hxoi!w}(@#bi7{jE)QbXr;Wo zwzjTFM&-7u`~)V|*M(gXfvJ9K2AJS``v^EJRz6q{4YNshwY&8l*3XkEZ4VSzm|hzj zHG3vz_l=%BlAWES4wI%Q2z50YjRQ!VUZYOAN!3KO|IE)OJR7P0*oCYXS*8b0&{J76 z=?srxCo|@t27=gwixR|=`37s|AcR%jWmyWu$C!DxHk`S-W01a2SE#;)Fg!;qOl@OL kwC@L!>SEI`Vm6Gntn0?@s$*m<@uDCg1a8&u3do}QH%q7|oB#j- literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Squall (Uniform)-SApprentice-FF8.pal b/graphics/portraits/custom/Squall (Uniform)-SApprentice-FF8.pal new file mode 100644 index 00000000..6de1b5d4 --- /dev/null +++ b/graphics/portraits/custom/Squall (Uniform)-SApprentice-FF8.pal @@ -0,0 +1,2 @@ +?EC¨Ä$È%1 !*%N )¦66 +yB>W \ No newline at end of file diff --git a/graphics/portraits/custom/Squall-JamesWhite89-FF8.bin b/graphics/portraits/custom/Squall-JamesWhite89-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..9f2dbe5c8bf7565dca200d58f88b1a485fec3bbf GIT binary patch literal 800 zcmZ{hUr1A77{;IDIqnQyJBHPUZf6sOWmcLKW@(<2{SyibWO||LN~q`}>?VlRvpkDI z7X}fC7j0HTgw#!;c(u_=BZX0rNJMTW6ht^9X_lU^Z*DRe^#1t%ygcvA_wc;{3z0FK z%qDAzQLypIi6lSk)U7fa2#8nl1aoA7q_wbgWzh0Pn$Oi4jnSgjicc9JEGd?vxw>Qi z*l<(eaDcsC;4i#cn9tCH%t{?7T{MM-kw@~+$@bH_ov|IuSj9CA4b$Lxus zq<+ny>4-`qX+67>IO)->L`(kG)`ca0D60THNJ8ybXVmZNm>TlWOsi2!4q6Iezt5$T%~_U$Cx5PVj9hORBf-? z+UaQB)kbl>ab)I4yE9DAeX5AMqE5#L(`(bWg2l9tl=B#68NmzP_ktdhB(^T^?#TF| ztWP_NUC~xUi*VwxcAAFQsJGw76k#eP$ zvdxA4u)zvRR=i?djCYm=&Nf7R#YCcr85)+*=a*hpy{(MYzc>)7nW~vhxsKu22CLM+ e=azg&wI9a~W0`o);=8_rA6P&L%EmvfvHt)s;OCqG literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Squall-JamesWhite89-FF8.pal b/graphics/portraits/custom/Squall-JamesWhite89-FF8.pal new file mode 100644 index 0000000000000000000000000000000000000000..e37ec20266a1af9d9bc215ffb2738d795fa4b1fd GIT binary patch literal 32 ocmWfr>tH#{;leUa)LQADnIa1V!_$x!fuDBgOyj(d$uKYg0HUD^3jhEB literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Steiner-HoxNorf-FF9.bin b/graphics/portraits/custom/Steiner-HoxNorf-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf9087e64917be6fd478a06f540e46f76b17e527 GIT binary patch literal 800 zcmZXSUq}=|9LIlqyE-eoceC1q1ebdR)l0=vP?DFo(Sy>{L9c>aLLd|^_#olwPDymw zpF5=RC2*m~ls0UGo3A*uEKFf%{q%gk@)#}6?4MMfC@ z6N7zBXa4bHm}062oaR;eM~3YAvfP|8*}lWkMX$6ypGR6*lIrWFngIBsKm#Z>aBc4B zsd2r-o}u|*bm3u+GcuTWWCuBi)=o}L-`#i-u$hqI{tSb;zR97NT|6tMC7(eu%+vhV z>=tb0?r%>l91YP=TtS?wIC*vX2!(?jd>=%v=ee%u6>IW5028v&usFmdUL-dXiDX&6 zZxZfji5;O4&m^Q+E@urR2qMpiXvZ~EzE3pQ00V3&7E?xwQq7=#*`zkHz}IYxQr}8} zVNpw#1f>qCNWmDXqJTw^RTLLvvaCuN#g(q1LG{erMvyOhWF?i`(A!aA zs^?lpPY~a6g5bt)UX_x6dR=BDsRO&oBB@vqL@~B2NdicK3h`YO7}#mOaAmO5F^5d^ zl6l#ZjH&hq>ESlw3_JInM^0(9cj--^mTlDLwfV;IOw+BWrP)uwI+@HGzSXfil~eup zV>t&JB~`Z)!dq=2)a^yWo;YszHsTq1au5U|s=cg4?Z~qyA}}C0K9<(g@MR{xgT@!N@Nj?dNOLQp@L-m6k8bwZk9Jo>=)FuL>L{ mhKMF;@wf@Q%Oc+Z literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Steiner-HoxNorf-FF9.pal b/graphics/portraits/custom/Steiner-HoxNorf-FF9.pal new file mode 100644 index 00000000..c8c5a8f5 --- /dev/null +++ b/graphics/portraits/custom/Steiner-HoxNorf-FF9.pal @@ -0,0 +1 @@ +|©A-¦c œk;_ûV±1šJN) 6>ÿ1FÖZ \ No newline at end of file diff --git a/graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..4ba2b3555b45d638620952f16349c1cd5aa5b7ee GIT binary patch literal 800 zcmaixK}Zx)7{|YHb!W}p9ihlA%Qr_4i9(QO?!Ju7WJehT0q0g9egC zw}@N{D$>A9x@0w@LIxdFC^eIIkj=HwcH7Z*YRCDS^&olb|AWW(=lj2p$M*m@&gF93 zdEQrFUgE0&01jN706a$uiLF|!tUES38Vm+54h=0Vq*CC32FJ^%=CHYG>ezu+epm0G zPkMKaRXDEUo_<|rckJIjc);-XP(r9c%FB4cRbnqHU_dPh2o^lp^xjtyR6Z%HYA($y z@<)agnS2PvxNpKY?Ov;&`{C383k@5CJm0e$TJ|^Q5ZMmK)L2w@l&kwS@AkrloR0DA zXIaBc3cuiMGs5<~=RZaQ$-gHeNq!YnQLPz?HigaYc+1d`qAH4VTS-d>V3aMho}N%> zW8>lDrNwkqib|4+24+m%jAkGWB7h`G;D@LxMis?!`SI3N1uT=7SixbFl!VJ^E!w!+{5VX_wxp zrY+QtL@aUtiXqcMn_VcTHNmzd3ba{{^*T8Zlv;}siNvND_=78Ef7ymRBm4~M~JEq@TRpT_+*u!N=Afc+ZrIm#iWOZNv(U|spB7-UX(pM zSkcL&Gw0IiG{v*N(?=$t>W;b6ymjwfXxuehJ#%z@609HPzV;>F&3{`>Z)N@hrG-?= literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Strago-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..bc6fa6649dc811f194bc4cc23840f76524836547 GIT binary patch literal 32 ocmZQz@MS6F;F9cDH8s1aI$i6QS&r#B%WF~9#c|>DlkZgn0G2rmssI20 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tails-JamesWhite89-Sonic.bin b/graphics/portraits/custom/Tails-JamesWhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..02762c2cf0ae1169f6aa847722b7942d59dda5ad GIT binary patch literal 800 zcmXw1Ur1A76hGhY@EfJx6{DHX-338P4{C-w$lc9>`G?dJ{!dUS2Ze&|RC)dbBS!^6vv1`&0m4GNJL<<3faJ;5H}ilo7#&@5A*Vg?x8L>7&V|N1)n4^T^WT4c z`OTFTQ@pwZdSFD6l*5(%cxF5qPMXp_Klou6HsLcjZ=JUae7Y~)^tb6<y-5yukUwhve(jPdO0>9 zXe3UuPFh-?hu=?qum})g_P!=L(swbGzx%~rhZ1M!BYmu`MOhBi1!W;EQuckc7RzQN@<)9c8 z1I}hwa~+PL3nl#~W?57<=JLiUjumYb@6bQN?Vw5+pm>+=a0dZR)*#D(loG=81_Obo z&<(G~b5(Qo!{M$j(Qy<@Z%97TA=X6Aou)YDNEsK6rf#ox3{=%y8$N0Vc8v}>(~lrJ z4-axJNYYe@&6lOB#NG&Nn<9rm8Q6*0tg31n>r~I%aGOF#NyZNSdj5yPmcVu^LP-7x D?}I## literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tails-JamesWhite89-Sonic.pal b/graphics/portraits/custom/Tails-JamesWhite89-Sonic.pal new file mode 100644 index 0000000000000000000000000000000000000000..7da5fe731d05d759cb043890316d84a8e0c834a2 GIT binary patch literal 32 ncmZoLRAdQc3@&Fi?POrk;bq*)IFredBO!M~+@9(N6FFu8eK81e literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Terra-Jones-FF6.bin b/graphics/portraits/custom/Terra-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..64a08013523a28dd2d455d98344eeb1057d76809 GIT binary patch literal 800 zcmaKqPe@cj9LIm}kGn5??c0c0({f%(CCTDvF`UdtQpD#LRGTp3OQ9)HzF(d}c9qh}5z5eZ| zLma}g9H>bjyKwR>(vgl+nBak{*WWy$!Oh^dywkY@v-iAD^hGgL)R@Zdur}_;0vl3R zHbsnaV`aRoszb_mqKv_q8}r^Tj4!w&?%Iu!rdz|%&s$`WlX9}(?zi06Uj2OH`^0>F zJwZ9L4VGNOS5hEraOIR`^F!>U1rYYPA?c@_au6~YHSFk0m{ZyzByZ$nZVkuJHLVK8 zFkl_)s8rW#k>Y2ZAaocrOYjU>g|KeKDPvM4-;dInf;;G;_8px%WwOB70UJUm;^=MXGP}iZEO~o-PPUc zcXN;6Av^#BZo?I=3PPCjKS9~~m($IY83(V&d|Qt0CEZtfLLky|SnpqJvydp%7t-D7 z`^_=b6yYsXun3*dDMW=Rgq5sgZwx!jvt3S0$I{)e=LpVocF`ZSJrvOzGj*Ob7|Avh yZ0BxnRc}?-(ly%aMO~eMt=LNY?`!$6quYt4hP-K+z?75~&EiRX$}~)ioBa#8+86Ku literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Terra-Jones-FF6.pal b/graphics/portraits/custom/Terra-Jones-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..b41c63472ac7b44b3480be4a8a5b13a37289e87d GIT binary patch literal 32 ncmZQza9~kjY+w|Rel2>CQGv<8s*T4k`n||aO&cRq$-Qm>cIpV0 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Terra-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Terra-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..c425032d81f4b5dbbf8b7ac9ff332e77e0ad1109 GIT binary patch literal 800 zcmXw$dq`7Z7{EUa(eeF>|MOc{@kz_x$rcFCQPz_q@IWsgG3T;TghH z1jl;UsQ5_4iidshU7x6nwls!_6V=As1c?x@N05hP6yJnN)smOUO4H<# zp-ZB;_iOr(_R)x9Rm+n|TCdvSJ0Om*vF&fp`j&6B<}Py9%S#+~*?qNVwk?>qG(u`8qgS9J93V}NCN4)f+> zwb~N(A-m(C+_1Zh%&#NJGxcs*b~tSe*c~*OoQ*VYl+7SOP+PO3U#IbO;2>ii=Me}P zzLv|wp&|`rNosHUs#}@R`f1vlZ@s5o>J3y_bB?8#zTS3gnpt#eoeX2J8mviGO5#aT z!S!AGag>TSkb_Y&eTY%qAif~b>2xZU>Tr2^o4-M3kkL4a5J@5u84~;r?1*Ol3M7sr zoSpxNqHq@W>Oal~5rLV$Ct5o-2NrrJjg%z9FM=(G02T{aEU%7#8MdHJ=kDrqpD9Ow zL>7_*Jc)RCWYE+;+hLxx>E(>b$p=J`+B%F1nNvXm`+I?d??g@kgBT(*CosABU2^+A z`L40fmN-9od`ekOX>}Fhf@-MH{>iEU?fq*_^?TpOm__3gN_nM79jq4FM*v)|&Aba$ zqZ*w?X=}E}+o#I1e@wtf=w`Eh-~zH>-@3nLE>%xGN~_DiRzP8=!3Jjd3JX93&T3%` z#JV0jI&T;+HrS8P@5v>yi2b01L!bpIAyqCtIOc!TyC~|8Pg2wSmdyic@X2zrGCV0L zv^IcTJ1TUZuc^gBPn66QUd4@VGYvl}_T_XVgN?%+qypc~Z5x4yOZeOK&-%|Eu2s)< dz@4@Zgw7$ikQq`?3a;|NugHzqZVGlO1qhM-{i0uc?(GDtD)9*3Y* zkflEanHv!W^@AzBC@ptYOo^c~On*>xfuJO=p^;1GPDlH#KcMsBJaC@p;mbMS=Kugu zzyL#qGfIXHC&!%(1vEhcBKR&1X1AB5eO!39n(O)kP!8kp7AhbY7HB)jq=SP#Ccniv zWVdWMfMmR+)(tt}fWVHP3_NN>ZSoi&DBD)w?kOYHN$`U?)~rj{nREv@6Prdh3p>y( zt)n#rJ*-e37*3iH^172}me|SN{Nc<}u9}nVVjdSK6gw=AcDdfDPODOT+RutApJL@8 z?!;ZV%XQy{aD7-xSV40|N5S)&=Cy?05|odwtKJYCT4X>Of3NdjB7$xHU5L1)0mtA90TOv@qz+B#NBG9tNE^!mC(b<*GmL{>p&9!X{pNr;13;NIa^Vw05e6*f-(R?maPr-GHd!>Wjgp&Js9 zZ&d_FY9d0K#xOtE6a50b><~LDv531Sz_iMRy{I|s6`Ez z%zjXIGkX-#O520NYp)Y-^;h1!SpI&{2loJB2vI>>z~-lxDJ=whOO8xsyFX1gdN!vT uJ{wLQ0w)ZB8B9dGABe$Vhfd}xrmCCtNH0I}y8i&b8}p0+ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tifa-JamesWhite89-FF7.pal b/graphics/portraits/custom/Tifa-JamesWhite89-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..3a7c51062ca0338f9d217b7808828cad16d8dbd0 GIT binary patch literal 32 ncmZQzP-HnKu~a0PM^m*$AX~SOW0Go=)gGt6ZgYygG;RF>i~tGN literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tina-CtrlxZ-FF6.bin b/graphics/portraits/custom/Tina-CtrlxZ-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..199782988a3cee448aff28081a142b7fe57d3f77 GIT binary patch literal 800 zcmZQzU}RuoU}WWCm*Y2(FcV<_0Y+9Pb_RY133dT~28QPh)zA6%Px!%nfq#JjSo$%; zeup3I7xWjzGyMO-=J=1{fJ|eZ#s5El82p(S7-|>}*f-WO{D(q@1_p)#j}ICNECyU6 z4M89S92!0_Bup?kA@U+%jh~L2PP(a)h>@tNn5vj^p1zR2kQui)ml&4_hX|LxpxwUu z`u{*+vsWVGoSxtM1NIPe57$1oD)is5o=b)+w(~42E8DZ4d7OVLd-pj1WvZR@RqET# zx`j2(JHYcs`t_6kn*oDU z!q&(_+(6zyUSC2(T3c91S*TN0^6MhSjQ+D~yv@Z~;R?Gjn^#d4`h$ zf_wJb?PvJkT+?20-r&8++e-)S4%#&<21=g1b7CHcl|Tq<7+Z+KeTnCDlIJB_9W7b? zP4kO(lkoy|6+4@{8?}cD*%Emijn1guusc}SSld+CmpIRHpOZdUK9@d+Er%>82O}^o z>I>)#@C!&XN-%JMJ;2v@9|-pE??2zaKmLCC@sD{5_Z99t>@PSUaDKu49p{h!Wz~E1 z?9sC)Pmi8Gdi3D&n8*JF#a@cN6n$lT$n=!?iG~*r0SX2Q8xj^UJaCwhFkyp2!UTl_ u3mg_WG%zFpVL`)#28RO*2?7Qj5-mNCo+SVy`T)a&h7SjRB-BihdjSBI+~TAF literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tina-CtrlxZ-FF6.pal b/graphics/portraits/custom/Tina-CtrlxZ-FF6.pal new file mode 100644 index 00000000..25c02a80 --- /dev/null +++ b/graphics/portraits/custom/Tina-CtrlxZ-FF6.pal @@ -0,0 +1 @@ +¨!l1L%cy]–>1*9S½[’1ßwOMrJ’e \ No newline at end of file diff --git a/graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.bin b/graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..90fa1f60930262dd8768daa994e267cc203f3b7c GIT binary patch literal 800 zcma)4F>ljA6n^i{$weY?3sNnFaxN2FGiE4_Hy9A&CwOCQ*h&>)1C{7TBnB8Fv3Bea zsKkK~BPmblD(8-8y9p{2_sRBs?>>L;`8@;t*Ww_t!`IpHTwQX-`#i1q zfFIx9c@DBAiE=K|c5%l}_eN%9YQ2R59C!kNG1dkFV~EvRA1ZLhnE(klV66(=>eL6y z_HAl?;xmT@w?e_&%E#fHodw^+3^bT18w5oa_Fu34y!`sX-Iq@rb!P9=Gzb6?dmg=@ z0y5Zs!V5OXN21vYYt`bOWs6<;EE)O7OXw_%V}K}%phgmrCW<3Sz<|!Q)=8ujO*&mt z(i&43m(O#b`)U69*P)KbW5zf~T*Z5vCzI`>7|v!Vr{Cp6FE}1q!e5b}o(5GFznKlddvrhaGdBP_$fYVUCW^#Z2b4 zKO$$1=B4&ZsOXzhzg+HS_kLn%ItSr?l)-y+bN`qm%1f$JSbxNGEdSOt+juAFwLf9~ B@XP=J literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.pal b/graphics/portraits/custom/Toadette (Explorer)-HoxNorf-Mario.pal new file mode 100644 index 0000000000000000000000000000000000000000..b94e7a10d8aae72b5a4d42dbfa1e63ac70b9a494 GIT binary patch literal 32 ncmZQ@x}R?C8t1>mZ?>AH=^d+5Hwn2pfl_W#@wHLm9P4=ixXcQv literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tohka-HoxNorf-DAL.bin b/graphics/portraits/custom/Tohka-HoxNorf-DAL.bin new file mode 100644 index 0000000000000000000000000000000000000000..a38e32434b5f79a556e6c151011782b5651ab96e GIT binary patch literal 800 zcmW-eZAepL6vv;td$&7v>I6f@a?6)AkWebntnOVa%+x3f%phG9nnu19y@z*OBLyp4 z^r6VwQY=CvDQhX}osF^xo#clkmH9Svgn8$5yKZ-Ty7T+wbTk|fc@_31EE*LF6=)Q=!?OG5lL;6WV`_qYh;X&CAP4tZ;GiwY{yu*o zSSd(R5V~CbB^(jtb%ZXM<$0X5uy;|^{*;B4FZBD-eq zW61KeOO%0F&0j0qt2Z!^^?9g2GB)U3N*Jo!mG?6ywtk!qvW;pg8corjX(7{?m)BcV zttpL_n)!|ZE@9uLT6rlX32G^BQq6UcAe0a?vi+m&RS;1{th+{H#g%-+(I@?V1uHOyN>6y&1y@K7q^61vVWK_ z9vo*)R#UVGlkSjX8Q~9-S?NO5&kZcDs$a3B6;E{Ze9)&ODDngeQ9lBSq{4Ve3L#Aq z6h+YlB{NhDw?m4C1fOXB3$mE+_=|f3G6gX}Yv=*UKL_4($)IyXV}KtEOLG z*ZjXh+wE?r)4_aRc(AaN<`@~9>Lu|TLa)Rt?v|dH%LJS{;+BrZ*05b)bpadi2H}6B Cy_LuS literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tohka-HoxNorf-DAL.pal b/graphics/portraits/custom/Tohka-HoxNorf-DAL.pal new file mode 100644 index 0000000000000000000000000000000000000000..a8abb1f3295dc0ed6e288a323cae4f12c2688fc9 GIT binary patch literal 32 ocmZQz&^BEv!>Rj1#mDxJUtDs9mx!HIe81HN!Qqm^p+xxB!Zlya?i6y`^mgvmhk_pZ{XRav@0`Oqzw@0B_#ZG} zU}9KUEPqEcaKY;syn12m)j4rEwXeBZ_cQQ7#&NXaHQf}YODwfk?!9wudA7^&OHlC@ zgD8chhf_QQmMLT{CYzDps0K3%V8z*%jT`y7_0QV4=2ykZ$p$=u)9SRkEfUpe1Y_#I z_o-!mF7lM)78kSGU*_&2$Nd8(K1&KYY~k|rs8=|YE^Ri(-~tQgFs zmvt;<(o^vn!iM2r!3I%}42Qy@dY9-^a%1_Pt#l@hG~Qzvs7DVn75z6m1!w#Ila-v! zMsH+c%W)B{aAG%XFu~09$CRnuT}{?p5$$MR)Ox9_AVeeqAFD#MJ>aVSx3zCt$*Ky@ zuKlF^L#QHcHl#RcfA;#Xv$?>!tIBRKs@>x_*x4-{rawS)DaSEz#8$BKL)pXz2R?Yt zPtVRgdYs2CY?Ac1h>;R{<@Sk*`T6TF)>=kKqtR8bgi~byf|v9=c-pIr>&ohCg)2gh zP~&OxG?n29ib>xkVgoT4lx3bTyvK)!N4C|W(ZI+^AdpCCeSPEGnf>Ua0R(U+@Ecf@ B1*8A~ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Toriel-LoneRedMage-Undertale.pal b/graphics/portraits/custom/Toriel-LoneRedMage-Undertale.pal new file mode 100644 index 00000000..0231cea7 --- /dev/null +++ b/graphics/portraits/custom/Toriel-LoneRedMage-Undertale.pal @@ -0,0 +1 @@ +à1FRJc9gµVÆ{k!k-¦(é8z{:±v`` \ No newline at end of file diff --git a/graphics/portraits/custom/Train Conductor-Mascot1063-FF6.bin b/graphics/portraits/custom/Train Conductor-Mascot1063-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..0423450a7c329790a32095f4563b2ba44a21c1ad GIT binary patch literal 800 zcmbVKO-K}B7=HH0owd~6V96z9XUzhU(!oP)A%;YL=jooMb3_%5RMtWn2JfYt-3FPROj3 z9N6Rv!QvVHlF1uP&@nUGztXaG@?-ctx59N>K6;|mZtAQc!T`+2mcx_vHHN zxywRB!`g;wI_q?^){-g9{&bv0JsQ*+tys%KhLN3~>g%&M6SE7v&-kINHov;pyO8RB z5$zpO;j7yG&x!y9gg_z?1_TnWjkN69#<{Q({OPoQk#@-1?RF`A?HO R$HuvFKb9eJB!_bd;19~}Bb@*M literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Train Conductor-Mascot1063-FF6.pal b/graphics/portraits/custom/Train Conductor-Mascot1063-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..9d3a1745ef29ac4980ea258bba7e2df5ac7216cf GIT binary patch literal 32 ncmZQzI3~fNsHS<^GRUilafX?_^Z$H3*&l|}ta=QsgB_9pnpO%~ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Umaro-Jones-FF6.bin b/graphics/portraits/custom/Umaro-Jones-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..2878f14014e91d8c5e98995d164677aaa848fd01 GIT binary patch literal 800 zcmZ9KUq}=|9LImNySFRqx#uNle{@eD>LpF82PwT{Ku&Z~s)9hs>{l3dE!_0hU_WK=xErrmQ z!S5~$5_muXvZ?|4<-NREtUWQFLv`LwkrArSc9l@;=llOaboc(I}Rd^e+SoL^WdavkL&DRg(lV(I; zBvJB>X!|tj>50XxPwDN(eCGIm-H2U`4adIf#{r3!~+x|J0*_lbWy2 zH$l($S%=c{Xu3m(I79Cutn(|P19Bjh8YA!wvf?rkK_eAqfsul{AG41KE?avLlvCx) z&+!-a0?atSJ0tl+m2=q*y}{U@9N$#VS1DmLXt_=u0Rgc#j;HqjEd(}dae_-QruEOO z-EBF0@>-b91T(?!O;o(yyFC)ZreEteM8%gq_bk_y+|NQMsM2If4MJvJpDVhOt zp9@RCCbK6XYDD(nRLaY>yZLjw7Mu}w3Xp)r4Ei2`Wo!lDf@>+`;ou#&y#|KI5|Dr! zoku(mnz-qFoO~o;bllWp_nSNVouNr>*iHx9AZ&{=a%QUE vHAM(f6mpnIiJ+;h4K^Q4Qzbn;krzMI6ptD`D<=A}O_xZu-g?Xksc!rW%2XKI literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Umaro-Jones-FF6.pal b/graphics/portraits/custom/Umaro-Jones-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..5005e2cc9a8254da8368d68431056d90fb8a2bf5 GIT binary patch literal 32 ocmZQz_*Xr<+%kQ0TtLt}S4+KeUOvHWLnn??0?#Fu3$zFT0K**%CIA2c literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.bin b/graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..4b29cec7caebc9f7e426437f6d31b592d276e1f1 GIT binary patch literal 800 zcmaixPiPZC6vk&W+uhh*nnQw6q|25kWFwuS!o^Q0N{!6cMdbf``~lK|}>{ zDLr{<4&tE)TfDSr?G943fhX=oTGw*%OhtU7U zAPFma6EowWL^nJF-91jAmcQo-qECxD5Fk<(qkX;M~xxpV&$n3Se%@s@Vyqdui(*n zHkwl=AAPfbx#fxrRkvELdGqYD3$CYq2bZ0tr6*GZOoHW^)#SODp{%PDjCz`ZB zrh*G+k3TqV&bdDJ^o+z_{Qz*mwEanxqyfKsUH*f>n#V5utR<+!h_;sgm@k)_7C=$b z>CK7>4L|kdUj5l~jigj>srQOPV>boDyz-A)wp*Pr3I}dQjaU9~ML&JRuEg~tAX1*LJ^${X!nx-hM&82FzVbi7K)Ex^7*4vFO>%Hk4clV%J zDpU)Q^?8L(-!1IitUMm}nSw@B#8QYFKu8o37P|zgHzM&-#09uOKtux97ZK$s9-IDT z9DaC8-JN=~*&)cs68DXv)D4oe<~C1?cF4=9p(#kx30Q?##pnH6fvB6&bz{wVk#h74 b>)i>)7#OgiXIx!>sWV2PJ%~m)e<$-Bxn0;k literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/Umaro-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..217033a9ba94918c39bf9e6d8793365d2da46b46 GIT binary patch literal 32 ncmZQz&{WMf?KQo|X35XtsO_5<`#$tStbkWgT1eiOq&ejPlm-gV literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ursula-HoxNorf-FF4.bin b/graphics/portraits/custom/Ursula-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..d86a65a1f7a5cbf7d2b616dfcdccbfe78a477e05 GIT binary patch literal 800 zcmZ9~Ur19?7y$6^+FpxY@8h1gX@6khH}ldnlYCcGt#k=k_4c_k(i|9~{2J`96jPY{0yU zH)7UiAr@ee0bzy%01gNbk{w(iLjm%T$9XOjfjB5YFHrzi0PR0C`){BkoM2S@X8?2p zBLR=!a!xs?>L$xinX5{fhPzA`+=O8?Ttc7<%EzbN_r$id_36I295JWOf?07Yw}ajq z5P(Poyb98o9OTf+E55=Y>efsA4Ij+!d3MyDYaJCw_y`}DWlMgdB6^Hww!sKxP=$L> zZa8U6h!G9`HMO9ssxQl>B&n~>JU zKu*;(d9xijg^yH34Ib4nsc2F5pmd+jFc~&zG~Kbs8o@?5Vj`vhpRombyL)B%AWNu(TimOIR{6 zJ}^m*P(1B9@54TjC=YnJjIK@Tg2sq*t-)obJ-33J3${xZ>2kc2cE4y0j=}Xa+wT=w zk@f!ivBCv~3LyXiIM0vVD9>V*DgHKKbuhGUWu9;2`%DRxK#o~r5^vr8(AXLLBU{Z_% z2kmdY-G2sVyGeN`XPlaf$xOyaOo>Ci$-7K$;+&B{DkAk*YSQXD>ZsnKq}13!8b7lC zxS|f~*U^DRd%EvbI|o3p0Fm>qv9If8VPT+Jb;{A<%OjZx`LtN9<)*(ID-jGZ+r<>BP zJx$htGdM8ffm=-!yI~ZI`>t2z2w@VFW301f*u%O5oAf*VLIW-HbZ@Ws;Mi@4mkUdw z%p}Q@oo`o)$b=k(P^*n-XEyGQzG*eRTp?V}YFX8OB3yR0Y*x>{u&HP|TjiXCsWLgG zFh(URK^hWp0@@&nnn?p`CQ;dOhN9Bvwai#%jAfinvC~<24d?fiW**JFx}$2EX660d xXqR!+Fl^%oL@)hQWkfD3DJe0=rOy9q<;ZY}M%izRgGJbUf@IbNen8f))4oA*!P`F;F%@ zLP1R6b%X%XW2$#!LyIaptI=vQzxJ~vcWX4h^G14qnec?8&k3}cejj&_lfYn-d7)*s z{R;ym%NhVRGc3#ez-7ye)MHD6V0so-p14FfV!*}w1Sr1YUkID8SYSso^`(= z8L&shBBtkVWaJ<6b@}R_Mr1~rQ9k|d)@VE}zmg}FNo7jms=_a!Y}Wg#ton60bwBf9 z>4a?~b<3<@nJapVCs&WJp8Dd)I?X!m*%*lMZ0~bea$0P>jw#CuY@!;fVGW*G703ev zmd- zsOXcYE+R<4Ek*!?L7)Vv_tw45A%E{~&zYVkGabWFgl|xX0&GL8J^fs0F@NLT>am;a z6XnW2bN(DAj|qyU;;95`>2(aSz&d%B=XhRELhv}ci*Anw#b6(wWF#23i~QihoPL|Y zz|Qh!xFV1Mv9Bn#^}iKY$zKxbN7>dIT-}x33gqqDxzFL*@NCOU^htNVCo(FPJj5f( Rt)m1M&k{6|>KORH{R53J2^s(Z literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Vincent-Xeblon-FF7.pal b/graphics/portraits/custom/Vincent-Xeblon-FF7.pal new file mode 100644 index 0000000000000000000000000000000000000000..3ac65a2cb4ce31983cb095884464758df04411fc GIT binary patch literal 32 ncmb2IVPHs>Ii|zG!7owiG(}N5T119N@?ZTa0X>lp2EP&jeb@+M literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Vivi-asilverthorn-FF9.bin b/graphics/portraits/custom/Vivi-asilverthorn-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..9e13d08d4f31698c4e1ba9175ab953c0921ca2fb GIT binary patch literal 800 zcmaJF<-+OP~0PGzcY=;@P zVOj(%N~l&lDVSjq1_R46M?g6E_E~n?33km`VK5Zs>ATlyd#JWB#vyV)u(RZE4^avi z<|YyHAB&5a>Io!kZoU970aO`%f~JqzR=m%dC1u42ARkanHVEa zUJM`kCh3-y*kAer87D#>ko|IH;7wPq5V4#585P`=~BF@XnWBRkPLg&7au9s2<{{ z=QxBrk+!>6Vrmo>gb>EL=P^chI8(gfh3MCXs+Xy~!#fBiz(^rhNDu=I_OecWDNw3* zp+RWYWiwjkOdKnzz@iHf2)*+t|Z< zxNSx5IG=LYDq>DgsirHf&W`_Hy)yYy)Kkvm6cLAt;*GeWXIE(Ga~Gq{d3=hmxBAia SZZ_#3Ran1#Tc?)Y;{O53&J0Qb literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Vivi-asilverthorn-FF9.pal b/graphics/portraits/custom/Vivi-asilverthorn-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..f7d08b5ec7df934cd5db26023e8be2e859c8491e GIT binary patch literal 32 ncmdl}UKbwcEMpv@6exH`pq1l_Zo(XL8zKsMso^87x36d#BF$WZ5A*oKD%YmMej+l-SmCM@)!AOpvl$<}mH;Gxu zL4!#I!%o`Unl^1-CWJFph`rCR|9!?(u5!-9hGE$ER(%GlfG`Yk8VrgXVZ%mPWn7Sn zRLoKi;)IJ}p;irx+Ky#*A_#(^s=UEjFP&`Cuj++hKp2409tgob=msaqlu8$a3FGX; z$d_Cr$lwtDQqTD2pc(dn=2T7uLV?gLe{x65-KM9VOyv;t`8+kAVo%AI(#6t%4{5f0 zJ@z{>HGbQrV80H85|>=yF7t+T3xg0UQAv_S2V@(|`X2&Rypxr9#E+wTKSuGjHc+jR z4(WpRyeBuH0zf$Y$`Cc1Y>a z2eo74@o+8QH<@KClRc@7D-E(kRJO`fYX*tvzFnKxAaLYdTM@E9U75}{Xj75L+%b2( zyGd@8hox>YBDk%meyn;%xlf-5xboz3KfaxqK*XC56m+8(i&nNTRex;hYw3$u#SdWF vnz?4C%|t4ZiWx%&=aFFhv%_;21{MkpcS`P+JBMftMvgE1+FUZn%&_?nWWgp$ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/WedgeVicks-Laurel_Gens-FF6PR.pal b/graphics/portraits/custom/WedgeVicks-Laurel_Gens-FF6PR.pal new file mode 100644 index 0000000000000000000000000000000000000000..c196376d4bb74a9b7f7d9c6894d5a0a2c5289b4e GIT binary patch literal 32 ncmZQzNaksgSSs>d=A{Ieq>gN_pr&fCYM<&wO(C;sPCvZ>k_!pr literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Wolf-JamesWhite89-Starfox.bin b/graphics/portraits/custom/Wolf-JamesWhite89-Starfox.bin new file mode 100644 index 0000000000000000000000000000000000000000..a85f2da2f7ea64adddb58aee65f4ed1c2df76986 GIT binary patch literal 800 zcmZQz00D=FhJ*_VFE)fc0CT~FgTn@a2P+VKTr5Tg2L&gEsmh(EO;Sv=K&lvl(2>!Z zF`X%$iGe|YVFp78hYH7{DNR!vCqYbUU^pOfqT$4XGYjVb$oQD^NUE&@AjKg+S9yZ>C*SfV>qFk{*d`;!!{p4Y?%<%J6B4pvh6E1>j}VU(iwp-33k%Tv z2Mj;J#&d80xgY?vl#xM(Nm1e$18<5zyMmuK2T+uefsMhkMVuj{L6GDAH-1_67lI}$ z@eZc%b#d3 zdHUnTwF?Z7I-V5#X^4C9N#@Lttv~)VFic6vU}#wIhv&}^gA)~u1)#VD0Y-+244W7~ zFoQWzVgiE#3*$z{%tpgTO^1SomJfLgeB3$NC$f982OjrGR}^MUe$Y6paoxjN0je6I zBF(*lkJ1qX)X4gXl|nb;A=)-qT^tptnxm6X*yC-chXzgeZK znVcj)_ap90tPffDvT>-3N%HftFTXB+;?3gKOUebN8g<=v$??Db{QZaE&*3vVGONGU z|Jqy3VSM6|h|<;1qKDO%nY0M>@aVj`b4TXR+@*3pHWd~(o*1+UY>`Om_{Xr>&HBK9 W28$mSHzaQS;5fi=j^&6TgEasYckfyN literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Wolf-JamesWhite89-Starfox.pal b/graphics/portraits/custom/Wolf-JamesWhite89-Starfox.pal new file mode 100644 index 0000000000000000000000000000000000000000..2dc113fb19510a53167acf6a93d04dfcdf7cba5e GIT binary patch literal 32 ocmexg&%nT;=)_U%H%a!UXu82tkz}510q)ZEI>ibrW9AeC0Hgv6i~s-t literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Wolf-JamesWhite89-Startfox.bin b/graphics/portraits/custom/Wolf-JamesWhite89-Startfox.bin new file mode 100644 index 0000000000000000000000000000000000000000..a85f2da2f7ea64adddb58aee65f4ed1c2df76986 GIT binary patch literal 800 zcmZQz00D=FhJ*_VFE)fc0CT~FgTn@a2P+VKTr5Tg2L&gEsmh(EO;Sv=K&lvl(2>!Z zF`X%$iGe|YVFp78hYH7{DNR!vCqYbUU^pOfqT$4XGYjVb$oQD^NUE&@AjKg+S9yZ>C*SfV>qFk{*d`;!!{p4Y?%<%J6B4pvh6E1>j}VU(iwp-33k%Tv z2Mj;J#&d80xgY?vl#xM(Nm1e$18<5zyMmuK2T+uefsMhkMVuj{L6GDAH-1_67lI}$ z@eZc%b#d3 zdHUnTwF?Z7I-V5#X^4C9N#@Lttv~)VFic6vU}#wIhv&}^gA)~u1)#VD0Y-+244W7~ zFoQWzVgiE#3*$z{%tpgTO^1SomJfLgeB3$NC$f982OjrGR}^MUe$Y6paoxjN0je6I zBF(*lkJ1qX)X4gXl|nb;A=)-qT^tptnxm6X*yC-chXzgeZK znVcj)_ap90tPffDvT>-3N%HftFTXB+;?3gKOUebN8g<=v$??Db{QZaE&*3vVGONGU z|Jqy3VSM6|h|<;1qKDO%nY0M>@aVj`b4TXR+@*3pHWd~(o*1+UY>`Om_{Xr>&HBK9 W28$mSHzaQS;5fi=j^&6TgEasYckfyN literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Wolf-JamesWhite89-Startfox.pal b/graphics/portraits/custom/Wolf-JamesWhite89-Startfox.pal new file mode 100644 index 0000000000000000000000000000000000000000..2dc113fb19510a53167acf6a93d04dfcdf7cba5e GIT binary patch literal 32 ocmexg&%nT;=)_U%H%a!UXu82tkz}510q)ZEI>ibrW9AeC0Hgv6i~s-t literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Wren-HoxNorf-PS4.bin b/graphics/portraits/custom/Wren-HoxNorf-PS4.bin new file mode 100644 index 0000000000000000000000000000000000000000..b4e12b71fb30d92c890916ee01561eca759de21f GIT binary patch literal 800 zcmZ`%PiWIn9R8AKWzQcu-Jq3R4VTCb%)wOF*P46YIflo#3p^n&&SsscS2~kNkd*eBbZidryLjG)#g8 z2NM!H7DtR<-HqO}FQ1Ke&CD6l)S_4ar`7g`_vu30vgj8Z2riytZ$)uB1BJhi&PGqGJ9SQzAR ztrCxLn#a5aBSD~DndIo=^#n0rj~&_OT#*l@ucZ{(&9V3WH8qqRsw!bK6sn!9DhR2n-mrky!sg1zMr5WswE#vC%M<(hO~o|LTH( z2;zYWBmh}0t7jPsp!R$)bKjn`=TXNgTGN(?^qy~-TjmkGfVcc?^=$P#->5dKQ^j|$ zmzF44@QAdb4FT-mUi0fh1YdYdZ|P34Qs!nXVqpepNMm~&p+MmtbVNr?N36@bz;U4( zNvX!VCWROXR(fMS@C-v6^9teE09?1`*1(-al9gm-C)wQH-2Eu!g}hL;R7zbe*SH4z zs&>`sBr@qQ_m|6MV5o!o!+VO50Qtnd!M3A$Mo%(MXjpk!Y2Z@db?z{z0yk5wrsSyW zKXmF=uPQYRfLOOA*(vo5VMG5<9=fCwbkNWYszVNP69&D(Zsv3OT(LM`nlD*dIgkSe zQSb_as}pmOetWff+B^-cfzzLhq^#Sz9S)s2D(!t;JX}1y-i_JhQgl(3c>YkbP?@7Ki)ln7D>@N-2M57Hpymh&Fe_p|oe({jKazz` F^c%N*74rZ9 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/X-Unknown-Megaman.pal b/graphics/portraits/custom/X-Unknown-Megaman.pal new file mode 100644 index 0000000000000000000000000000000000000000..6f8ad31ad0b571ec585d2724a3140ecd07f23d84 GIT binary patch literal 32 kcmeBh&aXb=FsHbyDmjv&QjSwV@V=9P({$Bj9tJP~0KS$8=l}o! literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Xion-Kzinssie-KH.bin b/graphics/portraits/custom/Xion-Kzinssie-KH.bin new file mode 100644 index 0000000000000000000000000000000000000000..f6b8fab6a4a43863827382d52d4c1cb3159e5d79 GIT binary patch literal 800 zcmZ8fT}TvB6h3!GomtzQAxo5E$F0;t%rPO8Hg_V0CB#;1wV%z_a4RCqdQcN}mO|18 zag!oJkRrqvGZ%w4Sn|?C37H6m^$@WrWt8ZOk|X;w-C10V&Ub&#$GMk#?)eVDh9RH; zZ7|{>prdQNKINd*{|HMiS2Rom2WF5#B>=b;2>`<&L=$5e?SKjjL?A?<5axn(U~x~N zYo&iCX-SJ?5JA8GSgy{gGgY?OOtu}Bg3Z271d+<1vZzctgWgSLq8Fa?AHNu8oud_D zvwF^Hvyi)@u3VoO*O67ev$)S}%=U$=7Ka}`SXHN~n#~w2Pz)*l&ibXenl?|-@3Egv zf#+9d-hVsx4`BFaASRL5No`omihQ^M*+UxG+iSW&@ zg@-5KM*jXp^Dva0t|&cQQrG4zXw1*wlE*t}2dW_&YComO+A#dVw{}~6I@RqS9G{is zy=iaiavM1LncOY6%SX+|E@=RkAc)qY4Yzirzc&(!kP(iA)vy}8f6-GLjGwE@?%DN@ vvd}stWD3ZDswq2f_t*oWyJhXK6XLhCNK6OPsQ&$msI&wwui*LdkV5bWX;$*h literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Xion-Kzinssie-KH.pal b/graphics/portraits/custom/Xion-Kzinssie-KH.pal new file mode 100644 index 0000000000000000000000000000000000000000..a02f66bed3587c72c2568c47a5eaefc88de8c75b GIT binary patch literal 32 ncmZQzaOPZQBZl99z&R@!K`U8jI-I798+^aLFMZ|w)c literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yoshi-Badass-Mario.bin b/graphics/portraits/custom/Yoshi-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..cdbe25e850ed3746f535eeec701c34f0fefd4d8a GIT binary patch literal 800 zcmZva&ubGw6vyB0WIF{*Ha7z;yEz2C3caKt*%bs23JP8d7P_SeJrrE&p~c4Rvd1wRXyT`Mg;?W>qdB$R`5i^LD0D{n8 zCO7GA_m&rVQ5)|)4i>|5p!EQNmbN@T#7j zVu}|b0YUo&4P+<0%Y~M44qxFLER9M;ms6CfOxLB#4gpXc@GQnO0T7cYGl^+BPUTAY zD4Q#1634C1&9Cj(-#=?Spl|84(gvNDpOe?E53g1VokAzvDSkg*(_N7$q)dOxRswHK z)3UCX7w*?rS01k4&AN`j2v~#|pt|8h1S|pxJ&;D)#>G{8?$V6)@&!J{iKrQecPbM_ zxZgu#ls{F!Qp+IE$sy^JzG?-JMUaG8iDo?8^^r%yOI)=3a3^2{SLVAe&qZ)9&)JWK)hEruQV=k)*&(%l}+|oBzl^IQ~Qa z0sD`~f6(RKcAPi(!+gO0nLPi0_5aiB(d8%QPS2Q@H6?Ry(k;~+YPZxGfeM%y8JU=X zG&2JeL(tyCI#aEdRR1))S@hG)q1}){K~TuCkjaEufL(x{!JgrNPp#pb)_rx(lQX+Q zqYfQlkZnqkZ*g{NbZt;-P-)z-e#UdjWjEDsvfX06)q0Q7fuVt+!9n2w!vlr~4GBOJ z$bZ0Ka6saL&W9;KPGPve?v47Nwclob+j?usZMB zL0*7gf}Mk%ogwjFa}C=Mo{xsd56N}>P<(g*7-9_n8UL~WkbC%p{h^!~ub!l;bgrP1wMn@UQxW9r@7Lb1xL-c^qVX#VGt95|-=8m^8*jtEh5yU@E&3q+Ab%bJLIxnNW~*YaV6|YiVU%N* zW#VUK0z#k>KnP+nG6bkgJQsK`@Sou$%U^~2lHWkCXZQ~kdC&8i;lIIo`#a2kK#=ht z<3Gc5fq62IAu1qb!u&hTca-la|6yJse$uQnY%&kS1BC+$K+6RV7&HVdV0a*`Bc7pm e(dO`<<~YUKZ>qm397t#Yxvhagq2Ud~KOO)|5AG=d literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yuffie-CtrlxZ-KH.pal b/graphics/portraits/custom/Yuffie-CtrlxZ-KH.pal new file mode 100644 index 0000000000000000000000000000000000000000..b00937fc941846dc1e4d74aafb8a3debadb13565 GIT binary patch literal 32 ncmWfrQ({;q;H4VmRh|8TVFzoR+CHl|{}kQ~xp~aHnHU%VqHGC+ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.bin b/graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..606191f2ca571384b4bfe5c4411d4d3df27e49d0 GIT binary patch literal 800 zcmXX@T}V@582-*qYlqC8MTLsXbDY*P!X`y7$bHA8G?FYLihkT;6?J8!i!RK4pFe06 zOo_q^%`NI8NYc6}Bk~+m=wE{%jBGposa@oz7Ebr=e4Sa(124Qk7tixPE`(aqG$N=0 zO4hsrcd0AJ&!i^}TAd$4YqgCMq{-ok8t@qxn81s9eZy4Ww2wx_pofnc4a(L@s{)1S z#J2eyRR9wc!W>Tl1)psbnG}4pnxPAtho7ro2=P)GMMeUVFojg0thW;?LC?>On$?I| zvt((3Wu@~NLI3~^@VfC(OzFlfz>f>o^%WBrDV}zo=sx%$(e)wwXxd;& zom6$0B{Yua6Lb-#KK6F)#X3LHks2&(2GRB{#Z7bSROzpVvBuDTsaIMrUGkif_Te@h zN@+zHVJHc=TW97bSyJ!ENP%kb_nrkKVG~11Lz30b(-K{?37NvV!$mn?{#@1us7m8B z&J!$)J+bo99?Oq5PmG&M7d%xK6UQv&_!N69POaW~edwg5N+AWjJ78w6W^Qn#Ic|~r z_f`~gb_Qn%D_#CwBFJB>TgSkkJ0M}qjIpDv#vsKq4W_|kNmFPHeurPZ8{cnv-E|^x z-Ze1d__X~7GIg*|bqhKNqfISK{0Hu4{kYf&71zM_L@iAuwK(|-G=?g)UgKx!h4{Ss z4J1{I_|DVzesjxnBYi0}zZ6j43LXIGhRsfM&vyXL83(TW}0q^myMRaDcX9??Y>hO z5vKSHe6hWQeaqN5XOZugcUQQHfO8I?=xb59X3O&2%p+&}eamO9vriH-g$SY?m#~S? zFbS|0B3Y-P@zL@}?asp6OWHKHwMzS#P;ev%}~kIfO>WxJWxSyBmW1jh&t;Seb0 n_JSRT#*{%!hxFfy`G?JY$H$#x-3$X*U}DG8?qv&h7?l44m|K7^ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.pal b/graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.pal new file mode 100644 index 00000000..ee1caaec --- /dev/null +++ b/graphics/portraits/custom/Yuyuko-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +à#>g¾^[VØM.^ˆ43{3AÐnî4ŒI×b™{ôMßs \ No newline at end of file diff --git a/graphics/portraits/custom/Zidane-asilverthorn-FF9.bin b/graphics/portraits/custom/Zidane-asilverthorn-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..225ff5565e601493f4feb65d8c73b3ccf7f1e83a GIT binary patch literal 800 zcmXZZSxggQ5C`yYyOnJTbX(L^4YGg-m}ry;32IA0j8zl0QA0FQ6cvauq75De#4gs@ zMi4nvf~YOg2af;}A2x`xEkqGC6ybq-gzaLW9+fSYqlL1cMg9Mt=3yq2nTay@g0#m- z*V>X?+u@4c+YF>!xK@TI;01X8jSCXKi?VC)Y^}V0GfeXfY#_h&lk8?gjA5wMwM;GV zRM*%&)LWX=<>s+T$?@6Z_q~7wWUAHTtnzetJ_o#P#BBI^6SX~|yMJ{AXE`Jd2e=3W zK|=Hjy1-DD-f&der)*cYH}pOH{E`J@U`+7WW$k4xS>(#;o-E2J?B6@JZ91_rIw}1{ z$3`1%r3V`ZXl|g70{{g=G~3v6>Lo}2)W3lMA^}8)DxMxNMV8TVv%~dF31aB9tjYfr zeXAUjbOZ}vGR%YuCO%UmI!b(J+=oYK%6>cV)5;T+U{*XC<_+;d!@mg) zM?x?ZoiCGte<6TeuuzKruRsl7>Ou^jVvvzq^Jo=$!k^{Q=>q#3!|Sm8A4Jo63ul--7nu|b+&2S(q45a+ZBe3$9gK?SMPWtd$y;!J%-EzEMTRq zk?UA-u;ma{TUf`}!GQ_9BHA2%KlX0Sz3f`#vy;aM9}f=o}Gxd#eD zFdjlDAN&PU3?{9-bBUMnHu=NHk~Ic_I12ea?EX6be0;t$PF0wsZJs*UrcF71YRk#x zaVD>6=30TNIJ7vdD4q}zI|m7h@GW&H9k>qPSM$?W&)K=R_HT2b+jRjN;Z@iOe{kJ! z)IJT*>T}@;(_=2D8>_2~S8tR-4;118On{;Iyh~z!eekFlL?Oxxf*VT$iZ6Oc%2;4% c=JiymE77g-l#sDDAu7UTl4X(VP3F^o0QrfPFaQ7m literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Zidane-asilverthorn-FF9.pal b/graphics/portraits/custom/Zidane-asilverthorn-FF9.pal new file mode 100644 index 0000000000000000000000000000000000000000..cc13397d75d00054dc15b96860c7ea7a4a6d94b0 GIT binary patch literal 32 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Alice-HoxNorf-Touhou.bin b/graphics/sprites/custom/Alice-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..77ed3544b10504e214c2b041f2333d6678dc2e21 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Alphys-LoneRedMage-Undertale.bin b/graphics/sprites/custom/Alphys-LoneRedMage-Undertale.bin new file mode 100644 index 0000000000000000000000000000000000000000..ed9b8a5a5b7b22f0be65f8beaaa7ae1a5c81ed81 GIT binary patch literal 5792 zcmchbQH+#V703Ux^L2It!^~i}ble?wMrk4sRc6@+rm)=|S}iYXv8Kj{TE@^c#t?RD z%d#M4=fQ`jArxP*Mok+N`_#}EqNt=!TBCg+l&DSCW+@|9N^nER7I9lAi@$Tf@0R|OfB*NKbI-Z`$|$E2ZNHkDlhjX7fwo55`D@Y^RHko+zdgtss_Qg; zPv{DNf7Zq1oNBsVgq!y1*=6;1sFFG}&x3;Kz^ua|U52bhJvZMi%35HDlA@axroW~u(EQ2!V@ z=QS18pGE)N8J*D=^bRW<*G@V#RoPHV=!-T#Z;Y7IgP@pWypzv)v$=-e(6le_>Oa8x zAB*ZAVS-Je{<72mz*7B}`{CPG{u&*v?<;p2_rW~yaxABp~R=-&*2HfwkK$Izc{rg*z<{Y=3c&E|7x7_nD= zae4Ht6oj$L7Tz(eC)t6MPTF*PZ~#1I?e(%DR!7la(#2l%$8>DH*6Uj^R{;GA zcw_0TfX7(c-tgPk^|Y?C#zi0hG3~6ZeMsp#_^bM#_-iv;4}V!58%6UvoVClJle<0_fKa(@OMm)>O$glT0Vc*zy5oPVA1uv{p+m%;&rZnR5xn5bLG%J;5K3( zUHg1mtI%aXe}{Jx@78+PvQLXV8?dlR&FT+&SeDE1&;fL5g<5J=<_4MjZPZ%A^&@yVe_Glfd#iXBer8_O8OC?pqPsQCvozq z51G$JBfvgwa&5DV_e0XB!G4o&%HBW}h^4UjD>{Pz%-}&50kGfaDz{dXiNiqv1gY_# zM|uZX44+|NZqci+>;D-Sy}JHy-ni8N_vi;p{J**)iv7Hv?ZM8WG51Sw4Z-gO7POI5 zs_L^3|7Fli-vvq9*~e8E0TLGyScq>QNdiEImcr2f#`7p#S^i<`Ilzp0{#qjDu{IcHl3vE!?BRFRjk zfDC(CAt#+6CKlYAkniDX1{<@}vB@ltv)51Xd>D=XFUE*zeO12#XV_KD6f;#-3YH|D zV(ibg7aKHrJc&m&Ry9`D(<;+EY5JOjE-f6|ZndlwwL(1P8W z`OPRX;%$lz#>AW>U|GPZ9>e}lYPd1nDAY66Of%8&8shZ7i&Z^Ibeo2`td0^#EIX*N z;w;+mntV6ECclNVNPaylLeDs_f!3FcwxY6Y#X1wp2^eFHe=bvJT-zMg8* zDg(&d_c7*kA$N#ECTiuQ88#%Zb$rk zOkW@AWk52t@kM8fSKgv`eo%-WH<^NIsKTQ4l zW>CNGWi4-6{hI64uU{f$>^c?HuVctBiTbV7sb9_g=g;c5?5sthpnj~y#{2RvWU)QM z!p=LUjDJ@@=5h3vJMx@7#6Jdm^ZK3Jkxacngj+{!_=HPR7l<{JkU6REA#e26ncyjM z@grJR{cG|Zd;17y{}?#_p~}FP{0^RTef^{&sclD#hlr~`gxzUyye@B>S3AgasoqdA zSsi#)Kho}~{cPg%bk}~q!t4E<`yKqpd9(u;`?2+f_{(UxfGD*8eooAdidU~?-)2o# z-=>)KV1aj{Y8ktzrRpmpB9w;`wJL!{_o#kTJwI0;OZ*{>lRA?AP#~X#6cEFy%=6ec%1j$q&9i+Kw-F@6T?D6_Yi* z`2TZ1cL$(m?0gRH=a$+1+*)<+$M&bch=hz_v2ftR=z72 z*A5ToH~+stH32UoU=CM1C1}sS@c}^0=_Dq(g;l;pR@u z4rZY<+E%o^_T^6VQnx@uPb)AcmmRvXkPUPvF-egre?NW|0P1@4?nKu4uHynO_(7jz!Pi^^zo?}leZU(nYIM%(omr+UJ zE~l)CtF)qoYvG*SF2#8`PFC;=o;Sp(6KKXg533Z^?^QksqKkh!)~zo;D*XQfr+e5Y literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Amy-HoxNorf-Sonic.bin b/graphics/sprites/custom/Amy-HoxNorf-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..8021d6a984542174b102c8539b9fbd3eb74248e1 GIT binary patch literal 5792 zcmcIoe~cB?75?T2GXu=NH!Rd0al3EYw77o|_LUOcz_L3OYu8kSKS*f=WvnJm3&L0x zo?*K?p|vS7(v8&yYjwAYf3!){ZlR$>8#@})YSpUIG^mJ^2Ggxle8ml2aCzJB&b)bV zW}(?Xu=noUH*@csIp?1HopZi(_u@y`jTbS72q$pZ1S*Ot-GgoD!(CX5Dr&d_-!@up zE!cxs$^fcnbR1I{z)SKzyk0oe@|ON)VLVn$jM(}Pvzv>5yBna6@9(cg%ak$kmmrafzP59m_zw(ud%Uu)C3~}%Ja1|~38CAkU z_ExOK3Jj{^iR9TS9K)+>;PhcpyaTcQq4M>~4)9WESI!vAjrJ&Ge^-sDM8p1h`F%6w zOF8)ib)ALov3vy1uJQo-+v@hG(Xkx5liFX0eAetm>v-M%G&*iTq^9vv|#Kc8PezV86t*nl74PF&AjI4oAikpZQH79655?gxG2D0+gQ1S>HT&%1D~$cW6y zJY#NBD*B4zqWL|#T`VX?KI_E40TE3U<3rpU+!|~TUc@cIL{N2aQhU+Cof^dNxEdGj zxW?$zOZ>miTE!VYq+5`Qf2Y7nwc?zz2S!g?C+)3HCw;~Va1hQ9g<8UcW@!HgMP{|{ zo}vARe8SCWf0LTkUWYkDdnj4$BX^^d*WL-*3|lV}D07H5O(H(&zto-|ReaHJkNH&$ zyThIzlzB(M`becjK;C|(S?o7@k^Mfu`0CaUDYc$P!A2}Mu^!-u7skQ^ zi&|L1e*f?FpT#@7FW}++$Gi*L%4Ge!p;0@H{i5~j7p>n!8~wAG!$)l4IzGgHHu3pK zu1Jie_B$lI6u z8*!5x_RVW2@<&!XIg3Au0Y60sy+;!JsN}Wtkk<}@4nx-<#a)&NfBq4LjrOYJgdtZl zj57Zdf1!Y20C<5XzS1^C-`;`0rMLX{bz9lqxUVu|EyWuGGHHwK@F-yvNyqVfY*X)^ zzg6FBmgw7i@Ktp3S7kn-SvtOnck#>cG4IDwsXB=%`DgMs7>`>~z!~)DZN_4=4|@ym z;^*x{G_CEU`3G_Pg|H?B;S{>f08{a z#RInukwH22*B6qdlq*05;6BYSD;oMwdOHAKP=TFyf90 z`zkh3uKNXY#0}j4acjcvjjlR9;-8aSfXE7M>KPS$a>O%u4R7dtk_A#^df&+I#c9ym+;yV{I==&Rmx+;>Z+2 z7AKf;4QI{bAu zB*CvQ&2RVnE!Dk2!mlsIZ};hUf#xj&Nr)Iw_?3-x6BJ`Nzg#LN^eKezfl4jU%X8jc4aN)uA=k+&t59nR? zBBRKaIn+_}b;7`){FnXf4{eJc-Ps#W*qv5Ycsb|2Ld1EC@>BNSupfOw&e*S$@pp_` zH0&3FGTes!KAHOC`MCb*;4UT%Jgq-c{=G1+KPs^`GW7@fe=)8-`+h%*-+jcwp_YSRIaeTlv?hL- zq3_hB1V8J?uKfFmPyBdI{P^$=ctMJvZha57GQKCdS>!*{A$8&6MC-KLqtjT$_#WqW zFg~NKvQVhc=dFM7`N0R;Up{qS|JSMkrOy!fW(C8y%H4{H$;9_;^=-C(y%c_QM%U~K zhDd98V5O%S2np=hONftl;-Bx3D^jv$U9hmd~g4d$xM-vP8|WlQtD={SR$*B>zYV*a&}7~txCL$?~| zM}wm$?Ox;kMXC2c;nKe%JU3hXT}qT>DW!`q`s+sI+p0~)?c32{}t>C&NIF=^?x#sF9H4w|3}5; literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Angeal-HoxNorf-FF7.bin b/graphics/sprites/custom/Angeal-HoxNorf-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..927b3a4c4e3c65d1f14e3969f1dc91bc97c848c5 GIT binary patch literal 5792 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 Gbov+ku|^{R literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Antlion-Astaroth-FF4.bin b/graphics/sprites/custom/Antlion-Astaroth-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..27b9f0077369656c57b3f3976d92c82dd07d2dcd GIT binary patch literal 5792 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 P^Xj`ehLzYq1^E9D3&!KX literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Arle-HoxNorf-Madou.bin b/graphics/sprites/custom/Arle-HoxNorf-Madou.bin new file mode 100644 index 0000000000000000000000000000000000000000..fcad2bb61e366c76036b2fc36de2f56188009034 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Arthur-JamesWhite89-GnG.bin b/graphics/sprites/custom/Arthur-JamesWhite89-GnG.bin new file mode 100644 index 0000000000000000000000000000000000000000..760649eaeb715ebe4563fc3c8183adcfeded4b55 GIT binary patch literal 5792 zcmcgw4Nw%<9sl3$-tL|px2s%bk>hSnh>!_^MTlTQSSwL%jM~Y^P{){y5=}cKoW|;b zC_B~~Y*5d9bg*^wl4dgLG#{8Ruc>2pETtwx9r7_9XX>OomQp(<=5%awNfG;dM}UJi zaWcvD?d-ws+xOn@|9`*tf4~28ay%z-Ihg@obqD2HE+QV6lQKvkhc|-^OS2TKt2?5p z(PW|_Mx@~~sGmYaiGK2n)#9>(Jr(;m{AhO6+qF(6MO4LlQ4s@lANi=pojgK~kM=K7(Y+;mfFu6wXB)i9|s0&+@}soRXBl zJ&gM#SwuFf(AvarwYa*VvtrMN_JY?IM!oSxZ2Wp4P{d-4pHJ2Hw+Bjx4h)VAys*<9 z&O4bP$)1ryu$gwF{+Q=2-|fnL-tCedxqOh;;nGAWJU}!J_lNr9g)d8ov}i10p3#!j zi;K4ncz|dn?l$pILFa}R`OPJ-Il7m3T`$wh)aaV{5ILxhD(z}}?!bYei-Rxja))zz z+4w3DNOlC{7ZT?bc#k883y5ll%Bh?KmJ8$|3A5nAWf>t&H@mEet@f*yYMHP&$ z1s#{)UBj=Ky;tvAxB14$UC|8!Wua~{S~}?g^imUT$-lV!1m&H)Ir_(^-2)+d8*d+= za(tuE4C-3cQe9zu-AmZ` z2F=9y*I|@Gs*bkiU+g?81bS|M?5$Ylxe%R7A=BZTnczp9>zkhL|0Y^L$^Us)Sx376 z=b?U*|J{f4_usdj;)`B&zjAA|K%hHd*Gwv+wXn0EDx+=MrCmooIlaYCycKf~vhgL< z=_!;7?3gA@50LE7%$=_If-<4jfgYUX1^YlsW~pf#VY^#Pb|(|;nb}U52Lu0P1+-dS zR)Y5jN7mT6i8Z1sE1IkYwV)$Vhn^y_9kGjj8+%WfTcnN8e5x2|_ZX?>O6mc>)>E_F z=k{W(Hs^y>OPN3}5Qz?QQ5EW)R2%)lbyw&&!i!*kHLgaq6Jj=nNd?lW=(7To(TnP2 z^pO~vq@g#6f_jM_bOmdJMLsQ856B9o&}#u$5BzPtMi z-0pGv3HH~~!fV?9k$W@dZ^Hh&Q}g%5_SgMS`xVSUAV9ea!a&OYAb~&3|ME5XK~zb7 zv9r|JF(3_?!zMFHg=cl#m8658%)g`kv-zFce`80ZIbv<;IoGj8+hGn@>J&#y$tHI=~QXz@c$^f zU>g5GrXce_v%j%p(A;94>-bpPL6PnRu*Jcja`a&VUns@DY21QnAwP0v8y6$h7b-#JDhCa;Yjfr#8QK`~{FlY$ zZJiRm{(JokwBNi^*K+<9?X%cOVr>V3pFhQY8tj(LJJb9xdni-M9%CN`vapH}DLXzk zckDV%Co6mV2Pk5`k8ve4jMhb%34=UBMur=%%BNbsm|u(;<5LXDg`-r&tEBFi+JO1* zbc_P54m&xWIfJ&jSdARj>zwstMm?b$uAZxRw4|13oQC6f4?9OL zjcoYfbN}NNjdW}|FD&PFxQcTdD*oL3UUO?nhPaK$rE8)>93!WqJR2>E0JsJ+ofODah{qFn}_fC+nH72#K< zA=*q~VWZHZT$L_RUtwqAFxEv5=4TEfh?3G@-q60#Vd<)}mCAgjzFNeEE-yqd=-Sx`w6#WD@}F1;|U9z>if?cS9&wB1;z9XYJxjR5U)7w$ZK zUyw65bAdBBo3W+FIs*UC0Oy>*?+3|`;fvGsGA*N}G$QTiKXF>riB%J(N9f1Y!uEXV z+r9Jlte>QB1yxAbw?~@}te>QBLuyE}NA)e!zZ;*QQXiYBcTUp(0nBf@{&&-4{U0%j zG+bl)KRThm=R7&P+uNDa|0(?~ET{We1Q^rbjlbHJ87}P|*WaN{(7!6(A(csah}>iP z`xg2Z$T6Y6-&XpRI7P?x_w)1|$YB7%sQ#Xe|EuRO%)gJ8KiarG9Y3!^jWGO53jaGr z@60)oj$czXDTN>Lk$aWvT6FOC6MTH>n=9Uc{AffhypC=IM`wF)qs7+ER?f+TFK^fK z9=meso*3bMKBDKl_>ND!OJ@ttijCQODprWMI5e-yt)Q@2hzv#-y)+$jQ8iFy&pCf! z=#u@s$%p;cCGy%nR2IXW@DIyh&g)UFJI#L_n=+8Xe# zLMrERWMV~RI*@-M;<433qQHKkim``Sy4j6gzuQFqh5cJ+YtRm{U#t?s-zP&yTo22e zRk(Rex^UF5}#O`I(nb$)B6;bh5jtG&nP$VOexrI*ifwc95Yk9bvE{!#ib%c zjo9miC4Sf+j)ip=y+d$%x2akN^M5MJnZOSH!-~e@q3CprZWbEHijzcKtY90lsmqQh zRwu_Q@z-WavB>$wO1YsT-h8zAc=LLhI02DM7eg|;WEx05AMqy}lXK6uTsSzGHz*}y z>M6Y;=C_KiK^i1MmRI=XX^MKw*^LitI@+>Jk>}E;6t3FSAN8)c&S*<^JXC#LRWW;%JSv-1O11gFQ9;||CygJ;hS zfq=gZ1uG##k99>O36{aLXNDkzzYIn7*UX>Ov)4R%vi=j?u2~q(oXB1$=YI^x*UkTU z(UYNwekq9ai=ga7zRZKJB5q`FnJ%YAAyc?DS&`&)5-Q#yE|=N_lq&f95Iy*a~DtxEGUcHYJ*`Zqh6 zp8tvxkC5`^`R(ZW(ZLPP*&lvy*g2FndVVBf=|`{-V0J6B77sYEK4L}eRLX^3nh>8>)m8Tnbh zaY#xkZQ2NZY?mP>#}SrnRYMywU+>UIEOs+)PKR)pFsv!=M9;1w~4eD+y^+s6KP>KuL=8dhmBLl63%wd^1x;9+8#NOw7 zKXSSfC|hA;-*?iTr2Br~d!P5?`<@i4p|#XRjk2zAB2p+)pfJ9DGRdMPI_u~@C&Haf zfl~O6DJ>NV<@rs=)WvnL>QAA!AIEcGiOM*b!Wz&rK~|2d)B8}n#SQ%3jDh( z2G@Lb(=oPCIpy3EbNo%t|Jz!voD#GCV7hzhTNjV1)zh`|c@O-F^G`pv$DDG)-u(Te zrX}cdvrt2EDNd$hDix5Z2C{^~zkXwr7QM|qOAy{q-{ww~R0bLcxAxZWQ2WX_wBL#~qlu|%K1yw+QKBnCakY>aj<^g}s9v>el z8aTuL;Qw&v4(4ey#*7o-AMaPzfd3p_rr$RlS4Fc~YL-_$@aOW4%h@XM4}0(4J8CAF zj%Sq=2XXwFSPcv0@&DcnO;HyXK!}XDP1WOjM;89SCD<8a6nx{^hK^*W= zihv9?R@X+>MZVb7PAPfLJ~NW@WhOHivvNQeA;dX897dY_8YGg+s*o4OjHbwT=Yh$&2l^rqCepZ2pav$t8NSCqcf1;PGZb~HDgD=Xtn61Eh3$7%r-)~^Pp`~7; zaW$bQn1_1{u)#R#AePhr;r0i0M>%U>AIT2q^yewBc~7kqag>{MK|kIWqZX=ft8LpP zxx~GfXMrk^>WzxX6#@N8DcAoYbC-3~vh1S%3DtVGhrOrQtzUpEgvP5hKzQ=?d?S>~7x@ic>3QNk9m~o1|vkjGOWn zym4>n;#+kC93C7F**p&?wRD5fMf*ZK)tzjD-83esLKP%kF{QiVougoOulzEdcV7{{ z+x~LZuw(Q8B?7T<4_y^xDs$ddLsRTuostSImND}18z_ODx?4G2H?nmyNOSpqb zEKr6lrElx*P5(4!#gq0CQ4HFE6}RS3_OGlh#w#itdpcqh#;w zq@8q=u1X(OUjKz`#x z!Cu>n>$svSnv%Z*F97jfh|4<8m)ZVX8YZx|@NJvHfIsqu`4ysO$4&CwVO-9tI~^}PJ5!muNkzCc{$d$_z9b(epc*%l`HR9GD-aJF#nhxU9(b-ndX?%`Y=vTv zbU;{9&O9}DKqgg@M3U<0Anl_AG|yC;@h%zH?Fs+Jm9^I$V!q*#(MQYB;X2*weIAjy zmKtFd4TwIH^9=4Ca87VLKlC(qW(&tG$fpl)`-Ts!O5<^0aHVghlpLsE><^`K*T`?u zZ`XfA?)%#AM+-AF!E8!*cB>$e|hwk>i-y5;5Ncx zR3YW{e-_IlfD4p@{dHwRI^Xu%&{dkP%+kj_FfB=rkgBK~()P(?qVBI4x7t4LJw-Ls zaeD0%OiPArhtqw%<_Ra}jaXgOg^bw_G>@_gvO*+B1qpdWf>nt|qNm~eSsDf=N7WUI zy5v~4f#*gpfAIRbF{eRou7fF;pZ71waiArda_-!}j49_jO7e%`RZ2kqtRM5YT`tK_ zJbwq|=lFex-gEvqvUqUuV77qY0eJR7dLCzvUy}YN|9GTzxpg^S!0$Rddzqfb`HV79 zF{t#4>sV(cQ`d_7XdN;z?Aszl5ys*Te<0oM4|$Vn!?eogJQ;cH8t)(W+I*Y#R7pjB zQ0iY`zOw#>8H`wb>{~Cs6US%m!DI<|A^Tg!tVAO zc{{yPMVObNParv`B|2kV$<_achD=Wp@j=>|>px&p9u49zq`&6sf63(4R>u1P^%RoN zI85pT46ibzLV{BL&*i5;{Xgw8AXuvZ!5)EKs{hOV_dn@hdH;B7;3~^(m{0xs*?j*f zjB)>c=63)1%|D$|Bk8#Cv)>Tn2k{l-{(IaBdxs?k|ErgJqzQO021?;7AW>J?0UzD? z0!^W&nl~>QE9z0w(v(V3KlcAV8sz^spn+S8Kz=J2fh56$LZuFzKMzKruH-vluEBK0 z5@I)~!45g=>*#=6maYz*QY+JIU;{o}%`Ry0ckvVZb^D-tpPIxDGC{UzR}2ab$hrCW zd((Sdcu`npyBKmF;!p5|bhq7!d|Qk^onJK zWtv@G+Y-qwlm<;>xp@S~TQq<2={bb$^dg@Q%!?b4mz&oJy3{OyvC48?ckQhcEOhX3-nBTA?`lnCv=?|{jLmchIN zh5o&$6f(Rkb(m`+&iZM_b^!yX`5w83i{5;~N`xf5QH@{??o1ZuaoA*lzz5!}dMVd| TvY3JES!7Eazw?Ox@8$m&yM?v* literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Atma-Astaroth-FF6.bin b/graphics/sprites/custom/Atma-Astaroth-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..97034631c0923fa877b250ebe6d58766a20be720 GIT binary patch literal 5792 zcmdT|U1%It6#nLBc4kP2>;$SE%GRCK6+#JNQxsNcvtwGNXdfa77DT#&Vjokew4i3j zT67;oeDpzVFh~WV?OTdzx=WGbgGe5vg@&4a@S)bWn}?K5capuHJG+zJsZD0nBt-9J zmz|%TbM80iocnzz8O!c)`bRT-m>>6gy!Sc~M*=3Er+ETt%#A&q;{(~9H7wwYdF4q6t+X_F=9D=NKG+nR!(&cDnk#p$7iAPnUoW!XJdc z9N<6Hz#m7o{e*v!@CV_K2L2mkpYTW3xJ>v5_7UK}Hv39={Zi!mG`|K9(H1HEnbOXEbR0zLI zlg9P1{ln;uvLE&SHhcY1&yRe+{j)JgY9l^Zz_;!AT;cuB6~p;cS~-8LiQd-yv1QsR zn)$Oy{)t#oY0o>W^8C{9qBx`>&NQn)35`{JRO_o>7pt)RDo~^SZ^o|z94Dy?)U&P= zDFcS|OV1aMlBJoX$|352*QgpYWw1bhG|GE`E}7P=7=9tL^%6<6re- zfQTlv-jL-AEEB6;3(XS;+`4;^OJvp9@JKv6)WPiXr z?!6Gh4)l=+Z;%Hmy0!iKRiXaH+w`BHe_?Cvk@{M|Pc8imX4uTu8}YYM`LiDVx-R}# zAr?EKT`&Uv1l=P2IugmhoB6k%{?U(5+&_xqUs3ulDn6V0=Q{dV`EdVA>|ZYJt)%cH z`&Sh2|Ld{F_&8i7cGc`Jvc}pO)l-RnOX90#1czfN(sZd|7aA^|B#`}H643=}D7y3r zCb15=Lsm7_jDKa*dk{)abaXUHmt5P;(HtqJi<#n!#r>8m(^Iv;5hTVl2aVg<8QAF} zrPxJm(M7^{vGhzSIr3%tH!Nb8aJeNuSMM+NJ6)pJ;L`f3J=g3nE$jD!uM`2xfZtzg z=o`kb3f@}TU8YLEloGlUI76$wP942@(O*)}YfI#%8n_I+?t|hV^SQ<10@cZ4^Q!pe J28Ubi|396Ie1iZ0 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Beatrix-PocoLoco-FF9.bin b/graphics/sprites/custom/Beatrix-PocoLoco-FF9.bin new file mode 100644 index 0000000000000000000000000000000000000000..66292e9424ac8f042a09196002002034adf4b949 GIT binary patch literal 5792 zcmd5=e@qm27JoDI-I>`R><-HU0}C=(pes^cKm>}wdSXi>(bYqwJ*aC-Ed8Z>w0~Hx z>Rd~7&zK8Gnuhb*x-sS?jkTobwX30ZV(5ijOpddh$2F$e8rs|I(Q}W`cBK^W&8*Ar zQY&q2)BAp5;JX9g_j&L8-ur&u$Tsyy4`b;TPoKjekP&|~t6*vz;Z7NCf)9w-z<);!cL4Ny{S4K{YaryE?K1oz| zal4sQwxjEYtgmftqICdeunNK40ox!GIG|gCFDjpfeoNOj{_)i^mmi=BCV3hr;1dWT z0#{uA%$<)i6%d!7&r++v9@ih`D?@yud>JjsfQb=!DJ?%E-%WKcS$GJ(`4l6;mKaM3}fmA4n z+COJxHrx%*nVxrC2PZ0w4<2SA3@sqzQn_9EB2#bK2(r^z={~WhyZR^KA=>)sWN4M#-q6{^&6Mr{$M1Td^Jc`Iv-Jh z0!}6385um@+B|S_TzwBp7)GTKM!|r4Yh8sU&BC*0D$OEVs)3jEnjSP|rg#dtj*)DC zhW`&u`{YRQa(Gw3>udA3`QK=2ls&Rnu9Dm62g~azBb`cCGIn%0D0NbJZX9ls2Q1KY z@<;M#?|-%QW$7w8LyLe%cm$t8=mr~FVFCKBb;;;?DH;9KD*goYUSA^mEGVIq(L-t+ z{rF(p;H(@+@06V~46d-}Q5?n%M;j3f1EPwa!EYMTt4m|S_ zEqhO+|0!w)QAZxE*6%PKw|fXolit0`kRE}(cp-krB+x8weVm?J;Q;TH3SSJusRuxBZw%2o&dV*v&t3Q4&QaWeLVmk2r790 z!X+*KiId%;-_6GImyu+#tM#$`rP{wA8l46GJ$o7g1#ZNz#eZk7ztueu&tLnfvEA=+ zzew=EhfPc;a7DiKQ2G@$e+`Z9>i^X0^*!KkJErC@K@nZn!)v(xT>G*bbGd0-=_X9v zn3a}cAeu2Z)xsKpFQ40|%mv>ryP*HP{|kDSqI=N(1a039XD|XO4pL~5Dd$$1m*>?n zEA4=HfQb=_pjXXcz(m&yCA}{+o*!Cz**efStfs!s-oZw9iDRsJAkeUaDZyDU=J7eq z5(edqj7Vo?;W1OH`GiB$hyHtiQN1$TKUtOIoRMC0pW6J7q5?(4@Ng=Uvc2%H?76k? zw4S0jP-^Z&~JsU5X>Yq!uv0D4WAyFL>?4Dhe7ON)IfpWsPEwILCVPEv}XO4 z+Yo?}*h#H+d$6Ty{vCu?$8gq0Bln5cC}ru5b|0Y05LG0fb#4cSxRgOe@{O z>*D7o_52aLA9WZ*)0#>xc8+Hg<#S2$b+iQ!(gkv5lT<@3K?C95W<2Od6t)B~2EuqV z(_YHd1+!sM!S^!e*Tb0KXYml6S+F0DdJfzd%ychrtZ?X1Jvz(NrROtq?#M38*7d_2 zTw{0iaUsK)^`y;@)^+u>8+(ON)o|ggmSyx>$6a0OImH0tpBf&yx)4NRES!_;>8B7F{BLLC~ll%NjQtE*qaQ!rWntJU^5 ze_EriameM6;mU5{FkwU>CwMCGv(G=ByBaz=t-ch4CifvSOn)r=+H*oUp7DY8obVN2 z{m@Rn72sKVFI^2kN7wB@CIhFxjM!d!>bmC|`7^QL(U33gTpG@;7F-K@ii1SP2*Eiv}Br;{PYWzCNZ$ko4LK?r0@>>$=I^5Tx z^6%JtA8{nS=e`I2ze)O6#u@g_wNEm&8vhlfBHqkz) z`upH5>TiPe_it`pf8Q$p8X{XJFDAsF59@FKdyl_0%-t!Ky4BPgBw(ulr_v^h@Q?#p zi}`n~zCGYL;9v*XdH;&lw;2olXF>h?-OhhvKK`QTzo38d4f!?Nzlh~e{zm^In!kSR z`aP+7UAe6~vHoLA^^(TF=d0K6zyAB7?LQ&DkraQt;7E$U1^R3JD^|U;r534DAFs}D zR^O`k>l57HmtIf*PtBugwY=89fnrD{)mW4Bi}sHe%fH{IfAlPO)%tpZd=AO;<{R>n z1xPqckV~jPbE2%^rcX(wX_V2lziO-1(aZQEBuohK#$efC?x?R;Wr? zFmBgBZfu8ng$9ka&3~YEtD@S;vIO|0pd!&Bqe4NI{^1vcf5YPcn}`4gEDNyB$j}^c zNXPPgd8oQeayeasBuWk;Mdge^oMD_1DniYkfI?|K_SIrTu9x=0SMd)r_&hKRW_TCb zw`Qn0xQ>)|j+&)R>N?3km)%Z(M(vIW`h@-rc1QGVyg#FMN2Yq>{Tb9>kon~92$sJr Xf|~D+06Yfo(gzdWW;k*2QsnwVfhhA6>F zl+>{fYCg));C6thgU9#>1=^+_Gv&jR@wgh-#2Lt#{OEL4!xXicBrqwcDL5iI-F^4jO*o()?2JZ+B5K1P+wm3vo8+4V>*Y2CVMk*cAD3QP zTb?dT+w|(h9aAL#tN5Pdw0IUe5*RyC_0BDwwU;?Pb|0?vwF=;%aIzZ`{Sei%aANq` zTWUKW33(DpJeTZ>K?ARe65LE4Ld-8Z1d$hc7d=6rKsrT^UII}RAVQdKYWKvEq)P>R z*d5apnLRt8fo?IU--WNaYQ1^-o$%)C?~KzkR{inXiUw|J@x>KB(qF_E0ABEg?EM7= zJPN>fZs^jMHa)!|MHUY!13(-~FOv@pC>Vf}ufHMRe{KdsS`mv$E0=A1NJ_vg|Ph0R|RF~_Nr<+n3A}bO=6zW41Uxa-^p)JVy z@1p&8Hq80&qW3#7=YQ|8x;1`w&i`HtsJN(6xZ`GdPhf{n4aOo5UQJH{OR$m<43aNl z5Lo@{58m%jw9M4T$1`$O8H~xwOB4%NAGs>Et)uK+r|P@fPWB6gsR{%jXEFf0`WiLdAP<+)gmGQ_M$ zWxn+ed%pFso7SJj1b_S3iyL#+13bpCv6L^RowL)$0*-?u6!K&~NqLcOaqfX9{C%pb zB?yy{mINM9983&os!V_L@uN-qANaj0{%-tJ_>C7AmN=X+(KCXVS&>B#*fKuj*Oe~q zh>71g{D?_p3~49)^8K&;!v5D()VQlG{^NrD|7`p?>^9y;mC5vwROQ9Tg~#Wn{sVXS zuhXT`_CxJk7{1kT$_@(OcDlxyek;Bi{Z@Qep86ENr>yv1X#C|{_i9hRb?9N}@Ekia zI0{G#I0GFDEVk%&*U^!Vu%c?c6zpM52ae*TrjShSRq1bTnR%4^!px)W7p5N;xsgYi zs_{BifspG1sAkpJjcstTD$tsAqZ|K;m%YR!5)+t|0via(&ti+{7bJ`aES z3*v9qzv0i(Z@OAfN8%+Solm(Xxr@Ou$c$Bwt$0kP<1)A0QWMp9hs`N?9d+J2OZ$~y z-hGCZN&yad;9ktm=c<4jip2x|_!Av__@D3kV3>~h7#$TJNImQ<7*4l@m#M*_NHlV= z^Qn#q(1K+M%5Bu4-i*6|$W(v3t*a5m?MYQX|XFH~-%{vb(SJPgY3x2yiq+AXvG`uzRv#PEZA zyG66V{%n6cG5qq{=DN?9Z?g9PHR=5Re;Hcx`v2)je*Zs>sWVlxH{RpF%vo-8p-l3) zP=y=er_^KKOK^QKJiB(1^hebsPP(JCqgabN>i;#8yAg8Ha}H|sSpRSI-xN^0y+B)>!p}!e;$5c zia$NR<+0{FOY6K|N0HrTM9pG`jEAzs#`wc;Z@Og16CM6|JTR0{W6%J~42k3csueLh zoeT2t6JWFArz)X=Jp5u%t@wQv{6h~$s)I$%VdJp~SZ*+QbZrQ0QTd0sT&kylqZNm$U^%de zo~AV){<8(|+|pjWnqRaq7vGA(uZixn_@0m7&hf|d#}5Z9exF=RCRy=oOrkpZvCW)d z1jk68#NpfoV{G=e?bQ)EVAL;TesCN02l7P>J9a*KXAkWUr$vWRzn)7{eLX}QDL%xo zW9L(x!)EU6?QiY;#oo8}?pU3m1B&$DPV9XzU8@n%uvu$+=G@@(t>;>sN9<{mYj}p( zdn;WdNHg{x2?nkFIY`Vi$DbK{Pc!~L$DehBzlRL{QD6dt*L<{Tnz7gLqm2In*Ku32 z>~*(}l}8UATX}ROQJLD`bz+pHN44v6?7za1JKyL`6mt0o@9R6h z_fqRAM=~=%BK)a7z>%9D#pmn4lG{`t>&uyUcHy)9HZ#9@zB#()QTa!%+T8qRIj)Cn zncr*}VDl@>`Kpj7wEvFW{N()eD?OY4Nmi^`!e{e8Z+_*xp?1SEi+*~wl+{lk|F744 z^&zjnIL~}B>pahB4{RcY_MS8b)S@%n|ie%Zo?OXC=4(-AAbVUT?he&fXo_nyG^>~zfFHzk(oSV+fY;P<tgu e=~(`J>GSRHj?VJ0@V^u}C~p7v=BhyM$DgQ(>I literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Bombette-HoxNorf-Mario.bin b/graphics/sprites/custom/Bombette-HoxNorf-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..916706866d6bd4238e71a4c05760d09f0aeaa34c GIT binary patch literal 5792 zcmdT|OKenC82&nUIx{rGbQ-aaZEc&fU{hsK9yPt487YB{3lcUYCVImVQDVwywH?~h z-dGnbh-_K0ac@X8#swjlQd%H@abeN~QYJ_Y3u0>0n8q|yzyF;3n$k+*7}0YwGxwY` z=lrklf1C^GW*~+*n%$B7819#evEJ%|N3c-Al3wq{0l<-GCxa|kEX+i7=Mi1Vv!BsD zgCtLmVX&Y(k66Jf`xV{G_^9uox!)|B`#L)0#5nr#D*FJ`Q1&KaVl}an&C0s$UEwJ= zNSLi&`oepbq;_-+=H53=DBim${402kWEJm8^x;w8%!FFk^c{SUPi4Jc`XU3+iJfiz zEiZ-j--eb58uT*1ZR*?d^zY6(oPAm8{{!5|@3@CMKuYO7lp5G~;A-{c?Pr1o9?FJg#d2Kp~W`|PwsD7gC9^eu9Cm-K&&y7cpy z!pAAAy%5kJ=KA^W5dAMpv4zMu&lmmY(}&C<>Oa+uU6i01FDSBD#0Vwmqx~P6BU~>< zan7~Bu;t1x^c~9Q%P;h&FyYDHN>H65eP8}3>AAkoOED+qD_A`kwL^Cl!`4_=Qzy*C z6K_3+CO#&zWYj~z%`MWYJuKY!LzI>{$ z58Ts?QM`k3b`HfaV^nG`T1~EIGT6#{_*EI?h=6+c(``l-oTJFhz4fh!7 z8}%eJC2!i<`dDc=&wR|`4*RD{l6~%v+yAX4O`f? zzi;8^tzQpt;z3o$D8DHV1N_}c{PdzjANKJ#ij(5QZG@6!rfGYyAQ((a5)u!XWd5N4 ztn(h(AMzd$iu*c>=Ab!m{wmfdeqGxu>-*fOhmHNG69cXJ$XI#-kLkFowIYJF;6BKI z4z4%e*}9PN`JciVKEa8w|4iH0oEra`L{89KkN<=vh*R3y7O5GElixOl@2pCp zLf!w^a<9E%8~1!j|LLOkhj9EN1@ioV+BOg^h5UaK)ss!a|3vqL(hudb9KJ{S|4w?J z8hZKr7xQYan9F(j+oAXE1&6gQUONnpG{&o;8Nz}wIKa1qh0OIvLd1(;Q#gUKWriV* zAm%?u;;)Y&=08+#B-SBll>0*nnzq*=XmWD|)z(kK>a+FV741(AMUSieCHik9x6xfp zSCYT}1^u^2_oPn#1^uwX>v=XPmlTFUGmt=<8A8{Wvua~;)r%@%rmzy2Y_sp z+^%vp*KHJR$F_rgGUX1X`YjW8Hxdrk$dVFr2Yr8(0}jP|=C2xzUk2CLpuA^*ywP{q z*=#sAlcAHXq$?GfkSRtM;;a(nCr2SJ8jHi|ytX210!%4ffRn2p|Q5*~g2#_^eGz@xvt`^aJ8(Wk$NuSEmT zs{eKF-tT2^P$!bR-R$ji!;|Z~zX&%antWN=%(^#AVt$s+#h zxxZ-k>%D(i)ZX){|2_RTz-Xw&Zv&&RcYm_!W0q5~1N?GExmj?3xt*Mg%|zTVm8bQG zaT;eX_|^Lx*`h`N3GPpKaS>Pk3H=-0!nv+QJ$VQ>mB)O~i)bWr-Ss?;L<_f*Gb%c2 zPhyB1=FMB8qq<4QAYL!gQF{_g0P*@oqE~rR=;p0S`!{br40)cOc*^ti^k(??>g&z$ zt#_*^NF)dLk$JIDp#P2UkKTUT9}*nH&G7AC#`4koXCH^pKZ>&jo*&rXeSe|Tl-OUr z!3gNP?=J%T>o*vTjqmQB>e)f+KK^#2CwPCNIdUjnB}|{vvH9`S_n)A8QTJzU^%$jd z=;st9yS9=&So{xPDdfd)@udqtD7PkY7zQ*1JlO3VN;QVOaiF^fBy;Gb9OAW&;JNTd*$7K>wkZwvyV?-@TW7VC*1%1ceD85)qk74U#wT`hERJN z9|j{p0p0xAB;<&H+We{TBNP15_$Xo?*ZEm<;lrq`y3}X#c4rPh<12pFTzD`hs4i!C zO{izQf&S%G`0l>U7|rJ2-81Awzg^Y7d2@@U>&v{nSyDY8+|I;1)gkn! z(#^?uOy12%+rECuBwWe*gdg literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Bowser-Badass-Mario.bin b/graphics/sprites/custom/Bowser-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..43abbc20b2c07f25f183b368d20e0ba067e9565a GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Cagnazzo-Astaroth-FF4.bin b/graphics/sprites/custom/Cagnazzo-Astaroth-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..fc086d784392ca12649985889bc4158f4f04e75b GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Captain Falcon-JamesWhite89-FZero.bin b/graphics/sprites/custom/Captain Falcon-JamesWhite89-FZero.bin new file mode 100644 index 0000000000000000000000000000000000000000..830352cbd4b3f70513dfe8fb89008b1ab57a6077 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Celes (Amano)-Astaroth-FF6.bin b/graphics/sprites/custom/Celes (Amano)-Astaroth-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..61d8410703a97c7941913c352453708f87e05efd GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ceodore-HoxNorf-FF4.bin b/graphics/sprites/custom/Ceodore-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..820f56bae2584ffe5ff76a8e7afafa4e74d651b9 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Chun Li-Quikdraw7777-SF.bin b/graphics/sprites/custom/Chun Li-Quikdraw7777-SF.bin new file mode 100644 index 0000000000000000000000000000000000000000..12f1f9f72bd051b8ee7531ca6140c6598ad89f6e GIT binary patch literal 5792 zcmc&&e{9^;9sm05oL>_6&I#A@l3Y`hl#;e-;_xb z5uppk(yA$cOsJZwDMH74-b;Jw06lFDws$HzsYE&I!|m-$DM4m95WGWmwBLB$SoU7$ zNJs&XUot{%Tx$K4((047x~A5s8oH>#ecV+{jh3K6tKT|p6@AZlxf6v^_j$B3|2E9O z-dtsNT$gKz=I^0CQ#aKNB}|_G94(?D@ruZd=Z2&CJ84FQBIqDjbY+^gI$$soA}Nv$ zb6q7i5R| zTa!OL9`FvBIHGr(+boA1GiPQ=s0Ook6Jh&!9UAzXv`)C&Wk&WIy+-TAx`PP^{3kC0;OmPb)!FmuK|s^W_ZXuZS6JBbd<(%w8&xvH>VrW>$L`w zw17mi7Eeo)mWcjAMQ1uDtxMFbP1rO2Gjc%syu$^$Wc&TT^hf9xZQJSx*5>pkeRXPM zZXFo6YiyNwfZ5k*Ms7VZFgfdwxCgBPbBjgN@nt~1Mg4dX%OQ^bi8L<6(AUmGe+7RT zy)WYEW%8EHT=b35&$O8lv+i;4kayg(Lp;7fv)ByifxM7bn$7SV3lg=-#@cK`Co>7R zQ3L3}uHeUB5aMG67PK=8(FeH32RG_OPn7vHsfn1ox%^SY-*MP?kr;s;M*MmB>NA3n z%=D6Un(8&M*SSWkqXmftn470=gnBe81jW(e!l}ZWxn;6ZWH2?T^MuDg((sFKdi__^ zPpww3q*NoO53n24M@gUA@RtK;JMS|-Hn6Oy8J1y<8o!V6D`96spU>}tvF+M{=Yy&M{vC=oV*G+w)@GGoI^o6n^$8D&@ypgzMK>kqq8lmmZ(>%1I0D4= z$G@GC3P; zzwu@u7RJBNKj&CD|5|&tS1hJ_rBzv>--k#DH!9eHB6gZ8+#<)$X~fQ1+KxzcS-^8w zVy6hCusYy3yJffRYU*z3YUx_Yo?EJtq(UuH%_w_XyBptkCY-U3O~(fgjhW43jRBn? zVUqC4XLnS!|0ip2o@4*ZVNJ|`)q8!h{nu&*ab)jn-oO?9g}ztybYAPEH6>3_PUggK zM9Zlqr*KIif?yG%xQv!j6280HXwPoWZL)_wk%u;PKw3B z4H^KQrdh1OV&7HAQ&5)Lvv)e*vG>u-`RD=;oP(tCC~gjoIXz-KOde^ZX%sd3pPdQ8OqHUTC?VvDP2qx`I;#K4F)*>^4k4?fgysh-c z&;eSLy(xPq@E1!XBgn`D1x9+h(-MCfQw;*~r^pL!N)ll~p{X+%IwUwBNqsM!&0rtLLfC;1MVf$VrtUu*#vK|y|Ec(cMN>5S-HrJ4D(&x^vm!emB zemw6hw=6x#(Jj_8(K%bD3Z)3OB{qhO8fh=~AMI~Daz587dqj46+~k<&@|I81G~nA^ z^se%GkrS%KdG1} zD4~c0h@Tf|xX>D|3gXwu+Td2c^Z1yvyX?QpSFHdVZ8Ubv3FpY*bB|qq>=_b6J^Ck7p65OF(g&Y^P8-}ec#w8NS^6@y>G35|F+LKHNnCI zIjE@!0R1g+uZ z;84>whNype|Uk%1M|H2m_8;-{+uTFJiPWN zwnMF)JtBYKLu-Yt(e;3?a{k_O;o*t1MwSNYc$B|hpb0W8NF<~HNZ@_z=F~5^FY2sz zHn0M!mw5ex`=ah6_W4)~<9|rL*#Dm`e?)(EON5{95c-xoh&$IG%jApA-Hk6duEHn6 zPbbZ=@g#Bo-ny-2nc7H-41i{GYRU&c73u7I6O0o$(t{ujc=y zJ8>-M|2FQ6=l>P_mHdCMek=A~(Ju@LcULReg3tJ?`t_+!uY-lf^$TAW)9-079}b<4 z>(|HreSP|ktgk<+zc&hCVRRMryn{f$CaS;RbV4)Chdf@fKHfnA>x=sbPJrl3>R+HI z`WowB#-9-@%pW*EU0v1x^)TQ*V*OuD-=+HYCD~=h^@SChC4F5@Kc)R|&n}9xu*&{d zvoH=NTcbA^oP`ycKC}vh$Ux@#SB_M1{_^wQAI#^Ekhv}^*YBBf{T}Tgp2MBTr{q$} z)qACWkLJfdaPJd4P~F7pXF+R0T~xuB>gP{s5v=P<{fv}^@b;imKNF(Ky>yWNy!8*Q zuU)^ViC5Q!_>!g_bU$jUkSr{A#5=tA!_17iH;RtojPz%yc{xvHTVRftfZWgHz(o;-G}I*7BA?lFY0ztd)Vl-|Z?2m0-Fp1uW>8%Kb4DSz~+ z`m_7a-t$iS?dEgIQ*Gznqn>J=weGRg);TAcZ9^XSRLy6#O$bM&_B~CZf55QH-pM z#h~cUj?TK65btLKyd8950%ZC{{iUJ BQX2pO literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Clyde-PocoLoco-FF6.bin b/graphics/sprites/custom/Clyde-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..4dff51c1eddbaeacdbe13037eb2942712e51f4f6 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Cultist-PocoLoco-FF6.bin b/graphics/sprites/custom/Cultist-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f789e3d89aff89e431d3c61f6822835cf4c0082 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Dancer-PocoLoco-FF6.bin b/graphics/sprites/custom/Dancer-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..1d54e02818d7793b0086f96ec9689c2cb894b373 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Donkey Kong-Badass-Mario.bin b/graphics/sprites/custom/Donkey Kong-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..b107f6896b55fd91074e9731511fcb1393bb2fdf GIT binary patch literal 5792 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.Yjy4ozVyXL-Y54J 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Elena-Astaroth-FF7.bin b/graphics/sprites/custom/Elena-Astaroth-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..d766a934d3822b28c4c8e9bc3ed1d4545d072517 GIT binary patch literal 5792 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 AdH?_b literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Figaro Guard-PocoLoco-FF6.bin b/graphics/sprites/custom/Figaro Guard-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..b59252ece4ce54959326612dfd178fd24cac9ebb GIT binary patch literal 5792 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≥$fA1D##>InSf*8ESL zpOx-g^M6vCKo4J-{|WXegd|rA^M6VF@&*4h{`BSiRkQiqWX*#A9sX7nzu>P9e*}L$ zb>k^2;;)JwzjY|LVG%W8Evvu4-^+>2MyC{BfBvG=K@_9I+?HlNFM`>smsL*$BfMcp z@XrejoZ!u322O$r+aD-mwh;&fq(i=71MyS|74Ih!}^*wuscgd71Vs{}9th-zCic%_-TG3<&2X zN@@|NJ8W^LCNA#n4>g8*mZ^(Xn!IKCJ7tqFeX#8)xDH5Ky<F~Qblo56R0zseN$m-1(}{#E!h2T2S3b)cz~zxtr9o*5NV zBDm|g(QL?YKH7iY=B`7K73aW!8kPz56%PNy`{1u-I7M;zUs9V9i}|01s8EXdUnLjj z+1y+=KL<1Utg{y8U}tK+Nais%2OH>eY-(nG(3ykT++2Kq!{+AV^BY4R-B#Scpt9Dj z74@$Y>s$TB{MQHkYs(osFYpWSTRdCf7t(zGTlei=`C;T&&+MK*KdM$_+CWcpa?$zG zf6xCos^r(nf9L$ly00ftET31TdHJyS|9z=sk)>+)zk1-;#7dm~8)f8Ga(`r#}~}+gCqd{JO^bN%F6*`rhiy?zc9#ZB|g=@Pw0n3J%?H$Fn47 zrJR^QmP~3%?O2k~l`!IKQ3V!iN%~>q&Q*Wld5+zvtVE66N}iQ@cH?S0_q$zHSAF?+ z*1xm<-ADwyyFu}>(!3rw3TSb5s>}b^^O?fwNK4o`pFnlCPe(!!RD3$3Ypi-`w@ybi gDm@)>-*!5J>I8l~&P-*-*caHlHvcES{@?ol8?)ZGqyPW_ literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Firion-HoxNorf-FF2.bin b/graphics/sprites/custom/Firion-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..54870e3d79bf354a178b52a5149d4377367cfd76 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Futo-HoxNorf-Touhou.bin b/graphics/sprites/custom/Futo-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..53a34ece104360d26878a23828b1a8171c8b0e18 GIT binary patch literal 5792 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 fljM+y8HL{p80{{MjL^ literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Gilius-JamesWhite89-GoldenAxe.bin b/graphics/sprites/custom/Gilius-JamesWhite89-GoldenAxe.bin new file mode 100644 index 0000000000000000000000000000000000000000..5cb1868b6432756d1eee76647a42078da383aaeb GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Granny-Zozma-FF6.bin b/graphics/sprites/custom/Granny-Zozma-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..bdf549bb98f057ae6d12836f479e06e08b4fd159 GIT binary patch literal 5792 zcmdT|Z)_XKm4C}!a#zxlyOL~iDgN6?wPjn5xUyw?B~c{N%cVXY$?y;<1s%$W0j^PBhHyx#z@(8LBCqP_^<6Hc;#jb()fKO+cn zDTX~0md(mcNmG@Ha?&L8rfJO-Wy`XqJoGdVcq42Z-3=$;BwXwbi6OEg7mcJ+L&+px zsSBIGeW)+t)!KmBshbLgPvu-~Y8%hqe*X_^2o3Qs|_UDr$ z*^AAmxsz}fE~9-f&=6`kAom`UJLN9i1`Tj-`o2i)--dZ8fB~~JPchr}4cM{&UN{Yt zAG6=D9%`xEe+~C>?rMGilauqwq=IZiBfDGJEj$`b1j8)hmu3CfqPyck0sAJLGWS{g ztecf;rEHRU(=1{u-LNZ`8Kv930<^%R_;o=i2(;k!QM?e_Y9%9Eu;4gUVM2e^Sj||5 zRnTQTDO?s7i1%s%R7zmDL_~_7E#$ms4GJHI3fghMVL4hcX|eB zM$Rm1<>HN;GXR;4rWNGn8BKz*D50#6RWm~Hv z_9`q%*JP_`Et_K?Vf5Ixxwf>AJqE{c=LaDIe)NT45Q&$hFz%kk4?f7?2mgbyvj!Eg z;7sfco@`_;vLcnmWe4jH^a;@!*+$=r-JR&mMKWJUZxvniF@6Y+aGiX}=c4yh;nr|C z6!Q68^eb?mxz^X0c~f`Mn-$BdE|h2IlR*eN`)z{&`0&6Qxkip_A|H0}{NC2_gB7@k zK6na!c|M6=pTyHIDMh&eP~$JoM_~`w;ji)Mrq(-#>b$8@8q}Fr+6w7 zmqNC~OCS2@9p-JO3bFxiphgg@Z3QU zx(U|+#-QSRqvcJdxbH?bJ2@$A5kbfx4!4bt{F4IsIs6#*KnLt{e87g(?bPkqJCPNx z;^q&RFY>nlK_Ni`X1n1HxT9}C!C02JC-EPKVakKNDvcb=3(s~;G^s+84Ri5$T1f(4 zA-E!oCzI1E#k^4wOPQQu=~@PFPsIX7RPfw%yfgk8e$9Q&f5|@uKY=M2R3|3JK0l`U z0S;joPiGun(QcQGsS75(x{ zA9>zD?tkJr@lsCKID>o1qpFjWspReXB%Kh`&v#r>1Pu!fY>N=5js$v|FY?X^8wdzgl#hvVq``z4bIek$ z4P#Z}MKW)ixtyZdMuoGj+kf%y7ykY6i}aV_CjA(lX3l0_&>qW#B~|^0{GiIfnyDJO zLe5x(walD0Z`hbL3&@G0WTmlb1HK5a!*Aff5SxlQTL3AX`!Xi9G=2m>RmNZ#$1jg` zTlhO!7H6a~=H3}RJl#PHel{G4&_O;J2nL)Hwy81TapQ*IFPf!XwzyWlr>?vD;V;BEyafdC!Cs7~VZ2AGV;jmtI0qkie)#FT>L}P_ zRv++I)v_)PNH9C=LQO#rdN_~3vC(2H`8bFFSMc0Oe7*?_xS|dDJjQ3T7NG#degpe) z`|J+;WWjpFg#HKG2Bdy()>!ePSHxHu&cNre%DTYQG|RGpzL`#?WI5*lZ+HVffVA;5 z`O@-D?Jdx6QojHelve*{+lZoM%;NrxAT+9Z@s*}{CW5hd>?*`EB9jL;N6q-Oj1|i z3P2!0Vg7l#JDYf&{uS==r|=wXz}JoMnY8BTW3g0fZVup?T=HIJVY_S(ctyAOZ@{*_2<;zBl;@VKAZ3WZwwN*g+f-E8*!>X6T42^xr42d zZ3RR6I~9yOUso_mwx=1h-!}djghYA={z4uLUpBsPY`IRq{ z^@)Bu!JHS)bLY0K-=BH?x&EUszBTwhnJ3m?lOI?Q#EWo+y5t>ad+0Rm#|r!@x>unT zR-q+|Z)+e6L zJhInOFRp&kA7JgiiRz{3@HaO%%)dNZtKJD3qCfsd`0(U+Pk-<9Z&+sp^~VYSv%Aj* zPvU-v{y1PI*8k=Hhxgw#$vn{?uN80Icvx9~|5^HyH-T4`TmK(z7CMDJZOy!}RsZw1 zj5CEQW-_<_AD^}stXIdT6>F>hSDu71tpCqCHwdX8dwSA`N&WBCznE_BKpWQo5ApXS zSeO_vF|n~k>VLewx6Xg(>HiV>wUy}CF3&UYCHMx+hr>>MwM(cS2R^6$?We1YD{|6& zFucis7h|~7C_C{rjB56?pS>PK{zFs9KhckmI{b$y4?NN#ch&Uc73AO5k2f9ub^SPZ zb(~psPQV~+BL2@f`ul26xPOcPn*I(Ewu%1!s;j@}O!AAm_s&B1Zj3))muC?E3Z9oI zT8aMkLA&JW??`*&y&DlTZ;l!(@HKdg=~i+Y}DvR-dT0`=jz*yO4a-%|8eZ?$Y7-JMxgtGL3*DQ|LtD# ze&Oa<68~Q3{ld+!NsRw&fxKV1`PGg8dVY1RZ7KLfuvS013O*im>&My-tCgx#@gO2c z!P^ykvE3WTdm{+lsGc4D>ct^cSH;_+_lzba;)b^dK;4Q3Uh|BSN1aop;vWmyK%e~$mMaXQRPTu<;|kgSjS zk8a|ydKTkYuQ}{1d1FHxFHRa{o>aiO3|6Cx4MUy?yYqf)LHrmI_-y1pgvN0aR7j^~y0>I>os-e2VX z>Hv3yQK8k-(NTN9S;D*fHVonYReQe@MPoSg_+L}x?W+EM)Z2SV!S|!>_`mR-^@E$3 zfotza-+5^q^h`beiTz|S(b6rR+_F!hH?+X+E&F6Y|G(RxmY=uw?g5Vn%PB0VY6Bjc zlvnP6uFFu64Fk1>+jOkcP3+@^0W|&}A3h22j0pcY4HSjS(1T8f!ZtqrjSR>cIiqAm zS(5jQ{$?;TCVrM|$#%2d{L!~zkNlTF^03?Vw0s#pst>er7{6iweh7YC7ywh{Z^cd6 zq&6r&>65pmbY#$ZTT0+t5qVpRN8)UpisMUBD*`l$4lCF>j0SuuLdZm&6|5Yp#AQqC zMDLCB0wm#ta#l&B_mX^pyP^l1R31DV@N2lnKI^$7&dPn6`);jjm7Da z2v2h!&bgT!IgG!=4yg>b$b3itIo@mki>s7j1}Eo}sZ{KG;4W%2o&4wj6Moau>|!ZL r-fA5Drm5jOO^&?Pd?J4B0bFOE@%^~vnuDLbjg5}K|Ni=WF8<#ERGz>H literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Gryz-HoxNorf-PS4.bin b/graphics/sprites/custom/Gryz-HoxNorf-PS4.bin new file mode 100644 index 0000000000000000000000000000000000000000..cad0c61c04dd0dc3d3523d866444131675191584 GIT binary patch literal 5792 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%0DpqvJ*Na^!k=J>{B=$qmv#m5 z*M<&hx3r%Xra3pYn6qHQ z9)D*3^_a6@!ndnfow}0UN#-n=@LR(El(JGkrOnX#G2{hz4)U)zzsbn!fs`BkWXJ;L}Ih&SsOx%=nNj{^D3|H`{cNPY|YTsyPk5?3%P=$nj9sUp>W*S+Mx{qwCHTs6MjjmMY_o7bzZ8Fh75UHEe?mGao~ z0*fstWKvD?uEYMh{*(UMhSo1WpAplMjcPMG4RAUlss4N>n2uaQV?NQCj^L1?s!RmU z>5^y{31cu_68+6Sb~iu8&j^cma5_Q;-so<`9YK?W>6kZP5;ueC7;(s9CRZu>(=l(p S#9QXWMQ=J5o-chl{r>|bF+eZJrK{k|Yc)JQTnM_4XIeQJOxh@Kj1z$bzyhg>p9Nr?UH zv=K^X$mO^}VBC zw=9@7SIH|fWyCSzoXl&pGRkS?)RO@z7zP57q@YC8LjXV!D***6R=GYp=?k{jK9WM?Y_EqGjR@ z5%S3qPb<7mUx=THpB-Et4>nS5QMyFS*`kxui4LC4IlVMMuH({6mP=>ZI0Hfj4AJVR zSDxtU+y8#om5ryBv;z71c6pCravKB6Hf8R(y!oxR>)oTD>%XEm_z7O7Q#2-=R;ZP} z;9cGfQiv3q&gr7=*J&1(E!e+~nu_+fF#eJzZV(e9tWFT^(h&WQ20i;XQ&fqnn~aTm zN=s23vjYmLx}-~*L<^`POXJFD?4sHjn&9L71hb$b>Y^KRA>E;|=0GH*pEE+9d>Gj_QN-&%M@StuKn;X_&|!}l}YS*t`pv!)V#?H%YXyApjrG4#>KIJbgUP+IGZ zGW0%$3p4e#nkXghqsg~(TRU6S-D;j&XBW_`8TR3ZZ6h6R1K6OS`EJPPBb^Z#`&QUU zqN7%?m9?^zwT8*aWXTdN*wgbJon$K7FWPu;evcOS%~J~Y^D+CWKED#MY|9?j*JTf9 zJCla%I?R5g8<`~R%Iv>DjjJkrsANAipfcH2G_7Di>{22oACyb>!*mVP#!L1q?cUAA zpAfyC;Y+)hh?pUB8t>`O8Zu#>l&;? zH%N`aaFKsZdoc(uP4bUwf>eplaw^efV1Lg|a8&rn5B{MAychO_=4LDyI!Wvl(K9)Q zE`uF#z&%iPsukk!ifQFN63v`^br6F#Qina+fhE}9uB12@k;2@n+T_xQTDKb!<~X2U zh?XM6>(vYGB;D*d{_(ZGzn+}n?{9;R$q`P;KUZGW`9#~Hynfld{A`-`(go|y9cj|5 zOh5c%Iki~99SDXu!k7KOz#iv}y#1<`r!eR5f;zAx2@r!8A)QOy{iy$d3}2YRdcsss zt8o@Ys19#TT|IFmF#xm<8%9q*KFkOiTGTKn(zE0bd-5Gu=_=wEbNrCDW?4s+;_!h6 z2dB*9?33Alp4`uWppOnFFrN{>-R95ehX%RZ-D#;6y0)ur^nj73ZYCfC$`kP{4&(+0 zkv|+|`02Ef!!taOElLISY`b_8d^5NPe{Dbwvgxd+hQ(2Q2tPJ#al>1QW0bSUH?VQD zc={ol(9&6J+eVk&5Wn7ipuRpNLH9OVmJk!Wsooa?DXzMyp;LqBQs+`?GHYfx-~^F- zwOAqr&o=FZ9rTBgdo)v8Tz}6V#9y>300@FZ9AI!+AZB|ur1d8yDw2Y3#1mh?o+W%H2rOKpOl zK@KEQ3z^lHq^+l&LFjz`#II95n^%YS@V97mz^22xYBpzZ1`N~D0YPFO1HcG*e!j$i z7JofgAUZpk(hbn16n_lTZ4W{*{&@1|RLY-ICZFj@u+R)~sTzj272du7{UCX<>C~a$ zG>|7ar5^lEKuHP(BFOIA)b?;^bjz~y-Jo=cBw4Hzq7(&NtV|YU88K4BtH!?+uieVP zWyuxvGx9is^eq|*yym-Py>1P4T`;?$DbfnFhk9ry<}xt*GZ*N=mZsxPYgfZQ@JXaK z=jma38*?3u7n(+oXiv=Ea`*f9m3r{k4>$4rMWr-N^aohghfl&3G@mAB~K`~LXDOVcOhiQ+_P7osJ|ev56*&pv&1;^^&2 zE|SJh5j~%>4<0omX2e5J^z5Na^mido$9n^P6DnKvAXeq5*X%P@lc-*5_m$_jo>!FT zw{DKg^IJrhiu`uRzzMT_d;kHkJpV1^n^P44gI!($5Y{WN0N6O|DOCV!AX=STaG>>* zeV5EnX#(u6r7EpO-pVrYZhA7A8JF9yoZNM7^Ci9w<1TWiey&SctMED$9UI+qxo5Ao z+RHwt!+-aHG#XQ~$l(3wzPjGWotVtO&%wMLQ<7LBa3}izzJ6(_HiGGS=@ljXKu?@D zZxa7iIp*Z&U!O}WWDAa0litzPB65`|i1Wnox{^gd}F95(i%)$RQzWCv88a6-b8d&G9836lA z_#dGs2nlS$q35WHf2F1NN40BeX$!^~{`2&EdXKVx*FS1*F*e286hm%?pRoLOxuA=( zBs25~O<(a}suyD;iYgd5wp<#cv$CiQuHd0B;QyxlpW*+e{GV}kioJL4e+|%GY!A^xW5&#@eh_+h6EnHbmbMGGd%HSl_{K&b+U zy?x~xu<>&LYkq#2v~T|2Xo`DG6?ZfWoxB5^47yR!C9iaqw2o)&*zw^IP zI23J;s|$Q9puW!wfz4oZKnW;I8(SM!gxkZ*i~MfH2^|K%J+gq`UUfBD-*y(Yo2qYf zsNc>SQ~YsonhM|#G6*l!F}}inoILFwVJ<~|1^d;&i`o4}q`00!LZWbk!Nx1>7l`|w zUO9DtAOU}%EWT##96fey>i)pR{7l*XL6Afy-K*YLA&+2qYQO?ky|WAexfk_nf>*tF z0yL98gcyPo*;66%J?m%Ge~3qmxW)b$MT8k%{=qCaS4$RU>}$GF%Ga|C9QUS$`JE!WL!|Z-d0@_o?cgg`jV%Z`u7(YQdH{Ta1T{ z14bO)6Tr2}9K>29U?36wHvbQK_gCND{~M|o&0O5DbVj%FOi_Lvm^))qJ~r(Cx_xte z{`ULDqVmXS{qRiBy}d3!_6cu=4%^lU|1#inq1mK?>lsFN3g9<9=8K$6(**MQkSzN_ zG7c1dDUu*9p(XT$tSQ<;xz-Esn95G4tS{@!{g&oy_ro1Z&5mma=@1F%DI^bU(xDG= z0S_N5uL?I5o=WU?=|g@D6+eq?NY2^ql8pxqUo?h)_KYPI57oiD3ixY_zRhBV7r*;E Yy?un@;Ov}T7cxTX|yYOJ+Ec)DZv8mYN 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 Klyc+$jsL%?&|5+P literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Hotaru-HoxNorf-MOTW.bin b/graphics/sprites/custom/Hotaru-HoxNorf-MOTW.bin new file mode 100644 index 0000000000000000000000000000000000000000..a44ac96412524934c272e7861857a293249ebe8c GIT binary patch literal 5792 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 ie>tH4kb@pr{*MjK273C|sULZ~Y literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Interceptor-JamesWhite89-FF6.bin b/graphics/sprites/custom/Interceptor-JamesWhite89-FF6.bin index bef4d9d5de9a0894b7ff8316fb64309d8fc81ad4..3dc8b4aa9b4e8f2f9071860c32abd9cf9b77c702 100644 GIT binary patch delta 1413 zcmb7EPly|36o22$H-D1MWG4Se(v6vH*QJYfHR&IA+ib|ROHnAgiztW|Hn>VJ;)Zt7 zRJ!I95w>{f#&_``Y?fZ?sr4Xuun_Um9!l4Xh^K%Q6ok%-((RI@zGQdfcoF>#Gw*xv zoA>v7?`uvrC)ZB1k;ZIENvf7=H9js8_g#ru$e6?0ILb!Z2+p!AGVS6$wjQhHn;>8n zeuNeP=wL$@Ka?Ei;f8cp-p<$Xf%FR7!ZUJ-mGL9Fu5B$}uro#q1AJ;+lPn%4y?sc) z_m>0e7+D_1t>6d>&WDlib5O*s|X{pSc@ zK6nWqCQFWBna8@l3Jzr6$SP{Qf9l2-Rz@OE(wBMJjv8p{zSG#ykTNqjk=zeR9`a*U|UNGKKkI5qx*#XjJ0J(A7)&rbND#Nz!#w+l(?fK0L z;WjqnS_P`Pht&?w1&*4>?IZS#nGU9dDp&DppfG3gjP4JH)3N#S)x=J<;}g6DZ~8cZ z52pWV(+Vcp2|N^Z*faQCaAB;Rxty;KG;}bC+K}7R|D*X^tMhy>`qbohE_-jHTX|T0H<1c)S8wCX#?$|;w8nX5poW%t zane#9qntUZr&t0k>ac#B>5zah1Zm|7udoo!5V@QX^P57@5cO5}@}Z$3$OMgG5nQ^)S`yIb-+PeG4a8>*8oZOh}p(T)bK!?(+gukTHYV*ugqjD~_^jye4UQkKJgP&Dvl= z1=gVo05a&%h_7=7Tg7GWDSkaWiCf&WYz?2_3#=dC3GI0PDSpm@|!d-0}tT&e3E z7Unvi!!0q#E@6k%!6tE38rhG0O&Vl9_^D*@57iIwd+Ei%S97I?l&0f&AlKExccn&r zwMdZkaR6JB?RYaVP2SGbZ$tKbn~|qeFY)Ex%ZDe*dfvCma^PCiPu$gw4&~G)C3_1e`K|{vn;Zm)R|TTY5R6E04n_ z;4^CPf4gDztmv6xM7!9hNp0$2@|fJr5};6{x!op10>TiYlVja3u4jMBPwCCp3asLX z+8V3(@+>ZgX9Bawj>=(4MkR8jOXNcT+PB}u$8aXnQ$E=FSLI$TfKH0{o|VzR$X-8P zDP~qnHqi9AcpnysrXj$IOkpBWBvBIt#sN>ch3WMrI&t9G6V*-g8_1oI@2J+9b7`p2 z1?S;ocpA#E2qNQ{$OSx~fSTUK-ob8tDAK03YQF06ypAl4eDp56k6%Uyf(K%`c&qHq zW$YD0WldZU9FT_;BitkbMV6_5n7RtS*A(>xU22;XIMYzjx3|*-+b$L>l@$WsX~^o1v%Os*IF3u_=kY;9 zwm0a3(M;441b6MTFg113L#48`gk$j`d@J5j=1BK%6=Gb0Sa;ykG$m|W)}Fxf1gl`V zVK~wisCL;M6h`0)0YW4aG0iHWNGK7G=Begtx@y%HYL-)Rs=vizZ*W&dF)waxw6wU+ zG^71S{*(DD&AZUzW>gq%Pa3IIN+o<&y*yvtt^GmkcW1}h$v*;|PK*Xt=Pr7GiCc*w MdbN$j6`y4APvu%Bg#Z8m diff --git a/graphics/sprites/custom/Josef-HoxNorf-FF2.bin b/graphics/sprites/custom/Josef-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..78e51689516aa42abb523133a9e2e3521ef0b563 GIT binary patch literal 5792 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 LsTdRk1N#39w>rM} literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.bin b/graphics/sprites/custom/Kain (Holy Dragoon)-CtrlxZ-FF4TAY.bin new file mode 100644 index 0000000000000000000000000000000000000000..c8d4681b9213b4ae92c1e9e0b888b1e8110ec637 GIT binary patch literal 5792 zcmdT|eQ*@z8UO9=X7_;ea#~CdIg+J_i3-Uf7!DH2^<&U!6>RM|AYY3p&>_GH0TPm2 zUUddLt<%Zqs9+T`t;6&WKRO)?Se>v{hG`kK)^;39V_0cT(UO<~21t&({@&fY%Z0W> z$I(u^@33U|y?39F_xJps=Xooz0?kp(=opttc z>@nN)%Rqj<_}M(@$A{2(nng1zCx<4}U}sKa+ri!you zQ2mDA2ph3rD4-~K2PaWUW1d7enlQk5JLH6%uoFr6qe5UV+PQD*cpt_Gu%QG{gD6T- z%~u?Y(8~Qgh{tgp89V|JwP6RWpcOO)dXVN599Vb&^^{Ke?kYaWM?hC0$KP?0BO~Rf zv*U;OGUss(zn;V~^z(HFXDDCMl&I3Ej8__zRwSkTB$i+sKb)ZsA}UM~5LKd5)Cew> zItvaP=RJ|0e0g^@c!bg=5LA>SRVY90Jxckl)a^I4{~SG_1gLLRPv{9v0fDuYdJW+{ z-jCCImGaSm0G)a^YX{AogKuCTeun+}3L*~N_8O&0i5JhGFxd~pxnLjO@ON_U#70ZengPVhMwJm5jhrj;Xn(I-iR6)Cv=&O!vmeEJurei+3v`nz2fB3L2 ze5UUxUSoVLpwkWyu37^fS1<+P@$p(*AV#hEOfg8+3v; zm0gF447E$NU&cKv)c*QQwC}q_dtKzUN6nb#s^wGj+LvLB8Jw(Twa2O0sRP~7*3P{4 zF&scttevM6E8{4$9J3?yR9ATo8j84O5xN_V;;cQ$_}NbXrNvo@+iX8)o*|qY7(>YU z?`nRbOu2Sq-hc9=N?7f~hYZFtZuT<+bpvUK{u4e)K^+9c08Uj*tPhtJ_%CdPHOkKW zZ%7QAuf{Kq`0r6{Abb2g=fD3I`z3yAwSbYgpZK944P7-x;e$Sv;gGivSc_R3e2|CvE!<_?mnq zcrC$@Jc&0~Uq=3r*)rO{rzEOJ{5x8^4`ZXX^Brgmw&-&;x%=a2y{=X&*U9J^M_|)> zsC}`wvf4G;gZ7Z=YL}pP4z26PDalUKA#$kXOZN|Xmly9#%v$qPGl?$ZZ?l~Owd*Bw zy+Nv)K?}22MLrAW-sG~N_dJpXbMv_@D6{55W12BfX*FaP^0Hf{h4i5b zPD>G{4mD-v^7E3cWhyD=rsAR_Glv{~c#C`BjOBtI#P2WN!Jiw9-fPIg^RY{L(cL#$ z2?P;SSL$EUgUmh4I9{Mjj@ZZe`yh^(uSc)4O6)^X&CH;=WRAYDX2pzpwVrzsr_ws~ z7=Nz9kDF5Qx5Xeb_ASoE?_Eq}L>wZO<}g za5Qqv0=D{P{E>a~^4<8mk=*ObmrjVGJzCHFEI6`Plv`BKMeW{m3TZ9EkNR@+z+cGD z=aD*uPl%>krs8GXk{VfGZ1YbED1pg(RA;T@j=Y`Q>xULA6X-r#-MB6I{SZ+w{&EkrEkU z3*mixIbM`y8i#vT<(b8+Z%3FVTi@oH#j9^en8mAao1B#BvPSA(Id2uzzo1tOI{+y( z$9HB@d_@mYv-c~Dly97RJkD1~7V``I#I9*m>{5XDOt_k;d3uMHw>Tm84n z{^QQTO2vAInojpk@;$}+x!Ik!Lm!7u$o^w&bcfJc)iIien4M&W{RUX|H@fxzEai4t z|F2-cCyB7l{C}A9too~jtpBHpn`Hg}pbK@IN|9ygJKnre&*0(XgM@)hC^{XIX4vuO zjTGaL-W-kI&$9orf0gLX?Z4Z<7VN**KaT7_`&Spe-u{2S_+7yKR~UUWE{VRig7_)u zzeVVJW3JI`?Dw^}`pf=1#ONb_BND%1b*Hn`+3objdtChXvi}65kNAyA{lj*$=vDlJ z`#QLGd2C~t31cehav=$?fxloine2R@xi^E2CEFu|Vb)L2asD)CYAAv8(*Ny|t&zV* z?yYN&HK= zSA zP5jFC!av|gztv%z(|vV@S2=t6?JD}ytDL?3Hh`DyE_=Pm`Jc6y8P`Pq{ARTMi~p(q z+E$#aud@9u>ut9?&-S--j71g8ro5Ecofy(ujd`j@L{9-5j3SmlEI5+*oj9$XBQo2Z zGu>w*N{6T-_n#z*_eNfi5dAAyTO4E+xlnhjuUV|BHsM};6}kjNyOlAymbFhC&yQF? zoM8Oy;Mvs)JS5MLCK#2a%Vr)dkYCF5HzHqt`kgMUE+g@&Ff8MuTj{W$XO9T2Ppy_O!hqA`3D6%K6?NF literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Knuckles-Jameswhite89-Sonic.bin b/graphics/sprites/custom/Knuckles-Jameswhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..cf3fdfd8f34a2b757df41d179027335cf9bdbe2a GIT binary patch literal 5792 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 VlSM`~vy2J8bN^?z`1Swe|DV9VI@9U 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Laguna-HoxNorf-FF8.bin b/graphics/sprites/custom/Laguna-HoxNorf-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..94dff1cb3bf881d922d54b33f4a4ffb1a077fa95 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Leila-HoxNorf-FF2.bin b/graphics/sprites/custom/Leila-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..4980ce47a998ceb1a42b644ca38b2110a901aba4 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lenna (Ranger)-HoxNorf-FF5.bin b/graphics/sprites/custom/Lenna (Ranger)-HoxNorf-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..551b45d59581a4f689e53142cb110f5c32c543ab GIT binary patch literal 5792 zcmdT|ZEPIn5q|c=yK8&zZqJULb?#y>Nt&3D*z4HXm*DtLG!3+%QV>d0>Lg1D5Kdx4by9c%otd>J^ zh;Kk0jJc+4%1l0A$3Di+_fNM@A9HhVE=4v&yr8kMPKOK@5>*xi%P|Ql8+;bb0;3NHW-gssTG#FDVgmk;~zrAK+@{42<-$Wpdx(o zD?7_|C&k)F^9dt%+#IEZZ+2P{nK*|>9qIXsYvsB%x_25ATl&;*kO zpd5jeAa{r}cz62V>0gNEPh6z^Mg+BwN!@yl z_L44?wa=hnUZAt2eHspOrfp(yt{x$Ed711Elhqp29z6Refdeian6M65Y1?$CNdE$~ ztf5)NBbWK{94h$9e1q7mwsU3tc!(TS4ki3R@=w za|mY>XA(1gGxU1UyB*3I3FJgE?eR0*D9JqIr~m#ixrVui940+%{l+@#9(N0=3pho2 zW;?NSo4wVh1fL@hcuemrS(t5BgHbrybWxJ6oLsWj#utc{mQ?_8u`uHGOwvaDJ@-od{q3;fN?5B@!u!Gn7{UvGMge}@~EZ;tGU49YFWHmv7wL=P^f zQ^pp(>(Ef@WxQ!W55tEXGnoJShy-_s5p#-A!Ym=R+Z@sqN5nxff=(`GBJTeS7@A zi6s6`(7WE5RoCjL3CCf1SlC^+D0Zhlyl}WTNlz}sH_!~-Sg7{`;@kF~>GwiR6&vJcjTkuF_`e zmcG-SFqyGHS*!g~yhrMkZ=~3dU@m$70cesYcjI;ZR5~r*C2gkq>7eo^J;-=7RjQwU zi~A$#$VxfMEpPo{|GJe)UPL!N&!I^)rInOLUvfXSXY6U*V(*;VGBvH=K^|~`guTeo zrwrZFBVjotwaLw58%sP)yetv^qQbNXM(x2u#yOO}#hk%;jDpN4I7q`}n_&W;{MACO z{N{js_6~NagiWv1=85p{K$Z0BrAa2sYwV9niI+-=Lr>1)A_7pRt@`ea7jj(ZLeJQSn^(X}~ok|N}dl#`rIriC_o2knX21bS7HeJ4Zd zhqps0epuwMe?)p({78C@F|3I9ywpXnsvbN-{G7(Y#_ApLil8*ZOK6Q0hc7L;_UK(l z**fh#v=d9l+-$4MUbhpcwQKCFoUZ&8bZvpf?{WMh^{DlzwLut(9G?G}GAi6IQ1$_O zRUv+>k`@f_3J;u^edrVW)x<9|v(_vvhx5F{?KKK`{5WVT3;q~$wQ_3n$@>4Vn?)8U$gpl#F=$x+-iM$8vmpkiR$Z8eLLdp zu^+X9>kraCSY4M0$FEcWlYVsxc|PA8S`qT~i&FIQRLO;))qDD-+TF=ix&A&)Ye$f( z=+`c@`qQufSp7{-E!Cf2uKxD*pC=A9j4a$y>0j!p{EZo%!W9&M<^JXPnzQzZ126tq z|I#V;*{8v@kBL?Nnf78p|4&o%-B*m`75#ZUi3I`uefc-xjWrK%d+xSpZ!6dDKfq>U z`_@wb^ny6BZ{^w-q&I(FmVXoFp*zrTk8!&Pwhb(cEomF7Z|5T5%pP2c7@`X819cE) zv1xkUbl=qZiO~ZYo5D-okEbYqjBB<=<**a}0{qf$qEbJz{>3xD;L@K|mVK1_4`+pI zzVf;K$3aB+$jMKNa;5+HxTgQ0ko=tfV;!Ey%hZ9e{^PUiZ(?7?|E&I}qsISvOjh(~ z^*T4UCr0_Z@j{l`nTtdOZTsfVk>3JzTud(7^}!eg*FeWnLvdc+u^Wi z>X19(o=Q(yTQE%PtbcVW|5_R)J<7jQip8JL-<@1W_W4udFLzmxzu$V>ZgG7F`uv?^ z?*r?;+oT|Wqm(79@wdU<;67#@Po2qKpJV;+gV;yROc9bfCB11#73+#Eiw%_d zO&xMufZrCm^HTk--@kr7e+WS@gK0FuxUX}UmvmVQVH1owG{HasK{mlCo4^n}Kog8U z(r}gB?#(Y){?dhLO@4jLrU-P0oO1r^w^;{Y&7VLyf>JB)Nv4wQ{l0wa!MiCeP_fXN zDe}d#d}cKTMKRdFnsl$Wf35A`KdXO^Q7v`{*5V=MS8M)+k2Kc*C9xVK#K!ITK91pJ zV!bh*o=iWL-|jq4;%%xQY}lrf8>DV(TH6(G2{%%|$vE7tf0HIS3Ryr0kysa~ccl$^ zl6H5$|C>jBFCCTsuQvWhOZ+X*j|`dB&8<{7FP<1$6PzEVaKxJ*E$5fXgMt06iT1a- zf&J}$oS^O`Q^CK1vhUUa{=xqDCUu~u|6NWd%nfws%sz#fQR&XfK7W3*VZo-J?JK*Y z9mEuC3imgFN7=AacGkc-?Tkq4jNECcXLg{FGK-Wxike}<+|8hP4Zc z4s{3H*o=$?d5Zo+q~5GvmPs|iw?W`J8f*FuGlAkd?1z^3W1FtoGv3oSebVt&^dF*J nOK+r%?oY>F#E?Hy3^t~}MVI&wW6|#k literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lenna (Time Mage)-HoxNorf-FF5.bin b/graphics/sprites/custom/Lenna (Time Mage)-HoxNorf-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..cf7044da3882c67890de6b9823b71d352a64c96a GIT binary patch literal 5792 zcmdT|e~c968GdGF+1a~WcIWtUw|9FSYf%tAU=g@mxV_s^DUg%~s|_jFc@e|}jKOW5`^&c|n-##zJ3-Xo4&2U`!=Bt5?U&-M z2V3>u;|l}et#%`>hhD^bbYr@7n>tUudF)E<$7S2c4pr8m5~HB_;D?H8?d~tpX05Pp zKK-We$)}g~9)7+YyU_(xLlhU$7kcxQrzhAm@q~IpU942V1FXVEw5dr|S3Dd+xfI%E z?XrdpHhh=wYQUw)JH~XQ9{bqM+n+@H>&9-VDYcJq!T!GeOHX$nEV6ImQ=A>1-PiPK z(@B+0UPt7SaZxp@s=AtzSJS>c+|bll-FMPr)0Yyt=T^Vvw=CHT=!aoJcjrGz``*-L zvsTY7vOfh)p-Ha&w|x8duQ+|`iBkK%*E{grjyKvLiN|ZV;V$1VCHl7m?NVF{@pZH# ziGIXzknRkaUcD*;`%XUw5XT98h{MQ~rIEmfF&)^7kNNUauIFeDg9vYTd>`-eS0Cc| zqAV_B0pA{*;2olQ=L>NHDUwSVJdq$C^9Sm7)+Z%lfa{}XomBFw&Lz`SRHQ4C&p^RQs#jk>xh~QCdG5*dm{HfZ=w0m~# zUx7m$*9RDQ69-VWB>GTOEErd32A6mfC?~(8D&MRQ!W&~ac!u;L!T+xF$sq>D7;p(M zF#kMzl1G0UPoV(~@#%UNPE&BBJW|9B);{lwFOq^1mkQzs?w7utrPYu!TXyHA-kdr>+h~8kXH;?F7F`JRZ zP~ux=NDpxlxD3VfzkhODv}FE)XnysoB7<5*e{+9+{=KNu8_mYJD&{{!p2&3<^XJk# z^Ov3Z4`N6EpxJD-Sm!za0U@s$Ghngd3f{eL{$IhL1cZeGKS+@3VtzRMOuY3@Pj4(2 zJ(m&-%te1IX2ftDo|MhcK-gQ%&j3O2viW&F`AqT^>osd2c~ws%qX&}Z$#TnQQ4$`& z^LQwMRyCm%{A=4ETkvnjYP71Xv~@uLjPr}r;i6f7y#eFcZ2lF{ollmc3na$}YrHPH zDzEUOw+J0jiY{Z7qC;PuTBimj)m91F@xMyi$!xIsXQj=InKsv%*Ko7&e;<0yI@52? zX8f7_&B*1(k=u9U$nCo-;P(07)*weU3M$~JMuEkSYPc-+r5x2Luvn-@lecZ=id+6t z`{%k{&Z-1v;wDe%t~#A47o zPGbn)2>+IfpKg5hk>TXiD=%zno0A}aHsTQ=sjO8}n1g)$9*7L?Z|;B2%E#|ws&59D z8Y@~y$CYjBW9nRGJR$oOzocktM2#ria)CiKTRW_4#uY{rJG(~>q6_A7{T=^5l}a1G?yu+{OpV}&;Ww#1NGGTc zCH|*6l=$D^tc(5MiA=HotAjOaSS_|MVhL1p$G(`da|OA&+<%KNaVvlIbFSR5i!a`? zaE+Nm2lJCbeNg{g=U34pfJd*=+i0te&vWQrG%RoA+VQJsRPJMP58wSvPkK^vRH;E7 zNB8pA&1kW|iyp9g|J_`*ouNzdH`@2)a`+MV80It~BTlk0T-<9STI9_YJ1g8i|Bvxa z@{I*GL*Scb=_rx#q;W=DXf&IF{tAoKVgRnkYk0>7x?K4( zczD7KJ~2m~2?u8RmAW4=&LiCY**!YtcYFSHa5yr|aTLDcP02mdUOtuWY2&4L-`@SK z_vOG}>wgnC<;^iA?U7SnJz&&Z0i6?UP^PP`%&*=2Hca`K^7%EwTg+iAXXn>WetU*F zAe{W#&TqGv9mX$`BL8-u@1}86ZIH`Zzc7t<>ZhbUims4{A}#%n|GM>i=y^=1>IwgO^)50% zck7SrvH`qaRDaxAQhyvmP!5`^UL6tq?`ONlz5e?8ql0&^%l|u;;t#mM`a|U3IYw_$ z{UP%I+{fI6O#(@AJf_QT{n5eLvAYY&CJ~_lJ|7VJ+ z{0>QM1%BVCzAdibzKTCC0*xma_xZLm{@n-`w^+d|j390RcD&dXyh%Zih#xo+ z6m#OIEW`aJ0k?imGe(N)_k8_&+>W1rt)Ih~t*lWNNPEhDHveV(LjyueOo>aIrFq;7 z?`N2Jvw>{gK&*eKb=mwxm}k{3V#jCInf2(?w$_ag++ICJn;NWQm2e+-ejnqFAB;Z@ zqIMm?6Z!hDmZt~yHB$dkZKcBgv6C-)qyXdCIX{}hx0PIHws+gkV~vILBi7Df?JUlZ zrpXOzyvYA!xWBRD7y8TdBXNFniq*-gy#LFozR4p0-zfib@+-IcnW6cJjUY#=AMLvM z-%xaZ6X7{fOmWX|-2Jok{03)FjVsk(ZGNf#{=4T#v+!so&##K?YpO>3jqvg^j124dk^0~mdYGm*V6jIjQ_ED9&=hA5ip*+Rme{eUlre?=qK8 pem?DV{}cT4@P!yb?9le6+a9bY#KLPv5YMKB5 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ness-Badass-Mother.bin b/graphics/sprites/custom/Ness-Badass-Mother.bin new file mode 100644 index 0000000000000000000000000000000000000000..9fc783a07ea3bb3eb6291a0bdc1d3db1f3ecc2b5 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Satori-HoxNorf-Touhou.bin b/graphics/sprites/custom/Satori-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..5d27caad4c56a973071882c4a261391504ab4c84 GIT binary patch literal 5792 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 RoiQ@tjHmm0QB+iT{{fuOl`sGR literal 0 HcmV?d00001 diff --git a/graphics/sprites/sprites.py b/graphics/sprites/sprites.py index b91333c6..477170ee 100644 --- a/graphics/sprites/sprites.py +++ b/graphics/sprites/sprites.py @@ -288,6 +288,15 @@ 333 : "Toadette (Explorer)-HoxNorf-Mario", 334 : "Blaze-HoxNorf-Sonic", 335 : "Xion-Kzinssie-KH", + 336 : "Tohka (Spirit)-HoxNorf-DAL", + 337 : "Satori-HoxNorf-Touhou", + 338 : "Lenna (Dancer)-HoxNorf-FF5", + 339 : "Lenna (Time Mage)-HoxNorf-FF5", + 340 : "Lenna (Ranger)-HoxNorf-FF5", + 341 : "Ness-Badass-Mother", + 342 : "Doom Guy-JamesWhite89-Doom", + 343 : "Cleon-HoxNorf-PB4", + 344 : "Koishi-HoxNorf-Touhou", } def get_path(id_): diff --git a/objectives/results/auto_clear.py b/objectives/results/auto_clear.py new file mode 100644 index 00000000..998333c9 --- /dev/null +++ b/objectives/results/auto_clear.py @@ -0,0 +1,14 @@ +from objectives.results._objective_result import * + +class Field(field_result.Result): + def src(self): + return [] + +class Battle(battle_result.Result): + def src(self): + return [] + +class Result(ObjectiveResult): + NAME = "Auto Clear" + def __init__(self): + super().__init__(Field, Battle) diff --git a/objectives/results/auto_dark.py b/objectives/results/auto_dark.py new file mode 100644 index 00000000..b74c2d2b --- /dev/null +++ b/objectives/results/auto_dark.py @@ -0,0 +1,14 @@ +from objectives.results._objective_result import * + +class Field(field_result.Result): + def src(self): + return [] + +class Battle(battle_result.Result): + def src(self): + return [] + +class Result(ObjectiveResult): + NAME = "Auto Dark" + def __init__(self): + super().__init__(Field, Battle) diff --git a/objectives/results/auto_imp.py b/objectives/results/auto_imp.py new file mode 100644 index 00000000..e52e0585 --- /dev/null +++ b/objectives/results/auto_imp.py @@ -0,0 +1,14 @@ +from objectives.results._objective_result import * + +class Field(field_result.Result): + def src(self): + return [] + +class Battle(battle_result.Result): + def src(self): + return [] + +class Result(ObjectiveResult): + NAME = "Auto Imp" + def __init__(self): + super().__init__(Field, Battle) diff --git a/version.py b/version.py index 67bc602a..9c73af26 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "1.3.0" +__version__ = "1.3.1" From c4c088d56c9cf98ee3cb848266f47ce9f185a178 Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Sat, 14 Oct 2023 11:19:46 -0600 Subject: [PATCH 3/6] 1.4.0 (#116) Feature: Added flags for tiered equipable equipment and tiered equipable relics (doubledown) Feature: Added flag to customize list of potential item rewards from checks (doubledown) Feature: Split esper spells flags into separate flags for spells and learn rate (doubledown) Feature: Throwable and Restoratives objectives (doubledown) Feature: IronMog Mode flag to prevent saving in seeds (asilverthorn) Feature: Added High Tier Weapon, High Tier Armor, High Tier Shld, High Tier Helm, and High Tier Relic as objective results (asilverthorn) QoL: Eliminated in-game RNG with fixed encounter - every runner will encounter the same enemies at the same fixed encounters (asilverthorn) QoL: Eliminated random fixed encounters on Lete River - now, Left/Right will always be 4 encounters, Straight will be 5. Going Up will add 2 encounters. (asilverthorn). Ref: Eliminating in-game RNG in fixed encounters #114 QoL: Reduced Poison pixelation (franklin) QoL: Add Mt. Zozo and Lone Wolf to No Free Characters/Espers (TheShwantz27) Bugfix: Fixed Relm's theme playing at the Owzer's Mansion if it's a different character (asilverthorn) Other: Removed the L. from "Remove L. Spells" in the flags menu to avoid confusion (asilverthorn) Other: Deprecated Random RNG (-rr) flag - it's always on (doubledown) Other: Deprecated Randomize Clock (-rc) flag - it's always on (doubledown) Other: Made Lone Wolf character reward play the character's theme and Updated Terra's theme to "Terra's Theme" from "Awakening" (asilverthorn) Other: Locke's Theme will continue to play through Narshe Moogle Defense non-boss battles (asilverthorn) Other: New Sprites and Portraits (HoxNorf) --- .gitignore | 3 +- README.md | 4 +- args/auction_house.py | 8 +- args/blitzes.py | 4 +- args/boss_ai.py | 8 +- args/bosses.py | 22 +- args/bug_fixes.py | 16 +- args/challenges.py | 41 +-- args/characters.py | 14 +- args/chests.py | 10 +- args/coliseum.py | 10 +- args/commands.py | 22 +- args/dances.py | 10 +- args/encounters.py | 16 +- args/espers.py | 76 ++++-- args/graphics.py | 20 +- args/items.py | 174 +++++++++--- args/lores.py | 12 +- args/misc.py | 26 +- args/misc_magic.py | 6 +- args/natural_magic.py | 14 +- args/objectives.py | 6 +- args/rages.py | 10 +- args/scaling.py | 26 +- args/settings.py | 8 +- args/shops.py | 26 +- args/sketch_control.py | 11 +- args/starting_gold_items.py | 15 +- args/starting_party.py | 6 +- args/steal.py | 6 +- args/swdtechs.py | 4 +- args/xpmpgp.py | 12 +- constants/items.py | 59 ++++ constants/objectives/results.py | 7 + constants/standard_flags.py | 251 ++++++++++++++++++ data/bosses.py | 5 + data/chests.py | 7 +- data/enemies.py | 14 - data/enemy_battle_groups.py | 4 + data/enemy_formation.py | 1 + data/enemy_packs.py | 35 ++- data/esper.py | 21 ++ data/espers.py | 31 ++- data/items.py | 72 +++-- data/map_events.py | 3 + data/map_exits.py | 8 +- data/maps.py | 13 + data/npcs.py | 5 +- data/text/text2.py | 2 +- event/burning_house.py | 26 ++ event/debug_room.py | 2 + event/event_reward.py | 9 + event/events.py | 2 +- event/floating_continent.py | 12 +- event/lete_river.py | 76 +++++- event/lone_wolf.py | 15 +- event/mt_zozo.py | 5 +- event/narshe_moogle_defense.py | 1 + event/opera_house_wob.py | 22 ++ event/owzer_mansion.py | 10 +- event/serpent_trench.py | 27 ++ event/zozo.py | 7 +- .../custom/Bartz (Knight)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../Daryl-IvaarForkbeard_Odbarc-FF6.pal | Bin 0 -> 32 bytes .../palettes/custom/Eirin-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../Lenna (Beastmaster)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Knight)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Summoner)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Thief)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Marth-HoxNorf-FE.pal | Bin 0 -> 32 bytes .../custom/Ridley-JamesWhite89-Metroid.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Riku-HoxNorf-KH.pal | Bin 0 -> 32 bytes .../palettes/custom/Samus-Badass-Metroid.pal | Bin 0 -> 32 bytes .../palettes/custom/Suika-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../palettes/custom/Yamame-HoxNorf-Touhou.pal | 1 + graphics/palettes/palettes.py | 13 + .../custom/Daryl-IvaarForkbeard-FF6.bin | Bin 0 -> 800 bytes .../custom/Daryl-IvaarForkbeard-FF6.pal | 1 + .../portraits/custom/Eirin-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Eirin-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../Lenna (Beastmaster)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../Lenna (Beastmaster)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../Lenna (Knight)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../Lenna (Knight)-JamesWhite89-FF5.pal | 1 + .../Lenna (Summoner)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../Lenna (Summoner)-JamesWhite89-FF5.pal | 1 + .../custom/Lenna (Thief)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../custom/Lenna (Thief)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../portraits/custom/Marth-HoxNorf-FE.bin | Bin 0 -> 800 bytes .../portraits/custom/Marth-HoxNorf-FE.pal | Bin 0 -> 32 bytes .../custom/Ridley-JamesWhite89-Metroid.bin | Bin 0 -> 800 bytes .../custom/Ridley-JamesWhite89-Metroid.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Riku-HoxNorf-KH.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Riku-HoxNorf-KH.pal | Bin 0 -> 32 bytes .../custom/Samus-Unknown-Metroid.bin | Bin 0 -> 800 bytes .../custom/Samus-Unknown-Metroid.pal | 1 + .../portraits/custom/Suika-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Suika-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Umaro (Morph)-CDude-FF6.bin | Bin 0 -> 800 bytes .../custom/Umaro (Morph)-CDude-FF6.pal | Bin 0 -> 32 bytes .../custom/Yamame-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../custom/Yamame-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes graphics/portraits/portraits.py | 13 + .../custom/Bartz (Knight)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../Daryl-IvaarForkbeard_Odbarc-FF6.bin | Bin 0 -> 5792 bytes .../sprites/custom/Eirin-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../Lenna (Beastmaster)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Knight)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Summoner)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Thief)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Marth-HoxNorf-FE.bin | Bin 0 -> 5792 bytes .../custom/Ridley-JamesWhite89-Metroid.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Riku-HoxNorf-KH.bin | Bin 0 -> 5792 bytes .../sprites/custom/Samus-Badass-Metroid.bin | Bin 0 -> 5792 bytes .../sprites/custom/Suika-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../sprites/custom/Yamame-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes graphics/sprites/sprites.py | 13 + log/format.py | 8 +- memory/free.py | 1 - menus/flags.py | 3 +- menus/flags_reward_items.py | 85 ++++++ music/song_utils.py | 2 +- objectives/results/high_tier_armor.py | 29 ++ objectives/results/high_tier_helm.py | 28 ++ objectives/results/high_tier_relic.py | 28 ++ objectives/results/high_tier_shield.py | 28 ++ objectives/results/high_tier_weapon.py | 28 ++ objectives/results/restoratives.py | 37 +++ objectives/results/throwables.py | 36 +++ settings/__init__.py | 2 + settings/less_poison_blur.py | 27 ++ settings/random_rng.py | 3 +- utils/intersection.py | 5 + version.py | 2 +- 134 files changed, 1439 insertions(+), 355 deletions(-) create mode 100644 constants/standard_flags.py create mode 100644 graphics/palettes/custom/Bartz (Knight)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Daryl-IvaarForkbeard_Odbarc-FF6.pal create mode 100644 graphics/palettes/custom/Eirin-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Lenna (Beastmaster)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Lenna (Knight)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Lenna (Summoner)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Lenna (Thief)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Marth-HoxNorf-FE.pal create mode 100644 graphics/palettes/custom/Ridley-JamesWhite89-Metroid.pal create mode 100644 graphics/palettes/custom/Riku-HoxNorf-KH.pal create mode 100644 graphics/palettes/custom/Samus-Badass-Metroid.pal create mode 100644 graphics/palettes/custom/Suika-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Yamame-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Daryl-IvaarForkbeard-FF6.bin create mode 100644 graphics/portraits/custom/Daryl-IvaarForkbeard-FF6.pal create mode 100644 graphics/portraits/custom/Eirin-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Eirin-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Lenna (Beastmaster)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Beastmaster)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna (Knight)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Knight)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna (Thief)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Thief)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Marth-HoxNorf-FE.bin create mode 100644 graphics/portraits/custom/Marth-HoxNorf-FE.pal create mode 100644 graphics/portraits/custom/Ridley-JamesWhite89-Metroid.bin create mode 100644 graphics/portraits/custom/Ridley-JamesWhite89-Metroid.pal create mode 100644 graphics/portraits/custom/Riku-HoxNorf-KH.bin create mode 100644 graphics/portraits/custom/Riku-HoxNorf-KH.pal create mode 100644 graphics/portraits/custom/Samus-Unknown-Metroid.bin create mode 100644 graphics/portraits/custom/Samus-Unknown-Metroid.pal create mode 100644 graphics/portraits/custom/Suika-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Suika-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Umaro (Morph)-CDude-FF6.bin create mode 100644 graphics/portraits/custom/Umaro (Morph)-CDude-FF6.pal create mode 100644 graphics/portraits/custom/Yamame-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Yamame-HoxNorf-Touhou.pal create mode 100644 graphics/sprites/custom/Bartz (Knight)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Daryl-IvaarForkbeard_Odbarc-FF6.bin create mode 100644 graphics/sprites/custom/Eirin-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Lenna (Beastmaster)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Lenna (Knight)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Lenna (Summoner)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Lenna (Thief)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Marth-HoxNorf-FE.bin create mode 100644 graphics/sprites/custom/Ridley-JamesWhite89-Metroid.bin create mode 100644 graphics/sprites/custom/Riku-HoxNorf-KH.bin create mode 100644 graphics/sprites/custom/Samus-Badass-Metroid.bin create mode 100644 graphics/sprites/custom/Suika-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Yamame-HoxNorf-Touhou.bin create mode 100644 menus/flags_reward_items.py create mode 100644 objectives/results/high_tier_armor.py create mode 100644 objectives/results/high_tier_helm.py create mode 100644 objectives/results/high_tier_relic.py create mode 100644 objectives/results/high_tier_shield.py create mode 100644 objectives/results/high_tier_weapon.py create mode 100644 objectives/results/restoratives.py create mode 100644 objectives/results/throwables.py create mode 100644 settings/less_poison_blur.py create mode 100644 utils/intersection.py diff --git a/.gitignore b/.gitignore index 7eaa21a1..eaa59db1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ __pycache__/ *.py[cod] $py.class *-objective.json -*-flag.json \ No newline at end of file +*-flag.json +wip/ \ No newline at end of file diff --git a/README.md b/README.md index c126f7fc..24a8aa70 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ Complete objectives while searching the worlds for characters, espers, and items ## Links -###### Start playing: [ff6wc.com](https://www.ff6wc.com) -###### More Info: [wiki.ff6wc.com](https://wiki.ff6wc.com) +###### Start playing: [ff6worldscollide.com](https://www.ff6worldscollide.com) +###### More Info: [wiki.ff6worldscollide.com](https://wiki.ff6worldscollide.com) ###### Community: [discord](https://discord.gg/5MPeng5) ## Usage diff --git a/args/auction_house.py b/args/auction_house.py index 8df8b3ff..562398ba 100644 --- a/args/auction_house.py +++ b/args/auction_house.py @@ -31,10 +31,10 @@ def flags(args): def options(args): return [ - ("Randomize Items", args.auction_random_items), - ("No Chocobo/Airship", args.auction_no_chocobo_airship), - ("Door Esper Hint", args.auction_door_esper_hint), - ("Max Espers", args.auction_max_espers), + ("Randomize Items", args.auction_random_items, "auction_random_items"), + ("No Chocobo/Airship", args.auction_no_chocobo_airship, "auction_no_chocobo_airship"), + ("Door Esper Hint", args.auction_door_esper_hint, "auction_door_esper_hint"), + ("Max Espers", args.auction_max_espers, "auction_max_espers"), ] def menu(args): diff --git a/args/blitzes.py b/args/blitzes.py index 52660c78..f537c0fd 100644 --- a/args/blitzes.py +++ b/args/blitzes.py @@ -24,8 +24,8 @@ def flags(args): def options(args): return [ - ("Bum Rush Last", args.bum_rush_last), - ("Everyone Learns", args.blitzes_everyone_learns), + ("Bum Rush Last", args.bum_rush_last, "bum_rush_last"), + ("Everyone Learns", args.blitzes_everyone_learns, "blitzes_everyone_learns"), ] def menu(args): diff --git a/args/boss_ai.py b/args/boss_ai.py index d5fdb0a1..cbafc86d 100644 --- a/args/boss_ai.py +++ b/args/boss_ai.py @@ -31,10 +31,10 @@ def flags(args): def options(args): return [ - ("Doom Gaze No Escape", args.doom_gaze_no_escape), - ("Wrexsoul No Zinger", args.wrexsoul_no_zinger), - ("MagiMaster No Ultima", args.magimaster_no_ultima), - ("Chadarnook More Demon", args.chadarnook_more_demon), + ("Doom Gaze No Escape", args.doom_gaze_no_escape, "doom_gaze_no_escape"), + ("Wrexsoul No Zinger", args.wrexsoul_no_zinger, "wrexsoul_no_zinger"), + ("MagiMaster No Ultima", args.magimaster_no_ultima, "magimaster_no_ultima"), + ("Chadarnook More Demon", args.chadarnook_more_demon, "chadarnook_more_demon"), ] def menu(args): diff --git a/args/bosses.py b/args/bosses.py index 9a287fd7..2854fc1c 100644 --- a/args/bosses.py +++ b/args/bosses.py @@ -92,25 +92,25 @@ def options(args): statue_battles = args.statue_boss_location.capitalize() return [ - ("Boss Battles", boss_battles), - ("Dragons", dragon_battles), - ("Statues", statue_battles), - ("Shuffle/Random Phunbaba 3", args.shuffle_random_phunbaba3), - ("Normalize & Distort Stats", args.boss_normalize_distort_stats), - ("Boss Experience", args.boss_experience), - ("No Undead", args.boss_no_undead), - ("Marshal Keep Lobos", args.boss_marshal_keep_lobos), + ("Boss Battles", boss_battles, "boss_battles"), + ("Dragons", dragon_battles, "dragon_battles"), + ("Statues", statue_battles, "statue_battles"), + ("Shuffle/Random Phunbaba 3", args.shuffle_random_phunbaba3, "shuffle_random_phunbaba3"), + ("Normalize & Distort Stats", args.boss_normalize_distort_stats, "boss_normalize_distort_stats"), + ("Boss Experience", args.boss_experience, "boss_experience"), + ("No Undead", args.boss_no_undead, "boss_no_undead"), + ("Marshal Keep Lobos", args.boss_marshal_keep_lobos, "boss_marshal_keep_lobos"), ] def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry if key == "Shuffle/Random Phunbaba 3": - entries[index] = ("Mix Phunbaba 3", value) + entries[index] = ("Mix Phunbaba 3", value, unique_name) elif key == "Normalize & Distort Stats": - entries[index] = ("Normalize & Distort", value) + entries[index] = ("Normalize & Distort", value, unique_name) return (name(), entries) def log(args): diff --git a/args/bug_fixes.py b/args/bug_fixes.py index 3fcccc28..80b5e85e 100644 --- a/args/bug_fixes.py +++ b/args/bug_fixes.py @@ -47,14 +47,14 @@ def flags(args): def options(args): return [ - ("Sketch", args.fix_sketch), - ("Evade", args.fix_evade), - ("Vanish/Doom", args.fix_vanish_doom), - ("Retort", args.fix_retort), - ("Jump", args.fix_jump), - ("Boss Skip", args.fix_boss_skip), - ("Enemy Damage Counter", args.fix_enemy_damage_counter), - ("Capture", args.fix_capture), + ("Sketch", args.fix_sketch, "fix_sketch"), + ("Evade", args.fix_evade, "fix_evade"), + ("Vanish/Doom", args.fix_vanish_doom, "fix_vanish_doom"), + ("Retort", args.fix_retort, "fix_retort"), + ("Jump", args.fix_jump, "fix_jump"), + ("Boss Skip", args.fix_boss_skip, "fix_boss_skip"), + ("Enemy Damage Counter", args.fix_enemy_damage_counter, "fix_enemy_damage_counter"), + ("Capture", args.fix_capture, "fix_capture"), ] def menu(args): diff --git a/args/challenges.py b/args/challenges.py index fd2e6a94..046e7c71 100644 --- a/args/challenges.py +++ b/args/challenges.py @@ -24,6 +24,8 @@ def parse(parser): help = "Life spells cannot be learned. Fenix Downs unavailable (except from starting items). Buckets/inns/tents/events do not revive characters. Phoenix casts Life 3 on party instead of Life") challenges.add_argument("-rls", "--remove-learnable-spells", type = str, help = "Remove spells from learnable sources: Items, Espers, Natural Magic, and Objectives") + challenges.add_argument("-nosaves", "--no-saves", action = "store_true", + help = "Ironmog Mode: You cannot save (but save points still work for Tents/Sleeping Bags)") def process(args): from constants.spells import black_magic_ids, white_magic_ids, gray_magic_ids, spell_id @@ -89,6 +91,8 @@ def flags(args): flags += " -pd" if args.remove_learnable_spells: flags += f" -rls {args.remove_learnable_spells}" + if args.no_saves: + flags += " -nosaves" return flags @@ -100,23 +104,24 @@ def options(args): ultima = "254 MP" return [ - ("No Moogle Charms", args.no_moogle_charms), - ("No Exp Eggs", args.no_exp_eggs), - ("No Illuminas", args.no_illuminas), - ("No Sprint Shoes", args.no_sprint_shoes), - ("No Free Paladin Shields", args.no_free_paladin_shields), - ("No Free Characters/Espers", args.no_free_characters_espers), - ("Permadeath", args.permadeath), - ("Ultima", ultima), - ("Remove Learnable Spells", args.remove_learnable_spell_ids), + ("No Moogle Charms", args.no_moogle_charms, "no_moogle_charms"), + ("No Exp Eggs", args.no_exp_eggs, "no_exp_eggs"), + ("No Illuminas", args.no_illuminas, "no_illuminas"), + ("No Sprint Shoes", args.no_sprint_shoes, "no_sprint_shoes"), + ("No Free Paladin Shields", args.no_free_paladin_shields, "no_free_paladin_shields"), + ("No Free Characters/Espers", args.no_free_characters_espers, "no_free_characters_espers"), + ("Permadeath", args.permadeath, "permadeath"), + ("Ultima", ultima, "ultima"), + ("Remove Learnable Spells", args.remove_learnable_spell_ids, "remove_learnable_spell_ids"), + ("No Saves", args.no_saves, "no_saves"), ] return opts def _format_spells_log_entries(spell_ids): from constants.spells import id_spell spell_entries = [] - for spell_id in spell_ids: - spell_entries.append(("", id_spell[spell_id])) + for i, spell_id in enumerate(spell_ids): + spell_entries.append(("", id_spell[spell_id], f"rls_{i}")) return spell_entries def _format_spells_log_entries(spell_ids): @@ -131,13 +136,13 @@ def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry if key == "No Free Paladin Shields": - entries[index] = ("No Free Paladin Shlds", entry[1]) + entries[index] = ("No Free Paladin Shlds", entry[1], unique_name) elif key == "No Free Characters/Espers": - entries[index] = ("No Free Chars/Espers", entry[1]) + entries[index] = ("No Free Chars/Espers", entry[1], unique_name) elif key == "Remove Learnable Spells": - entries[index] = ("Remove L. Spells", FlagsRemoveLearnableSpells(value)) # flags sub-menu + entries[index] = ("Remove Spells", FlagsRemoveLearnableSpells(value), unique_name) # flags sub-menu return (name(), entries) @@ -147,12 +152,12 @@ def log(args): entries = options(args) for entry in entries: - key, value = entry + key, value, unique_name = entry if key == "Remove Learnable Spells": if len(value) == 0: - entry = (key, "None") + entry = (key, "None", unique_name) else: - entry = (key, "") # The entries will show up on subsequent lines + entry = (key, "", unique_name) # The entries will show up on subsequent lines log.append(format_option(*entry)) for spell_entry in _format_spells_log_entries(value): log.append(format_option(*spell_entry)) diff --git a/args/characters.py b/args/characters.py index 4cb482fa..40c788ac 100644 --- a/args/characters.py +++ b/args/characters.py @@ -39,19 +39,19 @@ def options(args): character_stats = f"{args.character_stat_random_percent_min}-{args.character_stat_random_percent_max}%" return [ - ("Start Average Level", args.start_average_level), - ("Start Level", args.start_level), - ("Start Naked", args.start_naked), - ("Equipable Umaro", args.equipable_umaro), - ("Character Stats", character_stats), + ("Start Average Level", args.start_average_level, "start_average_level"), + ("Start Level", args.start_level, "start_level"), + ("Start Naked", args.start_naked, "start_naked"), + ("Equipable Umaro", args.equipable_umaro, "equipable_umaro"), + ("Character Stats", character_stats, "character_stats"), ] def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry if key == "Character Stats": - entries[index] = ("Stats", entry[1]) + entries[index] = ("Stats", entry[1], unique_name) return (name(), entries) def log(args): diff --git a/args/chests.py b/args/chests.py index 8d581a8b..a366c74e 100644 --- a/args/chests.py +++ b/args/chests.py @@ -63,15 +63,15 @@ def options(args): elif args.chest_contents_empty: contents_value = "Empty" - result.append(("Contents", contents_value)) + result.append(("Contents", contents_value, "contents_value")) if args.chest_contents_shuffle_random: - result.append(("Random Percent", f"{args.chest_contents_shuffle_random_percent}%")) + result.append(("Random Percent", f"{args.chest_contents_shuffle_random_percent}%", "chest_contents_shuffle_random_percent")) if args.chest_random_monsters: - result.append(("MIAB Percent", f"{args.chest_random_monsters_enemy}%")) - result.append((" Boss Percent", f"{args.chest_random_monsters_boss}%")) + result.append(("MIAB Percent", f"{args.chest_random_monsters_enemy}%", "chest_random_monsters_enemy")) + result.append((" Boss Percent", f"{args.chest_random_monsters_boss}%", "chest_random_monsters_boss")) - result.append(("MIAB Shuffled", args.chest_monsters_shuffle)) + result.append(("MIAB Shuffled", args.chest_monsters_shuffle, "chest_monsters_shuffle")) return result diff --git a/args/coliseum.py b/args/coliseum.py index 2d5180f9..9fe9ce27 100644 --- a/args/coliseum.py +++ b/args/coliseum.py @@ -80,11 +80,11 @@ def options(args): rewards_visible = f"{args.coliseum_rewards_visible_random_min}-{args.coliseum_rewards_visible_random_max}" return [ - ("Opponents", opponents), - ("Rewards", rewards), - ("Rewards Visible", rewards_visible), - ("No Exp. Eggs", args.coliseum_no_exp_eggs), - ("No Illuminas", args.coliseum_no_illuminas), + ("Opponents", opponents, "opponents"), + ("Rewards", rewards, "rewards"), + ("Rewards Visible", rewards_visible, "rewards_visible"), + ("No Exp. Eggs", args.coliseum_no_exp_eggs, "coliseum_no_exp_eggs"), + ("No Illuminas", args.coliseum_no_illuminas, "coliseum_no_illuminas"), ] def menu(args): diff --git a/args/commands.py b/args/commands.py index 9fe525da..49535e7a 100644 --- a/args/commands.py +++ b/args/commands.py @@ -79,22 +79,22 @@ def options(args): result = [] if args.commands is not None: for index, command_string in enumerate(args.command_strings): - result.append((COMMAND_OPTIONS[index], command_string)) + result.append((COMMAND_OPTIONS[index], command_string, COMMAND_OPTIONS[index])) else: for option in COMMAND_OPTIONS: - result.append((option, option)) + result.append((option, option, option)) - result.append(("", "")) - result.append(("Shuffle Commands", args.shuffle_commands)) + result.append(("", "", "")) + result.append(("Shuffle Commands", args.shuffle_commands, "shuffle_commands")) - add_exclude_command = lambda command : result.append(("Random Exclude", "None" if command == NONE_COMMAND else id_name[command])) + add_exclude_command = lambda command, i : result.append(("Random Exclude", "None" if command == NONE_COMMAND else id_name[command], f"random_exclude_command{i}")) - add_exclude_command(args.random_exclude_command1) - add_exclude_command(args.random_exclude_command2) - add_exclude_command(args.random_exclude_command3) - add_exclude_command(args.random_exclude_command4) - add_exclude_command(args.random_exclude_command5) - add_exclude_command(args.random_exclude_command6) + add_exclude_command(args.random_exclude_command1, 1) + add_exclude_command(args.random_exclude_command2, 2) + add_exclude_command(args.random_exclude_command3, 3) + add_exclude_command(args.random_exclude_command4, 4) + add_exclude_command(args.random_exclude_command5, 5) + add_exclude_command(args.random_exclude_command6, 6) return result diff --git a/args/dances.py b/args/dances.py index 1bbce5e7..904b8f7f 100644 --- a/args/dances.py +++ b/args/dances.py @@ -48,11 +48,11 @@ def options(args): start_dances = f"Random {args.start_dances_random_min}-{args.start_dances_random_max}" return [ - ("Start Dances", start_dances), - ("Shuffle Abilities", args.dances_shuffle), - ("Display Abilities", args.dances_display_abilities), - ("No Stumble", args.dances_no_stumble), - ("Everyone Learns", args.dances_everyone_learns), + ("Start Dances", start_dances, "start_dances"), + ("Shuffle Abilities", args.dances_shuffle, "dances_shuffle"), + ("Display Abilities", args.dances_display_abilities, "dances_display_abilities"), + ("No Stumble", args.dances_no_stumble, "dances_no_stumble"), + ("Everyone Learns", args.dances_everyone_learns, "dances_everyone_learns"), ] def menu(args): diff --git a/args/encounters.py b/args/encounters.py index c8d3a91d..2f3d6c41 100644 --- a/args/encounters.py +++ b/args/encounters.py @@ -57,33 +57,33 @@ def options(args): elif args.random_encounters_chupon: random_encounters = "Chupon" - result.append(("Random Encounters", random_encounters)) + result.append(("Random Encounters", random_encounters, "random_encounters")) if args.random_encounters_random is not None: - result.append(("Boss Percent", f"{args.random_encounters_random}%")) + result.append(("Boss Percent", f"{args.random_encounters_random}%", "random_encounters_random")) fixed_encounters = "Original" if args.fixed_encounters_random is not None: fixed_encounters = "Random" - result.append(("Fixed Encounters", fixed_encounters)) + result.append(("Fixed Encounters", fixed_encounters, "fixed_encounters")) if args.fixed_encounters_random is not None: - result.append(("Boss Percent", f"{args.fixed_encounters_random}%")) + result.append(("Boss Percent", f"{args.fixed_encounters_random}%", "fixed_encounters_random")) escapable = "Original" if args.encounters_escapable_random is not None: escapable = f"{args.encounters_escapable_random}%" - result.append(("Escapable", escapable)) + result.append(("Escapable", escapable, "escapable")) return result def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry if key == "Random Encounters": - entries[index] = ("Random", value) + entries[index] = ("Random", value, unique_name) elif key == "Fixed Encounters": - entries[index] = ("Fixed", value) + entries[index] = ("Fixed", value, unique_name) return (name(), entries) def log(args): diff --git a/args/espers.py b/args/espers.py index d1e0a15b..eb10d0d7 100644 --- a/args/espers.py +++ b/args/espers.py @@ -17,22 +17,28 @@ def parse(parser): esper_start = espers.add_mutually_exclusive_group() esper_start.add_argument("-stesp", "--starting-espers", default = [0, 0], type = int, - nargs = 2, metavar = ("MIN", "MAX"), choices = range(MAX_STARTING_ESPERS + 1), - help = "Party starts with %(metavar) random espers") + nargs = 2, metavar = ("MIN", "MAX"), choices = range(MAX_STARTING_ESPERS + 1), + help = "Party starts with %(metavar) random espers") esper_spells = espers.add_mutually_exclusive_group() esper_spells.add_argument("-esrr", "--esper-spells-random-rates", action = "store_true", - help = "Original esper spells with random learn rates") + help = "(DEPRECATED) Original esper spells with random learn rates") esper_spells.add_argument("-ess", "--esper-spells-shuffle", action = "store_true", - help = "Esper spells shuffled with original learn rates") + help = "Esper spells shuffled") esper_spells.add_argument("-essrr", "--esper-spells-shuffle-random-rates", action = "store_true", - help = "Esper spells shuffled with random learn rates") + help = "(DEPRECATED) Esper spells shuffled with random learn rates") esper_spells.add_argument("-esr", "--esper-spells-random", default = None, type = int, nargs = 2, metavar = ("MIN", "MAX"), choices = range(Esper.SPELL_COUNT + 1), - help = "Esper spells and learn rates randomized") + help = "Esper spells randomized") esper_spells.add_argument("-esrt", "--esper-spells-random-tiered", action = "store_true", - help = "Esper spells and learn rates randomized by tier") + help = "Esper spells randomized by tier") + + esper_learnrates = espers.add_mutually_exclusive_group() + esper_learnrates.add_argument("-elr", "--esper-learnrates-random", action = "store_true", + help = "Esper learn rates randomized") + esper_learnrates.add_argument("-elrt", "--esper-learnrates-random-tiered", action="store_true", + help="Esper learn rates randomized by tier") esper_bonuses = espers.add_mutually_exclusive_group() esper_bonuses.add_argument("-ebs", "--esper-bonuses-shuffle", action = "store_true", @@ -74,6 +80,18 @@ def process(args): args._process_min_max("esper_mp_random_percent") args._process_min_max("esper_equipable_random") + # Forces random learnrates if espers are not original/shuffled and learnrates are not set to tiered + randomized_espers = args.esper_spells_random or args.esper_spells_random_tiered + if randomized_espers and args.esper_learnrates_random_tiered != True: + args.esper_learnrates_random = True + + # Converts deprecated combined esper/learnrate flags to separate args + if args.esper_spells_random_rates: + args.esper_learnrates_random = True + elif args.esper_spells_shuffle_random_rates: + args.esper_spells_shuffle = True + args.esper_learnrates_random = True + if args.esper_bonuses_random is not None: args.esper_bonuses_random_percent = args.esper_bonuses_random args.esper_bonuses_random = True @@ -88,17 +106,18 @@ def flags(args): if args.starting_espers_min or args.starting_espers_max: flags += f" -stesp {args.starting_espers_min} {args.starting_espers_max}" - if args.esper_spells_random_rates: - flags += " -esrr" - elif args.esper_spells_shuffle: + if args.esper_spells_shuffle: flags += " -ess" - elif args.esper_spells_shuffle_random_rates: - flags += " -essrr" elif args.esper_spells_random: flags += f" -esr {args.esper_spells_random_min} {args.esper_spells_random_max}" elif args.esper_spells_random_tiered: flags += " -esrt" + if args.esper_learnrates_random: + flags += " -elr" + elif args.esper_learnrates_random_tiered: + flags += " -elrt" + if args.esper_bonuses_shuffle: flags += " -ebs" elif args.esper_bonuses_random: @@ -126,17 +145,19 @@ def flags(args): def options(args): spells = "Original" - if args.esper_spells_random_rates: - spells = "Original (Random Rates)" - elif args.esper_spells_shuffle: + if args.esper_spells_shuffle: spells = "Shuffle" - elif args.esper_spells_shuffle_random_rates: - spells = "Shuffle (Random Rates)" elif args.esper_spells_random: spells = f"Random {args.esper_spells_random_min}-{args.esper_spells_random_max}" elif args.esper_spells_random_tiered: spells = "Random Tiered" + learnrates = "Original" + if args.esper_learnrates_random: + learnrates = "Random" + elif args.esper_learnrates_random_tiered: + learnrates = "Random Tiered" + bonuses = "Original" if args.esper_bonuses_shuffle: bonuses = "Shuffle" @@ -158,21 +179,22 @@ def options(args): equipable = f"Balanced Random {args.esper_equipable_balanced_random_value}" result = [] - result.append(("Starting Espers", f"{args.starting_espers_min}-{args.starting_espers_max}")) - result.append(("Spells", spells)) - result.append(("Bonuses", bonuses)) + result.append(("Starting Espers", f"{args.starting_espers_min}-{args.starting_espers_max}", "starting_espers")) + result.append(("Spells", spells, "spells")) + result.append(("Rates", learnrates, "esper_learn_rates")) + result.append(("Bonuses", bonuses, "bonuses")) if args.esper_bonuses_random: - result.append(("Bonus Chance", f"{args.esper_bonuses_random_percent}%")) - result.append(("MP", mp)) - result.append(("Equipable", equipable)) - result.append(("Multi Summon", args.esper_multi_summon)) - result.append(("Mastered Icon", args.esper_mastered_icon)) + result.append(("Bonus Chance", f"{args.esper_bonuses_random_percent}%", "esper_bonus_chance")) + result.append(("MP", mp, "esper_mp")) + result.append(("Equipable", equipable, "esper_equipable")) + result.append(("Multi Summon", args.esper_multi_summon, "esper_multi_summon")) + result.append(("Mastered Icon", args.esper_mastered_icon, "esper_mastered_icon")) return result def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry try: value = value.replace("Original (Random Rates)", "Random Rates") value = value.replace("Shuffle (Random Rates)", "Shuffle R Rates") @@ -181,7 +203,7 @@ def menu(args): value = value.replace("Balanced Random", "Balanced") if key == "Equipable": value = value.replace("Random", "") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) except: pass return (name(), entries) diff --git a/args/graphics.py b/args/graphics.py index deb39926..7f3f7b13 100644 --- a/args/graphics.py +++ b/args/graphics.py @@ -132,7 +132,7 @@ def _sprite_palettes_log(args): log = ["Sprite Palettes"] for index, palette, in enumerate(args.palettes): - log.append(format_option(f"Palette {index}", _truncated_name(palette))) + log.append(format_option(f"Palette {index}", _truncated_name(palette), f"palette_{index}")) return log @@ -147,12 +147,12 @@ def _other_portraits_sprites_log(args): name = other_names[character - Characters.CHARACTER_COUNT] if character in PORTRAIT_CHARACTERS: - log.append(format_option(name, _truncated_name(args.portraits[portrait_index]))) + log.append(format_option(name, _truncated_name(args.portraits[portrait_index]), f"portraits_{portrait_index}")) portrait_index += 1 name = "" # do not have name show up in front of sprite also if character in SPRITE_CHARACTERS: - log.append(format_option(name, _truncated_name(args.sprites[sprite_index]))) - log.append(format_option("", f"Palette {args.sprite_palettes[sprite_index]}")) + log.append(format_option(name, _truncated_name(args.sprites[sprite_index]), f"sprite_{sprite_index}")) + log.append(format_option("", f"Palette {args.sprite_palettes[sprite_index]}", f"palette_{sprite_index}")) sprite_index += 1 return log @@ -163,9 +163,9 @@ def _character_customization_log(args): for index in range(Characters.CHARACTER_COUNT): log_name = f"{Characters.DEFAULT_NAME[index]:<6} -> {args.names[index]}" - log.append(format_option(log_name, _truncated_name(args.portraits[index]))) - log.append(format_option("", _truncated_name(args.sprites[index]))) - log.append(format_option("", f"Palette {args.sprite_palettes[index]}")) + log.append(format_option(log_name, _truncated_name(args.portraits[index]), f"char_name_{index}")) + log.append(format_option("", _truncated_name(args.sprites[index]), f"char_sprite_{index}")) + log.append(format_option("", f"Palette {args.sprite_palettes[index]}", f"char_palette_{index}")) return log @@ -188,9 +188,9 @@ def _other_options_log(args): healing_text = "Blue" entries = [ - ("Remove Flashes", remove_flashes), - ("World Minimap", world_minimap), - ("Healing Text", healing_text), + ("Remove Flashes", remove_flashes, "remove_flashes"), + ("World Minimap", world_minimap, "world_minimap"), + ("Healing Text", healing_text, "healing_text"), ] for entry in entries: diff --git a/args/items.py b/args/items.py index eed7a77f..fb0bc0c1 100644 --- a/args/items.py +++ b/args/items.py @@ -1,57 +1,66 @@ def name(): return "Items" + def parse(parser): from data.characters import Characters items = parser.add_argument_group("Items") items_equipable = items.add_mutually_exclusive_group() items_equipable.add_argument("-ier", "--item-equipable-random", - default = None, type = int, nargs = 2, metavar = ("MIN", "MAX"), - choices = range(Characters.CHARACTER_COUNT + 1), - help = "Each item equipable by between %(metavar)s random characters") + default=None, type=int, nargs=2, metavar=("MIN", "MAX"), + choices=range(Characters.CHARACTER_COUNT + 1), + help="Each item equipable by between %(metavar)s random characters") items_equipable.add_argument("-iebr", "--item-equipable-balanced-random", default = None, type = int, metavar = "VALUE", choices = range(Characters.CHARACTER_COUNT + 1), - help = "Each item equipable by %(metavar)s random characters. Total number of items equipable by each character is balanced") + help="Each item equipable by %(metavar)s random characters. Total number of items equipable by each character is balanced") + items_equipable.add_argument("-ietr", "--item-equipable-tiered-random",action = "store_true", + help = "Equipment is categorized by tier and chance of being equipable by a character is chosen at random. Higher tier equipment is less likely to be equipable.") items_equipable.add_argument("-ieor", "--item-equipable-original-random", - default = None, type = int, metavar = "PERCENT", choices = range(-100, 101), - help = "Characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") + default=None, type=int, metavar="PERCENT", choices=range(-100, 101), + help="Characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") items_equipable.add_argument("-iesr", "--item-equipable-shuffle-random", - default = None, type = int, metavar = "PERCENT", choices = range(-100, 101), - help = "Shuffle character equipment. After randomization, characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") + default=None, type=int, metavar="PERCENT", choices=range(-100, 101), + help="Shuffle character equipment. After randomization, characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") items_equipable_relic = items.add_mutually_exclusive_group() items_equipable_relic.add_argument("-ierr", "--item-equipable-relic-random", - default = None, type = int, nargs = 2, metavar = ("MIN", "MAX"), - choices = range(Characters.CHARACTER_COUNT + 1), - help = "Each relic equipable by between %(metavar)s random characters") + default=None, type=int, nargs=2, metavar=("MIN", "MAX"), + choices=range(Characters.CHARACTER_COUNT + 1), + help="Each relic equipable by between %(metavar)s random characters") items_equipable_relic.add_argument("-ierbr", "--item-equipable-relic-balanced-random", default = None, type = int, metavar = "VALUE", choices = range(Characters.CHARACTER_COUNT + 1), help = "Each relic equipable by %(metavar)s random characters. Total number of relics equipable by each character is balanced") + items_equipable_relic.add_argument("-iertr", "--item-equipable-relic-tiered-random", action="store_true", + help="Relics are categorized by tier and chance of being equipable by a character is chosen at random. Higher tier relics are less likely to be equipable.") items_equipable_relic.add_argument("-ieror", "--item-equipable-relic-original-random", - default = None, type = int, metavar = "PERCENT", choices = range(-100, 101), - help = "Characters have a %(metavar)s chance of being able to equip each relic they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each relic they could previously equip") + default=None, type=int, metavar="PERCENT", choices=range(-100, 101), + help="Characters have a %(metavar)s chance of being able to equip each relic they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each relic they could previously equip") items_equipable_relic.add_argument("-iersr", "--item-equipable-relic-shuffle-random", - default = None, type = int, metavar = "PERCENT", choices = range(-100, 101), - help = "Shuffle character relics. After randomization, characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") + default=None, type=int, metavar="PERCENT", choices=range(-100, 101), + help="Shuffle character relics. After randomization, characters have a %(metavar)s chance of being able to equip each item they could not previously equip. If %(metavar)s negative, characters have a -%(metavar)s chance of not being able to equip each item they could previously equip") - items.add_argument("-csb", "--cursed-shield-battles", default = [256, 256], type = int, - nargs = 2, metavar = ("MIN", "MAX"), choices = range(257), - help = "Number of battles required to uncurse the cursed shield") + items.add_argument("-ir", "--item-rewards", type=str, + help="Choose which items will be received as check rewards") - items.add_argument("-mca", "--moogle-charm-all", action = "store_true", - help = "All characters can wear Moogle Charm relics which prevent random battles. Overrides Equipable option") - items.add_argument("-stra", "--swdtech-runic-all", action = "store_true", - help = "All weapons enable swdtech and runic") - - items.add_argument("-saw", "--stronger-atma-weapon", action = "store_true", - help = "Atma Weapon moved to higher tier and divisor reduced from 64 to 32") + items.add_argument("-csb", "--cursed-shield-battles", default=[256, 256], type=int, + nargs=2, metavar=("MIN", "MAX"), choices=range(257), + help="Number of battles required to uncurse the cursed shield") + items.add_argument("-mca", "--moogle-charm-all", action="store_true", + help="All characters can wear Moogle Charm relics which prevent random battles. Overrides Equipable option") + items.add_argument("-stra", "--swdtech-runic-all", action="store_true", + help="All weapons enable swdtech and runic") + items.add_argument("-saw", "--stronger-atma-weapon", action="store_true", + help="Atma Weapon moved to higher tier and divisor reduced from 64 to 32") def process(args): + from constants.items import good_items, stronger_items, premium_items + from constants.items import id_name, name_id + args._process_min_max("item_equipable_random") if args.item_equipable_balanced_random is not None: args.item_equipable_balanced_random_value = args.item_equipable_balanced_random @@ -74,10 +83,62 @@ def process(args): args.item_equipable_relic_shuffle_random_percent = args.item_equipable_relic_shuffle_random args.item_equipable_relic_shuffle_random = True + args.item_rewards_ids = [] + + if not args.item_rewards: + args.item_rewards = 'standard' + + # Split the comma-separated string + for a_item_id in args.item_rewards.split(','): + # look for strings first + a_item_id = a_item_id.lower().strip() + if a_item_id == 'none': + args.item_rewards_ids = [] + elif a_item_id == 'standard': + args.item_rewards_ids = [name_id[name] for name in good_items] + elif a_item_id == 'stronger': + args.item_rewards_ids = [name_id[name] for name in stronger_items] + elif a_item_id == 'premium': + args.item_rewards_ids = [name_id[name] for name in premium_items] + else: + item_ids_lower = {k.lower(): v for k, v in name_id.items()} + if a_item_id in item_ids_lower: + args.item_rewards_ids.append(item_ids_lower[a_item_id]) + else: + # assuming it's a number... it'll error out if not + args.item_rewards_ids.append(int(a_item_id)) + + # remove duplicates and sort + args.item_rewards_ids = list(set(args.item_rewards_ids)) + args.item_rewards_ids.sort() + + # Remove Atma Weapon is it's not Stronger and we're in standard/premium + if not args.stronger_atma_weapon and name_id["Atma Weapon"] in args.item_rewards_ids \ + and any(s.lower().strip() in args.item_rewards.split(',') for s in ('none', 'standard', 'stronger', 'premium')): + args.item_rewards_ids.remove(name_id["Atma Weapon"]) + + # Remove excluded items + if args.no_free_paladin_shields and name_id["Paladin Shld"] in args.item_rewards_ids: + args.item_rewards_ids.remove(name_id["Paladin Shld"]) + if args.no_exp_eggs and name_id["Exp. Egg"] in args.item_rewards_ids: + args.item_rewards_ids.remove(name_id["Exp. Egg"]) + if args.no_illuminas and name_id["Illumina"] in args.item_rewards_ids: + args.item_rewards_ids.remove(name_id["Illumina"]) + if args.no_sprint_shoes and name_id["Sprint Shoes"] in args.item_rewards_ids: + args.item_rewards_ids.remove(name_id["Sprint Shoes"]) + if args.no_moogle_charms and name_id["Moogle Charm"] in args.item_rewards_ids: + args.item_rewards_ids.remove(name_id["Moogle Charm"]) + + # Make dead checks award "empty" if the item reward list is empty (e.g. all items were supposed to be Illuminas and + # the No Illumina flag is on) + if len(args.item_rewards_ids) < 1: + args.item_rewards_ids.append(name_id["Empty"]) + args._process_min_max("cursed_shield_battles") - args.cursed_shield_battles_original = args.cursed_shield_battles_min == 256 and\ + args.cursed_shield_battles_original = args.cursed_shield_battles_min == 256 and \ args.cursed_shield_battles_max == 256 + def flags(args): flags = "" @@ -85,6 +146,8 @@ def flags(args): flags += f" -ier {args.item_equipable_random_min} {args.item_equipable_random_max}" elif args.item_equipable_balanced_random: flags += f" -iebr {args.item_equipable_balanced_random_value}" + elif args.item_equipable_tiered_random: + flags += f" -ietr" elif args.item_equipable_original_random: flags += f" -ieor {args.item_equipable_original_random_percent}" elif args.item_equipable_shuffle_random: @@ -94,11 +157,16 @@ def flags(args): flags += f" -ierr {args.item_equipable_relic_random_min} {args.item_equipable_relic_random_max}" elif args.item_equipable_relic_balanced_random: flags += f" -ierbr {args.item_equipable_relic_balanced_random_value}" + elif args.item_equipable_relic_tiered_random: + flags += f" -iertr" elif args.item_equipable_relic_original_random: flags += f" -ieror {args.item_equipable_relic_original_random_percent}" elif args.item_equipable_relic_shuffle_random: flags += f" -iersr {args.item_equipable_relic_shuffle_random_percent}" + if args.item_rewards: + flags += f" -ir {args.item_rewards}" + if args.cursed_shield_battles_min != 256 or args.cursed_shield_battles_max != 256: flags += f" -csb {args.cursed_shield_battles_min} {args.cursed_shield_battles_max}" @@ -110,15 +178,17 @@ def flags(args): if args.stronger_atma_weapon: flags += " -saw" - return flags + def options(args): equipable = "Original" if args.item_equipable_random: equipable = f"Random {args.item_equipable_random_min}-{args.item_equipable_random_max}" elif args.item_equipable_balanced_random: equipable = f"Balanced Random {args.item_equipable_balanced_random_value}" + elif args.item_equipable_tiered_random: + equipable = f"Tiered Random" elif args.item_equipable_original_random: equipable = f"Original + Random {args.item_equipable_original_random_percent}%" elif args.item_equipable_shuffle_random: @@ -129,6 +199,8 @@ def options(args): equipable_relics = f"Random {args.item_equipable_relic_random_min}-{args.item_equipable_relic_random_max}" elif args.item_equipable_relic_balanced_random: equipable_relics = f"Balanced Random {args.item_equipable_relic_balanced_random_value}" + elif args.item_equipable_relic_tiered_random: + equipable_relics = f"Tiered Random" elif args.item_equipable_relic_original_random: equipable_relics = f"Original + Random {args.item_equipable_relic_original_random_percent}%" elif args.item_equipable_relic_shuffle_random: @@ -137,39 +209,69 @@ def options(args): cursed_shield_battles = f"{args.cursed_shield_battles_min}-{args.cursed_shield_battles_max}" return [ - ("Equipable", equipable), - ("Equipable Relics", equipable_relics), - ("Cursed Shield Battles", cursed_shield_battles), - ("Moogle Charm All", args.moogle_charm_all), - ("SwdTech Runic All", args.swdtech_runic_all), - ("Stronger Atma Weapon", args.stronger_atma_weapon), + ("Equipable", equipable, "items_equipable"), + ("Equipable Relics", equipable_relics, "relics_equipable"), + ("Cursed Shield Battles", cursed_shield_battles, "cursed_shield_battles"), + ("Moogle Charm All", args.moogle_charm_all, "moogle_charm_all"), + ("SwdTech Runic All", args.swdtech_runic_all, "swdtech_runic_all"), + ("Stronger Atma Weapon", args.stronger_atma_weapon, "stronger_atma_weapon"), + ("Item Rewards", args.item_rewards_ids, "item_rewards"), ] + +def _format_items_log_entries(item_ids): + from constants.items import id_name + item_entries = [] + for item_id in item_ids: + item_entries.append(("", id_name[item_id])) + return item_entries + + def menu(args): + from menus.flags_reward_items import FlagsRewardItems + entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry try: if key == "Equipable": key = "Equip" elif key == "Equipable Relics": key = "EquipR" + elif key == "Item Rewards": + entries[index] = ("Item Rewards", FlagsRewardItems(value)) # flags sub-menu elif key == "Cursed Shield Battles": key = "Cursed Shield" value = value.replace("Balanced Random", "Balanced") + value = value.replace("Tiered Random", "Tiered") value = value.replace("Original + Random", "Original + ") value = value.replace("Shuffle + Random", "Shuffle + ") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) except: pass + return (name(), entries) + def log(args): from log import format_option log = [name()] entries = options(args) - for entry in entries: + '''for entry in entries: log.append(format_option(*entry)) + ''' + for entry in entries: + key, value, unique_name = entry + if key == "Item Rewards": + if len(value) == 0: + entry = (key, "None") + else: + entry = (key, "") # The entries will show up on subsequent lines + log.append(format_option(*entry)) + for item_entry in _format_items_log_entries(value): + log.append(format_option(*item_entry)) + else: + log.append(format_option(*entry)) return log diff --git a/args/lores.py b/args/lores.py index 21a431f8..0b3ef227 100644 --- a/args/lores.py +++ b/args/lores.py @@ -66,10 +66,10 @@ def options(args): lvl_x_spells = "Random" if args.lores_level_randomize else "Original" opts = [ - ("Start Lores", start_lores), - ("MP", mp), - ("Everyone Learns", args.lores_everyone_learns), - ("L.x Spells", lvl_x_spells) + ("Start Lores", start_lores, "start_lores"), + ("MP", mp, "lores_mp"), + ("Everyone Learns", args.lores_everyone_learns, "lores_everyone_learns"), + ("L.x Spells", lvl_x_spells, "lvl_x_spells") ] @@ -78,14 +78,14 @@ def options(args): def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry try: if key == "Start Lores": value = value.replace("Random ", "") elif key == "MP": value = value.replace("Random Value ", "") value = value.replace("Random Percent ", "") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) except: pass return (name(), entries) diff --git a/args/misc.py b/args/misc.py index 0c83c403..99e11095 100644 --- a/args/misc.py +++ b/args/misc.py @@ -9,9 +9,9 @@ def parse(parser): misc.add_argument("-ond", "--original-name-display", action = "store_true", help = "Display original character names in party and party select menus") misc.add_argument("-rr", "--random-rng", action = "store_true", - help = "Randomize in-game RNG table. Affects Setzer's Slots, Auction House, Ebot's Rock, ...") + help = "(DEPRECATED -- Always On) Randomize in-game RNG table. Affects Setzer's Slots, Auction House, Ebot's Rock, ...") misc.add_argument("-rc", "--random-clock", action = "store_true", - help = "Randomize clock's correct time and NPC clues in Zozo") + help = "(DEPRECATED -- Always On) Randomize clock's correct time and NPC clues in Zozo") misc.add_argument("-scan", "--scan-all", action = "store_true", help = "All enemies scannable. All characters start with scan learned. Scan costs 0 MP. Useful for testing/debugging") misc.add_argument("-warp", "--warp-all", action = "store_true", @@ -73,12 +73,6 @@ def flags(args): flags += f" -move {args.movement}" if args.original_name_display: flags += " -ond" - if args.random_rng: - flags += " -rr" - if args.random_clock: - flags += " -rc" - if args.scan_all: - flags += " -scan" if args.warp_all: flags += " -warp" if args.npc_dialog_tips: @@ -153,15 +147,13 @@ def options(args): movement = key_name[AUTO_SPRINT] return [ - ("Movement", movement), - ("Original Name Display", args.original_name_display), - ("Random RNG", args.random_rng), - ("Random Clock", args.random_clock), - ("Scan All", args.scan_all), - ("Warp All", args.warp_all), - ("Event Timers", event_timers), - ("Y NPC", y_npc), - ("NPC Tips", args.npc_dialog_tips), + ("Movement", movement, "movement"), + ("Original Name Display", args.original_name_display, "original_name_display"), + ("Scan All", args.scan_all, "scan_all"), + ("Warp All", args.warp_all, "warp_all"), + ("Event Timers", event_timers, "event_timers"), + ("Y NPC", y_npc, "y_npc"), + ("NPC Tips", args.npc_dialog_tips, "npc_dialog_tips"), ] def menu(args): diff --git a/args/misc_magic.py b/args/misc_magic.py index e4250d57..c886c558 100644 --- a/args/misc_magic.py +++ b/args/misc_magic.py @@ -41,18 +41,18 @@ def options(args): mp = f"Random Percent {args.magic_mp_random_percent_min}-{args.magic_mp_random_percent_max}%" return [ - ("MP", mp), + ("MP", mp, "misc_magic_mp"), ] def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry try: if key == "MP": value = value.replace("Random Value ", "") value = value.replace("Random Percent ", "") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) except: pass return (name(), entries) diff --git a/args/natural_magic.py b/args/natural_magic.py index ec1cb83d..fe8c1b58 100644 --- a/args/natural_magic.py +++ b/args/natural_magic.py @@ -58,15 +58,15 @@ def options(args): natural_magic2 = args.natural_magic2.capitalize() return [ - ("Natural Magic", natural_magic1), - ("Randomize Levels", args.random_natural_levels1), - ("Randomize Spells", args.random_natural_spells1), + ("Natural Magic", natural_magic1, "natural_magic1"), + ("Randomize Levels", args.random_natural_levels1, "random_natural_levels1"), + ("Randomize Spells", args.random_natural_spells1, "random_natural_spells1"), - ("Natural Magic", natural_magic2), - ("Randomize Levels", args.random_natural_levels2), - ("Randomize Spells", args.random_natural_spells2), + ("Natural Magic", natural_magic2, "natural_magic2"), + ("Randomize Levels", args.random_natural_levels2, "random_natural_levels2"), + ("Randomize Spells", args.random_natural_spells2, "random_natural_spells2"), - ("Menu Indicator", args.natural_magic_menu_indicator), + ("Menu Indicator", args.natural_magic_menu_indicator, "natural_magic_menu_indicator"), ] def menu(args): diff --git a/args/objectives.py b/args/objectives.py index a4a5170e..64412c19 100644 --- a/args/objectives.py +++ b/args/objectives.py @@ -131,7 +131,7 @@ def log(args): result_args = "Random" else: result_args = '-'.join([str(arg) for arg in objective.result.args]) - entry.append(format_option(result, result_args)) + entry.append(format_option(result, result_args, f"{objective.result.name}")) for condition in objective.conditions: if condition.min_max: @@ -143,10 +143,10 @@ def log(args): condition_args = "Random" else: condition_args = condition.string_function(*condition.args) - entry.append(format_option(" " + condition.name, condition_args)) + entry.append(format_option(" " + condition.name, condition_args, f"{objective.result.name}_{condition.name}")) conditions_required_args = f"{objective.conditions_required_min}-{objective.conditions_required_max}" - entry.append(format_option("Conditions Required", conditions_required_args)) + entry.append(format_option("Conditions Required", conditions_required_args, f"{objective.result.name}_conditions_req")) if oi % 2: rentries.append(entry) diff --git a/args/rages.py b/args/rages.py index 534e680f..02bedb6d 100644 --- a/args/rages.py +++ b/args/rages.py @@ -39,18 +39,18 @@ def options(args): start_rages = f"Random {args.start_rages_random_min}-{args.start_rages_random_max}" return [ - ("Start Rages", start_rages), - ("No Leap", args.rages_no_leap), - ("No Charm", args.rages_no_charm), + ("Start Rages", start_rages, "start_rages"), + ("No Leap", args.rages_no_leap, "rages_no_leap"), + ("No Charm", args.rages_no_charm, "rages_no_charm"), ] def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry if key == "Start Rages": value = value.replace("Random ", "") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) return (name(), entries) def log(args): diff --git a/args/scaling.py b/args/scaling.py index 0c8f9554..ed64f458 100644 --- a/args/scaling.py +++ b/args/scaling.py @@ -237,9 +237,9 @@ def options(args): elif args.level_scaling_time: level_scaling = "Time" - result.append(("Level Scaling", level_scaling)) + result.append(("Level Scaling", level_scaling, "level_scaling")) if args.level_scaling_factor is not None: - result.append(("Level Scaling Factor", f"{args.level_scaling_factor:g}")) + result.append(("Level Scaling Factor", f"{args.level_scaling_factor:g}", "level_scaling_factor")) hp_mp_scaling = "None" if args.hp_mp_scaling_average: @@ -257,9 +257,9 @@ def options(args): elif args.hp_mp_scaling_time: hp_mp_scaling = "Time" - result.append(("HP/MP Scaling", hp_mp_scaling)) + result.append(("HP/MP Scaling", hp_mp_scaling, "hp_mp_scaling")) if args.hp_mp_scaling_factor is not None: - result.append(("HP/MP Scaling Factor", f"{args.hp_mp_scaling_factor:g}")) + result.append(("HP/MP Scaling Factor", f"{args.hp_mp_scaling_factor:g}", "hp_mp_scaling_factor")) xp_gp_scaling = "None" if args.xp_gp_scaling_average: @@ -277,9 +277,9 @@ def options(args): elif args.xp_gp_scaling_time: xp_gp_scaling = "Time" - result.append(("Exp/GP Scaling", xp_gp_scaling)) + result.append(("Exp/GP Scaling", xp_gp_scaling, "xp_gp_scaling")) if args.xp_gp_scaling_factor is not None: - result.append(("Exp/GP Scaling Factor", f"{args.xp_gp_scaling_factor:g}")) + result.append(("Exp/GP Scaling Factor", f"{args.xp_gp_scaling_factor:g}", "xp_gp_scaling_factor")) ability_scaling = "None" if args.ability_scaling_element: @@ -287,13 +287,13 @@ def options(args): elif args.ability_scaling_random: ability_scaling = "Random" - result.append(("Ability Scaling", ability_scaling)) + result.append(("Ability Scaling", ability_scaling, "ability_scaling")) if args.ability_scaling_factor is not None: - result.append(("Ability Scaling Factor", f"{args.ability_scaling_factor:g}")) + result.append(("Ability Scaling Factor", f"{args.ability_scaling_factor:g}", "ability_scaling_factor")) - result.append(("Max Scale Level", args.max_scale_level)) - result.append(("Scale Eight Dragons", args.scale_eight_dragons)) - result.append(("Scale Final Battles", args.scale_final_battles)) + result.append(("Max Scale Level", args.max_scale_level, "max_scale_level")) + result.append(("Scale Eight Dragons", args.scale_eight_dragons, "scale_eight_dragons")) + result.append(("Scale Final Battles", args.scale_final_battles, "scale_final_battles")) return result @@ -301,7 +301,7 @@ def menu(args): entries = options(args) for index, entry in enumerate(entries): - key, value = entry + key, value, unique_name = entry try: key = key.replace(" Scaling", "") value = value.replace("Party Average", "PAverage") @@ -309,7 +309,7 @@ def menu(args): value = value.replace("Characters + Espers + Dragons", "C + E + D") value = value.replace("Characters + Espers", "C + E") value = value.replace("Bosses + Dragons", "B + D") - entries[index] = (key, value) + entries[index] = (key, value, unique_name) except: pass return (name(), entries) diff --git a/args/settings.py b/args/settings.py index d14b9bc0..e1a43db3 100644 --- a/args/settings.py +++ b/args/settings.py @@ -35,9 +35,9 @@ def options(args): game_mode = "Character Gating" return [ - ("Mode", game_mode), - ("Seed", args.seed), - ("Spoiler Log", args.spoiler_log), + ("Mode", game_mode, "game_mode"), + ("Seed", args.seed, "seed"), + ("Spoiler Log", args.spoiler_log, "spoiler_log"), ] def menu(args): @@ -45,7 +45,7 @@ def menu(args): for index, entry in enumerate(entries): if entry[0] == "Seed": if len(entry[1]) > 18: - entries[index] = (entry[0], entry[1][:15] + "...") + entries[index] = (entry[0], entry[1][:15] + "...", "seed") break return (name(), entries) diff --git a/args/shops.py b/args/shops.py index 1ab2dab7..779a1e49 100644 --- a/args/shops.py +++ b/args/shops.py @@ -143,22 +143,22 @@ def options(args): elif args.shops_expensive_super_balls: super_balls = "Expensive" - result = [("Inventory", inventory)] + result = [("Inventory", inventory, "shops_inventory")] if args.shop_inventory_shuffle_random: - result.append(("Random Percent", f"{args.shop_inventory_shuffle_random_percent}%")) + result.append(("Random Percent", f"{args.shop_inventory_shuffle_random_percent}%", "shops_random_percent")) result.extend([ - ("Price", price), - ("Sell Fraction", sell_fraction), - ("Dried Meat", args.shop_dried_meat), - ("No Priceless Items", args.no_priceless_items), - ("No Breakable Rods", args.shops_no_breakable_rods), - ("Expensive Rods", args.shops_expensive_breakable_rods), - ("No Elemental Shields", args.shops_no_elemental_shields), - ("No Super Balls", args.shops_no_super_balls), - ("Expensive Balls", args.shops_expensive_super_balls), - ("No Exp. Eggs", args.shops_no_exp_eggs), - ("No Illuminas", args.shops_no_illuminas), + ("Price", price, "price"), + ("Sell Fraction", sell_fraction, "sell_fraction"), + ("Dried Meat", args.shop_dried_meat, "shop_dried_meat"), + ("No Priceless Items", args.no_priceless_items, "no_priceless_items"), + ("No Breakable Rods", args.shops_no_breakable_rods, "shops_no_breakable_rods"), + ("Expensive Rods", args.shops_expensive_breakable_rods, "shops_expensive_breakable_rods"), + ("No Elemental Shields", args.shops_no_elemental_shields, "shops_no_elemental_shields"), + ("No Super Balls", args.shops_no_super_balls, "shops_no_super_balls"), + ("Expensive Balls", args.shops_expensive_super_balls, "shops_expensive_super_balls"), + ("No Exp. Eggs", args.shops_no_exp_eggs, "shops_no_exp_eggs"), + ("No Illuminas", args.shops_no_illuminas, "shops_no_illuminas"), ]) return result diff --git a/args/sketch_control.py b/args/sketch_control.py index f5c82cbf..2ca8ebb4 100644 --- a/args/sketch_control.py +++ b/args/sketch_control.py @@ -27,18 +27,17 @@ def options(args): accuracy = "100%" if args.sketch_control_improved_stats else "Original" stats = "Character" if args.sketch_control_improved_stats else "Original" - sketch_abilities = ("Sketch Ability", abilities) - sketch_stats = ("Sketch Stats", stats) - sketch_accuracy = ("Sketch Accuracy", accuracy) + sketch_abilities = ("Sketch Ability", abilities, "sketch_abilities") + sketch_stats = ("Sketch Stats", stats, "sketch_stats") + sketch_accuracy = ("Sketch Accuracy", accuracy, "sketch_accuracy") - control_abilities = ("Control Ability", abilities) - control_stats = ("Control Stats", stats) + control_abilities = ("Control Ability", abilities, "control_abilities") + control_stats = ("Control Stats", stats, "control_stats") return [ sketch_abilities, sketch_accuracy, sketch_stats, - ("", ""), control_abilities, control_stats, ] diff --git a/args/starting_gold_items.py b/args/starting_gold_items.py index 2faa23d9..d997a197 100644 --- a/args/starting_gold_items.py +++ b/args/starting_gold_items.py @@ -46,18 +46,17 @@ def flags(args): def options(args): opts = [ - ("Start Gold", args.gold), - ("Start Moogle Charms", args.start_moogle_charms), - ("Start Sprint Shoes", args.start_sprint_shoes), - ("Start Warp Stones", args.start_warp_stones), - ("Start Fenix Downs", args.start_fenix_downs), - ("Start Tools", args.start_tools), - ("Start Junk", args.start_junk), + ("Start Gold", args.gold, "gold"), + ("Start Moogle Charms", args.start_moogle_charms, "start_moogle_charms"), + ("Start Sprint Shoes", args.start_sprint_shoes, "start_sprint_shoes"), + ("Start Warp Stones", args.start_warp_stones, "start_warp_stones"), + ("Start Fenix Downs", args.start_fenix_downs, "start_fenix_downs"), + ("Start Tools", args.start_tools, "start_tools"), ] if args.start_junk != 0: opts += [ - ("Start Junk", args.start_junk) + ("Start Junk", args.start_junk, "start_junk") ] return opts diff --git a/args/starting_party.py b/args/starting_party.py index a4375a05..6965c781 100644 --- a/args/starting_party.py +++ b/args/starting_party.py @@ -58,20 +58,20 @@ def flags(args): def options(args): result = [] start_chars = [args.start_char1, args.start_char2, args.start_char3, args.start_char4] - for start_char in start_chars: + for i, start_char in enumerate(start_chars): value = "None" if start_char == "randomngu": value = "Random (No Gogo/Umaro)" elif start_char: value = start_char.capitalize() - result.append(("Start Character", value)) + result.append((f"Start Character {i+1}", value, f"start_char{i+1}")) return result def menu(args): entries = options(args) for index, entry in enumerate(entries): - entries[index] = (entry[1], "") + entries[index] = (entry[1], "", entry[2]) return (name(), entries) def log(args): diff --git a/args/steal.py b/args/steal.py index a809840a..1da79d62 100644 --- a/args/steal.py +++ b/args/steal.py @@ -41,11 +41,11 @@ def options(args): if args.steal_chances_always: steal_chances = "Always" - result.append(("Chances", steal_chances)) + result.append(("Chances", steal_chances, "steal_chances")) - result.append(("Shuffle", args.shuffle_steals_drops)) + result.append(("Shuffle", args.shuffle_steals_drops, "shuffle_steals_drops")) if args.shuffle_steals_drops: - result.append(("Random Percent", f"{args.shuffle_steals_drops_random_percent}%")) + result.append(("Random Percent", f"{args.shuffle_steals_drops_random_percent}%", "shuffle_steals_drops_random_percent")) return result diff --git a/args/swdtechs.py b/args/swdtechs.py index 682acc73..7042610e 100644 --- a/args/swdtechs.py +++ b/args/swdtechs.py @@ -24,8 +24,8 @@ def flags(args): def options(args): return [ - ("Fast SwdTech", args.fast_swdtech), - ("Everyone Learns", args.swdtechs_everyone_learns), + ("Fast SwdTech", args.fast_swdtech, "fast_swdtech"), + ("Everyone Learns", args.swdtechs_everyone_learns, "swdtechs_everyone_learns"), ] def menu(args): diff --git a/args/xpmpgp.py b/args/xpmpgp.py index 81f90cd3..1403c4ce 100644 --- a/args/xpmpgp.py +++ b/args/xpmpgp.py @@ -33,10 +33,10 @@ def flags(args): def options(args): return [ - ("Experience Multiplier", args.xp_mult), - ("Magic Points Multiplier", args.mp_mult), - ("Gold Multiplier", args.gp_mult), - ("No Exp Party Divide", args.no_exp_party_divide), + ("Experience Multiplier", args.xp_mult, "xp_mult"), + ("Magic Points Multiplier", args.mp_mult, "mp_mult"), + ("Gold Multiplier", args.gp_mult, "gp_mult"), + ("No Exp Party Divide", args.no_exp_party_divide, "no_exp_party_divide"), ] def menu(args): @@ -44,12 +44,12 @@ def menu(args): entries = options(args) for index in range(3): - key, value = entries[index] + key, value, unique_name = entries[index] key = key.replace(" Multiplier", "") value = str(value) + 'x' - entries[index] = (key, value) + entries[index] = (key, value, unique_name) return (short_name, entries) diff --git a/constants/items.py b/constants/items.py index c619eadc..f69e288a 100644 --- a/constants/items.py +++ b/constants/items.py @@ -3,6 +3,25 @@ BREAKABLE_RODS = range(53, 59) ELEMENTAL_SHIELDS = range(96, 99) +DIRKS = range(0, 10) +SWORDS = range(10, 29) +LANCES = range(29, 37) +KNIVES = range(37, 43) +KATANAS = range(43, 51) +RODS = range(51, 61) +BRUSHES = range(61, 65) +STARS = range(65, 68) +SPECIAL = range(68, 77) +GAMBLER = range(77, 83) +CLAWS = range(83, 90) +WEAPONS = range(0,90) +SHIELDS = range(90, 105) +HELMETS = range(105, 132) +ARMORS = range(132, 163) +TOOLS = range(163, 171) +SKEANS = range(171, 176) +RELICS = range(176, 231) + id_name = { 0 : "Dirk", @@ -268,6 +287,7 @@ "ValiantKnife", "Illumina", "Ragnarok", + "Atma Weapon", "Pearl Lance", "Aura Lance", "Magus Rod", @@ -296,3 +316,42 @@ "Exp. Egg", ] +stronger_items = [ + "ValiantKnife", + "Illumina", + "Ragnarok", + "Atma Weapon", + "Aura Lance", + "Fixed Dice", + "Flame Shld", + "Ice Shld", + "Thunder Shld", + "Paladin Shld", + "Force Shld", + "Cat Hood", + "Force Armor", + "Minerva", + "BehemothSuit", + "Snow Muffler", + "Genji Glove", + "Offering", + "Dragon Horn", + "Exp. Egg", +] + +premium_items = [ + "ValiantKnife", + "Illumina", + "Ragnarok", + "Atma Weapon", + "Fixed Dice", + "Flame Shld", + "Ice Shld", + "Thunder Shld", + "Paladin Shld", + "Minerva", + "Genji Glove", + "Offering", + "Exp. Egg", +] + diff --git a/constants/objectives/results.py b/constants/objectives/results.py index 0524abc9..cdd25120 100644 --- a/constants/objectives/results.py +++ b/constants/objectives/results.py @@ -94,6 +94,13 @@ category_types["Auto"].append(ResultType(64, "Auto Dark", "Auto Dark", None)) category_types["Auto"].append(ResultType(65, "Auto Clear", "Auto Clear", None)) category_types["Auto"].append(ResultType(66, "Auto Imp", "Auto Imp", None)) +category_types["Item"].append(ResultType(67, "Throwables", "Throwables", None)) +category_types["Item"].append(ResultType(68, "Restoratives", "Restoratives", None)) +category_types["Item"].append(ResultType(69, "High Tier Weapon", "High Tier Weapon", None)) +category_types["Item"].append(ResultType(70, "High Tier Armor", "High Tier Armor", None)) +category_types["Item"].append(ResultType(71, "High Tier Shield", "High Tier Shield", None)) +category_types["Item"].append(ResultType(72, "High Tier Helm", "High Tier Helm", None)) +category_types["Item"].append(ResultType(73, "High Tier Relic", "High Tier Relic", None)) categories = list(category_types.keys()) diff --git a/constants/standard_flags.py b/constants/standard_flags.py new file mode 100644 index 00000000..7eae3c7f --- /dev/null +++ b/constants/standard_flags.py @@ -0,0 +1,251 @@ +# Standard Flags +# Last updated to match Ultros League Season 4 + +standard_flags = { + "game_mode": "Character Gating", + "spoiler_log": "False", + "Unlock Final Kefka": "", + "Unlock Final Kefka_Characters": "6-6", + "Unlock Final Kefka_Espers": "9-9", + "Unlock Final Kefka_conditions_req": "2-2", + "Unlock KT Skip": "", + "Unlock KT Skip_Characters": "9-9", + "Unlock KT Skip_Espers": "12-12", + "Unlock KT Skip_conditions_req": "1-1", + "Learn SwdTechs": "8-8", + "Learn SwdTechs_Check": "Doma Dream Awaken", + "Learn SwdTechs_conditions_req": "1-1", + "Magitek Upgrade": "", + "Magitek Upgrade_Check": "Magitek Factory Finish", + "Magitek Upgrade_conditions_req": "1-1", + "start_char1": "Random", + "start_char2": "Random", + "start_char3": "Random", + "start_char4": "None", + "fast_swdtech": "True", + "swdtechs_everyone_learns": "False", + "bum_rush_last": "True", + "blitzes_everyone_learns": "False", + "start_lores": "Random 3-5", + "lores_mp": "Random Percent 75-125%", + "lores_everyone_learns": "True", + "lvl_x_spells": "Original", + "start_rages": "Random 25-35", + "rages_no_leap": "True", + "rages_no_charm": "True", + "start_dances": "Random 1-2", + "dances_shuffle": "True", + "dances_display_abilities": "True", + "dances_no_stumble": "True", + "dances_everyone_learns": "False", + "steal_chances": "Higher", + "shuffle_steals_drops": "None", + "sketch_abilities": "Original", + "sketch_accuracy": "100%", + "sketch_stats": "Character", + "control_abilities": "Original", + "control_stats": "Character", + "start_average_level": "True", + "start_level": "3", + "start_naked": "False", + "equipable_umaro": "True", + "character_stats": "80-125%", + "Morph": "Random Unique", + "Steal": "Random Unique", + "SwdTech": "Random Unique", + "Throw": "Random Unique", + "Tools": "Random Unique", + "Blitz": "Random Unique", + "Runic": "Random Unique", + "Lore": "Random Unique", + "Sketch": "Random Unique", + "Slot": "Random Unique", + "Dance": "Random Unique", + "Rage": "Random Unique", + "Leap": "Random Unique", + "": "", + "shuffle_commands": "False", + "random_exclude_command1": "Possess", + "random_exclude_command2": "Shock", + "random_exclude_command3": "None", + "random_exclude_command4": "None", + "random_exclude_command5": "None", + "random_exclude_command6": "None", + "xp_mult": "3", + "mp_mult": "5", + "gp_mult": "5", + "no_exp_party_divide": "True", + "boss_battles": "Shuffle", + "dragon_battles": "Shuffle", + "statue_battles": "Mix", + "shuffle_random_phunbaba3": "False", + "boss_normalize_distort_stats": "False", + "boss_experience": "True", + "boss_no_undead": "True", + "boss_marshal_keep_lobos": "False", + "doom_gaze_no_escape": "True", + "wrexsoul_no_zinger": "True", + "magimaster_no_ultima": "True", + "chadarnook_more_demon": "True", + "level_scaling": "Characters + Espers + Dragons", + "level_scaling_factor": "2", + "hp_mp_scaling": "Characters + Espers + Dragons", + "hp_mp_scaling_factor": "2", + "xp_gp_scaling": "Characters + Espers + Dragons", + "xp_gp_scaling_factor": "2", + "ability_scaling": "Element", + "ability_scaling_factor": "2", + "max_scale_level": "40", + "scale_eight_dragons": "True", + "scale_final_battles": "False", + "random_encounters": "Shuffle", + "fixed_encounters": "Random", + "fixed_encounters_random": "0%", + "escapable": "100%", + "starting_espers": "0-0", + "spells": "Random 2-5", + "bonuses": "Random", + "esper_bonus_chance": "82%", + "esper_mp": "Random Percent 75-125%", + "esper_equipable": "All", + "esper_multi_summon": "False", + "esper_mastered_icon": "False", + "misc_magic_mp": "Random Percent 75-125%", + "natural_magic1": "Random", + "random_natural_levels1": "True", + "random_natural_spells1": "True", + "natural_magic2": "Random", + "random_natural_levels2": "True", + "random_natural_spells2": "True", + "natural_magic_menu_indicator": "True", + "gold": "5000", + "start_moogle_charms": "3", + "start_sprint_shoes": "0", + "start_warp_stones": "0", + "start_fenix_downs": "0", + "start_tools": "1", + "items_equipable": "Original + Random 33%", + "relics_equipable": "Original + Random 33%", + "cursed_shield_battles": "3-14", + "moogle_charm_all": "True", + "swdtech_runic_all": "True", + "stronger_atma_weapon": "True", + "shops_inventory": "Shuffle + Random", + "shops_random_percent": "20%", + "price": "Random Percent 75-125%", + "sell_fraction": "1/2", + "shop_dried_meat": "5", + "no_priceless_items": "True", + "shops_no_breakable_rods": "False", + "shops_expensive_breakable_rods": "True", + "shops_no_elemental_shields": "False", + "shops_no_super_balls": "False", + "shops_expensive_super_balls": "True", + "shops_no_exp_eggs": "False", + "shops_no_illuminas": "False", + "contents_value": "Shuffle + Random", + "chest_contents_shuffle_random_percent": "20%", + "chest_random_monsters_enemy": "0%", + "chest_random_monsters_boss": "0%", + "chest_monsters_shuffle": "True", + "palette_0": "Original 0", + "palette_1": "Original 1", + "palette_2": "Original 2", + "palette_3": "Original 3", + "palette_4": "Original 4", + "palette_5": "Original 5", + "palette_6": "Original 6", + "sprite_14": "Soldier", + "palette_14": "Palette 1", + "portraits_14": "Imp", + "sprite_15": "Imp", + "palette_15": "Palette 0", + "sprite_16": "General Leo", + "palette_16": "Palette 6", + "sprite_17": "Banon-Duncan", + "palette_17": "Palette 1", + "sprite_18": "Esper Terra", + "palette_18": "Palette 0", + "sprite_19": "Merchant", + "palette_19": "Palette 3", + "remove_flashes": "Worst", + "world_minimap": "High Contrast", + "healing_text": "Original", + "char_name_0": "Terra", + "char_sprite_0": "Terra", + "char_palette_0": "Palette 2", + "char_name_1": "Locke", + "char_sprite_1": "Locke", + "char_palette_1": "Palette 1", + "char_name_2": "Cyan", + "char_sprite_2": "Cyan", + "char_palette_2": "Palette 4", + "char_name_3": "Shadow", + "char_sprite_3": "Shadow", + "char_palette_3": "Palette 4", + "char_name_4": "Edgar", + "char_sprite_4": "Edgar", + "char_palette_4": "Palette 0", + "char_name_5": "Sabin", + "char_sprite_5": "Sabin", + "char_palette_5": "Palette 0", + "char_name_6": "Celes", + "char_sprite_6": "Celes", + "char_palette_6": "Palette 0", + "char_name_7": "Strago", + "char_sprite_7": "Strago", + "char_palette_7": "Palette 3", + "char_name_8": "Relm", + "char_sprite_8": "Relm", + "char_palette_8": "Palette 3", + "char_name_9": "Setzer", + "char_sprite_9": "Setzer", + "char_palette_9": "Palette 4", + "char_name_10": "Mog", + "char_sprite_10": "Mog", + "char_palette_10": "Palette 5", + "char_name_11": "Gau", + "char_sprite_11": "Gau", + "char_palette_11": "Palette 3", + "char_name_12": "Gogo", + "char_sprite_12": "Gogo", + "char_palette_12": "Palette 3", + "char_name_13": "Umaro", + "char_sprite_13": "Umaro", + "char_palette_13": "Palette 5", + "opponents": "Random", + "rewards": "Random", + "rewards_visible": "80-100", + "coliseum_no_exp_eggs": "False", + "coliseum_no_illuminas": "False", + "auction_random_items": "True", + "auction_no_chocobo_airship": "True", + "auction_door_esper_hint": "True", + "auction_max_espers": "1", + "movement": "AUTO_SPRINT", + "original_name_display": "True", + "random_rng": "True", + "scan_all": "False", + "warp_all": "False", + "event_timers": "None", + "y_npc": "None", + "npc_dialog_tips": "False", + "no_moogle_charms": "True", + "no_exp_eggs": "False", + "no_illuminas": "False", + "no_sprint_shoes": "True", + "no_free_paladin_shields": "True", + "no_free_characters_espers": "False", + "permadeath": "False", + "ultima": "N/A", + "remove_learnable_spell_ids": "", + "rls_0": "Ultima", + "fix_sketch": "True", + "fix_evade": "True", + "fix_vanish_doom": "True", + "fix_retort": "True", + "fix_jump": "True", + "fix_boss_skip": "True", + "fix_enemy_damage_counter": "True", + "fix_capture": "True", +} \ No newline at end of file diff --git a/data/bosses.py b/data/bosses.py index 7b3a0395..60f355e6 100644 --- a/data/bosses.py +++ b/data/bosses.py @@ -1,3 +1,8 @@ +# FF6Tools (https://everything8215.github.io/ff6tools/ff6tools.html) reference: +# Here, "packs" refer to the Battle -> Random Battle Groups + Event Battle Groups. To line up Event Battle Groups with packs IDs, subtrack 256 from the pack ID below. +# "Formations" refer to the Battle -> Battles listing. Those IDs should line up directly. +# "Enemies" refer to Monster -> Monsters. Those IDs should line up directly. + final_battle_pack_name = { 357 : "Final Battle", # (face, short arm, long arm) no pack for other final battles } diff --git a/data/chests.py b/data/chests.py index 8d596442..ba1a8bdb 100644 --- a/data/chests.py +++ b/data/chests.py @@ -202,10 +202,9 @@ def chest_random_monsters(self, enemy_percent, boss_percent): else: MIAB_boss = [a for a in range(256) if a in boss_event_battle_groups.keys()] - # Respect boss modification flags - if not self.args.shuffle_random_phunbaba3: - # Remove Phunbaba 3 encounter from the MIAB_boss pool - MIAB_boss.remove(name_event_battle_group["Phunbaba 3"]) + # Remove Phunbaba 3 encounter from the MIAB_boss pool -- doing this all the time regardless of flags because, as noted in enemy_packs.randomize_fixed, it can lead to odd behavior. + # Rather than testing the behavior across every possible chest, we'll just remove it to avoid the issue. + MIAB_boss.remove(name_event_battle_group["Phunbaba 3"]) randomizable_types = [Chest.EMPTY, Chest.ITEM, Chest.GOLD] # Remove chests in the Zone Eater crushing ceiling room from the pool. diff --git a/data/enemies.py b/data/enemies.py index 9b620e1b..32ae3199 100644 --- a/data/enemies.py +++ b/data/enemies.py @@ -344,16 +344,6 @@ def shuffle_steals_drops_random(self): self.set_common_drop(enemy.id, steals_drops.pop(0)) self.set_rare_drop(enemy.id, steals_drops.pop(0)) - def pad_enemy_packs(self): - from data.enemy_battle_groups import unused_event_battle_groups - for pack in self.packs.packs: - if pack.FORMATION_COUNT == 2: - # pack formation 0, 0 is Lobo -- it fills out unused spaces. Id 0, though, is MIAB Lobo, which we want to keep. - if (pack.formations == [0, 0] and pack.id > 0) or (pack.id in unused_event_battle_groups): - # Add random formations to the empty pack - this_formation = self.formations.get_random_normal() - pack.formations = [this_formation, this_formation] - def set_escapable(self): import random @@ -382,10 +372,6 @@ def mod(self, maps): if self.args.shuffle_steals_drops: self.shuffle_steals_drops_random() - if self.args.chest_random_monsters_enemy > 0: - # add more random groups to the otherwise limited event battle groups (all that's available for MIAB) - self.pad_enemy_packs() - if self.args.permadeath: self.remove_fenix_downs() diff --git a/data/enemy_battle_groups.py b/data/enemy_battle_groups.py index 27272013..8d8c7060 100644 --- a/data/enemy_battle_groups.py +++ b/data/enemy_battle_groups.py @@ -1,8 +1,12 @@ unused_event_battle_groups = { 9: "B.Day Suit/Officer", 10: "Merchant/B.Day Suit", + 12: "Imperial Camp Templar & Doberman", 13: "Cyan vs Grunts", 14: "Cyan vs Grunts & Cadet", + 33: "Unused Trapper & Chaser", + 36: "Unused Sky Cap & PlutoArmor", + 38: "Narshe Security Checkpoint Dark Side", 49: "Empty", 50: "Empty", 51: "Empty", diff --git a/data/enemy_formation.py b/data/enemy_formation.py index 4ddf4ab0..bfc8ede7 100644 --- a/data/enemy_formation.py +++ b/data/enemy_formation.py @@ -1,3 +1,4 @@ +# Within https://everything8215.github.io/ff6tools/ff6tools.html, these are what's found under Battle -> Battles class EnemyFormation(): ENEMY_CAPACITY = 6 # up to 6 enemies in a formation diff --git a/data/enemy_packs.py b/data/enemy_packs.py index 130e8045..dae38805 100644 --- a/data/enemy_packs.py +++ b/data/enemy_packs.py @@ -3,12 +3,12 @@ import data.bosses as bosses class EnemyPacks(): - # the first 256 enemy packs are groups of 4 formations + # the first 256 enemy packs are groups of 4 formations -- these are the Battle -> "Random Battle Groups" in ff6tools PACK4_START = 0xf4800 PACK4_END = 0xf4fff PACK4_SIZE = 8 - # the next 256 enemy packs are groups of 2 formations + # the next 256 enemy packs are groups of 2 formations -- these are the Battle -> "Event Battle Groups" in ff6tools PACK2_START = 0xf5000 PACK2_END = 0xf53ff PACK2_SIZE = 4 @@ -243,11 +243,14 @@ def randomize_packs(self, packs, boss_percent, no_phunbaba3 = False): import random for pack_id in packs: if random.random() < boss_percent: + formation = self.formations.get_random_boss(exclude_bosses) # outside of the below for loop, this ensures that there's no variability within fixed encounters within the same seed for formation_index in range(self.packs[pack_id].FORMATION_COUNT): - self.packs[pack_id].formations[formation_index] = self.formations.get_random_boss(exclude_bosses) + self.packs[pack_id].formations[formation_index] = formation else: + formation = self.formations.get_random_normal() # outside of the below for loop, this ensures that there's no variability within fixed encounters within the same seed for formation_index in range(self.packs[pack_id].FORMATION_COUNT): - self.packs[pack_id].formations[formation_index] = self.formations.get_random_normal() + # TODO: update get_random_normal to use more of the otherwise unused Fixed encounters + self.packs[pack_id].formations[formation_index] = formation def chupon_packs(self, packs): # Replace all packs with the CHUPON formation @@ -256,19 +259,20 @@ def chupon_packs(self, packs): self.packs[pack_id].formations[formation_index] = self.formations.CHUPON def randomize_fixed(self): + # TODO: assign each check enough unused "packs" to eliminate variability within the same seed lete_river = [263, 264] # nautiloid, exocite, pterodon imperial_camp = [272, 298, 300, 269, 270] # soldier, dogs, templar/soldier, final 3 battles doma_wob = [299] # soldier - phantom_train = [303] # ghost (siegfried unrandomized for style) - serpent_trench = [275, 276, 277] # anguiform, actaneon, aspik + phantom_train = [303] # ghost (siegfried [365] unrandomized for style) + serpent_trench = [275, 276, 277, 410, 411, 412, 413] # anguiform, actaneon, aspik, unused, unused, unused, unused narshe_battle = [278, 279, 280] # brown and green soldiers, rider - opera_house = [281] # sewer rat, vermin + opera_house = [281, 414] # sewer rat/vermin, unused vector = [257, 285, 284] # guards, garm, commando, protoarmor, pipsqueak mine_cart = [297, 400] # mag roaders imperial_base = [295, 296] # soldier and magitek sealed_cave = [405] # ninja - burning_house = [301, 287] # balloon (x4, x3) - iaf = [382] # sky armor / spit fire + burning_house = [301, 287, 415] # balloon (x4, x3), unused + iaf = [382, 416] # sky armor / spit fire, unused floating_continent_escape = [397, 398, 399] # naughty owzer_mansion = [402, 403, 407, 404] # dahling, nightshade, souldancer, still life moogle_defense = [261] # vomammoth @@ -352,6 +356,17 @@ def remove_extra_formations(self): for formation_index in range(pack.FORMATION_COUNT): pack.extra_formations[formation_index] = False + def pad_enemy_packs(self): + # add more random groups to the otherwise limited event battle groups + from data.enemy_battle_groups import unused_event_battle_groups + for pack in self.packs: + if pack.FORMATION_COUNT == 2: + # pack formation 0, 0 is Lobo -- it fills out unused spaces. Id 0, though, is MIAB Lobo, which we want to keep. + if (pack.formations == [0, 0] and pack.id > 0) or (pack.id in unused_event_battle_groups): + # Add random formations to the empty pack + this_formation = self.formations.get_random_normal() + pack.formations = [this_formation, this_formation] + def mod(self): self.event_boss_replacements = { self.DOOM_GAZE: self.DOOM_GAZE, @@ -366,6 +381,8 @@ def mod(self): self._handle_original_shuffle_dragons() self._handle_original_shuffle_statues() + self.pad_enemy_packs() # keep this before randomized_fixed, as this pads with normal enemies, whereas that may add bosses + if not self.args.fixed_encounters_original: self.randomize_fixed() diff --git a/data/esper.py b/data/esper.py index 96d9f62a..e61c5fe0 100644 --- a/data/esper.py +++ b/data/esper.py @@ -131,6 +131,27 @@ def randomize_rates(self): for spell_index in range(self.spell_count): self.spells[spell_index].rate = random.choice(self.LEARN_RATES) + def randomize_rates_tiered(self): + import random + from data.esper_spell_tiers import tiers + for spell_index in range(self.spell_count): + if self.spells[spell_index].id in tiers[0]: + self.spells[spell_index].rate = random.choice([10, 15, 16, 20]) + elif self.spells[spell_index].id in tiers[1]: + self.spells[spell_index].rate = random.choice([5, 6, 7, 8]) + elif self.spells[spell_index].id in tiers[2]: + self.spells[spell_index].rate = random.choice([1, 2, 3, 4]) + elif self.spells[spell_index].id in tiers[3]: + self.spells[spell_index].rate = random.choice([10, 15, 16, 20]) + elif self.spells[spell_index].id in tiers[4]: + self.spells[spell_index].rate = random.choice([6, 7, 8, 10, 15]) + elif self.spells[spell_index].id in tiers[5]: + self.spells[spell_index].rate = random.choice([4, 5, 6, 7, 8]) + elif self.spells[spell_index].id in tiers[6]: + self.spells[spell_index].rate = random.choice([2, 3, 4]) + elif self.spells[spell_index].id in tiers[7]: + self.spells[spell_index].rate = 1 + def randomize_bonus(self): import random # exclude lvl percent bonuses diff --git a/data/espers.py b/data/espers.py index c09a5b12..11f25ee0 100644 --- a/data/espers.py +++ b/data/espers.py @@ -172,6 +172,10 @@ def randomize_rates(self): for esper in self.espers: esper.randomize_rates() + def randomize_rates_tiered(self): + for esper in self.espers: + esper.randomize_rates_tiered() + def shuffle_bonuses(self): bonuses = [] for esper in self.espers: @@ -273,12 +277,6 @@ def multi_summon(self): def mod(self, dialogs): self.receive_dialogs_mod(dialogs) - if self.args.esper_spells_random_rates or self.args.esper_spells_shuffle_random_rates: - self.randomize_rates() - - if len(self.starting_espers): - self.randomize_rates() - if self.args.esper_spells_shuffle or self.args.esper_spells_shuffle_random_rates: self.shuffle_spells() elif self.args.esper_spells_random: @@ -286,6 +284,19 @@ def mod(self, dialogs): elif self.args.esper_spells_random_tiered: self.randomize_spells_tiered() + if self.args.esper_spells_random or self.args.esper_spells_random_tiered: + # if random, replace the spells + self.replace_flagged_learnables() + else: + # otherwise (original or shuffled), remove them + self.remove_flagged_learnables() + + if self.args.esper_learnrates_random: + self.randomize_rates() + + if self.args.esper_learnrates_random_tiered: + self.randomize_rates_tiered() + if self.args.esper_bonuses_shuffle: self.shuffle_bonuses() elif self.args.esper_bonuses_random: @@ -310,16 +321,10 @@ def mod(self, dialogs): if self.args.permadeath: self.phoenix_life3() - if self.args.esper_spells_random or self.args.esper_spells_random_tiered: - # if random, replace the spells - self.replace_flagged_learnables() - else: - # otherwise (original or shuffled), remove them - self.remove_flagged_learnables() - if self.args.esper_multi_summon: self.multi_summon() + def write(self): if self.args.spoiler_log: self.log() diff --git a/data/items.py b/data/items.py index 172295b6..f90bf5b1 100644 --- a/data/items.py +++ b/data/items.py @@ -2,7 +2,7 @@ from data.item import Item from data.structures import DataList -from constants.items import good_items +from constants.items import good_items, stronger_items, premium_items from constants.items import id_name, name_id import data.items_asm as items_asm @@ -10,7 +10,7 @@ class Items(): ITEM_COUNT = 256 - EMPTY = 0xff # item 255 is empty + EMPTY = 0xff # item 255 is empty BREAKABLE_RODS = range(53, 59) ELEMENTAL_SHIELDS = range(96, 99) @@ -21,15 +21,7 @@ class Items(): DESC_START = 0x2d6400 DESC_END = 0x2d779f - GOOD = [name_id[name] for name in good_items] - if args.stronger_atma_weapon: - GOOD.append(name_id["Atma Weapon"]) - if args.no_free_paladin_shields: - GOOD.remove(name_id["Paladin Shld"]) - if args.no_exp_eggs: - GOOD.remove(name_id["Exp. Egg"]) - if args.no_illuminas: - GOOD.remove(name_id["Illumina"]) + GOOD = args.item_rewards_ids def __init__(self, rom, args, dialogs, characters): self.rom = rom @@ -45,8 +37,8 @@ def __init__(self, rom, args, dialogs, characters): def read(self): self.items = [] - self.type_items = {Item.TOOL : [], Item.WEAPON : [], Item.ARMOR : [], - Item.SHIELD : [], Item.HELMET : [], Item.RELIC : [], Item.ITEM : []} + self.type_items = {Item.TOOL: [], Item.WEAPON: [], Item.ARMOR: [], + Item.SHIELD: [], Item.HELMET: [], Item.RELIC: [], Item.ITEM: []} for item_index in range(self.ITEM_COUNT): item = Item(item_index, self.rom, self.desc_data[item_index]) @@ -81,8 +73,8 @@ def equipable_balanced_random(self, type_condition, characters_per_item): if len(possible_characters) < characters_per_item: # fewer possibilities left than number of characters needed for each item - character_group = possible_characters # add remaining possible characters to current group - possible_characters = list(range(Characters.CHARACTER_COUNT)) # add all characters back into pool + character_group = possible_characters # add remaining possible characters to current group + possible_characters = list(range(Characters.CHARACTER_COUNT)) # add all characters back into pool # select characters at random from possible pool until # character_group contains characters_per_item unique characters @@ -101,6 +93,34 @@ def equipable_balanced_random(self, type_condition, characters_per_item): possible_characters.remove(character) item.add_equipable_character(self.characters.playable[character]) + def equipable_tiered(self, type_condition): + from data.chest_item_tiers import tiers + + tier_mins = [13, 11, 7, 4, 1] + tier_maxes = [14, 12, 10, 6, 3] + + for item in self.items: + if item.is_equipable() and item.id != self.EMPTY and item.id != 102 and type_condition(item.type): + for i, tier in enumerate(tiers): + if item.id in tier: + item_tier = i - 5 + break + + item.remove_all_equipable_characters() + + num_chars = random.randint(tier_mins[item_tier], tier_maxes[item_tier]) + rand_chars = random.sample(self.characters.playable, num_chars) + + # if Paladin Shld is only equipable by Gogo and/or Umaro, instead reroll for 3 characters + if item.id == 103 and all(obj.id in [13, 14] for obj in rand_chars): + rand_chars = random.sample(self.characters.playable, 3) + + for character in rand_chars: + item.add_equipable_character(character) + + # force Cursed Shld equips to match Paladin Shld equips + self.items[102].equipable_characters = self.items[103].equipable_characters + def equipable_original_random(self, type_condition, percent): if percent == 0: return @@ -165,7 +185,7 @@ def random_prices_percent(self): price_percent = random.randint(self.args.shop_prices_random_percent_min, self.args.shop_prices_random_percent_max) / 100.0 value = int(item.price * price_percent) - item.price = max(min(value, 2**16 - 1), 0) + item.price = max(min(value, 2 ** 16 - 1), 0) def expensive_breakable_rods(self): self.items[name_id["Poison Rod"]].scale_price(3) @@ -200,23 +220,27 @@ def moogle_starting_equipment(self): self.characters.characters[index].init_head = random.choice(tiers[Item.HELMET][1]) def mod(self): - not_relic_condition = lambda x : x != Item.RELIC + not_relic_condition = lambda x: x != Item.RELIC if self.args.item_equipable_random: self.equipable_random(not_relic_condition, self.args.item_equipable_random_min, - self.args.item_equipable_random_max) + self.args.item_equipable_random_max) elif self.args.item_equipable_balanced_random: self.equipable_balanced_random(not_relic_condition, self.args.item_equipable_balanced_random_value) + elif self.args.item_equipable_tiered_random: + self.equipable_tiered(not_relic_condition) elif self.args.item_equipable_original_random: self.equipable_original_random(not_relic_condition, self.args.item_equipable_original_random_percent) elif self.args.item_equipable_shuffle_random: self.equipable_shuffle_random(not_relic_condition, self.args.item_equipable_shuffle_random_percent) - relic_condition = lambda x : x == Item.RELIC + relic_condition = lambda x: x == Item.RELIC if self.args.item_equipable_relic_random: self.equipable_random(relic_condition, self.args.item_equipable_relic_random_min, - self.args.item_equipable_relic_random_max) + self.args.item_equipable_relic_random_max) elif self.args.item_equipable_relic_balanced_random: self.equipable_balanced_random(relic_condition, self.args.item_equipable_relic_balanced_random_value) + elif self.args.item_equipable_relic_tiered_random: + self.equipable_tiered(relic_condition) elif self.args.item_equipable_relic_original_random: self.equipable_original_random(relic_condition, self.args.item_equipable_relic_original_random_percent) elif self.args.item_equipable_relic_shuffle_random: @@ -294,7 +318,7 @@ def get_name(self, id): def get_type(self, id): return self.items[id].type - def get_items(self, exclude = None, item_types = None): + def get_items(self, exclude=None, item_types=None): if exclude is None: exclude = [] exclude.append(self.EMPTY) @@ -303,12 +327,12 @@ def get_items(self, exclude = None, item_types = None): item_list = [item.id for item in self.items] else: try: - assert(item_types >= 0 and item_types < Item.ITEM_TYPE_COUNT) + assert (item_types >= 0 and item_types < Item.ITEM_TYPE_COUNT) item_list = [item.id for item in self.type_items[item_types]] except ValueError: item_list = [] for item_type in item_types: - assert(item_type >= 0 and item_type < Item.ITEM_TYPE_COUNT) + assert (item_type >= 0 and item_type < Item.ITEM_TYPE_COUNT) item_list.extend([item.id for item in self.type_items[item_type]]) item_list = [item_id for item_id in item_list if item_id not in exclude] @@ -336,7 +360,7 @@ def get_excluded(self): return exclude - def get_random(self, exclude = None, item_types = None): + def get_random(self, exclude=None, item_types=None): if exclude is None: exclude = [] exclude.extend(self.get_excluded()) diff --git a/data/map_events.py b/data/map_events.py index 1012d460..dce4461a 100644 --- a/data/map_events.py +++ b/data/map_events.py @@ -4,6 +4,7 @@ class MapEvents: EVENT_COUNT = 1164 DATA_START_ADDR = 0x040342 + DATA_END_ADDR = 0x041A0F def __init__(self, rom): self.rom = rom @@ -24,6 +25,8 @@ def write(self): for event_index, event in enumerate(self.events): event_data = event.to_data() event_data_start = self.DATA_START_ADDR + event_index * MapEvent.DATA_SIZE + # Assert that the address being written doesn't go beyond the expected end point + assert(event_data_start < self.DATA_END_ADDR) self.rom.set_bytes(event_data_start, event_data) def mod(self): diff --git a/data/map_exits.py b/data/map_exits.py index c3a37eee..1ef6fbaa 100644 --- a/data/map_exits.py +++ b/data/map_exits.py @@ -5,7 +5,9 @@ class MapExits(): LONG_EXIT_COUNT = 0x98 SHORT_DATA_START_ADDR = 0x1fbf02 - LONG_DATA_START_ADDR = 0x2df882 + SHORT_DATA_END_ADDR = 0x1FD9FF + LONG_DATA_START_ADDR = 0x2df882 + LONG_DATA_END_ADDR = 0x2DFDFF def __init__(self, rom): self.rom = rom @@ -34,11 +36,15 @@ def write(self): for exit_index, exit in enumerate(self.short_exits): exit_data = exit.to_data() exit_data_start = self.SHORT_DATA_START_ADDR + exit_index * ShortMapExit.DATA_SIZE + # Assert that the address being written doesn't go beyond the expected end point + assert(exit_data_start < self.SHORT_DATA_END_ADDR) self.rom.set_bytes(exit_data_start, exit_data) for exit_index, exit in enumerate(self.long_exits): exit_data = exit.to_data() exit_data_start = self.LONG_DATA_START_ADDR + exit_index * LongMapExit.DATA_SIZE + # Assert that the address being written doesn't go beyond the expected end point + assert(exit_data_start < self.LONG_DATA_END_ADDR) self.rom.set_bytes(exit_data_start, exit_data) def mod(self): diff --git a/data/maps.py b/data/maps.py index 216312cf..eeec6175 100644 --- a/data/maps.py +++ b/data/maps.py @@ -14,6 +14,9 @@ import data.world_map_event_modifications as world_map_event_modifications from data.world_map import WorldMap +import instruction.asm as asm +from memory.space import Reserve + class Maps(): MAP_COUNT = 416 @@ -264,6 +267,14 @@ def _fix_Cid_timer_glitch(self): new_le.event_address = space.start_address - EVENT_CODE_START self.add_long_event(map_id, new_le) + def _disable_saves(self): + # Ironmog mode -- disable saves + space = Reserve(0x32ead, 0x32eae, asm.NOP()) + space.add_label("DISABLE SAVE", 0x32ebf) + space.write( + asm.BRA("DISABLE SAVE") # replace the vanilla BPL $2EBF to always branch) + ) + def mod(self, characters): self.npcs.mod(characters) self.chests.mod() @@ -271,6 +282,8 @@ def mod(self, characters): self._fix_imperial_camp_boxes() self._fix_Cid_timer_glitch() + if self.args.no_saves: + self._disable_saves() def write(self): self.npcs.write() diff --git a/data/npcs.py b/data/npcs.py index 79696e5e..86d91120 100644 --- a/data/npcs.py +++ b/data/npcs.py @@ -3,6 +3,7 @@ class NPCs(): NPC_COUNT = 2192 DATA_START_ADDR = 0x041d52 + DATA_END_ADDR = 0x046abf def __init__(self, rom): self.rom = rom @@ -33,7 +34,6 @@ def add_npc(self, index, new_npc): if new_npc.sprite == 109: new_npc.split_sprite = 1 - npc_data_start = self.DATA_START_ADDR + index * NPC.DATA_SIZE self.npcs.insert(index, new_npc) self.NPC_COUNT += 1 @@ -52,4 +52,7 @@ def write(self): for npc_index, npc in enumerate(self.npcs): npc_data = npc.to_data() npc_data_start = self.DATA_START_ADDR + npc_index * NPC.DATA_SIZE + # Assert that the address being written doesn't go beyond the expected end point + # If it does, then the npc_index is too high -- you've added more NPCs than the ROM can handle + assert(npc_data_start < self.DATA_END_ADDR) self.rom.set_bytes(npc_data_start, npc_data) diff --git a/data/text/text2.py b/data/text/text2.py index 8833a2d5..f8383c27 100644 --- a/data/text/text2.py +++ b/data/text/text2.py @@ -27,7 +27,7 @@ '' : 0xd8, '' : 0xd9, '' : 0xda, - '' : 0xdb, + '' : 0xdb, '' : 0xdc, '' : 0xdd, '' : 0xde, diff --git a/event/burning_house.py b/event/burning_house.py index c67ad35f..501081ad 100644 --- a/event/burning_house.py +++ b/event/burning_house.py @@ -34,6 +34,9 @@ def mod(self): self.flame_eater_mod() self.wake_up_mod() + if not self.args.fixed_encounters_original: + self.fixed_battles_mod() + if self.reward.type == RewardType.CHARACTER: self.character_mod(self.reward.id) elif self.reward.type == RewardType.ESPER: @@ -131,6 +134,29 @@ def wake_up_mod(self): space = Write(Bank.CB, src, "burning house wake up") self.wake_up = space.start_address + def fixed_battles_mod(self): + # BH has 12 fixed encounters that all share the same pack ID + # to increase the variety of encounters, we are adding 1 more and swapping 6 of the flames to it + # 415 is an otherwise unused encounter + + replaced_encounters = [ + (415, 0xBE6FF), + (415, 0xBE740), + (415, 0xBE70C), + (415, 0xBE733), + (415, 0xBE726), + (415, 0xBE74D), + ] + for pack_id_address in replaced_encounters: + pack_id = pack_id_address[0] + # first byte of the command is the pack_id + invoke_encounter_pack_address = pack_id_address[1]+1 + space = Reserve(invoke_encounter_pack_address, invoke_encounter_pack_address, "flame invoke fixed battle (battle byte)") + space.write( + # subtrack 256 since WC stores fixed encounter IDs starting at 256 + pack_id - 0x100 + ) + def character_mod(self, character): shadow_npc_id = 0x1d shadow_npc = self.maps.get_npc(0x15f, shadow_npc_id) diff --git a/event/debug_room.py b/event/debug_room.py index 483c5f47..87b58724 100644 --- a/event/debug_room.py +++ b/event/debug_room.py @@ -1,5 +1,6 @@ from event.event import * from data.npc import NPC +from music.song_utils import get_character_theme class DebugRoom(Event): # Using the 3 Scenarios room as our debug map @@ -21,6 +22,7 @@ def _add_recruit_npc(self, character, x, y, direction): src = [ field.RecruitCharacter(character), field.PlaySoundEffect(150), + field.StartSong(get_character_theme(character)), field.Return(), ] space = Write(Bank.CC, src, "Recruit NPC") diff --git a/event/event_reward.py b/event/event_reward.py index f1063e2e..ce722994 100644 --- a/event/event_reward.py +++ b/event/event_reward.py @@ -51,6 +51,15 @@ def choose_reward(possible_types, characters, espers, items): assert(item_possible) return (items.get_good_random(), RewardType.ITEM) +# Documentation from AtmaTek: +# The main idea for gating is that we have y characters that we want to distribute amongst x checks with equal probability while also guaranteeing a path between them. The natural approach is to take our starting character(s), put the checks they unlock into a pool, pick a check at random from the pool, assign a character to it then put that character's checks into the pool and repeat until all characters have been assigned. This is basically the approach WC takes (and I assume what other gating randomizers do as well). +# However, there is a problem. We guaranteed a path but the x original checks no longer all have an equal probability of being assigned a character in a single seed. I think the easiest way to picture it is to imagine you have a bag with a red marble and a blue marble. You pick one at random so both red and blue have a 50/50 chance. Let's say you pick blue then take it out and replace it with yellow. Now you pick again with a 50% chance of red and a 50% chance of yellow. However, red has now had 2 chances to be picked with 50% odds while yellow has only had 1 chance. This means that checks which were unlocked by characters assigned by the algorithm earlier will have a higher chance of rewarding a character than checks unlocked by characters assigned later. In other words, the checks unlocked by the first character had many more chances to be picked than the checks unlocked by the 13th character. + +# Broadly speaking, for a randomizer with a gating mechanic and decently balanced checks (never really true, but something many believe should be a goal), a breadth-first-search is the optimal approach to unlocking gates. +# I am not sure if/how other randomizers handle this (and would be interested in learning). However, in an attempt to compensate, the WC code at line 53 in event_reward.py instead picks the "marbles" with a weighting based on how long they have been in the "bag". So instead of 50/50 red and yellow, red will now have lower odds than yellow. With the given algorithm, it is not possible to make them entirely equally weighted because a decision has already been made by the time yellow is added. Instead, I somewhat arbitrarily opted to make new "marbles" twice as likely so red will have 33% chance and yellow 66%. +# My hope is that in practice (when combined with the unequal value of some checks and real-time opportunities like checks a player is already close to) this compensation is enough to offset the breadth-first-search skew. If it ever becomes a more serious issue then the compensation can be adjusted or entirely new approaches may be possible (like possibly finding a new algorithm with a depth-first-search skew and randomly choosing between them). + + # weight reward slots based on how long they have been in the reward pool (longer means lower odds) # the first events unlocked will have more chances to be picked, this balances it somewhat by lowering their odds each time they aren't picked # specifically, when an event is added to the pool it is twice as likely to be picked as an event added in the previous iteration diff --git a/event/events.py b/event/events.py index f1d40477..c5c072a7 100644 --- a/event/events.py +++ b/event/events.py @@ -171,4 +171,4 @@ def validate(self, events): for event in events: char_esper_checks += [r for r in event.rewards if r.possible_types == (RewardType.CHARACTER | RewardType.ESPER)] - assert len(char_esper_checks) == CHARACTER_ESPER_ONLY_REWARDS, "Number of char/esper only checks changed - Check usages of CHARACTER_ESPER_ONLY_REWARDS and ensure no breaking changes" \ No newline at end of file + assert len(char_esper_checks) == CHARACTER_ESPER_ONLY_REWARDS, f"Number of char/esper only checks changed - Check usages of CHARACTER_ESPER_ONLY_REWARDS and ensure no breaking changes. Expected: {CHARACTER_ESPER_ONLY_REWARDS}, Actual: {len(char_esper_checks)}" diff --git a/event/floating_continent.py b/event/floating_continent.py index 2782a099..dceebaa6 100644 --- a/event/floating_continent.py +++ b/event/floating_continent.py @@ -118,11 +118,17 @@ def airship_battle_mod(self): def airship_fixed_battles_mod(self): # change iaf battles to front attacks, even if the original pack id happens to be the new random one # because other random formations in the pack may not work with pincer attacks - pack_id = 382 # sky armor / spit fire + + # adding an unused pack id (416) to increase variety of encounters battle_background = 48 # airship, right - start_addresses = [0xa5932, 0xa59fc, 0xa5a0d] - for start_address in start_addresses: + pack_start_addresses = [ + (382, 0xa5932), #sky armor / spit fire + (416, 0xa59fc), #unused + (382, 0xa5a0d)] #sky armor / spit fire + for pack_start_address in pack_start_addresses: + pack_id = pack_start_address[0] + start_address = pack_start_address[1] space = Reserve(start_address, start_address + 2, "floating continent iaf invoke fixed battle") space.write( field.InvokeBattleType(pack_id, field.BattleType.FRONT, battle_background, check_game_over = False), diff --git a/event/lete_river.py b/event/lete_river.py index 09b9cf08..21eee48b 100644 --- a/event/lete_river.py +++ b/event/lete_river.py @@ -1,6 +1,8 @@ from event.event import * class LeteRiver(Event): + BATTLE_1_INVOKE_ADDR = 0xb0498 # the event code that initiates fixed battle 1 + BATTLE_2_INVOKE_ADDR = 0xb04a1 # the event code that initiated fixed battle 2 def name(self): return "Lete River" @@ -27,6 +29,7 @@ def mod(self): if not self.args.fixed_encounters_original: self.fixed_battles_mod() + self.fixed_battle_location_mod() self.before_ultros_mod() self.ultros_mod() self.after_ultros_mod() @@ -63,7 +66,7 @@ def fixed_battles_mod(self): battle_background = 13 # raft, right # NOTE third fixed battle at 0xb09c8 is removed, it was part of terra/edgar/banon scenario - fixed_battles = [(pack1_id, 0xb0498), (pack2_id, 0xb04a1)] + fixed_battles = [(pack1_id, self.BATTLE_1_INVOKE_ADDR), (pack2_id, self.BATTLE_2_INVOKE_ADDR)] for pack_id_address in fixed_battles: pack_id = pack_id_address[0] start_address = pack_id_address[1] @@ -75,8 +78,71 @@ def fixed_battles_mod(self): battle_background, check_game_over = False), ) + def fixed_battle_location_mod(self): + # to eliminate randomness across runners of the same seed, this eliminates the 50% chance encounters and turns some of them into 100% encounters + # This causes this many encounters based on your first choice if you don't go up at the second choice: + # - Left: 4 Fights total + # - Straight: 5 Fights total + # - Right: 4 Fights total + # The Second Choice Up loop adds 2 fights + + # This contrasts with vanilla, in which: + # - Left/Right (with no Up Loop) can give you max 9 fights/min 2 fights + # - Straight (with no Up loop) can give you max 10 fights/min 3 fights + # - The Up loop adds 3 fights possibilities + + # Change to make to each encounter + TO_NOOP = 0 # ensure no encounter + TO_BATTLE_1 = 1 # force battle 1 + TO_BATTLE_2 = 2 # force battle 2 + # this list stores all of the calls to the 50% chance encounter subroutine and the change that we're making + chance_encounter_calls = \ + [ # There is a Forced battle 1 before Straight/Left/Right choice + # Straight + (0xB0690, TO_NOOP), + # Forced battle 1 here + (0xB06B4, TO_BATTLE_2), + (0xB06D0, TO_NOOP), + # Forced battle 1 here + # Left + # Forced battle 1 here + (0xB071B, TO_NOOP), + (0xB0734, TO_BATTLE_2), + (0xB0744, TO_NOOP), + # Right + (0xB076A, TO_NOOP), + # Forced battle 1 here + (0xB07A0, TO_BATTLE_2), + (0xB07B6, TO_NOOP), + # After First Cave, before Up/Left choice + (0xB07DD, TO_NOOP), + # Up + (0xB0809, TO_BATTLE_1), + (0xB081E, TO_BATTLE_2), + (0xB082D, TO_NOOP), + # Left + (0xB084E, TO_BATTLE_2), + # After Second Cave, before Boss + (0xB0873, TO_NOOP), + (0xB08A8, TO_NOOP), + ] + + for chance_encounter_call in chance_encounter_calls: + start_address = chance_encounter_call[0] + end_address = start_address+3 + action = chance_encounter_call[1] + space = Reserve(start_address, end_address, "lete river call invoke battle subroutine", field.NOP()) + if action == TO_BATTLE_1: + space.write( + field.Call(self.BATTLE_1_INVOKE_ADDR) + ) + elif action == TO_BATTLE_2: + space.write( + field.Call(self.BATTLE_2_INVOKE_ADDR) + ) + def before_ultros_mod(self): - space = Reserve(0xb05a5, 0xb05e3, "lete river heal party, here we go", field.NOP()) + space = Reserve(0xb05a5, 0xb05e3, "lete river heal party, here we go", field.NOP()) # unused dialog 0166 -- Here we go! This raft'll take us to Narshe! if self.args.character_gating: space.write( field.ReturnIfEventBitClear(event_bit.character_recruited(self.character_gate())), @@ -85,7 +151,7 @@ def before_ultros_mod(self): field.Branch(space.end_address + 1), # skip nops ) - space = Reserve(0xb0617, 0xb063c, "lete river tutorial", field.NOP()) + space = Reserve(0xb0617, 0xb063c, "lete river tutorial", field.NOP()) # unused dialog 0169 # skip setting started raft ride bit to avoid side effects (terra/edgar/banon party in narshe) space = Reserve(0xb066f, 0xb0670, "lete river set started raft ride bit", field.NOP()) @@ -97,7 +163,7 @@ def before_ultros_mod(self): field.BranchIfEventBitSet(event_bit.RODE_RAFT_LETE_RIVER, 0xb092b), ) - space = Reserve(0xb08ea, 0xb08ec, "lete river what is it?", field.NOP()) + space = Reserve(0xb08ea, 0xb08ec, "lete river what is it?", field.NOP()) # unused dialog 0142 What? WHAT IS IT? def ultros_mod(self): boss_pack_id = self.get_boss("Ultros 1") @@ -121,7 +187,7 @@ def after_ultros_mod(self): space = Write(Bank.CB, src, "lete river after ultros") after_ultros = space.start_address - space = Reserve(0xb0916, 0xb091a, "lete river call after ultros", field.NOP()) + space = Reserve(0xb0916, 0xb091a, "lete river call after ultros", field.NOP()) # unused dialog 0171 SABIN!!! space.write( field.Call(after_ultros), ) diff --git a/event/lone_wolf.py b/event/lone_wolf.py index ce93f05b..e6393aa2 100644 --- a/event/lone_wolf.py +++ b/event/lone_wolf.py @@ -8,7 +8,11 @@ def character_gate(self): return self.characters.MOG def init_rewards(self): - self.reward1 = self.add_reward(RewardType.CHARACTER | RewardType.ESPER | RewardType.ITEM) + if self.args.no_free_characters_espers: + self.reward1 = self.add_reward(RewardType.ITEM) + else: + self.reward1 = self.add_reward(RewardType.CHARACTER | RewardType.ESPER | RewardType.ITEM) + self.reward2 = self.add_reward(RewardType.ITEM) def init_event_bits(self, space): @@ -70,7 +74,16 @@ def chase_mod(self): space = Reserve(0xcd402, 0xcd402, "lone wolf pauses before turning right") space.write(field.Pause(0.5)) # shorten from 2 seconds + def character_music_mod(self, character): + from music.song_utils import get_character_theme + src = [ + field.StartSong(get_character_theme(character)), + ] + space = Reserve(0xcd606, 0xcd607, "Play Song Mog") + space.write(src) + def character_mod(self, character): + self.character_music_mod(character) self.mog_npc.sprite = character self.mog_npc.palette = self.characters.get_palette(character) diff --git a/event/mt_zozo.py b/event/mt_zozo.py index 6b43c0b8..fe54b824 100644 --- a/event/mt_zozo.py +++ b/event/mt_zozo.py @@ -8,7 +8,10 @@ def character_gate(self): return self.characters.CYAN def init_rewards(self): - self.reward = self.add_reward(RewardType.CHARACTER | RewardType.ESPER | RewardType.ITEM) + if self.args.no_free_characters_espers: + self.reward = self.add_reward(RewardType.ITEM) + else: + self.reward = self.add_reward(RewardType.CHARACTER | RewardType.ESPER | RewardType.ITEM) def init_event_bits(self, space): space.write( diff --git a/event/narshe_moogle_defense.py b/event/narshe_moogle_defense.py index e291385a..edd6abcc 100644 --- a/event/narshe_moogle_defense.py +++ b/event/narshe_moogle_defense.py @@ -141,6 +141,7 @@ def add_moogles_to_parties(self): space = Reserve(0xca905, 0xcaa03, "moogle defense party creation", field.NOP()) space.write( src, + field.SetEventBit(event_bit.CONTINUE_MUSIC_DURING_BATTLE), # cause locke's theme to keep playing through battles field.Branch(space.end_address + 1), # skip nops ) diff --git a/event/opera_house_wob.py b/event/opera_house_wob.py index 109a556c..2184871b 100644 --- a/event/opera_house_wob.py +++ b/event/opera_house_wob.py @@ -54,6 +54,9 @@ def mod(self): self.ultros_battle_mod() self.after_battle_mod() + if not self.args.fixed_encounters_original: + self.fixed_battles_mod() + if self.reward.type == RewardType.CHARACTER: self.character_mod(self.reward.id) self.character_music_mod(self.reward.id) @@ -98,6 +101,25 @@ def begin_performance_mod(self): field.Call(initialize), ) + def fixed_battles_mod(self): + # The rafters have 5 fixed battles, all with the same pack (281) + # to increase the variety of encounters, we are adding 1 more and swapping 2 of the rats to it + # 414 is an otherwise unused encounter + + replaced_encounters = [ + (414, 0xAC37B), + (414, 0xAC3B4), + ] + for pack_id_address in replaced_encounters: + pack_id = pack_id_address[0] + # first byte of the command is the pack_id + invoke_encounter_pack_address = pack_id_address[1]+1 + space = Reserve(invoke_encounter_pack_address, invoke_encounter_pack_address, "rat invoke fixed battle (battle byte)") + space.write( + # subtrack 256 since WC stores fixed encounter IDs starting at 256 + pack_id - 0x100 + ) + def performance_mod(self): # change celes to party leader maria_action_queues = [ diff --git a/event/owzer_mansion.py b/event/owzer_mansion.py index ae8eefd8..b0472c53 100644 --- a/event/owzer_mansion.py +++ b/event/owzer_mansion.py @@ -111,11 +111,13 @@ def chadarnook_battle_mod(self): def character_music_mod(self, character): from music.song_utils import get_character_theme - - space = Reserve(0xb4d1f, 0xb4d20, "Play Song Relm") - space.write([ + src = [ field.StartSong(get_character_theme(character)), - ]) + ] + space = Reserve(0xb4d1f, 0xb4d20, "Play Song Relm") + space.write(src) + space = Reserve(0xb4cc6, 0xb4cc7, "Play Song Relm") + space.write(src) def character_mod(self, character): self.character_music_mod(character) diff --git a/event/serpent_trench.py b/event/serpent_trench.py index 6afdeffa..a6a5c03e 100644 --- a/event/serpent_trench.py +++ b/event/serpent_trench.py @@ -22,8 +22,35 @@ def mod(self): elif self.reward.type == RewardType.ITEM: self.item_mod(self.reward.id) + if not self.args.fixed_encounters_original: + self.fixed_battles_mod() + self.log_reward(self.reward) + def fixed_battles_mod(self): + # Serpents Trench has 3 fixed encounters: + # 275 - encountered once (first battle) + # 276 - encountered 3 times + # 277 - encountered 3 times + # to increase the variety of encounters, we are adding 4 more and swapping 2 of the 276 and 2 of the 277s + # 410 - 413 are otherwise unused fixed encounters + + replaced_encounters = [ + (410, 0xA8BB7), + (411, 0xA8C25), + (412, 0xA8BD0), + (413, 0xA8C6C), + ] + for pack_id_address in replaced_encounters: + pack_id = pack_id_address[0] + # first byte of the command is the pack_id + invoke_encounter_pack_address = pack_id_address[1]+1 + space = Reserve(invoke_encounter_pack_address, invoke_encounter_pack_address, "serpent trench invoke fixed battle (battle byte)") + space.write( + # subtrack 256 since WC stores fixed encounter IDs starting at 256 + pack_id - 0x100 + ) + def cave_mod(self): self.maps.delete_event(0x0a7, 12, 22) self.maps.delete_event(0x0a7, 13, 18) diff --git a/event/zozo.py b/event/zozo.py index 4937a024..67dbbf32 100644 --- a/event/zozo.py +++ b/event/zozo.py @@ -47,9 +47,10 @@ def mod(self): self.log_reward(self.reward) self.set_clock_mod() - if self.args.random_clock: - time = self.randomize_clock_mod() - self.log_change("6:10:50", time) + + # always randomize clock + time = self.randomize_clock_mod() + self.log_change("6:10:50", time) def add_gating_condition(self): src = [ diff --git a/graphics/palettes/custom/Bartz (Knight)-HoxNorf-FF5.pal b/graphics/palettes/custom/Bartz (Knight)-HoxNorf-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..ffb45b68550d7483f069925766a9761b2b4efe21 GIT binary patch literal 32 ncmZRuNap#U-^=ksRajEqIYz0WZb9N6fiR9|GH$v-R#E-{u$Ky_ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Daryl-IvaarForkbeard_Odbarc-FF6.pal b/graphics/palettes/custom/Daryl-IvaarForkbeard_Odbarc-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..799834076b0d5936deec8385f05def3fbe613ccd GIT binary patch literal 32 ncmZQzNaFaP&%hbZ^o~K^eW&CW0U-v-x`Nz*q6@jaj2ChNlKu(x literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Eirin-HoxNorf-Touhou.pal b/graphics/palettes/custom/Eirin-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..0e034a197d796b666905178d25943a747ff9e874 GIT binary patch literal 32 ocmZRuNap#Ue@5ba-Z{tk;6JjV0=yia0WKEmmgj1>8~slP0M3mJz5oCK literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Lenna (Beastmaster)-HoxNorf-FF5.pal b/graphics/palettes/custom/Lenna (Beastmaster)-HoxNorf-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..4e3e445525ef744ff803da9cf3a305fd8afe478f GIT binary patch literal 32 ocmZRuaN_u1zfAGJgSbh&_aE5tOQSc<{ymDWZZOvtfKq@yxj{e literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Lenna (Summoner)-HoxNorf-FF5.pal b/graphics/palettes/custom/Lenna (Summoner)-HoxNorf-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..72711402306747c654bc9c5cb1bc85ac291cec21 GIT binary patch literal 32 ocmWevaN_u1zfAGJgSbh&_aE5?rUcgi+4c6{MB??{F?`Yl0LSDE!vFvP literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Lenna (Thief)-HoxNorf-FF5.pal b/graphics/palettes/custom/Lenna (Thief)-HoxNorf-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..cbc6de51276aba0634db507655ed98294bec5d59 GIT binary patch literal 32 ocmZRuaN_u1zfAGJgSbh&_aE73QjdABt6mhCDzV2j%Kv{l0Mbhhj{pDw literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Marth-HoxNorf-FE.pal b/graphics/palettes/custom/Marth-HoxNorf-FE.pal new file mode 100644 index 0000000000000000000000000000000000000000..77da7e7112f9a3fef92139f5f42837aa9dabff8d GIT binary patch literal 32 ncmZQzNamSWuAs2Ur_n&pSz2kSfufA8{1w4xGH$v-R#E-{i!2D= literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Ridley-JamesWhite89-Metroid.pal b/graphics/palettes/custom/Ridley-JamesWhite89-Metroid.pal new file mode 100644 index 0000000000000000000000000000000000000000..616006de7226b83326cc9c33889e43ff26a336c9 GIT binary patch literal 32 ocmZQzNamSW&Z8ld|Iy}-(>BQf)z>2V;Y(E2Ezi|%H~OCp0I**SR{#J2 literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Riku-HoxNorf-KH.pal b/graphics/palettes/custom/Riku-HoxNorf-KH.pal new file mode 100644 index 0000000000000000000000000000000000000000..b1a2bd66c83c8de1e2cc46ec0e6ce302f2bdbb21 GIT binary patch literal 32 ncmZRuNap#U?-2JrtH;(ZURp0b^N7PdW-+c~lELbFveT>py$lM? literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Samus-Badass-Metroid.pal b/graphics/palettes/custom/Samus-Badass-Metroid.pal new file mode 100644 index 0000000000000000000000000000000000000000..b0b249b37e2aeab77faaabaf99f2e9fcbb1edfae GIT binary patch literal 32 ncmZRuNap#U&%>ao-5@3JzEifE!I)t`TRiJF0XeOA44*UsjARKi literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Suika-HoxNorf-Touhou.pal b/graphics/palettes/custom/Suika-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..b8fb4f02b0bca4ff541b0b6b1ca2ed07ceb7c1f6 GIT binary patch literal 32 ocmZRuNap#UpTqK3^$JIP@E_SZ8pR?ysj3d@mgj1>8~slP0K--ch5!Hn literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Yamame-HoxNorf-Touhou.pal b/graphics/palettes/custom/Yamame-HoxNorf-Touhou.pal new file mode 100644 index 00000000..7c91974d --- /dev/null +++ b/graphics/palettes/custom/Yamame-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +Bc ÿo)ž7õ_SûÏj +%ÇæF-R:ZO \ No newline at end of file diff --git a/graphics/palettes/palettes.py b/graphics/palettes/palettes.py index 1d2fe2b9..4fb8070d 100644 --- a/graphics/palettes/palettes.py +++ b/graphics/palettes/palettes.py @@ -282,6 +282,19 @@ 344 : "Cleon (Player 1)-HoxNorf-PB4", 345 : "Cleon (Player 2)-HoxNorf-PB4", 346 : "Koishi-HoxNorf-Touhou", + 347 : "Yamame-HoxNorf-Touhou", + 348 : "Suika-HoxNorf-Touhou", + 349 : "Eirin-HoxNorf-Touhou", + 350 : "Riku-HoxNorf-KH", + 351 : "Daryl-IvaarForkbeard_Odbarc-FF6", + 352 : "Samus-Badass-Metroid", + 353 : "Ridley-JamesWhite89-Metroid", + 354 : "Marth-HoxNorf-FE", + 355 : "Bartz (Knight)-HoxNorf-FF5", + 356 : "Lenna (Knight)-HoxNorf-FF5", + 357 : "Lenna (Thief)-HoxNorf-FF5", + 358 : "Lenna (Summoner)-HoxNorf-FF5", + 359 : "Lenna (Beastmaster)-HoxNorf-FF5", } def get_path(id_): diff --git a/graphics/portraits/custom/Daryl-IvaarForkbeard-FF6.bin b/graphics/portraits/custom/Daryl-IvaarForkbeard-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..91323c41e9b840ac83290dfbb60edc94f761c3ff GIT binary patch literal 800 zcmZQzAPkro*jd;Z*ccdC#JRz$nHgEw8Tc8w#aU$7q+IzQvp-|MDibLcHe>l^Mg{{f zix!JUCC+7xDc!n3tqzQARjhNW_ovr?umAtQ<{#rf#{UdASkxQJ8R{8o;FdEp!I=;S zGlb$})M1omv}L@aDaOmg%FS%cY{@RbXTwz5EzBz|Zezj}uk7D+Kh#U}f!7lE;LCfM z7BFvUT5x#F@)_qRELaneJmKYq=ZUkQO1=^N#kzXl{Q5S@6XG&S^AaZIK9J60yw6bZ zqwf9w+Wmj${dxQ1{etT+3fS`)Y#VGF<}f~xUm$-%{QQAE%?^@JnVvB?aIi57ryR6v zu2H}7p8*8_G0x0mbg5;~XYgvc_t5?XFHh0D-9G;t{vImnmQyf0_{mtspYtZ;VeZFn zr$rypvbTQWN$h8Y#|LXSV&&Hp_ z_oIb623MOom$fL8$8PSO&o}m6%yQ&0k#b}6b-diXAiaaHQO?ox{^mDV|662)M9)0@ z%3a7`ZF_vYme%y^OIBE>DBWP%@O}HokF%{Zs}35;ELwDD-OcSBg?+Q#x}O-Iv38lN zHBFI$ftiVwO;n6qLX^peVJFZNj7$uyEP~uB>;mzO^+&W>nY9{cFd1J#vmn>W7#*fD-WM~0U24iGIE2gXdH zOAEGiZ8j}0T#{-nV*5TVeXQ(Leg$8FPkEKN3j&C7*?!eXC0*6BznPm;B>!$aW32aU zXztt!N2aD}6PZU&417^=K*je~_wpQbqX82L%JzZ|@aAgT1|(dJ59020329yVu&~P- z59Kl>0kI+}2uHnH-2yxy0K$v_)P{ZLV#A*C%&U3IM%fgXpbehF)gtR$q9K)*v&S(3 zh7i}NCz*P!AE`2w6H}Q)9i!u2eCOJZZIR0SFG2HNw zeb2u7cCA@n6PIguC>yfb+3Z3gFS_%?(ao?Jh8>pYX}&aLxAUMl6nz_QXFX~UX}I9~ zQ}^q*zzL&cNn`p_>UJDsS?NETx${WrhpDL4n)Oj7Q6kB!+fE&Nomu&f{g7t; zdjn21aBR!WgL z^7Oq=N1k5r-t-T8ivvSbBSKiXd{K&P1j8|RO zKt*WPCY^(@6Aoh{n*aq8d9rVWs29b!C?4~q4UYa+0D9&%Xrj_JRz>JfsaQnV(5yAI zy76UudpEKxYk07M59R_UohDgZt}UnQXm@3Yy~AE%H0Veupo9u^0u5qYt<^L6U1Lu! zEIQk6UcOO}2XNuEVQF7LAsqDQTJN6KTn+lI&DVyop8D|pxRVOk3Wk8Q3L}MczH=$& zQvY;k!_%^+riJOw)%g|GMUuuSg6Kj9N_n{-*?0sJBzMUOFGV@NJivrye4LCE=D#WO zDG$NPfI%bQ$S)(vxC9kmXJ@1`4UQbWnc+eLJ>9wWB7A)Coab2 zY78WCRQg&qh)hkUMne#LZ4vnA%fb6~Yt+=?$HrIfZim}($keaklr`3;sfy_@fmh`558hQu451-C{GqvK&{YGdAf?6y^ElbpuiQpZCyI=pFO}j zkBo5YY8Dn0p&Bb#Ks#Qb?OtxA3V{>&&P{~9m(mLrg?J|^Q_&1JZXv!C9}sP#ec0$| zFnLYR398O(t1ou?%-(cPBhaZ(l1fqwEtN%Q5Sj9mB~;RQDWQQDLvwx4*B$MPW$xkI zlfAun1eKuIn^UZOcD*62^(kKle?))9l5B^1ws7W38mp!yqH5+FH`7zom*1D)U)z$s x`Eg^aJ4?Mx%oFqEGPzkCIL?>wL!@V11V8MNW_VpZDcX6OhX*1tF12CCn?J|8vp;t6{{EsX3uCxX8-^I literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (Knight)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Knight)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..1a39bae1064d762963fed165a680eef3bff57443 GIT binary patch literal 800 zcma)(Ur19?9LIn6+_UZ8ZLPC)wZ*18(~+8_C1ggSr}@yGQB2Ucs@leXNBHhIn zVzKY_X6L)}+<8`q4Iv-$VHK;=Ngc0b_rK_g`-u@kCMHJBQ6tSF&B0OsGp$^!dU*BT zjf%F`g_0JNAg`ew+QPfA&dIm(%#izM~*!=+9FN~@Ax=0f{4sC$<+9W8rpx! zp4A(>wv%UT!~fA77-wA55-h>VGc4LS2f>n6sFASp8iMx$??qt>H0L&JzfWEN#mw42K8Xp5iw27y++w%UpfJK_+>tIm24DBpO%;At%+fjKxuY8@!s+U6ykT6e zxjtGInW=2}b1sOYN!)E!wsq!rB_NRRsW=fn9=Z7P7-NtHi`i_(G8hDmWF%t;=viY0eMhKg#PxoFdrliBjl7}nEKSiC`%!jy z(KUIdXhB}Z>xK+J-bonDti(ry%~s4r(VMl9pb!`cftm2!aA&% jEukfp!k|p#wFg&dvrr843qO$jRPK;hY|TZ6é_O\ Àe \ No newline at end of file diff --git a/graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..374b312638472620cdb045f6f03f93a700385bfa GIT binary patch literal 800 zcmY+Be@GKy7{|YNw|Psqb*I#ZMqak2l&Se6Doc+dT1(Ip)Y9@m6MtmrAEl=0sSp-{ zgVI(YtymB=Wf25Y;Z+6;l1Y%R5*+VUzYKS4*55_=F#{vgW74B5_g7_5xO9I}UuAmf)cHdq`A&Y}<&r^P1MY$1)Jli=bPwPTH!XD0kEDP6LoUdjUxpkY3v_>XCGt)v}t+l~) zC9d`41$OoAS98@?%15|}r|_v}R8lJ9#Hq+)XAmp#iz9OnerJ5CHj9xW5I^oseps44 H)YkSNvc2$0 literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.pal b/graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.pal new file mode 100644 index 00000000..26a99bd7 --- /dev/null +++ b/graphics/portraits/custom/Lenna (Summoner)-JamesWhite89-FF5.pal @@ -0,0 +1 @@ +ÿ!|M½w?VÕD ž_Z6ü>_OOéå)`à \ No newline at end of file diff --git a/graphics/portraits/custom/Lenna (Thief)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Thief)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..dd7627701fdd8d5ef60c337dd2a07735c87c1f66 GIT binary patch literal 800 zcmZQzAPz7y@Gy(>8;c`UGc)t^^UFi{{~6x=3yWuNZ#)i@m;b;1KL|kh9~jg^M5fc=W~hZV)-v4JU3aI)f$f3&0>J|g77R@q zODBXYItwhGaNNU8FCcK;yu=@!^X2{d_4(V`PcmjO2r{zw!`uU+8yF5WAoGDD4GRt| zI4}VW1r7)_2s9i3f(J-Ipuu24fWw9b1_=QP0S_hsmXT2o`2$uw_o;XMk~mV!#-(pY~|&kz1T!g{3%ubK1|Vvtjt%P|on4QI3J1f&ak0 z#zu&V%natazzP8BPIpaM0I<1b`6FIhVKk-8SXR8 zV`w~l;Nc&}L$-{c5;`BWq=I<~-f$?b)s9{Qv)Z zAbkG+`~UKKbNl)79ITuytW4}cyO_XMGl6Lc2@?3LT526{A8)HCEzc*$$Iq<5rohLi zz^TR{&Lzme&B(I*%*TH}!SL6guQ#(lGWZwpOR#eQ;SY9!_X%?|oy(NV6)K%$1pgm+ zJ2@|y{W|k%h7~~aGsgk##oUKWxV$%9Sg_&1`G!_g<)Yvp*3AM93m6(4HW*aZ|M~al FF93PK`vp;t6{{Es2j4|8`7!!m5$&U)I literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Marth-HoxNorf-FE.bin b/graphics/portraits/custom/Marth-HoxNorf-FE.bin new file mode 100644 index 0000000000000000000000000000000000000000..e547feeb2b476b3119826f393ecbbf27ac9a2c2d GIT binary patch literal 800 zcmZvZZAepL6vxkV?`^x*^xi4iQ1sr3#h_tx##$iWi698F4`LEY`0~Zohv8d-Dcda} z3?ye+q=jffNFTCHNX_yt!9|$chr*XoS07ZU=AdXx$JTT0MTP#q56^S{2hMrUa}Xj( zN=Y*;#|xDe?w15mKm!XrSU?1<7!y9}YwizNR|nd;`8Dh)6-+Xt)tu&ei<~D70~%;` zI+MOYjNJe*%m~xYHj%_RSuu#!GSpG&#mw;4rXtg}C;EN4uZVcS9lArMC(14u)y5n( zixA-6GR2r9kO*ohy-{|v{QB9RioWvB#Z><@GnnBxZB*romrzLeM!S|Dkd`IE&siTU!by?jh4ikxD*QBHgPL_Z zsQONY6`Mo^qBNeL0s`|#Q8wVRV;nBWz2Z;$zqWj`m@~Jc)z>bYh(f|%Us$qQBL7AC zS>PA=CEjb8&Gs5R=H2~BP~achD@4FQFKmvefZU0dI9P!ecq&#%S(YR%FlpQh-_VgW z!}$~HKoFU)#Pryet&UJf=NP!eUcJdzZ=!V!y(Fwh<1%l5x8e`?n3)1bH s51Bz`H$UR!o$qE7MbTp1xO%fL^^u$p2=4ADfMr9LsoXlq8_3@lLV9?Qu7ncK3~ zC$|S?KNCY0!zUn|B~emv<$xx`B*qlx7UmB2Ck!1x{T~<}Ff@RbPUM@!qa@>E?5RH4 zPyDR@Oa=xuS2WWJxlWp~}K z=ZTYdurkO2W9R_Ge}IrrGx>x!K@ z?wHZZ!T15=kO(iFaAOof3}6V;hB=qWcvC}ESf@b2zd`qqB4JhgyM&K%-=fC*Y6y!q=u)A3c`nKr4mfM@vgY`oO6c~|wN z?IKn`%0C+!ozZ@D-ZS8RHK@A1FtN@_pqDrnqldXwroDku<_^7;H;VFx7ITYk)ik(-{X z%1Vx_tsNc?2FuEFRdzDn#qX1h^yCEHHK#K>`^*_hN=uXFP^h)Ff?O_!gGr=9luYfP zkQg9IXhE+-cx7qJsNe$#5oEl@J9uy!zf=)TfAWSKy0EK|@om1Mf`(9q8cc!_%kavg zpmoiUnYQcS=8bilj22i>j7<2@P23@zD~uml((Mo&!kw%;>j&u>NFvN4>_!O+P*m?v zIesKDF#CB)T}GR@!dmO4kJ*!6B=`T(Os0pbx|FD?d@^+~xwPfSGKObF7wh73%$bIV z`ukdiR|JCC^SG~XWW;9UE66B^$b@xLv_dvfOdTDONI1<=o}YKCMI9X@`Bl?ZD<9Nj j;qje%KOL)&)kl-xctwtc!O*}Zh|#=W)SJnh+~&}4?=&;D literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Riku-HoxNorf-KH.pal b/graphics/portraits/custom/Riku-HoxNorf-KH.pal new file mode 100644 index 0000000000000000000000000000000000000000..d44300cbb78892b383e798abd60393c648e1823f GIT binary patch literal 32 ocmX?Rc|EBnf2ydB)^mmTuJ@d}80^9oS#~qcV@@z-$!1^x0Nqv#H2?qr literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Samus-Unknown-Metroid.bin b/graphics/portraits/custom/Samus-Unknown-Metroid.bin new file mode 100644 index 0000000000000000000000000000000000000000..05be55c76de9594c33fefdea2210ba140be9517e GIT binary patch literal 800 zcmaKqUr19?9LIn6kKUofJ0)`E>JCZ`qBbePQoA>s(t|LeAS#HJ1bebUfAm4Oi-uwl zw|}5ik{CTn`RA!1>&illti1@19^8hSkfwLe+Fd)lr+YQQr+yze=X}ra$KiZ`=KyRE zal6=B6GS#+wH&ga69$DIW0L@2NY2dL0u=#WYKX!V7h~fFMjipJl4uh{gDfkmNu^a9 zWp8MG@QJU5UQe&bHxxgdDM|0o?3=$hF*epDFft=kIw0y*7Dzgh2j{9k-Rex8@t&_E z{ON0s#$+rskvR$8BGZ7k|6+YkJ8W84gt>ZHd|9yz;J`hc0s>>rd`{?t1Qemv_cA zb3ku?rXXdoBT>9YC+IYzV%P*xX&M*`aZwD2N|-}VZcZdbLZ-$$8$VqADh&FD{`n(7 zcTmT;7}*i!6iJ=bF5`w|ebQkujtT%Ta(1bz%iUwVITz!D0WnQ4k z>5rgnjne7RPN7njSNLAfQ_r%c72ZM^WS9Vd(BEMY5K&OA9d=hiE40uzO!Y^sr30Mn zy-6Z}fHI+8M}7XLX9cURCXQtFzUU!B6qL61s^HzxokdI(0gF}aE_-hKoE4|{kkp2i zE7L9?A+Y@cks}LNo28fV1m1y9&qej$)nLbLhC!@`V|y!6vL#gJ6ID?3tZvhZ?`iU1 Dv|Tp; literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Samus-Unknown-Metroid.pal b/graphics/portraits/custom/Samus-Unknown-Metroid.pal new file mode 100644 index 00000000..8bafe4d3 --- /dev/null +++ b/graphics/portraits/custom/Samus-Unknown-Metroid.pal @@ -0,0 +1 @@ +ÿ%g o‰µ ê jUú½ ["~Bcz^cda \ No newline at end of file diff --git a/graphics/portraits/custom/Suika-HoxNorf-Touhou.bin b/graphics/portraits/custom/Suika-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..743fedcf1fbeb77cf2548a651ebddec6f431a884 GIT binary patch literal 800 zcmXAmTTIhn7>57$?`VaZb%M$Q(kjTf5S?P;Vi>E4h8QEBAx7CI7apRB(FYcOe{jK@W%lS8j9K zd)J$1n_S5(D9m(QHp;U^kNA^0$gm(AR1xx0#&E~*_;ORRb?x0QNtSJx+T__1(#xRIY05Fc%Xk2&acKW2nGuf%XA|xup@HmbbbxH&(XLvRY z#$Z|2CTQW|&=ODM#3=}prfK_Z0eiS@O*~1gIk)|U`?ULt`(~*5w>=8FQ%+4fVmN~N zuH!dC)(z;@mNc4JS<=-xO6R~fI0t^i|KhE{H0e|fmC8N`yxBIQsdn|XaO(d`B9S=&&OK1D?d!NFo(F{~@ zsMwk&v<$V_xgTGNFfHTlb6!@EE~1;$V6us*ijq@9f3W`(E?ODkDFF zIn}G13!XIhb=NL3mmU7dIa9y`qJYjm3=1EwxV?6A>;8F>o#D!_z4Daw{I;UO1`1Le zjY)>N^FKRx6gM%FEXnZYo>>?M)9T>O$gMA5R-N-G3d$YWfa&=dn-c0K*8FXhDD?^ z2=bv?K@UL?_EJ*WW*K{^5Gp7vXf;DJ!C{<9^ihcf^kjr~tn=!mzY?zaVyIQ8*A_Dl|VYKZ6D5VWG@Y(%7W-wYJcVU=iv) zThuQ)qkO|}vO(tXx>FvSZ8hm29B@ba>sTdIn3dVtrc5o%d}ytN0xRs;gj&v)R}-8? zC@^5{mV<8^6NztA0Z!R{;*Rf;@mfz>=Hb#^rl0err581R&SX%Uooh9urI?GF8IE-f z^E_sk3j)u#AcNoV>9~hsg!E{Cl4R@L!w4eaW{T%{%|)e&;pa0kDRKNJ0@N_!JQj^2B- z>%6bWcf)w?o>tH2szesu(pI5V)Fgigi>JS*%FZ}l59b|9x`W11D&`Wc>%Ngj8aeGb zl1*4&_@%+>9JTIMIz=mN79#iSh>ce5#!OcA^4~F&MfliU_3|>g#?=3HFcsuqeM#d= zC(j8b*s|i^Dge(Tr)`o$m?PWZAq`k`-Y$@d!ch~lzV?782Pg0T(u&%iRDU`c(k7pc zm8*Z~@5t2Sx=Ze><`GP*GuI}suvxzl4ul0Z5)K603)*KP(10Nr0SLy($7JH&*S90l zcN4M87X}`@+`K4`lX3TZ55s`TJ&06SbohoZewKgOlD35nVeA<_)YH4qu|-}dTZ+kF D-D&_w literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Umaro (Morph)-CDude-FF6.pal b/graphics/portraits/custom/Umaro (Morph)-CDude-FF6.pal new file mode 100644 index 0000000000000000000000000000000000000000..8764f48b195a0ff702565e2876308a92706f6ea3 GIT binary patch literal 32 ncmZQ@`d=?wU+gEA_uh7E*t}xNWNUpH=4?hyRY8Ud-Go8_z3mDx literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yamame-HoxNorf-Touhou.bin b/graphics/portraits/custom/Yamame-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..9340c6b9aebb0e96172e8508a4b3620ca03859fb GIT binary patch literal 800 zcmX9+ZAep57=G_Pce|GyyQ>U0EO$+?FTsTg+SI#1EJTFxPyNwh5s?u?q81r!*rJFA~kGez~FX=!;1I_ zc0vGDaF_`thC7+kC)4l>5?*2e<8H1VH9>j(GcGh8nt6OKq-=@hteX<8Z%;|f(t;F| zmRzg$lx66~G@a8w{Q4N3ibvyK%|-m8&v`;FlJoP1wtlfMG%!D-pNsnNtQYrSRRu67 zN0TpCj3;3QQfOe#Q^f$l$aq0b}`$5X} z_a2-D#nV#zRwdV6}y3okSdrhOaQT*;cU1lDLG##vcuGVw;SSq+RR%OLZ4=3GHE#!m&>=8;Qt z^S0#~I!7ubM8%-SH8Ex}dfAj?t_ZG5geXUa6r?~$9lSqB<9(%C2s?3TIyi9iCRo7k zb72X4vGgA3CS?|Mbo~APA)+ zipePEu`HiVwz6}YogA$lP^Uw znm~uq2`0h(RUdZ1AQ001HTZp84=XDd`!YH`^3>e4s~Ejwo(Hm1$U+Eg97f_gll|zx zSi(a12zEHGG7N(di>@J#w}_eiE5QuPAc`*EpxnB}Au8^b1@D@-T|0e@gWnSs6)W^x OS664}!&~2{{r-OwxL{BK literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Yamame-HoxNorf-Touhou.pal b/graphics/portraits/custom/Yamame-HoxNorf-Touhou.pal new file mode 100644 index 0000000000000000000000000000000000000000..abc204962715dcc074dc909951936a7bba27d75c GIT binary patch literal 32 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Daryl-IvaarForkbeard_Odbarc-FF6.bin b/graphics/sprites/custom/Daryl-IvaarForkbeard_Odbarc-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..5c4aafdf928036c35c2c5294dbe86242b0a428a5 GIT binary patch literal 5792 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 MYLacQb(y^X0n}rK2><{9 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Eirin-HoxNorf-Touhou.bin b/graphics/sprites/custom/Eirin-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..e29142adf9dbfb61d0fa3d0b6d87b17ef1bdc729 GIT binary patch literal 5792 zcmdT|e{9_38Gikvw$nOir%fAQbG(X*ud`;RM;kdJ4D{NF{+A`E>{bAOMcBR0L z1-OaOSg5KxDJq?YP&BI1Nt0Gh)s#scDzpM`Vp9=WR}F-s(J>1lR*8(Apev{5NcVj9 zUCtMVnCM^o+#j*O*zfbb-}652`+fq&_@c7SD)(f?er_#CL;|%*))I3GrEqyvvTOPa zYO-hCoN|X<%zJdiQO}F#sfsJZt(DixBf?``QBUgyJx(38oVuyq?BsMo7cSATKkR3` zw+>txADX)Nf9`O#VG12eibDdc#F#|Q#!DOPCMb|=`t1UE9%gu7t*Jw%-pBCi7EXAP0=D! z;a_&a=?nbNjD4`_0+o+gPRS1af1DhmBTfH@_KW(yp~rKDj*MQnuX8yew-j6m?bm37 z{UVJjBTC)A;wHSrS#SZExo(OBMPQ!?W|31V#{ADlO{pH6wkArJU!e;8e~8F*Eh+&) zFq-S%k=wd%+dy;u{mOdkuiIzqKcnDV)Lj2r9pADET)l;MaRHd?OVQ*-CYouYR_C^6x$V9Kam^G zN7ru%>L>Uk2_hGZ@PnEP8SsN`XU;$4P35L?Wox<=d=;UZ1Jfs?{1g~J!|%sPBAyHR zdBJ(wdCtGtKkbddyR+UN+D9|=K5cem9=krv{{EM{y{Lc5YxQp{x(g2QMbPa5|Kbv& zr;bj-`lSdu5~Aqdbk7}VLFbYyauP4{JSTvA>@PH1z{NHEe}h{<*)p>r2HL*J%NmOk&b)Ey)EuBE?QeJ?mzG(f0Z1?HgpJ}L#_@f$A~JxHR%_Zk_v5+_zM`^ zh`&(31{dlVZSNnOEPOR3tx%FwOe6?7FLY2_7=Itke5fY<`S@emld$yp_-jYJW@#6< zxpS{LB;G6$saz8N>x1vQz=R4NE&Z|fc7ESPo)Y%c?At8+@qR@%=mLZ=g0`dqT{De+3^|jtC&6bM(KYl+)b99alT2g7F^)6B=M4C5LOUdgA zr7jsP|JEg(=x;!=6zXNd;~uWn#QR{dAKU~hy*B?p9Q*g?-)w$QdiJ|7?W_v5+u(m& zvt_WyVfo|sR{wu8e{7uBhtU5E^{)N(U&UwviW5@vX5OiAoR%@VJ)|gbV1Cvo82G*t1mZ<=ann; zmYeoQ{1I>1-9(CKj!%lys0|oN`njxF?%8IoHViE$2zX-&EiokvTO4fHlsj%FdtOj? z8Ahe#d3fVIofjRICcqPq5c?Zwr}Af-*6!kdu7B7YJ}J`}q7;61LcA|i!F$Gk{%W

S;I)&gwELK2JS^aU`3d<6jh_Qp#xIu;(`B~|;STR8Bc$bw+^la?;A013 zzTFJ#+YxWTzvMUT+bWbs3F_;xz8&#K+^3xA{2}U%%%lFiw)$VlEb5g9>4(xbX-G|~ zsi6KhNHnFa%BkFlcggPbPuQ&fXZ3d#=#Ha`pA$Q9SdJn!I^iOx9dVCO9qkmfUg&(bc_2737Vm|1f{z7k{ zD!)wovwH{k4yL>N;@zlGBxqrl)?(_NPH!*AR7KQz5+M7G@(_LrE zBNL7O?TBcKWis4-*}JTwRy`0vp1*OZNS(jeG5%hnP9O90{52qQtovRgt>?$MZ%el%Ge!sEZw0FG zHd8cF7jvxpe#$vvH}D^VuI>SU8~DTi+e(%DiaIN9>hYHX2ZE6c_@h!%tf31IIK%i; zubvrMLj8Co-LDR=Dlpjt|9Pw3YzG&*sSwX}XS$pGW^0N^_}$>wr}eju{_)fJ!}x1x ztBuA9Mqpo~c;f_vec!0;G8!ism}f4XXq;d`GjM_t)mO%VroIlt>%%Sj${4`TFGBso z_u#6qgU@M2cFRWC!E50jS19b@6O~#xOF+OHiHbrwA&=aUUwVIT|4juwqbHzQ8ZFX= z9G_bTBndB%U(DOj(SDcp&$+<$#}qGN2mN!3hPd6rZS*@ja_gy%85q=M_RTSLwfkuY z!rbzW%0y+-sUWFrVfNYnA>Fva5AW-bCYH1Ql`{m^|9um?(}t)-=t6@HVH4d8m1_2X ztp7Sn&Hhg&RV>n&SyHZ7z9bAV{e^0&W*72QsJ|s|#(F3*v?*a9rIXCQN0yg3rcPod zRl1Q+%jt;!SK_^{i2vWAlm1D6-~9Pa4(hun;{Ry%^{_IC{vBO76lpuOw+~C`igf4y zt-sB1d*xr<{@Yt$&Hmk*+44Ymeq=AUm(u`e-1gb$M~(BV&zrv(`-bH8i|>lqUqn34 zZbJLaVgJvgp%0%|pX+OfEU|2Y>@fd;HF@<1u4@whcuZY`;gSh?#iJ6(mRNOai^ehdbyuKKy} z@mts2tpGo=f+8fiJSEZHt^u0H>DU%4M-zx}jQR5=7U9da4sD67@t=nOX?nw*rCH$r Tr}w8iew^;OG4G%)0snsh$C&ti literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lenna (Beastmaster)-HoxNorf-FF5.bin b/graphics/sprites/custom/Lenna (Beastmaster)-HoxNorf-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..c6fbab953c2046b214ef679843c01b3831155347 GIT binary patch literal 5792 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 KS%-GZ`2PbQg2>MFzkaKGHx}ab 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lenna (Summoner)-HoxNorf-FF5.bin b/graphics/sprites/custom/Lenna (Summoner)-HoxNorf-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..86fe58745acac75646fafc9c0cff22a81940b541 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Marth-HoxNorf-FE.bin b/graphics/sprites/custom/Marth-HoxNorf-FE.bin new file mode 100644 index 0000000000000000000000000000000000000000..5e91d9f2ca9e7ed484bd671a064833fdfc7c3f21 GIT binary patch literal 5792 zcmdT|TWlQF8UA+mcxJuc?2et=`j$P30wlCJo95=k0Z&RxjiA&jy%+`XsG*S3v@wu? zOD;P?X&Y4#<$+3(N`)VgDpiz(mWxFR9*RoSDpjp24^{~Ah_*BjNmxZrV&cp8J2SK1 zSp%h%zI2Xu?VXu({@eF|=l_q644UKfjC^8g?NYP}z(6XVFcx9~avUCt7;%?*DRZAZ zfiVlblXp$;3`Q`{kwenhYh1dqS58}_m_{vPs6n$O-V;~SFlSj;l2hF z4hA?^ieX)%;rLjx)G)O8s61zUS!se;a#Mp_tciU?_YC18PSO|7H=NtVFNLjnnuEUC^55;Mmfy8X$=~a3|J@Z) z&?ZnoC|{G}uaG+4G$=ERdaR^Jq{!1Ebtgl+nmKZ?DKm@xc$^jqnc{O5ks>`m;zuBh zCcf2)J=lpI820DZAjx~`Zh>=q`0gZL!*f`HI)Cl}y8YNqGF~G%#uaTmz_)XpUEt{S zM~1SX*CEdF0H#pl+eLnYaexs}FI41Tw8pCCTh;OpYqR8QO8zho5)m$kjg6svrGwH! zX;9}QO6j2Uc}4y-Z7NpD--%iBxk9!5Z69Jk801!cZG2Vi+x6cUg@m%HR&R+finYZ$ zv7Wz_W_g%a*4mF_rh4wuV*@xs`8L+1=cnhUJH%f31C*?n&`23+%txKnaWgXZR;TEU zV>KRZnZ`uAgR=&>f|qbxfb;OullZQd6lv^=eUJLi0qzqTY7oI2U%s`3 zx9R_D(GI-X^`q41F`#YLOoC~a_G^gPsP>JswBPDfYkve~?bkE<3$Wg-XkSbJn|jeH zQtFQEB+j;t=80_|?TLu(d>R>OCj`H4X^Krk^?YNq)UuR3G6f>$`MU@v2~ z-%fZbq`Z_T@?sb>{#!)PQG?Ws|Dbb;R9yM5NdNbnM10>48Tt<{ZSQlIxy=b5wOTK| z*Tgvq!f}#I6_E+#jTT}#6sH?_@ zQH>Aa6duOC^zBCLS)8RL6*Y zPuOA^4sq>T%C94LmHmrA{(tP>YVEcWG*RsaiN9vOLzJ~kFne^BJ)!k5sE9*zKv1xZwB@0cH@RvufGd8^is&b*l!-=it3Ky-y*+@c&K$vvLk)>>YsN#eRI#M zLi~CpsCi9Z>yP!vSI5N}?sV-wdkk{_xJ2)poTu2sV^mIIRGwUVT5eu^msIQoV|L$yC#oZ&o|3V~V zpP}|;{ByC7<)37%j{I9kpa%XIq+qJ5Q#IfJQT|c>kMNK0|DA0eGx-kT_QXivli$3vyR6CT;Pf!`H;4FiZ(!8h3v^*f5q8!h! zYgA=4=Kl&*$zT;M@jBix-w1WfFqaD0PSy-Ahx4ZKH-48dhp2gt??f+$>sMb6{=#_$ z@xJ)Ow+fOw0v=_p6cgr6{hIm(R#!G;h}j}7FNMSR0-tBe@H%bj#4bKL z!*VaDr;KQQtE`T3uPxWNgI?YnpQ*3+=*kCbV+!hP-5vD$oI$%>f2-#X^{G5pvOiV* zFH%OUzD^73Z&m-+(4MAHKi0oi-W#;fT9x{LfF9`y^=mjjnJj6gNc~;=xlK)$U;kTv z{jKW%Ql$P4>wmjke^dW>i(w{K``t@U0D|3%5q2-N^hVKb_Y&sge)lqN0g~N|M-Qm( z#YD=;h@7bCU&Hhf5&iRCQI5-s{sZ)$jOecuMZewhf^o<^Reu7f?@{&pws_*ch4unF zV{fPYOL+Uu>%7Lq&z8M~iJQPXYhCl*Gx{;Ts9(aU{ijDxUvobGo;A(*Ps{HRKWm8B zdDdKf0akoMzy18Kzdzz$)(U)H5DRbs&*C_iX~(bxnmcxFsiCy^S9;JrWw0sipM01w zfmeL3)K%K|qWx>;!w5f*bwAd{{>i2qe*a=n|3UkCJP%KJqDcR!I~hA?HFNYbR+m^G zKY=G;NJD1Gh{~d(KCX>$T)~Ka(jJxU(X5Nixna)T&b&@Czqy|>f135p`h+MkzYqKU z$0g2w2HnhW)s;;9)xSfIP#oVv*@_?3P~C_@B&&W(afHr1X{YRR|3Qx6ub^9Mj5Wmb zLTcobn7WhZKGuv@uF%SL*(-V3VhT@MPvQm6@L&=YsrhGqxsH8wQK8P zewohm-8#}&yC$&(GK$`!J4bo!iA*pK8M)WX9k_bVN@S)3Z$qQrWV9Q-+NfP(HPJ|qf&HW=6E^!_Z46nj z$7}H(btm*v;@+nY(c@r0=?YU{hNr9-XZ63hA65Ntp#RW4FNghaS^rA@ap#${w&rSV ztG!d+y&8;Fs$Mk4T9Wx|%ysxm{{D5-5qz&?ryIq$%^0+>yFCD1lE;1PqWx_X_k>ae zKVw8$6hFTIA`Hd_@FD(lKhl39ho*A;d47=d5m({YF>4$><@jTdt~kSq@MnlXdYlLp zQi-R0)xih-JA4ElqQ_HwOnTy_BC4`caZsLIqcUX=_ehmLs+$S>cdL_mkRsOv{d>?q zk8@_&zx(~Os#`xz{Zy!5lkQ0GU3xv&QT^Y_pnj4X{h<24pnj_Ke_{QUE%$$F|Hv8H zOdiX%<+#qbo;_Gb<(}HBm92-IE|=C@+|M0leV>zeN5cHek%3zx{!h|-Mr40GV-5}v zM*N?r$IAI9p}W!UeOG!F0aWRK6^ASgyYq5?Tg&_oy7Rz3b$+$TQ2amL{hnDqzft?w zTx%Xa{`^MmUqg$BzK1U%+`m|FkO%0E72Tz-seMPq%U;01PRPHSM@Nu>EAmfo zy_|^3ud@@B&n5n^FNKc^yM6NW#n5&RqBtHAPJ{_?^Lg$F&CJfIN~PHb=5&mYcuA2H{ zV`Euv*6AT~E7zq3rQG@Sbb9LdsW}wHlN|=u>PDfHsjv7=>m#CmRm6G~AZvy?d)Nf<$QR#2g*;pr* lbGXdLJWt0C`KMzaJYQOqQKw@ct^c?aJ>9wB?@m$u{{`9%0;B){ literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ridley-JamesWhite89-Metroid.bin b/graphics/sprites/custom/Ridley-JamesWhite89-Metroid.bin new file mode 100644 index 0000000000000000000000000000000000000000..2a240a5561e8c7db3cbb7924c8bdf4a36648818d GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Suika-HoxNorf-Touhou.bin b/graphics/sprites/custom/Suika-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebf38403f44d471ab06758477d765078d01f64f7 GIT binary patch literal 5792 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 Q?0{9e{EWL}`=tir-w']) + elif item_id in SWORDS: + icon = chr(text_value['']) + elif item_id in LANCES: + icon = chr(text_value['']) + elif item_id in KATANAS: + icon = chr(text_value['']) + elif item_id in RODS: + # for some reason, the Rod icon causes submenus to not work + icon = '' + #icon = chr(text_value['']) + elif item_id in STARS: + icon = chr(text_value['']) + elif item_id in GAMBLER: + icon = chr(text_value['']) + elif item_id in CLAWS: + icon = chr(text_value['']) + elif item_id in SHIELDS: + icon = chr(text_value['']) + elif item_id in HELMETS: + icon = chr(text_value['']) + elif item_id in ARMORS: + icon = chr(text_value['']) + elif item_id in TOOLS: + icon = chr(text_value['']) + elif item_id in SKEANS: + icon = chr(text_value['']) + elif item_id in RELICS: + icon = chr(text_value['']) + return icon \ No newline at end of file diff --git a/music/song_utils.py b/music/song_utils.py index 8758346e..b671d5ff 100644 --- a/music/song_utils.py +++ b/music/song_utils.py @@ -3,7 +3,7 @@ from instruction import field character_to_song = { - TERRA: 0x05, + TERRA: 0x06, SHADOW: 0x07, STRAGO: 0x08, GAU: 0x09, diff --git a/objectives/results/high_tier_armor.py b/objectives/results/high_tier_armor.py new file mode 100644 index 00000000..c1c12299 --- /dev/null +++ b/objectives/results/high_tier_armor.py @@ -0,0 +1,29 @@ +from objectives.results._objective_result import * +from constants.items import ARMORS, EMPTY +from utils.intersection import intersection + +class Field(field_result.Result): + def src(self, item_id): + return [ + field.AddItem(item_id), + ] + +class Battle(battle_result.Result): + def src(self, item_id): + return [ + battle_result.AddItem(item_id), + ] + +class Result(ObjectiveResult): + NAME = "High Tier Armor" + def __init__(self): + import random + from data.items import Items + + # filter down to just armors (or empty) + good_armors = intersection(Items.GOOD, ARMORS) + if len(good_armors) > 0: + random_item = random.choice(good_armors) + else: + random_item = EMPTY + super().__init__(Field, Battle, random_item) diff --git a/objectives/results/high_tier_helm.py b/objectives/results/high_tier_helm.py new file mode 100644 index 00000000..01bc9eb8 --- /dev/null +++ b/objectives/results/high_tier_helm.py @@ -0,0 +1,28 @@ +from objectives.results._objective_result import * +from constants.items import HELMETS, EMPTY +from utils.intersection import intersection + +class Field(field_result.Result): + def src(self, item_id): + return [ + field.AddItem(item_id), + ] + +class Battle(battle_result.Result): + def src(self, item_id): + return [ + battle_result.AddItem(item_id), + ] + +class Result(ObjectiveResult): + NAME = "High Tier Helm" + def __init__(self): + import random + from data.items import Items + + good_helms = intersection(Items.GOOD, HELMETS) + if len(good_helms) > 0: + random_item = random.choice(good_helms) + else: + random_item = EMPTY + super().__init__(Field, Battle, random_item) diff --git a/objectives/results/high_tier_relic.py b/objectives/results/high_tier_relic.py new file mode 100644 index 00000000..e447f721 --- /dev/null +++ b/objectives/results/high_tier_relic.py @@ -0,0 +1,28 @@ +from objectives.results._objective_result import * +from constants.items import RELICS, EMPTY +from utils.intersection import intersection + +class Field(field_result.Result): + def src(self, item_id): + return [ + field.AddItem(item_id), + ] + +class Battle(battle_result.Result): + def src(self, item_id): + return [ + battle_result.AddItem(item_id), + ] + +class Result(ObjectiveResult): + NAME = "High Tier Relic" + def __init__(self): + import random + from data.items import Items + + good_relics = intersection(Items.GOOD, RELICS) + if len(good_relics) > 0: + random_item = random.choice(good_relics) + else: + random_item = EMPTY + super().__init__(Field, Battle, random_item) diff --git a/objectives/results/high_tier_shield.py b/objectives/results/high_tier_shield.py new file mode 100644 index 00000000..b77c8f2c --- /dev/null +++ b/objectives/results/high_tier_shield.py @@ -0,0 +1,28 @@ +from objectives.results._objective_result import * +from constants.items import SHIELDS, EMPTY +from utils.intersection import intersection + +class Field(field_result.Result): + def src(self, item_id): + return [ + field.AddItem(item_id), + ] + +class Battle(battle_result.Result): + def src(self, item_id): + return [ + battle_result.AddItem(item_id), + ] + +class Result(ObjectiveResult): + NAME = "High Tier Shield" + def __init__(self): + import random + from data.items import Items + + good_shields = intersection(Items.GOOD, SHIELDS) + if len(good_shields) > 0: + random_item = random.choice(good_shields) + else: + random_item = EMPTY + super().__init__(Field, Battle, random_item) diff --git a/objectives/results/high_tier_weapon.py b/objectives/results/high_tier_weapon.py new file mode 100644 index 00000000..76c24d1b --- /dev/null +++ b/objectives/results/high_tier_weapon.py @@ -0,0 +1,28 @@ +from objectives.results._objective_result import * +from constants.items import WEAPONS, EMPTY +from utils.intersection import intersection + +class Field(field_result.Result): + def src(self, item_id): + return [ + field.AddItem(item_id), + ] + +class Battle(battle_result.Result): + def src(self, item_id): + return [ + battle_result.AddItem(item_id), + ] + +class Result(ObjectiveResult): + NAME = "High Tier Weapon" + def __init__(self): + import random + from data.items import Items + + good_weapons = intersection(Items.GOOD, WEAPONS) + if len(good_weapons) > 0: + random_item = random.choice(good_weapons) + else: + random_item = EMPTY + super().__init__(Field, Battle, random_item) diff --git a/objectives/results/restoratives.py b/objectives/results/restoratives.py new file mode 100644 index 00000000..a79755ee --- /dev/null +++ b/objectives/results/restoratives.py @@ -0,0 +1,37 @@ +from objectives.results._objective_result import * +from data.item_names import name_id as item_name_id + +RESTORATIVES = ["Tonic", "Potion", "X-Potion", "Tincture", "Ether", "X-Ether", "Elixir", "Megalixir", "Fenix Down", + "Revivify", "Antidote", "Eyedrop", "Soft", "Remedy", "Sleeping Bag", "Tent", "Green Cherry", + "Echo Screen"] +RESTORATIVE_COUNTS = [10, 10, 5, 10, 10, 5, 3, 1, 10, 5, 2, 2, 2, 3, 10, 3, 2, 2] +RESTORATIVE_IDS = [item_name_id[item_name] for item_name in RESTORATIVES] + + +class Field(field_result.Result): + def src(self): + src = [] + for item_id, count in zip(RESTORATIVE_IDS, RESTORATIVE_COUNTS): + for _ in range(count): + src += [ + field.AddItem(item_id), + ] + return src + + +class Battle(battle_result.Result): + def src(self): + src = [] + for item_id, count in zip(RESTORATIVE_IDS, RESTORATIVE_COUNTS): + for _ in range(count): + src += [ + battle_result.AddItem(item_id), + ] + return src + + +class Result(ObjectiveResult): + NAME = "Restoratives" + + def __init__(self): + super().__init__(Field, Battle) \ No newline at end of file diff --git a/objectives/results/throwables.py b/objectives/results/throwables.py new file mode 100644 index 00000000..71017575 --- /dev/null +++ b/objectives/results/throwables.py @@ -0,0 +1,36 @@ +from objectives.results._objective_result import * +from data.item_names import name_id as item_name_id + +THROWABLES = ["Shuriken", "Ninja Star", "Tack Star", "Fire Skean", "Water Edge", "Bolt Edge", "Inviz Edge", + "Shadow Edge"] +THROWABLE_COUNTS = [20, 10, 5, 10, 10, 10, 5, 5] +THROWABLE_IDS = [item_name_id[item_name] for item_name in THROWABLES] + + +class Field(field_result.Result): + def src(self): + src = [] + for item_id, count in zip(THROWABLE_IDS, THROWABLE_COUNTS): + for _ in range(count): + src += [ + field.AddItem(item_id), + ] + return src + + +class Battle(battle_result.Result): + def src(self): + src = [] + for item_id, count in zip(THROWABLE_IDS, THROWABLE_COUNTS): + for _ in range(count): + src += [ + battle_result.AddItem(item_id), + ] + return src + + +class Result(ObjectiveResult): + NAME = "Throwables" + + def __init__(self): + super().__init__(Field, Battle) \ No newline at end of file diff --git a/settings/__init__.py b/settings/__init__.py index d0355987..df73fe62 100644 --- a/settings/__init__.py +++ b/settings/__init__.py @@ -3,6 +3,7 @@ from settings.random_rng import RandomRNG from settings.permadeath import Permadeath from settings.y_npc import YNPC +from settings.less_poison_blur import LessPoisonBlur from settings.config import Config from memory.space import Reserve @@ -16,6 +17,7 @@ def __init__(self): self.random_rng = RandomRNG() self.permadeath = Permadeath() self.y_npc = YNPC() + self.less_poison_blur = LessPoisonBlur() self.config = Config() # do not auto load save file after game over diff --git a/settings/less_poison_blur.py b/settings/less_poison_blur.py new file mode 100644 index 00000000..1703d79b --- /dev/null +++ b/settings/less_poison_blur.py @@ -0,0 +1,27 @@ +## Inspired by this original mod from Beyond Chaos +## https://github.com/FF6BeyondChaos/BeyondChaosRandomizer/blob/main/BeyondChaos/patches.py +## look for section beginning with "nicer_poison(fout):" +from memory.space import Reserve +import instruction.asm as asm + +### reduce poison pixellation effect while walking +### does not affect poison sound effect while on overworld map +class LessPoisonBlur: + def __init__(self): + self.mod() + + def mod(self): + # make poison pixelation effect 1/2 of it's vanilla amount in dungeons/towns + space = Reserve(0x00e82, 0x00e9f, "town/dungeon poison gfx") + space.write( + [0x0F, 0x0F, 0x1F, 0x1F, # vanilla: 0F 1F 2F 3F + 0x2F, 0x2F, 0x3F, 0x3F, # vanilla: 4F 5F 6F 7F + 0x4F, 0x4F, 0x5F, 0x5F, # vanilla: 8F 9F AF BF + 0x6F, 0x6F, 0x7F, 0x7F, # vanilla: CF DF EF FF + 0x6F, 0x6F, 0x5F, 0x5F, # vanilla: EF DF CF BF + 0x4F, 0x4F, 0x3F, 0x3F, # vanilla: AF 9F 8F 7F + 0x2F, 0x2F, 0x1F, 0x1F, # vanilla: 6F 5F 4F 3F + 0x0F, 0x0F] # vanilla: 2F 1F + ) + + diff --git a/settings/random_rng.py b/settings/random_rng.py index d2726b04..e50278fd 100644 --- a/settings/random_rng.py +++ b/settings/random_rng.py @@ -4,8 +4,7 @@ class RandomRNG: def __init__(self): - if args.random_rng: - self.mod() + self.mod() def mod(self): import random diff --git a/utils/intersection.py b/utils/intersection.py new file mode 100644 index 00000000..5bf90889 --- /dev/null +++ b/utils/intersection.py @@ -0,0 +1,5 @@ +# find the intersection of two lists +# ref: https://www.geeksforgeeks.org/python-intersection-two-lists/# +def intersection(lst1, lst2): + lst3 = [value for value in lst1 if value in lst2] + return lst3 \ No newline at end of file diff --git a/version.py b/version.py index 9c73af26..3e8d9f94 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "1.3.1" +__version__ = "1.4.0" From 76f429cddf8d77873ff832730798f3b694fde187 Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Sat, 18 Nov 2023 15:19:58 -0700 Subject: [PATCH 4/6] 1.4.1 (#118) * fix bug with Phoenix Cave & KT skip for mid path --------- Co-authored-by: Brian - TheShwantz27 --- event/kefka_tower.py | 5 +++++ version.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/event/kefka_tower.py b/event/kefka_tower.py index 4b31ec08..6413ce77 100644 --- a/event/kefka_tower.py +++ b/event/kefka_tower.py @@ -71,6 +71,11 @@ def statue_landing_mod(self): field.SetEventBit(event_bit.CENTER_DOOR_KEFKA_TOWER), field.SetEventBit(event_bit.LEFT_RIGHT_DOORS_KEFKA_TOWER), + # clear out the Kefka switches due to bug with Phoenix Cave & KT Skip + field.ClearEventBit(event_bit.multipurpose_party1_step(2)), + field.ClearEventBit(event_bit.multipurpose_party2_step(2)), + field.ClearEventBit(event_bit.multipurpose_party3_step(2)), + field.LoadMap(0x163, direction.DOWN, default_music = False, x = 39, y = 9, fade_in = False, entrance_event = True), diff --git a/version.py b/version.py index 3e8d9f94..bf256159 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "1.4.0" +__version__ = "1.4.1" From e611c871ca72951efbc79031c588617bfddeae1d Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Tue, 2 Jan 2024 10:05:02 -0700 Subject: [PATCH 5/6] moving KT non-checks to quests; adding AH checks to check objective list; eliminating lines for 'All 1 of' objectives --- constants/objectives/condition_bits.py | 14 ++++++++------ event/auction_house.py | 22 ++++++++++++---------- menus/checks.py | 2 -- menus/objectives.py | 12 ++++++++---- version.py | 2 +- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/constants/objectives/condition_bits.py b/constants/objectives/condition_bits.py index 5110597a..3ca2131a 100644 --- a/constants/objectives/condition_bits.py +++ b/constants/objectives/condition_bits.py @@ -66,12 +66,9 @@ NameBit("Whelk Gate", event_bit.DEFEATED_WHELK), NameBit("Zone Eater", event_bit.RECRUITED_GOGO_WOR), NameBit("Zozo Tower", event_bit.GOT_ZOZO_REWARD), - NameBit("Kefka's Tower Ambush", event_bit.DEFEATED_INFERNO), # 59 - NameBit("Kefka's Tower Guardian", event_bit.DEFEATED_GUARDIAN), # 60 - NameBit("KT Left Triad Statue", event_bit.DEFEATED_DOOM), # 61 - NameBit("KT Mid Triad Statue", event_bit.DEFEATED_POLTERGEIST), # 62 - NameBit("KT Right Triad Statue", event_bit.DEFEATED_GODDESS), # 63 - NameBit("Narshe Moogle Defense", event_bit.FINISHED_MOOGLE_DEFENSE), # 64, + NameBit("Narshe Moogle Defense", event_bit.FINISHED_MOOGLE_DEFENSE), + NameBit("Auction 1", event_bit.AUCTION_BOUGHT_ESPER1), + NameBit("Auction 2", event_bit.AUCTION_BOUGHT_ESPER2), ] @@ -86,6 +83,11 @@ NameBit("Suplex A Train", event_bit.SUPLEXED_TRAIN), NameBit("Win An Auction", event_bit.WON_AN_AUCTION), NameBit("Win A Coliseum Match", event_bit.WON_A_COLISEUM_MATCH), + NameBit("Defeat KT Ambusher", event_bit.DEFEATED_INFERNO), + NameBit("Defeat KT Robot", event_bit.DEFEATED_GUARDIAN), + NameBit("Defeat KT Left Statue", event_bit.DEFEATED_DOOM), + NameBit("Defeat KT Mid Statue", event_bit.DEFEATED_POLTERGEIST), + NameBit("Defeat KT Right Statue", event_bit.DEFEATED_GODDESS), ] from constants.objectives.boss_ids import boss_objective_ids diff --git a/event/auction_house.py b/event/auction_house.py index f3fb34e0..1b20d430 100644 --- a/event/auction_house.py +++ b/event/auction_house.py @@ -186,11 +186,12 @@ def chest2_mod(self): self.hide_chest_mod(0xb52c2, 0xb52c6, "hide chest2 in auction after winning") self.hide_chest_mod(0xb5a25, 0xb5a29, "hide chest2 in auction after winning in wor") - def receive_esper_mod(self, start_addr, end_addr, space_description, esper): + def receive_esper_mod(self, start_addr, end_addr, space_description, esper, event_bit_to_set): src = [ field.AddEsper(esper, sound_effect = False), field.Dialog(self.espers.get_receive_esper_dialog(esper)), field.SetEventBit(event_bit.WON_AN_AUCTION), + field.SetEventBit(event_bit_to_set), # while this is also called right after this in the vanilla event code, it's required here to cause the check objective to fire field.FinishCheck(), field.Return(), ] @@ -202,11 +203,12 @@ def receive_esper_mod(self, start_addr, end_addr, space_description, esper): field.Call(receive_esper), ) - def receive_check_item_mod(self, start_addr, end_addr, space_description, item): + def receive_check_item_mod(self, start_addr, end_addr, space_description, item, event_bit_to_set): src = [ field.AddItem(item, sound_effect = False), field.Dialog(self.items.get_receive_dialog(item)), field.SetEventBit(event_bit.WON_AN_AUCTION), + field.SetEventBit(event_bit_to_set), # while this is also called right after this in the vanilla event code, it's required here to cause the check objective to fire field.FinishCheck(), field.Return(), ] @@ -241,8 +243,8 @@ def esper1_mod(self, esper): self.reward1_announce_dialog_mod(esper_name, False) # update esper received and dialog - self.receive_esper_mod(0xb5452, 0xb5456, "update esper1 received in auction", esper) - self.receive_esper_mod(0xb5b77, 0xb5b7b, "update esper1 received in auction in wor", esper) + self.receive_esper_mod(0xb5452, 0xb5456, "update esper1 received in auction", esper, event_bit.AUCTION_BOUGHT_ESPER1) + self.receive_esper_mod(0xb5b77, 0xb5b7b, "update esper1 received in auction in wor", esper, event_bit.AUCTION_BOUGHT_ESPER1) def item1_mod(self, item): item_name = self.items.get_name(item) @@ -254,8 +256,8 @@ def item1_mod(self, item): self.reward1_announce_dialog_mod(item_name, True) # update item received and dialog - self.receive_check_item_mod(0xb5452, 0xb5456, "update item1 received in auction", item) - self.receive_check_item_mod(0xb5b77, 0xb5b7b, "update item1 received in auction in wor", item) + self.receive_check_item_mod(0xb5452, 0xb5456, "update item1 received in auction", item, event_bit.AUCTION_BOUGHT_ESPER1) + self.receive_check_item_mod(0xb5b77, 0xb5b7b, "update item1 received in auction in wor", item, event_bit.AUCTION_BOUGHT_ESPER1) def esper2_mod(self, esper): esper_name = self.espers.get_name(esper) @@ -264,8 +266,8 @@ def esper2_mod(self, esper): self.reward2_announce_dialog_mod(esper_name, False) # update esper received and dialog - self.receive_esper_mod(0xb52c9, 0xb52cd, "update esper2 received in auction", esper) - self.receive_esper_mod(0xb5a2c, 0xb5a30, "update esper2 received in auction in wor", esper) + self.receive_esper_mod(0xb52c9, 0xb52cd, "update esper2 received in auction", esper, event_bit.AUCTION_BOUGHT_ESPER2) + self.receive_esper_mod(0xb5a2c, 0xb5a30, "update esper2 received in auction in wor", esper, event_bit.AUCTION_BOUGHT_ESPER2) def item2_mod(self, item): item_name = self.items.get_name(item) @@ -277,8 +279,8 @@ def item2_mod(self, item): self.reward2_announce_dialog_mod(item_name, True) # update item received and dialog - self.receive_check_item_mod(0xb52c9, 0xb52cd, "update item2 received in auction", item) - self.receive_check_item_mod(0xb5a2c, 0xb5a30, "update item2 received in auction in wor", item) + self.receive_check_item_mod(0xb52c9, 0xb52cd, "update item2 received in auction", item, event_bit.AUCTION_BOUGHT_ESPER2) + self.receive_check_item_mod(0xb5a2c, 0xb5a30, "update item2 received in auction in wor", item, event_bit.AUCTION_BOUGHT_ESPER2) def normal_item_set_announce_dialog(self, new_item_id, start_price, announce_dialog_id): item_name = self.items.get_name(new_item_id) diff --git a/menus/checks.py b/menus/checks.py index 0ace86a3..339db506 100644 --- a/menus/checks.py +++ b/menus/checks.py @@ -18,8 +18,6 @@ def __init__(self): self.check_bits = {} for name_bit in condition_bits.check_bit: self.check_bits[name_bit.name] = name_bit.bit - self.check_bits["Auction1"] = event_bit.AUCTION_BOUGHT_ESPER1 - self.check_bits["Auction2"] = event_bit.AUCTION_BOUGHT_ESPER2 if args.character_gating: self.character_gating_init() diff --git a/menus/objectives.py b/menus/objectives.py index 75cc2a74..0e5e3ee8 100644 --- a/menus/objectives.py +++ b/menus/objectives.py @@ -23,10 +23,13 @@ def __init__(self): if len(objective.conditions) == 0: self.lines.append(scroll_area.Line(" " + chr(self.special_characters_start + oi) + " required", f0.set_user_text_color)) else: - conditions_required = " All " + str(objective.conditions_required) + " of" + conditions_required = "" + if objective.conditions_required != 1: # exclude "All 1 of" + conditions_required = " All " + str(objective.conditions_required) + " of" if objective.conditions_required < len(objective.conditions): conditions_required = " Any " + str(objective.conditions_required) + " of" - self.lines.append(scroll_area.Line(conditions_required, f0.set_user_text_color)) + if conditions_required != "": + self.lines.append(scroll_area.Line(conditions_required, f0.set_user_text_color)) for condition in objective.conditions: condition_line = " " + str(condition) @@ -37,8 +40,9 @@ def __init__(self): ).space.start_address self.lines.append(scroll_area.Line(condition_line, line_color_address)) - completed_line = " -- " + chr(self.special_characters_start + oi) + " completed --" - self.lines.append(scroll_area.Line(completed_line, f0.set_user_text_color)) + if conditions_required != "": #exclude "All 1 of" + completed_line = " -- " + chr(self.special_characters_start + oi) + " completed --" + self.lines.append(scroll_area.Line(completed_line, f0.set_user_text_color)) self.lines.append(scroll_area.Line("", f0.set_user_text_color)) if len(self.lines) == 0: diff --git a/version.py b/version.py index bf256159..daa50c7c 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "1.4.1" +__version__ = "1.4.2" From ced3bade504ad54081ccdfa436a8d6429599a515 Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Tue, 2 Jan 2024 10:36:16 -0700 Subject: [PATCH 6/6] missed a commit that's required to generate a seed --- constants/gates.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/constants/gates.py b/constants/gates.py index 9b507ee4..5915decb 100644 --- a/constants/gates.py +++ b/constants/gates.py @@ -78,8 +78,8 @@ ], "" : [ - "Auction1", - "Auction2", + "Auction 1", + "Auction 2", "Fanatic's Tower Dragon", "Fanatic's Tower Leader", "Kefka's Tower Cell Beast",

c2+M)O*+8oR~*@sRGE!Ex{M!C#qASWl;f z4Pp=TA-nQUsxs!=t&*uk*o3l*#Jy8fXoG0N3`o;sr*h+N-Vf>ZxiIbf)ZgV3sC>X7 zzbLEjZQai_k(`ldtfP`fI+IKGln+qA4wqw@@#i^MgU>tzSO>r-3V46MI5(>PSAC zj#|Q#c(p8V)q7Z9m+IRXQCq^*Wqnig zPs&M2fH{z8;^Hjhx=Nz{U%eDB9iH*lpL?sfP=8|}ev#m33z?7ly?%;!EUdrnMfKl6 zd|~}Wcac?S*R<_zU%aqqix1?b>5=`o|eRPMQ8i`CFqu z>pz-)_1;(SEurT%K4?9J2WQcHI{(*wUu*sCcYgaM=L_h`nY)bN<2?4i_a6OIdW+Ir zVO5Eug(2%k5{g}+R;kbx%$WCtcZKc2)M4YSCGsYGGaC==!_HX;VSs3%exBzqi|glf zp?;p{FN^EvBL8?K^4v$ByJhm`$zBT3_^$D4J=Lr5X8Ffc)@bEh^=Ecnl{r`7A96;{ zRHi!_pS#Vpag6bO!W*LgbM-$XTu_Kt7@<+t|6_C*)!e=WX{d*7x^t-Z!!~^JqK1LSKCI zmV2f9@kdNl?X7EI#4f{nR`GjqKRtlv=s(Io_U3EnuE_r!|EYhPHXNoEA*I+VP07HG zku{d{N5Z#&zoa4f%RK&A?7#kh;@|bce|qQn_g_VRDn?&{f1i?XSSI*)qnxz5^%i|K zqfhW}nU*P*V#EGWR`Abbz5g)(W*ukz9iatT(~ENx@NnNLG;5|V_*b3M$jq|b)FkdB z5Dc=wLCo`vzkF&ueVT|}GG-v+FI8AaCNO6IqW?F`oz?5ij>c}We~auPo2CdXR3wxEY%SIwVxz23S%)TZ1e0GG^d?{I z%jmvm7J=&lzL# zxO`(xi{4$fzsbT2%l5Z3^6}t>GW-*CT&E2G`TBQj^p5D}Ha>rry|=Ocj$v~dI~VpD zW&BRqC(dv7=`ZyD{FCFmGfu~B{Pg0J>TcCx{{3&~M?9yJi~LWQDt5$u;~QhY>; z=SSuIPn;ix1b}Izz<-7Odsg>fyZQQg`PboETt6$H_WWO8?{NUOdnyd zINTd9%|#9AX?mycGUNc8p$2g=oRj#yO+Ki7f(+GaBr|((6=hUUt-h(7e;u8EI^mlqjsD6L@ zx0-(*9a7ihVe6~uqv@sC&Z=T1PZi67U^-0Bet^A9 zWHNUo-oQ@+#?u+`Eq;oRR1o-CKgV;LOc1aii0lSGMf*i}f&M?P|3N>87U@6j@9I15 wPa7Rxmpm$N0ft$bI9Y0+m;bB&xa$Ais&Kmkar%%7GWaG<(}Ji&a_9&6H+V+t_5c6? literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Leon-HoxNorf-FF2.bin b/graphics/sprites/custom/Leon-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..41e31eeaf2883e22d60aa163997427b258411293 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Link-FEOK-LegendOfZelda.bin b/graphics/sprites/custom/Link-FEOK-LegendOfZelda.bin new file mode 100644 index 0000000000000000000000000000000000000000..2976fb0e6b8acf3c29e058443b85f154084766e4 GIT binary patch literal 5792 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 E4_qH>Q~&?~ literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/LoneWolf-PocoLoco-FF6.bin b/graphics/sprites/custom/LoneWolf-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..1326562052a8c790aa6933ccbe7bb43c9d68697e GIT binary patch literal 5792 zcmdT|eT)=m9e!qZc6T`DZij`+0NZ7N!&U-ixI=CW7j6L*RrKmKJGMkVTu` zalMb%L>m%G!AQ)R7`Q)bC6PZa!4T3CI#JSGEVV=-05OPk`3N5LJbd1no$lPG zdZyPzoj1Gl@xC*^ujhT<-|w~XSJPH>}u|NYX%tQ*a(Sli+!MkmE#ndqkDi&g$ zE&JP1!Z1c~9{n8KjkotaYxUwST)?haEt2Ts$R&y0iLHs8vPD~FoDw&%1K0R`)H{yr zXf+p_o^#sSXKJD)SsT|?T}>rxmD!XB%89c93I3<>zIO-1b}3)-WtNa}E%pI<{~!G3 znZizG1J>g<&zGgEsH2Qy16eoYmWqR-L~Bb}jiVUg^E~}k;Q7A2!|72vunZfp z8GW&xXhNFuW5zsViEbWagoVd^|JS1x4i@l> z75~p>6f8XN`@bG(7+B}`hyEXC6jowQEBCO6VNEQF9BQFzxnwTsBy&oyaYxU% zE5+~WolErpb$)RGZMIP~N?K79i{d(TbyAG}kJn;`sxp3Y5C)8c^uYVx3+@PQml2ot zX7Dpwp669?^kRRZwV_+Nh@aZ;`SLsQkgghqR3Vj5IZ7{X)}`B43ifNS27_?zOfge5iWwoTi1CdiZC-(==g50$dyFl? zv4EhYoLDLhTAnavuYgByNPmpL)gR$ZS(u)!&t&wr@Hz{HGp8o5#?$e+@ivaRoB6;Q zbw?PzpRP*nC;Qr~v_Mx!a6NZv z+X%Ja!I|6d3LGILNbO}SU^aE8_f)=1w8WrOx+<06ox=YN{oaMFJ6ibD+UIC}iQn1B zIixX)CH4pYGx&a>LEyh6q;!=;ApJK~IN2)S9AuOJJBuN{o%dTp(NL$YP`vd$)4mHdT=yjqB5 zVma}5gE%UXd(Y!ZT6`3Dc;|%!{d2$q(MNI~g@+&u*uoLvJ%~e(Enp2-pXaZbtEU94 z(ZV}Q*XC-v&l(2hj^e&?J6odM5u$jINYru2U1hF9llFzij^%y&VLZS*tx=n#8WiI& z7Qh?k13sOF$@w2X`j+tk2i)(w2Cm{KT=5#%ALTANm&VTiY+36-i#BQ@wJvflg<7;= zjk#*dDspEJnINSour)ieL{qgT3F*v0>o?3k?7?sBQD5t5^wK8}~{8}e5prb4o> z@(SvxA9SrHk&Hl9jOisjUvxa9SK;Whfafk^6i$;$(!;sGz?o*Dp=<@yqAYAQ35 z_m~-6M7Pq~u)oj?N69lYD5O;5A-$8j-tt~&W^fTJMY`=~T`vrgU}jKPa-Ab)mNqV+ z$6HZPug}*XqYq?GBxhHO>!Vx+*U^$R`*mhX&-*@-nW5z(ML($^ZL_#7?|Z*vZ^C%)e92a-#Wn7Psq;Gxrbk?-KLfPc#3P z`cx{IWxng87Rdfe1+$~v-_A%#ob+Rl!ulbie_d7ma7eIzi0EIasvj(D#~<~xWY&J> zbr(oI7H!?duXNyB_y+H`U|$9EeKw6x1)3>M5vS1_w;njMOhKXXOCBkSB%< zJX_?^EBYXFhavjpn*U@Y^_Q9K7B&kn;1}fG`P45(Kgl;XQvdt(-hH-9_8O^v?enXU=auNEnF~bg*Xw@FCOW?+T0dGg_22t%>Tiwco${~i?=CHart z-$`Zs%w_fK*S~g9|6VKCzX!_r`68>|Pow^ovu`nZVi|G%B!27T-(&^)Fxv|39v9!T zzJ1lK;aAdJS=RgbYG-y9u=p^#s_=8U3O~`=?~q$0KEwSBxt~ypzsi;3PWk)6>>p%XY~bEs$iS@HjLaz@nuZ8+%4 z{*Zl7kSn^Y_HQPa@f+^n9ID#Cspj9P{bTd5B$3iGZhc#c|A)kCANQ|1xPMd6{iE+{ zyES{<{Uh$5ly|Q_o`1*NKa%o$lwD-uiu}3yG&E{~djhFSDJXHP^ zG7VGJ@R58>qD~H%)P0DtveaT)Qcvo}RO81US3;HoY&qp| z?sD25iY5yry@Y$(J$2*gd%))f*`}{ literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lucca-FEOK-CT.bin b/graphics/sprites/custom/Lucca-FEOK-CT.bin new file mode 100644 index 0000000000000000000000000000000000000000..ed48e6a4d0ba35670ff7d4d5271c2b8d56b919a1 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Lufia-JamesWhite89-Lufia.bin b/graphics/sprites/custom/Lufia-JamesWhite89-Lufia.bin new file mode 100644 index 0000000000000000000000000000000000000000..aa142755abd62b19e9c6dcaeea5d7ec285237457 GIT binary patch literal 5792 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 OcK~FO9TSF8gZ~Gk33(n z_ACWj9+ldAwU2x5+&SMl_ndRjxkNTSXrF%E{rc2FxA)F8m0C`bKjp5Y{N z+Be_&i-nKwxO!^3+N&O& z&S!$|%e&`SXvS0Xl+Sws>7>%BBflSecJ!FKNpGV#wVD=forin&_VfTjOTq-E2HHm3 zB!PeuM5iZa1}_ZH3=gwWYdKc{?-Vd>;TG3@%0>BqKKY4EiffLMOL$F}nim~`iAbSZ zJ*AFWCjQ%W)!y}ze5LlA^3p*goF+;zd!8H@I=P*n;OUXhe#xXpVr_M#N_SZ`BxC1H zl4NC@^k-?hda$1tpjUNrkr+Rw&ymZ;&T`l78|s=rGL5p>e5h$?%OJ z6Y>xB5AHTbUz|T)K@zo4cdgrd=GdSv#)48U8B}9!4@W*Eb@&!nD}WKpNtYX_NlDflCRJ0zQ1`N0(ET|#$BUE*=5%K1Ku?^*d~Did zyzIX0eVI!x=1rCW^kZ ztwbrK7aEMBZx|Bu>*(k7O7y#HD$zSsM(=UhzOM)C=)KSrv(o(?$2;zj5>lgKC<@-r zh$Y}TDiny}l()!cy?Jk(+rIE%_%7u0Li-U|K8yYeq*v%qyk(D(l}u@XPB;U)sm7pL z2_0>xz(BOf^uop98eOsv8ZXfeWD!Zp}V~sL>r3 z%cRnymzhZ z<3;BM*k=&#Eh4*ztqAQiimu3 zR0BV&BAGNLMv`D4LuCs7!u~vT#^-36R{R1FperA%01o>PLs)BNFIppDx$vTLD@#!x zmvt;+MpVZlW<+Cvh#AosAYw)|23Tg7z8g9opzk?10oX+RD;>g!5oiTU2HNDzmS6Y9 zue~1J3~3w^5M83*hNH>|P$K7uwmO7}H+&A7VcJwRD$`vh>L4tCR33`oq?fQ_WkQC2nE8b<7JB?DEhBrn|Lpkt<4@9K)MGTq zn)C)^6uu|+SAni|GL*ApPmi4*UvO3^$LIVxzmXc@0pb|up|4s>gON5njomvlv5i%b z5T{HGxrrP~LS(U7K4s0aRNe{#te}8<;#Y9NXtlM_?ezoJ-CYx1Wr~7>2>YBNnBmJV zzlZPl)BeDF?WOq+jm2vd?Kpyw?^#RMx!k2+U7xyCygDo98BSmyp6RoxKEXU{K1xKY3o{mtRi)Z>nFZj^^L0V86;= zV-oEVf_7a>W`DsK5G-%+Is!L;63a0N0$FhA0^vc zuRl~+I(KzVS9HZv93`oUgi!)|k>e)uQGnL+EFXENZ}=JC0b~yEV>o3p`1qkT(cS+X z^=sG6YW-@&l1gW53pJ~5q<-yP*n1(4-536q@dxLZX_m>W^{ZgNug}eyuXM`$dHKxizAK>YtS|A+S<&8NiuMLE8<(@<>v{-XEov)AJd zrTs76AFNPaP`bY;F{-TK%d~O@FUG497DWYLo`-LS6@00F-p@pqyhOmy|E+ck$p>I#BgW_SNL6Co)fm3t>LH=nzQnL^N@`7Z=P)XznwKt@!JS+d9G1U+M8=WnXbz9n z>TA`x6S+USZ}WX!e|oeW{o~qZ$d`+pU(xe*eg7W|<8NFp-yeyb75#JEA5Apf*Bj;E zga{V~Xd&nSaf^EAXOGWi!K?76?AovoLctfBS!e>GeRE_?K8P4Fd@kbyf_PNLM`VDyT_UY#W*l`Yhl6D~PY7~YkOdV;M^np~Q8&zQR7iwPPJ-gF>-2TTp zp@lZ$q%x4x9R~-rn{)%^N>Tn$J}!6@&W2m6bLN>7->^3)Zwv2dYT-93ZHC8-bQ3T+ z^GBHDS}YI?!sdhSqolA(GdOW$^O=m}K|sidH&Pz{}aU4Jiq_| literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Luigi-Badass-Mario.bin b/graphics/sprites/custom/Luigi-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..9981f64c6db314c416db2bbed41e52ff0f84095a GIT binary patch literal 5792 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 bxTBT7`Ft%3M+m&^@(A0FJ3;UN&i~&55g0JO literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Luneth-HoxNorf-FF3.bin b/graphics/sprites/custom/Luneth-HoxNorf-FF3.bin new file mode 100644 index 0000000000000000000000000000000000000000..5debbcc90ff82487aee4c5a6157d52a60e394f82 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Maduin-PocoLoco-FF6.bin b/graphics/sprites/custom/Maduin-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..e8c4fde71b046d90d6df33bd53e15f667c892df6 GIT binary patch literal 5792 zcmdT|eNYtV8UO9xvb%7{-5#F`$K4W$U{E>Y%?%O6Z@ z+G*dNJKbI0dw%cpJn!@Veoq`uvj3=l-dmMc=BO{JOk@y?1;~*+uyVynL_OX_)x1Y- zXZk$BqM=QPRSe;EyeE#}gxr8bNQ-si!e>Al9T$Q%d&f)`nf!wx>+(DVw2I7vbsV}JDV?)-{?GCI(W&&XdS+|pob*~mL z?DcmjJ!HEt5X2(1Rr}Ee9V!C!{$k8<>Y1#TJBu8T=hPQ2lh@!WSmbO*5c4=WQIPxO zW_`t>wR`psZ5^sO@U9Cq_ax@1gWTb4XoE>S7UG(+K|d*%va1S9ogm8(Vzug!<1q&* zWM?ma%{B;gIhT@h)YT4pavfKhAlHK#SOp&%@Z+T7q}9duO}j7k0k426|QvQNdMjrW%}7B3=Auz-#1gKM@D*_7DBk{j@8h|D z9{7aN58^0Au|XQfVfiQ;ihN{0mXD?AXORD=Nii%RvdqBn|Aua#zsKL&XB*5_WWf4%PY!Cf{TH*iuO zq17Lf+x!PbU@3Nszfp#n7aV?1ej3Q?V>G*&$za_~Iw9!64SA!sQ~P7v8g=#nJ%Ef_ z^&Mp|D%G!1o}8DF<@tℑ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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Mario-Badass-Mario.bin b/graphics/sprites/custom/Mario-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..98b518b1175e5ef51a3e8a31049de897dcdbf2cc GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Marle-CtrlxZ-CT.bin b/graphics/sprites/custom/Marle-CtrlxZ-CT.bin new file mode 100644 index 0000000000000000000000000000000000000000..91bb2497d22909241467dca1b1a8ac1900f09755 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Minwu-HoxNorf-FF2.bin b/graphics/sprites/custom/Minwu-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..a913e7fd7a87ce37d827063b5253521fc5d3e1b2 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Nakoruru-HoxNorf-SamSho.bin b/graphics/sprites/custom/Nakoruru-HoxNorf-SamSho.bin new file mode 100644 index 0000000000000000000000000000000000000000..d0c775c3b8642f27e4cfbdfab2ba001f8b5d385a GIT binary patch literal 5792 zcmdT|O=ukF8GdGFe@3hQnOJ`-Y2}^NO{_SUwe{~d-dIE8BtGQeg9(apnkhBKbqMGX zVnLN;S_1VUP#r>1Ahb&eLFeDCw^#)Fu}T5<)$!+A-*>REkBS!?j~OG&NR<78~%E8 zwYKWiv59rQw+^pnx!5QfX+4Xy!4BzcIt=LsCFf3{^W^T2Tce$Y4m zaC#&;eo8BvdOZGSbJbowofzN7g5}Q|GZSNGAsnA$mN8+*<73-DJileN{HEVTlLPbq zrsea%=P^IA|3m4K{D_|P-^^ezIexvhmK?vf?Beup;{Pz_h}tpYU)Sl*=C4hnMEGFlonZ{)jQy-# zhs@U+zq|akO?1S3t7N2%9r!EnBm8e{etWZg#Jt6~qHPo2xXY6j<=1noFx@F-97*o9koojGuo zU9~*jdK(+fldY4-%#qwkZm2kz8N@)UY7`*7gev*D;*-g z#ThVRwd;NvGv&SIiZPHK(;wr+^Mwgcoq=p#M+GS`{tF#k)YPpI|E6Qh zskGSoW1;<#^@SbQzblU?tnVOceaRRx`>jVVvi@CvtHr(?SYL+OuK6`s&8k__v(o8v z1{yHP{AFh#tJ76?*>yeFXNSxDr4ueZMv(7=-$>$Df>r3l4_YzCui-2dkbF8YX$hpsGj3R_{IK@r)Gy{%6#f;zj&8z5p(G2TOKzp~H;bBK0O(2Q}Y1%xf3%%&wR9bH`-wuKgxCN1k7EGjx37E=RpQj{Pq6)N_%}l0)HXkuX#?( z0+0ET*0Vl;NV1nLuzr@Da=-W)%E#=RWet(X0N?7xkAA=SDPgF1BE8?JYJL=ttSNFlB!R*PCHXhn>ks>v-WfLC`M4= zeVO#Yx>#~A32x!{2Zg}L9UQb;mNX=M}`&B6i+er#IN-)`1Ea@XQjG`_wZ?% z9N{v#)`D~`vKF1i{_Mkphtl6w<`r4QNo~s-$qMXkqtgDvhqr!nN002MUHMMB8=Z0~ z{t90$eAzqaLCW05PiJum4P(jpz40r&%8S{um8Xl7_yJy#hcEs7A2UB|UG;9$A8B5} zexbIW@`VVc{bcdZ;+^17eWz}vZY54})YzXrkUgMDeJ%B^R5xQmeI3-d{^9m^dm9Zu zsBeiHBSh8Ls=mF+`>%L!yUF{PSuwKyR`;d;{6_V^*r!crAJ@gcF|t9G^Ekq2(ZoK; z_}dt6f8vOJTb9^&iji&=$kbZVK6%xBaBo77K? za-W=+&`;t%vp=C<+P=*ki}B-qVkg~~BZ3v_k4vuT)?|Wagg!&1Aq# z?CIYPcZ2VBV*Ts7YWzl{D5|1{OI`MFut|2Q5JO?#djQE zch|Q`{ixzc;UC9O5WnAO{?!gf%&&ohSM$&P1Iabn!HD^@&e#h z>i2P$%|)%EDgAzf>~o#Z-@p|o)bA_YN?2g^EBc*WGM%D+CxbEW6n_djRnCRMnln!> z8n&t5$zY5-#h>DRmviBV^0mZgzGco@&tpDC{MiOF!$wh?qg}Et3(s{JHj6>QRpZ6e zaIoww`#6_-U1_jEvasmC$Ek#a8eIKQ?o_B=BmK9bel6C26~(`EESBrohrPS_Rs|DT z%gkCO@uABM68`;!f9LR)&HG)+KDzIB>Bo%TF!r-Y_)nMMaR}66EWdG*uLuZe?aPW9xI9*WtH+zt+>9v7jYRMh@ zM_X1f`%(T|-u?LZe(M*?P;rE z@r^cnhrO$Hwc8)yA^Ry7n^E)T?AP#Rd|{LsTeOP!BQsU4USHvkl#1GI?%#zk_2Sd~ zCi^q8J2IyBM?!tT-I1@O4|FZXHCAckz#dgy5fs(h)HiLf;|W@xT=C_=X?jj@DwhKL zmvTqVvA+GKK{7=V58z*T16T1o_Fu~5MHHQ1aChwK*3-%TrT=FCpO*i|96#YKHM_p( P8`&#spyFS4X#@TZFt=fq literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/NarsheGuard-PocoLoco-FF6.bin b/graphics/sprites/custom/NarsheGuard-PocoLoco-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..dc6632ae7ce88f5f068c9c82832db2a89ff1a164 GIT binary patch literal 5792 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 byZqSx7~iztbsTc;O}L-W9s-bUIKY1Z)M$F` literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Pacman Ghost-HoxNorf-Pacman.bin b/graphics/sprites/custom/Pacman Ghost-HoxNorf-Pacman.bin new file mode 100644 index 0000000000000000000000000000000000000000..7053edcfdc4cf98b6bacb6696a8470ecdfd23e7d GIT binary patch literal 5792 zcmdT|L2DaF6n@gmyPIZh31NZ^#w*pq3B-mKN^J$l9uXH;>8bQqD0J-_+Xu&SF~o9} zS~>__>VuD_7~>z%gAXRxF0IK)7#Diz!MH9IdI?kqlM1?#`esM7J4zEaSZdtv14%QZ z+4ts~H{W}20NQ&b2uuB8LpO<;GDoZj_%`eU9f+2SCZaPIRIPMXtI4)pkq@LNIF4OV z1KX%%OWAVeL8V}!92So9`D7BJGq4H;NAi#aNIgl_C6vMX>gnm`CS=QS1a(JFVbf98 z5&b_F{#yQH`l+aY8Kyn`U)O(m^ylp7qW(uP+rIwx(C7MxyUh`llvQx>m!bj0KB1+c z!0^AlFCU;(q`HH@l`SInC8Gj$ioJ+`6MMP?4*nE-5&tIkbO!|d+t<(W7xX*$bNw8D zLBD|i#r1avf9n4keT7sR{?z|(#3eilQ-c3Lero@~@TdO2Q`A6%9&4c$|JZ_y0Ky)FBA{1E)_ zt(~8U6z|SWMLPWH^N3ZC*=aj?>_wNhp*o_^$*W}>m~cai68#yr}K9tQp#7cFZ<4w3#rKX~{D6eU-${z~)6mJaZ?C%efgL~jXw$2oIDSI?^hWhdXY3#D zo*kLHwK&G&2RQXd@1Q!y;zzoAdw=?1=%;JX#QNjrVdNRO^#`~A65@x{uUxO8Ft^pA^It84@jIN+ zGy1*0@*PSK8bpx2P~?nkff2&^T@BWPwR_t$JCq&_P$5Lc44Oq!BwIs!eZ}!o@DE&5OT5Mwy4r`mc%`!*87`KRnEoPWH(us2G=`N#Yr*Rk_Y>(`BhNyPIrkU)kP z>i3OO>-ux0&aVGcsil4;cVDVspKC4kt6g>K*S5gN$sYcTV{^B@7x+&d>mBsxKR^B6 z`%Us#66$l@UtHmoJAO&=OVpp6`1vaa3FtI_A_w`N55M*Q-^UBcSKq;&E4ZElBPsS- zM-O@dU9RAGosks#^k%YO;#~S$fiA@pnvf}ifU9>8t*}sa%Y1BlnqQzLNJkDqHa`V+ z;`=P@2XcNlh2Jajdlp_7xbJP&HN4I5 PRe2ki@XC9o%d-D(&#l#l literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Palom (Adult)-HoxNorf-FF4.bin b/graphics/sprites/custom/Palom (Adult)-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..07f3dc1039ba9b3f5cbf98a57e1cb87bb5fe7d65 GIT binary patch literal 5792 zcmdT|eQXow8UNk+a(5(-?;r`e5GTGO8nP6~@fnk(xvRFdY}!gHv5po7SCs`uL*uR= zq{U6{4}_RRQKU^;v~H_4Rb8b?Z7Nk&R8p{}mZbufNL{d(V50 zW1FdB8vAGO8#{XM{Jzig{GR81z9cAOt-K6Dbt5*yEC)D9P-q5dmLP_>olyI+Q|`1b zTgfTFVb5p|(rkxW)hvCt>9s>=S|_VM*^};I`-==u5PsgWC0j~r+hg0NI)?wU{IOSd z)cx&Ywm*UqLG@W}nAA>pp+pLJTX~I_c?H#ghmq&}MJS?^e3;h4qy4dDDB;qKK@+qn zF_1tA?l7yCNez|vxBMY|@8-9^bt*$&CHk#Aa3A(&=!Zh;APZ-8#pmN_IPT;kQK)$@qi<~m@g)TU^p%djDEAU ztL04i$g|glKaqSSKZt&q=u6t8S@|dGx*|I^F?<%}Zx-WXjD!^fay8bf8_@Q(_>bb4 zyb56?>)HMc{s{tMgmwgq8yBxs58c_j;@LX0sD$VPiy#}^D%3$p)+gJq9{Zy9!`4ri zoqy$qK0^E9b^HiAJnEb}g;V%yn6jTQA-+p#ZxKX5<7B~AMOr-3@j*O?zX;JL7;^Z} z(|@e!hbvxu`cy|A{Z>4Mj%0nJedg#@|3@b;?mYjy8+9&yndrB|!g8nX6qnxf;elRn zfGn<>KCmAVY%k|$;Jf%cr#jAT>M@x9UHnDSK4LgQ20k-^to%Ff{Np~=%ksn0Ajp*x+PD(;R*o-|mAoQ*_tLR9QI{*_cSV}koWNy)rKBx{l ziAbW4y?37x^>#X2qt-NFhiQbMCV`+p#c56I5mBG)w0wFSqSYwUp571@J;^+7H z34$DcDJQ+bjOXwZ92lOsuz+7qd++Q|cXZ`z&u5ddXXM|7S#RCh@Kh=`FMk-`s6VD% zf~MRgKe^6)`BUX){3SalKU6W!)9txQ{&@{3(t`cWYe2b$eE{Q_9q(vOwGQ=Pb}scZ z{rWLPb2}`}(z5oM(eS^Ye`)Y?@TjqUpj%Ja$&utyW@J%=yqgYNj>5SW{ZxH=rT||Z z@qBy>xw}LLoX?#TtWa9Stor)L7O6ZbsnXkxG6CUE8TzqJ~xg?-$R>CWH>up#=UX<*Y%vaK7J*X41?Mb`m?BjjM+t*nmWc3kj zA@62f~EEfF?R^gN425A}l>g=d8NKdL8K_KYsh~Z>Ot{l37Ij(KZ|j z($qM=(j=Q$ECgs@F9U}Wmy3z78n#03#h1Fz8NIkDr*VZm9AcgX7lu(zdTw@qL3-mP z_yjNQP%?_6-EJDd&|tx4pjG~@@K)dKo2ePL#bVFUNhrRG>e6+kJ*#)?-A!$tYN?m7 zFI7to1SNx=AfxBlP^jnK5Bjd+La6qsl-&oLq<$3?e`aWQUhvF$ca#4J@|%b|2_cWA zz{`^jR?~_{XaDKoHE$2yGIBQbK|c~sPt-d=+Ruyv4UqrM*MLZ?LJhF@j(bu@1B;{* z=^N4ymOrTfrlap*?@Ea@AYnOl&Xz)o9!Nxz&IP&FGK zkSc=g$z)FyKZra}XJoP`;N(nYY(h_AC&iBx(gdeBCSSyc0URS2PMHGHU+pQR@5!Uj z4g?uw8<|5dOqL+HqY7)G`^XO6(N8yP)=42bkXbXByf{pHptxRS^54As_3m>|q>Izr zNWlWZDsU9RIh4??j7O&QvyqfAdu;B(bOY_z9RpgQ7lI>>@ab(S%vf)p~67%4D);rjQj>?3AqmCPR9 z@uiji`8DhPfzPe^2fXefB1*rMSv#cpWb|aTCN}@xRiZa0#>bFszY$8`b7f1{s`N^e zFlr=PZFC#TpppH3I(h)VwRh90dn;V^MLI3^{d;_DYNQjDB&uO zw8`q1c6!@Zp-Fd@Zw+SoXHi5@$^T~Shb>y{&-IgXmVd^*4t0Tl30>laeV^DzL+3*u zVPX%X&s^t0nu=Xw$1rQpEqzgZz<22We^_&qjQ%89=QLi!fY>fh{N$5^pEXUl?A12a zEb~(0XLBL9e$vRTQv{q_x?}pm%g>Bo(mDsX8*v+=6)@19K zjQF+L`X!EmLi{q$Cl9|aabn+?{YLwYMgC!1mjA8Tjeu2RW%wTxUnp+md%^B!hX1R$ zPA-Vu&x!qAYxf#0MNL9kks_8@oDF@EE~}Kodm*M9((Tude^L9#p`GA;HNmlk9j7F(mScRr>JJ) zdFmEChdW8us1vh7Iu%P+T#q|!J3S+=A`D49zkZ`{nKvK==Ig)36thYxdmz@y``o(z zBkL7vhW;oEv@}gjWtQces37Nt= zFVhaTwTN_7f`C(LLAP|vuvA^s>(x>!?`b2sT$%|k!6ko>BK_Nx|7M3{;z!gJTzIfl zCRM9Gyhr!W!+yk)Y)ZAcBmCgpWUs6KYPBVUoY^TY7OLD4C@%<})Z(7VR0%ICj=JVma*Gz#jD#VJ3b!61xN OcE#?x+h4g2{{IEjt!V`S literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Paul-HoxNorf-FF2.bin b/graphics/sprites/custom/Paul-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..76d9cf6157c07d923ee2a9dcf75522a8daa34768 GIT binary patch literal 5792 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 HfmQ!6PK#1P literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Piranha Plant-JamesWhite89-Mario.bin b/graphics/sprites/custom/Piranha Plant-JamesWhite89-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..71cfefe984b9fb48200ca2cb4b4f504fb0fe9b85 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Porom (Adult)-HoxNorf-FF4.bin b/graphics/sprites/custom/Porom (Adult)-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..14c6d783ac7fd0b5fe954b0167bdb7be20b48cc2 GIT binary patch literal 5792 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 A!vFvP literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Purple Sister-HoxNorf-Neptunia.bin b/graphics/sprites/custom/Purple Sister-HoxNorf-Neptunia.bin new file mode 100644 index 0000000000000000000000000000000000000000..bbc97ff9b225d1afc94330242166d1e299b0ace7 GIT binary patch literal 5792 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�)cLVx!utE=h@DvrabaJksgNg=$2AAT+^$)k7LY)7NSK*&1OjM)OCzHe2tVAc7tZV5oSE}eQ^+&1K z-@qI5$NZZ95Wf$s3<>YuoUZYgep?su5*sv z(x5bKY&V9ib=I-MX-C3BBn-^L&D`g=!5MNV-6?&$-kn^YoRu0>U2KG@;~0)}pTB@z zZ#k!(N$gb)X$Knn8)$AbHc5p9H6XD?P5}GV%jzKZdWZb|Cp$-J{wy}R+<%cWn{Bg# zCW(2;_fkL6)>ZK%X{ZmV^Hop>?!d^RSB)w2@812M=wVUcxxHSG)7TGc#wE-<`DWL< za}IPJ=n6+nnueWd+i@#*@rB9~?W@{Pwf9m>l36yAI_hGMY^X+3eESXWAGqR{{MUwp z+_1*{Y`@(KSMeF@Ig@DqFy}Y(4$o7&N|+u@1tqlYFn2jAX1T&}Davn|Vb|xk%y12* zmfwo3JeJ@3RCceD-#(>p)n8Z>Yj^43YPw=X^Yc=~%L&-CdsAm6Q{(sOL_eA~|<=-Oz7y3QQFcQH;{0-MNeoDJ(?h@Q+EM`h1 zClb0&j$KC`h33N=-E;DJfA_>ze4szYEzdSh!=MYeRg#}K8ttrl9;xAH^&kjZ!T*6i zoBq96!w>j^pcVWY`qlBK1KNJ=ZE2ER4fFSY5v6KjnuAR~I-Sam>^=a+^qs-xlj1<^P`ye?|Rv zTc!s$6a$B^)0JLHkkt%JzX=Dvet8%K5WmsP}&{2vF~T;ewd| zjsAuMjfb?o$|O!ZZ#f}*QURN=nf!TX|H(uCUT+YW)qUg-`P)o&OSvhwpPh7$ z74Eg3sPX4Ms%j@bTj9@Tbyn)7>q;+FvlF1oA z?{&@v`5<{NId;A%+Fge%2n>CVg zD`EZGgJxOOe|B<}VUk@&Lgb-n9{F(n=f~?mdOwkAoRwaYTh!PQo*yaHU)tarH3A8G z-_I0SZxwfD&gf@Ei|-b=#b$ing5iC}xPj+KvHeX3&yOnmTO0ed=^glX`TWN4SoeB{ zmn@&(#IxV4^2gNI%GG(bz76YhR_9@!jpo|<)f@WT(srT#Vf^b05~f5%zNg8g;w>axxrGQ{DIMtbJl78|B*+LmpY8MEDJGNRZJ@rj~TluFN` z!Tda!OO!9S2lwLNwHM8L4k;srU$WjYqs=9$8jRFab7`D6Hb4d*lBbfiTRu^FB& v30qW|`qPnu7mUVFM=&Z*M{1`_M8wmP+UXL5(T>+Qw(yxN29K`)HU9qq1akR< literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ram-HoxNorf-Neptunia.bin b/graphics/sprites/custom/Ram-HoxNorf-Neptunia.bin index d02289989562ff446408f7deac14214c0fd61810..d2d0f2a1092de6f9873bc61de8dac1ce36a18f5d 100644 GIT binary patch literal 5792 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 diff --git a/graphics/sprites/custom/Ramza-CtrlxZ-FFT.bin b/graphics/sprites/custom/Ramza-CtrlxZ-FFT.bin new file mode 100644 index 0000000000000000000000000000000000000000..31eb815a495903753e27b3b52c90b49994a0fc86 GIT binary patch literal 5792 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 E0>^vmZU6uP literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Rash-JamesWhite89-Battletoads.bin b/graphics/sprites/custom/Rash-JamesWhite89-Battletoads.bin new file mode 100644 index 0000000000000000000000000000000000000000..b2b43d08994ecd4917d62c20b5c54cbed33e731c GIT binary patch literal 5792 zcmc&&dvH`&8UNi~x_3)9d$)y>g)G_BsfvmuSV}^{>^eBwQHm6t3Ztb9I3a~VLcx&o z$eurZ)EOSF?buMt!|@OMM@LeNl-GpojN|w~V04_OB{X-iQnUe<;$U^{k<_GRwz&nw`Gv1-xr^;||cv;Eo!B%U~eAc>Vaf>J_ zQHL~2(13TiSd{YEahdo<^ZH0>vx{C*V&z_4G#9B6F9?5CkH7KPodhSe>K=)T`&)rT}FZY zt6ceA`ajI<^3oUidqf5o0w^lfe}H@pK?)}d^`C+>mdaj*L0rT&v|}Zx$T$*soL5Q@ zvz5x;!slDD3;lQ>RAMjsc+;z?cZ=4GxTuu0r&0K<_JJ^^51=N6Hqv!8YW>^1O;P&_ zwy-vwe!G`Gt&g?C>Gv1XKR+7}Q{5JMFv-Iw!9f-2itc^KW-ML93Hm3wwFSQ_vW-MU;h zwP>v8_?{k~N!Idq0Eh4{O+)yW_P!AP&?mz@+?szy(-nYn`Ts&9T{9(K6^jLj_^+V{ z#Zc6&o=+}TmsORWwg=U5aEoU0-;TFw|GiijqTPswWt4IOIh6R7t3eMkK;P@5${ST1 zBdC#gS}xhep%0OrA^K%I>D_%8qF;tZR7!f5dL_A19aG1sgBE$-tLY!c4CWDqWSYu) z(>P-6Vf1Q+nWS!F9yT&C%H{QUuueU!`c=PXjBCKD0lJme-w^$pEAgwbKCk?bQ~u?* zlK&;VK+AaKUxFp1@S){Tlue0GiO2K)Q$}^hVcp6P03lRS5@1Mwxb-ePcsu;8?CFcD6qxHxEblem=lQ~Z>*!o*#uApHbUl9E|tZ?L=VW_v#UqfMnGc6y0&7&}DU^qIaA=Ix2( z%@Y2^2o{|sM*ac_r4S*pqm12Y%uW7 zWP|d~FoUE5{_%kae6_|x@mqPfAK9J@rM!bjp!QjhJQWz;F=M{FXBEd=g>S^*;Rfpxj)GaMu)M1srWSJ z5O=%7JU_Ref77CD-(GscdL5qz4aevaPp~BaoW^A&?6kU|u7lcZCSNn~dph(!?3*4~ z;XBT=znLMmfk^Lr5KmFRpyDThdau`hFG`otp((@y4xgte1seUU!h@_227Omt`U%{< zh_ynFejStiqqOcMd=m?}1EG%8qr|B^sT=OW$7$ChD(fm<;~hrQ38ZoeU>O~*r;l!Q zFP%!fL&v9_ip)EDNXOmEoUn<3ASFqf$iF`AVd7(_aax})T`6wtqu=_UUi|o;?`?B!aKG6_?N$mcgOod%iuKUOPm=4M^O5n+ zb?P7_&lTS&<@4-Nrv5!dSYNM)Yrp zo_i_ZZvFqHbp%@@mt%do`g;OWhD3O_{+^xb$Hn0B>O`*o9*uws^Z7?me}5GGFDuy^ zc`npvdisY(hLWd$xETChWy0G(gqcIMek*C_qeM9}_u+uBBU8mocCriuf0WyhWz>7@sTRhb=A zpHov0jd;xWnC}7KIAc7kgl-u1lxixuFD9KR8c*@`JD7ZhHQ0Wh0aZ{_sg-(i-lm`H z6WsNYnXL7<<(QMH8d|5R9nXHCf6D^b2hZaqw&&K%RE#I}`CVk>gZwAA!2LIe4{sPb zH_Qad=pyV6|1A1jb5Qb^$ws)0Cup-9{}JANA9pnVEjr2>l>FteO=-qXzN6!R_=X>z zeleXbt-JRDR%-3y_ZDN{tpV9Tx6#=K*yHSC4D}P~^BKBSu75wDryr)_r%BZ3AuI=S z9u%1`0QH@4Q}Jg@A1oPd#jKK0C`e;W*3Gz_&>*USaE??>~Q7OJoo72fYRH~W56 zaf|%>pM5`iJ$Tj}M!ycHtSm8zRb^M4bgVcWoP|lU^DyiLW z&_4@ZHW@5<Ji<_zL+sH^|sjFP@t7H*1`x&+@75Fl~x(UC=Z-}SyS0eMjbT@q( zrClA6RkGSGTK(XfnJjrfMqxu_jAh)rJklh~OTlVG)-XRvb`-`uaC86kyg+tay+gUr reqW;h-sbm_p+cKBWVtMm?~gff$fTg7@09SYG$!?(yq|^t5C8uH4>WT- literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Refia-HoxNorf-FF3.bin b/graphics/sprites/custom/Refia-HoxNorf-FF3.bin new file mode 100644 index 0000000000000000000000000000000000000000..f3f9378df98075645b04344d219d367c95c2a5b0 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Reimu2-HoxNorf-Touhou.bin b/graphics/sprites/custom/Reimu2-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..097070e97d262f6a23edf169f4a5c488f6b148e9 GIT binary patch literal 5792 zcmbtYe~c968GdGVZf6$eb_ZDR_SoIqfC0|C6_;h97BHIB8dEi;Is$=bg`?9sc&OYSJ=aB&2VuAS9fmms*{TV4O|@b)4WJw4RRq!gOWKLdAzNiQ_d^&ipS7}Axvs7_wUh5804(t6wd+ux|3q7PY%tn|4GcW{~~l?6|VKEC09wqYB} zoYWsj`i3Z9%$(5QlMlpj9jv*Vq|K4t+C#c9a12ZNyaJYBF;}1CdgXWPpUwV3ena_8 zY{S(@!j4u6SCl=tHr5?AW2?g%Sq~-T95hLjqEahlge5%$b%%ZK;K$mRc*Z?hnMh0| zUc)HSrqFK>2r`e|*?Wg+#vK5Vxh--qHDQb^Ar7cFBm5fau@sBN)=s(WPMxVg}X(|$$3f@>wR2`)5D z>z@kc%|@Q-55f|MA?!iJY&!Yf^vnAWpcK)L-yN z`#=6@szwQQeyCo2tnvZ4T@t2&hok?5Znnh|oYMsGmn-1c@iFoqs_VwjA*w=Aq*w;Ii2Kx&B)zN)q z%|tiLibo^i*{WJYr-U>qOwS3>g%F@S6=8hQN z<2Juy{jn17^E9g%REOr>+tf9$HRpaR$+8?9qZXa2X4bsgawC?y$` zuXkTBV#2v2;buclsHS9&8;pwC&QoVg-D54~sWK{d(YA)IQO!xXI`qNb(_25d=ZU`3 zhW_kwBLmgkiJjPi8~KS59PQ;#5BxS9X-RMCQ6{u1z4AQH;~bvkC$aC35U!H<%6r>i zXJV=i8670idVlo^@^8KR&g<_T{4&^n3#Sovl>dO0!#RAZBr7kv|33cKA+bNi2TyT+ zjqUa$g+~e(3RA()klM<*WqOHse)U!90`q+$G>5(lv{{F;JR;hY9>THLKBj!46|f)w z?f7ea3P-Vr_$zQ`p~r~>d9~2GjP-R;-_im#e*5)p-kltuV0|6bx3mD0h^Vjq`Zn(l z9em1a+_$xC!~UAftpADcicWRuT!AmCr=uCK{+C(*x5<(o)`)LY+&#QW;2Seb166?a ze^KBo+NNbh!cnARUiIzO-(fI#i~6Tle-B%X6%|o^bF$>NK-a6dbV9%W&S1IGpB-GZ zLfa+1{G%bkNAfB{8?$>UX6Ww|T94AcO*bCLXAc)#vCr;BVb%gY4g&p>_)0V@9phMUY(A6@k^plG?}49Gc6!v37XbqMG4oB^&+A`6(>2&H=s%{|e@u2v6p62)|F~(o|Jcv|W394N z_)kOs@jkX=3wC++e+JFrFoSnc|1r?Zwn4He;vQ5 z|EKX&4=TafH!Sr?^F{X^AMbX`!#!i)EL$8N)@;qyP6+;52l@^a z=Qq#QV~jFGnRV@pv^bifOFRTMW=2JP)ppbVQ)XuJSbimUH9!AVa&PBYYIDg})xSU3 zqrbBGp>!cheB^&9+l+KE&7&x^ElVy-b|rh$etu?V<*f7jyZYOD|9ENs)De_6+~2v1 zr1KFl1{BpS>yZWzjK&}HwtWvAmR&NSCsdHGQS%M)Rdn#;{=$#1WqT60x%r0pDsB+! z@im2B-kjOc~&Yy5&aWgq=*TcSrP*ahAo z{L|w<+s9NerzII2?4Z zUL88q|CWAF|Et#gub$t0|Et@d8Sz{Fuc7|ZcSU;}`rqYPj;Per(4AkZzZLg4v!1)} z*4Do~pZp?T_V15Id?*jJN}Qt-)o8iwm5#9DDL)VBV)G~ zku7G6X3@wdvYke=!C$zX70#+ul_sA7s=>z>% literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Relm-HoxNorf-FF6PR.bin b/graphics/sprites/custom/Relm-HoxNorf-FF6PR.bin new file mode 100644 index 0000000000000000000000000000000000000000..5054fc4f8585aa239b6b9a9738a82af5628f0206 GIT binary patch literal 5792 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 A;s5{u literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ricard-HoxNorf-FF2.bin b/graphics/sprites/custom/Ricard-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e8c8f429e0aad95fb02d2d4786d5f108b2b580a GIT binary patch literal 5792 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 diff --git a/graphics/sprites/custom/Rubicante-Astaroth-FF4.bin b/graphics/sprites/custom/Rubicante-Astaroth-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..90d05d7dc839b1577acf1cf1c79962d373403f32 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Ryu-Quikdraw7777-SF.bin b/graphics/sprites/custom/Ryu-Quikdraw7777-SF.bin new file mode 100644 index 0000000000000000000000000000000000000000..9ee62ca8012758b08de08c00a50dc48b2205efc8 GIT binary patch literal 5792 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 W{Wt#KN1FV1EbuQoir~J?|9=3A42+Th literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Sanae-HoxNorf-Touhou.bin b/graphics/sprites/custom/Sanae-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..4da9b020aa7ad0ae97b6b8d4c147f6b65c3f242a GIT binary patch literal 5792 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 T-?Uxk_HiiScg1g-E5;RcRBI)C?(th(a*b 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Scott-HoxNorf-FF2.bin b/graphics/sprites/custom/Scott-HoxNorf-FF2.bin new file mode 100644 index 0000000000000000000000000000000000000000..beece9e02dd472126b7817dbfafe5ae5c4990af4 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Seifer-Filipinac-FF8.bin b/graphics/sprites/custom/Seifer-Filipinac-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..1dd11758a1c1f56ba3f9ae477faec68e5c7bf0b9 GIT binary patch literal 5792 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 Hp8o#0P1|Zo$RX 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Squall (Uniform)-SApprentice-FF8.bin b/graphics/sprites/custom/Squall (Uniform)-SApprentice-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..48e2d791177263e49aad7f24d85319f404b3ec12 GIT binary patch literal 5792 zcmc&&OKcm*8UFV{?uw$gD@!(MQxew?#AzOu96zL5GItv^fDS>;Q(?45%tH$cNLndK zkO;M0%^?RJf`UgM(w0XZj6$bY1=My6{jlld2nQ-ehsB#km;*!ba~t0k*T;&QYQ&28TCzWd%k?yl1c32IVE z(E)Q3T^$z|1Gv?WH^JdFLE-Gd`LjQoyl5~F%mp2rpmX4aAcKzkfoHd0`1Qk$F8vSlbW2ih zf{PydUr~M>0jm8}w*A~i+wbFdo?)Bt#iLG}wB;tX4R=TCpOv62&?4XTbAG0xey>;b zQ7T|JYfz2EOKM4zt(CY*u(P^O3)n5vWmmQrF^EA;}ck8j|wWXK( z7Zj-7q0~Z3-y+}kGrp$iLyVF-BBdWO{bnMVehmAk>$AiA^nX0nKmAwzGYjlp0P%CpO&eLeFV*0klV&)6K_PHzrX!{5+uPAO@SU!p5BMtHMz#OUjCQc{Evfw zpT0q-p2B})AOE>b-rB=|hRhECKuSw2QiuOd5+0GLhMo(gf4mauiXD&M~cXpjp#0Y0Eypr&PjY)TFx3UGDfOjcsd7M{X;u(Tg_Hb z3%wwMexYi{CnJ=Fop|dtKYJv|G;%P5@jiqc(E6Qv!)0{h+Ul#s3+5~ z3`66{r7oU@Y@OkOemz`^TEI_)i;rLq1bD<_XQY1AnSf`pAEkr$upH^TIwdBK8|-%} zj@a)wZlronwGp_;fQaB? zhd6YS7kVMS1U>|>t7N7R+&Efw5etD1o+;8vD$^l+!yxbh=pWH{XExzwIl~#@Eo+qAx!|RC~rjE(2DxS!73v8w8s1!;D3k? zgZCo%*voygvX}cU8qZE}v%kIc!x0;MIDdFFORv(1E^$LQ8*_raAd>MnWF@o%7&3nb z7k2PI9vNJ$MPLad0{ZJA^PX}a;ECFjkfeXu+Do6Kc}l;~u0vp9SjW$@PGo9>jxvN- zoD>G|4Y3wZgfZULz$^tGYa@^Rb|6#iD-OU;dDbr=V)scaXOLi2zQXhDFX<1>FU-&Wq}CT{ zm_DI@g8HM8xAMNJ>NH*}_2eFY|M-JXfAPf+KBKq5D-+9m1-m}gDhi$vuKTr39+xs!AZc9Hql1(Qar)}jRg>SfRsD~uBtQfc5hzA1wdh(N zkJQ!vyyy2eMZ0xVu-SLs=q{LO+GtCKy_#e@ik{1a?<}FaC~JBmHv{|k*GzrXfD3v zaeQ5+2RKuJW2Ha5V01l5z4MIf;MIG#gHP8}9#FH%{{5@=&uQIySm@tjwmWE89cs!=KAL+&NS$c z7ghFXJjd0ijAJtT(krNcfQ3fb2x@Eb=7}2D&62(cO$u7+%FlK9n}w9V>VFF~=@e06 zb>-{C$+mnyKlb+c()j%FN!u=tU{Xr=! RW1G|m%NaeTKlr-w_isr0+LZtR literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Squall-PocoLoco-FF8.bin b/graphics/sprites/custom/Squall-PocoLoco-FF8.bin new file mode 100644 index 0000000000000000000000000000000000000000..1d3997f2efb32697e85dc10acef8f252183a6a3b GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Tails-JamesWhite89-Sonic.bin b/graphics/sprites/custom/Tails-JamesWhite89-Sonic.bin new file mode 100644 index 0000000000000000000000000000000000000000..f206e112ec6f796e7d7bb56418702e8c1c21d235 GIT binary patch literal 5792 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 JFaAONzXNa3X@CF# literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Tifa-Astaroth-FF7.bin b/graphics/sprites/custom/Tifa-Astaroth-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..4f7de0d76d1a42721e953498f48eba7a9cc74353 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Tina-CtrlxZ-FF6.bin b/graphics/sprites/custom/Tina-CtrlxZ-FF6.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b4e1120e94f13461663dacb04a033d1a8cebab4 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Toriel-LoneRedMage-Undertale.bin b/graphics/sprites/custom/Toriel-LoneRedMage-Undertale.bin new file mode 100644 index 0000000000000000000000000000000000000000..838e4e48cff6776c0855987c2ad14421d076e0fe GIT binary patch literal 5792 zcmc&&Z){W76+h2@d3Kr?+k;|18Yg~&7MKc)+dyn;C(o@^%A~5=r~U(!C!oYYNZg?& znUXe^R;?daRY;pMq$0+L2~|^7MO&4nC>yU@)$$=je4-JvQg1_PHd(2qO_|FcX20{E zZ)~GYRPCg_3rX(#bI22WER# z`%CtPxy&Rj)6Wji(khkc0%4E}o%3Ypo|^P_P#ks)e9#eiViSz3_>;R7ppNCl)g^V3 zDxt-AnTYmX2w194#gG+3kG`?}%2S0S|1xuq{SGxiPi!*VOxONK730VLocj1PB|r+< zv>4CP6YnV3lsK^4bS3^ju&+4$$9&0{X_$sJ#($+4tpsev_Euf~iw*#r zs&r*)VQM5{XamBa3PoY5O{wCW5MD3oSN1<&rTI1h?Z)%fw_!skc?CaOe#`)_(Gbrra)I~v0vwdeQ zl0a3^qxz!W4edK3&ZNkLdtPcs6cFX9oFAWAn0vPL@Y=5H{5(%HGzS*f=sIN+rtxqj zrUs>USlFv1KwJb4ED>C$mBOE2TAo`Nf3uP-S1dce8oz`u$1#C2Sztc?`U~4$=zUD? zqJ)-;#uSCN$h$oVAFn1wF#yqP+C^=*Hc3@^P2H^}Nwc_7QMOcG#kR@V9DxjMZTNmZRyAMpl&4OuvjjID?4Qi&2>N zhQHgpZv8%L4JnV-=AXp;t9Q*m?#%xEt;X+8@awpC+2z;8g6LUC_vwjdbSId9pbJQy6!vdW!>WOG z;Jk~)Yom6#RiG>9dBx3jba{91`~xccpO*>8e~J7p96e5#-{Aa-I7=el%KA*PNEpPT zB8Q)jU*ZxuK=X+^ZWM`bJqL*AA_v^xwxx5Z$27La;D4A!8+B3-d^m;;5SYT8GlUPb z7je!IJ`5240Bu&HZQ=Iq+IO@VfYY}~Y4xa*Mw&B=YW#1Z)#SO{`JoBrpMff|*KwvD zA|)TN>hb?T%l&OTB9mJgAIE=-vxjf}3h}=+#@=y~E@wVC_UZ;k?q;t{tEp@tk-a9b zEJuG3NGT%z_v5XAr4%>AJ5}oUkEKVFY1nqX)9+17Nrr;e)ExFJp;B@*+D{Jmn0P3k z#O_kZAN7V?_1KWX-?;g!)!7E>%)3mo|J1YZB^v4hemN#h(77Y$PX2PN2Vcp|yn2LA zq81VO%T^_R#;jxne$KuoWoXPlOa-%)yG;SlyTKY2}G4(UJXVJwSykE;U-s)}&Rh9B$8;GT{E_D$wfxs;-`%~0eZ0a|m};o6 zp+dF+bp}Nq0&m+_G zUX7992dE0PwNg)YV-@*>+f7X_@m;c}ibm0>3`}h|`~gJz6k^Mu0osm*l409hRqTM> zdF%G_o$#n`;tLz?7HZ8f>3A+KFP-uZNE2H`AHO{$>qs>cc_rDq@J9NR{@*XP@pIe( zcRuTf-)qyECo3Pf&Y9=47Z3U>{2X`S5m`D2prAAJLFTt+_3=Z#R_s4q^JHRX;Bi0i zs6=C(fA9LTJNZTRjXU%w^gFFCtDC-{H$oT!*N>~`bIbGL($Lw(9OtJhMw~}&aTdRe zc)m2a^m1c;JxDJ%)z=ftr{8LY|K+oaxo~b(gC$xTSvn4W!vg;Z9S6VRI{vkZY4DpB z_}6F}{ASnjD>N)$&R#x!ZtTV@|2XODr!1WY3$GymuzniVZ-;MR-Mf0=z3%I-ehSl7 zu<#ys0#`pBOibedu|Meyfg{SpWsZv7q75uhCDwfcWms{)jYm2vBTzf3pX zNay^ZH`M>`S9ScHALNGm-~Fl)ztFFyF`T;bQhoIe=+~EOtIzsXu}2FBF4kAyhJL+R z(~o@~vHmXqp7r&2_3L~_tiQ{DW_|s?ssD=jdu-Fu)ZxCm{@w)ieGU5i>A7u%ee-qw zJqPsjHUD|F*YI?-_eV#P$9oxnFH&1OMWv(^R~Y~AhV0DZ%w%#cIz7brhp_L>P%gSTH-`DjstUL4fRJ_=|6e-|UeX93?_9zMfu7Y|0V*SeXK#^?o{tjF$UA!n`2ObEuL0oBSJ5Y#3S*G9*=wz>h)|{E2fLp4_9mY zj|+$*eJF?I`0Loc{YI!eq6K$%?1+qab7~Gj0SBoAKf7V8Y%a!E&ZMvWXma2D+t4Q_ z+~*8kfo7OT#W3ETO{62~h&Vs$2KNy(4C9<1{d#z?FuZ7=spMV$QLUjSJA=vx>kt0# zRe#+}-}3pDow)quXNQ+^&*>unK1qlDIiC*w&iR-3*Gi`O{3?U}i|zl%{M!&e_dY+e zpPSr1@X)}P^ELa=A$2}PTWa|&G`R(hTFY+V`VpYTWskgf)OP@zKp zO+>UfT|xWJ!e*}ThsTr|lofA9GVM|?Z@Z4*s zDy+@O``(eXsI2LL^p9ch!6(0ay!UYO+4z-3)==Q1%tLn@MM+S~B=_`#h&epC=4L;_8T1_P(`Lj%7x?Ie*)qzXs! zKf_Xm+Y`giy~jp#t`MBl#crK0Hz@A2Ua`PCKS2e=Pq`c+9%6w?_V(nA!X4MJyYW zMvu@Y1naiSabOl=8^LNZ{+5v_?`V+en_nIk)M@7HA1KaAo|B zeuR9!h6avf_}|1!(tc~n9&z(}8GosS1U&emq^clTIe!t$Wll>zk zKS}cMqW-K_k?%75QPLcSXPDTpqE#}(X*Ohy*e?abga#WpFbIPprrq-Pc&`Wv7jWZ< zOU-g`v;+6>V|Z;J`%Xp_Xr>;ok1o4KT(r+vgLndC(u~4BvJHzZwpRpc)p%mO4c}z>yox>Z)hd`m5~)=TF-)en|oWktm`8qhM_a%Hfc}% zEx)R2PbSoAzf97pdHiA8yY7beQMA?E6Oc7XWP!Vs$A2Vp`0Z}5X{X9-=}Sn`8p&Td!P z7>K;L?Um$`t*Ukv-}3q`pIx87X04=$tc#XG95)ezwU{;uqbzZRv833FI0eHEd=d5s z>*_Y}{W`8;+Sv+;vZl3o+#A%21o(E>OJiA5jM12B+##7 zlXlZchJAuhKmb1Kej=PNKo38Y0xS9qaaQ)xDG*0^2O7n*NGRh* zktDB6lli~Nvs2T^+dAf?OkU0(_+F;;z+vO4dDJ`^`tH;%=!x`xV|U^nT@Qsi9|qpn z{|tTBP3gJkpM2@U<#p&X)~sixe|!Fi{DYS-Gi?OOkPzZEL9ePSK;Q`#(t#c>X_%yK zNftSLTsDCA6~!V@oG!-sobbcmpCq4dqf?k`2K%meWZR%5A;1L?CcU#iPrr|E46St*^wbzGJH_3MMuN|Shp+#T!VztS^HI{=7bzdst~`JSC+q+Zi5<8*eyd?$HD z|Ib)Iv=WNhY$CC3o36*Uu-`D4W7yudv+W7#%27wpURDtCZK6=>5&>m2yqkqov=56vVhyF`vVZXY& ztvfV}Z%w^%^v8!!YAWAG*${k+a`#;i?$u)Son55JcbaxFOIWb==<8{3NlMM)=m~Xe zy;?sWOD5UkzEE2vqQ$@`x3S@b^}7AA^OtThQ^M=hMe=XEl*uhDW-<_`hv$25nAtOc^Kh*d{`=N3t$gcd%|BnO1Ift#!Sumq#`+>lWThf0C|D18E#e zA19_)S^*{Ts`k%4)iE*M(a!d~v5(uweN{Ro^`XwwkL%@nrQOnQia}l!`qRu!oV0H# zO@%{+CEG#f7`|ci%FaaR_!JFE>Y42GxhvUsJ8#hGMa{})_wOGb>0Dr^7t1fp`Slmg zZ>#y|=jFef^Up7y|9=v^gnz(9LnZ%3FhdDXR_v_G|LO3D_} zH67;<`A*8+(j#V%)Q_mlZ};67+{tY<+a*HaCoNB(``*Zh`XTcd@-Foj{M?z9kw^7E zH<#oVmGTFszeHrBC|n;6dmhYQQ52?pR;0f~1A_=b^K;{FW!_;7naj8e+!!>WKQg=J z6S1s61c8Fb7E#RLsHZs)|mcG*f?Od|+- zhtf3sh&cHaZK*?HsEywvUy>V?))%~ahg%g3!T(U!UdUV#Rxra&2)hEi(c%mFg>gK` z?G}uHiZ;mpx|7as%;;Utl)ZuxYa#7Kaa~_=BwM8%ESt8-E^?-pjrxTwr!)F?{lc=Q zB1Sgq7tc2~>X)kiOPLE9SG+u4)nD(>JH*Lxp{jo${~;ezdMP!cM*6d^tVNwm++)JQ zK+fn^lH`XnxT8XMV7C!g{CC#jy9x9HeWE zd&BwRVIymJXnXwCJ^p_4bNTD{`1`Y8&ELLg|CUF@o4E1YpAInoMzIBACnnPe1|FIw z{w|H*82WeR5)S|Ig@+h_$1%hyyRhb;dg%O!Zepu=Z|sEh=G2rL5%nFc?vKSpacWSd zGw?eaJHdaD{88d*Eye{o?j30bPWwb+T#ImEF^W}ByRRC_<}D>N>{Rj(Sg_I=TFG&`o4<^|m1p^TsQO~{U$cOeJkH-iZt2y3lq&w(`j1it zlr!gYCd}l~L0G|GrhKTHIhQkGZ@z*)%Y<3xyazK)Rs74DbCX`hzi3mkC#DKj{8{EK zX1x2O3jVd#`~R$e|F`;<-QUbaMt2;(|GU`_e5d?n{}-@D$xh*z-@Ct>X-^f7<=@9a z>%xBK|Lt}GwEtZg+kc+z>aUBxFK92)g~dkvjjYnp-H5+s`4df_C*Q;C|MlZHi_gE> zbid!nN9rVED#Qdg?RksZ_-y5 zean8HCO?7Y*csb(vQF`5-*-PPthYhcD^b@I(D!$z4*v4f=4P+hp*OZ(CbQ|y0)>xO z*WHp^x^W{mQ_cW?nL;E3v-udih6d(z=fP`E5sW3$Ag*f@UDI7>lp~ ziC|t$fffk#a0-X;3mn+~OQTe_?LYz~{&228b(Ziu8Go~$XtAIhDT&|RI9WbR_(P08 zX4o4Q7<&0NEF*lypB+#PdJaYWjR~B96^vUtJ%^%)e~aw@o$z-nI~YHyuTm^zjaGr* zO!ogt_~X`P#&?aQmV&I_DkoEU)NVEhIOWzYX?|2@)R64x1j z3g_U(pTtqgM=Q{Uu7!*%{lD-9DZ41(8s*1WFbvntPNm(Z!;5+`^6B18GrG}BpGA4} zSeXp{o&H>-shM9=Zv9K2XPmndYy?n*8f*h`wm7!{d28)i-wlExGFKZB__v3_TK=_{w>}P@$p8hMkRvrrzyhD z;&h0wWt_VAutkec7?Zce9RqRR1*ZCW$K&#Q?)m?8)US@vEN}nAi}J+-;)kl1 zsK4w-bfDX-zfY)s#rz-BpZD+C^&g1q&-=#{(!Uly8>A3RT81?&if=^$#75^`7O|uW zVrx~GWdWs5ukH-sII)!dv_l&y=%z)RVjr5-VzMwqyRz7u*U=7qff$NjhC$50!A;z9 zif&UI?MW+$opNRhPNaq+b`dMRMC{b@f!!>z(on2Y=h=MRN%3(IA-_cr1iudW?OV8w zl?eGQ?n3bEfZrYq#?z%ybJ83FQNX(bzl7F#;onjHAH9FsMSE^U|JTU^p?^Z^ z--e4({jZP(LVsK8KUaL&zue9Jlln;M3j3F2DWRBQ|I*WVqx`*f%?kP#H)C7ceDp6- z{oBIzeT4pFibATFmVH^s|KIgmN$S4@|85{|e4Cbif?VhKAAfnR{@bxB z70IuzRC{%PZO6%SB!8}zk5%W-T>D4TU#Dizd_ezgfSRS*`tLpUn^K?G59j*){Ht$I zwbw7fX2Xx)t(BAIk1O4cH~svp94jBI3}Q_8<98nPClk1S%=EwCpX(pc`9M{CZ`M~4 zqoMea>oSs_Lsazo@RS-uXpP zU*&9!|9JURq22Lu`)9^y9?Ir150&!l{DXNb^C#x5cu4-i_z#F*`V(H?nf~9G{%~ov z|I-~yBl}ye^BczZ`*$gdyI;R*@f#7J1ssaUC!OEO_^gFL*ZlGG!|YR{`GFF~ap&;Qsi<@r4g00bi`lida;h45X&-5T_Qvyl4 zH_-mnVAJoEgraJymeiBk2E!rVdIDe58RI4VoH(DbE&CJtRGhq1pii-A7g2_;h>6A3 tw7Rg-n1IiVKkYyS^h%?lX<%yrZ>&DJTfOvRYUcB_xMKbuj>1tI-(?B`x&SECw&^9{ zBc4k-H!{!3-o43w5RlCDP3Xrq_aK9RvFBXbMAwH#L%G7Q1<=e4e$&t2URdt>%AD+1 z_}u`)fS1imC_!17G*E5gO&gctk`O!$0xvJo`j>G13r(|K?^=EJ3Lodm;74%%-&|bl z`ofy8SNJ#&;!9%v*H~(9KLqfS#QGogjFbLTFcOQm$0HwA%)Xw0BdCA1X8<;STv`=s z4=r^p{xP?v{et+kXNnAHEmHpyfBa;^KOxSb{uREBFlGk7^dhS%O4⁣Sde#P<;^ptC954p$SIdJH~B&p;m#{ z19j+~Cz0oa4PRsZCE)A&E8|(1uR3qM&=L0W0+h+V{ zVf|l2f4%V+Wa|7^sseY@4VDE>0#x1V$Sh7VBuWj)dtGXCb;H|vpS1o&&>mz6kD!2yTA4GFrW)^4rWf=GWcm2nL+~;l}kR zjm!5r|Ezz^ep%C;e|pDhcN}=X<+aW@%9jXFbbo;PAIld;{{r2F!KqJHLnvRmce(Z^ z=6@_-FOA#9=ij;VZ@zvx-qzRR%D;1C`S;wNpK|5@eq;HI#h3Ndt-ws#aBYjHe(9x} zBwN3{l$yD)(mmy=U&2DT`&(@Nk}Ln#>W{_9^+UsTo$!24{!cT@{JUc5z=M^!Rk)Xv z|I>K!`9IB4O#M2vpXyhyf4L@{^{=7dsDAbOmutdV|0-Vp6!Gf3^*1qW86C<0C}Pfe z>u+LUh?M?!9P7_hB>xU+zac1x5Z2$OCjD;@*59v?{A1F7FN?oXFLao)=Lhd2MGoRss{eEE~aD@ye#!PrBXs z$M|yn>+`Qd`3>!VEOIK4&pr#`7wiAh{>FPw?8xyC8#3p+T;IR_zIFScGXhC7ef03r z9U1tL4C*EUlD01Jo)nH`IFKX;kq-}2P1iv;4AV+t?DXN~cfBJ36-goN5qrdpn^7xP z7TeyQ1bI0alN_JpyHuxli+knSyr?P}qlk=$v!qaUMI`iD>CNQo?kW;4g;yM+G)O@I IQ;{0@6A3J^VgLXD diff --git a/graphics/sprites/custom/Ursula-HoxNorf-FF4.bin b/graphics/sprites/custom/Ursula-HoxNorf-FF4.bin new file mode 100644 index 0000000000000000000000000000000000000000..bd4c5bcce70d706c6de90a91cd7178b950348ede GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Vincent-FEOK-FF7.bin b/graphics/sprites/custom/Vincent-FEOK-FF7.bin new file mode 100644 index 0000000000000000000000000000000000000000..816a50f81da99c745cc3e4ac9435a16feba72a58 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Wren-HoxNorf-PS4.bin b/graphics/sprites/custom/Wren-HoxNorf-PS4.bin new file mode 100644 index 0000000000000000000000000000000000000000..407ffda63ded9953e770005b8876f263fb94389b GIT binary patch literal 5792 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 XPhg-qt1V)DC1=mZ^3?u+um8URgJ!8r literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/X-Badass-Megaman.bin b/graphics/sprites/custom/X-Badass-Megaman.bin new file mode 100644 index 0000000000000000000000000000000000000000..72475e0d3c4aea831871a8dcbe62f9fcd7f40403 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Yoshi-Badass-Mario.bin b/graphics/sprites/custom/Yoshi-Badass-Mario.bin new file mode 100644 index 0000000000000000000000000000000000000000..96b4ed40593e8aa93a7c3fd1e512534a45521944 GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/graphics/sprites/custom/Yuyuko-HoxNorf-Touhou.bin b/graphics/sprites/custom/Yuyuko-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..7bb9380073c158b0c861376e696442972f561cd9 GIT binary patch literal 5792 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 fHFk3>PKbX literal 0 HcmV?d00001 diff --git a/graphics/sprites/sprites.py b/graphics/sprites/sprites.py index 2e533590..b91333c6 100644 --- a/graphics/sprites/sprites.py +++ b/graphics/sprites/sprites.py @@ -167,9 +167,127 @@ 208 : "Suwako-HoxNorf-Touhou", 209 : "Eiko_Miko-ScarabEnigma-FF9", + 210 : "Akari-HoxNorf-LB", + 211 : "Angeal-HoxNorf-FF7", + 212 : "Bombette-HoxNorf-Mario", + 213 : "Bowser-Badass-Mario", + 214 : "Cammy-Quikdraw7777-SF", + 215 : "Captain Falcon-JamesWhite89-FZero", + 216 : "Ceodore-HoxNorf-FF4", + 217 : "Chun Li-Quikdraw7777-SF", + 218 : "Eggman-JamesWhite89-Sonic", + 219 : "Fighter-CtrlxZ-FF1", + 220 : "Firion-HoxNorf-FF2", + 221 : "Genesis-HoxNorf-FF7", + 222 : "Gordon-HoxNorf-FF2", + 223 : "Guy-HoxNorf-FF2", + 224 : "Hotaru-HoxNorf-MOTW", + 225 : "Josef-HoxNorf-FF2", + 226 : "Knuckles-Jameswhite89-Sonic", + 227 : "Laguna-HoxNorf-FF8", + 228 : "Leila-HoxNorf-FF2", + 229 : "Leon-HoxNorf-FF2", + 230 : "Maria-HoxNorf-FF2", + 231 : "Metal Sonic-JamesWhite89-Sonic", + 232 : "Minwu-HoxNorf-FF2", + 233 : "Pacman Ghost-HoxNorf-Pacman", + 234 : "Palom (Adult)-HoxNorf-FF4", + 235 : "Paul-HoxNorf-FF2", + 236 : "Piranha Plant-JamesWhite89-Mario", + 237 : "Porom (Adult)-HoxNorf-FF4", + 238 : "Ramza-CtrlxZ-FFT", + 239 : "Ricard-HoxNorf-FF2", + 240 : "Ryu-Quikdraw7777-SF", + 241 : "Scott-HoxNorf-FF2", + 242 : "Tails-JamesWhite89-Sonic", + 243 : "Thief-CtrlxZ-FF1", + 244 : "Ursula-HoxNorf-FF4", + 245 : "Wolf-HoxNorf-Starfox", + 246 : "Futo-HoxNorf-Touhou", + 247 : "Kaguya-HoxNorf-Touhou", + 248 : "Reimu2-HoxNorf-Touhou", + 249 : "Antlion-Astaroth-FF4", + 250 : "Arvis-PocoLoco-FF6", + 251 : "Atma-Astaroth-FF6", + 252 : "Beatrix-PocoLoco-FF9", + 253 : "Boy-Zozma-FF6", + 254 : "Cagnazzo-Astaroth-FF4", + 255 : "Celes (Amano)-Astaroth-FF6", + 256 : "Celes (Opera)-Astaroth-FF6", + 257 : "Clyde-PocoLoco-FF6", + 258 : "Cultist-PocoLoco-FF6", + 259 : "Dancer-PocoLoco-FF6", + 260 : "Dark Elf-Astaroth-FF4", + 261 : "Draco-PocoLoco-FF6", + 262 : "Elena-Astaroth-FF7", + 263 : "Figaro Guard-PocoLoco-FF6", + 264 : "Granny-Zozma-FF6", + 265 : "Hojo-LoneRedMage-FF7", + 266 : "Sanae-HoxNorf-Touhou", + 267 : "Lady-Zozma-FF6", + 268 : "Link-FEOK-LegendOfZelda", + 269 : "LoneWolf-PocoLoco-FF6", + 270 : "Lucca-FEOK-CT", + 271 : "Lufia-JamesWhite89-Lufia", + 272 : "Luigi-Badass-Mario", + 273 : "Maduin-PocoLoco-FF6", + 274 : "Mario-Badass-Mario", + 275 : "Kain (Holy Dragoon)-CtrlxZ-FF4TAY", + 276 : "NarsheGuard-PocoLoco-FF6", + 277 : "Peach-Halkel-SMRPG", + 278 : "Returner-PocoLoco-FF6", + 279 : "Rubicante-Astaroth-FF4", + 280 : "Scholar-PocoLoco-FF6", + 281 : "Seifer-Filipinac-FF8", + 282 : "Siegfried-PocoLoco-FF6", + 283 : "Slash-Badass-CT", + 284 : "Sonic-Badass-Sonic", + 285 : "Squall (Uniform)-SApprentice-FF8", + 286 : "Squall-PocoLoco-FF8", + 287 : "Tifa-Astaroth-FF7", + 288 : "Train Conductor-Zozma-FF6", + 289 : "Vargas-PocoLoco-FF6", + 290 : "Vincent-FEOK-FF7", + 291 : "Yoshi-Badass-Mario", + # FFT 300 : "Alma-HoxNorf-FFT", 301 : "Orlandeau-ctrlxz-FFT", + + 302 : "Alice-HoxNorf-Touhou", + 303 : "Alphys-LoneRedMage-Undertale", + 304 : "Amy-HoxNorf-Sonic", + 305 : "Frisk-LoneRedMage-Undertale", + 306 : "Gryz-HoxNorf-PS4", + 307 : "Raja-HoxNorf-PS4", + 308 : "Rune-HoxNorf-PS4", + 309 : "Toriel-LoneRedMage-Undertale", + 310 : "Yuyuko-HoxNorf-Touhou", + 311 : "Cait Sith-HoxNorf-FF7", + 312 : "Wren-HoxNorf-PS4", + 313 : "Nitori-HoxNorf-Touhou", + 314 : "Donkey Kong-Badass-Mario", + 315 : "X-Badass-Megaman", + 316 : "Lugae-Astaroth-FF4", + 317 : "Gilius-JamesWhite89-GoldenAxe", + 318 : "Arthur-JamesWhite89-GnG", + 319 : "Sherlotta-HoxNorf_ScarabEnigma-FFCC", + 320 : "Purple Sister-HoxNorf-Neptunia", + 321 : "Noire-HoxNorf-Neptunia", + 322 : "Arle-HoxNorf-Madou", + 323 : "Simon-JamesWhite89-Castlevania", + 324 : "Aria-HoxNorf-FF3", + 325 : "Refia-HoxNorf-FF3", + 326 : "Nakoruru-HoxNorf-SamSho", + 327 : "Rash-JamesWhite89-Battletoads", + 328 : "Marle-CtrlxZ-CT", + 329 : "Relm-HoxNorf-FF6PR", + 330 : "Tina-CtrlxZ-FF6", + 331 : "Luneth-HoxNorf-FF3", + 332 : "Malin-HoxNorf-KOF", + 333 : "Toadette (Explorer)-HoxNorf-Mario", + 334 : "Blaze-HoxNorf-Sonic", + 335 : "Xion-Kzinssie-KH", } def get_path(id_): diff --git a/instruction/field/custom.py b/instruction/field/custom.py index a2cdf9e5..f9fb04d3 100644 --- a/instruction/field/custom.py +++ b/instruction/field/custom.py @@ -28,6 +28,7 @@ def _add_esper_increment(): class RemoveDeath(_Instruction): def __init__(self, character): import instruction.field as field + from instruction.c0 import character_data_offset self.current_status = 0x1614 # character status effects address self.death_mask = field.Status.DEATH >> 8 @@ -35,7 +36,7 @@ def __init__(self, character): # This is used in special events (like Moogle Defense), where we want to revive even with permadeath # Code based on C0/AE2D - AE44 (gen. act. 88 to Remove status effects) src = [ - asm.JSR(0x9dad, asm.ABS), + asm.JSR(character_data_offset, asm.ABS), asm.CPY(0x0250, asm.IMM16), asm.BCS("DONE"), asm.A16(), @@ -57,6 +58,91 @@ def __init__(self, character): RemoveDeath.__init__ = lambda self, character : super().__init__(opcode, character) self.__init__(character) +class SetEquipmentAndCommands(_Instruction): + def __init__(self, to_character, from_character): + from instruction.c0 import character_data_offset + + # subset of SetProperties vanilla command (0x40), which only sets equipment, commands, and character ID + src = [ + #C0/A07C: 20AD9D JSR $9DAD + asm.JSR(character_data_offset, asm.ABS), + # C0/A07F: A916 LDA #$16 + asm.LDA(0x16, asm.IMM8), + # C0/A081: 8D0242 STA $4202 + asm.STA(0x4202, asm.ABS), + # C0/A084: A5EC LDA $EC + asm.LDA(0xEC, asm.DIR), + # C0/A086: 8D0342 STA $4203 + asm.STA(0x4203, asm.ABS), + # C0/A089: EA NOP + asm.NOP(), + # C0/A08A: EA NOP + asm.NOP(), + # C0/A08B: EA NOP + asm.NOP(), + # C0/A08C: AE1642 LDX $4216 + asm.LDX(0x4216, asm.ABS), + # Commands + # C0/A08F: BFA27CED LDA $ED7CA2,X (command 1) + asm.LDA(0xED7CA2, asm.LNG_X), + # C0/A093: 991616 STA $1616,Y + asm.STA(0x1616, asm.ABS_Y), + # C0/A096: BFA37CED LDA $ED7CA3,X (command 2) + asm.LDA(0xED7CA3, asm.LNG_X), + # C0/A09A: 991716 STA $1617,Y + asm.STA(0x1617, asm.ABS_Y), + # C0/A09D: BFA47CED LDA $ED7CA4,X (command 3) + asm.LDA(0xED7CA4, asm.LNG_X), + # C0/A0A1: 991816 STA $1618,Y + asm.STA(0x1618, asm.ABS_Y), + # C0/A0A4: BFA57CED LDA $ED7CA5,X (command 4) + asm.LDA(0xED7CA5, asm.LNG_X), + # C0/A0A8: 991916 STA $1619,Y + asm.STA(0x1619, asm.ABS_Y), + # Equipment + # C0/A0CC: BFAF7CED LDA $ED7CAF,X (R-hand) + asm.LDA(0xED7CAF, asm.LNG_X), + # C0/A0D0: 991F16 STA $161F,Y + asm.STA(0x161F, asm.ABS_Y), + # C0/A0D3: BFB07CED LDA $ED7CB0,X (L-hand) + asm.LDA(0xED7CB0, asm.LNG_X), + # C0/A0D7: 992016 STA $1620,Y + asm.STA(0x1620, asm.ABS_Y), + # C0/A0DA: BFB17CED LDA $ED7CB1,X (Body) + asm.LDA(0xED7CB1, asm.LNG_X), + # C0/A0DE: 992116 STA $1621,Y + asm.STA(0x1621, asm.ABS_Y), + # C0/A0E1: BFB27CED LDA $ED7CB2,X (Head) + asm.LDA(0xED7CB2, asm.LNG_X), + # C0/A0E5: 992216 STA $1622,Y + asm.STA(0x1622, asm.ABS_Y), + # C0/A0E8: BFB37CED LDA $ED7CB3,X (Relic 1) + asm.LDA(0xED7CB3, asm.LNG_X), + # C0/A0EC: 992316 STA $1623,Y + asm.STA(0x1623, asm.ABS_Y), + # C0/A0EF: BFB47CED LDA $ED7CB4,X (Relic 2) + asm.LDA(0xED7CB4, asm.LNG_X), + # C0/A0F3: 992416 STA $1624,Y + asm.STA(0x1624, asm.ABS_Y), + + # C0/A10D: A5EC LDA $EC (load parameter) + asm.LDA(0xec, asm.DIR), + # C0/A10F: 990016 STA $1600,Y (save character ID) + asm.STA(0x1600, asm.ABS_Y), + + # C0/A17A: A903 LDA #$03 + asm.LDA(0x03, asm.IMM8), # command size + # C0/A17C: 4C5C9B JMP $9B5C + asm.JMP(0x9b5c, asm.ABS), # next command + ] + space = Write(Bank.C0, src, "custom swap equipment and commands command") + address = space.start_address + + opcode = 0xa3 + _set_opcode_address(opcode, address) + + SetEquipmentAndCommands.__init__ = lambda self, to_character, from_character : super().__init__(opcode, to_character, from_character) + self.__init__(to_character, from_character) class ToggleWorlds(_Instruction): def __init__(self): diff --git a/memory/space.py b/memory/space.py index 48c88f9f..5cc6c945 100644 --- a/memory/space.py +++ b/memory/space.py @@ -81,7 +81,8 @@ def write(self, *values): values = self._parse_labels(values) self._next_address = Space.rom.set_bytes(self.next_address, values) - assert self.next_address - 1 <= self.end_address + if(self.next_address - 1 > self.end_address): + raise MemoryError(f"Not enough room in space \"{self.description}\": Next (0x{self.next_address -1:x}) > End (0x{self.end_address:x}). Diff: {(self.next_address - 1) - (self.end_address)}") self._update_label_pointers() diff --git a/music/song_utils.py b/music/song_utils.py new file mode 100644 index 00000000..8758346e --- /dev/null +++ b/music/song_utils.py @@ -0,0 +1,24 @@ +from constants.entities import TERRA, LOCKE, CYAN, SHADOW, EDGAR, SABIN, CELES, STRAGO, RELM, SETZER, MOG, GAU, GOGO, UMARO +from data.event_bit import TEMP_SONG_OVERRIDE +from instruction import field + +character_to_song = { + TERRA: 0x05, + SHADOW: 0x07, + STRAGO: 0x08, + GAU: 0x09, + EDGAR: 0x0a, + SABIN: 0x0a, + CYAN: 0x0c, + LOCKE: 0x0d, + RELM: 0x0f, + SETZER: 0x10, + CELES: 0x12, + GOGO: 0x2d, + UMARO: 0x30, + MOG: 0x31 +} + +# Return id for character theme given a character id +def get_character_theme(char_id): + return character_to_song[char_id] diff --git a/objectives/results/auto_overcast.py b/objectives/results/auto_overcast.py new file mode 100644 index 00000000..143a65a0 --- /dev/null +++ b/objectives/results/auto_overcast.py @@ -0,0 +1,14 @@ +from objectives.results._objective_result import * + +class Field(field_result.Result): + def src(self): + return [] + +class Battle(battle_result.Result): + def src(self): + return [] + +class Result(ObjectiveResult): + NAME = "Auto Overcast" + def __init__(self): + super().__init__(Field, Battle) diff --git a/settings/permadeath.py b/settings/permadeath.py index 62aebbd2..4b753580 100644 --- a/settings/permadeath.py +++ b/settings/permadeath.py @@ -13,6 +13,7 @@ def __init__(self): if args.permadeath: self.remove_status_mod(remove_status_space) self.heal_hp_mod(heal_hp_space) + self.coliseum_mod() def remove_status_mod(self, space): # change remove status effects field command to never remove death @@ -47,3 +48,8 @@ def heal_hp_mod(self, space): space.write( asm.JMP(death_or_max_hp, asm.ABS), ) + + def coliseum_mod(self): + # don't revive permadeath characters by retaining the wound bit + space = Reserve(0x227f3, 0x227f3, "coliseum permadeath") + space.write(0xad) # default: 0x2d, which clears the wound bit \ No newline at end of file diff --git a/version.py b/version.py index bc86c944..67bc602a 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = "1.2.2" +__version__ = "1.3.0" From 73d1b1bd8d20d164ec12f9f78999c7a079fce19b Mon Sep 17 00:00:00 2001 From: asilverthorn <96998881+asilverthorn@users.noreply.github.com> Date: Sun, 2 Jul 2023 08:39:05 -0600 Subject: [PATCH 2/6] 1.3.1 (#99) - Chest Random Monster bug has been fixed (there was one buggy event encounter that was missed in 1.3.0 and is now removed from the random possibilities) - New "Auto" status objective results: Dark, Clear, and Imp. Like the others, these get applied at the start of each battle. - New sprites & portraits Co-authored-by: HoxNorf <45671870+HoxNorf@users.noreply.github.com> --- battle/auto_status.py | 8 +++++++- constants/objectives/results.py | 3 +++ data/enemy_battle_groups.py | 5 ++++- .../custom/Cleon (Player 1)-HoxNorf-PB4.pal | Bin 0 -> 32 bytes .../custom/Cleon (Player 2)-HoxNorf-PB4.pal | Bin 0 -> 32 bytes .../custom/Doom Guy-JamesWhite89-Doom.pal | Bin 0 -> 32 bytes .../palettes/custom/Koishi-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Lenna (Dancer)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Ranger)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Time Mage)-HoxNorf-FF5.pal | Bin 0 -> 32 bytes graphics/palettes/custom/Ness-Badass-Mother.pal | Bin 0 -> 32 bytes .../palettes/custom/Satori-HoxNorf-Touhou.pal | Bin 0 -> 32 bytes .../custom/Tohka (Spirit)-HoxNorf-DAL.pal | Bin 0 -> 32 bytes graphics/palettes/palettes.py | 10 ++++++++++ .../portraits/custom/Bubble Dragon-Peebs-BB.bin | Bin 0 -> 800 bytes .../portraits/custom/Bubble Dragon-Peebs-BB.pal | Bin 0 -> 32 bytes graphics/portraits/custom/Cleon-HoxNorf-PB4.bin | Bin 0 -> 800 bytes graphics/portraits/custom/Cleon-HoxNorf-PB4.pal | 1 + .../custom/Doom Guy-JamesWhite89-Doom.bin | Bin 0 -> 800 bytes .../custom/Doom Guy-JamesWhite89-Doom.pal | Bin 0 -> 32 bytes .../portraits/custom/Koishi-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Koishi-HoxNorf-Touhou.pal | 1 + .../custom/Lenna (Dancer)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../custom/Lenna (Dancer)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../custom/Lenna (Ranger)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../custom/Lenna (Ranger)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../Lenna (Time Mage)-JamesWhite89-FF5.bin | Bin 0 -> 800 bytes .../Lenna (Time Mage)-JamesWhite89-FF5.pal | Bin 0 -> 32 bytes .../portraits/custom/Ness-Unknown-Mother.bin | Bin 0 -> 800 bytes .../portraits/custom/Ness-Unknown-Mother.pal | Bin 0 -> 32 bytes .../portraits/custom/Reimu3-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Reimu3-HoxNorf-Touhou.pal | 1 + .../portraits/custom/Satori-HoxNorf-Touhou.bin | Bin 0 -> 800 bytes .../portraits/custom/Satori-HoxNorf-Touhou.pal | 1 + .../custom/Tohka (Spirit)-HoxNorf-DAL.bin | Bin 0 -> 800 bytes .../custom/Tohka (Spirit)-HoxNorf-DAL.pal | Bin 0 -> 32 bytes graphics/portraits/portraits.py | 11 +++++++++++ graphics/sprites/custom/Cleon-HoxNorf-PB4.bin | Bin 0 -> 5792 bytes .../custom/Doom Guy-JamesWhite89-Doom.bin | Bin 0 -> 5792 bytes .../sprites/custom/Koishi-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Dancer)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Ranger)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes .../custom/Lenna (Time Mage)-HoxNorf-FF5.bin | Bin 0 -> 5792 bytes graphics/sprites/custom/Ness-Badass-Mother.bin | Bin 0 -> 5792 bytes .../sprites/custom/Satori-HoxNorf-Touhou.bin | Bin 0 -> 5792 bytes .../custom/Tohka (Spirit)-HoxNorf-DAL.bin | Bin 0 -> 5792 bytes graphics/sprites/sprites.py | 9 +++++++++ objectives/results/auto_clear.py | 14 ++++++++++++++ objectives/results/auto_dark.py | 14 ++++++++++++++ objectives/results/auto_imp.py | 14 ++++++++++++++ version.py | 2 +- 51 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 graphics/palettes/custom/Cleon (Player 1)-HoxNorf-PB4.pal create mode 100644 graphics/palettes/custom/Cleon (Player 2)-HoxNorf-PB4.pal create mode 100644 graphics/palettes/custom/Doom Guy-JamesWhite89-Doom.pal create mode 100644 graphics/palettes/custom/Koishi-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Lenna (Dancer)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Lenna (Ranger)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Lenna (Time Mage)-HoxNorf-FF5.pal create mode 100644 graphics/palettes/custom/Ness-Badass-Mother.pal create mode 100644 graphics/palettes/custom/Satori-HoxNorf-Touhou.pal create mode 100644 graphics/palettes/custom/Tohka (Spirit)-HoxNorf-DAL.pal create mode 100644 graphics/portraits/custom/Bubble Dragon-Peebs-BB.bin create mode 100644 graphics/portraits/custom/Bubble Dragon-Peebs-BB.pal create mode 100644 graphics/portraits/custom/Cleon-HoxNorf-PB4.bin create mode 100644 graphics/portraits/custom/Cleon-HoxNorf-PB4.pal create mode 100644 graphics/portraits/custom/Doom Guy-JamesWhite89-Doom.bin create mode 100644 graphics/portraits/custom/Doom Guy-JamesWhite89-Doom.pal create mode 100644 graphics/portraits/custom/Koishi-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Koishi-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Lenna (Dancer)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Dancer)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Lenna (Time Mage)-JamesWhite89-FF5.bin create mode 100644 graphics/portraits/custom/Lenna (Time Mage)-JamesWhite89-FF5.pal create mode 100644 graphics/portraits/custom/Ness-Unknown-Mother.bin create mode 100644 graphics/portraits/custom/Ness-Unknown-Mother.pal create mode 100644 graphics/portraits/custom/Reimu3-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Reimu3-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Satori-HoxNorf-Touhou.bin create mode 100644 graphics/portraits/custom/Satori-HoxNorf-Touhou.pal create mode 100644 graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.bin create mode 100644 graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.pal create mode 100644 graphics/sprites/custom/Cleon-HoxNorf-PB4.bin create mode 100644 graphics/sprites/custom/Doom Guy-JamesWhite89-Doom.bin create mode 100644 graphics/sprites/custom/Koishi-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Lenna (Dancer)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Lenna (Ranger)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Lenna (Time Mage)-HoxNorf-FF5.bin create mode 100644 graphics/sprites/custom/Ness-Badass-Mother.bin create mode 100644 graphics/sprites/custom/Satori-HoxNorf-Touhou.bin create mode 100644 graphics/sprites/custom/Tohka (Spirit)-HoxNorf-DAL.bin create mode 100644 objectives/results/auto_clear.py create mode 100644 objectives/results/auto_dark.py create mode 100644 objectives/results/auto_imp.py diff --git a/battle/auto_status.py b/battle/auto_status.py index aefda0c9..2779b316 100644 --- a/battle/auto_status.py +++ b/battle/auto_status.py @@ -7,12 +7,15 @@ class _AutoStatus: def __init__(self): + auto_a_status_effects = ["Dark", "Clear", "Imp"] auto_b_status_effects = ["Condemned", "Image", "Mute", "Berserk", "Muddle", "Seizure", "Sleep"] auto_c_status_effects = ["Float", "Regen", "Slow", "Haste", "Shell", "Safe", "Reflect"] auto_d_status_effects = ["Life 3", "Dog Block"] auto_phantasm_overcast_status_effects = ["Overcast"] auto_addresses = [] + for status in auto_a_status_effects: + auto_addresses.append(self.auto_status(status, status_effects.A)) for status in auto_b_status_effects: auto_addresses.append(self.auto_status(status, status_effects.B)) for status in auto_c_status_effects: @@ -59,7 +62,10 @@ def auto_status(self, status_name, status_effects_group): status_bit = 1 << status_effects_group.name_id["Dance"] else: status_bit = 1 << status_effects_group.name_id[status_name] - if status_effects_group == status_effects.B: + if status_effects_group == status_effects.A: + status_address = 0x1614 + opcode = asm.ABS_Y + elif status_effects_group == status_effects.B: status_address = 0x3c6c opcode = asm.ABS_X elif status_effects_group == status_effects.C: diff --git a/constants/objectives/results.py b/constants/objectives/results.py index 92a46fe7..0524abc9 100644 --- a/constants/objectives/results.py +++ b/constants/objectives/results.py @@ -91,6 +91,9 @@ category_types["Auto"].append(ResultType(61, "Auto Dog Block", "Auto Dog Block", None)) category_types["Auto"].append(ResultType(62, "Auto Life 3", "Auto Life 3", None)) category_types["Auto"].append(ResultType(63, "Auto Overcast", "Auto Overcast", None)) +category_types["Auto"].append(ResultType(64, "Auto Dark", "Auto Dark", None)) +category_types["Auto"].append(ResultType(65, "Auto Clear", "Auto Clear", None)) +category_types["Auto"].append(ResultType(66, "Auto Imp", "Auto Imp", None)) categories = list(category_types.keys()) diff --git a/data/enemy_battle_groups.py b/data/enemy_battle_groups.py index b467323a..27272013 100644 --- a/data/enemy_battle_groups.py +++ b/data/enemy_battle_groups.py @@ -1,6 +1,8 @@ unused_event_battle_groups = { 9: "B.Day Suit/Officer", 10: "Merchant/B.Day Suit", + 13: "Cyan vs Grunts", + 14: "Cyan vs Grunts & Cadet", 49: "Empty", 50: "Empty", 51: "Empty", @@ -22,8 +24,9 @@ 97: "Empty", 105: "Empty", 106: "Empty", - 111: "White Drgn (repeat)", + 111: "White Drgn (repeat)", 115: "Terra flashback battle with 3 Soldiers", + 118: "Kefka vs Soldier", 120: "Tritoch (repeat)", 121: "Empty", 122: "Empty", diff --git a/graphics/palettes/custom/Cleon (Player 1)-HoxNorf-PB4.pal b/graphics/palettes/custom/Cleon (Player 1)-HoxNorf-PB4.pal new file mode 100644 index 0000000000000000000000000000000000000000..bcc4d06ad8e64e703b1ce4a65f9c32ce71b5e127 GIT binary patch literal 32 ncmZRuNap#Uzg{D(KCdi3SXODfr;uTsvLxRY0XeOA44*Usv5g9s literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Cleon (Player 2)-HoxNorf-PB4.pal b/graphics/palettes/custom/Cleon (Player 2)-HoxNorf-PB4.pal new file mode 100644 index 0000000000000000000000000000000000000000..89e285f0ea90ffbf41a3fd317be1ce06e5cfcac0 GIT binary patch literal 32 ocmWevNap#Uzrtot*bdwHU|FS&i8{V<%92XoMB??{F?`Yl0KcsZxBvhE literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Doom Guy-JamesWhite89-Doom.pal b/graphics/palettes/custom/Doom Guy-JamesWhite89-Doom.pal new file mode 100644 index 0000000000000000000000000000000000000000..4f0652a3b53fe06b36af4266536004750e21f07b GIT binary patch literal 32 ncmZ?bNap#UuM<|m$j>0}9;@}!>5HaS(YC<&;6Ji);=eR6R=tRPCgY|XWEJHP0O~aj`2YX_ literal 0 HcmV?d00001 diff --git a/graphics/palettes/custom/Tohka (Spirit)-HoxNorf-DAL.pal b/graphics/palettes/custom/Tohka (Spirit)-HoxNorf-DAL.pal new file mode 100644 index 0000000000000000000000000000000000000000..76093d6af7bcf7aea2da109039672eb584c9d8c0 GIT binary patch literal 32 ocmZRuNap#U-zuYRxm+bKT3U@KwB6>n(+1UVBJq0f7(QtN0IgRvXw!HbYYP&XRgiv2?Z3LdkfR13z`l^1r!S<^Mrlb z737oOp@{K0Kp3!)GXY&Y^h%8*HzAK19EUPNg+%m;o(Lrgi@iSj=pjrQU=KnQIay~5 z8bvGkjh~cN5+Npg(h|-XPp}y71fRUII(;9Gc{Y8PdV_fc?|8LFV1-A&9r&pyFk<0* zX{Wqv?-;|!-lJRVtI{UP?!ZyJy|HQx&%D02d42Qc`7aeOke*j~LO3+f({GM_F8<2@ z$(R|KvCe5TJx00kWe!7Xa-nQEMJ?z)^z0t)r zV^*=$*^;U+;U-!u`dQzRm1C8g+`RL!%KX3$?*^V4n9Sr_q^9*a?{>Dbo69pt$D{|5 uy0TZ`2a5xvSt*>;BP~{aECveGxWTOO{Zgb+?k?ZWsHs62-OdK1{F1-O5(PW} literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Bubble Dragon-Peebs-BB.pal b/graphics/portraits/custom/Bubble Dragon-Peebs-BB.pal new file mode 100644 index 0000000000000000000000000000000000000000..5918ae95a54ebd16cedd64d09f9f1aff7cb4bc5c GIT binary patch literal 32 ocmZRu;85Hz|5t3aygK(%w*U3_RV9+QiF~qUV2EUt70Gh|0IjhKDF6Tf literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cleon-HoxNorf-PB4.bin b/graphics/portraits/custom/Cleon-HoxNorf-PB4.bin new file mode 100644 index 0000000000000000000000000000000000000000..51dec9fd21ad6be0037a129ca1854bfc2e276caa GIT binary patch literal 800 zcmY+CPfQa*6vp4~NY_-dTM%OpEnDM3G)75Gv`E`+xNtBYGCKyY^S<{@6Svc~ zt==Qi6f{Ys>q`az1?WEz+obmD0fk~3EO6HH675qG3b7gI zy8R}vm-7Gw;-G_xCq?R)d=WEp_w)z;65G*I#8)E>Kk3R7o9$x5-?P{91^>d{Psh)+ z{yMy8#NsRtsE0NfLF38U3&q&ai$%c*PrD0sdfitpn`4WtJW8A@TUZuyd@fJ(^sV?j zaUwNgJT@kb8SG5dIV)kcBBylfP~BnXHjjy_;-mZwgPI+fhbZdsK?Ke%hG=M2F5@tc zg6bp4M$D_If^mpVY|g6A$iu|kp~YbeNr8s-O7Ln>jrPd>(J|2Qf{J^cJy%SR9?+r~ zVwLjJw1DoB2O6g$=JVf{-mRqRES3Iq z*MXO`EnVGvvp4ym#`kgdx4$$B90P)~$pVSd7_A*l4&56{4kbsPJ}c!{HvFZ?QZT7k ztP{PWTW||O$x>{valV!R@e0nj{5ZPMKj+m#T38EDhFSluDxPsMEJIK!fn6i}Z-)oj zV)=>!&gB=KkL2-n6jDYlu79XwRnwA^RTa3-f?o2H^sP#B5)0mag4&;S4c literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Cleon-HoxNorf-PB4.pal b/graphics/portraits/custom/Cleon-HoxNorf-PB4.pal new file mode 100644 index 00000000..144d5875 --- /dev/null +++ b/graphics/portraits/custom/Cleon-HoxNorf-PB4.pal @@ -0,0 +1 @@ +…I^#Ý·Iÿ39vVÙ-|:?WøR\^¯( \ No newline at end of file diff --git a/graphics/portraits/custom/Doom Guy-JamesWhite89-Doom.bin b/graphics/portraits/custom/Doom Guy-JamesWhite89-Doom.bin new file mode 100644 index 0000000000000000000000000000000000000000..116de0be3d8df46139feecf756bc946101ff05bd GIT binary patch literal 800 zcmaJ;T}V@57=FI*Y&$Dun-F0#?U+&*NzJenNq4dvDbjV}MRk*yXiyj^G?{HD`td?B zqnnVzd68sYXlO}6rbQSkn-LKipQSy|gOFu1Qis&YDMv{_Z|1&RT;Tap;#I6}A@{aZkSD0#(c zq26+?=tBCMnkag`1Kv)F63sx?!ik$~aNQqmf%HH|wNG!?>exzJdnb<7?7DINV1dS> zI#Os@riFBg9-_-w;Y(D;Qc_k|Ij6Bl=~1$k zF@@ZntCvG_!5?uOf5#iSZ)B+)XW&X>*)LNMTe{&VcXF@gc4H8Jd_aXj@>OdrqAtZ` z7GY&-35znsO+}2n;p}$Cj)RT9;-dDk5wqfHXSQLCBAHXlUr~@83UM*wxiOHPOUS-r8vrtP!ZUc{!yGNd9a#^L6#c zm4^XS?Y>&mgNjofeb&!;Lqi#s7XvfXU*11`a=9_6K+`oK6QR^UH+xZ;5RFH&FbiK= zr{KaQ35Y*Mr!ayLcA5;RvnWPcx2UhyIPp#i7DqichN-a2Hl%qyDAJU!RkKKf8!Zlm_rY9^^wM1YkSp;&Ul! z|9N~MC6Wy_cji+FsHFK9OH2f6&I1TAt{D?n1M4zjs))0Xp)DyyK&J@g`;^$S!G{~) zFK?<&C<8B}7cI7#8HF$dtZ6nVgdVasbj`O(X62kNwinBn*)`Jd-33Fll#KqF{UG&@ zNd6-Pyi+|9Lh}kv?70a95o90((%UrfAjwVJN8hGmbi96WbdHxEn$&LDoLhEeyvSaV zO$!FJh~5SdgB_v_O1A~IQ|)Jr3%cfQ_V_%YfC?&~_SD-lv~z-2!^OikjnNq0TyHvn zzU=K;RiS-Mm1||epj+rX3Ww1OQ~*WvQEMk3VRMZo@_yNbnW=uJ5+Q^P)8i~@R-#0A zhStB1*=_C3BuEs3i7a7qGGUiof`=lrQZGrnBx?ux#=grDF;z(NkR;kfccRioia*)68^&r=+p z8^s-CSs=-20uc!BVqCdVL74hH0CNsJ02Gxz{vV2%r(3hQ)%N}}0h{48lWV=so)zziWlEFyXkB%~JM(T_jBWH^C1z{r literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Koishi-HoxNorf-Touhou.pal b/graphics/portraits/custom/Koishi-HoxNorf-Touhou.pal new file mode 100644 index 00000000..433a1e20 --- /dev/null +++ b/graphics/portraits/custom/Koishi-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +©%-2:óNÛgW[¿od1<[6BB>3‰NÔ \ No newline at end of file diff --git a/graphics/portraits/custom/Lenna (Dancer)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Dancer)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..c9ebadbd897e12cb34ab0488cd919d383c9393cd GIT binary patch literal 800 zcmaJ;QAkr^82$cx@7k8z?%gJHX1UvTHABiVOeUCKMcsnL5hC`K?j7j*mo}0)201w%&&o>DgB$!@ zJ4F9^{sN#KK!#)lNsvNv8!1VXW{^mT1Ox^+55(hu=49sWCsp5bf3^*GotK27{$HP* z!gp9g!aFeUi9y;z4#&}mN*Wn!g(9=_e{x%hm#a;%~D!F_v4 zXM89w#RfPEUY0H9&fxtOH;!)h`LE*JyVu+i{c7@+8)(pj89Ys%)!?JXA4adytDm>M zGqYxvp`COMRYTQL6veKw4%R`h(VnY8PrD`JaBw_W9yATWah4Iw2xkEdVq zN=B|l3J_BoS;4NVtr-aiF*df(S1>!!EQtoy<-NB|r>?_J?=YU6O6atZmAj--W^>@nrIq=`R+kZ?b?oM1?57CY(~(g(gq? zh`x&bV;_35RhLE=o@T8JdToa%9_D`_Q!5-dA$F;_%mGoqAwW}vK|y%brDbi0NaZV4FCWD literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..a19ce73fbeca8819ef2adf6d63aa2aa204bacb5d GIT binary patch literal 800 zcmaJ;T}V@57=F*rIonw~+d120&KB-C=T8^akO+ftM?qa+G(yC>X$?Uy%*_j%5z=9l z7!|4AXr!%>(k$^JS`fJ9=%NT)T?|W8Vbav3Egdo2a($zgUG=;d-}`*e$IJ7*55ONN zKo1PySqh*)1Ow1&i;MGcg3#%kTkdGKvO0!IBn&g41*fy8hllMHlbd`SUruIq5tNn& zgKKM94t`h?IwAF!qYHpekWe^HFrN~O_I)a}QE9c3#Wt7*ZSZVL*UH zzIn@`bIH7n3-i_H7hZp-4B*qECSsX52Qic%xgFUPPNxFt$*s1;;sEp7)-PrT? zIpRk3{_#&&iZvI<7GD%?k=LAclh62vC%m<*(vQANj+*i52X=4oDV}~L3TfPE1%hBO KOispPvD7ayu;-ir literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.pal b/graphics/portraits/custom/Lenna (Ranger)-JamesWhite89-FF5.pal new file mode 100644 index 0000000000000000000000000000000000000000..b0fed2b3e8d74c64f99919896f81c6287b7aaf51 GIT binary patch literal 32 ocmexgU*pTbU>_D`_Q!5-dA$F;_yjM1(U*)n8GkZdbrDbi0M{}MdH?_b literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Lenna (Time Mage)-JamesWhite89-FF5.bin b/graphics/portraits/custom/Lenna (Time Mage)-JamesWhite89-FF5.bin new file mode 100644 index 0000000000000000000000000000000000000000..7112e1ddbe674490622abfadb076ba36610e6af3 GIT binary patch literal 800 zcma)(YeT!3G|M24Gm75&Yl=} zoZDvtx9>)c>n&b}(W-fk6SV_Acy{t@qyrydAKn7_#fTX3IeZRX zq~xoAaoY+JBo7$-7bUqkE{SN z;(^p{8;Y>Im)1*({lDrKj(stHgUevhTkN(f1VB+nqncE_T<%z@Jw1~v|9)cKw4Sjh zh^_5SovWNG<6O;I^g3fj*zrZ$!>AcSS-x{7{bE50S`eH^S1ZExp-<82HTROspaUao z<}he9I$d=&gZsc>6jDw&k( z8;LNqOQY5DJguf>w2W1=iapti0$z~Gqzq{S%Sw6RkGDd)^|9*Tvo#`ohWZ@_^SAQ}xI{%YP7I4+QVuo#k#jR&%0UluL^pnjfwOJKan-XEq$qll?B+ z%(C}edJB6Cy=GAZ0qtZvO?#e(8k;OFRsl`FDebCzUUo-YH)iS_D`_Q!5-dA$F;_=ZS-(U*)n8GkZdbrDbi0NJ$+sQ>@~ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ness-Unknown-Mother.bin b/graphics/portraits/custom/Ness-Unknown-Mother.bin new file mode 100644 index 0000000000000000000000000000000000000000..8e15a8c36bd5f439c1759c4d6b6fb3b7a48e650b GIT binary patch literal 800 zcmaKqO=uHA6vyApZn7~c*(iaewVI%K652*Yh;6eQJ$N&oJoM7sR4g{ogC8{6F<>iR zQc>tJ5fslNLJu}sig*!>2X9J~&|-y(*;0i~v$Nw2O%MwDe#^f3&+HEG3!rZZF!G|l z>U#tV3`;j6%d?}6k@b=F{=V>tV}oJ6GmAv51;WN54{i^kO&9|o$bdQfW`f24bU2zP zlbFTzBO3#A9s_A`-g7yTKl9?=lliI1tCOR{Urte6O*5$KIkkSSKK96XWlZcAI;owS zRk~X;@(K4@zIgL#Is5hG*5I!E@%7ZpndNk~>@=J$cbg^Ocf1`h#jAL7jTV0el5W!N zq-bHaKvTa9P1XzOKhA_`DClEYa_$$3^CFvQGiWgoxI6pzh~?CWw--8TH{4ab zip^t0$fXjZ3Tw3pp_0o3mmG>2YaJ(sEcq0l5>-O#;b076p1%PgP+`cEsR=ID4APZ1 zkNq6#pKGuaT+<#HLKD*Bg=E;c;GPv#F(Ag@yyj~k-jv|6N_61*8f0=CD+bJhsR3h9 zwioS7P6Pt7!n2WjvvV})S7ZqzjP_@#9jZYiUeiCHX7FurZlJDBvl!D@h(+w;d^**^ z+u?SIw~^ndnbTRyHdvc+!5;)gBzjNrp8QtdjD8O-Wi3Ws>h3uc_VYW}t)*r~H$f*A X^Gfqm#cuvs5j_(fwc-}x6B_*kI@13p literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Ness-Unknown-Mother.pal b/graphics/portraits/custom/Ness-Unknown-Mother.pal new file mode 100644 index 0000000000000000000000000000000000000000..622ea923740c9d28b19bfd61b63ff07c6f970f07 GIT binary patch literal 32 ocmexg&&j~cAjlxj&?2zJBkAFP`K{ zK2N^aJH9-eCl@Pg7HY)TXMRa6+f>)0^fZwYZ-@RSO&jX#+-^iv@K^iD~TFK8}BKu}0JjHm9akC%@hYvBQok`eNox0*TIjXF2yy9-%v?-Ys1Wcfy37sy*sYo49RBIx^^UeH%>!jhN;Y{J3 zLbSFAlqFe~B!Csdyl}hlcjMPB{goz5amhMBK#$u}=nNa;0jZ6^GkL<6(d~+U&!pb{Luvf#aA^)_ z2A$nZwNMxBo!c&7X%r?x6QL;e4TUir%d&rg-{NT;)LxBFSCk#?@{oZ6kLTPu^Lo6N zZATF61}V(`Xk!~Aj4dTE-1*qG^$_qCo?}KzbU6B^w;~xjt!DA|2S`x=DdEFfzMhZ zGI_=aNI#!|#`JSO0Q&zlZWPNimD#;cWn>-ZrC*|JEmf5iO@oeMDK^)neL6&XxzCB6 a`QweymeD+urS)UIGZGYwl|#WTvHt+zla>Mi literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Reimu3-HoxNorf-Touhou.pal b/graphics/portraits/custom/Reimu3-HoxNorf-Touhou.pal new file mode 100644 index 00000000..74c2111d --- /dev/null +++ b/graphics/portraits/custom/Reimu3-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +|© ßo)Gp18Fµ5:g^c¶^¼RÞ{2R1Ë$ \ No newline at end of file diff --git a/graphics/portraits/custom/Satori-HoxNorf-Touhou.bin b/graphics/portraits/custom/Satori-HoxNorf-Touhou.bin new file mode 100644 index 0000000000000000000000000000000000000000..c3b610947dfaabeb1ced79884ead1c86f24ed019 GIT binary patch literal 800 zcmX|8Ye*Df6ut9sXVhh8w5hh(_M5V_Cs7*cZRS8;HWeuH}Gyn!^!K|5$~(5_F)9EP|8;jz>qVRf!+bi!CbtMGZ!NUCr( zo~31sLoQ>wkul%$7m=bP>$ly_@FGC4Sk#5m_{r#LY`=)FF~0=5@Z*`yrLDTI(>i#> z+~wk|CVV+iu_yfGWbe-%q`aP1w*F`>%TLaC3URh13IYah2Gdmj zQG#)?rfH$jfJxox)ZPkw{d8W|9DH{6>-YTyNEUcLj;&#if%X(A*#Va0YJK_5an1QB zSj1(po>7GWLlIgl{~X-CTZrKpmSKS_^&JlH>#MN( zENWTyje}ax#qY->O&01w`n&Br^|m0|Bxfb9U`%DIzkRP0WHoM>Bf+UE>5i?jQ=IWG zRZ$h!h{T!695PhUQM>VEV5@~L%&_?$3YN|aPt9Wj2|k}a3kb=Tm! gsu%siuymZV!5nG@0ypU7&z)lqeT!^pw+e%Q03fj{l>h($ literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Satori-HoxNorf-Touhou.pal b/graphics/portraits/custom/Satori-HoxNorf-Touhou.pal new file mode 100644 index 00000000..d26c492c --- /dev/null +++ b/graphics/portraits/custom/Satori-HoxNorf-Touhou.pal @@ -0,0 +1 @@ +àAwœn¿o9bk¶QºV~csZoAY6v{%Ë(^ \ No newline at end of file diff --git a/graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.bin b/graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.bin new file mode 100644 index 0000000000000000000000000000000000000000..b83cd56d850c0b7be43c7d2f40a176195f90b029 GIT binary patch literal 800 zcmXAmT}V@57{{M?$GPQEXC>LkY%2vVD_2p?GB+!4BGDTmW|(A95aqy-q3L^!vLGmL z`T}(kbx~9Z-t;luw2KH!Eux#0on>k?W1B8_Z0EdB=h*+p^YT8=#RLEUlNlqZ!<2VM zS60`md7JGfhLAB?{{54>bF(5=0pULs7GW-)4`+j?wy$mrq zx73R~rYCiOGnGz*2{N-RoXMC5sYKt=nYg}?C^1P3V(ZMe-0u!CFc)n%;_zfS^XAiX ze?X~>6)b!Sxtv~G#jWS8K+s^){Qiw7EGMzI1W$DTW?cqkR+R zJ8O9UO3EP}AsEIE)Z=#S$2cm;c%BfVFWlPK7mv#_V~CWhwG6gmiT2Y*8j|wrH7iBL zfnYCf+_$sD*p}fNK-#0+95f*L4H3d<$^fY(e^xf!U($Q7mIXj@VvH^AP*Rhf?5%%l z>Vw~}u0v!BlTng5ha*6>qY#CYImr;&SnlhJtew@aWE(S@e$Bf_eTUmSG;fY*IKEVd z7W5`LpT~lxMDb^b-IT+13uD5p;11YC`;Ur?dtMewU!_GU#%9^P%b6A^2n`K|LNlT$ z#-eZ#PLbQ(Lw>w?n}3kD4C{K#EuItA`7jR7bRiwqgIlKyhX>5`9DPj1Y4MhzKsFo_ z-~o&~?|JVAKjR+nt;r{oZEAj1^pFvW$T*$tg>r-2H((eb0=&kpPRqoG}@7ytkO literal 0 HcmV?d00001 diff --git a/graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.pal b/graphics/portraits/custom/Tohka (Spirit)-HoxNorf-DAL.pal new file mode 100644 index 0000000000000000000000000000000000000000..9aab6f5172682480bdc43bf6446cbbb42f8641e1 GIT binary patch literal 32 ncmZQ@S|+1q`$C1&aDRSXdbyXd-Fm~DVcM#_o;Jy!B2z^Gvx^IF literal 0 HcmV?d00001 diff --git a/graphics/portraits/portraits.py b/graphics/portraits/portraits.py index 16e2d110..ffb30b4b 100644 --- a/graphics/portraits/portraits.py +++ b/graphics/portraits/portraits.py @@ -287,6 +287,17 @@ 378 : "Xion-Kzinssie-KH", 379 : "Gerad-Tsushiy_Gens-FF6", 380 : "Gau (Suit)-Tsushiy_Gens-FF6", + 381 : "Tohka (Spirit)-HoxNorf-DAL", + 382 : "Satori-HoxNorf-Touhou", + 383 : "Lenna (Dancer)-JamesWhite89-FF5", + 384 : "Lenna (Time Mage)-JamesWhite89-FF5", + 385 : "Lenna (Ranger)-JamesWhite89-FF5", + 386 : "Bubble Dragon-Peebs-BB", + 387 : "Ness-Unknown-Mother", + 388 : "Doom Guy-JamesWhite89-Doom", + 389 : "Cleon-HoxNorf-PB4", + 390 : "Koishi-HoxNorf-Touhou", + 391 : "Reimu3-HoxNorf-Touhou", } def get_bin_path(id_): diff --git a/graphics/sprites/custom/Cleon-HoxNorf-PB4.bin b/graphics/sprites/custom/Cleon-HoxNorf-PB4.bin new file mode 100644 index 0000000000000000000000000000000000000000..7376ac26e6a7757c46cd307906e0108caa2a497d GIT binary patch literal 5792 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