Initial handling of hybrid glitch logic outside of UnderworldGlitchRules
This commit is contained in:
parent
ac31671914
commit
16c6e17a49
|
@ -813,6 +813,9 @@ class CollectionState(object):
|
||||||
rules.append(self.has('Moon Pearl', player))
|
rules.append(self.has('Moon Pearl', player))
|
||||||
return all(rules)
|
return all(rules)
|
||||||
|
|
||||||
|
def can_bomb_clip(self, region: Region, player: int) -> bool:
|
||||||
|
return self.is_not_bunny(region, player) and self.has('Pegasus Boots', player)
|
||||||
|
|
||||||
# Minecraft logic functions
|
# Minecraft logic functions
|
||||||
def has_iron_ingots(self, player: int):
|
def has_iron_ingots(self, player: int):
|
||||||
return self.has('Progressive Tools', player) and self.has('Ingot Crafting', player)
|
return self.has('Progressive Tools', player) and self.has('Ingot Crafting', player)
|
||||||
|
|
|
@ -586,7 +586,7 @@ def roll_alttp_settings(ret: argparse.Namespace, weights, plando_options):
|
||||||
logging.warning("Only NMG, OWG and No Logic supported")
|
logging.warning("Only NMG, OWG and No Logic supported")
|
||||||
glitches_required = 'none'
|
glitches_required = 'none'
|
||||||
ret.logic = {None: 'noglitches', 'none': 'noglitches', 'no_logic': 'nologic', 'overworld_glitches': 'owglitches',
|
ret.logic = {None: 'noglitches', 'none': 'noglitches', 'no_logic': 'nologic', 'overworld_glitches': 'owglitches',
|
||||||
'minor_glitches': 'minorglitches'}[
|
'minor_glitches': 'minorglitches', 'hybrid_major_glitches': 'hybridglitches'}[
|
||||||
glitches_required]
|
glitches_required]
|
||||||
|
|
||||||
ret.dark_room_logic = get_choice("dark_room_logic", weights, "lamp")
|
ret.dark_room_logic = get_choice("dark_room_logic", weights, "lamp")
|
||||||
|
|
|
@ -146,8 +146,10 @@ class Logic(Choice):
|
||||||
option_no_glitches = 0
|
option_no_glitches = 0
|
||||||
option_minor_glitches = 1
|
option_minor_glitches = 1
|
||||||
option_overworld_glitches = 2
|
option_overworld_glitches = 2
|
||||||
|
option_hybrid_major_glitches = 3
|
||||||
option_no_logic = 4
|
option_no_logic = 4
|
||||||
alias_owg = 2
|
alias_owg = 2
|
||||||
|
alias_hmg = 3
|
||||||
|
|
||||||
|
|
||||||
class Objective(Choice):
|
class Objective(Choice):
|
||||||
|
|
|
@ -571,7 +571,7 @@ def get_pool_core(world, player: int):
|
||||||
return world.random.choice([True, False]) if progressive == 'random' else progressive == 'on'
|
return world.random.choice([True, False]) if progressive == 'random' else progressive == 'on'
|
||||||
|
|
||||||
# provide boots to major glitch dependent seeds
|
# provide boots to major glitch dependent seeds
|
||||||
if logic in {'owglitches', 'nologic'} and world.glitch_boots[player] and goal != 'icerodhunt':
|
if logic in {'owglitches', 'hybridglitches', 'nologic'} and world.glitch_boots[player] and goal != 'icerodhunt':
|
||||||
precollected_items.append('Pegasus Boots')
|
precollected_items.append('Pegasus Boots')
|
||||||
pool.remove('Pegasus Boots')
|
pool.remove('Pegasus Boots')
|
||||||
pool.append('Rupees (20)')
|
pool.append('Rupees (20)')
|
||||||
|
|
|
@ -47,12 +47,17 @@ def set_rules(world, player):
|
||||||
|
|
||||||
if world.logic[player] == 'noglitches':
|
if world.logic[player] == 'noglitches':
|
||||||
no_glitches_rules(world, player)
|
no_glitches_rules(world, player)
|
||||||
elif world.logic[player] in ['owglitches', 'nologic']:
|
elif world.logic[player] == 'owglitches':
|
||||||
# Initially setting no_glitches_rules to set the baseline rules for some
|
# Initially setting no_glitches_rules to set the baseline rules for some
|
||||||
# entrances. The overworld_glitches_rules set is primarily additive.
|
# entrances. The overworld_glitches_rules set is primarily additive.
|
||||||
no_glitches_rules(world, player)
|
no_glitches_rules(world, player)
|
||||||
fake_flipper_rules(world, player)
|
fake_flipper_rules(world, player)
|
||||||
overworld_glitches_rules(world, player)
|
overworld_glitches_rules(world, player)
|
||||||
|
elif world.logic[player] in ['hybridglitches', 'nologic']:
|
||||||
|
no_glitches_rules(world, player)
|
||||||
|
fake_flipper_rules(world, player)
|
||||||
|
overworld_glitches_rules(world, player)
|
||||||
|
underworld_glitches_rules(world, player)
|
||||||
elif world.logic[player] == 'minorglitches':
|
elif world.logic[player] == 'minorglitches':
|
||||||
no_glitches_rules(world, player)
|
no_glitches_rules(world, player)
|
||||||
fake_flipper_rules(world, player)
|
fake_flipper_rules(world, player)
|
||||||
|
@ -75,7 +80,8 @@ def set_rules(world, player):
|
||||||
set_inverted_big_bomb_rules(world, player)
|
set_inverted_big_bomb_rules(world, player)
|
||||||
|
|
||||||
# if swamp and dam have not been moved we require mirror for swamp palace
|
# if swamp and dam have not been moved we require mirror for swamp palace
|
||||||
if not world.swamp_patch_required[player]:
|
# however there is mirrorless swamp in hybrid MG, so we don't necessarily want this. HMG handles this requirement itself.
|
||||||
|
if not world.swamp_patch_required[player] and world.logic[player] not in ['hybridglitches', 'nologic']:
|
||||||
add_rule(world.get_entrance('Swamp Palace Moat', player), lambda state: state.has('Magic Mirror', player))
|
add_rule(world.get_entrance('Swamp Palace Moat', player), lambda state: state.has('Magic Mirror', player))
|
||||||
|
|
||||||
# GT Entrance may be required for Turtle Rock for OWG and < 7 required
|
# GT Entrance may be required for Turtle Rock for OWG and < 7 required
|
||||||
|
|
Loading…
Reference in New Issue