Only pre-open pyramid if ER falls within vanilla/dungeonssimple/dungeonsfull

This commit is contained in:
Fabian Dill 2020-09-11 03:23:00 +02:00
parent 99517021c8
commit da01325abd
4 changed files with 11 additions and 7 deletions

View File

@ -204,17 +204,19 @@ def parse_arguments(argv, no_defaults=False):
Random: Picks a random value between 0 and 7 (inclusive). Random: Picks a random value between 0 and 7 (inclusive).
0-7: Number of crystals needed 0-7: Number of crystals needed
''') ''')
parser.add_argument('--crystals_gt', default=defval('7'), const='7', nargs='?', choices=['random', '0', '1', '2', '3', '4', '5', '6', '7'], parser.add_argument('--crystals_gt', default=defval('7'), const='7', nargs='?',
choices=['random', '0', '1', '2', '3', '4', '5', '6', '7'],
help='''\ help='''\
How many crystals are needed to open GT. For inverted mode How many crystals are needed to open GT. For inverted mode
this applies to the castle tower door instead. (default: %(default)s) this applies to the castle tower door instead. (default: %(default)s)
Random: Picks a random value between 0 and 7 (inclusive). Random: Picks a random value between 0 and 7 (inclusive).
0-7: Number of crystals needed 0-7: Number of crystals needed
''') ''')
parser.add_argument('--openpyramid', default=defval(False), help='''\ parser.add_argument('--open_pyramid', default=defval(False), help='''\
Pre-opens the pyramid hole, this removes the Agahnim 2 requirement for it Pre-opens the pyramid hole, this removes the Agahnim 2 requirement for it
''', action='store_true') ''', action='store_true')
parser.add_argument('--rom', default=defval('Zelda no Densetsu - Kamigami no Triforce (Japan).sfc'), help='Path to an ALttP JAP(1.0) rom to use as a base.') parser.add_argument('--rom', default=defval('Zelda no Densetsu - Kamigami no Triforce (Japan).sfc'),
help='Path to an ALttP JAP(1.0) rom to use as a base.')
parser.add_argument('--loglevel', default=defval('info'), const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.') parser.add_argument('--loglevel', default=defval('info'), const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.')
parser.add_argument('--seed', help='Define seed number to generate.', type=int) parser.add_argument('--seed', help='Define seed number to generate.', type=int)
parser.add_argument('--count', help='''\ parser.add_argument('--count', help='''\
@ -348,7 +350,7 @@ def parse_arguments(argv, no_defaults=False):
playerargs = parse_arguments(shlex.split(getattr(ret, f"p{player}")), True) playerargs = parse_arguments(shlex.split(getattr(ret, f"p{player}")), True)
for name in ['logic', 'mode', 'swords', 'goal', 'difficulty', 'item_functionality', for name in ['logic', 'mode', 'swords', 'goal', 'difficulty', 'item_functionality',
'shuffle', 'crystals_ganon', 'crystals_gt', 'openpyramid', 'timer', 'shuffle', 'crystals_ganon', 'crystals_gt', 'open_pyramid', 'timer',
'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory', 'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory',
'local_items', 'retro', 'accessibility', 'hints', 'beemizer', 'local_items', 'retro', 'accessibility', 'hints', 'beemizer',
'shufflebosses', 'enemy_shuffle', 'enemy_health', 'enemy_damage', 'shufflepots', 'shufflebosses', 'enemy_shuffle', 'enemy_health', 'enemy_damage', 'shufflepots',

2
Gui.py
View File

@ -503,7 +503,7 @@ def guiMain(args=None):
guiargs.create_spoiler = bool(createSpoilerVar.get()) guiargs.create_spoiler = bool(createSpoilerVar.get())
guiargs.skip_playthrough = not bool(createSpoilerVar.get()) guiargs.skip_playthrough = not bool(createSpoilerVar.get())
guiargs.suppress_rom = bool(suppressRomVar.get()) guiargs.suppress_rom = bool(suppressRomVar.get())
guiargs.openpyramid = bool(openpyramidVar.get()) guiargs.open_pyramid = bool(openpyramidVar.get())
guiargs.mapshuffle = bool(mapshuffleVar.get()) guiargs.mapshuffle = bool(mapshuffleVar.get())
guiargs.compassshuffle = bool(compassshuffleVar.get()) guiargs.compassshuffle = bool(compassshuffleVar.get())
guiargs.keyshuffle = {"on": True, "universal": "universal", "off": False}[keyshuffleVar.get()] guiargs.keyshuffle = {"on": True, "universal": "universal", "off": False}[keyshuffleVar.get()]

View File

@ -62,7 +62,7 @@ def main(args, seed=None):
world.crystals_needed_for_gt = { world.crystals_needed_for_gt = {
player: world.random.randint(0, 7) if args.crystals_gt[player] == 'random' else int(args.crystals_gt[player]) player: world.random.randint(0, 7) if args.crystals_gt[player] == 'random' else int(args.crystals_gt[player])
for player in range(1, world.players + 1)} for player in range(1, world.players + 1)}
world.open_pyramid = args.openpyramid.copy() world.open_pyramid = args.open_pyramid.copy()
world.boss_shuffle = args.shufflebosses.copy() world.boss_shuffle = args.shufflebosses.copy()
world.enemy_shuffle = args.enemy_shuffle.copy() world.enemy_shuffle = args.enemy_shuffle.copy()
world.enemy_health = args.enemy_health.copy() world.enemy_health = args.enemy_health.copy()

View File

@ -302,7 +302,9 @@ def roll_settings(weights):
'ganon_triforce_hunt': 'ganontriforcehunt', 'ganon_triforce_hunt': 'ganontriforcehunt',
'local_ganon_triforce_hunt': 'localganontriforcehunt' 'local_ganon_triforce_hunt': 'localganontriforcehunt'
}[goal] }[goal]
ret.openpyramid = goal in ['fast_ganon', 'ganon_triforce_hunt', 'local_ganon_triforce_hunt']
ret.open_pyramid = goal in ['fast_ganon', 'ganon_triforce_hunt', 'local_ganon_triforce_hunt'] \
and ret.shuffle in {"vanilla", "dungeonssimple", "dungeonsfull"}
ret.crystals_gt = get_choice('tower_open', weights) ret.crystals_gt = get_choice('tower_open', weights)