Compare commits
17 Commits
d62d02a04a
...
pikit
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d4a77b8e7 | |||
| 1e10673e31 | |||
| f1374daf96 | |||
| bcdc8ce726 | |||
| 4415ef5cfb | |||
| db87f57c4f | |||
| 626a37ea4b | |||
| be35ed4451 | |||
| 0a18bda341 | |||
| 1e2097c3dc | |||
| f4e6308a5d | |||
| 2738f61c0d | |||
| b189de00c6 | |||
| f3dd0319ed | |||
| 077ba85e9d | |||
| 3c6239fe95 | |||
| 3bb0d82cab |
@@ -65,6 +65,7 @@ class InitialSram:
|
|||||||
equip[0x36C] = 0x18
|
equip[0x36C] = 0x18
|
||||||
equip[0x36D] = 0x18
|
equip[0x36D] = 0x18
|
||||||
equip[0x379] = 0x68
|
equip[0x379] = 0x68
|
||||||
|
self._initial_sram_bytes[0x3C0] = 0x04 # PikitItem starts as shield
|
||||||
starting_bomb_cap_upgrades = 10 if not world.bombbag[player] else 0
|
starting_bomb_cap_upgrades = 10 if not world.bombbag[player] else 0
|
||||||
starting_arrow_cap_upgrades = 30
|
starting_arrow_cap_upgrades = 30
|
||||||
starting_bombs = 0
|
starting_bombs = 0
|
||||||
|
|||||||
10
ItemList.py
10
ItemList.py
@@ -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.name != "Red Shield Shop" 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.player == player], 5):
|
||||||
shop.custom = True
|
shop.custom = True
|
||||||
shop.locked = True
|
shop.locked = True
|
||||||
if retro_bow:
|
if retro_bow:
|
||||||
@@ -1191,10 +1191,10 @@ def get_pool_core(world, player, progressive, shuffle, difficulty, treasure_hunt
|
|||||||
thisbottle = random.choice(diff.bottles)
|
thisbottle = random.choice(diff.bottles)
|
||||||
pool.append(thisbottle)
|
pool.append(thisbottle)
|
||||||
|
|
||||||
if want_progressives():
|
# if want_progressives():
|
||||||
pool.extend(diff.progressiveshield)
|
# pool.extend(diff.progressiveshield)
|
||||||
else:
|
# else:
|
||||||
pool.extend(diff.basicshield)
|
# pool.extend(diff.basicshield)
|
||||||
|
|
||||||
if want_progressives():
|
if want_progressives():
|
||||||
pool.extend(diff.progressivearmor)
|
pool.extend(diff.progressivearmor)
|
||||||
|
|||||||
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 container'),
|
'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'),
|
||||||
'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'),
|
'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'),
|
||||||
'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,10 +172,9 @@ 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 refill 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 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),
|
||||||
|
|||||||
21
Main.py
21
Main.py
@@ -336,29 +336,10 @@ 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)
|
||||||
@@ -501,7 +482,7 @@ def export_yaml(args, fish):
|
|||||||
|
|
||||||
for player in range(1, world.players + 1):
|
for player in range(1, world.players + 1):
|
||||||
world.difficulty_requirements[player] = difficulties[world.difficulty[player]]
|
world.difficulty_requirements[player] = difficulties[world.difficulty[player]]
|
||||||
|
|
||||||
set_starting_inventory(world, args)
|
set_starting_inventory(world, args)
|
||||||
|
|
||||||
world.settings = CustomSettings()
|
world.settings = CustomSettings()
|
||||||
|
|||||||
@@ -1178,7 +1178,7 @@ def create_shops(world, player):
|
|||||||
if (world.is_tile_swapped(0x35, player) and region_name == 'Dark Lake Hylia Shop') \
|
if (world.is_tile_swapped(0x35, player) and region_name == 'Dark Lake Hylia Shop') \
|
||||||
or (not world.is_tile_swapped(0x35, player) and region_name == 'Lake Hylia Shop'):
|
or (not world.is_tile_swapped(0x35, player) and region_name == 'Lake Hylia Shop'):
|
||||||
locked = True
|
locked = True
|
||||||
inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)]
|
inventory = [('Blue Potion', 160), ('Small Heart', 10), ('Bombs (10)', 50)]
|
||||||
custom = True
|
custom = True
|
||||||
region = world.get_region(region_name, player)
|
region = world.get_region(region_name, player)
|
||||||
shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram)
|
shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram)
|
||||||
@@ -1366,11 +1366,11 @@ bonk_table_by_location = {y: x for x, y in bonk_table_by_location_id.items()}
|
|||||||
# (room_id, type, shopkeeper, custom, locked, [items])
|
# (room_id, type, shopkeeper, custom, locked, [items])
|
||||||
# item = (item, price, max=0, replacement=None, replacement_price=0)
|
# item = (item, price, max=0, replacement=None, replacement_price=0)
|
||||||
_basic_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)]
|
_basic_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)]
|
||||||
_dark_world_shop_defaults = [('Red Potion', 150), ('Blue Shield', 50), ('Bombs (10)', 50)]
|
_dark_world_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)]
|
||||||
shop_table = {
|
shop_table = {
|
||||||
'Dark Death Mountain Shop': (0x0112, ShopType.Shop, 0xC1, False, False, _basic_shop_defaults, 0),
|
'Dark Death Mountain Shop': (0x0112, ShopType.Shop, 0xC1, False, False, _basic_shop_defaults, 0),
|
||||||
'Red Shield Shop': (0x0110, ShopType.Shop, 0xC1, False, False,
|
'Red Shield Shop': (0x0110, ShopType.Shop, 0xC1, False, False,
|
||||||
[('Red Shield', 500), ('Bee', 10), ('Arrows (10)', 30)], 3),
|
[('Bombs (10)', 50), ('Bee', 10), ('Arrows (10)', 30)], 3),
|
||||||
'Dark Lake Hylia Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 6),
|
'Dark Lake Hylia Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 6),
|
||||||
'Dark Lumberjack Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 9),
|
'Dark Lumberjack Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 9),
|
||||||
'Village of Outcasts Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 12),
|
'Village of Outcasts Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 12),
|
||||||
|
|||||||
38
Rom.py
38
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 = '94ff6d50db131aabe6b086e783709004'
|
RANDOMIZERBASEHASH = '13a0b87bf037dbc378073f6b5b97d297'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -737,8 +737,8 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
|||||||
dr_flags = DROptions.NoOptions
|
dr_flags = DROptions.NoOptions
|
||||||
if world.mirrorscroll[player] or world.doorShuffle[player] != 'vanilla':
|
if world.mirrorscroll[player] or world.doorShuffle[player] != 'vanilla':
|
||||||
dr_flags |= DROptions.Town_Portal
|
dr_flags |= DROptions.Town_Portal
|
||||||
if world.doorShuffle[player] == 'vanilla':
|
# if world.doorShuffle[player] == 'vanilla':
|
||||||
dr_flags |= DROptions.Eternal_Mini_Bosses
|
# dr_flags |= DROptions.Eternal_Mini_Bosses
|
||||||
if world.doorShuffle[player] not in ['vanilla', 'basic']:
|
if world.doorShuffle[player] not in ['vanilla', 'basic']:
|
||||||
dr_flags |= DROptions.Map_Info
|
dr_flags |= DROptions.Map_Info
|
||||||
if ((world.collection_rate[player] or world.goal[player] == 'completionist')
|
if ((world.collection_rate[player] or world.goal[player] == 'completionist')
|
||||||
@@ -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 = 0xA39895
|
stat_address = 0x2398B0
|
||||||
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": 0x7F,
|
"none": 0xFF,
|
||||||
}
|
}
|
||||||
rom.write_byte(0x18002E, ganon_item_byte[world.ganon_item[player]])
|
rom.write_byte(0x18002E, ganon_item_byte[world.ganon_item[player]])
|
||||||
|
|
||||||
@@ -2021,15 +2021,7 @@ 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:
|
||||||
if shop.region.name == "Capacity Upgrade" and shop.item_count == 3:
|
loc_item = world.get_location(shop_to_location_table[shop.region.name][index], player).item
|
||||||
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:
|
||||||
@@ -2045,7 +2037,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)
|
||||||
@@ -2920,7 +2912,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 cannot die!'
|
tt['ganon_phase_3_alt'] = 'Got wax in\nyour ears?\nI can not 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']
|
||||||
@@ -2939,13 +2931,7 @@ 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')
|
||||||
|
|
||||||
tavern_texts = random.sample(TavernMan_texts, 5)
|
tt['kakariko_tavern_fisherman'] = TavernMan_texts[random.randint(0, len(TavernMan_texts) - 1)]
|
||||||
|
|
||||||
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'
|
||||||
@@ -3067,9 +3053,9 @@ def text_for_item(item, world, player, team):
|
|||||||
|
|
||||||
def init_open_mode_sram(rom):
|
def init_open_mode_sram(rom):
|
||||||
rom.initial_sram.pre_open_castle_gate()
|
rom.initial_sram.pre_open_castle_gate()
|
||||||
rom.initial_sram.set_progress_indicator(0x02)
|
rom.initial_sram.set_progress_indicator(0x00)
|
||||||
rom.initial_sram.set_progress_flags(0x14)
|
rom.initial_sram.set_progress_flags(0x04)
|
||||||
rom.initial_sram.set_starting_entrance(0x01)
|
rom.initial_sram.set_starting_entrance(0x00)
|
||||||
|
|
||||||
def init_standard_mode_sram(rom):
|
def init_standard_mode_sram(rom):
|
||||||
rom.initial_sram.set_progress_indicator(0x00)
|
rom.initial_sram.set_progress_indicator(0x00)
|
||||||
|
|||||||
201
Text.py
201
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,92 +230,97 @@ Ganon1_texts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
Ganon_Phase_3_No_Silvers_texts = [
|
Ganon_Phase_3_No_Silvers_texts = [
|
||||||
"Did you find\nthe arrows\non Planet Zebes?",
|
"Did you find\nthe arrows on\nPlanet 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\n Not Found",
|
"Error 404\nSilver arrows\nnot found.",
|
||||||
"No arrows\nfor you today.\nSorry.",
|
"No arrows for\nyou today.\nSorry.",
|
||||||
"No arrows?\nCheck your\njunk mail."
|
"No arrows?\nCheck your\njunk mail."
|
||||||
"Did you find\nthe arrows\nin Jabu's belly?",
|
"Did you find\nthe arrows in\nJabu's belly?",
|
||||||
"Silver is not\nan appropriate\narrow material.",
|
"Silver is not\nan appropriate\narrow material",
|
||||||
"Did you find\nthe arrows\nin nNarnia?",
|
"Did you find\nthe arrows in\nNarnia?",
|
||||||
"Did you find\nthe arrows\nin nKefka's Tower.",
|
"DID YOU FIND\nTHE ARROWS IN\nKEFKA'S TOWER",
|
||||||
"Did you find\nthe arrows\nin nyour Recycle Bin?",
|
"Did you find\nthe arrows in\nyour Recycle Bin?",
|
||||||
"Silver Arrows?\n\nLUL",
|
"Silver Arrows?\n\nLUL",
|
||||||
"\nImagine finding\nthe arrows.",
|
"Imagine\nfinding the\narrows",
|
||||||
"Did you find\nthe arrows\nin scenic Ohio?",
|
"Did you find\nsilvers in\nscenic Ohio?",
|
||||||
"Did you find\nthe arrows\nin •mumblemumble•",
|
"Did you find\nthe arrows in\n*mumblemumble*",
|
||||||
"Did you find\nthe arrows\nin the hourglass?",
|
"Did you find\nthe arrows in\nthe hourglass?",
|
||||||
"\nSilver Arrows\nare so main branch.",
|
"Silver Arrows\nare so v30",
|
||||||
"Did you find\nthe arrows\nin World 4-2?",
|
"OH, NO, THEY\nACTUALLY SAID\nSILVER MARROW",
|
||||||
"Did you find\nthe arrows\nin Ghanti's ears?",
|
"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",
|
||||||
]
|
]
|
||||||
|
|
||||||
Ganon_Phase_3_No_Weakness_texts = [
|
Ganon_Phase_3_No_Weakness_texts = [
|
||||||
"\n Error 404\nWeakness Not Found",
|
"Error 404\nWeakness\nnot 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?",
|
||||||
"\n Spin To Win!\n",
|
"\nSpin 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",
|
||||||
"Oh, no, they\nactually said\nsilver •marrow•.",
|
"SILLY HERO,\nSILVER IS FOR\nWEREWOLVES!",
|
||||||
"Silly hero,\nsilver is for\nwerewolves!",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
TavernMan_texts = [
|
TavernMan_texts = [
|
||||||
"What do you call a blind dinosaur?\n\nA doyouthink-\nhesaurus.",
|
"What do you\ncall a blind\ndinosaur?\na doyouthink-\nhesaurus.",
|
||||||
"What do ducks like to eat?\n\nQuackers!",
|
"A blind man\nwalks into\na bar.\nAnd a table.\nAnd a chair.",
|
||||||
"How do you set up a party in space?\n\nYou planet!",
|
"What do ducks\nlike to eat?\n\nQuackers!",
|
||||||
"I'm glad I know sign language.\nIt's pretty handy.",
|
"How do you\nset up a party\nin space?\n\nYou planet!",
|
||||||
"What did Zelda say to Link at a secure door?\n\nTriforce!",
|
"I'm glad I\nknow sign\nlanguage.\nIt's pretty\nhandy.",
|
||||||
"I am on a seafood diet.\n\nEvery time I see food, I eat it.",
|
"What did Zelda\nsay to Link at\na secure door?\n\nTRIFORCE!",
|
||||||
"I've decided to sell my vacuum.\n\nIt was just gathering dust.",
|
"I am on a\nseafood diet.\n\nEvery time\nI see food,\nI eat it.",
|
||||||
"What's the best time to go to the dentist?\n\nTooth-hurtie!",
|
"I've decided\nto sell my\nvacuum.\nIt was just\ngathering\ndust.",
|
||||||
"Why can't a bike stand on its own?\n\nIt's two-tired!",
|
"What's the best\ntime to go to\nthe dentist?\n\nTooth-hurtie!",
|
||||||
"If you haven't found Quake yet…\n\nit's not your fault.",
|
"Why can't a\nbike stand on\nits own?\n\nIt's two-tired!",
|
||||||
"Why is Peter Pan always flying?\n\nBecause he Neverlands!",
|
"If you haven't\nfound Quake\nyet…\nit's not your\nfault.",
|
||||||
"I once told a joke to Armos.\n\nBut he remained stone-faced!",
|
"Why is Peter\nPan always\nflying?\nBecause he\nNeverlands!",
|
||||||
"Lanmola was late to our dinner party.\n\nHe just came for the desert",
|
"I once told a\njoke to Armos.\n\nBut he\nremained\nstone-faced!",
|
||||||
"Moldorm is such a prankster.\n\nAnd I fall for it every time!",
|
"Lanmola was\nlate to our\ndinner party.\nHe just came\nfor the desert",
|
||||||
"Helmasaur is throwing a party.\n\nI hope it's a masquerade!",
|
"Moldorm is\nsuch a\nprankster.\nAnd I fall for\nit every time!",
|
||||||
"I'd like to know Arrghus better.\n\nBut he won't come out of his shell!",
|
"Helmasaur is\nthrowing a\nparty.\nI hope it's\na masquerade!",
|
||||||
"Mothula didn't have much fun at the party.\n\nHe's immune to spiked punch!",
|
"I'd like to\nknow Arrghus\nbetter.\nBut he won't\ncome out of\nhis shell!",
|
||||||
"Kholdstare is afraid to go to the circus.\n\nHungry kids thought he was cotton candy!",
|
"Mothula didn't\nhave much fun\nat the party.\nHe's immune to\nspiked punch!",
|
||||||
"I asked who Vitreous' best friends are.\n\nHe said, \"Me, Myself, and Eye!\"",
|
"Don't set me\nup with that\nchick from\nSteve's Town.\n\n\nI'm not\ninterested in\na Blind date!",
|
||||||
"Trinexx can be a hothead or he can be an ice guy. In the end, he's a solid individual!",
|
"Kholdstare is\nafraid to go\nto the circus.\nHungry kids\nthought he was\ncotton candy!",
|
||||||
"Bari thought I had moved out of town.\n\nHe was shocked to see me!",
|
"I asked who\nVitreous' best\nfriends are.\nHe said,\n'Me, Myself,\nand Eye!'",
|
||||||
"Don't argue with a frozen Deadrock.\n\nHe'll never change his position!",
|
"Trinexx can be\na hothead or\nhe can be an\nice guy. In\nthe end, he's\na solid\nindividual!",
|
||||||
"I offered a drink to a self-loathing Ghini.\n\nHe said he didn't like spirits!",
|
"Bari thought I\nhad moved out\nof town.\nHe was shocked\nto see me!",
|
||||||
"I was supposed to meet Gibdo for lunch.\n\nBut he got wrapped up in something!",
|
"I can only get\nWeetabix\naround here.\nI have to go\nto Steve's\nTown for Count\nChocula!",
|
||||||
"Goriya sure has changed in this game.\n\nI hope he comes back around!",
|
"Don't argue\nwith a frozen\nDeadrock.\nHe'll never\nchange his\nposition!",
|
||||||
"Hinox actually wants to be a lawyer.\n\nToo bad he bombed the bar exam!",
|
"I offered a\ndrink to a\nself-loathing\nGhini.\nHe said he\ndidn't like\nspirits!",
|
||||||
"I'm surprised Moblin's tusks are so gross.\n\nHe always has his Trident with him!",
|
"I was supposed\nto meet Gibdo\nfor lunch.\nBut he got\nwrapped up in\nsomething!",
|
||||||
"Don't tell Stalfos I'm here.\n\nHe has a bone to pick with me!",
|
"Goriya sure\nhas changed\nin this game.\nI hope he\ncomes back\naround!",
|
||||||
"I got Wallmaster to help me move furniture.\n\nHe was really handy!",
|
"Hinox actually\nwants to be a\nlawyer.\nToo bad he\nbombed the\nBar exam!",
|
||||||
"Wizzrobe was just here.\n\nHe always vanishes right before we get the check!",
|
"I'm surprised\nMoblin's tusks\nare so gross.\nHe always has\nhis Trident\nwith him!",
|
||||||
"I shouldn't have picked up Zora's tab.\n\nThat guy drinks like a fish!",
|
"Don't tell\nStalfos I'm\nhere.\nHe has a bone\nto pick with\nme!",
|
||||||
"I was sharing a drink with Poe.\n\nFor no reason, he left in a heartbeat!",
|
"I got\nWallmaster to\nhelp me move\nfurniture.\nHe was really\nhandy!",
|
||||||
"Don't trust horsemen on Death Mountain.\n\nThey're Lynel the time!",
|
"Wizzrobe was\njust here.\nHe always\nvanishes right\nbefore we get\nthe check!",
|
||||||
"Today's special is battered bat.\n\nGot slapped for offering a lady a Keese!",
|
"I shouldn't\nhave picked up\nZora's tab.\nThat guy\ndrinks like\na fish!",
|
||||||
"Don't walk under propellered pineapples.\n\nYou may end up wearing a pee hat!",
|
"I was sharing\na drink with\nPoe.\nFor no reason,\nhe left in a\nheartbeat!",
|
||||||
"My girlfriend burrowed under the sand.\n\nSo I decided to Leever!",
|
"Don't trust\nhorsemen on\nDeath Mountain.\nThey're Lynel\nthe time!",
|
||||||
"Geldman wants to be a Broadway star.\n\nHe's always practicing Jazz Hands!",
|
"Today's\nspecial is\nbattered bat.\nGot slapped\nfor offering a\nlady a Keese!",
|
||||||
"Octoballoon must be mad at me.\n\nHe blows up at the sight of me!",
|
"Don't walk\nunder\npropellered\npineapples.\nYou may end up\nwearing\na pee hat!",
|
||||||
"Toppo is a total pothead.\n\nHe hates it when you take away his grass",
|
"My girlfriend\nburrowed under\nthe sand.\nSo I decided\nto Leever!",
|
||||||
"I lost my shield by that house.\n\nWhy did they put up a Pikit fence?!",
|
"Geldman wants\nto be a\nBroadway star.\nHe's always\npracticing\nJazz Hands!",
|
||||||
"Know that fox in Steve's Town?\n\nHe'll Pikku pockets if you aren't careful",
|
"Octoballoon\nmust be mad\nat me.\nHe blows up\nat the sight\nof me!",
|
||||||
"Dash through Dark World bushes.\n\nYou'll see Ganon is tryin to Stal you!",
|
"Toppo is a\ntotal pothead.\n\nHe hates it\nwhen you take\naway his grass",
|
||||||
"Eyegore!\n\nYou gore!\n\nWe all gore those jerks with arrows!",
|
"I lost my\nshield by\nthat house.\nWhy did they\nput up a\nPikit fence?!",
|
||||||
"I like my whiskey neat.\n\nSome prefer it Octoroks!",
|
"Know that fox\nin Steve's\nTown?\nHe'll Pikku\npockets if you\naren't careful",
|
||||||
"I consoled Freezor over a cup of coffee.\n\nHis problems just seemed to melt away!",
|
"Dash through\nDark World\nbushes.\nYou'll see\nGanon is tryin\nto Stal you!",
|
||||||
"Magic droplets of water don't shut up.\n\nThey just Kyameron!",
|
"Eyegore!\n\nYou gore!\nWe all gore\nthose jerks\nwith arrows!",
|
||||||
"I bought hot wings for Sluggula.\n\nThey gave him explosive diarrhea!",
|
"I like my\nwhiskey neat.\n\nSome prefer it\nOctoroks!",
|
||||||
"Hardhat Beatle won't Let It Be?\n\nTell it to Get Back or give it a Ticket to Ride down a hole!",
|
"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!",
|
||||||
]
|
]
|
||||||
|
|
||||||
junk_texts = [
|
junk_texts = [
|
||||||
@@ -344,15 +349,16 @@ 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",
|
||||||
@@ -482,7 +488,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!'),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -826,8 +832,6 @@ 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,
|
||||||
@@ -1311,8 +1315,7 @@ class GoldCreditMapper(CharTextMapper):
|
|||||||
|
|
||||||
class GreenCreditMapper(CharTextMapper):
|
class GreenCreditMapper(CharTextMapper):
|
||||||
char_map = {' ': 0x9F,
|
char_map = {' ': 0x9F,
|
||||||
'…': 0xFD,
|
'.': 0x52,
|
||||||
'.': 0xFE,
|
|
||||||
'·': 0x52}
|
'·': 0x52}
|
||||||
alpha_offset = -0x29
|
alpha_offset = -0x29
|
||||||
alpha_lower_offset = -0x29
|
alpha_lower_offset = -0x29
|
||||||
@@ -1562,7 +1565,6 @@ class TextTable(object):
|
|||||||
'hylian_text_2',
|
'hylian_text_2',
|
||||||
'desert_entry_translated',
|
'desert_entry_translated',
|
||||||
'uncle_dying_sewer',
|
'uncle_dying_sewer',
|
||||||
'telepathic_intro',
|
|
||||||
'desert_thief_sitting',
|
'desert_thief_sitting',
|
||||||
'desert_thief_following',
|
'desert_thief_following',
|
||||||
'desert_thief_question',
|
'desert_thief_question',
|
||||||
@@ -1606,7 +1608,7 @@ class TextTable(object):
|
|||||||
text['zelda_save_sewers'] = CompressedTextMapper.convert("You saved me!")
|
text['zelda_save_sewers'] = CompressedTextMapper.convert("You saved me!")
|
||||||
text['priest_info'] = CompressedTextMapper.convert("So, I'm the dude that will protect Zelda. Don't worry, I got this covered.")
|
text['priest_info'] = CompressedTextMapper.convert("So, I'm the dude that will protect Zelda. Don't worry, I got this covered.")
|
||||||
text['zelda_sanctuary_before_leave'] = CompressedTextMapper.convert("Be careful!")
|
text['zelda_sanctuary_before_leave'] = CompressedTextMapper.convert("Be careful!")
|
||||||
text['telepathic_intro'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nHey, come find me and help me!")
|
text['telepathic_intro'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\n\nBring me shields...")
|
||||||
# 20
|
# 20
|
||||||
text['telepathic_reminder'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nI'm in the castle basement.")
|
text['telepathic_reminder'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nI'm in the castle basement.")
|
||||||
text['zelda_go_to_throne'] = CompressedTextMapper.convert("Go north to the throne.")
|
text['zelda_go_to_throne'] = CompressedTextMapper.convert("Go north to the throne.")
|
||||||
@@ -1893,13 +1895,13 @@ class TextTable(object):
|
|||||||
+ "{PAUSE3}\n A Link to the Past"
|
+ "{PAUSE3}\n A Link to the Past"
|
||||||
+ "{PAUSE3}\n Randomizer"
|
+ "{PAUSE3}\n Randomizer"
|
||||||
+ "{PAUSE3}\n\n\n"
|
+ "{PAUSE3}\n\n\n"
|
||||||
+ "{PAUSE3}\nAfter mostly disregarding what happened in the first two games,"
|
+ "{PAUSE3}\nAfter mostly disregarding and abandoning all sense of reason,"
|
||||||
+ "{PAUSE3}\nLink awakens to his uncle leaving the house."
|
+ "{PAUSE3}\nLink awakens to find a hungry pikit."
|
||||||
+ "{PAUSE3}\nHe just runs out the door, into the rainy night."
|
+ "{PAUSE3}\n\nHe must go look for shields, out in the rainy night."
|
||||||
+ "{PAUSE3} {CHANGEPIC}\nGanon has moved around all the items in Hyrule."
|
+ "{PAUSE3} {CHANGEPIC}\n\nGanon has hidden all the items inside shields."
|
||||||
+ "{PAUSE7}\nYou will have to find all the items necessary to beat Ganon."
|
+ "{PAUSE7}\n\nYou will have to collect the shields to feed your pikit."
|
||||||
+ "{PAUSE7}\nThis is your chance to be a hero."
|
+ "{PAUSE7}\n\nThis is your chance to be a hero.\n"
|
||||||
+ "{PAUSE3} {CHANGEPIC}\nYou must get the 7 crystals to beat Ganon."
|
+ "{PAUSE3} {CHANGEPIC}\nYou must keep your pikit well-fed.\n\n"
|
||||||
+ "{PAUSE9} {CHANGEPIC}", False)
|
+ "{PAUSE9} {CHANGEPIC}", False)
|
||||||
text['intro_throne_room'] = CompressedTextMapper.convert("{IBOX}\nLook at this Stalfos on the throne.", False)
|
text['intro_throne_room'] = CompressedTextMapper.convert("{IBOX}\nLook at this Stalfos on the throne.", False)
|
||||||
text['intro_zelda_cell'] = CompressedTextMapper.convert("{IBOX}\nIt is your time to shine!", False)
|
text['intro_zelda_cell'] = CompressedTextMapper.convert("{IBOX}\nIt is your time to shine!", False)
|
||||||
@@ -2054,5 +2056,6 @@ class TextTable(object):
|
|||||||
text['ganon_phase_3_silvers'] = CompressedTextMapper.convert("Oh no! Silver! My one true weakness!")
|
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['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['mastersword_pedestal_goal'] = CompressedTextMapper.convert("To claim thy reward, you must present all 3 Pendants of Virtue.")
|
||||||
|
text['already_have_shield'] = CompressedTextMapper.convert("You can't carry another shield...\nCome back later.")
|
||||||
text['end_pad_data'] = bytearray([0xfb])
|
text['end_pad_data'] = bytearray([0xfb])
|
||||||
text['terminator'] = bytearray([0xFF, 0xFF])
|
text['terminator'] = bytearray([0xFF, 0xFF])
|
||||||
|
|||||||
Binary file not shown.
@@ -759,10 +759,6 @@
|
|||||||
"type": "str",
|
"type": "str",
|
||||||
"help": "suppress"
|
"help": "suppress"
|
||||||
},
|
},
|
||||||
"orange_potion": {
|
|
||||||
"action": "store_true",
|
|
||||||
"help": "suppress"
|
|
||||||
},
|
|
||||||
"settingsonload": {
|
"settingsonload": {
|
||||||
"choices": [
|
"choices": [
|
||||||
"default",
|
"default",
|
||||||
|
|||||||
@@ -1998,7 +1998,7 @@ def init_vanilla_sprites():
|
|||||||
create_sprite(0x0103, EnemySprite.Drunkard, 0x00, 0, 0x06, 0x15)
|
create_sprite(0x0103, EnemySprite.Drunkard, 0x00, 0, 0x06, 0x15)
|
||||||
create_sprite(0x0103, EnemySprite.AdultNpc, 0x00, 0, 0x0a, 0x1b)
|
create_sprite(0x0103, EnemySprite.AdultNpc, 0x00, 0, 0x0a, 0x1b)
|
||||||
create_sprite(0x0103, EnemySprite.Innkeeper, 0x00, 0, 0x17, 0x17)
|
create_sprite(0x0103, EnemySprite.Innkeeper, 0x00, 0, 0x17, 0x17)
|
||||||
create_sprite(0x0104, EnemySprite.UnclePriest, 0x00, 0, 0x1a, 0x17)
|
create_sprite(0x0104, EnemySprite.Pikit, 0x00, 0, 0x1a, 0x18, never_drop=True, fix=True)
|
||||||
create_sprite(0x0105, EnemySprite.Wiseman, 0x00, 0, 0x07, 0x18)
|
create_sprite(0x0105, EnemySprite.Wiseman, 0x00, 0, 0x07, 0x18)
|
||||||
create_sprite(0x0106, EnemySprite.Shopkeeper, 0x00, 0, 0x08, 0x1b)
|
create_sprite(0x0106, EnemySprite.Shopkeeper, 0x00, 0, 0x08, 0x1b)
|
||||||
create_sprite(0x0107, EnemySprite.BonkItem, 0x00, 0, 0x03, 0x15)
|
create_sprite(0x0107, EnemySprite.BonkItem, 0x00, 0, 0x03, 0x15)
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ vanilla_sheets = [
|
|||||||
(0x47, 0x49, 0x2B, 0x2D), (0x46, 0x49, 0x1C, 0x52), (0x00, 0x49, 0x1C, 0x52), (0x5D, 0x49, 0x00, 0x52),
|
(0x47, 0x49, 0x2B, 0x2D), (0x46, 0x49, 0x1C, 0x52), (0x00, 0x49, 0x1C, 0x52), (0x5D, 0x49, 0x00, 0x52),
|
||||||
(0x46, 0x49, 0x13, 0x52), (0x4B, 0x4D, 0x4A, 0x5A), (0x47, 0x49, 0x1C, 0x52), (0x4B, 0x4D, 0x39, 0x36),
|
(0x46, 0x49, 0x13, 0x52), (0x4B, 0x4D, 0x4A, 0x5A), (0x47, 0x49, 0x1C, 0x52), (0x4B, 0x4D, 0x39, 0x36),
|
||||||
(0x1F, 0x2C, 0x2E, 0x52), (0x1F, 0x2C, 0x2E, 0x1D), (0x2F, 0x2C, 0x2E, 0x52), (0x2F, 0x2C, 0x2E, 0x31),
|
(0x1F, 0x2C, 0x2E, 0x52), (0x1F, 0x2C, 0x2E, 0x1D), (0x2F, 0x2C, 0x2E, 0x52), (0x2F, 0x2C, 0x2E, 0x31),
|
||||||
(0x1F, 0x1E, 0x30, 0x52), (0x51, 0x49, 0x13, 0x00), (0x4F, 0x49, 0x13, 0x50), (0x4F, 0x4D, 0x4A, 0x50),
|
(0x1F, 0x1E, 0x30, 0x52), (0x51, 0x49, 0x13, 0x1B), (0x4F, 0x49, 0x13, 0x50), (0x4F, 0x4D, 0x4A, 0x50),
|
||||||
|
|
||||||
(0x4B, 0x49, 0x4C, 0x2B), (0x1F, 0x20, 0x22, 0x53), (0x55, 0x3D, 0x42, 0x43), (0x1F, 0x1E, 0x23, 0x52),
|
(0x4B, 0x49, 0x4C, 0x2B), (0x1F, 0x20, 0x22, 0x53), (0x55, 0x3D, 0x42, 0x43), (0x1F, 0x1E, 0x23, 0x52),
|
||||||
(0x1F, 0x1E, 0x39, 0x3A), (0x1F, 0x1E, 0x3A, 0x3E), (0x1F, 0x1E, 0x3C, 0x3D), (0x40, 0x1E, 0x27, 0x3F),
|
(0x1F, 0x1E, 0x39, 0x3A), (0x1F, 0x1E, 0x3A, 0x3E), (0x1F, 0x1E, 0x3C, 0x3D), (0x40, 0x1E, 0x27, 0x3F),
|
||||||
@@ -566,7 +566,7 @@ def setup_required_dungeon_groups(sheets, data_tables):
|
|||||||
sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0xff, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112,
|
sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0xff, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112,
|
||||||
0x11a, 0x11c, 0x11f, 0x122})
|
0x11a, 0x11c, 0x11f, 0x122})
|
||||||
sheets[did(7)].add_sprite_to_sheet([75, 77, 57, 54], {0x8, 0x2c, 0x114, 0x115, 0x116}) # big fairies
|
sheets[did(7)].add_sprite_to_sheet([75, 77, 57, 54], {0x8, 0x2c, 0x114, 0x115, 0x116}) # big fairies
|
||||||
sheets[did(13)].add_sprite_to_sheet([81, None, None, None], {0x55, 0x102, 0x104}) # uncle, sick kid
|
sheets[did(13)].add_sprite_to_sheet([81, None, None, 27], {0x55, 0x102, 0x104}) # uncle, sick kid
|
||||||
sheets[did(14)].add_sprite_to_sheet([71, 73, 76, 80], {0x12, 0x105, 0x10a}) # wisemen
|
sheets[did(14)].add_sprite_to_sheet([71, 73, 76, 80], {0x12, 0x105, 0x10a}) # wisemen
|
||||||
sheets[did(15)].add_sprite_to_sheet([79, 77, 74, 80], {0xf4, 0xf5, 0x101, 0x103, 0x106, 0x118, 0x119}) # more npcs
|
sheets[did(15)].add_sprite_to_sheet([79, 77, 74, 80], {0xf4, 0xf5, 0x101, 0x103, 0x106, 0x118, 0x119}) # more npcs
|
||||||
sheets[did(18)].add_sprite_to_sheet([85, 61, 66, 67], {0x20, 0x30}) # aga alter, aga1
|
sheets[did(18)].add_sprite_to_sheet([85, 61, 66, 67], {0x20, 0x30}) # aga alter, aga1
|
||||||
|
|||||||
Reference in New Issue
Block a user