Move Progressive Items to AutoWorld

This commit is contained in:
Fabian Dill
2021-07-04 15:47:11 +02:00
parent c669bc3e7f
commit 2530d28c9d
3 changed files with 68 additions and 98 deletions

View File

@@ -1,10 +1,64 @@
from typing import Optional
from BaseClasses import Location, Item
from BaseClasses import Location, Item, CollectionState
from ..AutoWorld import World
class ALTTPWorld(World):
game: str = "A Link to the Past"
def collect(self, state: CollectionState, item: Item) -> bool:
if item.name.startswith('Progressive '):
if 'Sword' in item.name:
if state.has('Golden Sword', item.player):
pass
elif state.has('Tempered Sword', item.player) and self.world.difficulty_requirements[
item.player].progressive_sword_limit >= 4:
state.prog_items['Golden Sword', item.player] += 1
return True
elif state.has('Master Sword', item.player) and self.world.difficulty_requirements[
item.player].progressive_sword_limit >= 3:
state.prog_items['Tempered Sword', item.player] += 1
return True
elif state.has('Fighter Sword', item.player) and self.world.difficulty_requirements[item.player].progressive_sword_limit >= 2:
state.prog_items['Master Sword', item.player] += 1
return True
elif self.world.difficulty_requirements[item.player].progressive_sword_limit >= 1:
state.prog_items['Fighter Sword', item.player] += 1
return True
elif 'Glove' in item.name:
if state.has('Titans Mitts', item.player):
pass
elif state.has('Power Glove', item.player):
state.prog_items['Titans Mitts', item.player] += 1
return True
else:
state.prog_items['Power Glove', item.player] += 1
return True
elif 'Shield' in item.name:
if state.has('Mirror Shield', item.player):
pass
elif state.has('Red Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 3:
state.prog_items['Mirror Shield', item.player] += 1
return True
elif state.has('Blue Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 2:
state.prog_items['Red Shield', item.player] += 1
return True
elif self.world.difficulty_requirements[item.player].progressive_shield_limit >= 1:
state.prog_items['Blue Shield', item.player] += 1
return True
elif 'Bow' in item.name:
if state.has('Silver', item.player):
pass
elif state.has('Bow', item.player) and self.world.difficulty_requirements[item.player].progressive_bow_limit >= 2:
state.prog_items['Silver Bow', item.player] += 1
return True
elif self.world.difficulty_requirements[item.player].progressive_bow_limit >= 1:
state.prog_items['Bow', item.player] += 1
return True
elif item.advancement or item.smallkey or item.bigkey:
state.prog_items[item.name, item.player] += 1
return True
return False
class ALttPLocation(Location):