mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-05-20 21:21:45 -07:00
Heretic: Update to use new Options + logic fixes + Doc fix (#3139)
This commit is contained in:
+11
-11
@@ -1266,7 +1266,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 10,
|
||||
'doom_type': 79,
|
||||
'region': "The River of Fire (E2M3) Main"},
|
||||
'region': "The River of Fire (E2M3) Green"},
|
||||
371179: {'name': 'The River of Fire (E2M3) - Green key',
|
||||
'episode': 2,
|
||||
'check_sanity': False,
|
||||
@@ -1301,7 +1301,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 122,
|
||||
'doom_type': 2003,
|
||||
'region': "The River of Fire (E2M3) Main"},
|
||||
'region': "The River of Fire (E2M3) Green"},
|
||||
371184: {'name': 'The River of Fire (E2M3) - Hellstaff',
|
||||
'episode': 2,
|
||||
'check_sanity': False,
|
||||
@@ -1364,7 +1364,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 299,
|
||||
'doom_type': 32,
|
||||
'region': "The River of Fire (E2M3) Main"},
|
||||
'region': "The River of Fire (E2M3) Green"},
|
||||
371193: {'name': 'The River of Fire (E2M3) - Morph Ovum',
|
||||
'episode': 2,
|
||||
'check_sanity': False,
|
||||
@@ -1385,7 +1385,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 413,
|
||||
'doom_type': 2002,
|
||||
'region': "The River of Fire (E2M3) Main"},
|
||||
'region': "The River of Fire (E2M3) Green"},
|
||||
371196: {'name': 'The River of Fire (E2M3) - Firemace 2',
|
||||
'episode': 2,
|
||||
'check_sanity': True,
|
||||
@@ -2610,7 +2610,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 2,
|
||||
'index': 172,
|
||||
'doom_type': 33,
|
||||
'region': "The Cesspool (E3M2) Main"},
|
||||
'region': "The Cesspool (E3M2) Yellow"},
|
||||
371371: {'name': 'The Cesspool (E3M2) - Bag of Holding 2',
|
||||
'episode': 3,
|
||||
'check_sanity': False,
|
||||
@@ -4360,7 +4360,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 297,
|
||||
'doom_type': 2002,
|
||||
'region': "Ambulatory (E4M3) Green"},
|
||||
'region': "Ambulatory (E4M3) Green Lock"},
|
||||
371621: {'name': 'Ambulatory (E4M3) - Firemace 2',
|
||||
'episode': 4,
|
||||
'check_sanity': False,
|
||||
@@ -6040,7 +6040,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 234,
|
||||
'doom_type': 85,
|
||||
'region': "Quay (E5M3) Blue"},
|
||||
'region': "Quay (E5M3) Cyan"},
|
||||
371861: {'name': 'Quay (E5M3) - Map Scroll',
|
||||
'episode': 5,
|
||||
'check_sanity': True,
|
||||
@@ -6075,7 +6075,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 239,
|
||||
'doom_type': 86,
|
||||
'region': "Quay (E5M3) Blue"},
|
||||
'region': "Quay (E5M3) Cyan"},
|
||||
371866: {'name': 'Quay (E5M3) - Torch',
|
||||
'episode': 5,
|
||||
'check_sanity': False,
|
||||
@@ -6089,7 +6089,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 242,
|
||||
'doom_type': 2002,
|
||||
'region': "Quay (E5M3) Blue"},
|
||||
'region': "Quay (E5M3) Cyan"},
|
||||
371868: {'name': 'Quay (E5M3) - Firemace 2',
|
||||
'episode': 5,
|
||||
'check_sanity': False,
|
||||
@@ -6124,7 +6124,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': 247,
|
||||
'doom_type': 2002,
|
||||
'region': "Quay (E5M3) Blue"},
|
||||
'region': "Quay (E5M3) Cyan"},
|
||||
371873: {'name': 'Quay (E5M3) - Bag of Holding 2',
|
||||
'episode': 5,
|
||||
'check_sanity': True,
|
||||
@@ -6138,7 +6138,7 @@ location_table: Dict[int, LocationDict] = {
|
||||
'map': 3,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Quay (E5M3) Blue"},
|
||||
'region': "Quay (E5M3) Cyan"},
|
||||
371875: {'name': 'Courtyard (E5M4) - Blue key',
|
||||
'episode': 5,
|
||||
'check_sanity': False,
|
||||
|
||||
+21
-22
@@ -1,6 +1,5 @@
|
||||
import typing
|
||||
|
||||
from Options import AssembleOptions, Choice, Toggle, DeathLink, DefaultOnToggle, StartInventoryPool
|
||||
from Options import PerGameCommonOptions, Choice, Toggle, DeathLink, DefaultOnToggle, StartInventoryPool
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
class Goal(Choice):
|
||||
@@ -146,22 +145,22 @@ class Episode5(Toggle):
|
||||
display_name = "Episode 5"
|
||||
|
||||
|
||||
options: typing.Dict[str, AssembleOptions] = {
|
||||
"start_inventory_from_pool": StartInventoryPool,
|
||||
"goal": Goal,
|
||||
"difficulty": Difficulty,
|
||||
"random_monsters": RandomMonsters,
|
||||
"random_pickups": RandomPickups,
|
||||
"random_music": RandomMusic,
|
||||
"allow_death_logic": AllowDeathLogic,
|
||||
"pro": Pro,
|
||||
"check_sanity": CheckSanity,
|
||||
"start_with_map_scrolls": StartWithMapScrolls,
|
||||
"reset_level_on_death": ResetLevelOnDeath,
|
||||
"death_link": DeathLink,
|
||||
"episode1": Episode1,
|
||||
"episode2": Episode2,
|
||||
"episode3": Episode3,
|
||||
"episode4": Episode4,
|
||||
"episode5": Episode5
|
||||
}
|
||||
@dataclass
|
||||
class HereticOptions(PerGameCommonOptions):
|
||||
start_inventory_from_pool: StartInventoryPool
|
||||
goal: Goal
|
||||
difficulty: Difficulty
|
||||
random_monsters: RandomMonsters
|
||||
random_pickups: RandomPickups
|
||||
random_music: RandomMusic
|
||||
allow_death_logic: AllowDeathLogic
|
||||
pro: Pro
|
||||
check_sanity: CheckSanity
|
||||
start_with_map_scrolls: StartWithMapScrolls
|
||||
reset_level_on_death: ResetLevelOnDeath
|
||||
death_link: DeathLink
|
||||
episode1: Episode1
|
||||
episode2: Episode2
|
||||
episode3: Episode3
|
||||
episode4: Episode4
|
||||
episode5: Episode5
|
||||
|
||||
@@ -604,7 +604,8 @@ regions:List[RegionDict] = [
|
||||
"connections":[
|
||||
{"target":"Ambulatory (E4M3) Blue","pro":False},
|
||||
{"target":"Ambulatory (E4M3) Yellow","pro":False},
|
||||
{"target":"Ambulatory (E4M3) Green","pro":False}]},
|
||||
{"target":"Ambulatory (E4M3) Green","pro":False},
|
||||
{"target":"Ambulatory (E4M3) Green Lock","pro":False}]},
|
||||
{"name":"Ambulatory (E4M3) Blue",
|
||||
"connects_to_hub":False,
|
||||
"episode":4,
|
||||
@@ -619,6 +620,12 @@ regions:List[RegionDict] = [
|
||||
"connects_to_hub":False,
|
||||
"episode":4,
|
||||
"connections":[{"target":"Ambulatory (E4M3) Main","pro":False}]},
|
||||
{"name":"Ambulatory (E4M3) Green Lock",
|
||||
"connects_to_hub":False,
|
||||
"episode":4,
|
||||
"connections":[
|
||||
{"target":"Ambulatory (E4M3) Green","pro":False},
|
||||
{"target":"Ambulatory (E4M3) Main","pro":False}]},
|
||||
|
||||
# Sepulcher (E4M4)
|
||||
{"name":"Sepulcher (E4M4) Main",
|
||||
@@ -767,9 +774,7 @@ regions:List[RegionDict] = [
|
||||
{"name":"Quay (E5M3) Blue",
|
||||
"connects_to_hub":False,
|
||||
"episode":5,
|
||||
"connections":[
|
||||
{"target":"Quay (E5M3) Green","pro":False},
|
||||
{"target":"Quay (E5M3) Main","pro":False}]},
|
||||
"connections":[{"target":"Quay (E5M3) Main","pro":False}]},
|
||||
{"name":"Quay (E5M3) Yellow",
|
||||
"connects_to_hub":False,
|
||||
"episode":5,
|
||||
@@ -779,7 +784,11 @@ regions:List[RegionDict] = [
|
||||
"episode":5,
|
||||
"connections":[
|
||||
{"target":"Quay (E5M3) Main","pro":False},
|
||||
{"target":"Quay (E5M3) Blue","pro":False}]},
|
||||
{"target":"Quay (E5M3) Cyan","pro":False}]},
|
||||
{"name":"Quay (E5M3) Cyan",
|
||||
"connects_to_hub":False,
|
||||
"episode":5,
|
||||
"connections":[{"target":"Quay (E5M3) Main","pro":False}]},
|
||||
|
||||
# Courtyard (E5M4)
|
||||
{"name":"Courtyard (E5M4) Main",
|
||||
|
||||
+220
-220
@@ -7,185 +7,185 @@ if TYPE_CHECKING:
|
||||
from . import HereticWorld
|
||||
|
||||
|
||||
def set_episode1_rules(player, world, pro):
|
||||
def set_episode1_rules(player, multiworld, pro):
|
||||
# The Docks (E1M1)
|
||||
set_rule(world.get_entrance("Hub -> The Docks (E1M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Docks (E1M1) Main", player), lambda state:
|
||||
state.has("The Docks (E1M1)", player, 1))
|
||||
set_rule(world.get_entrance("The Docks (E1M1) Main -> The Docks (E1M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Docks (E1M1) Main -> The Docks (E1M1) Yellow", player), lambda state:
|
||||
state.has("The Docks (E1M1) - Yellow key", player, 1))
|
||||
|
||||
# The Dungeons (E1M2)
|
||||
set_rule(world.get_entrance("Hub -> The Dungeons (E1M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Dungeons (E1M2) Main", player), lambda state:
|
||||
(state.has("The Dungeons (E1M2)", player, 1)) and
|
||||
(state.has("Dragon Claw", player, 1) or
|
||||
state.has("Ethereal Crossbow", player, 1)))
|
||||
set_rule(world.get_entrance("The Dungeons (E1M2) Main -> The Dungeons (E1M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Dungeons (E1M2) Main -> The Dungeons (E1M2) Yellow", player), lambda state:
|
||||
state.has("The Dungeons (E1M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Dungeons (E1M2) Main -> The Dungeons (E1M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Dungeons (E1M2) Main -> The Dungeons (E1M2) Green", player), lambda state:
|
||||
state.has("The Dungeons (E1M2) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Dungeons (E1M2) Blue -> The Dungeons (E1M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Dungeons (E1M2) Blue -> The Dungeons (E1M2) Yellow", player), lambda state:
|
||||
state.has("The Dungeons (E1M2) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Dungeons (E1M2) Yellow -> The Dungeons (E1M2) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Dungeons (E1M2) Yellow -> The Dungeons (E1M2) Blue", player), lambda state:
|
||||
state.has("The Dungeons (E1M2) - Blue key", player, 1))
|
||||
|
||||
# The Gatehouse (E1M3)
|
||||
set_rule(world.get_entrance("Hub -> The Gatehouse (E1M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Gatehouse (E1M3) Main", player), lambda state:
|
||||
(state.has("The Gatehouse (E1M3)", player, 1)) and
|
||||
(state.has("Ethereal Crossbow", player, 1) or
|
||||
state.has("Dragon Claw", player, 1)))
|
||||
set_rule(world.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Yellow", player), lambda state:
|
||||
state.has("The Gatehouse (E1M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Sea", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Sea", player), lambda state:
|
||||
state.has("The Gatehouse (E1M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Gatehouse (E1M3) Main -> The Gatehouse (E1M3) Green", player), lambda state:
|
||||
state.has("The Gatehouse (E1M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Gatehouse (E1M3) Green -> The Gatehouse (E1M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Gatehouse (E1M3) Green -> The Gatehouse (E1M3) Main", player), lambda state:
|
||||
state.has("The Gatehouse (E1M3) - Green key", player, 1))
|
||||
|
||||
# The Guard Tower (E1M4)
|
||||
set_rule(world.get_entrance("Hub -> The Guard Tower (E1M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Guard Tower (E1M4) Main", player), lambda state:
|
||||
(state.has("The Guard Tower (E1M4)", player, 1)) and
|
||||
(state.has("Ethereal Crossbow", player, 1) or
|
||||
state.has("Dragon Claw", player, 1)))
|
||||
set_rule(world.get_entrance("The Guard Tower (E1M4) Main -> The Guard Tower (E1M4) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Guard Tower (E1M4) Main -> The Guard Tower (E1M4) Yellow", player), lambda state:
|
||||
state.has("The Guard Tower (E1M4) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Guard Tower (E1M4) Yellow -> The Guard Tower (E1M4) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Guard Tower (E1M4) Yellow -> The Guard Tower (E1M4) Green", player), lambda state:
|
||||
state.has("The Guard Tower (E1M4) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Guard Tower (E1M4) Green -> The Guard Tower (E1M4) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Guard Tower (E1M4) Green -> The Guard Tower (E1M4) Yellow", player), lambda state:
|
||||
state.has("The Guard Tower (E1M4) - Green key", player, 1))
|
||||
|
||||
# The Citadel (E1M5)
|
||||
set_rule(world.get_entrance("Hub -> The Citadel (E1M5) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Citadel (E1M5) Main", player), lambda state:
|
||||
(state.has("The Citadel (E1M5)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1)) and
|
||||
(state.has("Dragon Claw", player, 1) or
|
||||
state.has("Gauntlets of the Necromancer", player, 1)))
|
||||
set_rule(world.get_entrance("The Citadel (E1M5) Main -> The Citadel (E1M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Citadel (E1M5) Main -> The Citadel (E1M5) Yellow", player), lambda state:
|
||||
state.has("The Citadel (E1M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Citadel (E1M5) Blue -> The Citadel (E1M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Citadel (E1M5) Blue -> The Citadel (E1M5) Green", player), lambda state:
|
||||
state.has("The Citadel (E1M5) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Citadel (E1M5) Yellow -> The Citadel (E1M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Citadel (E1M5) Yellow -> The Citadel (E1M5) Green", player), lambda state:
|
||||
state.has("The Citadel (E1M5) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Citadel (E1M5) Green -> The Citadel (E1M5) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Citadel (E1M5) Green -> The Citadel (E1M5) Blue", player), lambda state:
|
||||
state.has("The Citadel (E1M5) - Blue key", player, 1))
|
||||
|
||||
# The Cathedral (E1M6)
|
||||
set_rule(world.get_entrance("Hub -> The Cathedral (E1M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Cathedral (E1M6) Main", player), lambda state:
|
||||
(state.has("The Cathedral (E1M6)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1)) and
|
||||
(state.has("Gauntlets of the Necromancer", player, 1) or
|
||||
state.has("Dragon Claw", player, 1)))
|
||||
set_rule(world.get_entrance("The Cathedral (E1M6) Main -> The Cathedral (E1M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cathedral (E1M6) Main -> The Cathedral (E1M6) Yellow", player), lambda state:
|
||||
state.has("The Cathedral (E1M6) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Cathedral (E1M6) Yellow -> The Cathedral (E1M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cathedral (E1M6) Yellow -> The Cathedral (E1M6) Green", player), lambda state:
|
||||
state.has("The Cathedral (E1M6) - Green key", player, 1))
|
||||
|
||||
# The Crypts (E1M7)
|
||||
set_rule(world.get_entrance("Hub -> The Crypts (E1M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Crypts (E1M7) Main", player), lambda state:
|
||||
(state.has("The Crypts (E1M7)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1)) and
|
||||
(state.has("Gauntlets of the Necromancer", player, 1) or
|
||||
state.has("Dragon Claw", player, 1)))
|
||||
set_rule(world.get_entrance("The Crypts (E1M7) Main -> The Crypts (E1M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crypts (E1M7) Main -> The Crypts (E1M7) Yellow", player), lambda state:
|
||||
state.has("The Crypts (E1M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Crypts (E1M7) Main -> The Crypts (E1M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crypts (E1M7) Main -> The Crypts (E1M7) Green", player), lambda state:
|
||||
state.has("The Crypts (E1M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Crypts (E1M7) Yellow -> The Crypts (E1M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crypts (E1M7) Yellow -> The Crypts (E1M7) Green", player), lambda state:
|
||||
state.has("The Crypts (E1M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Crypts (E1M7) Yellow -> The Crypts (E1M7) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crypts (E1M7) Yellow -> The Crypts (E1M7) Blue", player), lambda state:
|
||||
state.has("The Crypts (E1M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Crypts (E1M7) Green -> The Crypts (E1M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crypts (E1M7) Green -> The Crypts (E1M7) Main", player), lambda state:
|
||||
state.has("The Crypts (E1M7) - Green key", player, 1))
|
||||
|
||||
# Hell's Maw (E1M8)
|
||||
set_rule(world.get_entrance("Hub -> Hell's Maw (E1M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Hell's Maw (E1M8) Main", player), lambda state:
|
||||
state.has("Hell's Maw (E1M8)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1))
|
||||
|
||||
# The Graveyard (E1M9)
|
||||
set_rule(world.get_entrance("Hub -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
state.has("The Graveyard (E1M9)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1))
|
||||
set_rule(world.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Yellow", player), lambda state:
|
||||
state.has("The Graveyard (E1M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Green", player), lambda state:
|
||||
state.has("The Graveyard (E1M9) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Graveyard (E1M9) Main -> The Graveyard (E1M9) Blue", player), lambda state:
|
||||
state.has("The Graveyard (E1M9) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Graveyard (E1M9) Yellow -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Graveyard (E1M9) Yellow -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
state.has("The Graveyard (E1M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Graveyard (E1M9) Green -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Graveyard (E1M9) Green -> The Graveyard (E1M9) Main", player), lambda state:
|
||||
state.has("The Graveyard (E1M9) - Green key", player, 1))
|
||||
|
||||
|
||||
def set_episode2_rules(player, world, pro):
|
||||
def set_episode2_rules(player, multiworld, pro):
|
||||
# The Crater (E2M1)
|
||||
set_rule(world.get_entrance("Hub -> The Crater (E2M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Crater (E2M1) Main", player), lambda state:
|
||||
state.has("The Crater (E2M1)", player, 1))
|
||||
set_rule(world.get_entrance("The Crater (E2M1) Main -> The Crater (E2M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crater (E2M1) Main -> The Crater (E2M1) Yellow", player), lambda state:
|
||||
state.has("The Crater (E2M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Crater (E2M1) Yellow -> The Crater (E2M1) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crater (E2M1) Yellow -> The Crater (E2M1) Green", player), lambda state:
|
||||
state.has("The Crater (E2M1) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Crater (E2M1) Green -> The Crater (E2M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Crater (E2M1) Green -> The Crater (E2M1) Yellow", player), lambda state:
|
||||
state.has("The Crater (E2M1) - Green key", player, 1))
|
||||
|
||||
# The Lava Pits (E2M2)
|
||||
set_rule(world.get_entrance("Hub -> The Lava Pits (E2M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Lava Pits (E2M2) Main", player), lambda state:
|
||||
(state.has("The Lava Pits (E2M2)", player, 1)) and
|
||||
(state.has("Ethereal Crossbow", player, 1) or
|
||||
state.has("Dragon Claw", player, 1)))
|
||||
set_rule(world.get_entrance("The Lava Pits (E2M2) Main -> The Lava Pits (E2M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Lava Pits (E2M2) Main -> The Lava Pits (E2M2) Yellow", player), lambda state:
|
||||
state.has("The Lava Pits (E2M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Lava Pits (E2M2) Yellow -> The Lava Pits (E2M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Lava Pits (E2M2) Yellow -> The Lava Pits (E2M2) Green", player), lambda state:
|
||||
state.has("The Lava Pits (E2M2) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Lava Pits (E2M2) Yellow -> The Lava Pits (E2M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Lava Pits (E2M2) Yellow -> The Lava Pits (E2M2) Main", player), lambda state:
|
||||
state.has("The Lava Pits (E2M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Lava Pits (E2M2) Green -> The Lava Pits (E2M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Lava Pits (E2M2) Green -> The Lava Pits (E2M2) Yellow", player), lambda state:
|
||||
state.has("The Lava Pits (E2M2) - Green key", player, 1))
|
||||
|
||||
# The River of Fire (E2M3)
|
||||
set_rule(world.get_entrance("Hub -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
state.has("The River of Fire (E2M3)", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Yellow", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Blue", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Main -> The River of Fire (E2M3) Green", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Blue -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Blue -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Yellow -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Yellow -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The River of Fire (E2M3) Green -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The River of Fire (E2M3) Green -> The River of Fire (E2M3) Main", player), lambda state:
|
||||
state.has("The River of Fire (E2M3) - Green key", player, 1))
|
||||
|
||||
# The Ice Grotto (E2M4)
|
||||
set_rule(world.get_entrance("Hub -> The Ice Grotto (E2M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Ice Grotto (E2M4) Main", player), lambda state:
|
||||
(state.has("The Ice Grotto (E2M4)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1)) and
|
||||
(state.has("Hellstaff", player, 1) or
|
||||
state.has("Firemace", player, 1)))
|
||||
set_rule(world.get_entrance("The Ice Grotto (E2M4) Main -> The Ice Grotto (E2M4) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ice Grotto (E2M4) Main -> The Ice Grotto (E2M4) Green", player), lambda state:
|
||||
state.has("The Ice Grotto (E2M4) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Ice Grotto (E2M4) Main -> The Ice Grotto (E2M4) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ice Grotto (E2M4) Main -> The Ice Grotto (E2M4) Yellow", player), lambda state:
|
||||
state.has("The Ice Grotto (E2M4) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Ice Grotto (E2M4) Blue -> The Ice Grotto (E2M4) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ice Grotto (E2M4) Blue -> The Ice Grotto (E2M4) Green", player), lambda state:
|
||||
state.has("The Ice Grotto (E2M4) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Ice Grotto (E2M4) Yellow -> The Ice Grotto (E2M4) Magenta", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ice Grotto (E2M4) Yellow -> The Ice Grotto (E2M4) Magenta", player), lambda state:
|
||||
state.has("The Ice Grotto (E2M4) - Green key", player, 1) and
|
||||
state.has("The Ice Grotto (E2M4) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Ice Grotto (E2M4) Green -> The Ice Grotto (E2M4) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ice Grotto (E2M4) Green -> The Ice Grotto (E2M4) Blue", player), lambda state:
|
||||
state.has("The Ice Grotto (E2M4) - Blue key", player, 1))
|
||||
|
||||
# The Catacombs (E2M5)
|
||||
set_rule(world.get_entrance("Hub -> The Catacombs (E2M5) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Catacombs (E2M5) Main", player), lambda state:
|
||||
(state.has("The Catacombs (E2M5)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -193,17 +193,17 @@ def set_episode2_rules(player, world, pro):
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("The Catacombs (E2M5) Main -> The Catacombs (E2M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Catacombs (E2M5) Main -> The Catacombs (E2M5) Yellow", player), lambda state:
|
||||
state.has("The Catacombs (E2M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Catacombs (E2M5) Blue -> The Catacombs (E2M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Catacombs (E2M5) Blue -> The Catacombs (E2M5) Green", player), lambda state:
|
||||
state.has("The Catacombs (E2M5) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Catacombs (E2M5) Yellow -> The Catacombs (E2M5) Green", player), lambda state:
|
||||
state.has("The Catacombs (E2M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Catacombs (E2M5) Green -> The Catacombs (E2M5) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Catacombs (E2M5) Yellow -> The Catacombs (E2M5) Green", player), lambda state:
|
||||
state.has("The Catacombs (E2M5) - Green key", player, 1))
|
||||
set_rule(multiworld.get_entrance("The Catacombs (E2M5) Green -> The Catacombs (E2M5) Blue", player), lambda state:
|
||||
state.has("The Catacombs (E2M5) - Blue key", player, 1))
|
||||
|
||||
# The Labyrinth (E2M6)
|
||||
set_rule(world.get_entrance("Hub -> The Labyrinth (E2M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Labyrinth (E2M6) Main", player), lambda state:
|
||||
(state.has("The Labyrinth (E2M6)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -211,17 +211,17 @@ def set_episode2_rules(player, world, pro):
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Blue", player), lambda state:
|
||||
state.has("The Labyrinth (E2M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Yellow", player), lambda state:
|
||||
state.has("The Labyrinth (E2M6) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Labyrinth (E2M6) Main -> The Labyrinth (E2M6) Green", player), lambda state:
|
||||
state.has("The Labyrinth (E2M6) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Labyrinth (E2M6) Blue -> The Labyrinth (E2M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Labyrinth (E2M6) Blue -> The Labyrinth (E2M6) Main", player), lambda state:
|
||||
state.has("The Labyrinth (E2M6) - Blue key", player, 1))
|
||||
|
||||
# The Great Hall (E2M7)
|
||||
set_rule(world.get_entrance("Hub -> The Great Hall (E2M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Great Hall (E2M7) Main", player), lambda state:
|
||||
(state.has("The Great Hall (E2M7)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -229,19 +229,19 @@ def set_episode2_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("The Great Hall (E2M7) Main -> The Great Hall (E2M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Great Hall (E2M7) Main -> The Great Hall (E2M7) Yellow", player), lambda state:
|
||||
state.has("The Great Hall (E2M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Great Hall (E2M7) Main -> The Great Hall (E2M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Great Hall (E2M7) Main -> The Great Hall (E2M7) Green", player), lambda state:
|
||||
state.has("The Great Hall (E2M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Great Hall (E2M7) Blue -> The Great Hall (E2M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Great Hall (E2M7) Blue -> The Great Hall (E2M7) Yellow", player), lambda state:
|
||||
state.has("The Great Hall (E2M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Great Hall (E2M7) Yellow -> The Great Hall (E2M7) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Great Hall (E2M7) Yellow -> The Great Hall (E2M7) Blue", player), lambda state:
|
||||
state.has("The Great Hall (E2M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Great Hall (E2M7) Yellow -> The Great Hall (E2M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Great Hall (E2M7) Yellow -> The Great Hall (E2M7) Main", player), lambda state:
|
||||
state.has("The Great Hall (E2M7) - Yellow key", player, 1))
|
||||
|
||||
# The Portals of Chaos (E2M8)
|
||||
set_rule(world.get_entrance("Hub -> The Portals of Chaos (E2M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Portals of Chaos (E2M8) Main", player), lambda state:
|
||||
state.has("The Portals of Chaos (E2M8)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -251,7 +251,7 @@ def set_episode2_rules(player, world, pro):
|
||||
state.has("Hellstaff", player, 1))
|
||||
|
||||
# The Glacier (E2M9)
|
||||
set_rule(world.get_entrance("Hub -> The Glacier (E2M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Glacier (E2M9) Main", player), lambda state:
|
||||
(state.has("The Glacier (E2M9)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -259,51 +259,51 @@ def set_episode2_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Yellow", player), lambda state:
|
||||
state.has("The Glacier (E2M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Blue", player), lambda state:
|
||||
state.has("The Glacier (E2M9) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Glacier (E2M9) Main -> The Glacier (E2M9) Green", player), lambda state:
|
||||
state.has("The Glacier (E2M9) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Glacier (E2M9) Blue -> The Glacier (E2M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Glacier (E2M9) Blue -> The Glacier (E2M9) Main", player), lambda state:
|
||||
state.has("The Glacier (E2M9) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Glacier (E2M9) Yellow -> The Glacier (E2M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Glacier (E2M9) Yellow -> The Glacier (E2M9) Main", player), lambda state:
|
||||
state.has("The Glacier (E2M9) - Yellow key", player, 1))
|
||||
|
||||
|
||||
def set_episode3_rules(player, world, pro):
|
||||
def set_episode3_rules(player, multiworld, pro):
|
||||
# The Storehouse (E3M1)
|
||||
set_rule(world.get_entrance("Hub -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
state.has("The Storehouse (E3M1)", player, 1))
|
||||
set_rule(world.get_entrance("The Storehouse (E3M1) Main -> The Storehouse (E3M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Storehouse (E3M1) Main -> The Storehouse (E3M1) Yellow", player), lambda state:
|
||||
state.has("The Storehouse (E3M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Storehouse (E3M1) Main -> The Storehouse (E3M1) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Storehouse (E3M1) Main -> The Storehouse (E3M1) Green", player), lambda state:
|
||||
state.has("The Storehouse (E3M1) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Storehouse (E3M1) Yellow -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Storehouse (E3M1) Yellow -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
state.has("The Storehouse (E3M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Storehouse (E3M1) Green -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Storehouse (E3M1) Green -> The Storehouse (E3M1) Main", player), lambda state:
|
||||
state.has("The Storehouse (E3M1) - Green key", player, 1))
|
||||
|
||||
# The Cesspool (E3M2)
|
||||
set_rule(world.get_entrance("Hub -> The Cesspool (E3M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Cesspool (E3M2) Main", player), lambda state:
|
||||
state.has("The Cesspool (E3M2)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
state.has("Firemace", player, 1) and
|
||||
state.has("Hellstaff", player, 1))
|
||||
set_rule(world.get_entrance("The Cesspool (E3M2) Main -> The Cesspool (E3M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cesspool (E3M2) Main -> The Cesspool (E3M2) Yellow", player), lambda state:
|
||||
state.has("The Cesspool (E3M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Cesspool (E3M2) Blue -> The Cesspool (E3M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cesspool (E3M2) Blue -> The Cesspool (E3M2) Green", player), lambda state:
|
||||
state.has("The Cesspool (E3M2) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Cesspool (E3M2) Yellow -> The Cesspool (E3M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cesspool (E3M2) Yellow -> The Cesspool (E3M2) Green", player), lambda state:
|
||||
state.has("The Cesspool (E3M2) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Cesspool (E3M2) Green -> The Cesspool (E3M2) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cesspool (E3M2) Green -> The Cesspool (E3M2) Blue", player), lambda state:
|
||||
state.has("The Cesspool (E3M2) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Cesspool (E3M2) Green -> The Cesspool (E3M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Cesspool (E3M2) Green -> The Cesspool (E3M2) Yellow", player), lambda state:
|
||||
state.has("The Cesspool (E3M2) - Green key", player, 1))
|
||||
|
||||
# The Confluence (E3M3)
|
||||
set_rule(world.get_entrance("Hub -> The Confluence (E3M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Confluence (E3M3) Main", player), lambda state:
|
||||
(state.has("The Confluence (E3M3)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1)) and
|
||||
@@ -311,19 +311,19 @@ def set_episode3_rules(player, world, pro):
|
||||
state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("The Confluence (E3M3) Main -> The Confluence (E3M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Confluence (E3M3) Main -> The Confluence (E3M3) Green", player), lambda state:
|
||||
state.has("The Confluence (E3M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Confluence (E3M3) Main -> The Confluence (E3M3) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Confluence (E3M3) Main -> The Confluence (E3M3) Yellow", player), lambda state:
|
||||
state.has("The Confluence (E3M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Confluence (E3M3) Blue -> The Confluence (E3M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Confluence (E3M3) Blue -> The Confluence (E3M3) Green", player), lambda state:
|
||||
state.has("The Confluence (E3M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Confluence (E3M3) Green -> The Confluence (E3M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Confluence (E3M3) Green -> The Confluence (E3M3) Main", player), lambda state:
|
||||
state.has("The Confluence (E3M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Confluence (E3M3) Green -> The Confluence (E3M3) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Confluence (E3M3) Green -> The Confluence (E3M3) Blue", player), lambda state:
|
||||
state.has("The Confluence (E3M3) - Blue key", player, 1))
|
||||
|
||||
# The Azure Fortress (E3M4)
|
||||
set_rule(world.get_entrance("Hub -> The Azure Fortress (E3M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Azure Fortress (E3M4) Main", player), lambda state:
|
||||
(state.has("The Azure Fortress (E3M4)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -331,13 +331,13 @@ def set_episode3_rules(player, world, pro):
|
||||
(state.has("Firemace", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Gauntlets of the Necromancer", player, 1)))
|
||||
set_rule(world.get_entrance("The Azure Fortress (E3M4) Main -> The Azure Fortress (E3M4) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Azure Fortress (E3M4) Main -> The Azure Fortress (E3M4) Green", player), lambda state:
|
||||
state.has("The Azure Fortress (E3M4) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Azure Fortress (E3M4) Main -> The Azure Fortress (E3M4) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Azure Fortress (E3M4) Main -> The Azure Fortress (E3M4) Yellow", player), lambda state:
|
||||
state.has("The Azure Fortress (E3M4) - Yellow key", player, 1))
|
||||
|
||||
# The Ophidian Lair (E3M5)
|
||||
set_rule(world.get_entrance("Hub -> The Ophidian Lair (E3M5) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Ophidian Lair (E3M5) Main", player), lambda state:
|
||||
(state.has("The Ophidian Lair (E3M5)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -345,13 +345,13 @@ def set_episode3_rules(player, world, pro):
|
||||
(state.has("Gauntlets of the Necromancer", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1)))
|
||||
set_rule(world.get_entrance("The Ophidian Lair (E3M5) Main -> The Ophidian Lair (E3M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ophidian Lair (E3M5) Main -> The Ophidian Lair (E3M5) Yellow", player), lambda state:
|
||||
state.has("The Ophidian Lair (E3M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Ophidian Lair (E3M5) Main -> The Ophidian Lair (E3M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Ophidian Lair (E3M5) Main -> The Ophidian Lair (E3M5) Green", player), lambda state:
|
||||
state.has("The Ophidian Lair (E3M5) - Green key", player, 1))
|
||||
|
||||
# The Halls of Fear (E3M6)
|
||||
set_rule(world.get_entrance("Hub -> The Halls of Fear (E3M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Halls of Fear (E3M6) Main", player), lambda state:
|
||||
(state.has("The Halls of Fear (E3M6)", player, 1) and
|
||||
state.has("Firemace", player, 1) and
|
||||
state.has("Hellstaff", player, 1) and
|
||||
@@ -359,17 +359,17 @@ def set_episode3_rules(player, world, pro):
|
||||
state.has("Ethereal Crossbow", player, 1)) and
|
||||
(state.has("Gauntlets of the Necromancer", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1)))
|
||||
set_rule(world.get_entrance("The Halls of Fear (E3M6) Main -> The Halls of Fear (E3M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Halls of Fear (E3M6) Main -> The Halls of Fear (E3M6) Yellow", player), lambda state:
|
||||
state.has("The Halls of Fear (E3M6) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Halls of Fear (E3M6) Blue -> The Halls of Fear (E3M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Halls of Fear (E3M6) Blue -> The Halls of Fear (E3M6) Yellow", player), lambda state:
|
||||
state.has("The Halls of Fear (E3M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Halls of Fear (E3M6) Yellow -> The Halls of Fear (E3M6) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Halls of Fear (E3M6) Yellow -> The Halls of Fear (E3M6) Blue", player), lambda state:
|
||||
state.has("The Halls of Fear (E3M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Halls of Fear (E3M6) Yellow -> The Halls of Fear (E3M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Halls of Fear (E3M6) Yellow -> The Halls of Fear (E3M6) Green", player), lambda state:
|
||||
state.has("The Halls of Fear (E3M6) - Green key", player, 1))
|
||||
|
||||
# The Chasm (E3M7)
|
||||
set_rule(world.get_entrance("Hub -> The Chasm (E3M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Chasm (E3M7) Main", player), lambda state:
|
||||
(state.has("The Chasm (E3M7)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -377,19 +377,19 @@ def set_episode3_rules(player, world, pro):
|
||||
state.has("Hellstaff", player, 1)) and
|
||||
(state.has("Gauntlets of the Necromancer", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1)))
|
||||
set_rule(world.get_entrance("The Chasm (E3M7) Main -> The Chasm (E3M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Chasm (E3M7) Main -> The Chasm (E3M7) Yellow", player), lambda state:
|
||||
state.has("The Chasm (E3M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Main", player), lambda state:
|
||||
state.has("The Chasm (E3M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Green", player), lambda state:
|
||||
state.has("The Chasm (E3M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Chasm (E3M7) Yellow -> The Chasm (E3M7) Blue", player), lambda state:
|
||||
state.has("The Chasm (E3M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("The Chasm (E3M7) Green -> The Chasm (E3M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Chasm (E3M7) Green -> The Chasm (E3M7) Yellow", player), lambda state:
|
||||
state.has("The Chasm (E3M7) - Green key", player, 1))
|
||||
|
||||
# D'Sparil'S Keep (E3M8)
|
||||
set_rule(world.get_entrance("Hub -> D'Sparil'S Keep (E3M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> D'Sparil'S Keep (E3M8) Main", player), lambda state:
|
||||
state.has("D'Sparil'S Keep (E3M8)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -399,7 +399,7 @@ def set_episode3_rules(player, world, pro):
|
||||
state.has("Hellstaff", player, 1))
|
||||
|
||||
# The Aquifier (E3M9)
|
||||
set_rule(world.get_entrance("Hub -> The Aquifier (E3M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> The Aquifier (E3M9) Main", player), lambda state:
|
||||
state.has("The Aquifier (E3M9)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -407,23 +407,23 @@ def set_episode3_rules(player, world, pro):
|
||||
state.has("Phoenix Rod", player, 1) and
|
||||
state.has("Firemace", player, 1) and
|
||||
state.has("Hellstaff", player, 1))
|
||||
set_rule(world.get_entrance("The Aquifier (E3M9) Main -> The Aquifier (E3M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Aquifier (E3M9) Main -> The Aquifier (E3M9) Yellow", player), lambda state:
|
||||
state.has("The Aquifier (E3M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Aquifier (E3M9) Yellow -> The Aquifier (E3M9) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Aquifier (E3M9) Yellow -> The Aquifier (E3M9) Green", player), lambda state:
|
||||
state.has("The Aquifier (E3M9) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("The Aquifier (E3M9) Yellow -> The Aquifier (E3M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Aquifier (E3M9) Yellow -> The Aquifier (E3M9) Main", player), lambda state:
|
||||
state.has("The Aquifier (E3M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("The Aquifier (E3M9) Green -> The Aquifier (E3M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("The Aquifier (E3M9) Green -> The Aquifier (E3M9) Yellow", player), lambda state:
|
||||
state.has("The Aquifier (E3M9) - Green key", player, 1))
|
||||
|
||||
|
||||
def set_episode4_rules(player, world, pro):
|
||||
def set_episode4_rules(player, multiworld, pro):
|
||||
# Catafalque (E4M1)
|
||||
set_rule(world.get_entrance("Hub -> Catafalque (E4M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Catafalque (E4M1) Main", player), lambda state:
|
||||
state.has("Catafalque (E4M1)", player, 1))
|
||||
set_rule(world.get_entrance("Catafalque (E4M1) Main -> Catafalque (E4M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Catafalque (E4M1) Main -> Catafalque (E4M1) Yellow", player), lambda state:
|
||||
state.has("Catafalque (E4M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Catafalque (E4M1) Yellow -> Catafalque (E4M1) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Catafalque (E4M1) Yellow -> Catafalque (E4M1) Green", player), lambda state:
|
||||
(state.has("Catafalque (E4M1) - Green key", player, 1)) and (state.has("Ethereal Crossbow", player, 1) or
|
||||
state.has("Dragon Claw", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1) or
|
||||
@@ -431,23 +431,23 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Hellstaff", player, 1)))
|
||||
|
||||
# Blockhouse (E4M2)
|
||||
set_rule(world.get_entrance("Hub -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
state.has("Blockhouse (E4M2)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1))
|
||||
set_rule(world.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Yellow", player), lambda state:
|
||||
state.has("Blockhouse (E4M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Green", player), lambda state:
|
||||
state.has("Blockhouse (E4M2) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Blockhouse (E4M2) Main -> Blockhouse (E4M2) Blue", player), lambda state:
|
||||
state.has("Blockhouse (E4M2) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Blockhouse (E4M2) Green -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Blockhouse (E4M2) Green -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
state.has("Blockhouse (E4M2) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Blockhouse (E4M2) Blue -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Blockhouse (E4M2) Blue -> Blockhouse (E4M2) Main", player), lambda state:
|
||||
state.has("Blockhouse (E4M2) - Blue key", player, 1))
|
||||
|
||||
# Ambulatory (E4M3)
|
||||
set_rule(world.get_entrance("Hub -> Ambulatory (E4M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Ambulatory (E4M3) Main", player), lambda state:
|
||||
(state.has("Ambulatory (E4M3)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -455,15 +455,17 @@ def set_episode4_rules(player, world, pro):
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Blue", player), lambda state:
|
||||
state.has("Ambulatory (E4M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Yellow", player), lambda state:
|
||||
state.has("Ambulatory (E4M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Green", player), lambda state:
|
||||
state.has("Ambulatory (E4M3) - Green key", player, 1))
|
||||
set_rule(multiworld.get_entrance("Ambulatory (E4M3) Main -> Ambulatory (E4M3) Green Lock", player), lambda state:
|
||||
state.has("Ambulatory (E4M3) - Green key", player, 1))
|
||||
|
||||
# Sepulcher (E4M4)
|
||||
set_rule(world.get_entrance("Hub -> Sepulcher (E4M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Sepulcher (E4M4) Main", player), lambda state:
|
||||
(state.has("Sepulcher (E4M4)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -473,7 +475,7 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Hellstaff", player, 1)))
|
||||
|
||||
# Great Stair (E4M5)
|
||||
set_rule(world.get_entrance("Hub -> Great Stair (E4M5) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Great Stair (E4M5) Main", player), lambda state:
|
||||
(state.has("Great Stair (E4M5)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -481,19 +483,19 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Hellstaff", player, 1) or
|
||||
state.has("Phoenix Rod", player, 1)))
|
||||
set_rule(world.get_entrance("Great Stair (E4M5) Main -> Great Stair (E4M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Great Stair (E4M5) Main -> Great Stair (E4M5) Yellow", player), lambda state:
|
||||
state.has("Great Stair (E4M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Great Stair (E4M5) Blue -> Great Stair (E4M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Great Stair (E4M5) Blue -> Great Stair (E4M5) Green", player), lambda state:
|
||||
state.has("Great Stair (E4M5) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Great Stair (E4M5) Yellow -> Great Stair (E4M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Great Stair (E4M5) Yellow -> Great Stair (E4M5) Green", player), lambda state:
|
||||
state.has("Great Stair (E4M5) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Great Stair (E4M5) Green -> Great Stair (E4M5) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Great Stair (E4M5) Green -> Great Stair (E4M5) Blue", player), lambda state:
|
||||
state.has("Great Stair (E4M5) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Great Stair (E4M5) Green -> Great Stair (E4M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Great Stair (E4M5) Green -> Great Stair (E4M5) Yellow", player), lambda state:
|
||||
state.has("Great Stair (E4M5) - Green key", player, 1))
|
||||
|
||||
# Halls of the Apostate (E4M6)
|
||||
set_rule(world.get_entrance("Hub -> Halls of the Apostate (E4M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Halls of the Apostate (E4M6) Main", player), lambda state:
|
||||
(state.has("Halls of the Apostate (E4M6)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -501,19 +503,19 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Halls of the Apostate (E4M6) Main -> Halls of the Apostate (E4M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Halls of the Apostate (E4M6) Main -> Halls of the Apostate (E4M6) Yellow", player), lambda state:
|
||||
state.has("Halls of the Apostate (E4M6) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Halls of the Apostate (E4M6) Blue -> Halls of the Apostate (E4M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Halls of the Apostate (E4M6) Blue -> Halls of the Apostate (E4M6) Green", player), lambda state:
|
||||
state.has("Halls of the Apostate (E4M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Halls of the Apostate (E4M6) Yellow -> Halls of the Apostate (E4M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Halls of the Apostate (E4M6) Yellow -> Halls of the Apostate (E4M6) Green", player), lambda state:
|
||||
state.has("Halls of the Apostate (E4M6) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Halls of the Apostate (E4M6) Green -> Halls of the Apostate (E4M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Halls of the Apostate (E4M6) Green -> Halls of the Apostate (E4M6) Yellow", player), lambda state:
|
||||
state.has("Halls of the Apostate (E4M6) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Halls of the Apostate (E4M6) Green -> Halls of the Apostate (E4M6) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Halls of the Apostate (E4M6) Green -> Halls of the Apostate (E4M6) Blue", player), lambda state:
|
||||
state.has("Halls of the Apostate (E4M6) - Blue key", player, 1))
|
||||
|
||||
# Ramparts of Perdition (E4M7)
|
||||
set_rule(world.get_entrance("Hub -> Ramparts of Perdition (E4M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Ramparts of Perdition (E4M7) Main", player), lambda state:
|
||||
(state.has("Ramparts of Perdition (E4M7)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -521,21 +523,21 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Main -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Main -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Blue -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Blue -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Main", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Green", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Yellow -> Ramparts of Perdition (E4M7) Blue", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Ramparts of Perdition (E4M7) Green -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ramparts of Perdition (E4M7) Green -> Ramparts of Perdition (E4M7) Yellow", player), lambda state:
|
||||
state.has("Ramparts of Perdition (E4M7) - Green key", player, 1))
|
||||
|
||||
# Shattered Bridge (E4M8)
|
||||
set_rule(world.get_entrance("Hub -> Shattered Bridge (E4M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Shattered Bridge (E4M8) Main", player), lambda state:
|
||||
state.has("Shattered Bridge (E4M8)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -543,13 +545,13 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Phoenix Rod", player, 1) and
|
||||
state.has("Firemace", player, 1) and
|
||||
state.has("Hellstaff", player, 1))
|
||||
set_rule(world.get_entrance("Shattered Bridge (E4M8) Main -> Shattered Bridge (E4M8) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Shattered Bridge (E4M8) Main -> Shattered Bridge (E4M8) Yellow", player), lambda state:
|
||||
state.has("Shattered Bridge (E4M8) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Shattered Bridge (E4M8) Yellow -> Shattered Bridge (E4M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Shattered Bridge (E4M8) Yellow -> Shattered Bridge (E4M8) Main", player), lambda state:
|
||||
state.has("Shattered Bridge (E4M8) - Yellow key", player, 1))
|
||||
|
||||
# Mausoleum (E4M9)
|
||||
set_rule(world.get_entrance("Hub -> Mausoleum (E4M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Mausoleum (E4M9) Main", player), lambda state:
|
||||
(state.has("Mausoleum (E4M9)", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
@@ -557,102 +559,100 @@ def set_episode4_rules(player, world, pro):
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Mausoleum (E4M9) Main -> Mausoleum (E4M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Mausoleum (E4M9) Main -> Mausoleum (E4M9) Yellow", player), lambda state:
|
||||
state.has("Mausoleum (E4M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Mausoleum (E4M9) Yellow -> Mausoleum (E4M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Mausoleum (E4M9) Yellow -> Mausoleum (E4M9) Main", player), lambda state:
|
||||
state.has("Mausoleum (E4M9) - Yellow key", player, 1))
|
||||
|
||||
|
||||
def set_episode5_rules(player, world, pro):
|
||||
def set_episode5_rules(player, multiworld, pro):
|
||||
# Ochre Cliffs (E5M1)
|
||||
set_rule(world.get_entrance("Hub -> Ochre Cliffs (E5M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Ochre Cliffs (E5M1) Main", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1)", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Main -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Main -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Blue -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Blue -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Main", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Green", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Yellow -> Ochre Cliffs (E5M1) Blue", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Ochre Cliffs (E5M1) Green -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Ochre Cliffs (E5M1) Green -> Ochre Cliffs (E5M1) Yellow", player), lambda state:
|
||||
state.has("Ochre Cliffs (E5M1) - Green key", player, 1))
|
||||
|
||||
# Rapids (E5M2)
|
||||
set_rule(world.get_entrance("Hub -> Rapids (E5M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Rapids (E5M2) Main", player), lambda state:
|
||||
state.has("Rapids (E5M2)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1))
|
||||
set_rule(world.get_entrance("Rapids (E5M2) Main -> Rapids (E5M2) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Rapids (E5M2) Main -> Rapids (E5M2) Yellow", player), lambda state:
|
||||
state.has("Rapids (E5M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Rapids (E5M2) Yellow -> Rapids (E5M2) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Rapids (E5M2) Yellow -> Rapids (E5M2) Main", player), lambda state:
|
||||
state.has("Rapids (E5M2) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Rapids (E5M2) Yellow -> Rapids (E5M2) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Rapids (E5M2) Yellow -> Rapids (E5M2) Green", player), lambda state:
|
||||
state.has("Rapids (E5M2) - Green key", player, 1))
|
||||
|
||||
# Quay (E5M3)
|
||||
set_rule(world.get_entrance("Hub -> Quay (E5M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Quay (E5M3) Main", player), lambda state:
|
||||
(state.has("Quay (E5M3)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1) or
|
||||
state.has("Firemace", player, 1)))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Yellow", player), lambda state:
|
||||
state.has("Quay (E5M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Green", player), lambda state:
|
||||
state.has("Quay (E5M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Main -> Quay (E5M3) Blue", player), lambda state:
|
||||
state.has("Quay (E5M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Blue -> Quay (E5M3) Green", player), lambda state:
|
||||
state.has("Quay (E5M3) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Yellow -> Quay (E5M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Yellow -> Quay (E5M3) Main", player), lambda state:
|
||||
state.has("Quay (E5M3) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Green -> Quay (E5M3) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Green -> Quay (E5M3) Main", player), lambda state:
|
||||
state.has("Quay (E5M3) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Quay (E5M3) Green -> Quay (E5M3) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Quay (E5M3) Green -> Quay (E5M3) Cyan", player), lambda state:
|
||||
state.has("Quay (E5M3) - Blue key", player, 1))
|
||||
|
||||
# Courtyard (E5M4)
|
||||
set_rule(world.get_entrance("Hub -> Courtyard (E5M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Courtyard (E5M4) Main", player), lambda state:
|
||||
(state.has("Courtyard (E5M4)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Firemace", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Courtyard (E5M4) Main -> Courtyard (E5M4) Kakis", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Courtyard (E5M4) Main -> Courtyard (E5M4) Kakis", player), lambda state:
|
||||
state.has("Courtyard (E5M4) - Yellow key", player, 1) or
|
||||
state.has("Courtyard (E5M4) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Courtyard (E5M4) Main -> Courtyard (E5M4) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Courtyard (E5M4) Main -> Courtyard (E5M4) Blue", player), lambda state:
|
||||
state.has("Courtyard (E5M4) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Courtyard (E5M4) Blue -> Courtyard (E5M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Courtyard (E5M4) Blue -> Courtyard (E5M4) Main", player), lambda state:
|
||||
state.has("Courtyard (E5M4) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Courtyard (E5M4) Kakis -> Courtyard (E5M4) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Courtyard (E5M4) Kakis -> Courtyard (E5M4) Main", player), lambda state:
|
||||
state.has("Courtyard (E5M4) - Yellow key", player, 1) or
|
||||
state.has("Courtyard (E5M4) - Green key", player, 1))
|
||||
|
||||
# Hydratyr (E5M5)
|
||||
set_rule(world.get_entrance("Hub -> Hydratyr (E5M5) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Hydratyr (E5M5) Main", player), lambda state:
|
||||
(state.has("Hydratyr (E5M5)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
state.has("Firemace", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Hydratyr (E5M5) Main -> Hydratyr (E5M5) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hydratyr (E5M5) Main -> Hydratyr (E5M5) Yellow", player), lambda state:
|
||||
state.has("Hydratyr (E5M5) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Hydratyr (E5M5) Blue -> Hydratyr (E5M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hydratyr (E5M5) Blue -> Hydratyr (E5M5) Green", player), lambda state:
|
||||
state.has("Hydratyr (E5M5) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Hydratyr (E5M5) Yellow -> Hydratyr (E5M5) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hydratyr (E5M5) Yellow -> Hydratyr (E5M5) Green", player), lambda state:
|
||||
state.has("Hydratyr (E5M5) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Hydratyr (E5M5) Green -> Hydratyr (E5M5) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hydratyr (E5M5) Green -> Hydratyr (E5M5) Blue", player), lambda state:
|
||||
state.has("Hydratyr (E5M5) - Blue key", player, 1))
|
||||
|
||||
# Colonnade (E5M6)
|
||||
set_rule(world.get_entrance("Hub -> Colonnade (E5M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Colonnade (E5M6) Main", player), lambda state:
|
||||
(state.has("Colonnade (E5M6)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -660,19 +660,19 @@ def set_episode5_rules(player, world, pro):
|
||||
state.has("Gauntlets of the Necromancer", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Colonnade (E5M6) Main -> Colonnade (E5M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Colonnade (E5M6) Main -> Colonnade (E5M6) Yellow", player), lambda state:
|
||||
state.has("Colonnade (E5M6) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Colonnade (E5M6) Main -> Colonnade (E5M6) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Colonnade (E5M6) Main -> Colonnade (E5M6) Blue", player), lambda state:
|
||||
state.has("Colonnade (E5M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Colonnade (E5M6) Blue -> Colonnade (E5M6) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Colonnade (E5M6) Blue -> Colonnade (E5M6) Main", player), lambda state:
|
||||
state.has("Colonnade (E5M6) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Colonnade (E5M6) Yellow -> Colonnade (E5M6) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Colonnade (E5M6) Yellow -> Colonnade (E5M6) Green", player), lambda state:
|
||||
state.has("Colonnade (E5M6) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Colonnade (E5M6) Green -> Colonnade (E5M6) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Colonnade (E5M6) Green -> Colonnade (E5M6) Yellow", player), lambda state:
|
||||
state.has("Colonnade (E5M6) - Green key", player, 1))
|
||||
|
||||
# Foetid Manse (E5M7)
|
||||
set_rule(world.get_entrance("Hub -> Foetid Manse (E5M7) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Foetid Manse (E5M7) Main", player), lambda state:
|
||||
(state.has("Foetid Manse (E5M7)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -680,15 +680,15 @@ def set_episode5_rules(player, world, pro):
|
||||
state.has("Gauntlets of the Necromancer", player, 1)) and
|
||||
(state.has("Phoenix Rod", player, 1) or
|
||||
state.has("Hellstaff", player, 1)))
|
||||
set_rule(world.get_entrance("Foetid Manse (E5M7) Main -> Foetid Manse (E5M7) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Foetid Manse (E5M7) Main -> Foetid Manse (E5M7) Yellow", player), lambda state:
|
||||
state.has("Foetid Manse (E5M7) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Foetid Manse (E5M7) Yellow -> Foetid Manse (E5M7) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Foetid Manse (E5M7) Yellow -> Foetid Manse (E5M7) Green", player), lambda state:
|
||||
state.has("Foetid Manse (E5M7) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Foetid Manse (E5M7) Yellow -> Foetid Manse (E5M7) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Foetid Manse (E5M7) Yellow -> Foetid Manse (E5M7) Blue", player), lambda state:
|
||||
state.has("Foetid Manse (E5M7) - Blue key", player, 1))
|
||||
|
||||
# Field of Judgement (E5M8)
|
||||
set_rule(world.get_entrance("Hub -> Field of Judgement (E5M8) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Field of Judgement (E5M8) Main", player), lambda state:
|
||||
state.has("Field of Judgement (E5M8)", player, 1) and
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Dragon Claw", player, 1) and
|
||||
@@ -699,7 +699,7 @@ def set_episode5_rules(player, world, pro):
|
||||
state.has("Bag of Holding", player, 1))
|
||||
|
||||
# Skein of D'Sparil (E5M9)
|
||||
set_rule(world.get_entrance("Hub -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Hub -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9)", player, 1) and
|
||||
state.has("Bag of Holding", player, 1) and
|
||||
state.has("Hellstaff", player, 1) and
|
||||
@@ -708,29 +708,29 @@ def set_episode5_rules(player, world, pro):
|
||||
state.has("Ethereal Crossbow", player, 1) and
|
||||
state.has("Gauntlets of the Necromancer", player, 1) and
|
||||
state.has("Firemace", player, 1))
|
||||
set_rule(world.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Blue", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Blue", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9) - Blue key", player, 1))
|
||||
set_rule(world.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Yellow", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Yellow", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Green", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Skein of D'Sparil (E5M9) Main -> Skein of D'Sparil (E5M9) Green", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9) - Green key", player, 1))
|
||||
set_rule(world.get_entrance("Skein of D'Sparil (E5M9) Yellow -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Skein of D'Sparil (E5M9) Yellow -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9) - Yellow key", player, 1))
|
||||
set_rule(world.get_entrance("Skein of D'Sparil (E5M9) Green -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
set_rule(multiworld.get_entrance("Skein of D'Sparil (E5M9) Green -> Skein of D'Sparil (E5M9) Main", player), lambda state:
|
||||
state.has("Skein of D'Sparil (E5M9) - Green key", player, 1))
|
||||
|
||||
|
||||
def set_rules(heretic_world: "HereticWorld", included_episodes, pro):
|
||||
player = heretic_world.player
|
||||
world = heretic_world.multiworld
|
||||
multiworld = heretic_world.multiworld
|
||||
|
||||
if included_episodes[0]:
|
||||
set_episode1_rules(player, world, pro)
|
||||
set_episode1_rules(player, multiworld, pro)
|
||||
if included_episodes[1]:
|
||||
set_episode2_rules(player, world, pro)
|
||||
set_episode2_rules(player, multiworld, pro)
|
||||
if included_episodes[2]:
|
||||
set_episode3_rules(player, world, pro)
|
||||
set_episode3_rules(player, multiworld, pro)
|
||||
if included_episodes[3]:
|
||||
set_episode4_rules(player, world, pro)
|
||||
set_episode4_rules(player, multiworld, pro)
|
||||
if included_episodes[4]:
|
||||
set_episode5_rules(player, world, pro)
|
||||
set_episode5_rules(player, multiworld, pro)
|
||||
|
||||
+22
-17
@@ -2,9 +2,10 @@ import functools
|
||||
import logging
|
||||
from typing import Any, Dict, List, Set
|
||||
|
||||
from BaseClasses import Entrance, CollectionState, Item, ItemClassification, Location, MultiWorld, Region, Tutorial
|
||||
from BaseClasses import Entrance, CollectionState, Item, Location, MultiWorld, Region, Tutorial
|
||||
from worlds.AutoWorld import WebWorld, World
|
||||
from . import Items, Locations, Maps, Options, Regions, Rules
|
||||
from . import Items, Locations, Maps, Regions, Rules
|
||||
from .Options import HereticOptions
|
||||
|
||||
logger = logging.getLogger("Heretic")
|
||||
|
||||
@@ -36,7 +37,8 @@ class HereticWorld(World):
|
||||
"""
|
||||
Heretic is a dark fantasy first-person shooter video game released in December 1994. It was developed by Raven Software.
|
||||
"""
|
||||
option_definitions = Options.options
|
||||
options_dataclass = HereticOptions
|
||||
options: HereticOptions
|
||||
game = "Heretic"
|
||||
web = HereticWeb()
|
||||
data_version = 3
|
||||
@@ -56,7 +58,7 @@ class HereticWorld(World):
|
||||
"Ochre Cliffs (E5M1)"
|
||||
]
|
||||
|
||||
boss_level_for_espidoes: List[str] = [
|
||||
boss_level_for_episode: List[str] = [
|
||||
"Hell's Maw (E1M8)",
|
||||
"The Portals of Chaos (E2M8)",
|
||||
"D'Sparil'S Keep (E3M8)",
|
||||
@@ -77,27 +79,30 @@ class HereticWorld(World):
|
||||
"Shadowsphere": 1
|
||||
}
|
||||
|
||||
def __init__(self, world: MultiWorld, player: int):
|
||||
def __init__(self, multiworld: MultiWorld, player: int):
|
||||
self.included_episodes = [1, 1, 1, 0, 0]
|
||||
self.location_count = 0
|
||||
|
||||
super().__init__(world, player)
|
||||
super().__init__(multiworld, player)
|
||||
|
||||
def get_episode_count(self):
|
||||
return functools.reduce(lambda count, episode: count + episode, self.included_episodes)
|
||||
|
||||
def generate_early(self):
|
||||
# Cache which episodes are included
|
||||
for i in range(5):
|
||||
self.included_episodes[i] = getattr(self.multiworld, f"episode{i + 1}")[self.player].value
|
||||
self.included_episodes[0] = self.options.episode1.value
|
||||
self.included_episodes[1] = self.options.episode2.value
|
||||
self.included_episodes[2] = self.options.episode3.value
|
||||
self.included_episodes[3] = self.options.episode4.value
|
||||
self.included_episodes[4] = self.options.episode5.value
|
||||
|
||||
# If no episodes selected, select Episode 1
|
||||
if self.get_episode_count() == 0:
|
||||
self.included_episodes[0] = 1
|
||||
|
||||
def create_regions(self):
|
||||
pro = getattr(self.multiworld, "pro")[self.player].value
|
||||
check_sanity = getattr(self.multiworld, "check_sanity")[self.player].value
|
||||
pro = self.options.pro.value
|
||||
check_sanity = self.options.check_sanity.value
|
||||
|
||||
# Main regions
|
||||
menu_region = Region("Menu", self.player, self.multiworld)
|
||||
@@ -148,8 +153,8 @@ class HereticWorld(World):
|
||||
|
||||
def completion_rule(self, state: CollectionState):
|
||||
goal_levels = Maps.map_names
|
||||
if getattr(self.multiworld, "goal")[self.player].value:
|
||||
goal_levels = self.boss_level_for_espidoes
|
||||
if self.options.goal.value:
|
||||
goal_levels = self.boss_level_for_episode
|
||||
|
||||
for map_name in goal_levels:
|
||||
if map_name + " - Exit" not in self.location_name_to_id:
|
||||
@@ -167,8 +172,8 @@ class HereticWorld(World):
|
||||
return True
|
||||
|
||||
def set_rules(self):
|
||||
pro = getattr(self.multiworld, "pro")[self.player].value
|
||||
allow_death_logic = getattr(self.multiworld, "allow_death_logic")[self.player].value
|
||||
pro = self.options.pro.value
|
||||
allow_death_logic = self.options.allow_death_logic.value
|
||||
|
||||
Rules.set_rules(self, self.included_episodes, pro)
|
||||
self.multiworld.completion_condition[self.player] = lambda state: self.completion_rule(state)
|
||||
@@ -185,7 +190,7 @@ class HereticWorld(World):
|
||||
|
||||
def create_items(self):
|
||||
itempool: List[HereticItem] = []
|
||||
start_with_map_scrolls: bool = getattr(self.multiworld, "start_with_map_scrolls")[self.player].value
|
||||
start_with_map_scrolls: bool = self.options.start_with_map_scrolls.value
|
||||
|
||||
# Items
|
||||
for item_id, item in Items.item_table.items():
|
||||
@@ -225,7 +230,7 @@ class HereticWorld(World):
|
||||
self.multiworld.push_precollected(self.create_item(self.starting_level_for_episode[i]))
|
||||
|
||||
# Give Computer area maps if option selected
|
||||
if getattr(self.multiworld, "start_with_map_scrolls")[self.player].value:
|
||||
if self.options.start_with_map_scrolls.value:
|
||||
for item_id, item_dict in Items.item_table.items():
|
||||
item_episode = item_dict["episode"]
|
||||
if item_episode > 0:
|
||||
@@ -275,7 +280,7 @@ class HereticWorld(World):
|
||||
itempool.append(self.create_item(item_name))
|
||||
|
||||
def fill_slot_data(self) -> Dict[str, Any]:
|
||||
slot_data = self.options.as_dict("difficulty", "random_monsters", "random_pickups", "random_music", "allow_death_logic", "pro", "death_link", "reset_level_on_death", "check_sanity")
|
||||
slot_data = self.options.as_dict("goal", "difficulty", "random_monsters", "random_pickups", "random_music", "allow_death_logic", "pro", "death_link", "reset_level_on_death", "check_sanity")
|
||||
|
||||
# Make sure we send proper episode settings
|
||||
slot_data["episode1"] = self.included_episodes[0]
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
1. Download [APDOOM.zip](https://github.com/Daivuk/apdoom/releases) and extract it.
|
||||
2. Copy HERETIC.WAD from your steam install into the extracted folder.
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user