Skip to content
Open

1.4.3 #129

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
3ba30aa
1.2.2a (#51)
ff6wc Feb 1, 2023
52be1f7
Change vanilla dialog to include gameplay tips (#52)
ff6wc Feb 1, 2023
87677ad
Adding cursed shield dialog, per doubledown's suggestion (#54)
ff6wc Feb 1, 2023
3f7358a
Replace character check themes (#55)
ff6wc Feb 1, 2023
d08b469
Ebots rock (#56)
ff6wc Feb 1, 2023
a8284be
Feature/coliseum opponent and reward random percents (#57)
ff6wc Feb 1, 2023
b7c10d3
Revert "Feature/coliseum opponent and reward random percents (#57)"
ff6wc Feb 1, 2023
2fc67a3
adding top level __init__.py to allow higher level imports
asilverthorn Apr 1, 2023
01f5935
Revert "Ebots rock (#56)"
asilverthorn Apr 2, 2023
4b91c08
Small Aesthetic Additions
HoxNorf Apr 3, 2023
967c762
Sprite Additions and "Restorations"
HoxNorf Apr 6, 2023
168b92b
Dev updates (#67)
asilverthorn Apr 8, 2023
543930c
Dev bugfix: Fixing dev -crr incompatibility with old flagsets (#68)
asilverthorn Apr 8, 2023
e08d771
updating new -ssd arg Flags menu listing (#69)
asilverthorn Apr 8, 2023
aa85349
Esper mastery icon into dev (#71)
asilverthorn Apr 9, 2023
f485059
Dev updates (#72)
asilverthorn Apr 9, 2023
ad02088
--chests-all-miab update, Moogle Defense Open World, Mobliz average l…
asilverthorn Apr 11, 2023
6bb941f
Dev update: adding 'top' option for Remove Learnable Spells (#74)
asilverthorn Apr 11, 2023
64febf2
New Aesthetic Additions
HoxNorf Apr 13, 2023
1bec472
Merge branch 'dev' into sprite
HoxNorf Apr 14, 2023
d3d9534
New Portraits by asilverthorn
HoxNorf Apr 15, 2023
56f3be8
Dev updates: adding Ebot's Rock warp to chest & New Sprites/Portraits…
asilverthorn Apr 15, 2023
48f1430
Merge branch 'dev' into sprite
HoxNorf Apr 15, 2023
633d347
Restorations and Additions
HoxNorf Apr 15, 2023
769fedf
Dev updates: More Sprites/Portraits (#76)
asilverthorn Apr 15, 2023
24c7a52
Scale by bosses into dev (#78)
asilverthorn Apr 16, 2023
3c0e672
DoctorDT's dev updates: Fix Cid Timer Glitch + Don't add drops to fin…
asilverthorn Apr 22, 2023
f203cef
Merge branch 'dev' into sprite
HoxNorf Apr 22, 2023
a3aa42d
Dev Update: Max AH espers + Osteoclave's Alternate Healing Text Color…
asilverthorn Apr 23, 2023
1ef3e5b
New Portraits by Jones and Gens
HoxNorf Apr 23, 2023
9be0b68
New Portraits for dev (#82)
asilverthorn Apr 23, 2023
5fc505c
New Sprites and Filling in Portraits
HoxNorf Apr 29, 2023
3d15361
Merge branch 'dev' into sprite
HoxNorf Apr 29, 2023
8d38a02
Dev updates: Adding Dragons to defeated boss scaling. Updating MIAB r…
asilverthorn Apr 29, 2023
0916c6f
Bugfix: Fixing loss of objective +/- stats for unrecruited characters…
asilverthorn May 6, 2023
cf84c08
Minor change: leaving AH dialog vanilla with npctips (#85)
asilverthorn May 7, 2023
c1b8f1c
Feature: Auto Overcast objective result (#86)
asilverthorn May 7, 2023
4fca2bb
Bugfix: -chrm remove formations & zoneeater stomach (#87)
HansGR May 7, 2023
980a5ce
Dev updates (#88)
asilverthorn May 8, 2023
595f15d
Dev updates (#89)
asilverthorn May 8, 2023
576f7d9
Updating version for official 1.3 (#90)
asilverthorn May 20, 2023
56d7b8c
Merge branch 'dev' into sprite
HoxNorf May 21, 2023
6eb3d35
Merge remote-tracking branch 'upstream/main' into sprite
HoxNorf May 21, 2023
144e7fc
New Aesthetic Additions
HoxNorf Jun 11, 2023
2e41115
1.3.1 Dev updates -- MIAB bug fix, New Status objective results, HoxN…
asilverthorn Jun 11, 2023
e916efc
Formalizing 1.3.1 (#95)
asilverthorn Jul 1, 2023
10ade78
1.3.1
asilverthorn Jul 1, 2023
e0f30c1
Merge branch 'main' into sprite
HoxNorf Jul 2, 2023
debb6cd
add Lone Wolf & Tzen checks to NFP
BriGuy7727 Jul 23, 2023
cd5cd3c
Merge branch 'main' of https://github.com/BriGuy7727/WorldsCollide
BriGuy7727 Jul 23, 2023
75e5eaf
1.4 dev (#109)
asilverthorn Sep 24, 2023
71e9bce
remove Tzen Thief, add Mt Zozo to NFP setting
BriGuy7727 Sep 24, 2023
ec15812
Merge branch 'dev' into sprite
HoxNorf Sep 24, 2023
9d12745
New Aesthetic Additions
HoxNorf Sep 25, 2023
3248b96
1.4 Dev Part 2 (#113)
asilverthorn Sep 30, 2023
0a42798
Eliminating in-game RNG in fixed encounters (#114)
asilverthorn Oct 7, 2023
0133cd1
Merge branch 'dev' into sprite
HoxNorf Oct 14, 2023
19740dd
Last Few Aesthetic Additions
HoxNorf Oct 14, 2023
d6cca49
Merge branch 'main' of https://github.com/BriGuy7727/WorldsCollide
BriGuy7727 Nov 13, 2023
6e13020
fix bug with Phoenix Cave & KT skip for mid path
BriGuy7727 Nov 18, 2023
c3b7509
fix bug with Phoenix Cave & KT skip for mid path
BriGuy7727 Nov 18, 2023
1aeae57
Merge pull request #1 from ff6wc/main
BriGuy7727 Dec 5, 2023
6e24478
Update arguments.py
rblakedavis Jan 27, 2024
562b7dc
Merge branch 'main' into sprite
HoxNorf Feb 14, 2024
11e5bdd
New Aesthetic Update
HoxNorf Feb 14, 2024
cf28cb1
New Additions
HoxNorf Mar 7, 2024
f61d214
Merge branch 'main' of https://github.com/BriGuy7727/WorldsCollide
BriGuy7727 Mar 11, 2024
6d34f8d
update Coliseum display for shuffle+random
BriGuy7727 Mar 11, 2024
a234ec9
update Coliseum display for shuffle+random, include %s
BriGuy7727 Mar 11, 2024
5517dad
update display for Coliseum opponents & rewards
BriGuy7727 Mar 11, 2024
ee3f58e
More Additions
HoxNorf Mar 24, 2024
1cb0d5d
More Additions for Graphics
HoxNorf Apr 19, 2024
301047e
Fixing bug where multiple items can be received from PT reward
asilverthorn May 19, 2024
f08d6d8
Merge remote-tracking branch 'BriGuy7727/main' into 1.4.3
asilverthorn Jan 3, 2025
31c8c89
Removing Mt. Zozo from No Free Characters/Espers (reverting 1.4.0) du…
asilverthorn Jan 3, 2025
5ad8020
Adding -scan to output logs when set
asilverthorn Jan 3, 2025
5394bb8
Merge remote-tracking branch 'rblakedavis/main' into 1.4.3
asilverthorn Jan 3, 2025
4479734
Merge remote-tracking branch 'HoxNorf/sprite' into 1.4.3
asilverthorn Jan 3, 2025
c3e8439
Removing debug output and increasing version
asilverthorn Jan 3, 2025
29b05dc
Removed chance of Dried Meat being placed in Figaro Castle WOR shops
dbldown11 Apr 1, 2025
798eb67
Removed reference to depreciated code from Phantom Train check and ex…
dbldown11 Apr 1, 2025
f0e5237
Merge remote-tracking branch 'dbldown11/main' into 1.4.3
asilverthorn Apr 5, 2025
53587e4
Supporting newer versions of python
asilverthorn Apr 5, 2025
b23bf89
switching from list to sorted to ensure deterministic behavior. Thank…
asilverthorn Apr 6, 2025
0285aad
New Aesthetic Additions (1.4.3)
HoxNorf May 8, 2025
1bb51f6
prevent random boss + Unlock Kefka requirements from softlocks
BriGuy7727 May 14, 2025
d7798e7
prevent random boss + Unlock Kefka requirements from softlocks
BriGuy7727 May 22, 2025
b1e2929
prevent random boss + Unlock Kefka requirements from softlocks
BriGuy7727 May 23, 2025
dc3a8dd
prevent random boss + Unlock Kefka requirements from softlocks
BriGuy7727 May 23, 2025
9d4086d
Merge pull request #18 from BriGuy7727/1.4.3
asilverthorn May 25, 2025
d238a8f
Merge pull request #17 from HoxNorf/sprite
asilverthorn May 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions args/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ def __init__(self):
# if no output_file given add seed to output name
name, ext = os.path.splitext(self.input_file)
self.output_file = f"{name}_wc_{self.seed}{ext}"
elif os.path.isdir(self.output_file):
name, ext = os.path.splitext(os.path.basename(self.input_file))
# If output_file is a directory, construct the full path with above filename
self.output_file = os.path.join(self.output_file, f"{name}_wc_{self.seed}{ext}")

if self.debug:
self.spoiler_log = True
Expand Down
45 changes: 31 additions & 14 deletions args/coliseum.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ def flags(args):
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}"
flags += f" -cosr {args.coliseum_opponents_shuffle_random}"

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}"
flags += f" -crsr {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}"
Expand All @@ -64,28 +64,45 @@ def flags(args):
def options(args):
result = []

opponents = "Original"
# if Coliseum opponents are random
if args.coliseum_opponents_random:
opponents = "Random"
result.append(("Opponents", "Random", "opponents"))
result.append((" Random", f"{args.coliseum_opponents_random}%","coliseum_opponents_random"))
# if Coliseum opponents are shuffle + random
elif args.coliseum_opponents_shuffle_random:
result.append(("Opponents", "Random", "opponents"))
result.append((" Shuffle + Random", f"{args.coliseum_opponents_shuffle_random}%","coliseum_opponents_shuffle_random"))
# else Coliseum opponents are Original
else:
result.append(("Opponents", "Original", "opponents"))

rewards = "Original"
# if Coliseum rewards are random
if args.coliseum_rewards_random:
rewards = "Random"
result.append(("Rewards", "Random", "rewards"))
result.append((" Random", f"{args.coliseum_rewards_random}%","coliseum_rewards_random"))
# if Coliseum opponents are shuffle + random
elif args.coliseum_rewards_shuffle_random:
result.append(("Rewards", "Random", "rewards"))
result.append((" Shuffle + Random", f"{args.coliseum_rewards_shuffle_random}%","coliseum_rewards_shuffle_random"))
# else Coliseum opponents are Original
else:
result.append(("Rewards", "Original", "rewards"))

# process rewards menu options
rewards_visible = "Original"
if not args.coliseum_rewards_menu:
rewards_visible = "F"
else:
if args.coliseum_rewards_visible_random:
rewards_visible = f"{args.coliseum_rewards_visible_random_min}-{args.coliseum_rewards_visible_random_max}"

return [
("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"),
]
# update Coliseum menu display
result.append(("Rewards Visible", rewards_visible, "rewards_visible"))
# update Coliseum Exp Eggs display
result.append(("No Exp. Eggs", args.coliseum_no_exp_eggs, "coliseum_no_exp_eggs"))
# update Coliseum Illuminas display
result.append(("No Illuminas", args.coliseum_no_illuminas, "coliseum_no_illuminas"))

return result

def menu(args):
return (name(), options(args))
Expand Down
2 changes: 2 additions & 0 deletions args/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ def flags(args):
flags += f" -move {args.movement}"
if args.original_name_display:
flags += " -ond"
if args.scan_all:
flags += " -scan"
if args.warp_all:
flags += " -warp"
if args.npc_dialog_tips:
Expand Down
2 changes: 1 addition & 1 deletion args/shops.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def parse(parser):
shops_sell_fraction.add_argument("-ssf0", "--shop-sell-fraction0", action = "store_true",
help = "Items sell for zero")

shops.add_argument("-sdm", "--shop-dried-meat", default = 1, type = int, choices = range(6), metavar = "COUNT",
shops.add_argument("-sdm", "--shop-dried-meat", default = 1, type = int, choices = range(11), metavar = "COUNT",
help = "%(metavar)s shops will contain dried meat")
shops.add_argument("-npi", "--no-priceless-items", action = "store_true",
help = "Assign values to items which normally sell for 1 gold. Recommended with random inventory")
Expand Down
31 changes: 30 additions & 1 deletion data/enemy_packs.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,16 +150,19 @@ def randomize_event_bosses(self):
from constants.objectives.conditions import names as possible_condition_names

boss_condition_name = "Boss"
bosses_condition_name = "Bosses"
dragon_condition_name = "Dragon"
dragons_condition_name = "Dragons"
assert boss_condition_name in possible_condition_names
assert bosses_condition_name in possible_condition_names
assert dragon_condition_name in possible_condition_names
assert dragons_condition_name in possible_condition_names

required_boss_formations = set()
required_dragon_formations = set()
required_statue_formations = set()

min_boss_formations = 0
min_dragon_formations = 0
for objective in objectives:
for condition in objective.conditions:
Expand All @@ -169,15 +172,41 @@ def randomize_event_bosses(self):
required_statue_formations.add(formation)
else:
required_boss_formations.add(formation)
# if this condition is a set number of bosses, make sure we always get the highest amount for the minimum req # of formations
elif condition.NAME == bosses_condition_name and condition.count > min_boss_formations:
min_boss_formations = condition.count
elif condition.NAME == dragon_condition_name:
required_dragon_formations.add(condition.dragon_formation)
elif condition.NAME == dragons_condition_name and condition.count > min_dragon_formations:
min_dragon_formations = condition.count

# amount of bosses needed is the minimum from above minus the required bosses + required statues
boss_formations_needed = min_boss_formations - (len(required_boss_formations) + len(required_statue_formations))
# if the extra required number needed non-zero
if boss_formations_needed > 0:
# initialize all boss formations set
all_boss_formations = set(bosses.normal_formation_name)
# remaining bosses is all bosses - required bosses | required statues
required_formations = set(required_boss_formations | required_statue_formations)
remaining_boss_formations = sorted(all_boss_formations - required_formations)
# the random boss formation list is a sample of the remaining bosses for the amount needed to fulfill objectives
random_boss_formations = random.sample(remaining_boss_formations, boss_formations_needed)
# add these boss formations into the appropriate set
# (required_boss_formations or required_statue_formations)
for formation_id in random_boss_formations:
# if this formation is a statue
if formation_id in bosses.statue_formation_name:
# add to required statue formations
required_statue_formations.add(formation_id)
# else a regular boss
else:
# add to required boss formations
required_boss_formations.add(formation_id)

dragon_formations_needed = min_dragon_formations - len(required_dragon_formations)
if dragon_formations_needed > 0:
all_dragon_formations = set(bosses.dragon_formation_name)
remaining_dragon_formations = list(all_dragon_formations - required_dragon_formations)
remaining_dragon_formations = sorted(all_dragon_formations - required_dragon_formations)
random_dragon_formations = random.sample(remaining_dragon_formations, dragon_formations_needed)
required_dragon_formations |= set(random_dragon_formations)

Expand Down
2 changes: 1 addition & 1 deletion data/espers.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def get_random_esper(self):
if not self.available_espers:
return None

rand_esper = random.sample(self.available_espers, 1)[0]
rand_esper = random.sample(sorted(self.available_espers), 1)[0]
self.available_espers.remove(rand_esper)
return rand_esper

Expand Down
49 changes: 11 additions & 38 deletions data/shops.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,16 @@ def clear_inventories(self):
def assign_dried_meats(self):
dried_meat_id = self.items.get_id("Dried Meat")
dried_meat_type = self.items.get_type(dried_meat_id)
excluded_shops = ["Figaro Castle WOR (Left)","Figaro Castle WOR (Right)","Phantom Train"]

dried_meat_shops = []
no_dried_meat_shops = []

for shop in self.shops:
if shop.contains(dried_meat_id):
if shop.contains(dried_meat_id) and shop.name() in excluded_shops:
shop.remove(dried_meat_id)
no_dried_meat_shops.append(shop)
elif shop.contains(dried_meat_id):
dried_meat_shops.append(shop)
elif shop.type == Shop.ITEM or shop.type == Shop.VENDOR:
no_dried_meat_shops.append(shop)
Expand All @@ -167,50 +172,18 @@ def assign_dried_meats(self):
# add a dried meat if space, otherwise replace a random item with dried meat
for index in range(number_shops_with_dried_meat, self.args.shop_dried_meat):
random_shop = random.choice(no_dried_meat_shops)

while random_shop.name() in excluded_shops: # keep looping if shop is on the "bad" list
random_shop = random.choice(no_dried_meat_shops)

if not random_shop.full():
random_shop.append(dried_meat_id)
else:
random_index = random.randrange(random_shop.item_count)
random_shop.items[random_index] = dried_meat_id
no_dried_meat_shops.remove(random_shop)
dried_meat_shops.append(random_shop)

def no_dried_meat_phantom_train(self):
# move dried meat from phantom train shop to a different shop
phantom_train_shop_id = 85
phantom_train_shop = self.all_shops[phantom_train_shop_id]

dried_meat_id = self.items.get_id("Dried Meat")
dried_meat_type = self.items.get_type(dried_meat_id)
dried_meat_index = phantom_train_shop.index(dried_meat_id)
if dried_meat_index is None:
return # phantom train shop does not have dried meat

# possible shops the dried meat can be moved to
possible_shops = self.type_shops[Shop.ITEM] + self.type_shops[Shop.VENDOR]

import random
random.shuffle(possible_shops)

for random_shop in possible_shops:
if random_shop.contains(dried_meat_id):
continue

# try to swap an empty slot with the dried meat
if not random_shop.full():
random_shop.append(dried_meat_id)
phantom_train_shop.remove(dried_meat_id)
return

# try to find an item in random_shop that phantom train does not have and swap them
item_indices = list(range(random_shop.item_count))
random.shuffle(item_indices)
for item_index in item_indices:
item = random_shop.items[item_index]
item_type = self.items.get_type(item)
if item_type == dried_meat_type and not phantom_train_shop.contains(item):
phantom_train_shop.items[dried_meat_index] = item
random_shop.items[item_index] = dried_meat_id
return

def remove_excluded_items(self):
exclude = self.items.get_excluded()
Expand Down
5 changes: 5 additions & 0 deletions event/event_reward.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from enum import Flag, unique, auto
from typing import Collection
@unique
class RewardType(Flag):
NONE = auto()
Expand All @@ -15,6 +16,10 @@ def __init__(self, event, possible_types):
self.possible_types = possible_types

def single_possible_type(self):
# python version difference -- in 3.9, "self.possible_types in RewardType" will only be true if there's a single reward and self.possible_types would not be a collection
# however, in python 3.12+, Collections of objects are also considered that object, so it would always be true even with multiple rewards, so we have to check the length
if (isinstance(self.possible_types, Collection)):
return len(self.possible_types) == 1
return self.possible_types in RewardType

def __str__(self):
Expand Down
5 changes: 1 addition & 4 deletions event/mt_zozo.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ def character_gate(self):
return self.characters.CYAN

def init_rewards(self):
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)
self.reward = self.add_reward(RewardType.CHARACTER | RewardType.ESPER | RewardType.ITEM)

def init_event_bits(self, space):
space.write(
Expand Down
8 changes: 2 additions & 6 deletions event/phantom_train.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,6 @@ def add_gating_condition(self):
field.ReturnIfEventBitClear(event_bit.character_recruited(self.character_gate())),
)

sabin_path = self.characters.get_character_path(self.characters.SABIN)
veldt_gate = self.events["Veldt"].character_gate()
if veldt_gate in sabin_path and self.args.shop_dried_meat == 1:
# sabin requires veldt gate character and there is only one dried meat in shops
# make sure it is not in the phantom train
self.shops.no_dried_meat_phantom_train()

def _load_world_map(self):
src = [
Expand All @@ -82,6 +76,7 @@ def esper_item_mod(self, esper_item_instructions):
esper_item_instructions,

field.HideEntity(ghost_npc_id),
field.RefreshEntities(),
field.SetEventBit(event_bit.GOT_PHANTOM_TRAIN_REWARD),
field.FinishCheck(),
field.Return(),
Expand All @@ -100,6 +95,7 @@ def esper_item_mod(self, esper_item_instructions):
space.write(
field.ReturnIfEventBitClear(event_bit.GOT_PHANTOM_TRAIN_REWARD),
field.HideEntity(ghost_npc_id),
field.RefreshEntities(),
field.Return(),
)
self.maps.set_entrance_event(0x98, inside_last_car_entrance_event - EVENT_CODE_START)
Expand Down
Binary file added graphics/palettes/custom/Alys-HoxNorf-PS4.pal
Binary file not shown.
Binary file not shown.
Binary file added graphics/palettes/custom/Bow-HoxNorf-Mario.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Chaz-HoxNorf-PS4.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Demi-HoxNorf-PS4.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Falco-Badass-Starfox.pal
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/palettes/custom/Flowey-pomariin-Undertale.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
\c �+�y�gK�&�S'��Q6��
Binary file added graphics/palettes/custom/Fox-CtrlxZ-Starfox.pal
Binary file not shown.
Binary file modified graphics/palettes/custom/Iffy-HoxNorf-Neptunia.pal
Binary file not shown.
Binary file not shown.
Binary file added graphics/palettes/custom/Kirby-HoxNorf-Kirby.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Lutz-HoxNorf-PS1.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Marisa2-HoxNorf-Touhou.pal
Binary file not shown.
Binary file not shown.
Binary file added graphics/palettes/custom/Meiling-HoxNorf-Touhou.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Miko-HoxNorf-Touhou.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Mokou-HoxNorf-Touhou.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Olimar-HoxNorf-Pikmin.pal
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/palettes/custom/Purple Heart-HoxNorf-Neptunia.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Bc �o�qW~Oe�[�>�(d�a+I�F-R:ZO
Binary file not shown.
Binary file not shown.
Binary file added graphics/palettes/custom/Tao-HoxNorf-Shining.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Tewi-HoxNorf-Touhou.pal
Binary file not shown.
Binary file not shown.
Binary file added graphics/palettes/custom/Tycoon-HoxNorf-FF5.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Youmu-HoxNorf-Touhou.pal
Binary file not shown.
Binary file added graphics/palettes/custom/Yukari-HoxNorf-Touhou.pal
Binary file not shown.
26 changes: 26 additions & 0 deletions graphics/palettes/palettes.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,32 @@
357 : "Lenna (Thief)-HoxNorf-FF5",
358 : "Lenna (Summoner)-HoxNorf-FF5",
359 : "Lenna (Beastmaster)-HoxNorf-FF5",
360 : "Purple Heart-HoxNorf-Neptunia",
361 : "Reimu (PC98)-HoxNorf-Touhou",
362 : "Mokou-HoxNorf-Touhou",
363 : "Youmu-HoxNorf-Touhou",
364 : "Kirby-HoxNorf-Kirby",
365 : "Toadette (Sailor)-HoxNorf-Mario",
366 : "Shulk-HoxNorf-Xenoblade",
367 : "Miko-HoxNorf-Touhou",
368 : "Flowey-pomariin-Undertale",
369 : "Meiling-HoxNorf-Touhou",
370 : "Olimar-HoxNorf-Pikmin",
371 : "Tao-HoxNorf-Shining",
372 : "Tycoon-HoxNorf-FF5",
373 : "Chaz-HoxNorf-PS4",
374 : "Alys-HoxNorf-PS4",
375 : "Fox-CtrlxZ-Starfox",
376 : "Falco-Badass-Starfox",
377 : "Lutz-HoxNorf-PS1",
378 : "Yukari-HoxNorf-Touhou",
379 : "Demi-HoxNorf-PS4",
380 : "Ike (Ranger)-HoxNorf-FE",
381 : "Bartz (Dancer)-HoxNorf-FF5",
382 : "Marisa2-HoxNorf-Touhou",
383 : "Tewi-HoxNorf-Touhou",
384 : "Bow-HoxNorf-Mario",
385 : "Megumin-HoxNorf-Konosuba",
}

def get_path(id_):
Expand Down
Binary file added graphics/portraits/custom/Alys-HoxNorf-PS4.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Alys-HoxNorf-PS4.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Bow-HoxNorf-Mario.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Bow-HoxNorf-Mario.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Chaz-HoxNorf-PS4.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Chaz-HoxNorf-PS4.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Demi-HoxNorf-PS4.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Demi-HoxNorf-PS4.pal
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Ike (Ranger)-HoxNorf-FE.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|�n%�$1J=�I1Zsf�42^Wy)d �F
Binary file added graphics/portraits/custom/Kirby-Unknown-Kirby.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Kirby-Unknown-Kirby.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Lutz-HoxNorf-PS1.bin
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Lutz-HoxNorf-PS1.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|�Nn�rJn{>�n2�r�%�M�U/{ot�
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Megumin-HoxNorf-Konosuba.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|� !�.%~_P)�)=W�cX>�F�N�5�*
Binary file added graphics/portraits/custom/Meiling-HoxNorf-Touhou.bin
Binary file not shown.
2 changes: 2 additions & 0 deletions graphics/portraits/custom/Meiling-HoxNorf-Touhou.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
|]c�-2X%�1�%�o� WFS[B
�Z�2
Binary file added graphics/portraits/custom/Miko-HoxNorf-Touhou.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Miko-HoxNorf-Touhou.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Mokou-HoxNorf-Touhou.bin
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Mokou-HoxNorf-Touhou.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|�k�V\_�{VF�o�=�cn1g��RR;C�(
Binary file added graphics/portraits/custom/Olimar-HoxNorf-Pikmin.bin
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Olimar-HoxNorf-Pikmin.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|))�w�?OZoW�F:z>�g�=�^>%!
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Shulk-HoxNorf-Xenoblade.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|=K2e �B�,%x:�%k�W��=�fuV;-
Binary file added graphics/portraits/custom/Tao-HoxNorf-Shining.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Tao-HoxNorf-Shining.pal
Binary file not shown.
Binary file added graphics/portraits/custom/Tewi-HoxNorf-Touhou.bin
Binary file not shown.
Binary file added graphics/portraits/custom/Tewi-HoxNorf-Touhou.pal
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Tycoon-metalliguy_Gens-FF5.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|�Nv>�i�z'a�T3{�- !�c+z� �{�
Binary file not shown.
Binary file not shown.
Binary file added graphics/portraits/custom/Youmu-HoxNorf-Touhou.bin
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Youmu-HoxNorf-Touhou.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
||o�oZk�g�w�btV�{(-J}c�Z�N�=
Binary file added graphics/portraits/custom/Yukari-HoxNorf-Touhou.bin
Binary file not shown.
1 change: 1 addition & 0 deletions graphics/portraits/custom/Yukari-HoxNorf-Touhou.pal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
|�o01zBM=�b�J3Z�(� 7>�M�9s5o]_
Loading