Merge branch 'beta'
This commit is contained in:
@@ -85,6 +85,7 @@ class World(object):
|
||||
self.bosses_ganon = {}
|
||||
self.bosshunt_include_agas = {}
|
||||
self.ganon_item = {}
|
||||
self.require_ganon_item = {}
|
||||
self.ganon_item_orig = {}
|
||||
self.custom = custom
|
||||
self.customitemarray = customitemarray
|
||||
@@ -186,6 +187,7 @@ class World(object):
|
||||
set_player_attr('bosses_ganon', 8)
|
||||
set_player_attr('bosshunt_include_agas', False)
|
||||
set_player_attr('ganon_item', 'silver')
|
||||
set_player_attr('require_ganon_item', False)
|
||||
set_player_attr('crystals_ganon_orig', {})
|
||||
set_player_attr('crystals_gt_orig', {})
|
||||
set_player_attr('ganon_item_orig', 'silver')
|
||||
@@ -3154,6 +3156,7 @@ class Spoiler(object):
|
||||
'ganon_bosses': self.world.bosses_ganon,
|
||||
'bosshunt_include_agas': self.world.bosshunt_include_agas,
|
||||
'ganon_item': self.world.ganon_item,
|
||||
'require_ganon_item': self.world.require_ganon_item,
|
||||
'open_pyramid': self.world.open_pyramid,
|
||||
'accessibility': self.world.accessibility,
|
||||
'restricted_boss_items': self.world.restrict_boss_items,
|
||||
@@ -3391,7 +3394,8 @@ class Spoiler(object):
|
||||
if custom['murahgoal'] and 'requirements' in custom['murahgoal']:
|
||||
outfile.write('Murahdahla Requirement:'.ljust(line_width) + 'custom\n')
|
||||
outfile.write(' %s\n' % custom['murahgoal']['goaltext'])
|
||||
outfile.write('Item Required for Ganon:'.ljust(line_width) + '%s\n' % str(self.world.ganon_item_orig[player]))
|
||||
outfile.write('Item to Hurt Stunned Ganon:'.ljust(line_width) + '%s\n' % str(self.world.ganon_item_orig[player]))
|
||||
outfile.write('Item Required for Ganon:'.ljust(line_width) + '%s\n' % yn(self.world.require_ganon_item[player]))
|
||||
outfile.write('Swords:'.ljust(line_width) + '%s\n' % self.metadata['weapons'][player])
|
||||
outfile.write('\n')
|
||||
outfile.write('Accessibility:'.ljust(line_width) + '%s\n' % self.metadata['accessibility'][player])
|
||||
|
||||
4
CLI.py
4
CLI.py
@@ -159,7 +159,8 @@ def parse_cli(argv, no_defaults=False):
|
||||
'take_any', 'boots_hint', 'shuffle_followers',
|
||||
'shuffle', 'door_shuffle', 'intensity',
|
||||
'crystals_ganon', 'crystals_gt', 'bosses_ganon',
|
||||
'bosshunt_include_agas', 'ganon_item', 'openpyramid',
|
||||
'bosshunt_include_agas', 'ganon_item',
|
||||
'require_ganon_item', 'openpyramid',
|
||||
'mapshuffle', 'compassshuffle', 'keyshuffle',
|
||||
'bigkeyshuffle', 'prizeshuffle', 'showloot', 'loothud',
|
||||
'showmap', 'startinventory', 'usestartinventory',
|
||||
@@ -220,6 +221,7 @@ def parse_settings():
|
||||
"bosses_ganon": "8",
|
||||
"bosshunt_include_agas": False,
|
||||
"ganon_item": "silver",
|
||||
"require_ganon_item": False,
|
||||
"swords": "random",
|
||||
"flute_mode": "normal",
|
||||
"bow_mode": "progressive",
|
||||
|
||||
@@ -944,6 +944,7 @@ def customize_shops(world, player):
|
||||
rep_price = final_price(loc.name, item.price, world, player)
|
||||
shop.add_inventory(idx, upgrade.name, up_price, 6,
|
||||
item.name, rep_price, player=item.player)
|
||||
upgrade.world = loc.item.world
|
||||
loc.item = upgrade
|
||||
upgrade.location = loc
|
||||
if not found_arrow_upgrade and len(possible_replacements) > 0:
|
||||
@@ -959,6 +960,7 @@ def customize_shops(world, player):
|
||||
shop.add_inventory(idx, upgrade.name, up_price, 6,
|
||||
item.name, rep_price, player=item.player)
|
||||
loc.item = upgrade
|
||||
upgrade.world = loc.item.world
|
||||
upgrade.location = loc
|
||||
change_shop_items_to_rupees(world, player, shops_to_customize)
|
||||
balance_prices(world, player)
|
||||
@@ -995,9 +997,11 @@ def change_shop_items_to_rupees(world, player, shops):
|
||||
for location in locations:
|
||||
if location.item.name in shop_transfer.keys() and (location.parent_region.name not in shops or location.name == 'Potion Shop'):
|
||||
new_item = ItemFactory(shop_transfer[location.item.name], location.item.player)
|
||||
new_item.world = location.item.world
|
||||
location.item = new_item
|
||||
if location.parent_region.name == 'Capacity Upgrade' and location.item.name in cap_blacklist:
|
||||
new_item = ItemFactory('Rupees (300)', location.item.player)
|
||||
new_item.world = location.item.world
|
||||
location.item = new_item
|
||||
shop = world.get_region('Capacity Upgrade', player).shop
|
||||
slot = shop_to_location_table['Capacity Upgrade'].index(location.name)
|
||||
|
||||
1
Items.py
1
Items.py
@@ -172,6 +172,7 @@ 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'),
|
||||
'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'),
|
||||
'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'),
|
||||
'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 refill heart'),
|
||||
|
||||
24
Main.py
24
Main.py
@@ -336,10 +336,29 @@ def main(args, seed=None, fish=None):
|
||||
for player in range(1, world.players+1):
|
||||
if world.shopsanity[player]:
|
||||
customize_shops(world, player)
|
||||
|
||||
if not args.skip_money_balance and args.algorithm in ['balanced', 'equitable']:
|
||||
balance_money_progression(world)
|
||||
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:
|
||||
world.settings.record_info(world)
|
||||
world.settings.record_overworld(world)
|
||||
@@ -482,7 +501,7 @@ def export_yaml(args, fish):
|
||||
|
||||
for player in range(1, world.players + 1):
|
||||
world.difficulty_requirements[player] = difficulties[world.difficulty[player]]
|
||||
|
||||
|
||||
set_starting_inventory(world, args)
|
||||
|
||||
world.settings = CustomSettings()
|
||||
@@ -527,6 +546,7 @@ def init_world(args, fish):
|
||||
world.crystals_ganon_orig = args.crystals_ganon.copy()
|
||||
world.crystals_gt_orig = args.crystals_gt.copy()
|
||||
world.ganon_item_orig = args.ganon_item.copy()
|
||||
world.require_ganon_item = args.require_ganon_item.copy()
|
||||
world.bosses_ganon = {player: int(args.bosses_ganon[player]) for player in range(1, world.players + 1)}
|
||||
world.bosshunt_include_agas = args.bosshunt_include_agas.copy()
|
||||
world.owTerrain = args.ow_terrain.copy()
|
||||
@@ -852,6 +872,7 @@ def copy_world(world):
|
||||
ret.bosses_ganon = world.bosses_ganon.copy()
|
||||
ret.bosshunt_include_agas = world.bosshunt_include_agas.copy()
|
||||
ret.ganon_item = world.ganon_item.copy()
|
||||
ret.require_ganon_item = world.require_ganon_item.copy()
|
||||
ret.crystals_ganon_orig = world.crystals_ganon_orig.copy()
|
||||
ret.crystals_gt_orig = world.crystals_gt_orig.copy()
|
||||
ret.ganon_item_orig = world.ganon_item_orig.copy()
|
||||
@@ -1086,6 +1107,7 @@ def copy_world_premature(world, player, create_flute_exits=True):
|
||||
ret.bosses_ganon = world.bosses_ganon.copy()
|
||||
ret.bosshunt_include_agas = world.bosshunt_include_agas.copy()
|
||||
ret.ganon_item = world.ganon_item.copy()
|
||||
ret.require_ganon_item = world.require_ganon_item.copy()
|
||||
ret.crystals_ganon_orig = world.crystals_ganon_orig.copy()
|
||||
ret.crystals_gt_orig = world.crystals_gt_orig.copy()
|
||||
ret.ganon_item_orig = world.ganon_item_orig.copy()
|
||||
|
||||
33
Rom.py
33
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
|
||||
|
||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||
RANDOMIZERBASEHASH = '9c603108cc074d98c06d1e200e777e4a'
|
||||
RANDOMIZERBASEHASH = '589a044786a63d98aff0e44b51a6a339'
|
||||
|
||||
|
||||
class JsonRom(object):
|
||||
@@ -1450,9 +1450,14 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
||||
"bee": 0x10,
|
||||
"somaria": 0x11,
|
||||
"byrna": 0x12,
|
||||
"none": 0xFF,
|
||||
"none": 0x7F,
|
||||
}
|
||||
rom.write_byte(0x18002E, ganon_item_byte[world.ganon_item[player]])
|
||||
ganon_item_value = ganon_item_byte[world.ganon_item[player]]
|
||||
if world.require_ganon_item[player] and world.ganon_item[player] != "none":
|
||||
if world.swords[player] != "swordless" or world.ganon_item[player] not in ["bombos", "ether", "quake"]:
|
||||
ganon_item_value |= 0x80
|
||||
|
||||
rom.write_byte(0x18002E, ganon_item_value)
|
||||
|
||||
# block HC upstairs doors in rain state in standard mode
|
||||
prevent_rain = world.mode[player] == 'standard' and world.shuffle[player] != 'vanilla' and world.logic[player] != 'nologic'
|
||||
@@ -2021,7 +2026,15 @@ def write_custom_shops(rom, world, player):
|
||||
if world.shopsanity[player] or shop.type == ShopType.TakeAny:
|
||||
rom.write_byte(0x186E40 + shop.sram_address + index, 1)
|
||||
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:
|
||||
loc_item = world.get_location(retro_shops[shop.region.name][index], player).item
|
||||
else:
|
||||
@@ -2037,7 +2050,7 @@ def write_custom_shops(rom, world, player):
|
||||
replace_price = int16_as_bytes(item['replacement_price'])
|
||||
item_max = item['max']
|
||||
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)
|
||||
|
||||
rom.write_bytes(0x184800, shop_data)
|
||||
@@ -2912,7 +2925,7 @@ def write_strings(rom, world, player, team, is_mystery=False):
|
||||
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_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):
|
||||
goal_text = world.custom_goals[player][type]['goaltext']
|
||||
@@ -2931,7 +2944,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']:
|
||||
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
|
||||
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'
|
||||
|
||||
9
Rules.py
9
Rules.py
@@ -1026,10 +1026,11 @@ def global_rules(world, player):
|
||||
world.get_location('Ganon', player),
|
||||
lambda state: state.has_beam_sword(player)
|
||||
and state.has_fire_source(player)
|
||||
and (state.has('Tempered Sword', player) or state.has('Golden Sword', player)
|
||||
or state.can_hit_stunned_ganon(player)
|
||||
or state.has('Lamp', player)
|
||||
or state.can_extend_magic(player, 12))) # need to light torch a sufficient amount of times
|
||||
and (state.can_hit_stunned_ganon(player) or (
|
||||
not world.require_ganon_item[player] and (
|
||||
state.has('Tempered Sword', player) or state.has('Golden Sword', player)
|
||||
or state.has('Lamp', player)
|
||||
or state.can_extend_magic(player, 12))))) # need to light torch a sufficient amount of times
|
||||
|
||||
set_rule(world.get_entrance('Ganon Drop', player), lambda state: state.has_beam_sword(player)) # need to damage ganon to get tiles to drop
|
||||
|
||||
|
||||
186
Text.py
186
Text.py
@@ -50,18 +50,18 @@ Uncle_texts = [
|
||||
"Don't worry.\nI got this\ncovered.",
|
||||
"Race you to\nthe castle!",
|
||||
"\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!",
|
||||
"ARE YOU A BAD\nENOUGH DUDE TO\nRESCUE ZELDA?",
|
||||
"Are you a bad\nenough dude to\nrescue Zelda?",
|
||||
"\n\n I AM ERROR",
|
||||
"This seed is\nsub 2 hours,\nguaranteed.",
|
||||
"The chest is\na secret to\neverybody.",
|
||||
"I'm off to\nfind the\nwind fish.",
|
||||
"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.",
|
||||
"RED MAIL\nIS FOR\nCOWARDS.",
|
||||
"HEY!\n\nLISTEN!",
|
||||
"Red mail\nis for\ncowards.",
|
||||
"Hey!\n\nListen!",
|
||||
"Well\nexcuuuuuse me,\nprincess!",
|
||||
"5,000 Rupee\nreward for >\nYou're boned.",
|
||||
"Welcome to\nStoops Lonk's\nHoose",
|
||||
@@ -230,97 +230,92 @@ Ganon1_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.",
|
||||
"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\nIn dev null?",
|
||||
"I have sold\nthe arrows for\na green big 20",
|
||||
"Did you find\nthe arrows\nin /dev/null?",
|
||||
"I have sold\nthe arrows for\na green big 20.",
|
||||
"Did you find\nthe arrows in\nCount Dracula?",
|
||||
"Error 404\nSilver arrows\nnot found.",
|
||||
"No arrows for\nyou today.\nSorry.",
|
||||
" Error 404\nSilver Arrows\n Not Found",
|
||||
"No arrows\nfor you today.\nSorry.",
|
||||
"No arrows?\nCheck your\njunk mail."
|
||||
"Did you find\nthe arrows in\nJabu's belly?",
|
||||
"Silver is not\nan appropriate\narrow material",
|
||||
"Did you find\nthe arrows in\nNarnia?",
|
||||
"DID YOU FIND\nTHE ARROWS IN\nKEFKA'S TOWER",
|
||||
"Did you find\nthe arrows in\nyour Recycle Bin?",
|
||||
"Did you find\nthe arrows\nin Jabu's belly?",
|
||||
"Silver is not\nan appropriate\narrow material.",
|
||||
"Did you find\nthe arrows\nin nNarnia?",
|
||||
"Did you find\nthe arrows\nin nKefka's Tower.",
|
||||
"Did you find\nthe arrows\nin nyour Recycle Bin?",
|
||||
"Silver Arrows?\n\nLUL",
|
||||
"Imagine\nfinding the\narrows",
|
||||
"Did you find\nsilvers in\nscenic Ohio?",
|
||||
"Did you find\nthe arrows in\n*mumblemumble*",
|
||||
"Did you find\nthe arrows in\nthe hourglass?",
|
||||
"Silver Arrows\nare so v30",
|
||||
"OH, NO, THEY\nACTUALLY SAID\nSILVER MARROW",
|
||||
"SURELY THE\nLEFTMOST TILES\nWILL STAY UP",
|
||||
"Did you find\nthe arrows in\nWorld 4-2?",
|
||||
"SILLY HERO,\nSILVER IS FOR\nWEREWOLVES!",
|
||||
"Did you find\nthe silvers in\nGanti's ears",
|
||||
"\nImagine finding\nthe arrows.",
|
||||
"Did you find\nthe arrows\nin scenic Ohio?",
|
||||
"Did you find\nthe arrows\nin •mumblemumble•",
|
||||
"Did you find\nthe arrows\nin the hourglass?",
|
||||
"\nSilver Arrows\nare so main branch.",
|
||||
"Did you find\nthe arrows\nin World 4-2?",
|
||||
"Did you find\nthe arrows\nin Ghanti's ears?",
|
||||
]
|
||||
|
||||
Ganon_Phase_3_No_Weakness_texts = [
|
||||
"Error 404\nWeakness\nnot found.",
|
||||
"No weakness\nfor you today.\nSorry",
|
||||
"Careful, all\nthat spinning\nmakes me dizzy",
|
||||
"Are you ready\nTo spin\nTo win?",
|
||||
"\nSpin To Win!\n",
|
||||
"SURELY THE\nLEFTMOST TILES\nWILL STAY UP",
|
||||
"You Spin Me\nRight Round\nLike A Record",
|
||||
"SILLY HERO,\nSILVER IS FOR\nWEREWOLVES!",
|
||||
"\n Error 404\nWeakness Not Found",
|
||||
"No weakness\nfor you today.\nSorry.",
|
||||
"Careful, all\nthat spinning\nmakes me dizzy.",
|
||||
"Are you ready\nto spin\nto win?",
|
||||
"\n Spin To Win!\n",
|
||||
"Surely the\nleftmost tiles\nwill stay up!",
|
||||
"You spin me\nright round\nlike a record.",
|
||||
"Oh, no, they\nactually said\nsilver •marrow•.",
|
||||
"Silly hero,\nsilver is for\nwerewolves!",
|
||||
]
|
||||
|
||||
TavernMan_texts = [
|
||||
"What do you\ncall a blind\ndinosaur?\na doyouthink-\nhesaurus.",
|
||||
"A blind man\nwalks into\na bar.\nAnd a table.\nAnd a chair.",
|
||||
"What do ducks\nlike to eat?\n\nQuackers!",
|
||||
"How do you\nset up a party\nin space?\n\nYou planet!",
|
||||
"I'm glad I\nknow sign\nlanguage.\nIt's pretty\nhandy.",
|
||||
"What did Zelda\nsay to Link at\na secure door?\n\nTRIFORCE!",
|
||||
"I am on a\nseafood diet.\n\nEvery time\nI see food,\nI eat it.",
|
||||
"I've decided\nto sell my\nvacuum.\nIt was just\ngathering\ndust.",
|
||||
"What's the best\ntime to go to\nthe dentist?\n\nTooth-hurtie!",
|
||||
"Why can't a\nbike stand on\nits own?\n\nIt's two-tired!",
|
||||
"If you haven't\nfound Quake\nyet…\nit's not your\nfault.",
|
||||
"Why is Peter\nPan always\nflying?\nBecause he\nNeverlands!",
|
||||
"I once told a\njoke to Armos.\n\nBut he\nremained\nstone-faced!",
|
||||
"Lanmola was\nlate to our\ndinner party.\nHe just came\nfor the desert",
|
||||
"Moldorm is\nsuch a\nprankster.\nAnd I fall for\nit every time!",
|
||||
"Helmasaur is\nthrowing a\nparty.\nI hope it's\na masquerade!",
|
||||
"I'd like to\nknow Arrghus\nbetter.\nBut he won't\ncome out of\nhis shell!",
|
||||
"Mothula didn't\nhave much fun\nat the party.\nHe's immune to\nspiked punch!",
|
||||
"Don't set me\nup with that\nchick from\nSteve's Town.\n\n\nI'm not\ninterested in\na Blind date!",
|
||||
"Kholdstare is\nafraid to go\nto the circus.\nHungry kids\nthought he was\ncotton candy!",
|
||||
"I asked who\nVitreous' best\nfriends are.\nHe said,\n'Me, Myself,\nand Eye!'",
|
||||
"Trinexx can be\na hothead or\nhe can be an\nice guy. In\nthe end, he's\na solid\nindividual!",
|
||||
"Bari thought I\nhad moved out\nof town.\nHe was shocked\nto see me!",
|
||||
"I can only get\nWeetabix\naround here.\nI have to go\nto Steve's\nTown for Count\nChocula!",
|
||||
"Don't argue\nwith a frozen\nDeadrock.\nHe'll never\nchange his\nposition!",
|
||||
"I offered a\ndrink to a\nself-loathing\nGhini.\nHe said he\ndidn't like\nspirits!",
|
||||
"I was supposed\nto meet Gibdo\nfor lunch.\nBut he got\nwrapped up in\nsomething!",
|
||||
"Goriya sure\nhas changed\nin this game.\nI hope he\ncomes back\naround!",
|
||||
"Hinox actually\nwants to be a\nlawyer.\nToo bad he\nbombed the\nBar exam!",
|
||||
"I'm surprised\nMoblin's tusks\nare so gross.\nHe always has\nhis Trident\nwith him!",
|
||||
"Don't tell\nStalfos I'm\nhere.\nHe has a bone\nto pick with\nme!",
|
||||
"I got\nWallmaster to\nhelp me move\nfurniture.\nHe was really\nhandy!",
|
||||
"Wizzrobe was\njust here.\nHe always\nvanishes right\nbefore we get\nthe check!",
|
||||
"I shouldn't\nhave picked up\nZora's tab.\nThat guy\ndrinks like\na fish!",
|
||||
"I was sharing\na drink with\nPoe.\nFor no reason,\nhe left in a\nheartbeat!",
|
||||
"Don't trust\nhorsemen on\nDeath Mountain.\nThey're Lynel\nthe time!",
|
||||
"Today's\nspecial is\nbattered bat.\nGot slapped\nfor offering a\nlady a Keese!",
|
||||
"Don't walk\nunder\npropellered\npineapples.\nYou may end up\nwearing\na pee hat!",
|
||||
"My girlfriend\nburrowed under\nthe sand.\nSo I decided\nto Leever!",
|
||||
"Geldman wants\nto be a\nBroadway star.\nHe's always\npracticing\nJazz Hands!",
|
||||
"Octoballoon\nmust be mad\nat me.\nHe blows up\nat the sight\nof me!",
|
||||
"Toppo is a\ntotal pothead.\n\nHe hates it\nwhen you take\naway his grass",
|
||||
"I lost my\nshield by\nthat house.\nWhy did they\nput up a\nPikit fence?!",
|
||||
"Know that fox\nin Steve's\nTown?\nHe'll Pikku\npockets if you\naren't careful",
|
||||
"Dash through\nDark World\nbushes.\nYou'll see\nGanon is tryin\nto Stal you!",
|
||||
"Eyegore!\n\nYou gore!\nWe all gore\nthose jerks\nwith arrows!",
|
||||
"I like my\nwhiskey neat.\n\nSome prefer it\nOctoroks!",
|
||||
"I consoled\nFreezor over a\ncup of coffee.\nHis problems\njust seemed to\nmelt away!",
|
||||
"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!",
|
||||
"What do you call a blind dinosaur?\n\nA doyouthink-\nhesaurus.",
|
||||
"What do ducks like to eat?\n\nQuackers!",
|
||||
"How do you set up a party in space?\n\nYou planet!",
|
||||
"I'm glad I know sign language.\nIt's pretty handy.",
|
||||
"What did Zelda say to Link at a secure door?\n\nTriforce!",
|
||||
"I am on a seafood diet.\n\nEvery time I see food, I eat it.",
|
||||
"I've decided to sell my vacuum.\n\nIt was just gathering dust.",
|
||||
"What's the best time to go to the dentist?\n\nTooth-hurtie!",
|
||||
"Why can't a bike stand on its own?\n\nIt's two-tired!",
|
||||
"If you haven't found Quake yet…\n\nit's not your fault.",
|
||||
"Why is Peter Pan always flying?\n\nBecause he Neverlands!",
|
||||
"I once told a joke to Armos.\n\nBut he remained stone-faced!",
|
||||
"Lanmola was late to our dinner party.\n\nHe just came for the desert",
|
||||
"Moldorm is such a prankster.\n\nAnd I fall for it every time!",
|
||||
"Helmasaur is throwing a party.\n\nI hope it's a masquerade!",
|
||||
"I'd like to know Arrghus better.\n\nBut he won't come out of his shell!",
|
||||
"Mothula didn't have much fun at the party.\n\nHe's immune to spiked punch!",
|
||||
"Kholdstare is afraid to go to the circus.\n\nHungry kids thought he was cotton candy!",
|
||||
"I asked who Vitreous' best friends are.\n\nHe said, \"Me, Myself, and Eye!\"",
|
||||
"Trinexx can be a hothead or he can be an ice guy. In the end, he's a solid individual!",
|
||||
"Bari thought I had moved out of town.\n\nHe was shocked to see me!",
|
||||
"Don't argue with a frozen Deadrock.\n\nHe'll never change his position!",
|
||||
"I offered a drink to a self-loathing Ghini.\n\nHe said he didn't like spirits!",
|
||||
"I was supposed to meet Gibdo for lunch.\n\nBut he got wrapped up in something!",
|
||||
"Goriya sure has changed in this game.\n\nI hope he comes back around!",
|
||||
"Hinox actually wants to be a lawyer.\n\nToo bad he bombed the bar exam!",
|
||||
"I'm surprised Moblin's tusks are so gross.\n\nHe always has his Trident with him!",
|
||||
"Don't tell Stalfos I'm here.\n\nHe has a bone to pick with me!",
|
||||
"I got Wallmaster to help me move furniture.\n\nHe was really handy!",
|
||||
"Wizzrobe was just here.\n\nHe always vanishes right before we get the check!",
|
||||
"I shouldn't have picked up Zora's tab.\n\nThat guy drinks like a fish!",
|
||||
"I was sharing a drink with Poe.\n\nFor no reason, he left in a heartbeat!",
|
||||
"Don't trust horsemen on Death Mountain.\n\nThey're Lynel the time!",
|
||||
"Today's special is battered bat.\n\nGot slapped for offering a lady a Keese!",
|
||||
"Don't walk under propellered pineapples.\n\nYou may end up wearing a pee hat!",
|
||||
"My girlfriend burrowed under the sand.\n\nSo I decided to Leever!",
|
||||
"Geldman wants to be a Broadway star.\n\nHe's always practicing Jazz Hands!",
|
||||
"Octoballoon must be mad at me.\n\nHe blows up at the sight of me!",
|
||||
"Toppo is a total pothead.\n\nHe hates it when you take away his grass",
|
||||
"I lost my shield by that house.\n\nWhy did they put up a Pikit fence?!",
|
||||
"Know that fox in Steve's Town?\n\nHe'll Pikku pockets if you aren't careful",
|
||||
"Dash through Dark World bushes.\n\nYou'll see Ganon is tryin to Stal you!",
|
||||
"Eyegore!\n\nYou gore!\n\nWe all gore those jerks with arrows!",
|
||||
"I like my whiskey neat.\n\nSome prefer it Octoroks!",
|
||||
"I consoled Freezor over a cup of coffee.\n\nHis problems just seemed to melt away!",
|
||||
"Magic droplets of water don't shut up.\n\nThey just Kyameron!",
|
||||
"I bought hot wings for Sluggula.\n\nThey gave him explosive diarrhea!",
|
||||
"Hardhat Beatle won't Let It Be?\n\nTell it to Get Back or give it a Ticket to Ride down a hole!",
|
||||
]
|
||||
|
||||
junk_texts = [
|
||||
@@ -349,16 +344,15 @@ junk_texts = [
|
||||
]
|
||||
|
||||
KingsReturn_texts = [
|
||||
'Who is this even',
|
||||
"Who is this even",
|
||||
'When did he get here',
|
||||
'The Harem'
|
||||
] * 2 + [
|
||||
"the return of the king",
|
||||
"fellowship of the ring",
|
||||
"the two towers",
|
||||
"The Return of the King",
|
||||
"Fellowship of the Ring",
|
||||
"The Two Towers",
|
||||
]
|
||||
Sanctuary_texts = [
|
||||
'A Priest\'s love'
|
||||
"a priest's love"
|
||||
] * 2 + [
|
||||
"the loyal priest",
|
||||
"read a book",
|
||||
@@ -488,7 +482,7 @@ class Credits(object):
|
||||
],
|
||||
'pedestal': [
|
||||
SceneSmallCreditLine(19, 'and the master sword'),
|
||||
SceneSmallAltCreditLine(21, 'sleeps again···'),
|
||||
SceneSmallAltCreditLine(21, 'sleeps again…'),
|
||||
SceneLargeCreditLine(23, 'Forever!'),
|
||||
],
|
||||
}
|
||||
@@ -832,6 +826,8 @@ class CharTextMapper(object):
|
||||
|
||||
class RawMBTextMapper(CharTextMapper):
|
||||
char_map = {' ': 0xFF,
|
||||
'/': 0x97,
|
||||
'•': 0x98,
|
||||
'≥': 0x99, # Cursor
|
||||
'『': 0xC4,
|
||||
'』': 0xC5,
|
||||
@@ -1315,7 +1311,8 @@ class GoldCreditMapper(CharTextMapper):
|
||||
|
||||
class GreenCreditMapper(CharTextMapper):
|
||||
char_map = {' ': 0x9F,
|
||||
'.': 0x52,
|
||||
'…': 0xFD,
|
||||
'.': 0xFE,
|
||||
'·': 0x52}
|
||||
alpha_offset = -0x29
|
||||
alpha_lower_offset = -0x29
|
||||
@@ -2057,5 +2054,6 @@ class TextTable(object):
|
||||
text['ganon_phase_3_silvers'] = CompressedTextMapper.convert("Oh no! Silver! My one true weakness!")
|
||||
text['murahdahla'] = CompressedTextMapper.convert("Hello @. I\nam Murahdahla, brother of\nSahasrahla and Aginah. Behold the power of\ninvisibility.\n{PAUSE3}\n… … …\nWait! You can see me? I knew I should have\nhidden in a hollow tree.")
|
||||
text['mastersword_pedestal_goal'] = CompressedTextMapper.convert("To claim thy reward, you must present all 3 Pendants of Virtue.")
|
||||
text['end_pad_data'] = bytearray([0xfb])
|
||||
text['orange_potion_refill'] = CompressedTextMapper.convert("This rare orange potion will give you infinite magic, but only until you die or quit the game.")
|
||||
text['end_pad_data'] = bytearray([0xFB])
|
||||
text['terminator'] = bytearray([0xFF, 0xFF])
|
||||
|
||||
Binary file not shown.
@@ -378,6 +378,10 @@
|
||||
"none"
|
||||
]
|
||||
},
|
||||
"require_ganon_item": {
|
||||
"action": "store_true",
|
||||
"type": "bool"
|
||||
},
|
||||
"beemizer": {
|
||||
"choices": [
|
||||
"4", "3", "2", "1", "0"
|
||||
@@ -759,6 +763,10 @@
|
||||
"type": "str",
|
||||
"help": "suppress"
|
||||
},
|
||||
"orange_potion": {
|
||||
"action": "store_true",
|
||||
"help": "suppress"
|
||||
},
|
||||
"settingsonload": {
|
||||
"choices": [
|
||||
"default",
|
||||
|
||||
Reference in New Issue
Block a user