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: Snowman's Lost His Head": 3626025,
|
||||||
"CCM: Wall Kicks Will Work": 3626026,
|
"CCM: Wall Kicks Will Work": 3626026,
|
||||||
"CCM: Bob-omb Buddy": 3626203,
|
"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
|
#Big Boo's Haunt
|
||||||
|
@ -55,7 +58,8 @@ locBBH_table = {
|
||||||
"BBH: Secret of the Haunted Books": 3626030,
|
"BBH: Secret of the Haunted Books": 3626030,
|
||||||
"BBH: Seek the 8 Red Coins": 3626031,
|
"BBH: Seek the 8 Red Coins": 3626031,
|
||||||
"BBH: Big Boo's Balcony": 3626032,
|
"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
|
#Hazy Maze Cave
|
||||||
|
@ -65,7 +69,9 @@ locHMC_table = {
|
||||||
"HMC: Metal-Head Mario Can Move!": 3626037,
|
"HMC: Metal-Head Mario Can Move!": 3626037,
|
||||||
"HMC: Navigating the Toxic Maze": 3626038,
|
"HMC: Navigating the Toxic Maze": 3626038,
|
||||||
"HMC: A-Maze-Ing Emergency Exit": 3626039,
|
"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
|
#Lethal Lava Land
|
||||||
|
@ -87,6 +93,9 @@ locSSL_table = {
|
||||||
"SSL: Free Flying for 8 Red Coins": 3626053,
|
"SSL: Free Flying for 8 Red Coins": 3626053,
|
||||||
"SSL: Pyramid Puzzle": 3626054,
|
"SSL: Pyramid Puzzle": 3626054,
|
||||||
"SSL: Bob-omb Buddy": 3626207,
|
"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
|
#Dire, Dire Docks
|
||||||
|
@ -108,6 +117,8 @@ locSL_table = {
|
||||||
"SL: Shell Shreddin' for Red Coins": 3626067,
|
"SL: Shell Shreddin' for Red Coins": 3626067,
|
||||||
"SL: Into the Igloo": 3626068,
|
"SL: Into the Igloo": 3626068,
|
||||||
"SL: Bob-omb Buddy": 3626209,
|
"SL: Bob-omb Buddy": 3626209,
|
||||||
|
"SL: 1Up Block Near Moneybags": 3626224,
|
||||||
|
"SL: 1Up Block inside Igloo": 3626225
|
||||||
}
|
}
|
||||||
|
|
||||||
#Wet-Dry World
|
#Wet-Dry World
|
||||||
|
@ -119,6 +130,7 @@ locWDW_table = {
|
||||||
"WDW: Go to Town for Red Coins": 3626074,
|
"WDW: Go to Town for Red Coins": 3626074,
|
||||||
"WDW: Quick Race Through Downtown!": 3626075,
|
"WDW: Quick Race Through Downtown!": 3626075,
|
||||||
"WDW: Bob-omb Buddy": 3626210,
|
"WDW: Bob-omb Buddy": 3626210,
|
||||||
|
"WDW: 1Up Block in Downtown": 3626226
|
||||||
}
|
}
|
||||||
|
|
||||||
#Tall, Tall Mountain
|
#Tall, Tall Mountain
|
||||||
|
@ -130,6 +142,7 @@ locTTM_table = {
|
||||||
"TTM: Breathtaking View from Bridge": 3626081,
|
"TTM: Breathtaking View from Bridge": 3626081,
|
||||||
"TTM: Blast to the Lonely Mushroom": 3626082,
|
"TTM: Blast to the Lonely Mushroom": 3626082,
|
||||||
"TTM: Bob-omb Buddy": 3626211,
|
"TTM: Bob-omb Buddy": 3626211,
|
||||||
|
"TTM: 1Up Block on Red Mushroom": 3626227
|
||||||
}
|
}
|
||||||
|
|
||||||
#Tiny-Huge Island
|
#Tiny-Huge Island
|
||||||
|
@ -141,6 +154,9 @@ locTHI_table = {
|
||||||
"THI: Wiggler's Red Coins": 3626088,
|
"THI: Wiggler's Red Coins": 3626088,
|
||||||
"THI: Make Wiggler Squirm": 3626089,
|
"THI: Make Wiggler Squirm": 3626089,
|
||||||
"THI: Bob-omb Buddy": 3626212,
|
"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
|
#Tick Tock Clock
|
||||||
|
@ -150,7 +166,9 @@ locTTC_table = {
|
||||||
"TTC: Get a Hand": 3626093,
|
"TTC: Get a Hand": 3626093,
|
||||||
"TTC: Stomp on the Thwomp": 3626094,
|
"TTC: Stomp on the Thwomp": 3626094,
|
||||||
"TTC: Timed Jumps on Moving Bars": 3626095,
|
"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
|
#Rainbow Ride
|
||||||
|
@ -162,6 +180,9 @@ locRR_table = {
|
||||||
"RR: Tricky Triangles!": 3626102,
|
"RR: Tricky Triangles!": 3626102,
|
||||||
"RR: Somewhere Over the Rainbow": 3626103,
|
"RR: Somewhere Over the Rainbow": 3626103,
|
||||||
"RR: Bob-omb Buddy": 3626214,
|
"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 = {
|
loc100Coin_table = {
|
||||||
|
@ -193,7 +214,9 @@ locSA_table = {
|
||||||
|
|
||||||
locBitDW_table = {
|
locBitDW_table = {
|
||||||
"Bowser in the Dark World Red Coins": 3626105,
|
"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 = {
|
locTotWC_table = {
|
||||||
|
@ -203,25 +226,31 @@ locTotWC_table = {
|
||||||
|
|
||||||
locCotMC_table = {
|
locCotMC_table = {
|
||||||
"Cavern of the Metal Cap Switch": 3626182,
|
"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 = {
|
locVCutM_table = {
|
||||||
"Vanish Cap Under the Moat Switch": 3626183,
|
"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 = {
|
locBitFS_table = {
|
||||||
"Bowser in the Fire Sea Red Coins": 3626112,
|
"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 = {
|
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 = {
|
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
|
#Secret Stars found inside the Castle
|
||||||
|
|
|
@ -68,6 +68,12 @@ class BuddyChecks(Toggle):
|
||||||
"""Bob-omb Buddies are checks, Cannon Unlocks are items"""
|
"""Bob-omb Buddies are checks, Cannon Unlocks are items"""
|
||||||
display_name = "Bob-omb Buddy Checks"
|
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):
|
class ProgressiveKeys(DefaultOnToggle):
|
||||||
"""Keys will first grant you access to the Basement, then to the Secound Floor"""
|
"""Keys will first grant you access to the Basement, then to the Secound Floor"""
|
||||||
display_name = "Progressive Keys"
|
display_name = "Progressive Keys"
|
||||||
|
@ -87,4 +93,5 @@ sm64_options: typing.Dict[str,type(Option)] = {
|
||||||
"StarsToFinish": StarsToFinish,
|
"StarsToFinish": StarsToFinish,
|
||||||
"death_link": DeathLink,
|
"death_link": DeathLink,
|
||||||
"BuddyChecks": BuddyChecks,
|
"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))
|
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
|
#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 (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 (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))
|
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
|
item_name_to_id = item_table
|
||||||
location_name_to_id = location_table
|
location_name_to_id = location_table
|
||||||
|
|
||||||
data_version = 6
|
data_version = 7
|
||||||
required_client_version = (0, 3, 0)
|
required_client_version = (0, 3, 0)
|
||||||
|
|
||||||
area_connections: typing.Dict[int, int]
|
area_connections: typing.Dict[int, int]
|
||||||
|
@ -71,7 +71,6 @@ class SM64World(World):
|
||||||
return item
|
return item
|
||||||
|
|
||||||
def generate_basic(self):
|
def generate_basic(self):
|
||||||
staritem = self.create_item("Power Star")
|
|
||||||
starcount = self.world.AmountOfStars[self.player].value
|
starcount = self.world.AmountOfStars[self.player].value
|
||||||
if (not self.world.EnableCoinStars[self.player].value):
|
if (not self.world.EnableCoinStars[self.player].value):
|
||||||
starcount = max(35,self.world.AmountOfStars[self.player].value-15)
|
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.BasementStarDoorCost[self.player].value, self.world.SecondFloorStarDoorCost[self.player].value,
|
||||||
self.world.MIPS1Cost[self.player].value, self.world.MIPS2Cost[self.player].value,
|
self.world.MIPS1Cost[self.player].value, self.world.MIPS2Cost[self.player].value,
|
||||||
self.world.StarsToFinish[self.player].value)
|
self.world.StarsToFinish[self.player].value)
|
||||||
self.world.itempool += [staritem for i in range(0,starcount)]
|
self.world.itempool += [self.create_item("Power Star") for i in range(0,starcount)]
|
||||||
mushroomitem = self.create_item("1Up Mushroom")
|
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))]
|
||||||
self.world.itempool += [mushroomitem 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):
|
if (not self.world.ProgressiveKeys[self.player].value):
|
||||||
key1 = self.create_item("Basement Key")
|
key1 = self.create_item("Basement Key")
|
||||||
key2 = self.create_item("Second Floor Key")
|
key2 = self.create_item("Second Floor Key")
|
||||||
self.world.itempool += [key1,key2]
|
self.world.itempool += [key1,key2]
|
||||||
else:
|
else:
|
||||||
key = self.create_item("Progressive Key")
|
self.world.itempool += [self.create_item("Progressive Key") for i in range(0,2)]
|
||||||
self.world.itempool += [key,key]
|
|
||||||
|
|
||||||
wingcap = self.create_item("Wing Cap")
|
wingcap = self.create_item("Wing Cap")
|
||||||
metalcap = self.create_item("Metal 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("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"))
|
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:
|
def get_filler_item_name(self) -> str:
|
||||||
return "1Up Mushroom"
|
return "1Up Mushroom"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue