sm64ex: Option for 1Up Block Rando

This commit is contained in:
N00byKing 2022-08-21 20:45:39 +02:00 committed by Fabian Dill
parent 6a6dfcbaff
commit 87d91aeef3
4 changed files with 84 additions and 17 deletions

View File

@ -46,6 +46,9 @@ locCCM_table = {
"CCM: Snowman's Lost His Head": 3626025,
"CCM: Wall Kicks Will Work": 3626026,
"CCM: Bob-omb Buddy": 3626203,
"CCM: 1Up Block Near Snowman": 3626215,
"CCM: 1Up Block Ice Pillar": 3626216,
"CCM: 1Up Block Secret Slide": 3626217
}
#Big Boo's Haunt
@ -55,7 +58,8 @@ locBBH_table = {
"BBH: Secret of the Haunted Books": 3626030,
"BBH: Seek the 8 Red Coins": 3626031,
"BBH: Big Boo's Balcony": 3626032,
"BBH: Eye to Eye in the Secret Room": 3626033
"BBH: Eye to Eye in the Secret Room": 3626033,
"BBH: 1Up Block Top of Mansion": 3626218
}
#Hazy Maze Cave
@ -65,7 +69,9 @@ locHMC_table = {
"HMC: Metal-Head Mario Can Move!": 3626037,
"HMC: Navigating the Toxic Maze": 3626038,
"HMC: A-Maze-Ing Emergency Exit": 3626039,
"HMC: Watch for Rolling Rocks": 3626040
"HMC: Watch for Rolling Rocks": 3626040,
"HMC: 1Up Block above Pit": 3626219,
"HMC: 1Up Block Past Rolling Rocks": 3626220,
}
#Lethal Lava Land
@ -87,6 +93,9 @@ locSSL_table = {
"SSL: Free Flying for 8 Red Coins": 3626053,
"SSL: Pyramid Puzzle": 3626054,
"SSL: Bob-omb Buddy": 3626207,
"SSL: 1Up Block Outside Pyramid": 3626221,
"SSL: 1Up Block Pyramid Left Path": 3626222,
"SSL: 1Up Block Pyramid Back": 3626223
}
#Dire, Dire Docks
@ -108,6 +117,8 @@ locSL_table = {
"SL: Shell Shreddin' for Red Coins": 3626067,
"SL: Into the Igloo": 3626068,
"SL: Bob-omb Buddy": 3626209,
"SL: 1Up Block Near Moneybags": 3626224,
"SL: 1Up Block inside Igloo": 3626225
}
#Wet-Dry World
@ -119,6 +130,7 @@ locWDW_table = {
"WDW: Go to Town for Red Coins": 3626074,
"WDW: Quick Race Through Downtown!": 3626075,
"WDW: Bob-omb Buddy": 3626210,
"WDW: 1Up Block in Downtown": 3626226
}
#Tall, Tall Mountain
@ -130,6 +142,7 @@ locTTM_table = {
"TTM: Breathtaking View from Bridge": 3626081,
"TTM: Blast to the Lonely Mushroom": 3626082,
"TTM: Bob-omb Buddy": 3626211,
"TTM: 1Up Block on Red Mushroom": 3626227
}
#Tiny-Huge Island
@ -141,6 +154,9 @@ locTHI_table = {
"THI: Wiggler's Red Coins": 3626088,
"THI: Make Wiggler Squirm": 3626089,
"THI: Bob-omb Buddy": 3626212,
"THI: 1Up Block THI Small near Start": 3626228,
"THI: 1Up Block THI Large near Start": 3626229,
"THI: 1Up Block Windy Area": 3626230
}
#Tick Tock Clock
@ -150,7 +166,9 @@ locTTC_table = {
"TTC: Get a Hand": 3626093,
"TTC: Stomp on the Thwomp": 3626094,
"TTC: Timed Jumps on Moving Bars": 3626095,
"TTC: Stop Time for Red Coins": 3626096
"TTC: Stop Time for Red Coins": 3626096,
"TTC: 1Up Block Midway Up": 3626231,
"TTC: 1Up Block at the Top": 3626232
}
#Rainbow Ride
@ -162,6 +180,9 @@ locRR_table = {
"RR: Tricky Triangles!": 3626102,
"RR: Somewhere Over the Rainbow": 3626103,
"RR: Bob-omb Buddy": 3626214,
"RR: 1Up Block Top of Red Coin Maze": 3626233,
"RR: 1Up Block Under Fly Guy": 3626234,
"RR: 1Up Block On House in the Sky": 3626235
}
loc100Coin_table = {
@ -193,7 +214,9 @@ locSA_table = {
locBitDW_table = {
"Bowser in the Dark World Red Coins": 3626105,
"Bowser in the Dark World Key": 3626178
"Bowser in the Dark World Key": 3626178,
"Bowser in the Dark World 1Up Block on Tower": 3626236,
"Bowser in the Dark World 1Up Block near Goombas": 3626237
}
locTotWC_table = {
@ -203,25 +226,31 @@ locTotWC_table = {
locCotMC_table = {
"Cavern of the Metal Cap Switch": 3626182,
"Cavern of the Metal Cap Red Coins": 3626133
"Cavern of the Metal Cap Red Coins": 3626133,
"Cavern of the Metal Cap 1Up Block": 3626241
}
locVCutM_table = {
"Vanish Cap Under the Moat Switch": 3626183,
"Vanish Cap Under the Moat Red Coins": 3626147
"Vanish Cap Under the Moat Red Coins": 3626147,
"Vanish Cap Under the Moat 1Up Block": 3626242
}
locBitFS_table = {
"Bowser in the Fire Sea Red Coins": 3626112,
"Bowser in the Fire Sea Key": 3626179
"Bowser in the Fire Sea Key": 3626179,
"Bowser in the Fire Sea 1Up Block Swaying Stairs": 3626238,
"Bowser in the Fire Sea 1Up Block Near Poles": 3626239
}
locWMotR_table = {
"Wing Mario Over the Rainbow": 3626154
"Wing Mario Over the Rainbow Red Coins": 3626154,
"Wing Mario Over the Rainbow 1Up Block": 3626242
}
locBitS_table = {
"Bowser in the Sky Red Coins": 3626119
"Bowser in the Sky Red Coins": 3626119,
"Bowser in the Sky 1Up Block": 3626240
}
#Secret Stars found inside the Castle

View File

@ -68,6 +68,12 @@ class BuddyChecks(Toggle):
"""Bob-omb Buddies are checks, Cannon Unlocks are items"""
display_name = "Bob-omb Buddy Checks"
class ExclamationBoxes(Choice):
"""Include 1Up Exclamation Boxes during randomization"""
display_name = "Randomize 1Up !-Blocks"
option_Off = 0
option_1Ups_Only = 1
class ProgressiveKeys(DefaultOnToggle):
"""Keys will first grant you access to the Basement, then to the Secound Floor"""
display_name = "Progressive Keys"
@ -87,4 +93,5 @@ sm64_options: typing.Dict[str,type(Option)] = {
"StarsToFinish": StarsToFinish,
"death_link": DeathLink,
"BuddyChecks": BuddyChecks,
"ExclamationBoxes": ExclamationBoxes
}

View File

@ -109,7 +109,8 @@ def set_rules(world, player: int, area_connections):
add_rule(world.get_location("BoB: 100 Coins", player), lambda state: state.has("Cannon Unlock BoB", player) or state.has("Wing Cap", player))
#Rules for Secret Stars
add_rule(world.get_location("Wing Mario Over the Rainbow", player), lambda state: state.has("Wing Cap", player))
add_rule(world.get_location("Wing Mario Over the Rainbow Red Coins", player), lambda state: state.has("Wing Cap", player))
add_rule(world.get_location("Wing Mario Over the Rainbow 1Up Block", player), lambda state: state.has("Wing Cap", player))
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))
add_rule(world.get_location("Toad (Third Floor)", player), lambda state: state.can_reach("Third Floor", 'Region', player) and state.has("Power Star", player, 35))

View File

@ -34,7 +34,7 @@ class SM64World(World):
item_name_to_id = item_table
location_name_to_id = location_table
data_version = 6
data_version = 7
required_client_version = (0, 3, 0)
area_connections: typing.Dict[int, int]
@ -71,7 +71,6 @@ class SM64World(World):
return item
def generate_basic(self):
staritem = self.create_item("Power Star")
starcount = self.world.AmountOfStars[self.player].value
if (not self.world.EnableCoinStars[self.player].value):
starcount = max(35,self.world.AmountOfStars[self.player].value-15)
@ -79,17 +78,15 @@ class SM64World(World):
self.world.BasementStarDoorCost[self.player].value, self.world.SecondFloorStarDoorCost[self.player].value,
self.world.MIPS1Cost[self.player].value, self.world.MIPS2Cost[self.player].value,
self.world.StarsToFinish[self.player].value)
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 - (15 if not self.world.EnableCoinStars[self.player].value else 0))]
self.world.itempool += [self.create_item("Power Star") for i in range(0,starcount)]
self.world.itempool += [self.create_item("1Up Mushroom") for i in range(starcount,120 - (15 if not self.world.EnableCoinStars[self.player].value else 0))]
if (not self.world.ProgressiveKeys[self.player].value):
key1 = self.create_item("Basement Key")
key2 = self.create_item("Second Floor Key")
self.world.itempool += [key1,key2]
else:
key = self.create_item("Progressive Key")
self.world.itempool += [key,key]
self.world.itempool += [self.create_item("Progressive Key") for i in range(0,2)]
wingcap = self.create_item("Wing Cap")
metalcap = self.create_item("Metal Cap")
@ -110,6 +107,39 @@ class SM64World(World):
self.world.get_location("THI: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock THI"))
self.world.get_location("RR: Bob-omb Buddy", self.player).place_locked_item(self.create_item("Cannon Unlock RR"))
if (self.world.ExclamationBoxes[self.player].value > 0):
self.world.itempool += [self.create_item("1Up Mushroom") for i in range(0,29)]
else:
self.world.get_location("CCM: 1Up Block Near Snowman", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("CCM: 1Up Block Ice Pillar", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("CCM: 1Up Block Secret Slide", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("BBH: 1Up Block Top of Mansion", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("HMC: 1Up Block above Pit", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("HMC: 1Up Block Past Rolling Rocks", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("SSL: 1Up Block Outside Pyramid", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("SSL: 1Up Block Pyramid Left Path", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("SSL: 1Up Block Pyramid Back", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("SL: 1Up Block Near Moneybags", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("SL: 1Up Block inside Igloo", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("WDW: 1Up Block in Downtown", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("TTM: 1Up Block on Red Mushroom", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("THI: 1Up Block THI Small near Start", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("THI: 1Up Block THI Large near Start", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("THI: 1Up Block Windy Area", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("TTC: 1Up Block Midway Up", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("TTC: 1Up Block at the Top", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("RR: 1Up Block Top of Red Coin Maze", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("RR: 1Up Block Under Fly Guy", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("RR: 1Up Block On House in the Sky", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Bowser in the Dark World 1Up Block on Tower", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Bowser in the Dark World 1Up Block near Goombas", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Cavern of the Metal Cap 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Vanish Cap Under the Moat 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Bowser in the Fire Sea 1Up Block Swaying Stairs", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Bowser in the Fire Sea 1Up Block Near Poles", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Wing Mario Over the Rainbow 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
self.world.get_location("Bowser in the Sky 1Up Block", self.player).place_locked_item(self.create_item("1Up Mushroom"))
def get_filler_item_name(self) -> str:
return "1Up Mushroom"