mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Partial implementation of many V31 features
Partial support for Progressive bow - Still needs to be added to item pool - Silver hint handling remains TBD even for VT Added weapons selection. - Vanilla needs to be implemented - Assured needs to be implemented - Inverted swordless is almost certainly messed up. - Swordless standard mode will likely softlock - Random weapon standard mode is currently treated as uncle assured Deleted removed difficulties - Remaining difficulties still need to be adjusted Added locked property to locations: - This is used for preplaced items etc so that multiworld balancing knows they cannot be moved. Made a few of the difficulty changes from V31, but not all. Added required text changes to handle crystals requirements - More changes will likely me made in future - Currently there is is no way to tell ganon requirement in Inverted mode
This commit is contained in:
16
Rules.py
16
Rules.py
@@ -26,14 +26,16 @@ def set_rules(world, player):
|
||||
open_rules(world, player)
|
||||
elif world.mode == 'standard':
|
||||
standard_rules(world, player)
|
||||
elif world.mode == 'swordless':
|
||||
swordless_rules(world, player)
|
||||
elif world.mode == 'inverted':
|
||||
open_rules(world, player)
|
||||
inverted_rules(world, player)
|
||||
else:
|
||||
raise NotImplementedError('Not implemented yet')
|
||||
|
||||
if world.swords == 'swordless':
|
||||
# FIXME: !!! Does not handle inverted properly
|
||||
swordless_rules(world, player)
|
||||
|
||||
if world.logic == 'noglitches':
|
||||
no_glitches_rules(world, player)
|
||||
elif world.logic == 'minorglitches':
|
||||
@@ -792,8 +794,7 @@ def inverted_rules(world, player):
|
||||
'Ganons Tower - Pre-Moldorm Chest', 'Ganons Tower - Validation Chest']:
|
||||
forbid_item(world.get_location(location, player), 'Big Key (Ganons Tower)', player)
|
||||
|
||||
set_rule(world.get_location('Ganon', player), lambda state: state.has_beam_sword(player) and state.has_fire_source(player) and state.has('Crystal 1', player) and state.has('Crystal 2', player)
|
||||
and state.has('Crystal 3', player) and state.has('Crystal 4', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player) and state.has('Crystal 7', player)
|
||||
set_rule(world.get_location('Ganon', player), lambda state: state.has_beam_sword(player) and state.has_fire_source(player) and state.has_crystals(world.crystals_needed_for_ganon, player)
|
||||
and (state.has('Tempered Sword', player) or state.has('Golden Sword', player) or (state.has('Silver Arrows', player) and state.can_shoot_arrows(player)) or state.has('Lamp', player) or state.can_extend_magic(player, 12))) # need to light torch a sufficient amount of times
|
||||
set_rule(world.get_entrance('Ganon Drop', player), lambda state: state.has_beam_sword(player)) # need to damage ganon to get tiles to drop
|
||||
|
||||
@@ -801,7 +802,7 @@ def inverted_rules(world, player):
|
||||
|
||||
set_trock_key_rules(world, player)
|
||||
|
||||
set_rule(world.get_entrance('Inverted Ganons Tower', player), lambda state: state.has('Crystal 1', player) and state.has('Crystal 2', player) and state.has('Crystal 3', player) and state.has('Crystal 4', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player) and state.has('Crystal 7', player))
|
||||
set_rule(world.get_entrance('Inverted Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt, player))
|
||||
|
||||
def no_glitches_rules(world, player):
|
||||
if world.mode != 'inverted':
|
||||
@@ -887,11 +888,6 @@ def open_rules(world, player):
|
||||
|
||||
def swordless_rules(world, player):
|
||||
|
||||
# for the time being swordless mode just inherits all fixes from open mode.
|
||||
# should there ever be fixes that apply to open mode but not swordless, this
|
||||
# can be revisited.
|
||||
open_rules(world, player)
|
||||
|
||||
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has('Hammer', player) or state.has('Beat Agahnim 1', player)) # barrier gets removed after killing agahnim, relevant for entrance shuffle
|
||||
set_rule(world.get_entrance('Agahnim 1', player), lambda state: (state.has('Hammer', player) or state.has('Fire Rod', player) or state.can_shoot_arrows(player) or state.has('Cane of Somaria', player)) and state.has_key('Small Key (Agahnims Tower)', player, 2))
|
||||
set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has('Hammer', player))
|
||||
|
Reference in New Issue
Block a user