DOOM II: var world->multiworld fix and minor doc fix (#3140)

This commit is contained in:
David St-Louis 2024-04-19 17:11:12 -04:00 committed by GitHub
parent 7a004de9a0
commit a4acdb6ddf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 125 additions and 129 deletions

View File

@ -7,57 +7,53 @@ if TYPE_CHECKING:
from . import DOOM2World from . import DOOM2World
def set_episode1_rules(player, world, pro): def set_episode1_rules(player, multiworld, pro):
# Entryway (MAP01) # Entryway (MAP01)
set_rule(world.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state:
state.has("Entryway (MAP01)", player, 1)) state.has("Entryway (MAP01)", player, 1))
set_rule(world.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Entryway (MAP01) Main", player), lambda state:
state.has("Entryway (MAP01)", player, 1)) state.has("Entryway (MAP01)", player, 1))
# Underhalls (MAP02) # Underhalls (MAP02)
set_rule(world.get_entrance("Hub -> Underhalls (MAP02) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Underhalls (MAP02) Main", player), lambda state:
state.has("Underhalls (MAP02)", player, 1)) state.has("Underhalls (MAP02)", player, 1))
set_rule(world.get_entrance("Hub -> Underhalls (MAP02) Main", player), lambda state: set_rule(multiworld.get_entrance("Underhalls (MAP02) Main -> Underhalls (MAP02) Red", player), lambda state:
state.has("Underhalls (MAP02)", player, 1))
set_rule(world.get_entrance("Hub -> Underhalls (MAP02) Main", player), lambda state:
state.has("Underhalls (MAP02)", player, 1))
set_rule(world.get_entrance("Underhalls (MAP02) Main -> Underhalls (MAP02) Red", player), lambda state:
state.has("Underhalls (MAP02) - Red keycard", player, 1)) state.has("Underhalls (MAP02) - Red keycard", player, 1))
set_rule(world.get_entrance("Underhalls (MAP02) Blue -> Underhalls (MAP02) Red", player), lambda state: set_rule(multiworld.get_entrance("Underhalls (MAP02) Blue -> Underhalls (MAP02) Red", player), lambda state:
state.has("Underhalls (MAP02) - Blue keycard", player, 1)) state.has("Underhalls (MAP02) - Blue keycard", player, 1))
set_rule(world.get_entrance("Underhalls (MAP02) Red -> Underhalls (MAP02) Blue", player), lambda state: set_rule(multiworld.get_entrance("Underhalls (MAP02) Red -> Underhalls (MAP02) Blue", player), lambda state:
state.has("Underhalls (MAP02) - Blue keycard", player, 1)) state.has("Underhalls (MAP02) - Blue keycard", player, 1))
# The Gantlet (MAP03) # The Gantlet (MAP03)
set_rule(world.get_entrance("Hub -> The Gantlet (MAP03) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Gantlet (MAP03) Main", player), lambda state:
(state.has("The Gantlet (MAP03)", player, 1)) and (state.has("The Gantlet (MAP03)", player, 1)) and
(state.has("Shotgun", player, 1) or (state.has("Shotgun", player, 1) or
state.has("Chaingun", player, 1) or state.has("Chaingun", player, 1) or
state.has("Super Shotgun", player, 1))) state.has("Super Shotgun", player, 1)))
set_rule(world.get_entrance("The Gantlet (MAP03) Main -> The Gantlet (MAP03) Blue", player), lambda state: 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)) state.has("The Gantlet (MAP03) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Gantlet (MAP03) Blue -> The Gantlet (MAP03) Red", player), lambda state: 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)) state.has("The Gantlet (MAP03) - Red keycard", player, 1))
# The Focus (MAP04) # The Focus (MAP04)
set_rule(world.get_entrance("Hub -> The Focus (MAP04) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Focus (MAP04) Main", player), lambda state:
(state.has("The Focus (MAP04)", player, 1)) and (state.has("The Focus (MAP04)", player, 1)) and
(state.has("Shotgun", player, 1) or (state.has("Shotgun", player, 1) or
state.has("Chaingun", player, 1) or state.has("Chaingun", player, 1) or
state.has("Super Shotgun", player, 1))) state.has("Super Shotgun", player, 1)))
set_rule(world.get_entrance("The Focus (MAP04) Main -> The Focus (MAP04) Red", player), lambda state: 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)) state.has("The Focus (MAP04) - Red keycard", player, 1))
set_rule(world.get_entrance("The Focus (MAP04) Main -> The Focus (MAP04) Blue", player), lambda state: 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)) state.has("The Focus (MAP04) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Focus (MAP04) Yellow -> The Focus (MAP04) Red", player), lambda state: 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)) state.has("The Focus (MAP04) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Focus (MAP04) Red -> The Focus (MAP04) Yellow", player), lambda state: 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)) state.has("The Focus (MAP04) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Focus (MAP04) Red -> The Focus (MAP04) Main", player), lambda state: 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)) state.has("The Focus (MAP04) - Red keycard", player, 1))
# The Waste Tunnels (MAP05) # The Waste Tunnels (MAP05)
set_rule(world.get_entrance("Hub -> The Waste Tunnels (MAP05) Main", player), lambda state: 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("The Waste Tunnels (MAP05)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -65,19 +61,19 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Waste Tunnels (MAP05) Main -> The Waste Tunnels (MAP05) Red", player), lambda state: 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)) state.has("The Waste Tunnels (MAP05) - Red keycard", player, 1))
set_rule(world.get_entrance("The Waste Tunnels (MAP05) Main -> The Waste Tunnels (MAP05) Blue", player), lambda state: 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)) state.has("The Waste Tunnels (MAP05) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Waste Tunnels (MAP05) Blue -> The Waste Tunnels (MAP05) Yellow", player), lambda state: 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)) state.has("The Waste Tunnels (MAP05) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Waste Tunnels (MAP05) Blue -> The Waste Tunnels (MAP05) Main", player), lambda state: 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)) state.has("The Waste Tunnels (MAP05) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Waste Tunnels (MAP05) Yellow -> The Waste Tunnels (MAP05) Blue", player), lambda state: 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)) state.has("The Waste Tunnels (MAP05) - Yellow keycard", player, 1))
# The Crusher (MAP06) # The Crusher (MAP06)
set_rule(world.get_entrance("Hub -> The Crusher (MAP06) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Crusher (MAP06) Main", player), lambda state:
(state.has("The Crusher (MAP06)", player, 1) and (state.has("The Crusher (MAP06)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -85,21 +81,21 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Crusher (MAP06) Main -> The Crusher (MAP06) Blue", player), lambda state: 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)) state.has("The Crusher (MAP06) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Crusher (MAP06) Blue -> The Crusher (MAP06) Red", player), lambda state: 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)) state.has("The Crusher (MAP06) - Red keycard", player, 1))
set_rule(world.get_entrance("The Crusher (MAP06) Blue -> The Crusher (MAP06) Main", player), lambda state: 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)) state.has("The Crusher (MAP06) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Crusher (MAP06) Yellow -> The Crusher (MAP06) Red", player), lambda state: 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)) state.has("The Crusher (MAP06) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Crusher (MAP06) Red -> The Crusher (MAP06) Yellow", player), lambda state: 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)) state.has("The Crusher (MAP06) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Crusher (MAP06) Red -> The Crusher (MAP06) Blue", player), lambda state: 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)) state.has("The Crusher (MAP06) - Red keycard", player, 1))
# Dead Simple (MAP07) # Dead Simple (MAP07)
set_rule(world.get_entrance("Hub -> Dead Simple (MAP07) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Dead Simple (MAP07) Main", player), lambda state:
(state.has("Dead Simple (MAP07)", player, 1) and (state.has("Dead Simple (MAP07)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -109,7 +105,7 @@ def set_episode1_rules(player, world, pro):
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
# Tricks and Traps (MAP08) # Tricks and Traps (MAP08)
set_rule(world.get_entrance("Hub -> Tricks and Traps (MAP08) Main", player), lambda state: 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("Tricks and Traps (MAP08)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -117,13 +113,13 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Tricks and Traps (MAP08) Main -> Tricks and Traps (MAP08) Red", player), lambda state: 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)) state.has("Tricks and Traps (MAP08) - Red skull key", player, 1))
set_rule(world.get_entrance("Tricks and Traps (MAP08) Main -> Tricks and Traps (MAP08) Yellow", player), lambda state: 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)) state.has("Tricks and Traps (MAP08) - Yellow skull key", player, 1))
# The Pit (MAP09) # The Pit (MAP09)
set_rule(world.get_entrance("Hub -> The Pit (MAP09) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Pit (MAP09) Main", player), lambda state:
(state.has("The Pit (MAP09)", player, 1) and (state.has("The Pit (MAP09)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -131,15 +127,15 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Pit (MAP09) Main -> The Pit (MAP09) Yellow", player), lambda state: 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)) state.has("The Pit (MAP09) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Pit (MAP09) Main -> The Pit (MAP09) Blue", player), lambda state: 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)) state.has("The Pit (MAP09) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Pit (MAP09) Yellow -> The Pit (MAP09) Main", player), lambda state: 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)) state.has("The Pit (MAP09) - Yellow keycard", player, 1))
# Refueling Base (MAP10) # Refueling Base (MAP10)
set_rule(world.get_entrance("Hub -> Refueling Base (MAP10) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Refueling Base (MAP10) Main", player), lambda state:
(state.has("Refueling Base (MAP10)", player, 1) and (state.has("Refueling Base (MAP10)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -147,13 +143,13 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Refueling Base (MAP10) Main -> Refueling Base (MAP10) Yellow", player), lambda state: 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)) state.has("Refueling Base (MAP10) - Yellow keycard", player, 1))
set_rule(world.get_entrance("Refueling Base (MAP10) Yellow -> Refueling Base (MAP10) Yellow Blue", player), lambda state: 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)) state.has("Refueling Base (MAP10) - Blue keycard", player, 1))
# Circle of Death (MAP11) # Circle of Death (MAP11)
set_rule(world.get_entrance("Hub -> Circle of Death (MAP11) Main", player), lambda state: 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("Circle of Death (MAP11)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -161,15 +157,15 @@ def set_episode1_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Circle of Death (MAP11) Main -> Circle of Death (MAP11) Blue", player), lambda state: 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)) state.has("Circle of Death (MAP11) - Blue keycard", player, 1))
set_rule(world.get_entrance("Circle of Death (MAP11) Main -> Circle of Death (MAP11) Red", player), lambda state: 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)) state.has("Circle of Death (MAP11) - Red keycard", player, 1))
def set_episode2_rules(player, world, pro): def set_episode2_rules(player, multiworld, pro):
# The Factory (MAP12) # The Factory (MAP12)
set_rule(world.get_entrance("Hub -> The Factory (MAP12) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Factory (MAP12) Main", player), lambda state:
(state.has("The Factory (MAP12)", player, 1) and (state.has("The Factory (MAP12)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -177,13 +173,13 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Factory (MAP12) Main -> The Factory (MAP12) Yellow", player), lambda state: 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)) state.has("The Factory (MAP12) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Factory (MAP12) Main -> The Factory (MAP12) Blue", player), lambda state: 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)) state.has("The Factory (MAP12) - Blue keycard", player, 1))
# Downtown (MAP13) # Downtown (MAP13)
set_rule(world.get_entrance("Hub -> Downtown (MAP13) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Downtown (MAP13) Main", player), lambda state:
(state.has("Downtown (MAP13)", player, 1) and (state.has("Downtown (MAP13)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -191,15 +187,15 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Yellow", player), lambda state: set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Yellow", player), lambda state:
state.has("Downtown (MAP13) - Yellow keycard", player, 1)) state.has("Downtown (MAP13) - Yellow keycard", player, 1))
set_rule(world.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Red", player), lambda state: set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Red", player), lambda state:
state.has("Downtown (MAP13) - Red keycard", player, 1)) state.has("Downtown (MAP13) - Red keycard", player, 1))
set_rule(world.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Blue", player), lambda state: set_rule(multiworld.get_entrance("Downtown (MAP13) Main -> Downtown (MAP13) Blue", player), lambda state:
state.has("Downtown (MAP13) - Blue keycard", player, 1)) state.has("Downtown (MAP13) - Blue keycard", player, 1))
# The Inmost Dens (MAP14) # The Inmost Dens (MAP14)
set_rule(world.get_entrance("Hub -> The Inmost Dens (MAP14) Main", player), lambda state: 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("The Inmost Dens (MAP14)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -207,17 +203,17 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Inmost Dens (MAP14) Main -> The Inmost Dens (MAP14) Red", player), lambda state: 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)) state.has("The Inmost Dens (MAP14) - Red skull key", player, 1))
set_rule(world.get_entrance("The Inmost Dens (MAP14) Blue -> The Inmost Dens (MAP14) Red East", player), lambda state: 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)) state.has("The Inmost Dens (MAP14) - Blue skull key", player, 1))
set_rule(world.get_entrance("The Inmost Dens (MAP14) Red -> The Inmost Dens (MAP14) Main", player), lambda state: 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)) state.has("The Inmost Dens (MAP14) - Red skull key", player, 1))
set_rule(world.get_entrance("The Inmost Dens (MAP14) Red East -> The Inmost Dens (MAP14) Blue", player), lambda state: 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)) state.has("The Inmost Dens (MAP14) - Blue skull key", player, 1))
# Industrial Zone (MAP15) # Industrial Zone (MAP15)
set_rule(world.get_entrance("Hub -> Industrial Zone (MAP15) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Industrial Zone (MAP15) Main", player), lambda state:
(state.has("Industrial Zone (MAP15)", player, 1) and (state.has("Industrial Zone (MAP15)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -225,17 +221,17 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Industrial Zone (MAP15) Main -> Industrial Zone (MAP15) Yellow East", player), lambda state: 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)) state.has("Industrial Zone (MAP15) - Yellow keycard", player, 1))
set_rule(world.get_entrance("Industrial Zone (MAP15) Main -> Industrial Zone (MAP15) Yellow West", player), lambda state: 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)) state.has("Industrial Zone (MAP15) - Yellow keycard", player, 1))
set_rule(world.get_entrance("Industrial Zone (MAP15) Blue -> Industrial Zone (MAP15) Yellow East", player), lambda state: 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)) state.has("Industrial Zone (MAP15) - Blue keycard", player, 1))
set_rule(world.get_entrance("Industrial Zone (MAP15) Yellow East -> Industrial Zone (MAP15) Blue", player), lambda state: 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)) state.has("Industrial Zone (MAP15) - Blue keycard", player, 1))
# Suburbs (MAP16) # Suburbs (MAP16)
set_rule(world.get_entrance("Hub -> Suburbs (MAP16) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Suburbs (MAP16) Main", player), lambda state:
(state.has("Suburbs (MAP16)", player, 1) and (state.has("Suburbs (MAP16)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -243,13 +239,13 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Red", player), lambda state: set_rule(multiworld.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Red", player), lambda state:
state.has("Suburbs (MAP16) - Red skull key", player, 1)) state.has("Suburbs (MAP16) - Red skull key", player, 1))
set_rule(world.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Blue", player), lambda state: set_rule(multiworld.get_entrance("Suburbs (MAP16) Main -> Suburbs (MAP16) Blue", player), lambda state:
state.has("Suburbs (MAP16) - Blue skull key", player, 1)) state.has("Suburbs (MAP16) - Blue skull key", player, 1))
# Tenements (MAP17) # Tenements (MAP17)
set_rule(world.get_entrance("Hub -> Tenements (MAP17) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Tenements (MAP17) Main", player), lambda state:
(state.has("Tenements (MAP17)", player, 1) and (state.has("Tenements (MAP17)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -257,15 +253,15 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Tenements (MAP17) Main -> Tenements (MAP17) Red", player), lambda state: set_rule(multiworld.get_entrance("Tenements (MAP17) Main -> Tenements (MAP17) Red", player), lambda state:
state.has("Tenements (MAP17) - Red keycard", player, 1)) state.has("Tenements (MAP17) - Red keycard", player, 1))
set_rule(world.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Yellow", player), lambda state: set_rule(multiworld.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Yellow", player), lambda state:
state.has("Tenements (MAP17) - Yellow skull key", player, 1)) state.has("Tenements (MAP17) - Yellow skull key", player, 1))
set_rule(world.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Blue", player), lambda state: set_rule(multiworld.get_entrance("Tenements (MAP17) Red -> Tenements (MAP17) Blue", player), lambda state:
state.has("Tenements (MAP17) - Blue keycard", player, 1)) state.has("Tenements (MAP17) - Blue keycard", player, 1))
# The Courtyard (MAP18) # The Courtyard (MAP18)
set_rule(world.get_entrance("Hub -> The Courtyard (MAP18) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Courtyard (MAP18) Main", player), lambda state:
(state.has("The Courtyard (MAP18)", player, 1) and (state.has("The Courtyard (MAP18)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -273,17 +269,17 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Courtyard (MAP18) Main -> The Courtyard (MAP18) Yellow", player), lambda state: 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)) state.has("The Courtyard (MAP18) - Yellow skull key", player, 1))
set_rule(world.get_entrance("The Courtyard (MAP18) Main -> The Courtyard (MAP18) Blue", player), lambda state: 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)) state.has("The Courtyard (MAP18) - Blue skull key", player, 1))
set_rule(world.get_entrance("The Courtyard (MAP18) Blue -> The Courtyard (MAP18) Main", player), lambda state: 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)) state.has("The Courtyard (MAP18) - Blue skull key", player, 1))
set_rule(world.get_entrance("The Courtyard (MAP18) Yellow -> The Courtyard (MAP18) Main", player), lambda state: 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)) state.has("The Courtyard (MAP18) - Yellow skull key", player, 1))
# The Citadel (MAP19) # The Citadel (MAP19)
set_rule(world.get_entrance("Hub -> The Citadel (MAP19) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Citadel (MAP19) Main", player), lambda state:
(state.has("The Citadel (MAP19)", player, 1) and (state.has("The Citadel (MAP19)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -291,15 +287,15 @@ def set_episode2_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("The Citadel (MAP19) Main -> The Citadel (MAP19) Red", player), lambda state: 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) - 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))) state.has("The Citadel (MAP19) - Yellow skull key", player, 1)))
set_rule(world.get_entrance("The Citadel (MAP19) Red -> The Citadel (MAP19) Main", player), lambda state: 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) - 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))) state.has("The Citadel (MAP19) - Blue skull key", player, 1)))
# Gotcha! (MAP20) # Gotcha! (MAP20)
set_rule(world.get_entrance("Hub -> Gotcha! (MAP20) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Gotcha! (MAP20) Main", player), lambda state:
(state.has("Gotcha! (MAP20)", player, 1) and (state.has("Gotcha! (MAP20)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -309,9 +305,9 @@ def set_episode2_rules(player, world, pro):
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
def set_episode3_rules(player, world, pro): def set_episode3_rules(player, multiworld, pro):
# Nirvana (MAP21) # Nirvana (MAP21)
set_rule(world.get_entrance("Hub -> Nirvana (MAP21) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Nirvana (MAP21) Main", player), lambda state:
(state.has("Nirvana (MAP21)", player, 1) and (state.has("Nirvana (MAP21)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -319,19 +315,19 @@ def set_episode3_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Nirvana (MAP21) Main -> Nirvana (MAP21) Yellow", player), lambda state: set_rule(multiworld.get_entrance("Nirvana (MAP21) Main -> Nirvana (MAP21) Yellow", player), lambda state:
state.has("Nirvana (MAP21) - Yellow skull key", player, 1)) state.has("Nirvana (MAP21) - Yellow skull key", player, 1))
set_rule(world.get_entrance("Nirvana (MAP21) Yellow -> Nirvana (MAP21) Main", player), lambda state: set_rule(multiworld.get_entrance("Nirvana (MAP21) Yellow -> Nirvana (MAP21) Main", player), lambda state:
state.has("Nirvana (MAP21) - Yellow skull key", player, 1)) state.has("Nirvana (MAP21) - Yellow skull key", player, 1))
set_rule(world.get_entrance("Nirvana (MAP21) Yellow -> Nirvana (MAP21) Magenta", player), lambda state: 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) - Red skull key", player, 1) and
state.has("Nirvana (MAP21) - Blue skull key", player, 1)) state.has("Nirvana (MAP21) - Blue skull key", player, 1))
set_rule(world.get_entrance("Nirvana (MAP21) Magenta -> Nirvana (MAP21) Yellow", player), lambda state: 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) - Red skull key", player, 1) and
state.has("Nirvana (MAP21) - Blue skull key", player, 1)) state.has("Nirvana (MAP21) - Blue skull key", player, 1))
# The Catacombs (MAP22) # The Catacombs (MAP22)
set_rule(world.get_entrance("Hub -> The Catacombs (MAP22) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Catacombs (MAP22) Main", player), lambda state:
(state.has("The Catacombs (MAP22)", player, 1) and (state.has("The Catacombs (MAP22)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -339,15 +335,15 @@ def set_episode3_rules(player, world, pro):
(state.has("BFG9000", player, 1) or (state.has("BFG9000", player, 1) or
state.has("Rocket launcher", player, 1) or state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1))) state.has("Plasma gun", player, 1)))
set_rule(world.get_entrance("The Catacombs (MAP22) Main -> The Catacombs (MAP22) Blue", player), lambda state: 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)) state.has("The Catacombs (MAP22) - Blue skull key", player, 1))
set_rule(world.get_entrance("The Catacombs (MAP22) Main -> The Catacombs (MAP22) Red", player), lambda state: 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)) state.has("The Catacombs (MAP22) - Red skull key", player, 1))
set_rule(world.get_entrance("The Catacombs (MAP22) Red -> The Catacombs (MAP22) Main", player), lambda state: 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)) state.has("The Catacombs (MAP22) - Red skull key", player, 1))
# Barrels o Fun (MAP23) # Barrels o Fun (MAP23)
set_rule(world.get_entrance("Hub -> Barrels o Fun (MAP23) Main", player), lambda state: 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("Barrels o Fun (MAP23)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -355,13 +351,13 @@ def set_episode3_rules(player, world, pro):
(state.has("Rocket launcher", player, 1) or (state.has("Rocket launcher", player, 1) or
state.has("Plasma gun", player, 1) or state.has("Plasma gun", player, 1) or
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
set_rule(world.get_entrance("Barrels o Fun (MAP23) Main -> Barrels o Fun (MAP23) Yellow", player), lambda state: 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)) state.has("Barrels o Fun (MAP23) - Yellow skull key", player, 1))
set_rule(world.get_entrance("Barrels o Fun (MAP23) Yellow -> Barrels o Fun (MAP23) Main", player), lambda state: 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)) state.has("Barrels o Fun (MAP23) - Yellow skull key", player, 1))
# The Chasm (MAP24) # The Chasm (MAP24)
set_rule(world.get_entrance("Hub -> The Chasm (MAP24) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> The Chasm (MAP24) Main", player), lambda state:
state.has("The Chasm (MAP24)", player, 1) and state.has("The Chasm (MAP24)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -369,13 +365,13 @@ def set_episode3_rules(player, world, pro):
state.has("Plasma gun", player, 1) and state.has("Plasma gun", player, 1) and
state.has("BFG9000", player, 1) and state.has("BFG9000", player, 1) and
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
set_rule(world.get_entrance("The Chasm (MAP24) Main -> The Chasm (MAP24) Red", player), lambda state: 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)) state.has("The Chasm (MAP24) - Red keycard", player, 1))
set_rule(world.get_entrance("The Chasm (MAP24) Red -> The Chasm (MAP24) Main", player), lambda state: 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)) state.has("The Chasm (MAP24) - Red keycard", player, 1))
# Bloodfalls (MAP25) # Bloodfalls (MAP25)
set_rule(world.get_entrance("Hub -> Bloodfalls (MAP25) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Bloodfalls (MAP25) Main", player), lambda state:
state.has("Bloodfalls (MAP25)", player, 1) and state.has("Bloodfalls (MAP25)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -383,13 +379,13 @@ def set_episode3_rules(player, world, pro):
state.has("Plasma gun", player, 1) and state.has("Plasma gun", player, 1) and
state.has("BFG9000", player, 1) and state.has("BFG9000", player, 1) and
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
set_rule(world.get_entrance("Bloodfalls (MAP25) Main -> Bloodfalls (MAP25) Blue", player), lambda state: set_rule(multiworld.get_entrance("Bloodfalls (MAP25) Main -> Bloodfalls (MAP25) Blue", player), lambda state:
state.has("Bloodfalls (MAP25) - Blue skull key", player, 1)) state.has("Bloodfalls (MAP25) - Blue skull key", player, 1))
set_rule(world.get_entrance("Bloodfalls (MAP25) Blue -> Bloodfalls (MAP25) Main", player), lambda state: set_rule(multiworld.get_entrance("Bloodfalls (MAP25) Blue -> Bloodfalls (MAP25) Main", player), lambda state:
state.has("Bloodfalls (MAP25) - Blue skull key", player, 1)) state.has("Bloodfalls (MAP25) - Blue skull key", player, 1))
# The Abandoned Mines (MAP26) # The Abandoned Mines (MAP26)
set_rule(world.get_entrance("Hub -> The Abandoned Mines (MAP26) Main", player), lambda state: 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("The Abandoned Mines (MAP26)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -397,19 +393,19 @@ def set_episode3_rules(player, world, pro):
state.has("BFG9000", player, 1) and state.has("BFG9000", player, 1) and
state.has("Plasma gun", player, 1) and state.has("Plasma gun", player, 1) and
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
set_rule(world.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Yellow", player), lambda state: 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)) state.has("The Abandoned Mines (MAP26) - Yellow keycard", player, 1))
set_rule(world.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Red", player), lambda state: 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)) state.has("The Abandoned Mines (MAP26) - Red keycard", player, 1))
set_rule(world.get_entrance("The Abandoned Mines (MAP26) Main -> The Abandoned Mines (MAP26) Blue", player), lambda state: 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)) state.has("The Abandoned Mines (MAP26) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Abandoned Mines (MAP26) Blue -> The Abandoned Mines (MAP26) Main", player), lambda state: 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)) state.has("The Abandoned Mines (MAP26) - Blue keycard", player, 1))
set_rule(world.get_entrance("The Abandoned Mines (MAP26) Yellow -> The Abandoned Mines (MAP26) Main", player), lambda state: 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)) state.has("The Abandoned Mines (MAP26) - Yellow keycard", player, 1))
# Monster Condo (MAP27) # Monster Condo (MAP27)
set_rule(world.get_entrance("Hub -> Monster Condo (MAP27) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Monster Condo (MAP27) Main", player), lambda state:
state.has("Monster Condo (MAP27)", player, 1) and state.has("Monster Condo (MAP27)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -417,17 +413,17 @@ def set_episode3_rules(player, world, pro):
state.has("Plasma gun", player, 1) and state.has("Plasma gun", player, 1) and
state.has("BFG9000", player, 1) and state.has("BFG9000", player, 1) and
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
set_rule(world.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Yellow", player), lambda state: 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)) state.has("Monster Condo (MAP27) - Yellow skull key", player, 1))
set_rule(world.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Red", player), lambda state: 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)) state.has("Monster Condo (MAP27) - Red skull key", player, 1))
set_rule(world.get_entrance("Monster Condo (MAP27) Main -> Monster Condo (MAP27) Blue", player), lambda state: 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)) state.has("Monster Condo (MAP27) - Blue skull key", player, 1))
set_rule(world.get_entrance("Monster Condo (MAP27) Red -> Monster Condo (MAP27) Main", player), lambda state: 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)) state.has("Monster Condo (MAP27) - Red skull key", player, 1))
# The Spirit World (MAP28) # The Spirit World (MAP28)
set_rule(world.get_entrance("Hub -> The Spirit World (MAP28) Main", player), lambda state: 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("The Spirit World (MAP28)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Rocket launcher", player, 1) and state.has("Rocket launcher", player, 1) and
@ -435,17 +431,17 @@ def set_episode3_rules(player, world, pro):
state.has("Plasma gun", player, 1) and state.has("Plasma gun", player, 1) and
state.has("BFG9000", player, 1) and state.has("BFG9000", player, 1) and
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
set_rule(world.get_entrance("The Spirit World (MAP28) Main -> The Spirit World (MAP28) Yellow", player), lambda state: 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)) state.has("The Spirit World (MAP28) - Yellow skull key", player, 1))
set_rule(world.get_entrance("The Spirit World (MAP28) Main -> The Spirit World (MAP28) Red", player), lambda state: 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)) state.has("The Spirit World (MAP28) - Red skull key", player, 1))
set_rule(world.get_entrance("The Spirit World (MAP28) Yellow -> The Spirit World (MAP28) Main", player), lambda state: 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)) state.has("The Spirit World (MAP28) - Yellow skull key", player, 1))
set_rule(world.get_entrance("The Spirit World (MAP28) Red -> The Spirit World (MAP28) Main", player), lambda state: 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)) state.has("The Spirit World (MAP28) - Red skull key", player, 1))
# The Living End (MAP29) # The Living End (MAP29)
set_rule(world.get_entrance("Hub -> The Living End (MAP29) Main", player), lambda state: 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("The Living End (MAP29)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -455,7 +451,7 @@ def set_episode3_rules(player, world, pro):
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
# Icon of Sin (MAP30) # Icon of Sin (MAP30)
set_rule(world.get_entrance("Hub -> Icon of Sin (MAP30) Main", player), lambda state: 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("Icon of Sin (MAP30)", player, 1) and
state.has("Rocket launcher", player, 1) and state.has("Rocket launcher", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
@ -465,9 +461,9 @@ def set_episode3_rules(player, world, pro):
state.has("Super Shotgun", player, 1)) state.has("Super Shotgun", player, 1))
def set_episode4_rules(player, world, pro): def set_episode4_rules(player, multiworld, pro):
# Wolfenstein2 (MAP31) # Wolfenstein2 (MAP31)
set_rule(world.get_entrance("Hub -> Wolfenstein2 (MAP31) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Wolfenstein2 (MAP31) Main", player), lambda state:
(state.has("Wolfenstein2 (MAP31)", player, 1) and (state.has("Wolfenstein2 (MAP31)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -477,7 +473,7 @@ def set_episode4_rules(player, world, pro):
state.has("BFG9000", player, 1))) state.has("BFG9000", player, 1)))
# Grosse2 (MAP32) # Grosse2 (MAP32)
set_rule(world.get_entrance("Hub -> Grosse2 (MAP32) Main", player), lambda state: set_rule(multiworld.get_entrance("Hub -> Grosse2 (MAP32) Main", player), lambda state:
(state.has("Grosse2 (MAP32)", player, 1) and (state.has("Grosse2 (MAP32)", player, 1) and
state.has("Shotgun", player, 1) and state.has("Shotgun", player, 1) and
state.has("Chaingun", player, 1) and state.has("Chaingun", player, 1) and
@ -489,13 +485,13 @@ def set_episode4_rules(player, world, pro):
def set_rules(doom_ii_world: "DOOM2World", included_episodes, pro): def set_rules(doom_ii_world: "DOOM2World", included_episodes, pro):
player = doom_ii_world.player player = doom_ii_world.player
world = doom_ii_world.multiworld multiworld = doom_ii_world.multiworld
if included_episodes[0]: if included_episodes[0]:
set_episode1_rules(player, world, pro) set_episode1_rules(player, multiworld, pro)
if included_episodes[1]: if included_episodes[1]:
set_episode2_rules(player, world, pro) set_episode2_rules(player, multiworld, pro)
if included_episodes[2]: if included_episodes[2]:
set_episode3_rules(player, world, pro) set_episode3_rules(player, multiworld, pro)
if included_episodes[3]: if included_episodes[3]:
set_episode4_rules(player, world, pro) set_episode4_rules(player, multiworld, pro)

View File

@ -74,11 +74,11 @@ class DOOM2World(World):
"Energy cell pack": 10 "Energy cell pack": 10
} }
def __init__(self, world: MultiWorld, player: int): def __init__(self, multiworld: MultiWorld, player: int):
self.included_episodes = [1, 1, 1, 0] self.included_episodes = [1, 1, 1, 0]
self.location_count = 0 self.location_count = 0
super().__init__(world, player) super().__init__(multiworld, player)
def get_episode_count(self): def get_episode_count(self):
# Don't include 4th, those are secret levels they are additive # Don't include 4th, those are secret levels they are additive

View File

@ -13,7 +13,7 @@
1. Download [APDOOM.zip](https://github.com/Daivuk/apdoom/releases) and extract it. 1. Download [APDOOM.zip](https://github.com/Daivuk/apdoom/releases) and extract it.
2. Copy DOOM2.WAD from your steam install into the extracted folder. 2. Copy DOOM2.WAD from your steam install into the extracted folder.
You can find the folder in steam by finding the game in your library, You can find the folder in steam by finding the game in your library,
right clicking it and choosing *Manage→Browse Local Files*. right clicking it and choosing *Manage→Browse Local Files*. The WAD file is in the `/base/` folder.
## Joining a MultiWorld Game ## Joining a MultiWorld Game