sm64ex: Allow setting Big Star Door requirements (#773)
* sm64ex: Allow setting Big Star Door requirements * sm64ex: Lower requirements for StarsToFinish
This commit is contained in:
parent
e804f592de
commit
e38308bac3
|
@ -13,9 +13,28 @@ class StrictCannonRequirements(DefaultOnToggle):
|
|||
"""If disabled, Stars that expect cannons may have to be acquired without them. Only makes a difference if Buddy Checks are enabled"""
|
||||
display_name = "Strict Cannon Requirements"
|
||||
|
||||
class FirstBowserStarDoorCost(Range):
|
||||
"""How many stars are required at the Star Door to Bowser in the Dark World"""
|
||||
range_start = 0
|
||||
range_end = 20
|
||||
default = 8
|
||||
|
||||
class BasementStarDoorCost(Range):
|
||||
"""How many stars are required at the Star Door in the Basement"""
|
||||
range_start = 0
|
||||
range_end = 50
|
||||
default = 30
|
||||
|
||||
class SecondFloorStarDoorCost(Range):
|
||||
"""How many stars are required to access the third floor"""
|
||||
range_start = 0
|
||||
range_end = 50
|
||||
default = 50
|
||||
|
||||
class StarsToFinish(Range):
|
||||
"""How many stars are required at the infinite stairs"""
|
||||
range_start = 50
|
||||
display_name = "Endless Stairs Stars"
|
||||
range_start = 0
|
||||
range_end = 100
|
||||
default = 70
|
||||
|
||||
|
@ -43,6 +62,9 @@ sm64_options: typing.Dict[str,type(Option)] = {
|
|||
"EnableCoinStars": EnableCoinStars,
|
||||
"StrictCapRequirements": StrictCapRequirements,
|
||||
"StrictCannonRequirements": StrictCannonRequirements,
|
||||
"FirstBowserStarDoorCost": FirstBowserStarDoorCost,
|
||||
"BasementStarDoorCost": BasementStarDoorCost,
|
||||
"SecondFloorStarDoorCost": SecondFloorStarDoorCost,
|
||||
"StarsToFinish": StarsToFinish,
|
||||
"ExtraStars": ExtraStars,
|
||||
"death_link": DeathLink,
|
||||
|
|
|
@ -12,7 +12,7 @@ def set_rules(world, player: int, area_connections):
|
|||
connect_regions(world, player, "Menu", sm64courses[area_connections[1]], lambda state: state.has("Power Star", player, 1))
|
||||
connect_regions(world, player, "Menu", sm64courses[area_connections[2]], lambda state: state.has("Power Star", player, 3))
|
||||
connect_regions(world, player, "Menu", sm64courses[area_connections[3]], lambda state: state.has("Power Star", player, 3))
|
||||
connect_regions(world, player, "Menu", "Bowser in the Dark World", lambda state: state.has("Power Star", player, 8))
|
||||
connect_regions(world, player, "Menu", "Bowser in the Dark World", lambda state: state.has("Power Star", player, world.FirstBowserStarDoorCost[player].value))
|
||||
connect_regions(world, player, "Menu", sm64courses[area_connections[4]], lambda state: state.has("Power Star", player, 12))
|
||||
|
||||
connect_regions(world, player, "Menu", "Basement", lambda state: state.has("Basement Key", player) or state.has("Progressive Key", player, 1))
|
||||
|
@ -20,8 +20,8 @@ def set_rules(world, player: int, area_connections):
|
|||
connect_regions(world, player, "Basement", sm64courses[area_connections[5]])
|
||||
connect_regions(world, player, "Basement", sm64courses[area_connections[6]])
|
||||
connect_regions(world, player, "Basement", sm64courses[area_connections[7]])
|
||||
connect_regions(world, player, "Basement", sm64courses[area_connections[8]], lambda state: state.has("Power Star", player, 30))
|
||||
connect_regions(world, player, "Basement", "Bowser in the Fire Sea", lambda state: state.has("Power Star", player, 30) and
|
||||
connect_regions(world, player, "Basement", sm64courses[area_connections[8]], lambda state: state.has("Power Star", player, world.BasementStarDoorCost[player].value))
|
||||
connect_regions(world, player, "Basement", "Bowser in the Fire Sea", lambda state: state.has("Power Star", player, world.BasementStarDoorCost[player].value) and
|
||||
state.can_reach("DDD: Board Bowser's Sub", 'Location', player))
|
||||
|
||||
connect_regions(world, player, "Menu", "Second Floor", lambda state: state.has("Second Floor Key", player) or state.has("Progressive Key", player, 2))
|
||||
|
@ -31,7 +31,7 @@ def set_rules(world, player: int, area_connections):
|
|||
connect_regions(world, player, "Second Floor", sm64courses[area_connections[11]])
|
||||
connect_regions(world, player, "Second Floor", sm64courses[area_connections[12]])
|
||||
|
||||
connect_regions(world, player, "Second Floor", "Third Floor", lambda state: state.has("Power Star", player, 50))
|
||||
connect_regions(world, player, "Second Floor", "Third Floor", lambda state: state.has("Power Star", player, world.SecondFloorStarDoorCost[player].value))
|
||||
|
||||
connect_regions(world, player, "Third Floor", sm64courses[area_connections[13]])
|
||||
connect_regions(world, player, "Third Floor", sm64courses[area_connections[14]])
|
||||
|
|
|
@ -9,9 +9,6 @@ from .Regions import create_regions, sm64courses
|
|||
from BaseClasses import Item, Tutorial, ItemClassification
|
||||
from ..AutoWorld import World, WebWorld
|
||||
|
||||
client_version = 1
|
||||
|
||||
|
||||
class SM64Web(WebWorld):
|
||||
tutorials = [Tutorial(
|
||||
"Multiworld Setup Guide",
|
||||
|
@ -38,6 +35,8 @@ class SM64World(World):
|
|||
location_name_to_id = location_table
|
||||
|
||||
data_version = 6
|
||||
client_version = 2
|
||||
|
||||
forced_auto_forfeit = False
|
||||
|
||||
area_connections: typing.Dict[int, int]
|
||||
|
@ -115,6 +114,9 @@ class SM64World(World):
|
|||
def fill_slot_data(self):
|
||||
return {
|
||||
"AreaRando": self.area_connections,
|
||||
"FirstBowserDoorCost": self.world.FirstBowserStarDoorCost[self.player].value,
|
||||
"BasementDoorCost": self.world.BasementStarDoorCost[self.player].value,
|
||||
"SecondFloorCost": self.world.SecondFloorStarDoorCost[self.player].value,
|
||||
"StarsToFinish": self.world.StarsToFinish[self.player].value,
|
||||
"DeathLink": self.world.death_link[self.player].value,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue