More of Retro Mode

Implement correct Retro Mode item pools.
Set up most of the key logic to handle retro mode (still needs shop access)
Set ROM flags appropriately.
TODO: Support Retro Mode with custom item pools, deal with shops in general, deal with Bow paired with arrow requirements, correct Expert item pool for silvers, test older fill algorithms with retro mode, deal with the new Sahas/Bomb Shop reveal map info ROM flags.
This commit is contained in:
AmazingAmpharos
2018-03-15 16:23:02 -05:00
committed by GitHub
parent 28d4ce0997
commit f701aefa28
6 changed files with 107 additions and 75 deletions

View File

@@ -44,7 +44,7 @@ class World(object):
self.aga_randomness = True
self.lock_aga_door_in_escape = False
self.fix_trock_doors = self.shuffle != 'vanilla'
self.save_and_quite_from_boss = False
self.save_and_quit_from_boss = False
self.check_beatable_only = check_beatable_only
self.fix_skullwoods_exit = self.shuffle not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']
self.fix_palaceofdarkness_exit = self.shuffle not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']
@@ -377,6 +377,13 @@ class CollectionState(object):
return item in self.prog_items
return self.item_count(item) >= count
def has_key(self, item, count=1):
if self.world.retro:
return True #FIXME: This needs to check for shop access to a small key shop
if count == 1:
return item in self.prog_items
return self.item_count(item) >= count
def item_count(self, item):
return len([pritem for pritem in self.prog_items if pritem == item])