sm64ex: All Bowser Stages Goal (#2112)

This commit is contained in:
Yussur Mustafa Oraji 2023-10-28 21:44:16 +02:00 committed by GitHub
parent 2353346768
commit 253f3e61f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 1 deletions

View File

@ -88,6 +88,12 @@ class ExclamationBoxes(Choice):
option_Off = 0 option_Off = 0
option_1Ups_Only = 1 option_1Ups_Only = 1
class CompletionType(Choice):
"""Set goal for game completion"""
display_name = "Completion Goal"
option_Last_Bowser_Stage = 0
option_All_Bowser_Stages = 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"""
@ -110,4 +116,5 @@ sm64_options: typing.Dict[str, type(Option)] = {
"death_link": DeathLink, "death_link": DeathLink,
"BuddyChecks": BuddyChecks, "BuddyChecks": BuddyChecks,
"ExclamationBoxes": ExclamationBoxes, "ExclamationBoxes": ExclamationBoxes,
"CompletionType" : CompletionType,
} }

View File

@ -124,4 +124,9 @@ def set_rules(world, player: int, area_connections):
add_rule(world.get_location("MIPS 1", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, world.MIPS1Cost[player].value)) add_rule(world.get_location("MIPS 1", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, world.MIPS1Cost[player].value))
add_rule(world.get_location("MIPS 2", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, world.MIPS2Cost[player].value)) add_rule(world.get_location("MIPS 2", player), lambda state: state.can_reach("Basement", 'Region', player) and state.has("Power Star", player, world.MIPS2Cost[player].value))
world.completion_condition[player] = lambda state: state.can_reach("Bowser in the Sky", 'Region', player) if world.CompletionType[player] == "last_bowser_stage":
world.completion_condition[player] = lambda state: state.can_reach("Bowser in the Sky", 'Region', player)
elif world.CompletionType[player] == "all_bowser_stages":
world.completion_condition[player] = lambda state: state.can_reach("Bowser in the Dark World", 'Region', player) and \
state.can_reach("Bowser in the Fire Sea", 'Region', player) and \
state.can_reach("Bowser in the Sky", 'Region', player)

View File

@ -154,6 +154,7 @@ class SM64World(World):
"MIPS2Cost": self.multiworld.MIPS2Cost[self.player].value, "MIPS2Cost": self.multiworld.MIPS2Cost[self.player].value,
"StarsToFinish": self.multiworld.StarsToFinish[self.player].value, "StarsToFinish": self.multiworld.StarsToFinish[self.player].value,
"DeathLink": self.multiworld.death_link[self.player].value, "DeathLink": self.multiworld.death_link[self.player].value,
"CompletionType" : self.multiworld.CompletionType[self.player].value,
} }
def generate_output(self, output_directory: str): def generate_output(self, output_directory: str):