Compare commits
17 Commits
b72a04511b
...
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[0x36D] = 0x18
|
||||
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_arrow_cap_upgrades = 30
|
||||
starting_bombs = 0
|
||||
|
||||
10
ItemList.py
10
ItemList.py
@@ -872,7 +872,7 @@ def set_up_shops(world, player):
|
||||
rss.locked = True
|
||||
cap_shop = world.get_region('Capacity Upgrade', player).shop
|
||||
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.locked = True
|
||||
if retro_bow:
|
||||
@@ -1191,10 +1191,10 @@ def get_pool_core(world, player, progressive, shuffle, difficulty, treasure_hunt
|
||||
thisbottle = random.choice(diff.bottles)
|
||||
pool.append(thisbottle)
|
||||
|
||||
if want_progressives():
|
||||
pool.extend(diff.progressiveshield)
|
||||
else:
|
||||
pool.extend(diff.basicshield)
|
||||
# if want_progressives():
|
||||
# pool.extend(diff.progressiveshield)
|
||||
# else:
|
||||
# pool.extend(diff.basicshield)
|
||||
|
||||
if want_progressives():
|
||||
pool.extend(diff.progressivearmor)
|
||||
|
||||
@@ -1178,7 +1178,7 @@ def create_shops(world, player):
|
||||
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'):
|
||||
locked = True
|
||||
inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)]
|
||||
inventory = [('Blue Potion', 160), ('Small Heart', 10), ('Bombs (10)', 50)]
|
||||
custom = True
|
||||
region = world.get_region(region_name, player)
|
||||
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])
|
||||
# item = (item, price, max=0, replacement=None, replacement_price=0)
|
||||
_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 = {
|
||||
'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', 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 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),
|
||||
|
||||
14
Rom.py
14
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 = 'abaa7ce289fd18e0ab898f2ca1263db1'
|
||||
RANDOMIZERBASEHASH = '13a0b87bf037dbc378073f6b5b97d297'
|
||||
|
||||
|
||||
class JsonRom(object):
|
||||
@@ -737,8 +737,8 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
||||
dr_flags = DROptions.NoOptions
|
||||
if world.mirrorscroll[player] or world.doorShuffle[player] != 'vanilla':
|
||||
dr_flags |= DROptions.Town_Portal
|
||||
if world.doorShuffle[player] == 'vanilla':
|
||||
dr_flags |= DROptions.Eternal_Mini_Bosses
|
||||
# if world.doorShuffle[player] == 'vanilla':
|
||||
# dr_flags |= DROptions.Eternal_Mini_Bosses
|
||||
if world.doorShuffle[player] not in ['vanilla', 'basic']:
|
||||
dr_flags |= DROptions.Map_Info
|
||||
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+0x1f, thousands_bot)
|
||||
# modify stat config
|
||||
stat_address = 0xA39895
|
||||
stat_address = 0x2398B0
|
||||
stat_pc = snes_to_pc(stat_address)
|
||||
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)
|
||||
@@ -3053,9 +3053,9 @@ def text_for_item(item, world, player, team):
|
||||
|
||||
def init_open_mode_sram(rom):
|
||||
rom.initial_sram.pre_open_castle_gate()
|
||||
rom.initial_sram.set_progress_indicator(0x02)
|
||||
rom.initial_sram.set_progress_flags(0x14)
|
||||
rom.initial_sram.set_starting_entrance(0x01)
|
||||
rom.initial_sram.set_progress_indicator(0x00)
|
||||
rom.initial_sram.set_progress_flags(0x04)
|
||||
rom.initial_sram.set_starting_entrance(0x00)
|
||||
|
||||
def init_standard_mode_sram(rom):
|
||||
rom.initial_sram.set_progress_indicator(0x00)
|
||||
|
||||
18
Text.py
18
Text.py
@@ -1565,7 +1565,6 @@ class TextTable(object):
|
||||
'hylian_text_2',
|
||||
'desert_entry_translated',
|
||||
'uncle_dying_sewer',
|
||||
'telepathic_intro',
|
||||
'desert_thief_sitting',
|
||||
'desert_thief_following',
|
||||
'desert_thief_question',
|
||||
@@ -1609,7 +1608,7 @@ class TextTable(object):
|
||||
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['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
|
||||
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.")
|
||||
@@ -1896,13 +1895,13 @@ class TextTable(object):
|
||||
+ "{PAUSE3}\n A Link to the Past"
|
||||
+ "{PAUSE3}\n Randomizer"
|
||||
+ "{PAUSE3}\n\n\n"
|
||||
+ "{PAUSE3}\nAfter mostly disregarding what happened in the first two games,"
|
||||
+ "{PAUSE3}\nLink awakens to his uncle leaving the house."
|
||||
+ "{PAUSE3}\nHe just runs out the door, into the rainy night."
|
||||
+ "{PAUSE3} {CHANGEPIC}\nGanon has moved around all the items in Hyrule."
|
||||
+ "{PAUSE7}\nYou will have to find all the items necessary to beat Ganon."
|
||||
+ "{PAUSE7}\nThis is your chance to be a hero."
|
||||
+ "{PAUSE3} {CHANGEPIC}\nYou must get the 7 crystals to beat Ganon."
|
||||
+ "{PAUSE3}\nAfter mostly disregarding and abandoning all sense of reason,"
|
||||
+ "{PAUSE3}\nLink awakens to find a hungry pikit."
|
||||
+ "{PAUSE3}\n\nHe must go look for shields, out in the rainy night."
|
||||
+ "{PAUSE3} {CHANGEPIC}\n\nGanon has hidden all the items inside shields."
|
||||
+ "{PAUSE7}\n\nYou will have to collect the shields to feed your pikit."
|
||||
+ "{PAUSE7}\n\nThis is your chance to be a hero.\n"
|
||||
+ "{PAUSE3} {CHANGEPIC}\nYou must keep your pikit well-fed.\n\n"
|
||||
+ "{PAUSE9} {CHANGEPIC}", 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)
|
||||
@@ -2057,5 +2056,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['already_have_shield'] = CompressedTextMapper.convert("You can't carry another shield...\nCome back later.")
|
||||
text['end_pad_data'] = bytearray([0xfb])
|
||||
text['terminator'] = bytearray([0xFF, 0xFF])
|
||||
|
||||
Binary file not shown.
@@ -1998,7 +1998,7 @@ def init_vanilla_sprites():
|
||||
create_sprite(0x0103, EnemySprite.Drunkard, 0x00, 0, 0x06, 0x15)
|
||||
create_sprite(0x0103, EnemySprite.AdultNpc, 0x00, 0, 0x0a, 0x1b)
|
||||
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(0x0106, EnemySprite.Shopkeeper, 0x00, 0, 0x08, 0x1b)
|
||||
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),
|
||||
(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, 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),
|
||||
(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,
|
||||
0x11a, 0x11c, 0x11f, 0x122})
|
||||
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(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
|
||||
|
||||
Reference in New Issue
Block a user