sm64ex: Add Option to limit stars, replace with junk

This commit is contained in:
N00byKing 2022-01-30 19:12:52 +01:00 committed by Fabian Dill
parent e85baa8068
commit 0507d6923e
3 changed files with 18 additions and 8 deletions

View File

@ -9,5 +9,6 @@ item_table = {
"Second Floor Key": 3626179,
"Wing Cap": 3626180,
"Metal Cap": 3626181,
"Vanish Cap": 3626182
"Vanish Cap": 3626182,
"1Up Mushroom": 3626183
}

View File

@ -15,8 +15,15 @@ class StarsToFinish(Range):
range_end = 100
default = 70
class ExtraStars(Range):
"""How many stars exist beyond those set for StarsToFinish"""
range_start = 0
range_end = 50
default = 50
sm64_options: typing.Dict[str,type(Option)] = {
"EnableCoinStars": EnableCoinStars,
"StrictCapRequirements": StrictCapRequirements,
"StarsToFinish": StarsToFinish
"StarsToFinish": StarsToFinish,
"ExtraStars": ExtraStars
}

View File

@ -21,7 +21,7 @@ class SM64World(World):
item_name_to_id = item_table
location_name_to_id = location_table
data_version = 3
data_version = 4
forced_auto_forfeit = False
options = sm64_options
@ -35,15 +35,17 @@ class SM64World(World):
def create_item(self, name: str) -> Item:
item_id = item_table[name]
item = SM64Item(name, True, item_id, self.player)
item = SM64Item(name, name != "1Up Mushroom", item_id, self.player)
return item
def generate_basic(self):
staritem = self.create_item("Power Star")
if (self.world.EnableCoinStars[self.player].value):
self.world.itempool += [staritem for i in range(0,120)]
else:
self.world.itempool += [staritem for i in range(0,105)]
starcount = self.world.StarsToFinish[self.player].value + self.world.ExtraStars[self.player].value
if (self.world.EnableCoinStars[self.player].value and (starcount-15) >= self.world.StarsToFinish[self.player].value):
starcount -= 15
self.world.itempool += [staritem for i in range(0,starcount)]
mushroomitem = self.create_item("1Up Mushroom")
self.world.itempool += [mushroomitem for i in range(starcount,120)]
key1 = self.create_item("Basement Key")
key2 = self.create_item("Second Floor Key")