Minor fixes and clarifications for Bonta's Multiworld code

This commit is contained in:
Kevin Cathcart 2019-07-09 22:18:24 -04:00
parent 1a62b1da28
commit 0b9e144f8e
2 changed files with 8 additions and 9 deletions

View File

@ -244,12 +244,11 @@ class World(object):
return False
def has_beaten_game(self, state):
if all([state.has('Triforce', player) for player in range(1, self.players + 1)]):
return True
if self.goal in ['triforcehunt'] and all([((state.item_count('Triforce Piece', player) + state.item_count('Power Star', player)) > self.treasure_hunt_count) for player in range(1, self.players + 1)]):
return True
return False
def has_beaten_game(self, state, player=None):
if player:
return state.has('Triforce', player) or (self.goal in ['triforcehunt'] and (state.item_count('Triforce Piece', player) + state.item_count('Power Star', player) > self.treasure_hunt_count))
else:
return all((self.has_beaten_game(state, p) for p in range(1, self.players + 1)))
def can_beat_game(self, starting_state=None):
if starting_state:
@ -410,7 +409,7 @@ class CollectionState(object):
return self.bottle_count(player) > 0
def bottle_count(self, player):
return len([pritem for pritem in self.prog_items if pritem[0].startswith('Bottle') and pritem[1] == player])
return len([item for (item, itemplayer) in self.prog_items if item.startswith('Bottle') and itemplayer == player])
def has_hearts(self, player, count):
# Warning: This only considers items that are marked as advancement items
@ -641,7 +640,7 @@ class Region(object):
is_dungeon_item = item.key or item.map or item.compass
sewer_hack = self.world.mode == 'standard' and item.name == 'Small Key (Escape)'
if sewer_hack or (is_dungeon_item and not self.world.keysanity):
return self.dungeon and self.dungeon.is_dungeon_item(item) and (item.player == self.player or self.world.keysanity)
return self.dungeon and self.dungeon.is_dungeon_item(item) and item.player == self.player
return True

View File

@ -28,7 +28,7 @@ def link_entrances(world, player):
for exitname, regionname in default_connections:
connect_simple(world, exitname, regionname, player)
simple_shuffle_dungeons(world)
simple_shuffle_dungeons(world, player)
elif world.shuffle == 'dungeonsfull':
for exitname, regionname in default_connections:
connect_simple(world, exitname, regionname, player)