sm64ex: Option for 1Up Block Rando
This commit is contained in:
parent
6a6dfcbaff
commit
87d91aeef3
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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))
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue