Skip to content

Commit d061a0b

Browse files
josephwhiteExempt-Medic
authored andcommitted
Super Mario 64: Rework logic for 100 Coins (ArchipelagoMW#4131)
* sm64ex: Rework logic for 100 Coins * sm64ex: 100 Coins Vanilla Option * sm64ex: Avoiding raw int comparisons for 100 coin option * sm64ex: Change 100 coin option from toggle to choice * sm64ex: use snake_case for 100 coin option * just use "vanilla" for option comparison (exempt-medic feedback) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * sm64ex: remove vanilla 100 coins from item pool to remove overfilling stars * yeah Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Remove range condition (35 is the min for total stars) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
1 parent 5570143 commit d061a0b

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

worlds/sm64ex/Options.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,21 @@
33
from Options import DefaultOnToggle, Range, Toggle, DeathLink, Choice, PerGameCommonOptions, OptionSet, OptionGroup
44
from .Items import action_item_table
55

6-
class EnableCoinStars(DefaultOnToggle):
7-
"""Disable to Ignore 100 Coin Stars. You can still collect them, but they don't do anything.
8-
Removes 15 locations from the pool."""
6+
class EnableCoinStars(Choice):
7+
"""
8+
Determine logic for 100 Coin Stars.
9+
10+
Off - Removed from pool. You can still collect them, but they don't do anything.
11+
Optimal for ignoring 100 Coin Stars entirely. Removes 15 locations from the pool.
12+
13+
On - Kept in pool, potentially randomized.
14+
15+
Vanilla - Kept in pool, but NOT randomized.
16+
"""
917
display_name = "Enable 100 Coin Stars"
18+
option_off = 0
19+
option_on = 1
20+
option_vanilla = 2
1021

1122

1223
class StrictCapRequirements(DefaultOnToggle):

worlds/sm64ex/__init__.py

+22-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,11 @@ def create_items(self):
104104
# 1Up Mushrooms
105105
self.multiworld.itempool += [self.create_item("1Up Mushroom") for i in range(0,self.filler_count)]
106106
# Power Stars
107-
self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,self.number_of_stars)]
107+
star_range = self.number_of_stars
108+
# Vanilla 100 Coin stars have to removed from the pool if other max star increasing options are active.
109+
if self.options.enable_coin_stars == "vanilla":
110+
star_range -= 15
111+
self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,star_range)]
108112
# Keys
109113
if (not self.options.progressive_keys):
110114
key1 = self.create_item("Basement Key")
@@ -166,6 +170,23 @@ def generate_basic(self):
166170
self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
167171
self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
168172

173+
if (self.options.enable_coin_stars == "vanilla"):
174+
self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
175+
self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
176+
self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
177+
self.multiworld.get_location("CCM: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
178+
self.multiworld.get_location("BBH: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
179+
self.multiworld.get_location("HMC: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
180+
self.multiworld.get_location("LLL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
181+
self.multiworld.get_location("SSL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
182+
self.multiworld.get_location("DDD: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
183+
self.multiworld.get_location("SL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
184+
self.multiworld.get_location("WDW: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
185+
self.multiworld.get_location("TTM: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
186+
self.multiworld.get_location("THI: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
187+
self.multiworld.get_location("TTC: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
188+
self.multiworld.get_location("RR: 100 Coins", self.player).place_locked_item(self.create_item("Power Star"))
189+
169190
def get_filler_item_name(self) -> str:
170191
return "1Up Mushroom"
171192

0 commit comments

Comments
 (0)