Merge branch 'DoorDevUnstable' into DoorDevVolatile
# Conflicts: # Main.py
This commit is contained in:
@@ -32,7 +32,7 @@ def LanmolasDefeatRule(state, player):
|
|||||||
state.has('Fire Rod', player) or
|
state.has('Fire Rod', player) or
|
||||||
state.has('Ice Rod', player) or
|
state.has('Ice Rod', player) or
|
||||||
state.has('Cane of Somaria', player) or
|
state.has('Cane of Somaria', player) or
|
||||||
state.has('Cane of Byrna', player) or
|
(state.has('Cane of Byrna', player) and state.can_use_bombs(player)) or
|
||||||
state.can_shoot_arrows(player))
|
state.can_shoot_arrows(player))
|
||||||
|
|
||||||
def MoldormDefeatRule(state, player):
|
def MoldormDefeatRule(state, player):
|
||||||
@@ -51,7 +51,7 @@ def ArrghusDefeatRule(state, player):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
return ((state.has('Fire Rod', player) and (state.can_shoot_arrows(player) or state.can_extend_magic(player, 12))) or #assuming mostly gitting two puff with one shot
|
return ((state.has('Fire Rod', player) and (state.can_shoot_arrows(player) or state.can_extend_magic(player, 12))) or #assuming mostly gitting two puff with one shot
|
||||||
(state.has('Ice Rod', player) and (state.can_shoot_arrows(player) or state.can_extend_magic(player, 16))))
|
(state.has('Ice Rod', player) and state.can_use_bombs(player) and (state.can_shoot_arrows(player) or state.can_extend_magic(player, 16))))
|
||||||
|
|
||||||
|
|
||||||
def MothulaDefeatRule(state, player):
|
def MothulaDefeatRule(state, player):
|
||||||
@@ -92,7 +92,7 @@ def KholdstareDefeatRule(state, player):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def VitreousDefeatRule(state, player):
|
def VitreousDefeatRule(state, player):
|
||||||
return state.can_shoot_arrows(player) or state.has_blunt_weapon(player)
|
return (state.can_shoot_arrows(player) and state.can_use_bombs(player)) or state.has_blunt_weapon(player)
|
||||||
|
|
||||||
def TrinexxDefeatRule(state, player):
|
def TrinexxDefeatRule(state, player):
|
||||||
if not (state.has('Fire Rod', player) and state.has('Ice Rod', player)):
|
if not (state.has('Fire Rod', player) and state.has('Ice Rod', player)):
|
||||||
|
|||||||
9
Fill.py
9
Fill.py
@@ -781,9 +781,12 @@ def balance_money_progression(world):
|
|||||||
if sphere_costs[player] > 0 and sphere_costs[player] > wallet[player]:
|
if sphere_costs[player] > 0 and sphere_costs[player] > wallet[player]:
|
||||||
insolvent.add(player)
|
insolvent.add(player)
|
||||||
if len([p for p in solvent if len(locked_by_money[p]) > 0]) == 0:
|
if len([p for p in solvent if len(locked_by_money[p]) > 0]) == 0:
|
||||||
target_player = min(insolvent, key=lambda p: sphere_costs[p]-wallet[p])
|
if len(insolvent) > 0:
|
||||||
difference = sphere_costs[target_player]-wallet[target_player]
|
target_player = min(insolvent, key=lambda p: sphere_costs[p]-wallet[p])
|
||||||
logger.debug(f'Money balancing needed: Player {target_player} short {difference}')
|
difference = sphere_costs[target_player]-wallet[target_player]
|
||||||
|
logger.debug(f'Money balancing needed: Player {target_player} short {difference}')
|
||||||
|
else:
|
||||||
|
difference = 0
|
||||||
while difference > 0:
|
while difference > 0:
|
||||||
swap_targets = [x for x in unchecked_locations if x not in sphere_locations and x.item.name.startswith('Rupees') and x.item.player == target_player]
|
swap_targets = [x for x in unchecked_locations if x not in sphere_locations and x.item.name.startswith('Rupees') and x.item.player == target_player]
|
||||||
if len(swap_targets) == 0:
|
if len(swap_targets) == 0:
|
||||||
|
|||||||
@@ -133,6 +133,10 @@ CLI: ```--bombbag```
|
|||||||
|
|
||||||
## Bug Fixes and Notes.
|
## Bug Fixes and Notes.
|
||||||
|
|
||||||
|
* 0.5.1.6
|
||||||
|
* Rules fixes for TT (Boss and Cell) can now have TT Big Key if not otherwise required (boss shuffle + crossed dungeon)
|
||||||
|
* BUg fix for money balancing
|
||||||
|
* Add some bomb assumptions for bosses in bombbag mode
|
||||||
* 0.5.1.5
|
* 0.5.1.5
|
||||||
* Fix for hard pool capacity upgrades missing
|
* Fix for hard pool capacity upgrades missing
|
||||||
* Bonk Fairy (Light) is no longer in logic for ER Standard and is forbidden to be a connector, so rain state isn't exitable
|
* Bonk Fairy (Light) is no longer in logic for ER Standard and is forbidden to be a connector, so rain state isn't exitable
|
||||||
|
|||||||
14
Rules.py
14
Rules.py
@@ -275,9 +275,11 @@ def global_rules(world, player):
|
|||||||
set_rule(world.get_location('Thieves\' Town - Big Chest', player), lambda state: state.has('Hammer', player))
|
set_rule(world.get_location('Thieves\' Town - Big Chest', player), lambda state: state.has('Hammer', player))
|
||||||
for entrance in ['Thieves Basement Block Path', 'Thieves Blocked Entry Path', 'Thieves Conveyor Block Path', 'Thieves Conveyor Bridge Block Path']:
|
for entrance in ['Thieves Basement Block Path', 'Thieves Blocked Entry Path', 'Thieves Conveyor Block Path', 'Thieves Conveyor Bridge Block Path']:
|
||||||
set_rule(world.get_entrance(entrance, player), lambda state: state.can_lift_rocks(player))
|
set_rule(world.get_entrance(entrance, player), lambda state: state.can_lift_rocks(player))
|
||||||
for location in ['Thieves\' Town - Blind\'s Cell', 'Thieves\' Town - Boss']:
|
|
||||||
forbid_item(world.get_location(location, player), 'Big Key (Thieves Town)', player)
|
# I think these rules are unnecessary now - testing needed
|
||||||
forbid_item(world.get_location('Thieves\' Town - Blind\'s Cell', player), 'Big Key (Thieves Town)', player)
|
# for location in ['Thieves\' Town - Blind\'s Cell', 'Thieves\' Town - Boss']:
|
||||||
|
# forbid_item(world.get_location(location, player), 'Big Key (Thieves Town)', player)
|
||||||
|
# forbid_item(world.get_location('Thieves\' Town - Blind\'s Cell', player), 'Big Key (Thieves Town)', player)
|
||||||
for location in ['Suspicious Maiden', 'Thieves\' Town - Blind\'s Cell']:
|
for location in ['Suspicious Maiden', 'Thieves\' Town - Blind\'s Cell']:
|
||||||
set_rule(world.get_location(location, player), lambda state: state.has('Big Key (Thieves Town)', player))
|
set_rule(world.get_location(location, player), lambda state: state.has('Big Key (Thieves Town)', player))
|
||||||
set_rule(world.get_location('Revealing Light', player), lambda state: state.has('Shining Light', player) and state.has('Maiden Rescued', player))
|
set_rule(world.get_location('Revealing Light', player), lambda state: state.has('Shining Light', player) and state.has('Maiden Rescued', player))
|
||||||
@@ -731,7 +733,8 @@ def default_rules(world, player):
|
|||||||
set_rule(world.get_entrance('Broken Bridge (East)', player), lambda state: state.has('Hookshot', player))
|
set_rule(world.get_entrance('Broken Bridge (East)', player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has('Mirror', player)) # can erase block
|
# can erase block - overridden in noglitches
|
||||||
|
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has_Mirror(player))
|
||||||
set_rule(world.get_entrance('Death Mountain (Top)', player), lambda state: state.has('Hammer', player))
|
set_rule(world.get_entrance('Death Mountain (Top)', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player))
|
set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('East Death Mountain (Top)', player), lambda state: state.has('Hammer', player))
|
set_rule(world.get_entrance('East Death Mountain (Top)', player), lambda state: state.has('Hammer', player))
|
||||||
@@ -868,7 +871,8 @@ def inverted_rules(world, player):
|
|||||||
set_rule(world.get_entrance('Broken Bridge (East)', player), lambda state: state.has('Hookshot', player) and state.has_Pearl(player))
|
set_rule(world.get_entrance('Broken Bridge (East)', player), lambda state: state.has('Hookshot', player) and state.has_Pearl(player))
|
||||||
set_rule(world.get_entrance('Dark Death Mountain Teleporter (East Bottom)', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Dark Death Mountain Teleporter (East Bottom)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
|
set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
|
||||||
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has('Mirror', player)) # can erase block
|
# can erase block - overridden in noglitches
|
||||||
|
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has_Mirror(player))
|
||||||
set_rule(world.get_entrance('Death Mountain (Top)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player))
|
set_rule(world.get_entrance('Death Mountain (Top)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player))
|
||||||
set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player) and state.has_Pearl(player)) # bunny cannot use hammer
|
set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player) and state.has_Pearl(player)) # bunny cannot use hammer
|
||||||
set_rule(world.get_entrance('East Death Mountain (Top)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) # bunny can not use hammer
|
set_rule(world.get_entrance('East Death Mountain (Top)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) # bunny can not use hammer
|
||||||
|
|||||||
Reference in New Issue
Block a user