diff --git a/worlds/sm64ex/Items.py b/worlds/sm64ex/Items.py index 46f52d6d..1f0c7713 100644 --- a/worlds/sm64ex/Items.py +++ b/worlds/sm64ex/Items.py @@ -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 } \ No newline at end of file diff --git a/worlds/sm64ex/Options.py b/worlds/sm64ex/Options.py index d54f57f3..bfef68b2 100644 --- a/worlds/sm64ex/Options.py +++ b/worlds/sm64ex/Options.py @@ -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 } \ No newline at end of file diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 2f3b769d..cb314e74 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -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")