Skip to content

Commit 6b50c91

Browse files
authored
SM64ex: Logic and Generation Fixes (#3135)
1 parent a91105c commit 6b50c91

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

worlds/sm64ex/Regions.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,9 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int):
165165

166166
regDDD = create_region("Dire, Dire Docks", player, world)
167167
create_locs(regDDD, "DDD: Board Bowser's Sub", "DDD: Chests in the Current", "DDD: Through the Jet Stream",
168-
"DDD: The Manta Ray's Reward", "DDD: Collect the Caps...")
169-
ddd_moving_poles = create_subregion(regDDD, "DDD: Moving Poles", "DDD: Pole-Jumping for Red Coins")
170-
regDDD.subregions = [ddd_moving_poles]
168+
"DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins")
171169
if options.enable_coin_stars:
172-
create_locs(ddd_moving_poles, "DDD: 100 Coins")
170+
create_locs(regDDD, "DDD: 100 Coins")
173171

174172
regCotMC = create_region("Cavern of the Metal Cap", player, world)
175173
create_default_locs(regCotMC, locCotMC_table)
@@ -222,9 +220,9 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int):
222220

223221
regTTC = create_region("Tick Tock Clock", player, world)
224222
create_locs(regTTC, "TTC: Stop Time for Red Coins")
225-
ttc_lower = create_subregion(regTTC, "TTC: Lower", "TTC: Roll into the Cage", "TTC: Get a Hand", "TTC: 1Up Block Midway Up")
223+
ttc_lower = create_subregion(regTTC, "TTC: Lower", "TTC: Roll into the Cage", "TTC: Get a Hand")
226224
ttc_upper = create_subregion(ttc_lower, "TTC: Upper", "TTC: Timed Jumps on Moving Bars", "TTC: The Pit and the Pendulums")
227-
ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: Stomp on the Thwomp", "TTC: 1Up Block at the Top")
225+
ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: 1Up Block Midway Up", "TTC: Stomp on the Thwomp", "TTC: 1Up Block at the Top")
228226
regTTC.subregions = [ttc_lower, ttc_upper, ttc_top]
229227
if options.enable_coin_stars:
230228
create_locs(ttc_top, "TTC: 100 Coins")

worlds/sm64ex/Rules.py

+13-12
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,14 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict,
119119
rf.assign_rule("BoB: Mario Wings to the Sky", "CANN & WC | CAPLESS & CANN")
120120
rf.assign_rule("BoB: Behind Chain Chomp's Gate", "GP | MOVELESS")
121121
# Whomp's Fortress
122-
rf.assign_rule("WF: Tower", "{{WF: Chip Off Whomp's Block}}")
122+
rf.assign_rule("WF: Tower", "GP")
123123
rf.assign_rule("WF: Chip Off Whomp's Block", "GP")
124124
rf.assign_rule("WF: Shoot into the Wild Blue", "WK & TJ/SF | CANN")
125125
rf.assign_rule("WF: Fall onto the Caged Island", "CL & {WF: Tower} | MOVELESS & TJ | MOVELESS & LJ | MOVELESS & CANN")
126126
rf.assign_rule("WF: Blast Away the Wall", "CANN | CANNLESS & LG")
127127
# Jolly Roger Bay
128128
rf.assign_rule("JRB: Upper", "TJ/BF/SF/WK | MOVELESS & LG")
129-
rf.assign_rule("JRB: Red Coins on the Ship Afloat", "CL/CANN/TJ/BF/WK")
129+
rf.assign_rule("JRB: Red Coins on the Ship Afloat", "CL/CANN/TJ | MOVELESS & BF/WK")
130130
rf.assign_rule("JRB: Blast to the Stone Pillar", "CANN+CL | CANNLESS & MOVELESS | CANN & MOVELESS")
131131
rf.assign_rule("JRB: Through the Jet Stream", "MC | CAPLESS")
132132
# Cool, Cool Mountain
@@ -147,9 +147,10 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict,
147147
rf.assign_rule("LLL: Upper Volcano", "CL")
148148
# Shifting Sand Land
149149
rf.assign_rule("SSL: Upper Pyramid", "CL & TJ/BF/SF/LG | MOVELESS")
150-
rf.assign_rule("SSL: Free Flying for 8 Red Coins", "TJ/SF/BF & TJ+WC | TJ/SF/BF & CAPLESS | MOVELESS & CAPLESS")
150+
rf.assign_rule("SSL: Stand Tall on the Four Pillars", "TJ+WC+GP | CANN+WC+GP | TJ/SF/BF & CAPLESS | MOVELESS")
151+
rf.assign_rule("SSL: Free Flying for 8 Red Coins", "TJ+WC | CANN+WC | TJ/SF/BF & CAPLESS | MOVELESS & CAPLESS")
151152
# Dire, Dire Docks
152-
rf.assign_rule("DDD: Moving Poles", "CL & {{Bowser in the Fire Sea Key}} | TJ+DV+LG+WK & MOVELESS")
153+
rf.assign_rule("DDD: Pole-Jumping for Red Coins", "CL & {{Bowser in the Fire Sea Key}} | TJ+DV+LG+WK & MOVELESS")
153154
rf.assign_rule("DDD: Through the Jet Stream", "MC | CAPLESS")
154155
rf.assign_rule("DDD: Collect the Caps...", "VC+MC | CAPLESS & VC")
155156
# Snowman's Land
@@ -173,15 +174,14 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict,
173174
rf.assign_rule("THI: Make Wiggler Squirm", "GP | MOVELESS & DV")
174175
# Tick Tock Clock
175176
rf.assign_rule("TTC: Lower", "LG/TJ/SF/BF/WK")
176-
rf.assign_rule("TTC: Upper", "CL | SF+WK")
177-
rf.assign_rule("TTC: Top", "CL | SF+WK")
178-
rf.assign_rule("TTC: Stomp on the Thwomp", "LG & TJ/SF/BF")
177+
rf.assign_rule("TTC: Upper", "CL | MOVELESS & WK")
178+
rf.assign_rule("TTC: Top", "TJ+LG | MOVELESS & WK/TJ")
179179
rf.assign_rule("TTC: Stop Time for Red Coins", "NAR | {TTC: Lower}")
180180
# Rainbow Ride
181181
rf.assign_rule("RR: Maze", "WK | LJ & SF/BF/TJ | MOVELESS & LG/TJ")
182182
rf.assign_rule("RR: Bob-omb Buddy", "WK | MOVELESS & LG")
183-
rf.assign_rule("RR: Swingin' in the Breeze", "LG/TJ/BF/SF")
184-
rf.assign_rule("RR: Tricky Triangles!", "LG/TJ/BF/SF")
183+
rf.assign_rule("RR: Swingin' in the Breeze", "LG/TJ/BF/SF | MOVELESS")
184+
rf.assign_rule("RR: Tricky Triangles!", "LG/TJ/BF/SF | MOVELESS")
185185
rf.assign_rule("RR: Cruiser", "WK/SF/BF/LG/TJ")
186186
rf.assign_rule("RR: House", "TJ/SF/BF/LG")
187187
rf.assign_rule("RR: Somewhere Over the Rainbow", "CANN")
@@ -206,8 +206,8 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict,
206206
rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}")
207207
rf.assign_rule("HMC: 100 Coins", "GP")
208208
rf.assign_rule("SSL: 100 Coins", "{SSL: Upper Pyramid} | GP")
209-
rf.assign_rule("DDD: 100 Coins", "GP")
210-
rf.assign_rule("SL: 100 Coins", "VC | MOVELESS")
209+
rf.assign_rule("DDD: 100 Coins", "GP & {{DDD: Pole-Jumping for Red Coins}}")
210+
rf.assign_rule("SL: 100 Coins", "VC | CAPLESS")
211211
rf.assign_rule("WDW: 100 Coins", "GP | {WDW: Downtown}")
212212
rf.assign_rule("TTC: 100 Coins", "GP")
213213
rf.assign_rule("THI: 100 Coins", "GP")
@@ -246,6 +246,7 @@ class RuleFactory:
246246

247247
token_table = {
248248
"TJ": "Triple Jump",
249+
"DJ": "Triple Jump",
249250
"LJ": "Long Jump",
250251
"BF": "Backflip",
251252
"SF": "Side Flip",
@@ -270,7 +271,7 @@ def __init__(self, world, options: SM64Options, player: int, move_rando_bitvec:
270271
self.area_randomizer = options.area_rando > 0
271272
self.capless = not options.strict_cap_requirements
272273
self.cannonless = not options.strict_cannon_requirements
273-
self.moveless = not options.strict_move_requirements or not move_rando_bitvec > 0
274+
self.moveless = not options.strict_move_requirements
274275

275276
def assign_rule(self, target_name: str, rule_expr: str):
276277
target = self.world.get_location(target_name, self.player) if target_name in location_table else self.world.get_entrance(target_name, self.player)

0 commit comments

Comments
 (0)