Compare commits
7 Commits
pikit
...
d62d02a04a
| Author | SHA1 | Date | |
|---|---|---|---|
| d62d02a04a | |||
| b195069c77 | |||
| 844db083a6 | |||
| 14cb3e472c | |||
| e23dd30a59 | |||
| b72a04511b | |||
| 5beeea2f83 |
@@ -872,7 +872,7 @@ def set_up_shops(world, player):
|
|||||||
rss.locked = True
|
rss.locked = True
|
||||||
cap_shop = world.get_region('Capacity Upgrade', player).shop
|
cap_shop = world.get_region('Capacity Upgrade', player).shop
|
||||||
cap_shop.inventory[1] = None # remove arrow capacity upgrades in retro
|
cap_shop.inventory[1] = None # remove arrow capacity upgrades in retro
|
||||||
for shop in random.sample([s for s in world.shops[player] if not s.locked and s.region.player == player], 5):
|
for shop in random.sample([s for s in world.shops[player] if not s.locked and s.region.name != "Red Shield Shop" and s.region.player == player], 5):
|
||||||
shop.custom = True
|
shop.custom = True
|
||||||
shop.locked = True
|
shop.locked = True
|
||||||
if retro_bow:
|
if retro_bow:
|
||||||
|
|||||||
7
Items.py
7
Items.py
@@ -97,8 +97,8 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'Bow!\nJoin the archer class
|
|||||||
'Progressive Shield': (True, False, None, 0x5F, 50, 'Shield!\nA better shield for your time!', 'and the new shield', 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'a shield'),
|
'Progressive Shield': (True, False, None, 0x5F, 50, 'Shield!\nA better shield for your time!', 'and the new shield', 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'a shield'),
|
||||||
'Bug Catching Net': (True, False, None, 0x21, 50, 'Bug Net!\nCatch all manner\nof things!', 'and the bee catcher', 'the bug-catching kid', 'stick web for sale', 'fungus for butterflies', 'wrong boy catches bees again', 'the Bug Net'),
|
'Bug Catching Net': (True, False, None, 0x21, 50, 'Bug Net!\nCatch all manner\nof things!', 'and the bee catcher', 'the bug-catching kid', 'stick web for sale', 'fungus for butterflies', 'wrong boy catches bees again', 'the Bug Net'),
|
||||||
'Cane of Byrna': (True, False, None, 0x18, 50, 'Cane of Byrna!\nSwirly protection!', 'and the bad cane', 'the spark-making kid', 'spark stick for sale', 'spark-stick for trade', 'cane boy encircles again', 'the Blue Cane'),
|
'Cane of Byrna': (True, False, None, 0x18, 50, 'Cane of Byrna!\nSwirly protection!', 'and the bad cane', 'the spark-making kid', 'spark stick for sale', 'spark-stick for trade', 'cane boy encircles again', 'the Blue Cane'),
|
||||||
'Boss Heart Container': (False, True, None, 0x3E, 40, 'Heart Container!\nHealth Increased!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'),
|
'Boss Heart Container': (False, True, None, 0x3E, 40, 'Heart Container!\nHealth Increased!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart container'),
|
||||||
'Sanctuary Heart Container': (False, True, None, 0x3F, 50, 'Heart Container!\nHealth Increased!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'),
|
'Sanctuary Heart Container': (False, True, None, 0x3F, 50, 'Heart Container!\nHealth Increased!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart container'),
|
||||||
'Piece of Heart': (False, False, None, 0x17, 10, 'Heart Piece!\nOne step closer\nto more health!', 'and the broken heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart piece'),
|
'Piece of Heart': (False, False, None, 0x17, 10, 'Heart Piece!\nOne step closer\nto more health!', 'and the broken heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart piece'),
|
||||||
'Rupee (1)': (False, False, None, 0x34, 0, 'Rupees!\nJust pocket\nchange.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a green rupee'),
|
'Rupee (1)': (False, False, None, 0x34, 0, 'Rupees!\nJust pocket\nchange.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a green rupee'),
|
||||||
'Rupees (5)': (False, False, None, 0x35, 2, 'Rupees!\nJust pocket\nchange.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a blue rupee'),
|
'Rupees (5)': (False, False, None, 0x35, 2, 'Rupees!\nJust pocket\nchange.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a blue rupee'),
|
||||||
@@ -172,9 +172,10 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'Bow!\nJoin the archer class
|
|||||||
'Red Potion': (False, False, None, 0x2E, 150, 'Hearty red goop!', 'and the red goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has red goo again', 'a red potion'),
|
'Red Potion': (False, False, None, 0x2E, 150, 'Hearty red goop!', 'and the red goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has red goo again', 'a red potion'),
|
||||||
'Green Potion': (False, False, None, 0x2F, 60, 'Refreshing green goop!', 'and the green goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has green goo again', 'a green potion'),
|
'Green Potion': (False, False, None, 0x2F, 60, 'Refreshing green goop!', 'and the green goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has green goo again', 'a green potion'),
|
||||||
'Blue Potion': (False, False, None, 0x30, 160, 'Delicious blue goop!', 'and the blue goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has blue goo again', 'a blue potion'),
|
'Blue Potion': (False, False, None, 0x30, 160, 'Delicious blue goop!', 'and the blue goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has blue goo again', 'a blue potion'),
|
||||||
|
'Orange Potion': (False, False, None, 0x66, 1000, 'Energizing orange goop!', 'and the orange goo', 'the liquid kid', 'potion for sale', 'free samples', 'bottle boy has orange goo again', 'an orange potion'),
|
||||||
'Bee': (False, False, None, 0x0E, 10, 'I will sting your foes a few times', 'and the sting buddy', 'the beekeeper kid', 'insect for sale', 'shroom pollenation', 'bottle boy has mad bee again', 'a bee'),
|
'Bee': (False, False, None, 0x0E, 10, 'I will sting your foes a few times', 'and the sting buddy', 'the beekeeper kid', 'insect for sale', 'shroom pollenation', 'bottle boy has mad bee again', 'a bee'),
|
||||||
'Good Bee': (False, False, None, 0xD6, 10, 'I will sting your foes a lot', 'and the cold buddy', 'the beekeeper kid', 'cold insect for sale', 'shroom pollenation', 'bottle boy has cold bee again', 'a good bee'),
|
'Good Bee': (False, False, None, 0xD6, 10, 'I will sting your foes a lot', 'and the cold buddy', 'the beekeeper kid', 'cold insect for sale', 'shroom pollenation', 'bottle boy has cold bee again', 'a good bee'),
|
||||||
'Small Heart': (False, False, None, 0x42, 10, 'Just a little\npiece of love!', 'and the heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart'),
|
'Small Heart': (False, False, None, 0x42, 10, 'Just a little\npiece of love!', 'and the heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a refill heart'),
|
||||||
'Apples': (False, False, None, 0xD1, 30, 'Just a few pieces of fruit!', 'and the juicy fruit', 'the fruity kid', 'the fruit stand', 'expired fruit', 'bottle boy has fruit again', 'an apple hoard'),
|
'Apples': (False, False, None, 0xD1, 30, 'Just a few pieces of fruit!', 'and the juicy fruit', 'the fruity kid', 'the fruit stand', 'expired fruit', 'bottle boy has fruit again', 'an apple hoard'),
|
||||||
'Fairy': (False, False, None, 0xD2, 50, 'Just a pixie!', 'and the pixie', 'the pixie kid', 'pixie for sale', 'pixie fungus', 'bottle boy has pixie again', 'a pixie'),
|
'Fairy': (False, False, None, 0xD2, 50, 'Just a pixie!', 'and the pixie', 'the pixie kid', 'pixie for sale', 'pixie fungus', 'bottle boy has pixie again', 'a pixie'),
|
||||||
'Beat Boss': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
'Beat Boss': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
||||||
|
|||||||
19
Main.py
19
Main.py
@@ -336,10 +336,29 @@ def main(args, seed=None, fish=None):
|
|||||||
for player in range(1, world.players+1):
|
for player in range(1, world.players+1):
|
||||||
if world.shopsanity[player]:
|
if world.shopsanity[player]:
|
||||||
customize_shops(world, player)
|
customize_shops(world, player)
|
||||||
|
|
||||||
if not args.skip_money_balance and args.algorithm in ['balanced', 'equitable']:
|
if not args.skip_money_balance and args.algorithm in ['balanced', 'equitable']:
|
||||||
balance_money_progression(world)
|
balance_money_progression(world)
|
||||||
ensure_good_items(world, True)
|
ensure_good_items(world, True)
|
||||||
|
|
||||||
|
for player in range(1, world.players+1):
|
||||||
|
if args.orange_potion and world.difficulty[player] == "normal":
|
||||||
|
cap_shop = world.get_region('Capacity Upgrade', player).shop
|
||||||
|
potion = {
|
||||||
|
'item': "Orange Potion",
|
||||||
|
'price': 1000,
|
||||||
|
'max': 0,
|
||||||
|
'replacement': None,
|
||||||
|
'replacement_price': 0,
|
||||||
|
'create_location': False,
|
||||||
|
'player': 0,
|
||||||
|
}
|
||||||
|
if cap_shop.inventory[0] is None:
|
||||||
|
cap_shop.inventory[0] = potion
|
||||||
|
else:
|
||||||
|
cap_shop.inventory.insert(1, potion)
|
||||||
|
|
||||||
|
|
||||||
if args.print_custom_yaml:
|
if args.print_custom_yaml:
|
||||||
world.settings.record_info(world)
|
world.settings.record_info(world)
|
||||||
world.settings.record_overworld(world)
|
world.settings.record_overworld(world)
|
||||||
|
|||||||
28
Rom.py
28
Rom.py
@@ -85,7 +85,7 @@ from Utils import int16_as_bytes, int32_as_bytes, local_path, snes_to_pc
|
|||||||
from Versions import DRVersion, GKVersion, ORVersion
|
from Versions import DRVersion, GKVersion, ORVersion
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = 'c2ce7e227a019e083a173267daac828c'
|
RANDOMIZERBASEHASH = '94ff6d50db131aabe6b086e783709004'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -948,7 +948,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
|||||||
rom.write_byte(cr_pc+0x1e, 0xEE) # slash
|
rom.write_byte(cr_pc+0x1e, 0xEE) # slash
|
||||||
rom.write_byte(cr_pc+0x1f, thousands_bot)
|
rom.write_byte(cr_pc+0x1f, thousands_bot)
|
||||||
# modify stat config
|
# modify stat config
|
||||||
stat_address = 0x23983E
|
stat_address = 0xA39895
|
||||||
stat_pc = snes_to_pc(stat_address)
|
stat_pc = snes_to_pc(stat_address)
|
||||||
rom.write_byte(stat_pc, 0xa9) # change to pos 21 (from b1)
|
rom.write_byte(stat_pc, 0xa9) # change to pos 21 (from b1)
|
||||||
rom.write_byte(stat_pc+2, 0xc0) # change to 12 bits (from a0)
|
rom.write_byte(stat_pc+2, 0xc0) # change to 12 bits (from a0)
|
||||||
@@ -1450,7 +1450,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
|||||||
"bee": 0x10,
|
"bee": 0x10,
|
||||||
"somaria": 0x11,
|
"somaria": 0x11,
|
||||||
"byrna": 0x12,
|
"byrna": 0x12,
|
||||||
"none": 0xFF,
|
"none": 0x7F,
|
||||||
}
|
}
|
||||||
rom.write_byte(0x18002E, ganon_item_byte[world.ganon_item[player]])
|
rom.write_byte(0x18002E, ganon_item_byte[world.ganon_item[player]])
|
||||||
|
|
||||||
@@ -2021,7 +2021,15 @@ def write_custom_shops(rom, world, player):
|
|||||||
if world.shopsanity[player] or shop.type == ShopType.TakeAny:
|
if world.shopsanity[player] or shop.type == ShopType.TakeAny:
|
||||||
rom.write_byte(0x186E40 + shop.sram_address + index, 1)
|
rom.write_byte(0x186E40 + shop.sram_address + index, 1)
|
||||||
if world.shopsanity[player] and shop.region.name in shop_to_location_table:
|
if world.shopsanity[player] and shop.region.name in shop_to_location_table:
|
||||||
loc_item = world.get_location(shop_to_location_table[shop.region.name][index], player).item
|
if shop.region.name == "Capacity Upgrade" and shop.item_count == 3:
|
||||||
|
if index == 1:
|
||||||
|
loc_item = ItemFactory(item['item'], player)
|
||||||
|
else:
|
||||||
|
if index == 2:
|
||||||
|
index = 1
|
||||||
|
loc_item = world.get_location(shop_to_location_table[shop.region.name][index], player).item
|
||||||
|
else:
|
||||||
|
loc_item = world.get_location(shop_to_location_table[shop.region.name][index], player).item
|
||||||
elif world.shopsanity[player] and shop.region.name in retro_shops:
|
elif world.shopsanity[player] and shop.region.name in retro_shops:
|
||||||
loc_item = world.get_location(retro_shops[shop.region.name][index], player).item
|
loc_item = world.get_location(retro_shops[shop.region.name][index], player).item
|
||||||
else:
|
else:
|
||||||
@@ -2037,7 +2045,7 @@ def write_custom_shops(rom, world, player):
|
|||||||
replace_price = int16_as_bytes(item['replacement_price'])
|
replace_price = int16_as_bytes(item['replacement_price'])
|
||||||
item_max = item['max']
|
item_max = item['max']
|
||||||
item_player = 0 if item['player'] == player else item['player']
|
item_player = 0 if item['player'] == player else item['player']
|
||||||
item_data = [shop_id, item_id] + price + [item_max, replace] + replace_price + [item_player]
|
item_data = [shop_id, item_id] + price + [item_max, replace] + replace_price + [item_player]
|
||||||
items_data.extend(item_data)
|
items_data.extend(item_data)
|
||||||
|
|
||||||
rom.write_bytes(0x184800, shop_data)
|
rom.write_bytes(0x184800, shop_data)
|
||||||
@@ -2912,7 +2920,7 @@ def write_strings(rom, world, player, team, is_mystery=False):
|
|||||||
tt['sign_ganon'] = 'Ganon only respects those who have done everything.'
|
tt['sign_ganon'] = 'Ganon only respects those who have done everything.'
|
||||||
tt['ganon_fall_in'] = Ganon1_texts[random.randint(0, len(Ganon1_texts) - 1)]
|
tt['ganon_fall_in'] = Ganon1_texts[random.randint(0, len(Ganon1_texts) - 1)]
|
||||||
tt['ganon_fall_in_alt'] = 'You cannot defeat me until you finish your goal!'
|
tt['ganon_fall_in_alt'] = 'You cannot defeat me until you finish your goal!'
|
||||||
tt['ganon_phase_3_alt'] = 'Got wax in\nyour ears?\nI can not die!'
|
tt['ganon_phase_3_alt'] = 'Got wax in\nyour ears?\nI cannot die!'
|
||||||
|
|
||||||
def get_custom_goal_text(type):
|
def get_custom_goal_text(type):
|
||||||
goal_text = world.custom_goals[player][type]['goaltext']
|
goal_text = world.custom_goals[player][type]['goaltext']
|
||||||
@@ -2931,7 +2939,13 @@ def write_strings(rom, world, player, team, is_mystery=False):
|
|||||||
if world.custom_goals[player]['murahgoal'] and 'goaltext' in world.custom_goals[player]['murahgoal']:
|
if world.custom_goals[player]['murahgoal'] and 'goaltext' in world.custom_goals[player]['murahgoal']:
|
||||||
tt['murahdahla'] = get_custom_goal_text('murahgoal')
|
tt['murahdahla'] = get_custom_goal_text('murahgoal')
|
||||||
|
|
||||||
tt['kakariko_tavern_fisherman'] = TavernMan_texts[random.randint(0, len(TavernMan_texts) - 1)]
|
tavern_texts = random.sample(TavernMan_texts, 5)
|
||||||
|
|
||||||
|
tt['tavern_old_man_awake'] = tavern_texts.pop()
|
||||||
|
tt['tavern_old_man_unactivated_flute'] = tavern_texts.pop()
|
||||||
|
tt['tavern_old_man_know_tree_unactivated_flute'] = tavern_texts.pop()
|
||||||
|
tt['tavern_old_man_have_flute'] = tavern_texts.pop()
|
||||||
|
tt['kakariko_tavern_fisherman'] = tavern_texts.pop()
|
||||||
|
|
||||||
pedestalitem = world.get_location('Master Sword Pedestal', player).item
|
pedestalitem = world.get_location('Master Sword Pedestal', player).item
|
||||||
pedestal_text = 'Some Hot Air' if pedestalitem is None else hint_text(pedestalitem, True) if pedestalitem.pedestal_hint_text is not None else 'Unknown Item'
|
pedestal_text = 'Some Hot Air' if pedestalitem is None else hint_text(pedestalitem, True) if pedestalitem.pedestal_hint_text is not None else 'Unknown Item'
|
||||||
|
|||||||
183
Text.py
183
Text.py
@@ -50,18 +50,18 @@ Uncle_texts = [
|
|||||||
"Don't worry.\nI got this\ncovered.",
|
"Don't worry.\nI got this\ncovered.",
|
||||||
"Race you to\nthe castle!",
|
"Race you to\nthe castle!",
|
||||||
"\n Hi",
|
"\n Hi",
|
||||||
"I'M JUST GOING\nOUT FOR A\nPACK OF SMOKES",
|
"I'm just going\nout for a\npack of smokes.",
|
||||||
"It's dangerous\nto go alone.\nSee ya!",
|
"It's dangerous\nto go alone.\nSee ya!",
|
||||||
"ARE YOU A BAD\nENOUGH DUDE TO\nRESCUE ZELDA?",
|
"Are you a bad\nenough dude to\nrescue Zelda?",
|
||||||
"\n\n I AM ERROR",
|
"\n\n I AM ERROR",
|
||||||
"This seed is\nsub 2 hours,\nguaranteed.",
|
"This seed is\nsub 2 hours,\nguaranteed.",
|
||||||
"The chest is\na secret to\neverybody.",
|
"The chest is\na secret to\neverybody.",
|
||||||
"I'm off to\nfind the\nwind fish.",
|
"I'm off to\nfind the\nwind fish.",
|
||||||
"The shortcut\nto Ganon\nis this way!",
|
"The shortcut\nto Ganon\nis this way!",
|
||||||
"THE MOON IS\nCRASHING! RUN\nFOR YOUR LIFE!",
|
"The moon is\ncrashing! Run\nfor your life!",
|
||||||
"Time to fight\nhe who must\nnot be named.",
|
"Time to fight\nhe who must\nnot be named.",
|
||||||
"RED MAIL\nIS FOR\nCOWARDS.",
|
"Red mail\nis for\ncowards.",
|
||||||
"HEY!\n\nLISTEN!",
|
"Hey!\n\nListen!",
|
||||||
"Well\nexcuuuuuse me,\nprincess!",
|
"Well\nexcuuuuuse me,\nprincess!",
|
||||||
"5,000 Rupee\nreward for >\nYou're boned.",
|
"5,000 Rupee\nreward for >\nYou're boned.",
|
||||||
"Welcome to\nStoops Lonk's\nHoose",
|
"Welcome to\nStoops Lonk's\nHoose",
|
||||||
@@ -230,97 +230,92 @@ Ganon1_texts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
Ganon_Phase_3_No_Silvers_texts = [
|
Ganon_Phase_3_No_Silvers_texts = [
|
||||||
"Did you find\nthe arrows on\nPlanet Zebes?",
|
"Did you find\nthe arrows\non Planet Zebes?",
|
||||||
"Did you find\nthe arrows?\nI think not.",
|
"Did you find\nthe arrows?\nI think not.",
|
||||||
"Silver arrows?\nI have never\nheard of them",
|
"Silver arrows?\nI have never\nheard of them.",
|
||||||
"Did you find\nthe arrows on\nThe Moon?",
|
"Did you find\nthe arrows on\nThe Moon?",
|
||||||
"Did you find\nthe arrows\nIn dev null?",
|
"Did you find\nthe arrows\nin /dev/null?",
|
||||||
"I have sold\nthe arrows for\na green big 20",
|
"I have sold\nthe arrows for\na green big 20.",
|
||||||
"Did you find\nthe arrows in\nCount Dracula?",
|
"Did you find\nthe arrows in\nCount Dracula?",
|
||||||
"Error 404\nSilver arrows\nnot found.",
|
" Error 404\nSilver Arrows\n Not Found",
|
||||||
"No arrows for\nyou today.\nSorry.",
|
"No arrows\nfor you today.\nSorry.",
|
||||||
"No arrows?\nCheck your\njunk mail."
|
"No arrows?\nCheck your\njunk mail."
|
||||||
"Did you find\nthe arrows in\nJabu's belly?",
|
"Did you find\nthe arrows\nin Jabu's belly?",
|
||||||
"Silver is not\nan appropriate\narrow material",
|
"Silver is not\nan appropriate\narrow material.",
|
||||||
"Did you find\nthe arrows in\nNarnia?",
|
"Did you find\nthe arrows\nin nNarnia?",
|
||||||
"DID YOU FIND\nTHE ARROWS IN\nKEFKA'S TOWER",
|
"Did you find\nthe arrows\nin nKefka's Tower.",
|
||||||
"Did you find\nthe arrows in\nyour Recycle Bin?",
|
"Did you find\nthe arrows\nin nyour Recycle Bin?",
|
||||||
"Silver Arrows?\n\nLUL",
|
"Silver Arrows?\n\nLUL",
|
||||||
"Imagine\nfinding the\narrows",
|
"\nImagine finding\nthe arrows.",
|
||||||
"Did you find\nsilvers in\nscenic Ohio?",
|
"Did you find\nthe arrows\nin scenic Ohio?",
|
||||||
"Did you find\nthe arrows in\n*mumblemumble*",
|
"Did you find\nthe arrows\nin •mumblemumble•",
|
||||||
"Did you find\nthe arrows in\nthe hourglass?",
|
"Did you find\nthe arrows\nin the hourglass?",
|
||||||
"Silver Arrows\nare so v30",
|
"\nSilver Arrows\nare so main branch.",
|
||||||
"OH, NO, THEY\nACTUALLY SAID\nSILVER MARROW",
|
"Did you find\nthe arrows\nin World 4-2?",
|
||||||
"SURELY THE\nLEFTMOST TILES\nWILL STAY UP",
|
"Did you find\nthe arrows\nin Ghanti's ears?",
|
||||||
"Did you find\nthe arrows in\nWorld 4-2?",
|
|
||||||
"SILLY HERO,\nSILVER IS FOR\nWEREWOLVES!",
|
|
||||||
"Did you find\nthe silvers in\nGanti's ears",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
Ganon_Phase_3_No_Weakness_texts = [
|
Ganon_Phase_3_No_Weakness_texts = [
|
||||||
"Error 404\nWeakness\nnot found.",
|
"\n Error 404\nWeakness Not Found",
|
||||||
"No weakness\nfor you today.\nSorry",
|
"No weakness\nfor you today.\nSorry.",
|
||||||
"Careful, all\nthat spinning\nmakes me dizzy",
|
"Careful, all\nthat spinning\nmakes me dizzy.",
|
||||||
"Are you ready\nTo spin\nTo win?",
|
"Are you ready\nto spin\nto win?",
|
||||||
"\nSpin To Win!\n",
|
"\n Spin To Win!\n",
|
||||||
"SURELY THE\nLEFTMOST TILES\nWILL STAY UP",
|
"Surely the\nleftmost tiles\nwill stay up!",
|
||||||
"You Spin Me\nRight Round\nLike A Record",
|
"You spin me\nright round\nlike a record.",
|
||||||
"SILLY HERO,\nSILVER IS FOR\nWEREWOLVES!",
|
"Oh, no, they\nactually said\nsilver •marrow•.",
|
||||||
|
"Silly hero,\nsilver is for\nwerewolves!",
|
||||||
]
|
]
|
||||||
|
|
||||||
TavernMan_texts = [
|
TavernMan_texts = [
|
||||||
"What do you\ncall a blind\ndinosaur?\na doyouthink-\nhesaurus.",
|
"What do you call a blind dinosaur?\n\nA doyouthink-\nhesaurus.",
|
||||||
"A blind man\nwalks into\na bar.\nAnd a table.\nAnd a chair.",
|
"What do ducks like to eat?\n\nQuackers!",
|
||||||
"What do ducks\nlike to eat?\n\nQuackers!",
|
"How do you set up a party in space?\n\nYou planet!",
|
||||||
"How do you\nset up a party\nin space?\n\nYou planet!",
|
"I'm glad I know sign language.\nIt's pretty handy.",
|
||||||
"I'm glad I\nknow sign\nlanguage.\nIt's pretty\nhandy.",
|
"What did Zelda say to Link at a secure door?\n\nTriforce!",
|
||||||
"What did Zelda\nsay to Link at\na secure door?\n\nTRIFORCE!",
|
"I am on a seafood diet.\n\nEvery time I see food, I eat it.",
|
||||||
"I am on a\nseafood diet.\n\nEvery time\nI see food,\nI eat it.",
|
"I've decided to sell my vacuum.\n\nIt was just gathering dust.",
|
||||||
"I've decided\nto sell my\nvacuum.\nIt was just\ngathering\ndust.",
|
"What's the best time to go to the dentist?\n\nTooth-hurtie!",
|
||||||
"What's the best\ntime to go to\nthe dentist?\n\nTooth-hurtie!",
|
"Why can't a bike stand on its own?\n\nIt's two-tired!",
|
||||||
"Why can't a\nbike stand on\nits own?\n\nIt's two-tired!",
|
"If you haven't found Quake yet…\n\nit's not your fault.",
|
||||||
"If you haven't\nfound Quake\nyet…\nit's not your\nfault.",
|
"Why is Peter Pan always flying?\n\nBecause he Neverlands!",
|
||||||
"Why is Peter\nPan always\nflying?\nBecause he\nNeverlands!",
|
"I once told a joke to Armos.\n\nBut he remained stone-faced!",
|
||||||
"I once told a\njoke to Armos.\n\nBut he\nremained\nstone-faced!",
|
"Lanmola was late to our dinner party.\n\nHe just came for the desert",
|
||||||
"Lanmola was\nlate to our\ndinner party.\nHe just came\nfor the desert",
|
"Moldorm is such a prankster.\n\nAnd I fall for it every time!",
|
||||||
"Moldorm is\nsuch a\nprankster.\nAnd I fall for\nit every time!",
|
"Helmasaur is throwing a party.\n\nI hope it's a masquerade!",
|
||||||
"Helmasaur is\nthrowing a\nparty.\nI hope it's\na masquerade!",
|
"I'd like to know Arrghus better.\n\nBut he won't come out of his shell!",
|
||||||
"I'd like to\nknow Arrghus\nbetter.\nBut he won't\ncome out of\nhis shell!",
|
"Mothula didn't have much fun at the party.\n\nHe's immune to spiked punch!",
|
||||||
"Mothula didn't\nhave much fun\nat the party.\nHe's immune to\nspiked punch!",
|
"Kholdstare is afraid to go to the circus.\n\nHungry kids thought he was cotton candy!",
|
||||||
"Don't set me\nup with that\nchick from\nSteve's Town.\n\n\nI'm not\ninterested in\na Blind date!",
|
"I asked who Vitreous' best friends are.\n\nHe said, \"Me, Myself, and Eye!\"",
|
||||||
"Kholdstare is\nafraid to go\nto the circus.\nHungry kids\nthought he was\ncotton candy!",
|
"Trinexx can be a hothead or he can be an ice guy. In the end, he's a solid individual!",
|
||||||
"I asked who\nVitreous' best\nfriends are.\nHe said,\n'Me, Myself,\nand Eye!'",
|
"Bari thought I had moved out of town.\n\nHe was shocked to see me!",
|
||||||
"Trinexx can be\na hothead or\nhe can be an\nice guy. In\nthe end, he's\na solid\nindividual!",
|
"Don't argue with a frozen Deadrock.\n\nHe'll never change his position!",
|
||||||
"Bari thought I\nhad moved out\nof town.\nHe was shocked\nto see me!",
|
"I offered a drink to a self-loathing Ghini.\n\nHe said he didn't like spirits!",
|
||||||
"I can only get\nWeetabix\naround here.\nI have to go\nto Steve's\nTown for Count\nChocula!",
|
"I was supposed to meet Gibdo for lunch.\n\nBut he got wrapped up in something!",
|
||||||
"Don't argue\nwith a frozen\nDeadrock.\nHe'll never\nchange his\nposition!",
|
"Goriya sure has changed in this game.\n\nI hope he comes back around!",
|
||||||
"I offered a\ndrink to a\nself-loathing\nGhini.\nHe said he\ndidn't like\nspirits!",
|
"Hinox actually wants to be a lawyer.\n\nToo bad he bombed the bar exam!",
|
||||||
"I was supposed\nto meet Gibdo\nfor lunch.\nBut he got\nwrapped up in\nsomething!",
|
"I'm surprised Moblin's tusks are so gross.\n\nHe always has his Trident with him!",
|
||||||
"Goriya sure\nhas changed\nin this game.\nI hope he\ncomes back\naround!",
|
"Don't tell Stalfos I'm here.\n\nHe has a bone to pick with me!",
|
||||||
"Hinox actually\nwants to be a\nlawyer.\nToo bad he\nbombed the\nBar exam!",
|
"I got Wallmaster to help me move furniture.\n\nHe was really handy!",
|
||||||
"I'm surprised\nMoblin's tusks\nare so gross.\nHe always has\nhis Trident\nwith him!",
|
"Wizzrobe was just here.\n\nHe always vanishes right before we get the check!",
|
||||||
"Don't tell\nStalfos I'm\nhere.\nHe has a bone\nto pick with\nme!",
|
"I shouldn't have picked up Zora's tab.\n\nThat guy drinks like a fish!",
|
||||||
"I got\nWallmaster to\nhelp me move\nfurniture.\nHe was really\nhandy!",
|
"I was sharing a drink with Poe.\n\nFor no reason, he left in a heartbeat!",
|
||||||
"Wizzrobe was\njust here.\nHe always\nvanishes right\nbefore we get\nthe check!",
|
"Don't trust horsemen on Death Mountain.\n\nThey're Lynel the time!",
|
||||||
"I shouldn't\nhave picked up\nZora's tab.\nThat guy\ndrinks like\na fish!",
|
"Today's special is battered bat.\n\nGot slapped for offering a lady a Keese!",
|
||||||
"I was sharing\na drink with\nPoe.\nFor no reason,\nhe left in a\nheartbeat!",
|
"Don't walk under propellered pineapples.\n\nYou may end up wearing a pee hat!",
|
||||||
"Don't trust\nhorsemen on\nDeath Mountain.\nThey're Lynel\nthe time!",
|
"My girlfriend burrowed under the sand.\n\nSo I decided to Leever!",
|
||||||
"Today's\nspecial is\nbattered bat.\nGot slapped\nfor offering a\nlady a Keese!",
|
"Geldman wants to be a Broadway star.\n\nHe's always practicing Jazz Hands!",
|
||||||
"Don't walk\nunder\npropellered\npineapples.\nYou may end up\nwearing\na pee hat!",
|
"Octoballoon must be mad at me.\n\nHe blows up at the sight of me!",
|
||||||
"My girlfriend\nburrowed under\nthe sand.\nSo I decided\nto Leever!",
|
"Toppo is a total pothead.\n\nHe hates it when you take away his grass",
|
||||||
"Geldman wants\nto be a\nBroadway star.\nHe's always\npracticing\nJazz Hands!",
|
"I lost my shield by that house.\n\nWhy did they put up a Pikit fence?!",
|
||||||
"Octoballoon\nmust be mad\nat me.\nHe blows up\nat the sight\nof me!",
|
"Know that fox in Steve's Town?\n\nHe'll Pikku pockets if you aren't careful",
|
||||||
"Toppo is a\ntotal pothead.\n\nHe hates it\nwhen you take\naway his grass",
|
"Dash through Dark World bushes.\n\nYou'll see Ganon is tryin to Stal you!",
|
||||||
"I lost my\nshield by\nthat house.\nWhy did they\nput up a\nPikit fence?!",
|
"Eyegore!\n\nYou gore!\n\nWe all gore those jerks with arrows!",
|
||||||
"Know that fox\nin Steve's\nTown?\nHe'll Pikku\npockets if you\naren't careful",
|
"I like my whiskey neat.\n\nSome prefer it Octoroks!",
|
||||||
"Dash through\nDark World\nbushes.\nYou'll see\nGanon is tryin\nto Stal you!",
|
"I consoled Freezor over a cup of coffee.\n\nHis problems just seemed to melt away!",
|
||||||
"Eyegore!\n\nYou gore!\nWe all gore\nthose jerks\nwith arrows!",
|
"Magic droplets of water don't shut up.\n\nThey just Kyameron!",
|
||||||
"I like my\nwhiskey neat.\n\nSome prefer it\nOctoroks!",
|
"I bought hot wings for Sluggula.\n\nThey gave him explosive diarrhea!",
|
||||||
"I consoled\nFreezor over a\ncup of coffee.\nHis problems\njust seemed to\nmelt away!",
|
"Hardhat Beatle won't Let It Be?\n\nTell it to Get Back or give it a Ticket to Ride down a hole!",
|
||||||
"Magic droplets\nof water don't\nshut up.\nThey just\nKyameron!",
|
|
||||||
"I bought hot\nwings for\nSluggula.\nThey gave him\nexplosive\ndiarrhea!",
|
|
||||||
"Hardhat Beetle\nwon't\nLet It Be?\nTell it to Get\nBack or give\nit a Ticket to\nRide down\na hole!",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
junk_texts = [
|
junk_texts = [
|
||||||
@@ -349,16 +344,15 @@ junk_texts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
KingsReturn_texts = [
|
KingsReturn_texts = [
|
||||||
'Who is this even',
|
"Who is this even",
|
||||||
'When did he get here',
|
'When did he get here',
|
||||||
'The Harem'
|
|
||||||
] * 2 + [
|
] * 2 + [
|
||||||
"the return of the king",
|
"The Return of the King",
|
||||||
"fellowship of the ring",
|
"Fellowship of the Ring",
|
||||||
"the two towers",
|
"The Two Towers",
|
||||||
]
|
]
|
||||||
Sanctuary_texts = [
|
Sanctuary_texts = [
|
||||||
'A Priest\'s love'
|
"a priest's love"
|
||||||
] * 2 + [
|
] * 2 + [
|
||||||
"the loyal priest",
|
"the loyal priest",
|
||||||
"read a book",
|
"read a book",
|
||||||
@@ -488,7 +482,7 @@ class Credits(object):
|
|||||||
],
|
],
|
||||||
'pedestal': [
|
'pedestal': [
|
||||||
SceneSmallCreditLine(19, 'and the master sword'),
|
SceneSmallCreditLine(19, 'and the master sword'),
|
||||||
SceneSmallAltCreditLine(21, 'sleeps again···'),
|
SceneSmallAltCreditLine(21, 'sleeps again…'),
|
||||||
SceneLargeCreditLine(23, 'Forever!'),
|
SceneLargeCreditLine(23, 'Forever!'),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -832,6 +826,8 @@ class CharTextMapper(object):
|
|||||||
|
|
||||||
class RawMBTextMapper(CharTextMapper):
|
class RawMBTextMapper(CharTextMapper):
|
||||||
char_map = {' ': 0xFF,
|
char_map = {' ': 0xFF,
|
||||||
|
'/': 0x97,
|
||||||
|
'•': 0x98,
|
||||||
'≥': 0x99, # Cursor
|
'≥': 0x99, # Cursor
|
||||||
'『': 0xC4,
|
'『': 0xC4,
|
||||||
'』': 0xC5,
|
'』': 0xC5,
|
||||||
@@ -1315,7 +1311,8 @@ class GoldCreditMapper(CharTextMapper):
|
|||||||
|
|
||||||
class GreenCreditMapper(CharTextMapper):
|
class GreenCreditMapper(CharTextMapper):
|
||||||
char_map = {' ': 0x9F,
|
char_map = {' ': 0x9F,
|
||||||
'.': 0x52,
|
'…': 0xFD,
|
||||||
|
'.': 0xFE,
|
||||||
'·': 0x52}
|
'·': 0x52}
|
||||||
alpha_offset = -0x29
|
alpha_offset = -0x29
|
||||||
alpha_lower_offset = -0x29
|
alpha_lower_offset = -0x29
|
||||||
|
|||||||
Binary file not shown.
@@ -759,6 +759,10 @@
|
|||||||
"type": "str",
|
"type": "str",
|
||||||
"help": "suppress"
|
"help": "suppress"
|
||||||
},
|
},
|
||||||
|
"orange_potion": {
|
||||||
|
"action": "store_true",
|
||||||
|
"help": "suppress"
|
||||||
|
},
|
||||||
"settingsonload": {
|
"settingsonload": {
|
||||||
"choices": [
|
"choices": [
|
||||||
"default",
|
"default",
|
||||||
|
|||||||
Reference in New Issue
Block a user