Add showloot setting
This commit is contained in:
@@ -149,6 +149,7 @@ class World(object):
|
|||||||
set_player_attr('keyshuffle', 'none')
|
set_player_attr('keyshuffle', 'none')
|
||||||
set_player_attr('bigkeyshuffle', 'none')
|
set_player_attr('bigkeyshuffle', 'none')
|
||||||
set_player_attr('prizeshuffle', 'none')
|
set_player_attr('prizeshuffle', 'none')
|
||||||
|
set_player_attr('showloot', 'never')
|
||||||
set_player_attr('restrict_boss_items', 'none')
|
set_player_attr('restrict_boss_items', 'none')
|
||||||
set_player_attr('bombbag', False)
|
set_player_attr('bombbag', False)
|
||||||
set_player_attr('flute_mode', 'normal')
|
set_player_attr('flute_mode', 'normal')
|
||||||
@@ -3126,6 +3127,7 @@ class Spoiler(object):
|
|||||||
'keyshuffle': self.world.keyshuffle,
|
'keyshuffle': self.world.keyshuffle,
|
||||||
'bigkeyshuffle': self.world.bigkeyshuffle,
|
'bigkeyshuffle': self.world.bigkeyshuffle,
|
||||||
'prizeshuffle': self.world.prizeshuffle,
|
'prizeshuffle': self.world.prizeshuffle,
|
||||||
|
'showloot': self.world.showloot,
|
||||||
'boss_shuffle': self.world.boss_shuffle,
|
'boss_shuffle': self.world.boss_shuffle,
|
||||||
'enemy_shuffle': self.world.enemy_shuffle,
|
'enemy_shuffle': self.world.enemy_shuffle,
|
||||||
'enemy_health': self.world.enemy_health,
|
'enemy_health': self.world.enemy_health,
|
||||||
@@ -3390,6 +3392,7 @@ class Spoiler(object):
|
|||||||
outfile.write('Small Key Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['keyshuffle'][player])
|
outfile.write('Small Key Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['keyshuffle'][player])
|
||||||
outfile.write('Big Key Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['bigkeyshuffle'][player])
|
outfile.write('Big Key Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['bigkeyshuffle'][player])
|
||||||
outfile.write('Prize Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['prizeshuffle'][player])
|
outfile.write('Prize Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['prizeshuffle'][player])
|
||||||
|
outfile.write('Show Value of Checks:'.ljust(line_width) + '%s\n' % self.metadata['showloot'][player])
|
||||||
outfile.write('Key Logic Algorithm:'.ljust(line_width) + '%s\n' % self.metadata['key_logic'][player])
|
outfile.write('Key Logic Algorithm:'.ljust(line_width) + '%s\n' % self.metadata['key_logic'][player])
|
||||||
outfile.write('\n')
|
outfile.write('\n')
|
||||||
outfile.write('Door Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['door_shuffle'][player])
|
outfile.write('Door Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['door_shuffle'][player])
|
||||||
|
|||||||
3
CLI.py
3
CLI.py
@@ -134,7 +134,7 @@ def parse_cli(argv, no_defaults=False):
|
|||||||
'ow_terrain', 'ow_crossed', 'ow_keepsimilar', 'ow_mixed', 'ow_whirlpool', 'ow_fluteshuffle',
|
'ow_terrain', 'ow_crossed', 'ow_keepsimilar', 'ow_mixed', 'ow_whirlpool', 'ow_fluteshuffle',
|
||||||
'flute_mode', 'bow_mode', 'take_any', 'boots_hint', 'shuffle_followers',
|
'flute_mode', 'bow_mode', 'take_any', 'boots_hint', 'shuffle_followers',
|
||||||
'shuffle', 'door_shuffle', 'intensity', 'crystals_ganon', 'crystals_gt', 'ganon_item', 'openpyramid',
|
'shuffle', 'door_shuffle', 'intensity', 'crystals_ganon', 'crystals_gt', 'ganon_item', 'openpyramid',
|
||||||
'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'prizeshuffle', 'startinventory',
|
'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'prizeshuffle', 'showloot', 'startinventory',
|
||||||
'usestartinventory', 'bombbag', 'shuffleganon', 'overworld_map', 'restrict_boss_items',
|
'usestartinventory', 'bombbag', 'shuffleganon', 'overworld_map', 'restrict_boss_items',
|
||||||
'triforce_max_difference', 'triforce_pool_min', 'triforce_pool_max', 'triforce_goal_min', 'triforce_goal_max',
|
'triforce_max_difference', 'triforce_pool_min', 'triforce_pool_max', 'triforce_goal_min', 'triforce_goal_max',
|
||||||
'triforce_min_difference', 'triforce_goal', 'triforce_pool', 'shufflelinks', 'shuffletavern',
|
'triforce_min_difference', 'triforce_goal', 'triforce_pool', 'shufflelinks', 'shuffletavern',
|
||||||
@@ -234,6 +234,7 @@ def parse_settings():
|
|||||||
"keyshuffle": "none",
|
"keyshuffle": "none",
|
||||||
"bigkeyshuffle": "none",
|
"bigkeyshuffle": "none",
|
||||||
"prizeshuffle": "none",
|
"prizeshuffle": "none",
|
||||||
|
"showloot": "never",
|
||||||
"keysanity": False,
|
"keysanity": False,
|
||||||
"door_shuffle": "vanilla",
|
"door_shuffle": "vanilla",
|
||||||
"intensity": 3,
|
"intensity": 3,
|
||||||
|
|||||||
13
Dungeons.py
13
Dungeons.py
@@ -16,13 +16,14 @@ def create_dungeons(world, player):
|
|||||||
hc_dungeon_items = ['Map (Escape)']
|
hc_dungeon_items = ['Map (Escape)']
|
||||||
at_dungeon_items = []
|
at_dungeon_items = []
|
||||||
|
|
||||||
if world.dropshuffle[player] == 'underworld' or world.pottery[player] in ['dungeon', 'reduced', 'clustered', 'nonempty', 'lottery']:
|
if world.showloot[player] == 'compass':
|
||||||
hc_dungeon_items.append('Compass (Escape)')
|
if world.dropshuffle[player] == 'underworld' or world.pottery[player] in ['dungeon', 'reduced', 'clustered', 'nonempty', 'lottery']:
|
||||||
at_dungeon_items.append('Compass (Agahnims Tower)')
|
hc_dungeon_items.append('Compass (Escape)')
|
||||||
elif world.compassshuffle[player] == 'wild':
|
|
||||||
hc_dungeon_items.append('Compass (Escape)')
|
|
||||||
if world.keyshuffle[player] == 'wild':
|
|
||||||
at_dungeon_items.append('Compass (Agahnims Tower)')
|
at_dungeon_items.append('Compass (Agahnims Tower)')
|
||||||
|
elif world.compassshuffle[player] == 'wild':
|
||||||
|
hc_dungeon_items.append('Compass (Escape)')
|
||||||
|
if world.keyshuffle[player] == 'wild':
|
||||||
|
at_dungeon_items.append('Compass (Agahnims Tower)')
|
||||||
|
|
||||||
ES = make_dungeon('Hyrule Castle', 1, None, hyrule_castle_regions, None, [ItemFactory('Small Key (Escape)', player)], ItemFactory(hc_dungeon_items, player))
|
ES = make_dungeon('Hyrule Castle', 1, None, hyrule_castle_regions, None, [ItemFactory('Small Key (Escape)', player)], ItemFactory(hc_dungeon_items, player))
|
||||||
EP = make_dungeon('Eastern Palace', 2, 'Armos Knights', eastern_regions, ItemFactory('Big Key (Eastern Palace)', player), [], ItemFactory(['Map (Eastern Palace)', 'Compass (Eastern Palace)'], player))
|
EP = make_dungeon('Eastern Palace', 2, 'Armos Knights', eastern_regions, ItemFactory('Big Key (Eastern Palace)', player), [], ItemFactory(['Map (Eastern Palace)', 'Compass (Eastern Palace)'], player))
|
||||||
|
|||||||
3
Main.py
3
Main.py
@@ -470,6 +470,7 @@ def init_world(args, fish):
|
|||||||
world.keyshuffle = args.keyshuffle.copy()
|
world.keyshuffle = args.keyshuffle.copy()
|
||||||
world.bigkeyshuffle = args.bigkeyshuffle.copy()
|
world.bigkeyshuffle = args.bigkeyshuffle.copy()
|
||||||
world.prizeshuffle = args.prizeshuffle.copy()
|
world.prizeshuffle = args.prizeshuffle.copy()
|
||||||
|
world.showloot = args.showloot.copy()
|
||||||
world.bombbag = args.bombbag.copy()
|
world.bombbag = args.bombbag.copy()
|
||||||
world.flute_mode = args.flute_mode.copy()
|
world.flute_mode = args.flute_mode.copy()
|
||||||
world.bow_mode = args.bow_mode.copy()
|
world.bow_mode = args.bow_mode.copy()
|
||||||
@@ -785,6 +786,7 @@ def copy_world(world):
|
|||||||
ret.keyshuffle = world.keyshuffle.copy()
|
ret.keyshuffle = world.keyshuffle.copy()
|
||||||
ret.bigkeyshuffle = world.bigkeyshuffle.copy()
|
ret.bigkeyshuffle = world.bigkeyshuffle.copy()
|
||||||
ret.prizeshuffle = world.prizeshuffle.copy()
|
ret.prizeshuffle = world.prizeshuffle.copy()
|
||||||
|
ret.showloot = world.showloot.copy()
|
||||||
ret.bombbag = world.bombbag.copy()
|
ret.bombbag = world.bombbag.copy()
|
||||||
ret.flute_mode = world.flute_mode.copy()
|
ret.flute_mode = world.flute_mode.copy()
|
||||||
ret.bow_mode = world.bow_mode.copy()
|
ret.bow_mode = world.bow_mode.copy()
|
||||||
@@ -1012,6 +1014,7 @@ def copy_world_premature(world, player, create_flute_exits=True):
|
|||||||
ret.keyshuffle = world.keyshuffle.copy()
|
ret.keyshuffle = world.keyshuffle.copy()
|
||||||
ret.bigkeyshuffle = world.bigkeyshuffle.copy()
|
ret.bigkeyshuffle = world.bigkeyshuffle.copy()
|
||||||
ret.prizeshuffle = world.prizeshuffle.copy()
|
ret.prizeshuffle = world.prizeshuffle.copy()
|
||||||
|
ret.showloot = world.showloot.copy()
|
||||||
ret.bombbag = world.bombbag.copy()
|
ret.bombbag = world.bombbag.copy()
|
||||||
ret.flute_mode = world.flute_mode.copy()
|
ret.flute_mode = world.flute_mode.copy()
|
||||||
ret.bow_mode = world.bow_mode.copy()
|
ret.bow_mode = world.bow_mode.copy()
|
||||||
|
|||||||
20
Rom.py
20
Rom.py
@@ -1440,14 +1440,24 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
|||||||
or world.dropshuffle[player] != 'none' or world.pottery[player] not in ['none', 'cave']):
|
or world.dropshuffle[player] != 'none' or world.pottery[player] not in ['none', 'cave']):
|
||||||
rom.write_byte(0x18003A, 0x01) # show key counts on map pickup
|
rom.write_byte(0x18003A, 0x01) # show key counts on map pickup
|
||||||
|
|
||||||
loot_show = 0x09
|
loot_source = 0x09
|
||||||
if world.prizeshuffle[player] != 'none':
|
if world.prizeshuffle[player] != 'none':
|
||||||
loot_show |= 0x10
|
loot_source |= 0x10
|
||||||
if world.pottery[player] not in ['none', 'cave']:
|
if world.pottery[player] not in ['none', 'cave']:
|
||||||
loot_show |= 0x02
|
loot_source |= 0x02
|
||||||
if world.dropshuffle[player] != 'none':
|
if world.dropshuffle[player] != 'none':
|
||||||
loot_show |= 0x04
|
loot_source |= 0x04
|
||||||
rom.write_byte(0x1CFF10, loot_show)
|
rom.write_byte(0x1CFF10, loot_source)
|
||||||
|
|
||||||
|
if world.showloot[player] == 'never':
|
||||||
|
rom.write_bytes(0x1CFF08, [0x00, 0x00, 0x00, 0x00])
|
||||||
|
rom.write_byte(0x1CFF11, 0x00)
|
||||||
|
elif world.showloot[player] == 'compass':
|
||||||
|
rom.write_bytes(0x1CFF08, [0x00, 0x00, 0x02, 0x01])
|
||||||
|
rom.write_byte(0x1CFF11, 0x01)
|
||||||
|
elif world.showloot[player] == 'always':
|
||||||
|
rom.write_bytes(0x1CFF08, [0x02, 0x00, 0x00, 0x00])
|
||||||
|
rom.write_byte(0x1CFF11, 0x00)
|
||||||
|
|
||||||
if world.doorShuffle[player] != 'vanilla':
|
if world.doorShuffle[player] != 'vanilla':
|
||||||
rom.write_byte(0x1CFF00, 0x04)
|
rom.write_byte(0x1CFF00, 0x04)
|
||||||
|
|||||||
@@ -431,6 +431,13 @@
|
|||||||
"wild"
|
"wild"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"showloot": {
|
||||||
|
"choices": [
|
||||||
|
"never",
|
||||||
|
"compass",
|
||||||
|
"always"
|
||||||
|
]
|
||||||
|
},
|
||||||
"keysanity": {
|
"keysanity": {
|
||||||
"action": "store_true",
|
"action": "store_true",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
|
|||||||
Reference in New Issue
Block a user