SC2: Option for random mission order (#569)
This commit is contained in:
		| @@ -100,7 +100,7 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) and | ||||
|                                    state._sc2wol_has_anti_air(world, player) and | ||||
|                                    state._sc2wol_has_heavy_defense(world, player)), | ||||
|         LocationData("The Moebius Factor", "The Moebius Factor: 3rd Data Core", SC2WOL_LOC_ID_OFFSET + 1000, | ||||
|         LocationData("The Moebius Factor", "The Moebius Factor: Victory", SC2WOL_LOC_ID_OFFSET + 1000, | ||||
|                      lambda state: state._sc2wol_has_air(world, player)), | ||||
|         LocationData("The Moebius Factor", "The Moebius Factor: 1st Data Core ", SC2WOL_LOC_ID_OFFSET + 1001, | ||||
|                      lambda state: state._sc2wol_has_air(world, player) or True), | ||||
| @@ -131,7 +131,7 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
|         LocationData("Supernova", "Beat Supernova", None, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
|         LocationData("Maw of the Void", "Maw of the Void: Xel'Naga Vault", SC2WOL_LOC_ID_OFFSET + 1200, | ||||
|         LocationData("Maw of the Void", "Maw of the Void: Victory", SC2WOL_LOC_ID_OFFSET + 1200, | ||||
|                      lambda state: state.has('Battlecruiser', player) or state.has('Science Vessel', player) and | ||||
|                                    state._sc2wol_has_air(world, player)), | ||||
|         LocationData("Maw of the Void", "Maw of the Void: Landing Zone Cleared", SC2WOL_LOC_ID_OFFSET + 1201), | ||||
| @@ -148,14 +148,14 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|         LocationData("Maw of the Void", "Beat Maw of the Void", None, | ||||
|                      lambda state: state.has('Battlecruiser', player) or state.has('Science Vessel', player) and | ||||
|                                    state._sc2wol_has_air(world, player)), | ||||
|         LocationData("Devil's Playground", "Devil's Playground: 8000 Minerals", SC2WOL_LOC_ID_OFFSET + 1300, | ||||
|         LocationData("Devil's Playground", "Devil's Playground: Victory", SC2WOL_LOC_ID_OFFSET + 1300, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) or state.has("Reaper", player)), | ||||
|         LocationData("Devil's Playground", "Devil's Playground: Tosh's Miners", SC2WOL_LOC_ID_OFFSET + 1301), | ||||
|         LocationData("Devil's Playground", "Devil's Playground: Brutalisk", SC2WOL_LOC_ID_OFFSET + 1302, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) or state.has("Reaper", player)), | ||||
|         LocationData("Devil's Playground", "Beat Devil's Playground", None, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) or state.has("Reaper", player)), | ||||
|         LocationData("Welcome to the Jungle", "Welcome to the Jungle: 7 Canisters", SC2WOL_LOC_ID_OFFSET + 1400, | ||||
|         LocationData("Welcome to the Jungle", "Welcome to the Jungle: Victory", SC2WOL_LOC_ID_OFFSET + 1400, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) and | ||||
|                                    state._sc2wol_has_mobile_anti_air(world, player)), | ||||
|         LocationData("Welcome to the Jungle", "Welcome to the Jungle: Close Relic", SC2WOL_LOC_ID_OFFSET + 1401), | ||||
| @@ -168,25 +168,25 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|         LocationData("Welcome to the Jungle", "Beat Welcome to the Jungle", None, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player) and | ||||
|                                    state._sc2wol_has_mobile_anti_air(world, player)), | ||||
|         LocationData("Breakout", "Breakout: Main Prison", SC2WOL_LOC_ID_OFFSET + 1500), | ||||
|         LocationData("Breakout", "Breakout: Victory", SC2WOL_LOC_ID_OFFSET + 1500), | ||||
|         LocationData("Breakout", "Breakout: Diamondback Prison", SC2WOL_LOC_ID_OFFSET + 1501), | ||||
|         LocationData("Breakout", "Breakout: Siegetank Prison", SC2WOL_LOC_ID_OFFSET + 1502), | ||||
|         LocationData("Breakout", "Beat Breakout", None), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Psi-Indoctrinator", SC2WOL_LOC_ID_OFFSET + 1600), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Victory", SC2WOL_LOC_ID_OFFSET + 1600), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Terrazine Tank", SC2WOL_LOC_ID_OFFSET + 1601), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Jorium Stockpile", SC2WOL_LOC_ID_OFFSET + 1602), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: First Island Spectres", SC2WOL_LOC_ID_OFFSET + 1603), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Second Island Spectres", SC2WOL_LOC_ID_OFFSET + 1604), | ||||
|         LocationData("Ghost of a Chance", "Ghost of a Chance: Third Island Spectres", SC2WOL_LOC_ID_OFFSET + 1605), | ||||
|         LocationData("Ghost of a Chance", "Beat Ghost of a Chance", None), | ||||
|         LocationData("The Great Train Robbery", "The Great Train Robbery: 8 Trains", SC2WOL_LOC_ID_OFFSET + 1700, | ||||
|         LocationData("The Great Train Robbery", "The Great Train Robbery: Victory", SC2WOL_LOC_ID_OFFSET + 1700, | ||||
|                      lambda state: state._sc2wol_has_train_killers(world, player)), | ||||
|         LocationData("The Great Train Robbery", "The Great Train Robbery: North Defiler", SC2WOL_LOC_ID_OFFSET + 1701), | ||||
|         LocationData("The Great Train Robbery", "The Great Train Robbery: Mid Defiler", SC2WOL_LOC_ID_OFFSET + 1702), | ||||
|         LocationData("The Great Train Robbery", "The Great Train Robbery: South Defiler", SC2WOL_LOC_ID_OFFSET + 1703), | ||||
|         LocationData("The Great Train Robbery", "Beat The Great Train Robbery", None, | ||||
|                      lambda state: state._sc2wol_has_train_killers(world, player)), | ||||
|         LocationData("Cutthroat", "Cutthroat: Orlan's Planetary", SC2WOL_LOC_ID_OFFSET + 1800, | ||||
|         LocationData("Cutthroat", "Cutthroat: Victory", SC2WOL_LOC_ID_OFFSET + 1800, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
|         LocationData("Cutthroat", "Cutthroat: Mira Han", SC2WOL_LOC_ID_OFFSET + 1801, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
| @@ -197,7 +197,7 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
|         LocationData("Cutthroat", "Beat Cutthroat", None, | ||||
|                      lambda state: state._sc2wol_has_common_unit(world, player)), | ||||
|         LocationData("Engine of Destruction", "Engine of Destruction: Dominion Bases", SC2WOL_LOC_ID_OFFSET + 1900, | ||||
|         LocationData("Engine of Destruction", "Engine of Destruction: Victory", SC2WOL_LOC_ID_OFFSET + 1900, | ||||
|                      lambda state: state._sc2wol_has_mobile_anti_air(world, player)), | ||||
|         LocationData("Engine of Destruction", "Engine of Destruction: Odin", SC2WOL_LOC_ID_OFFSET + 1901), | ||||
|         LocationData("Engine of Destruction", "Engine of Destruction: Loki", SC2WOL_LOC_ID_OFFSET + 1902, | ||||
| @@ -213,7 +213,7 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|         LocationData("Engine of Destruction", "Beat Engine of Destruction", None, | ||||
|                      lambda state: state._sc2wol_has_mobile_anti_air(world, player) and | ||||
|                                    state._sc2wol_has_common_unit(world, player) or state.has('Wraith', player)), | ||||
|         LocationData("Media Blitz", "Media Blitz: Full Upload", SC2WOL_LOC_ID_OFFSET + 2000, | ||||
|         LocationData("Media Blitz", "Media Blitz: Victory", SC2WOL_LOC_ID_OFFSET + 2000, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|         LocationData("Media Blitz", "Media Blitz: Tower 1", SC2WOL_LOC_ID_OFFSET + 2001, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
| @@ -224,19 +224,19 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|         LocationData("Media Blitz", "Media Blitz: Science Facility", SC2WOL_LOC_ID_OFFSET + 2004), | ||||
|         LocationData("Media Blitz", "Beat Media Blitz", None, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Facility Escape", SC2WOL_LOC_ID_OFFSET + 2100), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Victory", SC2WOL_LOC_ID_OFFSET + 2100), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Holding Cell Relic", SC2WOL_LOC_ID_OFFSET + 2101), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Brutalisk Relic", SC2WOL_LOC_ID_OFFSET + 2102), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: First Escape Relic", SC2WOL_LOC_ID_OFFSET + 2103), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Second Escape Relic", SC2WOL_LOC_ID_OFFSET + 2104), | ||||
|         LocationData("Piercing the Shroud", "Piercing the Shroud: Brutalisk ", SC2WOL_LOC_ID_OFFSET + 2105), | ||||
|         LocationData("Piercing the Shroud", "Beat Piercing the Shroud", None), | ||||
|         LocationData("Whispers of Doom", "Whispers of Doom: Void Seeker Escape", SC2WOL_LOC_ID_OFFSET + 2200), | ||||
|         LocationData("Whispers of Doom", "Whispers of Doom: Victory", SC2WOL_LOC_ID_OFFSET + 2200), | ||||
|         LocationData("Whispers of Doom", "Whispers of Doom: First Hatchery", SC2WOL_LOC_ID_OFFSET + 2201), | ||||
|         LocationData("Whispers of Doom", "Whispers of Doom: Second Hatchery", SC2WOL_LOC_ID_OFFSET + 2202), | ||||
|         LocationData("Whispers of Doom", "Whispers of Doom: Third Hatchery", SC2WOL_LOC_ID_OFFSET + 2203), | ||||
|         LocationData("Whispers of Doom", "Beat Whispers of Doom", None), | ||||
|         LocationData("A Sinister Turn", "A Sinister Turn: Preservers Freed", SC2WOL_LOC_ID_OFFSET + 2300, | ||||
|         LocationData("A Sinister Turn", "A Sinister Turn: Victory", SC2WOL_LOC_ID_OFFSET + 2300, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("A Sinister Turn", "A Sinister Turn: Robotics Facility", SC2WOL_LOC_ID_OFFSET + 2301), | ||||
|         LocationData("A Sinister Turn", "A Sinister Turn: Dark Shrine", SC2WOL_LOC_ID_OFFSET + 2302), | ||||
| @@ -244,31 +244,31 @@ def get_locations(world: Optional[MultiWorld], player: Optional[int]) -> Tuple[L | ||||
|                      lambda state: state._sc2wol_has_protoss_common_units(world, player)), | ||||
|         LocationData("A Sinister Turn", "Beat A Sinister Turn", None, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("Echoes of the Future", "Echoes of the Future: Overmind", SC2WOL_LOC_ID_OFFSET + 2400, | ||||
|         LocationData("Echoes of the Future", "Echoes of the Future: Victory", SC2WOL_LOC_ID_OFFSET + 2400, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("Echoes of the Future", "Echoes of the Future: Close Obelisk", SC2WOL_LOC_ID_OFFSET + 2401), | ||||
|         LocationData("Echoes of the Future", "Echoes of the Future: West Obelisk", SC2WOL_LOC_ID_OFFSET + 2402, | ||||
|                      lambda state: state._sc2wol_has_protoss_common_units(world, player)), | ||||
|         LocationData("Echoes of the Future", "Beat Echoes of the Future", None, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("In Utter Darkness", "In Utter Darkness: Kills", SC2WOL_LOC_ID_OFFSET + 2500, | ||||
|         LocationData("In Utter Darkness", "In Utter Darkness: Defeat", SC2WOL_LOC_ID_OFFSET + 2500, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("In Utter Darkness", "In Utter Darkness: Protoss Archive", SC2WOL_LOC_ID_OFFSET + 2501, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("In Utter Darkness", "In Utter Darkness: Defeat", SC2WOL_LOC_ID_OFFSET + 2502), | ||||
|         LocationData("In Utter Darkness", "In Utter Darkness: Kills", SC2WOL_LOC_ID_OFFSET + 2502), | ||||
|         LocationData("In Utter Darkness", "Beat In Utter Darkness", None, | ||||
|                      lambda state: state._sc2wol_has_protoss_medium_units(world, player)), | ||||
|         LocationData("Gates of Hell", "Gates of Hell: Nydus Worms", SC2WOL_LOC_ID_OFFSET + 2600, | ||||
|         LocationData("Gates of Hell", "Gates of Hell: Victory", SC2WOL_LOC_ID_OFFSET + 2600, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|         LocationData("Gates of Hell", "Gates of Hell: Large Army", SC2WOL_LOC_ID_OFFSET + 2601, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|         LocationData("Gates of Hell", "Beat Gates of Hell", None), | ||||
|         LocationData("Belly of the Beast", "Belly of the Beast: Extract", SC2WOL_LOC_ID_OFFSET + 2700), | ||||
|         LocationData("Belly of the Beast", "Belly of the Beast: Victory", SC2WOL_LOC_ID_OFFSET + 2700), | ||||
|         LocationData("Belly of the Beast", "Belly of the Beast: First Charge", SC2WOL_LOC_ID_OFFSET + 2701), | ||||
|         LocationData("Belly of the Beast", "Belly of the Beast: Second Charge", SC2WOL_LOC_ID_OFFSET + 2702), | ||||
|         LocationData("Belly of the Beast", "Belly of the Beast: Third Charge", SC2WOL_LOC_ID_OFFSET + 2703), | ||||
|         LocationData("Belly of the Beast", "Beat Belly of the Beast", None), | ||||
|         LocationData("Shatter the Sky", "Shatter the Sky: Platform Destroyed", SC2WOL_LOC_ID_OFFSET + 2800, | ||||
|         LocationData("Shatter the Sky", "Shatter the Sky: Victory", SC2WOL_LOC_ID_OFFSET + 2800, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|         LocationData("Shatter the Sky", "Shatter the Sky: Close Coolant Tower", SC2WOL_LOC_ID_OFFSET + 2801, | ||||
|                      lambda state: state._sc2wol_has_competent_comp(world, player)), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 TheCondor07
					TheCondor07