parent
72d4e6c76a
commit
c0acfdd81e
29
Rom.py
29
Rom.py
|
@ -434,6 +434,14 @@ class Sprite(object):
|
||||||
|
|
||||||
def patch_rom(world, player, rom):
|
def patch_rom(world, player, rom):
|
||||||
random.seed(world.rom_seeds[player])
|
random.seed(world.rom_seeds[player])
|
||||||
|
|
||||||
|
# progressive bow silver arrow hint hack
|
||||||
|
prog_bow_locs = world.find_items('Progressive Bow', player)
|
||||||
|
if len(prog_bow_locs) > 1:
|
||||||
|
# only pick a distingushed bow if we have at least two
|
||||||
|
distinguished_prog_bow_loc = random.choice(prog_bow_locs)
|
||||||
|
distinguished_prog_bow_loc.item.code = 0x65
|
||||||
|
|
||||||
# patch items
|
# patch items
|
||||||
for location in world.get_locations():
|
for location in world.get_locations():
|
||||||
if location.player != player:
|
if location.player != player:
|
||||||
|
@ -1321,11 +1329,28 @@ def write_strings(rom, world, player):
|
||||||
for location in hint_locations:
|
for location in hint_locations:
|
||||||
tt[location] = junk_hints.pop(0)
|
tt[location] = junk_hints.pop(0)
|
||||||
|
|
||||||
# We still need the older hints of course. Those are done here.
|
# We still need the older hints of course. Those are done here.
|
||||||
|
|
||||||
|
|
||||||
silverarrows = world.find_items('Silver Arrows', player)
|
silverarrows = world.find_items('Silver Arrows', player)
|
||||||
random.shuffle(silverarrows)
|
random.shuffle(silverarrows)
|
||||||
silverarrow_hint = (' %s?' % hint_text(silverarrows[0]).replace('Ganon\'s', 'my')) if silverarrows else '?\nI think not!'
|
silverarrow_hint = (' %s?' % hint_text(silverarrows[0]).replace('Ganon\'s', 'my')) if silverarrows else '?\nI think not!'
|
||||||
tt['ganon_phase_3'] = 'Did you find the silver arrows%s' % silverarrow_hint
|
tt['ganon_phase_3_no_silvers'] = 'Did you find the silver arrows%s' % silverarrow_hint
|
||||||
|
|
||||||
|
prog_bow_locs = world.find_items('Progressive Bow', player)
|
||||||
|
distinguished_prog_bow_loc = next((location for location in prog_bow_locs if location.item.code == 0x65), None)
|
||||||
|
if distinguished_prog_bow_loc:
|
||||||
|
prog_bow_locs.remove(distinguished_prog_bow_loc)
|
||||||
|
silverarrow_hint = (' %s?' % hint_text(distinguished_prog_bow_loc).replace('Ganon\'s', 'my'))
|
||||||
|
tt['ganon_phase_3_no_silvers'] = 'Did you find the silver arrows%s' % silverarrow_hint
|
||||||
|
|
||||||
|
if any(prog_bow_locs):
|
||||||
|
silverarrow_hint = (' %s?' % hint_text(random.choice(prog_bow_locs)).replace('Ganon\'s', 'my'))
|
||||||
|
tt['ganon_phase_3_no_silvers_alt'] = 'Did you find the silver arrows%s' % silverarrow_hint
|
||||||
|
|
||||||
|
|
||||||
|
silverarrow_hint = (' %s?' % hint_text(silverarrows[0]).replace('Ganon\'s', 'my')) if silverarrows else '?\nI think not!'
|
||||||
|
|
||||||
|
|
||||||
crystal5 = world.find_items('Crystal 5', player)[0]
|
crystal5 = world.find_items('Crystal 5', player)[0]
|
||||||
crystal6 = world.find_items('Crystal 6', player)[0]
|
crystal6 = world.find_items('Crystal 6', player)[0]
|
||||||
|
|
14
Text.py
14
Text.py
|
@ -535,7 +535,7 @@ class MultiByteCoreTextMapper(object):
|
||||||
"{INTRO}": [0x6E, 0x00, 0x77, 0x07, 0x7A, 0x03, 0x6B, 0x02, 0x67],
|
"{INTRO}": [0x6E, 0x00, 0x77, 0x07, 0x7A, 0x03, 0x6B, 0x02, 0x67],
|
||||||
"{NOTEXT}": [0x6E, 0x00, 0x6B, 0x04],
|
"{NOTEXT}": [0x6E, 0x00, 0x6B, 0x04],
|
||||||
"{IBOX}": [0x6B, 0x02, 0x77, 0x07, 0x7A, 0x03],
|
"{IBOX}": [0x6B, 0x02, 0x77, 0x07, 0x7A, 0x03],
|
||||||
"{C:GREEN}": [0x77, 0x07],
|
"{C:GREEN}": [0x77, 0x07],
|
||||||
"{C:YELLOW}": [0x77, 0x02],
|
"{C:YELLOW}": [0x77, 0x02],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,10 +552,10 @@ class MultiByteCoreTextMapper(object):
|
||||||
linespace = wrap
|
linespace = wrap
|
||||||
line = lines.pop(0)
|
line = lines.pop(0)
|
||||||
if line.startswith('{'):
|
if line.startswith('{'):
|
||||||
if line == '{PAGEBREAK}':
|
if line == '{PAGEBREAK}':
|
||||||
if lineindex % 3 != 0:
|
if lineindex % 3 != 0:
|
||||||
# insert a wait for keypress, unless we just did so
|
# insert a wait for keypress, unless we just did so
|
||||||
outbuf.append(0x7E)
|
outbuf.append(0x7E)
|
||||||
lineindex = 0
|
lineindex = 0
|
||||||
outbuf.extend(cls.special_commands[line])
|
outbuf.extend(cls.special_commands[line])
|
||||||
continue
|
continue
|
||||||
|
@ -1885,5 +1885,9 @@ class TextTable(object):
|
||||||
text['fish_money'] = CompressedTextMapper.convert("It's a secret to everyone.")
|
text['fish_money'] = CompressedTextMapper.convert("It's a secret to everyone.")
|
||||||
text['sign_ganons_tower'] = CompressedTextMapper.convert("You need all 7 crystals to enter.")
|
text['sign_ganons_tower'] = CompressedTextMapper.convert("You need all 7 crystals to enter.")
|
||||||
text['sign_ganon'] = CompressedTextMapper.convert("You need all 7 crystals to beat Ganon.")
|
text['sign_ganon'] = CompressedTextMapper.convert("You need all 7 crystals to beat Ganon.")
|
||||||
|
text['ganon_phase_3_no_bow'] = CompressedTextMapper.convert("You have no bow. Dingus!")
|
||||||
|
text['ganon_phase_3_no_silvers_alt'] = CompressedTextMapper.convert("You can't best me without silver arrows!")
|
||||||
|
text['ganon_phase_3_no_silvers'] = CompressedTextMapper.convert("You can't best me without silver arrows!")
|
||||||
|
text['ganon_phase_3_silvers'] = CompressedTextMapper.convert("Oh no! Silver! My one true weakness!")
|
||||||
text['end_pad_data'] = bytearray([0xfb])
|
text['end_pad_data'] = bytearray([0xfb])
|
||||||
text['terminator'] = bytearray([0xFF, 0xFF])
|
text['terminator'] = bytearray([0xFF, 0xFF])
|
||||||
|
|
Loading…
Reference in New Issue