498 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			498 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Python
		
	
	
	
| # This file is auto generated. More info: https://github.com/Daivuk/apdoom
 | |
| 
 | |
| from typing import TYPE_CHECKING
 | |
| from worlds.generic.Rules import set_rule
 | |
| 
 | |
| if TYPE_CHECKING:
 | |
|     from . import DOOM2World
 | |
| 
 | |
| 
 | |
| def set_episode1_rules(player, multiworld, pro):
 | |
|     # Entryway (MAP01)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state:
 | |
|         state.has("Entryway (MAP01)", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state:
 | |
|         state.has("Entryway (MAP01)", player, 1))
 | |
| 
 | |
|     # Underhalls (MAP02)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Underhalls (MAP02) Main", player), lambda state:
 | |
|         state.has("Underhalls (MAP02)", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Underhalls (MAP02) Main -> Underhalls (MAP02) Red", player), lambda state:
 | |
|         state.has("Underhalls (MAP02) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Underhalls (MAP02) Blue -> Underhalls (MAP02) Red", player), lambda state:
 | |
|         state.has("Underhalls (MAP02) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Underhalls (MAP02) Red -> Underhalls (MAP02) Blue", player), lambda state:
 | |
|         state.has("Underhalls (MAP02) - Blue keycard", player, 1))
 | |
| 
 | |
|     # The Gantlet (MAP03)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Gantlet (MAP03) Main", player), lambda state:
 | |
|        (state.has("The Gantlet (MAP03)", player, 1)) and
 | |
|        (state.has("Shotgun", player, 1) or
 | |
|         state.has("Chaingun", player, 1) or
 | |
|         state.has("Super Shotgun", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Gantlet (MAP03) Main -> The Gantlet (MAP03) Blue", player), lambda state:
 | |
|         state.has("The Gantlet (MAP03) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Gantlet (MAP03) Blue -> The Gantlet (MAP03) Red", player), lambda state:
 | |
|         state.has("The Gantlet (MAP03) - Red keycard", player, 1))
 | |
| 
 | |
|     # The Focus (MAP04)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Focus (MAP04) Main", player), lambda state:
 | |
|        (state.has("The Focus (MAP04)", player, 1)) and
 | |
|        (state.has("Shotgun", player, 1) or
 | |
|         state.has("Chaingun", player, 1) or
 | |
|         state.has("Super Shotgun", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Focus (MAP04) Main -> The Focus (MAP04) Red", player), lambda state:
 | |
|         state.has("The Focus (MAP04) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Focus (MAP04) Main -> The Focus (MAP04) Blue", player), lambda state:
 | |
|         state.has("The Focus (MAP04) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Focus (MAP04) Yellow -> The Focus (MAP04) Red", player), lambda state:
 | |
|         state.has("The Focus (MAP04) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Focus (MAP04) Red -> The Focus (MAP04) Yellow", player), lambda state:
 | |
|         state.has("The Focus (MAP04) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Focus (MAP04) Red -> The Focus (MAP04) Main", player), lambda state:
 | |
|         state.has("The Focus (MAP04) - Red keycard", player, 1))
 | |
| 
 | |
|     # The Waste Tunnels (MAP05)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Waste Tunnels (MAP05) Main", player), lambda state:
 | |
|        (state.has("The Waste Tunnels (MAP05)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Waste Tunnels (MAP05) Main -> The Waste Tunnels (MAP05) Red", player), lambda state:
 | |
|         state.has("The Waste Tunnels (MAP05) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Waste Tunnels (MAP05) Main -> The Waste Tunnels (MAP05) Blue", player), lambda state:
 | |
|         state.has("The Waste Tunnels (MAP05) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Waste Tunnels (MAP05) Blue -> The Waste Tunnels (MAP05) Yellow", player), lambda state:
 | |
|         state.has("The Waste Tunnels (MAP05) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Waste Tunnels (MAP05) Blue -> The Waste Tunnels (MAP05) Main", player), lambda state:
 | |
|         state.has("The Waste Tunnels (MAP05) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Waste Tunnels (MAP05) Yellow -> The Waste Tunnels (MAP05) Blue", player), lambda state:
 | |
|         state.has("The Waste Tunnels (MAP05) - Yellow keycard", player, 1))
 | |
| 
 | |
|     # The Crusher (MAP06)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Crusher (MAP06) Main", player), lambda state:
 | |
|        (state.has("The Crusher (MAP06)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Main -> The Crusher (MAP06) Blue", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Blue -> The Crusher (MAP06) Red", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Blue -> The Crusher (MAP06) Main", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Yellow -> The Crusher (MAP06) Red", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Red -> The Crusher (MAP06) Yellow", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Crusher (MAP06) Red -> The Crusher (MAP06) Blue", player), lambda state:
 | |
|         state.has("The Crusher (MAP06) - Red keycard", player, 1))
 | |
| 
 | |
|     # Dead Simple (MAP07)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Dead Simple (MAP07) Main", player), lambda state:
 | |
|        (state.has("Dead Simple (MAP07)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
| 
 | |
|     # Tricks and Traps (MAP08)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Tricks and Traps (MAP08) Main", player), lambda state:
 | |
|        (state.has("Tricks and Traps (MAP08)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Tricks and Traps (MAP08) Main -> Tricks and Traps (MAP08) Red", player), lambda state:
 | |
|         state.has("Tricks and Traps (MAP08) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Tricks and Traps (MAP08) Main -> Tricks and Traps (MAP08) Yellow", player), lambda state:
 | |
|         state.has("Tricks and Traps (MAP08) - Yellow skull key", player, 1))
 | |
| 
 | |
|     # The Pit (MAP09)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Pit (MAP09) Main", player), lambda state:
 | |
|        (state.has("The Pit (MAP09)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Pit (MAP09) Main -> The Pit (MAP09) Yellow", player), lambda state:
 | |
|         state.has("The Pit (MAP09) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Pit (MAP09) Main -> The Pit (MAP09) Blue", player), lambda state:
 | |
|         state.has("The Pit (MAP09) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Pit (MAP09) Yellow -> The Pit (MAP09) Main", player), lambda state:
 | |
|         state.has("The Pit (MAP09) - Yellow keycard", player, 1))
 | |
| 
 | |
|     # Refueling Base (MAP10)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Refueling Base (MAP10) Main", player), lambda state:
 | |
|        (state.has("Refueling Base (MAP10)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Refueling Base (MAP10) Main -> Refueling Base (MAP10) Yellow", player), lambda state:
 | |
|         state.has("Refueling Base (MAP10) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Refueling Base (MAP10) Yellow -> Refueling Base (MAP10) Yellow Blue", player), lambda state:
 | |
|         state.has("Refueling Base (MAP10) - Blue keycard", player, 1))
 | |
| 
 | |
|     # Circle of Death (MAP11)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Circle of Death (MAP11) Main", player), lambda state:
 | |
|        (state.has("Circle of Death (MAP11)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Circle of Death (MAP11) Main -> Circle of Death (MAP11) Blue", player), lambda state:
 | |
|         state.has("Circle of Death (MAP11) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Circle of Death (MAP11) Main -> Circle of Death (MAP11) Red", player), lambda state:
 | |
|         state.has("Circle of Death (MAP11) - Red keycard", player, 1))
 | |
| 
 | |
| 
 | |
| def set_episode2_rules(player, multiworld, pro):
 | |
|     # The Factory (MAP12)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Factory (MAP12) Main", player), lambda state:
 | |
|        (state.has("The Factory (MAP12)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Factory (MAP12) Main -> The Factory (MAP12) Yellow", player), lambda state:
 | |
|         state.has("The Factory (MAP12) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Factory (MAP12) Main -> The Factory (MAP12) Blue", player), lambda state:
 | |
|         state.has("The Factory (MAP12) - Blue keycard", player, 1))
 | |
| 
 | |
|     # Downtown (MAP13)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Downtown (MAP13) Main", player), lambda state:
 | |
|        (state.has("Downtown (MAP13)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Yellow", player), lambda state:
 | |
|         state.has("Downtown (MAP13) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Red", player), lambda state:
 | |
|         state.has("Downtown (MAP13) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Blue", player), lambda state:
 | |
|         state.has("Downtown (MAP13) - Blue keycard", player, 1))
 | |
| 
 | |
|     # The Inmost Dens (MAP14)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Inmost Dens (MAP14) Main", player), lambda state:
 | |
|        (state.has("The Inmost Dens (MAP14)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Inmost Dens (MAP14) Main -> The Inmost Dens (MAP14) Red", player), lambda state:
 | |
|         state.has("The Inmost Dens (MAP14) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Inmost Dens (MAP14) Blue -> The Inmost Dens (MAP14) Red East", player), lambda state:
 | |
|         state.has("The Inmost Dens (MAP14) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Inmost Dens (MAP14) Red -> The Inmost Dens (MAP14) Main", player), lambda state:
 | |
|         state.has("The Inmost Dens (MAP14) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Inmost Dens (MAP14) Red East -> The Inmost Dens (MAP14) Blue", player), lambda state:
 | |
|         state.has("The Inmost Dens (MAP14) - Blue skull key", player, 1))
 | |
| 
 | |
|     # Industrial Zone (MAP15)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Industrial Zone (MAP15) Main", player), lambda state:
 | |
|        (state.has("Industrial Zone (MAP15)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Industrial Zone (MAP15) Main -> Industrial Zone (MAP15) Yellow East", player), lambda state:
 | |
|         state.has("Industrial Zone (MAP15) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Industrial Zone (MAP15) Main -> Industrial Zone (MAP15) Yellow West", player), lambda state:
 | |
|         state.has("Industrial Zone (MAP15) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Industrial Zone (MAP15) Blue -> Industrial Zone (MAP15) Yellow East", player), lambda state:
 | |
|         state.has("Industrial Zone (MAP15) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Industrial Zone (MAP15) Yellow East -> Industrial Zone (MAP15) Blue", player), lambda state:
 | |
|         state.has("Industrial Zone (MAP15) - Blue keycard", player, 1))
 | |
| 
 | |
|     # Suburbs (MAP16)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Suburbs (MAP16) Main", player), lambda state:
 | |
|        (state.has("Suburbs (MAP16)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Red", player), lambda state:
 | |
|         state.has("Suburbs (MAP16) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Blue", player), lambda state:
 | |
|         state.has("Suburbs (MAP16) - Blue skull key", player, 1))
 | |
| 
 | |
|     # Tenements (MAP17)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Tenements (MAP17) Main", player), lambda state:
 | |
|        (state.has("Tenements (MAP17)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Tenements (MAP17) Main -> Tenements (MAP17) Red", player), lambda state:
 | |
|         state.has("Tenements (MAP17) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Yellow", player), lambda state:
 | |
|         state.has("Tenements (MAP17) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Blue", player), lambda state:
 | |
|         state.has("Tenements (MAP17) - Blue keycard", player, 1))
 | |
| 
 | |
|     # The Courtyard (MAP18)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Courtyard (MAP18) Main", player), lambda state:
 | |
|        (state.has("The Courtyard (MAP18)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Courtyard (MAP18) Main -> The Courtyard (MAP18) Yellow", player), lambda state:
 | |
|         state.has("The Courtyard (MAP18) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Courtyard (MAP18) Main -> The Courtyard (MAP18) Blue", player), lambda state:
 | |
|         state.has("The Courtyard (MAP18) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Courtyard (MAP18) Blue -> The Courtyard (MAP18) Main", player), lambda state:
 | |
|         state.has("The Courtyard (MAP18) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Courtyard (MAP18) Yellow -> The Courtyard (MAP18) Main", player), lambda state:
 | |
|         state.has("The Courtyard (MAP18) - Yellow skull key", player, 1))
 | |
| 
 | |
|     # The Citadel (MAP19)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Citadel (MAP19) Main", player), lambda state:
 | |
|        (state.has("The Citadel (MAP19)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Citadel (MAP19) Main -> The Citadel (MAP19) Red", player), lambda state:
 | |
|        (state.has("The Citadel (MAP19) - Red skull key", player, 1)) and       (state.has("The Citadel (MAP19) - Blue skull key", player, 1) or
 | |
|         state.has("The Citadel (MAP19) - Yellow skull key", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Citadel (MAP19) Red -> The Citadel (MAP19) Main", player), lambda state:
 | |
|        (state.has("The Citadel (MAP19) - Red skull key", player, 1)) and       (state.has("The Citadel (MAP19) - Yellow skull key", player, 1) or
 | |
|         state.has("The Citadel (MAP19) - Blue skull key", player, 1)))
 | |
| 
 | |
|     # Gotcha! (MAP20)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Gotcha! (MAP20) Main", player), lambda state:
 | |
|        (state.has("Gotcha! (MAP20)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
| 
 | |
| 
 | |
| def set_episode3_rules(player, multiworld, pro):
 | |
|     # Nirvana (MAP21)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Nirvana (MAP21) Main", player), lambda state:
 | |
|        (state.has("Nirvana (MAP21)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Nirvana (MAP21) Main -> Nirvana (MAP21) Yellow", player), lambda state:
 | |
|         state.has("Nirvana (MAP21) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Nirvana (MAP21) Yellow -> Nirvana (MAP21) Main", player), lambda state:
 | |
|         state.has("Nirvana (MAP21) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Nirvana (MAP21) Yellow -> Nirvana (MAP21) Magenta", player), lambda state:
 | |
|         state.has("Nirvana (MAP21) - Red skull key", player, 1) and
 | |
|         state.has("Nirvana (MAP21) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Nirvana (MAP21) Magenta -> Nirvana (MAP21) Yellow", player), lambda state:
 | |
|         state.has("Nirvana (MAP21) - Red skull key", player, 1) and
 | |
|         state.has("Nirvana (MAP21) - Blue skull key", player, 1))
 | |
| 
 | |
|     # The Catacombs (MAP22)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Catacombs (MAP22) Main", player), lambda state:
 | |
|        (state.has("The Catacombs (MAP22)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("BFG9000", player, 1) or
 | |
|         state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("The Catacombs (MAP22) Main -> The Catacombs (MAP22) Blue", player), lambda state:
 | |
|         state.has("The Catacombs (MAP22) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Catacombs (MAP22) Main -> The Catacombs (MAP22) Red", player), lambda state:
 | |
|         state.has("The Catacombs (MAP22) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Catacombs (MAP22) Red -> The Catacombs (MAP22) Main", player), lambda state:
 | |
|         state.has("The Catacombs (MAP22) - Red skull key", player, 1))
 | |
| 
 | |
|     # Barrels o Fun (MAP23)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Barrels o Fun (MAP23) Main", player), lambda state:
 | |
|        (state.has("Barrels o Fun (MAP23)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
|     set_rule(multiworld.get_entrance("Barrels o Fun (MAP23) Main -> Barrels o Fun (MAP23) Yellow", player), lambda state:
 | |
|         state.has("Barrels o Fun (MAP23) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Barrels o Fun (MAP23) Yellow -> Barrels o Fun (MAP23) Main", player), lambda state:
 | |
|         state.has("Barrels o Fun (MAP23) - Yellow skull key", player, 1))
 | |
| 
 | |
|     # The Chasm (MAP24)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Chasm (MAP24) Main", player), lambda state:
 | |
|         state.has("The Chasm (MAP24)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Chasm (MAP24) Main -> The Chasm (MAP24) Red", player), lambda state:
 | |
|         state.has("The Chasm (MAP24) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Chasm (MAP24) Red -> The Chasm (MAP24) Main", player), lambda state:
 | |
|         state.has("The Chasm (MAP24) - Red keycard", player, 1))
 | |
| 
 | |
|     # Bloodfalls (MAP25)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Bloodfalls (MAP25) Main", player), lambda state:
 | |
|         state.has("Bloodfalls (MAP25)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Bloodfalls (MAP25) Main -> Bloodfalls (MAP25) Blue", player), lambda state:
 | |
|         state.has("Bloodfalls (MAP25) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Bloodfalls (MAP25) Blue -> Bloodfalls (MAP25) Main", player), lambda state:
 | |
|         state.has("Bloodfalls (MAP25) - Blue skull key", player, 1))
 | |
| 
 | |
|     # The Abandoned Mines (MAP26)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Abandoned Mines (MAP26) Main", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Yellow", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26) - Yellow keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Red", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26) - Red keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Blue", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Abandoned Mines (MAP26) Blue -> The Abandoned Mines (MAP26) Main", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26) - Blue keycard", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Abandoned Mines (MAP26) Yellow -> The Abandoned Mines (MAP26) Main", player), lambda state:
 | |
|         state.has("The Abandoned Mines (MAP26) - Yellow keycard", player, 1))
 | |
| 
 | |
|     # Monster Condo (MAP27)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Monster Condo (MAP27) Main", player), lambda state:
 | |
|         state.has("Monster Condo (MAP27)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Yellow", player), lambda state:
 | |
|         state.has("Monster Condo (MAP27) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Red", player), lambda state:
 | |
|         state.has("Monster Condo (MAP27) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Blue", player), lambda state:
 | |
|         state.has("Monster Condo (MAP27) - Blue skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("Monster Condo (MAP27) Red -> Monster Condo (MAP27) Main", player), lambda state:
 | |
|         state.has("Monster Condo (MAP27) - Red skull key", player, 1))
 | |
| 
 | |
|     # The Spirit World (MAP28)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Spirit World (MAP28) Main", player), lambda state:
 | |
|         state.has("The Spirit World (MAP28)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Spirit World (MAP28) Main -> The Spirit World (MAP28) Yellow", player), lambda state:
 | |
|         state.has("The Spirit World (MAP28) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Spirit World (MAP28) Main -> The Spirit World (MAP28) Red", player), lambda state:
 | |
|         state.has("The Spirit World (MAP28) - Red skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Spirit World (MAP28) Yellow -> The Spirit World (MAP28) Main", player), lambda state:
 | |
|         state.has("The Spirit World (MAP28) - Yellow skull key", player, 1))
 | |
|     set_rule(multiworld.get_entrance("The Spirit World (MAP28) Red -> The Spirit World (MAP28) Main", player), lambda state:
 | |
|         state.has("The Spirit World (MAP28) - Red skull key", player, 1))
 | |
| 
 | |
|     # The Living End (MAP29)
 | |
|     set_rule(multiworld.get_entrance("Hub -> The Living End (MAP29) Main", player), lambda state:
 | |
|         state.has("The Living End (MAP29)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
| 
 | |
|     # Icon of Sin (MAP30)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Icon of Sin (MAP30) Main", player), lambda state:
 | |
|         state.has("Icon of Sin (MAP30)", player, 1) and
 | |
|         state.has("Rocket launcher", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Plasma gun", player, 1) and
 | |
|         state.has("BFG9000", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1))
 | |
| 
 | |
| 
 | |
| def set_episode4_rules(player, multiworld, pro):
 | |
|     # Wolfenstein2 (MAP31)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Wolfenstein2 (MAP31) Main", player), lambda state:
 | |
|        (state.has("Wolfenstein2 (MAP31)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
| 
 | |
|     # Grosse2 (MAP32)
 | |
|     set_rule(multiworld.get_entrance("Hub -> Grosse2 (MAP32) Main", player), lambda state:
 | |
|        (state.has("Grosse2 (MAP32)", player, 1) and
 | |
|         state.has("Shotgun", player, 1) and
 | |
|         state.has("Chaingun", player, 1) and
 | |
|         state.has("Super Shotgun", player, 1)) and
 | |
|        (state.has("Rocket launcher", player, 1) or
 | |
|         state.has("Plasma gun", player, 1) or
 | |
|         state.has("BFG9000", player, 1)))
 | |
| 
 | |
| 
 | |
| def set_rules(doom_ii_world: "DOOM2World", included_episodes, pro):
 | |
|     player = doom_ii_world.player
 | |
|     multiworld = doom_ii_world.multiworld
 | |
| 
 | |
|     if included_episodes[0]:
 | |
|         set_episode1_rules(player, multiworld, pro)
 | |
|     if included_episodes[1]:
 | |
|         set_episode2_rules(player, multiworld, pro)
 | |
|     if included_episodes[2]:
 | |
|         set_episode3_rules(player, multiworld, pro)
 | |
|     if included_episodes[3]:
 | |
|         set_episode4_rules(player, multiworld, pro)
 |