From 33692bd61cc904c7662ca885c25aed9ff0769699 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Nov 2024 20:25:01 -0400 Subject: [PATCH 1/9] sm64ex: Rework logic for 100 Coins --- worlds/sm64ex/Regions.py | 75 +++++++++++++++------------------------ worlds/sm64ex/Rules.py | 23 ++++++------ worlds/sm64ex/__init__.py | 19 ++++++++-- 3 files changed, 56 insertions(+), 61 deletions(-) diff --git a/worlds/sm64ex/Regions.py b/worlds/sm64ex/Regions.py index 52126bcf9ff7..af9cea06c96d 100644 --- a/worlds/sm64ex/Regions.py +++ b/worlds/sm64ex/Regions.py @@ -86,41 +86,34 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regBoB = create_region("Bob-omb Battlefield", player, world) create_locs(regBoB, "BoB: Big Bob-Omb on the Summit", "BoB: Footrace with Koopa The Quick", - "BoB: Mario Wings to the Sky", "BoB: Behind Chain Chomp's Gate", "BoB: Bob-omb Buddy") + "BoB: Mario Wings to the Sky", "BoB: Behind Chain Chomp's Gate", "BoB: 100 Coins", + "BoB: Bob-omb Buddy") bob_island = create_subregion(regBoB, "BoB: Island", "BoB: Shoot to the Island in the Sky", "BoB: Find the 8 Red Coins") regBoB.subregions = [bob_island] - if options.enable_coin_stars: - create_locs(regBoB, "BoB: 100 Coins") regWhomp = create_region("Whomp's Fortress", player, world) create_locs(regWhomp, "WF: Chip Off Whomp's Block", "WF: Shoot into the Wild Blue", "WF: Red Coins on the Floating Isle", - "WF: Fall onto the Caged Island", "WF: Blast Away the Wall") + "WF: Fall onto the Caged Island", "WF: Blast Away the Wall", "WF: 100 Coins") wf_tower = create_subregion(regWhomp, "WF: Tower", "WF: To the Top of the Fortress", "WF: Bob-omb Buddy") regWhomp.subregions = [wf_tower] - if options.enable_coin_stars: - create_locs(regWhomp, "WF: 100 Coins") regJRB = create_region("Jolly Roger Bay", player, world) create_locs(regJRB, "JRB: Plunder in the Sunken Ship", "JRB: Can the Eel Come Out to Play?", "JRB: Treasure of the Ocean Cave", "JRB: Blast to the Stone Pillar", "JRB: Through the Jet Stream", "JRB: Bob-omb Buddy") - jrb_upper = create_subregion(regJRB, 'JRB: Upper', "JRB: Red Coins on the Ship Afloat") + jrb_upper = create_subregion(regJRB, 'JRB: Upper', "JRB: Red Coins on the Ship Afloat", "JRB: 100 Coins") regJRB.subregions = [jrb_upper] - if options.enable_coin_stars: - create_locs(jrb_upper, "JRB: 100 Coins") regCCM = create_region("Cool, Cool Mountain", player, world) create_default_locs(regCCM, locCCM_table) - if options.enable_coin_stars: - create_locs(regCCM, "CCM: 100 Coins") + create_locs(regCCM, "CCM: 100 Coins") regBBH = create_region("Big Boo's Haunt", player, world) create_locs(regBBH, "BBH: Go on a Ghost Hunt", "BBH: Ride Big Boo's Merry-Go-Round", - "BBH: Secret of the Haunted Books", "BBH: Seek the 8 Red Coins") + "BBH: Secret of the Haunted Books", "BBH: Seek the 8 Red Coins", + "BBH: 100 Coins") bbh_third_floor = create_subregion(regBBH, "BBH: Third Floor", "BBH: Eye to Eye in the Secret Room") bbh_roof = create_subregion(bbh_third_floor, "BBH: Roof", "BBH: Big Boo's Balcony", "BBH: 1Up Block Top of Mansion") regBBH.subregions = [bbh_third_floor, bbh_roof] - if options.enable_coin_stars: - create_locs(regBBH, "BBH: 100 Coins") regPSS = create_region("The Princess's Secret Slide", player, world) create_default_locs(regPSS, locPSS_table) @@ -139,35 +132,30 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regHMC = create_region("Hazy Maze Cave", player, world) create_locs(regHMC, "HMC: Swimming Beast in the Cavern", "HMC: Metal-Head Mario Can Move!", "HMC: Watch for Rolling Rocks", "HMC: Navigating the Toxic Maze","HMC: 1Up Block Past Rolling Rocks") - hmc_red_coin_area = create_subregion(regHMC, "HMC: Red Coin Area", "HMC: Elevate for 8 Red Coins") + hmc_red_coin_area = create_subregion(regHMC, "HMC: Red Coin Area", "HMC: Elevate for 8 Red Coins", "HMC: 100 Coins") hmc_pit_islands = create_subregion(regHMC, "HMC: Pit Islands", "HMC: A-Maze-Ing Emergency Exit", "HMC: 1Up Block above Pit") regHMC.subregions = [hmc_red_coin_area, hmc_pit_islands] - if options.enable_coin_stars: - create_locs(hmc_red_coin_area, "HMC: 100 Coins") regLLL = create_region("Lethal Lava Land", player, world) create_locs(regLLL, "LLL: Boil the Big Bully", "LLL: Bully the Bullies", - "LLL: 8-Coin Puzzle with 15 Pieces", "LLL: Red-Hot Log Rolling") + "LLL: 8-Coin Puzzle with 15 Pieces", "LLL: Red-Hot Log Rolling", + "LLL: 100 Coins") lll_upper_volcano = create_subregion(regLLL, "LLL: Upper Volcano", "LLL: Hot-Foot-It into the Volcano", "LLL: Elevator Tour in the Volcano") regLLL.subregions = [lll_upper_volcano] - if options.enable_coin_stars: - create_locs(regLLL, "LLL: 100 Coins") regSSL = create_region("Shifting Sand Land", player, world) create_locs(regSSL, "SSL: In the Talons of the Big Bird", "SSL: Shining Atop the Pyramid", - "SSL: Free Flying for 8 Red Coins", "SSL: Bob-omb Buddy", + "SSL: Free Flying for 8 Red Coins", "SSL: 100 Coins", + "SSL: Bob-omb Buddy", "SSL: 1Up Block Outside Pyramid", "SSL: 1Up Block Pyramid Left Path", "SSL: 1Up Block Pyramid Back") - ssl_upper_pyramid = create_subregion(regSSL, "SSL: Upper Pyramid", "SSL: Inside the Ancient Pyramid", - "SSL: Stand Tall on the Four Pillars", "SSL: Pyramid Puzzle") + ssl_upper_pyramid = create_subregion(regSSL, "SSL: Upper Pyramid", "SSL: Inside the Ancient Pyramid", "SSL: Stand Tall on the Four Pillars", + "SSL: Pyramid Puzzle") regSSL.subregions = [ssl_upper_pyramid] - if options.enable_coin_stars: - create_locs(regSSL, "SSL: 100 Coins") regDDD = create_region("Dire, Dire Docks", player, world) create_locs(regDDD, "DDD: Board Bowser's Sub", "DDD: Chests in the Current", "DDD: Through the Jet Stream", - "DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins") - if options.enable_coin_stars: - create_locs(regDDD, "DDD: 100 Coins") + "DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins", + "DDD: 100 Coins") regCotMC = create_region("Cavern of the Metal Cap", player, world) create_default_locs(regCotMC, locCotMC_table) @@ -183,26 +171,24 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regSL = create_region("Snowman's Land", player, world) create_default_locs(regSL, locSL_table) - if options.enable_coin_stars: - create_locs(regSL, "SL: 100 Coins") + create_locs(regSL, "SL: 100 Coins") regWDW = create_region("Wet-Dry World", player, world) create_locs(regWDW, "WDW: Express Elevator--Hurry Up!") wdw_top = create_subregion(regWDW, "WDW: Top", "WDW: Shocking Arrow Lifts!", "WDW: Top o' the Town", - "WDW: Secrets in the Shallows & Sky", "WDW: Bob-omb Buddy") - wdw_downtown = create_subregion(regWDW, "WDW: Downtown", "WDW: Go to Town for Red Coins", "WDW: Quick Race Through Downtown!", "WDW: 1Up Block in Downtown") + "WDW: Secrets in the Shallows & Sky", "WDW: 100 Coins", + "WDW: Bob-omb Buddy") + wdw_downtown = create_subregion(regWDW, "WDW: Downtown", "WDW: Go to Town for Red Coins", "WDW: Quick Race Through Downtown!", + "WDW: 1Up Block in Downtown") regWDW.subregions = [wdw_top, wdw_downtown] - if options.enable_coin_stars: - create_locs(wdw_top, "WDW: 100 Coins") regTTM = create_region("Tall, Tall Mountain", player, world) ttm_middle = create_subregion(regTTM, "TTM: Middle", "TTM: Scary 'Shrooms, Red Coins", "TTM: Blast to the Lonely Mushroom", "TTM: Bob-omb Buddy", "TTM: 1Up Block on Red Mushroom") ttm_top = create_subregion(ttm_middle, "TTM: Top", "TTM: Scale the Mountain", "TTM: Mystery of the Monkey Cage", - "TTM: Mysterious Mountainside", "TTM: Breathtaking View from Bridge") + "TTM: Mysterious Mountainside", "TTM: Breathtaking View from Bridge", + "TTM: 100 Coins") regTTM.subregions = [ttm_middle, ttm_top] - if options.enable_coin_stars: - create_locs(ttm_top, "TTM: 100 Coins") create_region("Tiny-Huge Island (Huge)", player, world) create_region("Tiny-Huge Island (Tiny)", player, world) @@ -211,10 +197,8 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): thi_pipes = create_subregion(regTHI, "THI: Pipes", "THI: The Tip Top of the Huge Island", "THI: Pluck the Piranha Flower", "THI: Rematch with Koopa the Quick", "THI: Five Itty Bitty Secrets", "THI: Wiggler's Red Coins", "THI: Bob-omb Buddy", "THI: 1Up Block THI Large near Start", "THI: 1Up Block Windy Area") - thi_large_top = create_subregion(thi_pipes, "THI: Large Top", "THI: Make Wiggler Squirm") + thi_large_top = create_subregion(thi_pipes, "THI: Large Top", "THI: Make Wiggler Squirm", "THI: 100 Coins") regTHI.subregions = [thi_pipes, thi_large_top] - if options.enable_coin_stars: - create_locs(thi_large_top, "THI: 100 Coins") regFloor3 = create_region("Third Floor", player, world) @@ -222,20 +206,17 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): create_locs(regTTC, "TTC: Stop Time for Red Coins") ttc_lower = create_subregion(regTTC, "TTC: Lower", "TTC: Roll into the Cage", "TTC: Get a Hand") ttc_upper = create_subregion(ttc_lower, "TTC: Upper", "TTC: Timed Jumps on Moving Bars", "TTC: The Pit and the Pendulums") - ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: 1Up Block Midway Up", "TTC: Stomp on the Thwomp", "TTC: 1Up Block at the Top") + ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: Stomp on the Thwomp", "TTC: 100 Coins", + "TTC: 1Up Block Midway Up", "TTC: 1Up Block at the Top") regTTC.subregions = [ttc_lower, ttc_upper, ttc_top] - if options.enable_coin_stars: - create_locs(ttc_top, "TTC: 100 Coins") regRR = create_region("Rainbow Ride", player, world) create_locs(regRR, "RR: Swingin' in the Breeze", "RR: Tricky Triangles!", - "RR: 1Up Block Top of Red Coin Maze", "RR: 1Up Block Under Fly Guy", "RR: Bob-omb Buddy") - rr_maze = create_subregion(regRR, "RR: Maze", "RR: Coins Amassed in a Maze") + "RR: Bob-omb Buddy", "RR: 1Up Block Top of Red Coin Maze", "RR: 1Up Block Under Fly Guy") + rr_maze = create_subregion(regRR, "RR: Maze", "RR: Coins Amassed in a Maze", "RR: 100 Coins") rr_cruiser = create_subregion(regRR, "RR: Cruiser", "RR: Cruiser Crossing the Rainbow", "RR: Somewhere Over the Rainbow") rr_house = create_subregion(regRR, "RR: House", "RR: The Big House in the Sky", "RR: 1Up Block On House in the Sky") regRR.subregions = [rr_maze, rr_cruiser, rr_house] - if options.enable_coin_stars: - create_locs(rr_maze, "RR: 100 Coins") regWMotR = create_region("Wing Mario over the Rainbow", player, world) create_default_locs(regWMotR, locWMotR_table) diff --git a/worlds/sm64ex/Rules.py b/worlds/sm64ex/Rules.py index 1535f9ca1fde..67d03df619f7 100644 --- a/worlds/sm64ex/Rules.py +++ b/worlds/sm64ex/Rules.py @@ -203,18 +203,17 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict, # Bowser in the Sky rf.assign_rule("BitS: Top", "CL+TJ | CL+SF+LG | MOVELESS & TJ+WK+LG") # 100 Coin Stars - if options.enable_coin_stars: - rf.assign_rule("BoB: 100 Coins", "CANN & WC | CANNLESS & WC & TJ") - rf.assign_rule("WF: 100 Coins", "GP | MOVELESS") - rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}") - rf.assign_rule("HMC: 100 Coins", "GP") - rf.assign_rule("SSL: 100 Coins", "{SSL: Upper Pyramid} | GP") - rf.assign_rule("DDD: 100 Coins", "GP & {{DDD: Pole-Jumping for Red Coins}}") - rf.assign_rule("SL: 100 Coins", "VC | CAPLESS") - rf.assign_rule("WDW: 100 Coins", "GP | {WDW: Downtown}") - rf.assign_rule("TTC: 100 Coins", "GP") - rf.assign_rule("THI: 100 Coins", "GP") - rf.assign_rule("RR: 100 Coins", "GP & WK") + rf.assign_rule("BoB: 100 Coins", "CANN & WC | CANNLESS & WC & TJ") + rf.assign_rule("WF: 100 Coins", "GP | MOVELESS") + rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}") + rf.assign_rule("HMC: 100 Coins", "GP") + rf.assign_rule("SSL: 100 Coins", "{SSL: Upper Pyramid} | GP") + rf.assign_rule("DDD: 100 Coins", "GP & {{DDD: Pole-Jumping for Red Coins}}") + rf.assign_rule("SL: 100 Coins", "VC | CAPLESS") + rf.assign_rule("WDW: 100 Coins", "GP | {WDW: Downtown}") + rf.assign_rule("TTC: 100 Coins", "GP") + rf.assign_rule("THI: 100 Coins", "GP") + rf.assign_rule("RR: 100 Coins", "GP & WK") # Castle Stars add_rule(world.get_location("Toad (Basement)", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, 12)) add_rule(world.get_location("Toad (Second Floor)", player), lambda state: state.can_reach("Second Floor", 'Region', player) and state.has("Power Star", player, 25)) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 833ae56ca302..4588606333ad 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -48,8 +48,6 @@ class SM64World(World): def generate_early(self): max_stars = 120 - if (not self.options.enable_coin_stars): - max_stars -= 15 self.move_rando_bitvec = 0 if self.options.enable_move_rando: for action in self.options.move_rando_actions.value: @@ -164,6 +162,23 @@ def generate_basic(self): self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) + if (not self.options.enable_coin_stars): + self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("CCM: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("BBH: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("HMC: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("LLL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("SSL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("DDD: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("SL: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("WDW: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("TTM: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("THI: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("TTC: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + self.multiworld.get_location("RR: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) + def get_filler_item_name(self) -> str: return "1Up Mushroom" From 3bd07d303c102bddef1931b323cea1018b6ff2e3 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 3 Nov 2024 17:19:08 -0500 Subject: [PATCH 2/9] sm64ex: 100 Coins Vanilla Option --- worlds/sm64ex/Options.py | 15 ++++++-- worlds/sm64ex/Regions.py | 75 ++++++++++++++++++++++++--------------- worlds/sm64ex/Rules.py | 23 ++++++------ worlds/sm64ex/__init__.py | 4 ++- 4 files changed, 75 insertions(+), 42 deletions(-) diff --git a/worlds/sm64ex/Options.py b/worlds/sm64ex/Options.py index 60ec4bbe13c2..a094890d8294 100644 --- a/worlds/sm64ex/Options.py +++ b/worlds/sm64ex/Options.py @@ -4,9 +4,20 @@ from .Items import action_item_table class EnableCoinStars(DefaultOnToggle): - """Disable to Ignore 100 Coin Stars. You can still collect them, but they don't do anything. - Removes 15 locations from the pool.""" + """ + Determine logic for 100 Coin Stars. + + Off - Removed from pool. You can still collect them, but they don't do anything. + Optimal for ignoring 100 Coin Stars entirely. Removes 15 locations from the pool. + + On - Kept in pool, potentially randomized. + + Vanilla - Kept in pool, but NOT randomized. + """ display_name = "Enable 100 Coin Stars" + option_Off = 0 + option_On = 1 + option_Vanilla = 2 class StrictCapRequirements(DefaultOnToggle): diff --git a/worlds/sm64ex/Regions.py b/worlds/sm64ex/Regions.py index af9cea06c96d..dce44124e124 100644 --- a/worlds/sm64ex/Regions.py +++ b/worlds/sm64ex/Regions.py @@ -86,34 +86,41 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regBoB = create_region("Bob-omb Battlefield", player, world) create_locs(regBoB, "BoB: Big Bob-Omb on the Summit", "BoB: Footrace with Koopa The Quick", - "BoB: Mario Wings to the Sky", "BoB: Behind Chain Chomp's Gate", "BoB: 100 Coins", - "BoB: Bob-omb Buddy") + "BoB: Mario Wings to the Sky", "BoB: Behind Chain Chomp's Gate", "BoB: Bob-omb Buddy") bob_island = create_subregion(regBoB, "BoB: Island", "BoB: Shoot to the Island in the Sky", "BoB: Find the 8 Red Coins") regBoB.subregions = [bob_island] + if options.enable_coin_stars != 0: + create_locs(regBoB, "BoB: 100 Coins") regWhomp = create_region("Whomp's Fortress", player, world) create_locs(regWhomp, "WF: Chip Off Whomp's Block", "WF: Shoot into the Wild Blue", "WF: Red Coins on the Floating Isle", - "WF: Fall onto the Caged Island", "WF: Blast Away the Wall", "WF: 100 Coins") + "WF: Fall onto the Caged Island", "WF: Blast Away the Wall") wf_tower = create_subregion(regWhomp, "WF: Tower", "WF: To the Top of the Fortress", "WF: Bob-omb Buddy") regWhomp.subregions = [wf_tower] + if options.enable_coin_stars != 0: + create_locs(regWhomp, "WF: 100 Coins") regJRB = create_region("Jolly Roger Bay", player, world) create_locs(regJRB, "JRB: Plunder in the Sunken Ship", "JRB: Can the Eel Come Out to Play?", "JRB: Treasure of the Ocean Cave", "JRB: Blast to the Stone Pillar", "JRB: Through the Jet Stream", "JRB: Bob-omb Buddy") - jrb_upper = create_subregion(regJRB, 'JRB: Upper', "JRB: Red Coins on the Ship Afloat", "JRB: 100 Coins") + jrb_upper = create_subregion(regJRB, 'JRB: Upper', "JRB: Red Coins on the Ship Afloat") regJRB.subregions = [jrb_upper] + if options.enable_coin_stars != 0: + create_locs(jrb_upper, "JRB: 100 Coins") regCCM = create_region("Cool, Cool Mountain", player, world) create_default_locs(regCCM, locCCM_table) - create_locs(regCCM, "CCM: 100 Coins") + if options.enable_coin_stars != 0: + create_locs(regCCM, "CCM: 100 Coins") regBBH = create_region("Big Boo's Haunt", player, world) create_locs(regBBH, "BBH: Go on a Ghost Hunt", "BBH: Ride Big Boo's Merry-Go-Round", - "BBH: Secret of the Haunted Books", "BBH: Seek the 8 Red Coins", - "BBH: 100 Coins") + "BBH: Secret of the Haunted Books", "BBH: Seek the 8 Red Coins") bbh_third_floor = create_subregion(regBBH, "BBH: Third Floor", "BBH: Eye to Eye in the Secret Room") bbh_roof = create_subregion(bbh_third_floor, "BBH: Roof", "BBH: Big Boo's Balcony", "BBH: 1Up Block Top of Mansion") regBBH.subregions = [bbh_third_floor, bbh_roof] + if options.enable_coin_stars != 0: + create_locs(regBBH, "BBH: 100 Coins") regPSS = create_region("The Princess's Secret Slide", player, world) create_default_locs(regPSS, locPSS_table) @@ -132,30 +139,35 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regHMC = create_region("Hazy Maze Cave", player, world) create_locs(regHMC, "HMC: Swimming Beast in the Cavern", "HMC: Metal-Head Mario Can Move!", "HMC: Watch for Rolling Rocks", "HMC: Navigating the Toxic Maze","HMC: 1Up Block Past Rolling Rocks") - hmc_red_coin_area = create_subregion(regHMC, "HMC: Red Coin Area", "HMC: Elevate for 8 Red Coins", "HMC: 100 Coins") + hmc_red_coin_area = create_subregion(regHMC, "HMC: Red Coin Area", "HMC: Elevate for 8 Red Coins") hmc_pit_islands = create_subregion(regHMC, "HMC: Pit Islands", "HMC: A-Maze-Ing Emergency Exit", "HMC: 1Up Block above Pit") regHMC.subregions = [hmc_red_coin_area, hmc_pit_islands] + if options.enable_coin_stars != 0: + create_locs(hmc_red_coin_area, "HMC: 100 Coins") regLLL = create_region("Lethal Lava Land", player, world) create_locs(regLLL, "LLL: Boil the Big Bully", "LLL: Bully the Bullies", - "LLL: 8-Coin Puzzle with 15 Pieces", "LLL: Red-Hot Log Rolling", - "LLL: 100 Coins") + "LLL: 8-Coin Puzzle with 15 Pieces", "LLL: Red-Hot Log Rolling") lll_upper_volcano = create_subregion(regLLL, "LLL: Upper Volcano", "LLL: Hot-Foot-It into the Volcano", "LLL: Elevator Tour in the Volcano") regLLL.subregions = [lll_upper_volcano] + if options.enable_coin_stars != 0: + create_locs(regLLL, "LLL: 100 Coins") regSSL = create_region("Shifting Sand Land", player, world) create_locs(regSSL, "SSL: In the Talons of the Big Bird", "SSL: Shining Atop the Pyramid", - "SSL: Free Flying for 8 Red Coins", "SSL: 100 Coins", - "SSL: Bob-omb Buddy", + "SSL: Free Flying for 8 Red Coins", "SSL: Bob-omb Buddy", "SSL: 1Up Block Outside Pyramid", "SSL: 1Up Block Pyramid Left Path", "SSL: 1Up Block Pyramid Back") - ssl_upper_pyramid = create_subregion(regSSL, "SSL: Upper Pyramid", "SSL: Inside the Ancient Pyramid", "SSL: Stand Tall on the Four Pillars", - "SSL: Pyramid Puzzle") + ssl_upper_pyramid = create_subregion(regSSL, "SSL: Upper Pyramid", "SSL: Inside the Ancient Pyramid", + "SSL: Stand Tall on the Four Pillars", "SSL: Pyramid Puzzle") regSSL.subregions = [ssl_upper_pyramid] + if options.enable_coin_stars != 0: + create_locs(regSSL, "SSL: 100 Coins") regDDD = create_region("Dire, Dire Docks", player, world) create_locs(regDDD, "DDD: Board Bowser's Sub", "DDD: Chests in the Current", "DDD: Through the Jet Stream", - "DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins", - "DDD: 100 Coins") + "DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins") + if options.enable_coin_stars != 0: + create_locs(regDDD, "DDD: 100 Coins") regCotMC = create_region("Cavern of the Metal Cap", player, world) create_default_locs(regCotMC, locCotMC_table) @@ -171,24 +183,26 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regSL = create_region("Snowman's Land", player, world) create_default_locs(regSL, locSL_table) - create_locs(regSL, "SL: 100 Coins") + if options.enable_coin_stars != 0: + create_locs(regSL, "SL: 100 Coins") regWDW = create_region("Wet-Dry World", player, world) create_locs(regWDW, "WDW: Express Elevator--Hurry Up!") wdw_top = create_subregion(regWDW, "WDW: Top", "WDW: Shocking Arrow Lifts!", "WDW: Top o' the Town", - "WDW: Secrets in the Shallows & Sky", "WDW: 100 Coins", - "WDW: Bob-omb Buddy") - wdw_downtown = create_subregion(regWDW, "WDW: Downtown", "WDW: Go to Town for Red Coins", "WDW: Quick Race Through Downtown!", - "WDW: 1Up Block in Downtown") + "WDW: Secrets in the Shallows & Sky", "WDW: Bob-omb Buddy") + wdw_downtown = create_subregion(regWDW, "WDW: Downtown", "WDW: Go to Town for Red Coins", "WDW: Quick Race Through Downtown!", "WDW: 1Up Block in Downtown") regWDW.subregions = [wdw_top, wdw_downtown] + if options.enable_coin_stars != 0: + create_locs(wdw_top, "WDW: 100 Coins") regTTM = create_region("Tall, Tall Mountain", player, world) ttm_middle = create_subregion(regTTM, "TTM: Middle", "TTM: Scary 'Shrooms, Red Coins", "TTM: Blast to the Lonely Mushroom", "TTM: Bob-omb Buddy", "TTM: 1Up Block on Red Mushroom") ttm_top = create_subregion(ttm_middle, "TTM: Top", "TTM: Scale the Mountain", "TTM: Mystery of the Monkey Cage", - "TTM: Mysterious Mountainside", "TTM: Breathtaking View from Bridge", - "TTM: 100 Coins") + "TTM: Mysterious Mountainside", "TTM: Breathtaking View from Bridge") regTTM.subregions = [ttm_middle, ttm_top] + if options.enable_coin_stars != 0: + create_locs(ttm_top, "TTM: 100 Coins") create_region("Tiny-Huge Island (Huge)", player, world) create_region("Tiny-Huge Island (Tiny)", player, world) @@ -197,8 +211,10 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): thi_pipes = create_subregion(regTHI, "THI: Pipes", "THI: The Tip Top of the Huge Island", "THI: Pluck the Piranha Flower", "THI: Rematch with Koopa the Quick", "THI: Five Itty Bitty Secrets", "THI: Wiggler's Red Coins", "THI: Bob-omb Buddy", "THI: 1Up Block THI Large near Start", "THI: 1Up Block Windy Area") - thi_large_top = create_subregion(thi_pipes, "THI: Large Top", "THI: Make Wiggler Squirm", "THI: 100 Coins") + thi_large_top = create_subregion(thi_pipes, "THI: Large Top", "THI: Make Wiggler Squirm") regTHI.subregions = [thi_pipes, thi_large_top] + if options.enable_coin_stars != 0: + create_locs(thi_large_top, "THI: 100 Coins") regFloor3 = create_region("Third Floor", player, world) @@ -206,17 +222,20 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): create_locs(regTTC, "TTC: Stop Time for Red Coins") ttc_lower = create_subregion(regTTC, "TTC: Lower", "TTC: Roll into the Cage", "TTC: Get a Hand") ttc_upper = create_subregion(ttc_lower, "TTC: Upper", "TTC: Timed Jumps on Moving Bars", "TTC: The Pit and the Pendulums") - ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: Stomp on the Thwomp", "TTC: 100 Coins", - "TTC: 1Up Block Midway Up", "TTC: 1Up Block at the Top") + ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: 1Up Block Midway Up", "TTC: Stomp on the Thwomp", "TTC: 1Up Block at the Top") regTTC.subregions = [ttc_lower, ttc_upper, ttc_top] + if options.enable_coin_stars != 0 : + create_locs(ttc_top, "TTC: 100 Coins") regRR = create_region("Rainbow Ride", player, world) create_locs(regRR, "RR: Swingin' in the Breeze", "RR: Tricky Triangles!", - "RR: Bob-omb Buddy", "RR: 1Up Block Top of Red Coin Maze", "RR: 1Up Block Under Fly Guy") - rr_maze = create_subregion(regRR, "RR: Maze", "RR: Coins Amassed in a Maze", "RR: 100 Coins") + "RR: 1Up Block Top of Red Coin Maze", "RR: 1Up Block Under Fly Guy", "RR: Bob-omb Buddy") + rr_maze = create_subregion(regRR, "RR: Maze", "RR: Coins Amassed in a Maze") rr_cruiser = create_subregion(regRR, "RR: Cruiser", "RR: Cruiser Crossing the Rainbow", "RR: Somewhere Over the Rainbow") rr_house = create_subregion(regRR, "RR: House", "RR: The Big House in the Sky", "RR: 1Up Block On House in the Sky") regRR.subregions = [rr_maze, rr_cruiser, rr_house] + if options.enable_coin_stars != 0 : + create_locs(rr_maze, "RR: 100 Coins") regWMotR = create_region("Wing Mario over the Rainbow", player, world) create_default_locs(regWMotR, locWMotR_table) diff --git a/worlds/sm64ex/Rules.py b/worlds/sm64ex/Rules.py index 67d03df619f7..d82ae73151d6 100644 --- a/worlds/sm64ex/Rules.py +++ b/worlds/sm64ex/Rules.py @@ -203,17 +203,18 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict, # Bowser in the Sky rf.assign_rule("BitS: Top", "CL+TJ | CL+SF+LG | MOVELESS & TJ+WK+LG") # 100 Coin Stars - rf.assign_rule("BoB: 100 Coins", "CANN & WC | CANNLESS & WC & TJ") - rf.assign_rule("WF: 100 Coins", "GP | MOVELESS") - rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}") - rf.assign_rule("HMC: 100 Coins", "GP") - rf.assign_rule("SSL: 100 Coins", "{SSL: Upper Pyramid} | GP") - rf.assign_rule("DDD: 100 Coins", "GP & {{DDD: Pole-Jumping for Red Coins}}") - rf.assign_rule("SL: 100 Coins", "VC | CAPLESS") - rf.assign_rule("WDW: 100 Coins", "GP | {WDW: Downtown}") - rf.assign_rule("TTC: 100 Coins", "GP") - rf.assign_rule("THI: 100 Coins", "GP") - rf.assign_rule("RR: 100 Coins", "GP & WK") + if options.enable_coin_stars != 0: + rf.assign_rule("BoB: 100 Coins", "CANN & WC | CANNLESS & WC & TJ") + rf.assign_rule("WF: 100 Coins", "GP | MOVELESS") + rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}") + rf.assign_rule("HMC: 100 Coins", "GP") + rf.assign_rule("SSL: 100 Coins", "{SSL: Upper Pyramid} | GP") + rf.assign_rule("DDD: 100 Coins", "GP & {{DDD: Pole-Jumping for Red Coins}}") + rf.assign_rule("SL: 100 Coins", "VC | CAPLESS") + rf.assign_rule("WDW: 100 Coins", "GP | {WDW: Downtown}") + rf.assign_rule("TTC: 100 Coins", "GP") + rf.assign_rule("THI: 100 Coins", "GP") + rf.assign_rule("RR: 100 Coins", "GP & WK") # Castle Stars add_rule(world.get_location("Toad (Basement)", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, 12)) add_rule(world.get_location("Toad (Second Floor)", player), lambda state: state.can_reach("Second Floor", 'Region', player) and state.has("Power Star", player, 25)) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 4588606333ad..c40aaf6319cb 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -48,6 +48,8 @@ class SM64World(World): def generate_early(self): max_stars = 120 + if (self.options.enable_coin_stars == 0): + max_stars -= 15 self.move_rando_bitvec = 0 if self.options.enable_move_rando: for action in self.options.move_rando_actions.value: @@ -162,7 +164,7 @@ def generate_basic(self): self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) - if (not self.options.enable_coin_stars): + if (self.options.enable_coin_stars == 2): self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) From c6dd7b465c93849957589a84e64f22e3250d57c3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Nov 2024 19:57:52 -0500 Subject: [PATCH 3/9] sm64ex: Avoiding raw int comparisons for 100 coin option --- worlds/sm64ex/Regions.py | 30 +++++++++++++++--------------- worlds/sm64ex/Rules.py | 2 +- worlds/sm64ex/__init__.py | 4 ++-- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/worlds/sm64ex/Regions.py b/worlds/sm64ex/Regions.py index dce44124e124..52126bcf9ff7 100644 --- a/worlds/sm64ex/Regions.py +++ b/worlds/sm64ex/Regions.py @@ -89,7 +89,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "BoB: Mario Wings to the Sky", "BoB: Behind Chain Chomp's Gate", "BoB: Bob-omb Buddy") bob_island = create_subregion(regBoB, "BoB: Island", "BoB: Shoot to the Island in the Sky", "BoB: Find the 8 Red Coins") regBoB.subregions = [bob_island] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regBoB, "BoB: 100 Coins") regWhomp = create_region("Whomp's Fortress", player, world) @@ -97,7 +97,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "WF: Fall onto the Caged Island", "WF: Blast Away the Wall") wf_tower = create_subregion(regWhomp, "WF: Tower", "WF: To the Top of the Fortress", "WF: Bob-omb Buddy") regWhomp.subregions = [wf_tower] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regWhomp, "WF: 100 Coins") regJRB = create_region("Jolly Roger Bay", player, world) @@ -105,12 +105,12 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "JRB: Blast to the Stone Pillar", "JRB: Through the Jet Stream", "JRB: Bob-omb Buddy") jrb_upper = create_subregion(regJRB, 'JRB: Upper', "JRB: Red Coins on the Ship Afloat") regJRB.subregions = [jrb_upper] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(jrb_upper, "JRB: 100 Coins") regCCM = create_region("Cool, Cool Mountain", player, world) create_default_locs(regCCM, locCCM_table) - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regCCM, "CCM: 100 Coins") regBBH = create_region("Big Boo's Haunt", player, world) @@ -119,7 +119,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): bbh_third_floor = create_subregion(regBBH, "BBH: Third Floor", "BBH: Eye to Eye in the Secret Room") bbh_roof = create_subregion(bbh_third_floor, "BBH: Roof", "BBH: Big Boo's Balcony", "BBH: 1Up Block Top of Mansion") regBBH.subregions = [bbh_third_floor, bbh_roof] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regBBH, "BBH: 100 Coins") regPSS = create_region("The Princess's Secret Slide", player, world) @@ -142,7 +142,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): hmc_red_coin_area = create_subregion(regHMC, "HMC: Red Coin Area", "HMC: Elevate for 8 Red Coins") hmc_pit_islands = create_subregion(regHMC, "HMC: Pit Islands", "HMC: A-Maze-Ing Emergency Exit", "HMC: 1Up Block above Pit") regHMC.subregions = [hmc_red_coin_area, hmc_pit_islands] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(hmc_red_coin_area, "HMC: 100 Coins") regLLL = create_region("Lethal Lava Land", player, world) @@ -150,7 +150,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "LLL: 8-Coin Puzzle with 15 Pieces", "LLL: Red-Hot Log Rolling") lll_upper_volcano = create_subregion(regLLL, "LLL: Upper Volcano", "LLL: Hot-Foot-It into the Volcano", "LLL: Elevator Tour in the Volcano") regLLL.subregions = [lll_upper_volcano] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regLLL, "LLL: 100 Coins") regSSL = create_region("Shifting Sand Land", player, world) @@ -160,13 +160,13 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): ssl_upper_pyramid = create_subregion(regSSL, "SSL: Upper Pyramid", "SSL: Inside the Ancient Pyramid", "SSL: Stand Tall on the Four Pillars", "SSL: Pyramid Puzzle") regSSL.subregions = [ssl_upper_pyramid] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regSSL, "SSL: 100 Coins") regDDD = create_region("Dire, Dire Docks", player, world) create_locs(regDDD, "DDD: Board Bowser's Sub", "DDD: Chests in the Current", "DDD: Through the Jet Stream", "DDD: The Manta Ray's Reward", "DDD: Collect the Caps...", "DDD: Pole-Jumping for Red Coins") - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regDDD, "DDD: 100 Coins") regCotMC = create_region("Cavern of the Metal Cap", player, world) @@ -183,7 +183,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): regSL = create_region("Snowman's Land", player, world) create_default_locs(regSL, locSL_table) - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(regSL, "SL: 100 Coins") regWDW = create_region("Wet-Dry World", player, world) @@ -192,7 +192,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "WDW: Secrets in the Shallows & Sky", "WDW: Bob-omb Buddy") wdw_downtown = create_subregion(regWDW, "WDW: Downtown", "WDW: Go to Town for Red Coins", "WDW: Quick Race Through Downtown!", "WDW: 1Up Block in Downtown") regWDW.subregions = [wdw_top, wdw_downtown] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(wdw_top, "WDW: 100 Coins") regTTM = create_region("Tall, Tall Mountain", player, world) @@ -201,7 +201,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): ttm_top = create_subregion(ttm_middle, "TTM: Top", "TTM: Scale the Mountain", "TTM: Mystery of the Monkey Cage", "TTM: Mysterious Mountainside", "TTM: Breathtaking View from Bridge") regTTM.subregions = [ttm_middle, ttm_top] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(ttm_top, "TTM: 100 Coins") create_region("Tiny-Huge Island (Huge)", player, world) @@ -213,7 +213,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): "THI: 1Up Block THI Large near Start", "THI: 1Up Block Windy Area") thi_large_top = create_subregion(thi_pipes, "THI: Large Top", "THI: Make Wiggler Squirm") regTHI.subregions = [thi_pipes, thi_large_top] - if options.enable_coin_stars != 0: + if options.enable_coin_stars: create_locs(thi_large_top, "THI: 100 Coins") regFloor3 = create_region("Third Floor", player, world) @@ -224,7 +224,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): ttc_upper = create_subregion(ttc_lower, "TTC: Upper", "TTC: Timed Jumps on Moving Bars", "TTC: The Pit and the Pendulums") ttc_top = create_subregion(ttc_upper, "TTC: Top", "TTC: 1Up Block Midway Up", "TTC: Stomp on the Thwomp", "TTC: 1Up Block at the Top") regTTC.subregions = [ttc_lower, ttc_upper, ttc_top] - if options.enable_coin_stars != 0 : + if options.enable_coin_stars: create_locs(ttc_top, "TTC: 100 Coins") regRR = create_region("Rainbow Ride", player, world) @@ -234,7 +234,7 @@ def create_regions(world: MultiWorld, options: SM64Options, player: int): rr_cruiser = create_subregion(regRR, "RR: Cruiser", "RR: Cruiser Crossing the Rainbow", "RR: Somewhere Over the Rainbow") rr_house = create_subregion(regRR, "RR: House", "RR: The Big House in the Sky", "RR: 1Up Block On House in the Sky") regRR.subregions = [rr_maze, rr_cruiser, rr_house] - if options.enable_coin_stars != 0 : + if options.enable_coin_stars: create_locs(rr_maze, "RR: 100 Coins") regWMotR = create_region("Wing Mario over the Rainbow", player, world) diff --git a/worlds/sm64ex/Rules.py b/worlds/sm64ex/Rules.py index d82ae73151d6..1535f9ca1fde 100644 --- a/worlds/sm64ex/Rules.py +++ b/worlds/sm64ex/Rules.py @@ -203,7 +203,7 @@ def set_rules(world, options: SM64Options, player: int, area_connections: dict, # Bowser in the Sky rf.assign_rule("BitS: Top", "CL+TJ | CL+SF+LG | MOVELESS & TJ+WK+LG") # 100 Coin Stars - if options.enable_coin_stars != 0: + if options.enable_coin_stars: rf.assign_rule("BoB: 100 Coins", "CANN & WC | CANNLESS & WC & TJ") rf.assign_rule("WF: 100 Coins", "GP | MOVELESS") rf.assign_rule("JRB: 100 Coins", "GP & {JRB: Upper}") diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index c40aaf6319cb..2eb7a2815c77 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -48,7 +48,7 @@ class SM64World(World): def generate_early(self): max_stars = 120 - if (self.options.enable_coin_stars == 0): + if (not self.options.enable_coin_stars): max_stars -= 15 self.move_rando_bitvec = 0 if self.options.enable_move_rando: @@ -164,7 +164,7 @@ def generate_basic(self): self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) - if (self.options.enable_coin_stars == 2): + if (self.options.enable_coin_stars == self.options.enable_coin_stars.option_Vanilla): self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) From 69eea7dd3f8a217c8eb873392fa95f984f0e8c1c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Nov 2024 22:00:59 -0500 Subject: [PATCH 4/9] sm64ex: Change 100 coin option from toggle to choice --- worlds/sm64ex/Options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sm64ex/Options.py b/worlds/sm64ex/Options.py index a094890d8294..86e261396ab8 100644 --- a/worlds/sm64ex/Options.py +++ b/worlds/sm64ex/Options.py @@ -3,7 +3,7 @@ from Options import DefaultOnToggle, Range, Toggle, DeathLink, Choice, PerGameCommonOptions, OptionSet from .Items import action_item_table -class EnableCoinStars(DefaultOnToggle): +class EnableCoinStars(Choice): """ Determine logic for 100 Coin Stars. From f885d0356eb2fb012cfc4a85c3d6247b9efc2322 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 Nov 2024 16:00:18 -0500 Subject: [PATCH 5/9] sm64ex: use snake_case for 100 coin option --- worlds/sm64ex/Options.py | 6 +++--- worlds/sm64ex/__init__.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/worlds/sm64ex/Options.py b/worlds/sm64ex/Options.py index 86e261396ab8..5ebffc0e92ee 100644 --- a/worlds/sm64ex/Options.py +++ b/worlds/sm64ex/Options.py @@ -15,9 +15,9 @@ class EnableCoinStars(Choice): Vanilla - Kept in pool, but NOT randomized. """ display_name = "Enable 100 Coin Stars" - option_Off = 0 - option_On = 1 - option_Vanilla = 2 + option_off = 0 + option_on = 1 + option_vanilla = 2 class StrictCapRequirements(DefaultOnToggle): diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 2eb7a2815c77..7ceb1898408a 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -164,7 +164,7 @@ def generate_basic(self): self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) - if (self.options.enable_coin_stars == self.options.enable_coin_stars.option_Vanilla): + if (self.options.enable_coin_stars == self.options.enable_coin_stars.option_vanilla): self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) From 8f5975c18fc2a00882a3174916abb2c0a20d1254 Mon Sep 17 00:00:00 2001 From: josephwhite Date: Thu, 28 Nov 2024 10:41:27 -0500 Subject: [PATCH 6/9] just use "vanilla" for option comparison (exempt-medic feedback) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/sm64ex/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 7ceb1898408a..211bb0794115 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -164,7 +164,7 @@ def generate_basic(self): self.multiworld.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) self.multiworld.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom")) - if (self.options.enable_coin_stars == self.options.enable_coin_stars.option_vanilla): + if (self.options.enable_coin_stars == "vanilla"): self.multiworld.get_location("BoB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("WF: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) self.multiworld.get_location("JRB: 100 Coins", self.player).place_locked_item(self.create_item("Power Star")) From 5e3729066a0bf8ddaa19a63648fa32fabdff35f5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 29 Nov 2024 09:55:35 -0500 Subject: [PATCH 7/9] sm64ex: remove vanilla 100 coins from item pool to remove overfilling stars --- worlds/sm64ex/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 91d42c9ee9d6..5fbc27ce24c7 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -104,7 +104,11 @@ def create_items(self): # 1Up Mushrooms self.multiworld.itempool += [self.create_item("1Up Mushroom") for i in range(0,self.filler_count)] # Power Stars - self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,self.number_of_stars)] + star_range = self.number_of_stars + # Vanilla 100 Coin stars have to removed from the pool if other max star increasing options are active. + if (self.options.enable_coin_stars == "vanilla" and self.number_of_stars >= 15): + star_range -= 15 + self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,star_range)] # Keys if (not self.options.progressive_keys): key1 = self.create_item("Basement Key") From b5ddca485af47a45f5ca0cc5611191c5022bc816 Mon Sep 17 00:00:00 2001 From: josephwhite Date: Fri, 29 Nov 2024 10:06:30 -0500 Subject: [PATCH 8/9] yeah Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/sm64ex/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index 5fbc27ce24c7..eeaf20a0187f 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -106,7 +106,7 @@ def create_items(self): # Power Stars star_range = self.number_of_stars # Vanilla 100 Coin stars have to removed from the pool if other max star increasing options are active. - if (self.options.enable_coin_stars == "vanilla" and self.number_of_stars >= 15): + if (self.options.enable_coin_stars == "vanilla" and star_range >= 15): star_range -= 15 self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,star_range)] # Keys From 72e560421f184e17f59367dafc723b29b3243812 Mon Sep 17 00:00:00 2001 From: josephwhite Date: Fri, 29 Nov 2024 10:34:35 -0500 Subject: [PATCH 9/9] Remove range condition (35 is the min for total stars) Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --- worlds/sm64ex/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worlds/sm64ex/__init__.py b/worlds/sm64ex/__init__.py index eeaf20a0187f..afa67f233c69 100644 --- a/worlds/sm64ex/__init__.py +++ b/worlds/sm64ex/__init__.py @@ -106,7 +106,7 @@ def create_items(self): # Power Stars star_range = self.number_of_stars # Vanilla 100 Coin stars have to removed from the pool if other max star increasing options are active. - if (self.options.enable_coin_stars == "vanilla" and star_range >= 15): + if self.options.enable_coin_stars == "vanilla": star_range -= 15 self.multiworld.itempool += [self.create_item("Power Star") for i in range(0,star_range)] # Keys