DOOM 1993: Better region logics/rules, balancing, level exits (#1973)
This commit is contained in:
parent
21228f9c63
commit
8015734fcf
|
@ -1,34 +0,0 @@
|
||||||
# This file is auto generated. More info: https://github.com/Daivuk/apdoom
|
|
||||||
|
|
||||||
from typing import List
|
|
||||||
|
|
||||||
|
|
||||||
events: List[str] = [
|
|
||||||
'Hangar (E1M1) - Complete',
|
|
||||||
'Nuclear Plant (E1M2) - Complete',
|
|
||||||
'Toxin Refinery (E1M3) - Complete',
|
|
||||||
'Command Control (E1M4) - Complete',
|
|
||||||
'Phobos Lab (E1M5) - Complete',
|
|
||||||
'Central Processing (E1M6) - Complete',
|
|
||||||
'Computer Station (E1M7) - Complete',
|
|
||||||
'Phobos Anomaly (E1M8) - Complete',
|
|
||||||
'Military Base (E1M9) - Complete',
|
|
||||||
'Deimos Anomaly (E2M1) - Complete',
|
|
||||||
'Containment Area (E2M2) - Complete',
|
|
||||||
'Refinery (E2M3) - Complete',
|
|
||||||
'Deimos Lab (E2M4) - Complete',
|
|
||||||
'Command Center (E2M5) - Complete',
|
|
||||||
'Halls of the Damned (E2M6) - Complete',
|
|
||||||
'Spawning Vats (E2M7) - Complete',
|
|
||||||
'Tower of Babel (E2M8) - Complete',
|
|
||||||
'Fortress of Mystery (E2M9) - Complete',
|
|
||||||
'Hell Keep (E3M1) - Complete',
|
|
||||||
'Slough of Despair (E3M2) - Complete',
|
|
||||||
'Pandemonium (E3M3) - Complete',
|
|
||||||
'House of Pain (E3M4) - Complete',
|
|
||||||
'Unholy Cathedral (E3M5) - Complete',
|
|
||||||
'Mt. Erebus (E3M6) - Complete',
|
|
||||||
'Limbo (E3M7) - Complete',
|
|
||||||
'Dis (E3M8) - Complete',
|
|
||||||
'Warrens (E3M9) - Complete',
|
|
||||||
]
|
|
|
@ -8,7 +8,7 @@ class ItemDict(TypedDict, total=False):
|
||||||
classification: ItemClassification
|
classification: ItemClassification
|
||||||
count: int
|
count: int
|
||||||
name: str
|
name: str
|
||||||
doom_type: int # Unique numerical id used to spawn the item.
|
doom_type: int # Unique numerical id used to spawn the item. -1 is level item, -2 is level complete item.
|
||||||
episode: int # Relevant if that item targets a specific level, like keycard or map reveal pickup.
|
episode: int # Relevant if that item targets a specific level, like keycard or map reveal pickup.
|
||||||
map: int
|
map: int
|
||||||
|
|
||||||
|
@ -722,6 +722,168 @@ item_table: Dict[int, ItemDict] = {
|
||||||
'doom_type': 17,
|
'doom_type': 17,
|
||||||
'episode': -1,
|
'episode': -1,
|
||||||
'map': -1},
|
'map': -1},
|
||||||
|
350118: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Hangar (E1M1) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 1},
|
||||||
|
350119: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Nuclear Plant (E1M2) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 2},
|
||||||
|
350120: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Toxin Refinery (E1M3) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 3},
|
||||||
|
350121: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Command Control (E1M4) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 4},
|
||||||
|
350122: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Phobos Lab (E1M5) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 5},
|
||||||
|
350123: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Central Processing (E1M6) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 6},
|
||||||
|
350124: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Computer Station (E1M7) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 7},
|
||||||
|
350125: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Phobos Anomaly (E1M8) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 8},
|
||||||
|
350126: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Military Base (E1M9) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 1,
|
||||||
|
'map': 9},
|
||||||
|
350127: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Deimos Anomaly (E2M1) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 1},
|
||||||
|
350128: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Containment Area (E2M2) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 2},
|
||||||
|
350129: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Refinery (E2M3) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 3},
|
||||||
|
350130: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Deimos Lab (E2M4) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 4},
|
||||||
|
350131: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Command Center (E2M5) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 5},
|
||||||
|
350132: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Halls of the Damned (E2M6) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 6},
|
||||||
|
350133: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Spawning Vats (E2M7) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 7},
|
||||||
|
350134: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Tower of Babel (E2M8) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 8},
|
||||||
|
350135: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Fortress of Mystery (E2M9) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 2,
|
||||||
|
'map': 9},
|
||||||
|
350136: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Hell Keep (E3M1) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 1},
|
||||||
|
350137: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Slough of Despair (E3M2) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 2},
|
||||||
|
350138: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Pandemonium (E3M3) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 3},
|
||||||
|
350139: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'House of Pain (E3M4) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 4},
|
||||||
|
350140: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Unholy Cathedral (E3M5) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 5},
|
||||||
|
350141: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Mt. Erebus (E3M6) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 6},
|
||||||
|
350142: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Limbo (E3M7) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 7},
|
||||||
|
350143: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Dis (E3M8) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 8},
|
||||||
|
350144: {'classification': ItemClassification.progression,
|
||||||
|
'count': 1,
|
||||||
|
'name': 'Warrens (E3M9) - Complete',
|
||||||
|
'doom_type': -2,
|
||||||
|
'episode': 3,
|
||||||
|
'map': 9},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -198,13 +198,13 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 39,
|
'index': 39,
|
||||||
'doom_type': 2018,
|
'doom_type': 2018,
|
||||||
'region': "Command Control (E1M4) Blue Yellow"},
|
'region': "Command Control (E1M4) Blue"},
|
||||||
351031: {'name': 'Command Control (E1M4) - Yellow keycard',
|
351031: {'name': 'Command Control (E1M4) - Yellow keycard',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 61,
|
'index': 61,
|
||||||
'doom_type': 6,
|
'doom_type': 6,
|
||||||
'region': "Command Control (E1M4) Blue Yellow"},
|
'region': "Command Control (E1M4) Blue"},
|
||||||
351032: {'name': 'Command Control (E1M4) - Blue keycard',
|
351032: {'name': 'Command Control (E1M4) - Blue keycard',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
|
@ -228,7 +228,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 100,
|
'index': 100,
|
||||||
'doom_type': 2019,
|
'doom_type': 2019,
|
||||||
'region': "Command Control (E1M4) Blue Yellow"},
|
'region': "Command Control (E1M4) Main"},
|
||||||
351036: {'name': 'Command Control (E1M4) - Backpack',
|
351036: {'name': 'Command Control (E1M4) - Backpack',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
|
@ -246,7 +246,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': 4,
|
'index': 4,
|
||||||
'doom_type': 5,
|
'doom_type': 5,
|
||||||
'region': "Phobos Lab (E1M5) Yellow"},
|
'region': "Phobos Lab (E1M5) Green"},
|
||||||
351039: {'name': 'Phobos Lab (E1M5) - Yellow keycard',
|
351039: {'name': 'Phobos Lab (E1M5) - Yellow keycard',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
|
@ -294,19 +294,19 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': 173,
|
'index': 173,
|
||||||
'doom_type': 2002,
|
'doom_type': 2002,
|
||||||
'region': "Phobos Lab (E1M5) Yellow"},
|
'region': "Phobos Lab (E1M5) Green"},
|
||||||
351047: {'name': 'Phobos Lab (E1M5) - Backpack',
|
351047: {'name': 'Phobos Lab (E1M5) - Backpack',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': 174,
|
'index': 174,
|
||||||
'doom_type': 8,
|
'doom_type': 8,
|
||||||
'region': "Phobos Lab (E1M5) Yellow"},
|
'region': "Phobos Lab (E1M5) Green"},
|
||||||
351048: {'name': 'Phobos Lab (E1M5) - Computer area map',
|
351048: {'name': 'Phobos Lab (E1M5) - Computer area map',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': 176,
|
'index': 176,
|
||||||
'doom_type': 2026,
|
'doom_type': 2026,
|
||||||
'region': "Phobos Lab (E1M5) Yellow"},
|
'region': "Phobos Lab (E1M5) Green"},
|
||||||
351049: {'name': 'Phobos Lab (E1M5) - Mega Armor 2',
|
351049: {'name': 'Phobos Lab (E1M5) - Mega Armor 2',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
|
@ -330,7 +330,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': 280,
|
'index': 280,
|
||||||
'doom_type': 2018,
|
'doom_type': 2018,
|
||||||
'region': "Phobos Lab (E1M5) Yellow"},
|
'region': "Phobos Lab (E1M5) Green"},
|
||||||
351053: {'name': 'Phobos Lab (E1M5) - Partial invisibility',
|
351053: {'name': 'Phobos Lab (E1M5) - Partial invisibility',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
|
@ -432,7 +432,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': 291,
|
'index': 291,
|
||||||
'doom_type': 2018,
|
'doom_type': 2018,
|
||||||
'region': "Central Processing (E1M6) Blue Yellow"},
|
'region': "Central Processing (E1M6) Yellow"},
|
||||||
351070: {'name': 'Central Processing (E1M6) - Armor 4',
|
351070: {'name': 'Central Processing (E1M6) - Armor 4',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
|
@ -444,13 +444,13 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': 392,
|
'index': 392,
|
||||||
'doom_type': 2013,
|
'doom_type': 2013,
|
||||||
'region': "Central Processing (E1M6) Blue"},
|
'region': "Central Processing (E1M6) Nukage"},
|
||||||
351072: {'name': 'Central Processing (E1M6) - Backpack 3',
|
351072: {'name': 'Central Processing (E1M6) - Backpack 3',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': 395,
|
'index': 395,
|
||||||
'doom_type': 8,
|
'doom_type': 8,
|
||||||
'region': "Central Processing (E1M6) Blue"},
|
'region': "Central Processing (E1M6) Nukage"},
|
||||||
351073: {'name': 'Computer Station (E1M7) - Chaingun',
|
351073: {'name': 'Computer Station (E1M7) - Chaingun',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 7,
|
'map': 7,
|
||||||
|
@ -540,7 +540,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 7,
|
'map': 7,
|
||||||
'index': 337,
|
'index': 337,
|
||||||
'doom_type': 2024,
|
'doom_type': 2024,
|
||||||
'region': "Computer Station (E1M7) Yellow Red"},
|
'region': "Computer Station (E1M7) Courtyard"},
|
||||||
351088: {'name': 'Phobos Anomaly (E1M8) - Supercharge',
|
351088: {'name': 'Phobos Anomaly (E1M8) - Supercharge',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 8,
|
'map': 8,
|
||||||
|
@ -906,7 +906,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 107,
|
'index': 107,
|
||||||
'doom_type': 2013,
|
'doom_type': 2013,
|
||||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
'region': "Deimos Lab (E2M4) Yellow"},
|
||||||
351149: {'name': 'Deimos Lab (E2M4) - Shotgun',
|
351149: {'name': 'Deimos Lab (E2M4) - Shotgun',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
|
@ -918,13 +918,13 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 129,
|
'index': 129,
|
||||||
'doom_type': 2019,
|
'doom_type': 2019,
|
||||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
'region': "Deimos Lab (E2M4) Yellow"},
|
||||||
351151: {'name': 'Deimos Lab (E2M4) - Plasma gun',
|
351151: {'name': 'Deimos Lab (E2M4) - Plasma gun',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 130,
|
'index': 130,
|
||||||
'doom_type': 2004,
|
'doom_type': 2004,
|
||||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
'region': "Deimos Lab (E2M4) Yellow"},
|
||||||
351152: {'name': 'Deimos Lab (E2M4) - Backpack',
|
351152: {'name': 'Deimos Lab (E2M4) - Backpack',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
|
@ -1068,7 +1068,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': 125,
|
'index': 125,
|
||||||
'doom_type': 39,
|
'doom_type': 39,
|
||||||
'region': "Halls of the Damned (E2M6) Main"},
|
'region': "Halls of the Damned (E2M6) One way Yellow"},
|
||||||
351176: {'name': 'Halls of the Damned (E2M6) - Supercharge',
|
351176: {'name': 'Halls of the Damned (E2M6) - Supercharge',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
|
@ -1092,7 +1092,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': 217,
|
'index': 217,
|
||||||
'doom_type': 2024,
|
'doom_type': 2024,
|
||||||
'region': "Halls of the Damned (E2M6) Main"},
|
'region': "Halls of the Damned (E2M6) One way Yellow"},
|
||||||
351180: {'name': 'Halls of the Damned (E2M6) - Red skull key',
|
351180: {'name': 'Halls of the Damned (E2M6) - Red skull key',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
|
@ -1200,7 +1200,7 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 7,
|
'map': 7,
|
||||||
'index': 199,
|
'index': 199,
|
||||||
'doom_type': 2013,
|
'doom_type': 2013,
|
||||||
'region': "Spawning Vats (E2M7) Blue Red"},
|
'region': "Spawning Vats (E2M7) Entrance Secret"},
|
||||||
351198: {'name': 'Spawning Vats (E2M7) - Invulnerability 2',
|
351198: {'name': 'Spawning Vats (E2M7) - Invulnerability 2',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 7,
|
'map': 7,
|
||||||
|
@ -1524,19 +1524,19 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 134,
|
'index': 134,
|
||||||
'doom_type': 38,
|
'doom_type': 38,
|
||||||
'region': "House of Pain (E3M4) Blue Yellow"},
|
'region': "House of Pain (E3M4) Yellow"},
|
||||||
351252: {'name': 'House of Pain (E3M4) - Backpack',
|
351252: {'name': 'House of Pain (E3M4) - Backpack',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 160,
|
'index': 160,
|
||||||
'doom_type': 8,
|
'doom_type': 8,
|
||||||
'region': "House of Pain (E3M4) Blue Red"},
|
'region': "House of Pain (E3M4) Red"},
|
||||||
351253: {'name': 'House of Pain (E3M4) - Mega Armor 2',
|
351253: {'name': 'House of Pain (E3M4) - Mega Armor 2',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': 170,
|
'index': 170,
|
||||||
'doom_type': 2019,
|
'doom_type': 2019,
|
||||||
'region': "House of Pain (E3M4) Blue Red"},
|
'region': "House of Pain (E3M4) Red"},
|
||||||
351254: {'name': 'House of Pain (E3M4) - Partial invisibility',
|
351254: {'name': 'House of Pain (E3M4) - Partial invisibility',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
|
@ -1854,253 +1854,253 @@ location_table: Dict[int, LocationDict] = {
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 46,
|
'index': 46,
|
||||||
'doom_type': 2003,
|
'doom_type': 2003,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351307: {'name': 'Warrens (E3M9) - Rocket launcher 2',
|
351307: {'name': 'Warrens (E3M9) - Rocket launcher 2',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 99,
|
'index': 99,
|
||||||
'doom_type': 2003,
|
'doom_type': 2003,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351308: {'name': 'Warrens (E3M9) - Supercharge',
|
351308: {'name': 'Warrens (E3M9) - Supercharge',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 101,
|
'index': 101,
|
||||||
'doom_type': 2013,
|
'doom_type': 2013,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351309: {'name': 'Warrens (E3M9) - Blue skull key',
|
351309: {'name': 'Warrens (E3M9) - Blue skull key',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 108,
|
'index': 108,
|
||||||
'doom_type': 40,
|
'doom_type': 40,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351310: {'name': 'Warrens (E3M9) - Berserk',
|
351310: {'name': 'Warrens (E3M9) - Berserk',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 114,
|
'index': 114,
|
||||||
'doom_type': 2023,
|
'doom_type': 2023,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351311: {'name': 'Warrens (E3M9) - Invulnerability',
|
351311: {'name': 'Warrens (E3M9) - Invulnerability',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 120,
|
'index': 120,
|
||||||
'doom_type': 2022,
|
'doom_type': 2022,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351312: {'name': 'Warrens (E3M9) - Partial invisibility',
|
351312: {'name': 'Warrens (E3M9) - Partial invisibility',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 121,
|
'index': 121,
|
||||||
'doom_type': 2024,
|
'doom_type': 2024,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351313: {'name': 'Warrens (E3M9) - Chaingun',
|
351313: {'name': 'Warrens (E3M9) - Chaingun',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 122,
|
'index': 122,
|
||||||
'doom_type': 2002,
|
'doom_type': 2002,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue"},
|
||||||
351314: {'name': 'Warrens (E3M9) - Plasma gun',
|
351314: {'name': 'Warrens (E3M9) - Plasma gun',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 135,
|
'index': 135,
|
||||||
'doom_type': 2004,
|
'doom_type': 2004,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351315: {'name': 'Warrens (E3M9) - Invulnerability 2',
|
351315: {'name': 'Warrens (E3M9) - Invulnerability 2',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 138,
|
'index': 138,
|
||||||
'doom_type': 2022,
|
'doom_type': 2022,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351316: {'name': 'Warrens (E3M9) - Armor',
|
351316: {'name': 'Warrens (E3M9) - Armor',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 139,
|
'index': 139,
|
||||||
'doom_type': 2018,
|
'doom_type': 2018,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351317: {'name': 'Warrens (E3M9) - Chainsaw',
|
351317: {'name': 'Warrens (E3M9) - Chainsaw',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 140,
|
'index': 140,
|
||||||
'doom_type': 2005,
|
'doom_type': 2005,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351318: {'name': 'Warrens (E3M9) - BFG9000',
|
351318: {'name': 'Warrens (E3M9) - BFG9000',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 141,
|
'index': 141,
|
||||||
'doom_type': 2006,
|
'doom_type': 2006,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351319: {'name': 'Warrens (E3M9) - Red skull key',
|
351319: {'name': 'Warrens (E3M9) - Red skull key',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 143,
|
'index': 143,
|
||||||
'doom_type': 38,
|
'doom_type': 38,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351320: {'name': 'Warrens (E3M9) - Supercharge 2',
|
351320: {'name': 'Warrens (E3M9) - Supercharge 2',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': 188,
|
'index': 188,
|
||||||
'doom_type': 2013,
|
'doom_type': 2013,
|
||||||
'region': "Warrens (E3M9) Main"},
|
'region': "Warrens (E3M9) Blue trigger"},
|
||||||
351321: {'name': 'Central Processing (E1M6) - Complete',
|
351321: {'name': 'Central Processing (E1M6) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Central Processing (E1M6) Blue Yellow"},
|
'region': "Central Processing (E1M6) Main"},
|
||||||
351322: {'name': 'Command Center (E2M5) - Complete',
|
351322: {'name': 'Command Center (E2M5) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Command Center (E2M5) Main"},
|
'region': "Command Center (E2M5) Main"},
|
||||||
351323: {'name': 'Command Control (E1M4) - Complete',
|
351323: {'name': 'Command Control (E1M4) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Command Control (E1M4) Main"},
|
'region': "Command Control (E1M4) Main"},
|
||||||
351324: {'name': 'Computer Station (E1M7) - Complete',
|
351324: {'name': 'Computer Station (E1M7) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 7,
|
'map': 7,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Computer Station (E1M7) Blue"},
|
'region': "Computer Station (E1M7) Main"},
|
||||||
351325: {'name': 'Containment Area (E2M2) - Complete',
|
351325: {'name': 'Containment Area (E2M2) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 2,
|
'map': 2,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Containment Area (E2M2) Red"},
|
'region': "Containment Area (E2M2) Main"},
|
||||||
351326: {'name': 'Deimos Anomaly (E2M1) - Complete',
|
351326: {'name': 'Deimos Anomaly (E2M1) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 1,
|
'map': 1,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Deimos Anomaly (E2M1) Blue"},
|
'region': "Deimos Anomaly (E2M1) Main"},
|
||||||
351327: {'name': 'Deimos Lab (E2M4) - Complete',
|
351327: {'name': 'Deimos Lab (E2M4) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
'region': "Deimos Lab (E2M4) Yellow"},
|
||||||
351328: {'name': 'Dis (E3M8) - Complete',
|
351328: {'name': 'Dis (E3M8) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 8,
|
'map': 8,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Dis (E3M8) Main"},
|
'region': "Dis (E3M8) Main"},
|
||||||
351329: {'name': 'Fortress of Mystery (E2M9) - Complete',
|
351329: {'name': 'Fortress of Mystery (E2M9) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Fortress of Mystery (E2M9) Yellow"},
|
'region': "Fortress of Mystery (E2M9) Main"},
|
||||||
351330: {'name': 'Halls of the Damned (E2M6) - Complete',
|
351330: {'name': 'Halls of the Damned (E2M6) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Halls of the Damned (E2M6) Blue Yellow Red"},
|
'region': "Halls of the Damned (E2M6) Main"},
|
||||||
351331: {'name': 'Hangar (E1M1) - Complete',
|
351331: {'name': 'Hangar (E1M1) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 1,
|
'map': 1,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Hangar (E1M1) Main"},
|
'region': "Hangar (E1M1) Main"},
|
||||||
351332: {'name': 'Hell Keep (E3M1) - Complete',
|
351332: {'name': 'Hell Keep (E3M1) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 1,
|
'map': 1,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Hell Keep (E3M1) Narrow"},
|
'region': "Hell Keep (E3M1) Main"},
|
||||||
351333: {'name': 'House of Pain (E3M4) - Complete',
|
351333: {'name': 'House of Pain (E3M4) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 4,
|
'map': 4,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "House of Pain (E3M4) Blue Red"},
|
'region': "House of Pain (E3M4) Main"},
|
||||||
351334: {'name': 'Limbo (E3M7) - Complete',
|
351334: {'name': 'Limbo (E3M7) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 7,
|
'map': 7,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Limbo (E3M7) Yellow Red"},
|
'region': "Limbo (E3M7) Main"},
|
||||||
351335: {'name': 'Military Base (E1M9) - Complete',
|
351335: {'name': 'Military Base (E1M9) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Military Base (E1M9) Blue"},
|
'region': "Military Base (E1M9) Main"},
|
||||||
351336: {'name': 'Mt. Erebus (E3M6) - Complete',
|
351336: {'name': 'Mt. Erebus (E3M6) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 6,
|
'map': 6,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Mt. Erebus (E3M6) Blue"},
|
'region': "Mt. Erebus (E3M6) Main"},
|
||||||
351337: {'name': 'Nuclear Plant (E1M2) - Complete',
|
351337: {'name': 'Nuclear Plant (E1M2) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 2,
|
'map': 2,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Nuclear Plant (E1M2) Red"},
|
'region': "Nuclear Plant (E1M2) Main"},
|
||||||
351338: {'name': 'Pandemonium (E3M3) - Complete',
|
351338: {'name': 'Pandemonium (E3M3) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 3,
|
'map': 3,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Pandemonium (E3M3) Blue"},
|
'region': "Pandemonium (E3M3) Main"},
|
||||||
351339: {'name': 'Phobos Anomaly (E1M8) - Complete',
|
351339: {'name': 'Phobos Anomaly (E1M8) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 8,
|
'map': 8,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Phobos Anomaly (E1M8) Main"},
|
'region': "Phobos Anomaly (E1M8) Start"},
|
||||||
351340: {'name': 'Phobos Lab (E1M5) - Complete',
|
351340: {'name': 'Phobos Lab (E1M5) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Phobos Lab (E1M5) Blue Yellow"},
|
'region': "Phobos Lab (E1M5) Main"},
|
||||||
351341: {'name': 'Refinery (E2M3) - Complete',
|
351341: {'name': 'Refinery (E2M3) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 3,
|
'map': 3,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Refinery (E2M3) Blue"},
|
'region': "Refinery (E2M3) Main"},
|
||||||
351342: {'name': 'Slough of Despair (E3M2) - Complete',
|
351342: {'name': 'Slough of Despair (E3M2) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 2,
|
'map': 2,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Slough of Despair (E3M2) Blue"},
|
'region': "Slough of Despair (E3M2) Main"},
|
||||||
351343: {'name': 'Spawning Vats (E2M7) - Complete',
|
351343: {'name': 'Spawning Vats (E2M7) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 7,
|
'map': 7,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Spawning Vats (E2M7) Red"},
|
'region': "Spawning Vats (E2M7) Main"},
|
||||||
351344: {'name': 'Tower of Babel (E2M8) - Complete',
|
351344: {'name': 'Tower of Babel (E2M8) - Exit',
|
||||||
'episode': 2,
|
'episode': 2,
|
||||||
'map': 8,
|
'map': 8,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Tower of Babel (E2M8) Main"},
|
'region': "Tower of Babel (E2M8) Main"},
|
||||||
351345: {'name': 'Toxin Refinery (E1M3) - Complete',
|
351345: {'name': 'Toxin Refinery (E1M3) - Exit',
|
||||||
'episode': 1,
|
'episode': 1,
|
||||||
'map': 3,
|
'map': 3,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Toxin Refinery (E1M3) Blue"},
|
'region': "Toxin Refinery (E1M3) Main"},
|
||||||
351346: {'name': 'Unholy Cathedral (E3M5) - Complete',
|
351346: {'name': 'Unholy Cathedral (E3M5) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 5,
|
'map': 5,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Unholy Cathedral (E3M5) Blue"},
|
'region': "Unholy Cathedral (E3M5) Main"},
|
||||||
351347: {'name': 'Warrens (E3M9) - Complete',
|
351347: {'name': 'Warrens (E3M9) - Exit',
|
||||||
'episode': 3,
|
'episode': 3,
|
||||||
'map': 9,
|
'map': 9,
|
||||||
'index': -1,
|
'index': -1,
|
||||||
'doom_type': -1,
|
'doom_type': -1,
|
||||||
'region': "Warrens (E3M9) Red"},
|
'region': "Warrens (E3M9) Main"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2115,8 +2115,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Central Processing (E1M6) - Backpack 3',
|
'Central Processing (E1M6) - Backpack 3',
|
||||||
'Central Processing (E1M6) - Blue keycard',
|
'Central Processing (E1M6) - Blue keycard',
|
||||||
'Central Processing (E1M6) - Chaingun',
|
'Central Processing (E1M6) - Chaingun',
|
||||||
'Central Processing (E1M6) - Complete',
|
|
||||||
'Central Processing (E1M6) - Computer area map',
|
'Central Processing (E1M6) - Computer area map',
|
||||||
|
'Central Processing (E1M6) - Exit',
|
||||||
'Central Processing (E1M6) - Mega Armor',
|
'Central Processing (E1M6) - Mega Armor',
|
||||||
'Central Processing (E1M6) - Partial invisibility',
|
'Central Processing (E1M6) - Partial invisibility',
|
||||||
'Central Processing (E1M6) - Partial invisibility 2',
|
'Central Processing (E1M6) - Partial invisibility 2',
|
||||||
|
@ -2134,8 +2134,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Command Center (E2M5) - Berserk',
|
'Command Center (E2M5) - Berserk',
|
||||||
'Command Center (E2M5) - Chaingun',
|
'Command Center (E2M5) - Chaingun',
|
||||||
'Command Center (E2M5) - Chainsaw',
|
'Command Center (E2M5) - Chainsaw',
|
||||||
'Command Center (E2M5) - Complete',
|
|
||||||
'Command Center (E2M5) - Computer area map',
|
'Command Center (E2M5) - Computer area map',
|
||||||
|
'Command Center (E2M5) - Exit',
|
||||||
'Command Center (E2M5) - Mega Armor',
|
'Command Center (E2M5) - Mega Armor',
|
||||||
'Command Center (E2M5) - Partial invisibility',
|
'Command Center (E2M5) - Partial invisibility',
|
||||||
'Command Center (E2M5) - Plasma gun',
|
'Command Center (E2M5) - Plasma gun',
|
||||||
|
@ -2145,7 +2145,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Command Control (E1M4) - Backpack',
|
'Command Control (E1M4) - Backpack',
|
||||||
'Command Control (E1M4) - Blue keycard',
|
'Command Control (E1M4) - Blue keycard',
|
||||||
'Command Control (E1M4) - Chaingun',
|
'Command Control (E1M4) - Chaingun',
|
||||||
'Command Control (E1M4) - Complete',
|
'Command Control (E1M4) - Exit',
|
||||||
'Command Control (E1M4) - Mega Armor',
|
'Command Control (E1M4) - Mega Armor',
|
||||||
'Command Control (E1M4) - Rocket launcher',
|
'Command Control (E1M4) - Rocket launcher',
|
||||||
'Command Control (E1M4) - Shotgun',
|
'Command Control (E1M4) - Shotgun',
|
||||||
|
@ -2159,8 +2159,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Computer Station (E1M7) - Blue keycard',
|
'Computer Station (E1M7) - Blue keycard',
|
||||||
'Computer Station (E1M7) - Chaingun',
|
'Computer Station (E1M7) - Chaingun',
|
||||||
'Computer Station (E1M7) - Chainsaw',
|
'Computer Station (E1M7) - Chainsaw',
|
||||||
'Computer Station (E1M7) - Complete',
|
|
||||||
'Computer Station (E1M7) - Computer area map',
|
'Computer Station (E1M7) - Computer area map',
|
||||||
|
'Computer Station (E1M7) - Exit',
|
||||||
'Computer Station (E1M7) - Mega Armor',
|
'Computer Station (E1M7) - Mega Armor',
|
||||||
'Computer Station (E1M7) - Partial invisibility',
|
'Computer Station (E1M7) - Partial invisibility',
|
||||||
'Computer Station (E1M7) - Red keycard',
|
'Computer Station (E1M7) - Red keycard',
|
||||||
|
@ -2181,8 +2181,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Containment Area (E2M2) - Blue keycard',
|
'Containment Area (E2M2) - Blue keycard',
|
||||||
'Containment Area (E2M2) - Chaingun',
|
'Containment Area (E2M2) - Chaingun',
|
||||||
'Containment Area (E2M2) - Chainsaw',
|
'Containment Area (E2M2) - Chainsaw',
|
||||||
'Containment Area (E2M2) - Complete',
|
|
||||||
'Containment Area (E2M2) - Computer area map',
|
'Containment Area (E2M2) - Computer area map',
|
||||||
|
'Containment Area (E2M2) - Exit',
|
||||||
'Containment Area (E2M2) - Mega Armor',
|
'Containment Area (E2M2) - Mega Armor',
|
||||||
'Containment Area (E2M2) - Plasma gun',
|
'Containment Area (E2M2) - Plasma gun',
|
||||||
'Containment Area (E2M2) - Red keycard',
|
'Containment Area (E2M2) - Red keycard',
|
||||||
|
@ -2195,8 +2195,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Deimos Anomaly (E2M1)': {
|
'Deimos Anomaly (E2M1)': {
|
||||||
'Deimos Anomaly (E2M1) - Armor',
|
'Deimos Anomaly (E2M1) - Armor',
|
||||||
'Deimos Anomaly (E2M1) - Blue keycard',
|
'Deimos Anomaly (E2M1) - Blue keycard',
|
||||||
'Deimos Anomaly (E2M1) - Complete',
|
|
||||||
'Deimos Anomaly (E2M1) - Computer area map',
|
'Deimos Anomaly (E2M1) - Computer area map',
|
||||||
|
'Deimos Anomaly (E2M1) - Exit',
|
||||||
'Deimos Anomaly (E2M1) - Mega Armor',
|
'Deimos Anomaly (E2M1) - Mega Armor',
|
||||||
'Deimos Anomaly (E2M1) - Plasma gun',
|
'Deimos Anomaly (E2M1) - Plasma gun',
|
||||||
'Deimos Anomaly (E2M1) - Red keycard',
|
'Deimos Anomaly (E2M1) - Red keycard',
|
||||||
|
@ -2211,8 +2211,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Deimos Lab (E2M4) - Berserk',
|
'Deimos Lab (E2M4) - Berserk',
|
||||||
'Deimos Lab (E2M4) - Blue keycard',
|
'Deimos Lab (E2M4) - Blue keycard',
|
||||||
'Deimos Lab (E2M4) - Chaingun',
|
'Deimos Lab (E2M4) - Chaingun',
|
||||||
'Deimos Lab (E2M4) - Complete',
|
|
||||||
'Deimos Lab (E2M4) - Computer area map',
|
'Deimos Lab (E2M4) - Computer area map',
|
||||||
|
'Deimos Lab (E2M4) - Exit',
|
||||||
'Deimos Lab (E2M4) - Mega Armor',
|
'Deimos Lab (E2M4) - Mega Armor',
|
||||||
'Deimos Lab (E2M4) - Partial invisibility',
|
'Deimos Lab (E2M4) - Partial invisibility',
|
||||||
'Deimos Lab (E2M4) - Partial invisibility 2',
|
'Deimos Lab (E2M4) - Partial invisibility 2',
|
||||||
|
@ -2223,7 +2223,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Deimos Lab (E2M4) - Yellow keycard',
|
'Deimos Lab (E2M4) - Yellow keycard',
|
||||||
},
|
},
|
||||||
'Dis (E3M8)': {
|
'Dis (E3M8)': {
|
||||||
'Dis (E3M8) - Complete',
|
'Dis (E3M8) - Exit',
|
||||||
'Dis (E3M8) - Mega Armor',
|
'Dis (E3M8) - Mega Armor',
|
||||||
'Dis (E3M8) - Plasma gun',
|
'Dis (E3M8) - Plasma gun',
|
||||||
'Dis (E3M8) - Rocket launcher',
|
'Dis (E3M8) - Rocket launcher',
|
||||||
|
@ -2233,8 +2233,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Fortress of Mystery (E2M9) - Blue skull key',
|
'Fortress of Mystery (E2M9) - Blue skull key',
|
||||||
'Fortress of Mystery (E2M9) - Chaingun',
|
'Fortress of Mystery (E2M9) - Chaingun',
|
||||||
'Fortress of Mystery (E2M9) - Chainsaw',
|
'Fortress of Mystery (E2M9) - Chainsaw',
|
||||||
'Fortress of Mystery (E2M9) - Complete',
|
|
||||||
'Fortress of Mystery (E2M9) - Computer area map',
|
'Fortress of Mystery (E2M9) - Computer area map',
|
||||||
|
'Fortress of Mystery (E2M9) - Exit',
|
||||||
'Fortress of Mystery (E2M9) - Mega Armor',
|
'Fortress of Mystery (E2M9) - Mega Armor',
|
||||||
'Fortress of Mystery (E2M9) - Plasma gun',
|
'Fortress of Mystery (E2M9) - Plasma gun',
|
||||||
'Fortress of Mystery (E2M9) - Red skull key',
|
'Fortress of Mystery (E2M9) - Red skull key',
|
||||||
|
@ -2250,8 +2250,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Halls of the Damned (E2M6) - Blue skull key',
|
'Halls of the Damned (E2M6) - Blue skull key',
|
||||||
'Halls of the Damned (E2M6) - Chaingun',
|
'Halls of the Damned (E2M6) - Chaingun',
|
||||||
'Halls of the Damned (E2M6) - Chainsaw',
|
'Halls of the Damned (E2M6) - Chainsaw',
|
||||||
'Halls of the Damned (E2M6) - Complete',
|
|
||||||
'Halls of the Damned (E2M6) - Computer area map',
|
'Halls of the Damned (E2M6) - Computer area map',
|
||||||
|
'Halls of the Damned (E2M6) - Exit',
|
||||||
'Halls of the Damned (E2M6) - Mega Armor',
|
'Halls of the Damned (E2M6) - Mega Armor',
|
||||||
'Halls of the Damned (E2M6) - Partial invisibility',
|
'Halls of the Damned (E2M6) - Partial invisibility',
|
||||||
'Halls of the Damned (E2M6) - Partial invisibility 2',
|
'Halls of the Damned (E2M6) - Partial invisibility 2',
|
||||||
|
@ -2265,12 +2265,12 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
},
|
},
|
||||||
'Hangar (E1M1)': {
|
'Hangar (E1M1)': {
|
||||||
'Hangar (E1M1) - Armor',
|
'Hangar (E1M1) - Armor',
|
||||||
'Hangar (E1M1) - Complete',
|
'Hangar (E1M1) - Exit',
|
||||||
'Hangar (E1M1) - Mega Armor',
|
'Hangar (E1M1) - Mega Armor',
|
||||||
'Hangar (E1M1) - Shotgun',
|
'Hangar (E1M1) - Shotgun',
|
||||||
},
|
},
|
||||||
'Hell Keep (E3M1)': {
|
'Hell Keep (E3M1)': {
|
||||||
'Hell Keep (E3M1) - Complete',
|
'Hell Keep (E3M1) - Exit',
|
||||||
'Hell Keep (E3M1) - Rocket launcher',
|
'Hell Keep (E3M1) - Rocket launcher',
|
||||||
'Hell Keep (E3M1) - Shotgun',
|
'Hell Keep (E3M1) - Shotgun',
|
||||||
},
|
},
|
||||||
|
@ -2283,7 +2283,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'House of Pain (E3M4) - Berserk',
|
'House of Pain (E3M4) - Berserk',
|
||||||
'House of Pain (E3M4) - Blue skull key',
|
'House of Pain (E3M4) - Blue skull key',
|
||||||
'House of Pain (E3M4) - Chaingun',
|
'House of Pain (E3M4) - Chaingun',
|
||||||
'House of Pain (E3M4) - Complete',
|
'House of Pain (E3M4) - Exit',
|
||||||
'House of Pain (E3M4) - Invulnerability',
|
'House of Pain (E3M4) - Invulnerability',
|
||||||
'House of Pain (E3M4) - Invulnerability 2',
|
'House of Pain (E3M4) - Invulnerability 2',
|
||||||
'House of Pain (E3M4) - Mega Armor',
|
'House of Pain (E3M4) - Mega Armor',
|
||||||
|
@ -2301,7 +2301,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Limbo (E3M7) - BFG9000',
|
'Limbo (E3M7) - BFG9000',
|
||||||
'Limbo (E3M7) - Backpack',
|
'Limbo (E3M7) - Backpack',
|
||||||
'Limbo (E3M7) - Blue skull key',
|
'Limbo (E3M7) - Blue skull key',
|
||||||
'Limbo (E3M7) - Complete',
|
'Limbo (E3M7) - Exit',
|
||||||
'Limbo (E3M7) - Mega Armor',
|
'Limbo (E3M7) - Mega Armor',
|
||||||
'Limbo (E3M7) - Plasma gun',
|
'Limbo (E3M7) - Plasma gun',
|
||||||
'Limbo (E3M7) - Red skull key',
|
'Limbo (E3M7) - Red skull key',
|
||||||
|
@ -2315,7 +2315,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Military Base (E1M9) - Blue keycard',
|
'Military Base (E1M9) - Blue keycard',
|
||||||
'Military Base (E1M9) - Chaingun',
|
'Military Base (E1M9) - Chaingun',
|
||||||
'Military Base (E1M9) - Chainsaw',
|
'Military Base (E1M9) - Chainsaw',
|
||||||
'Military Base (E1M9) - Complete',
|
'Military Base (E1M9) - Exit',
|
||||||
'Military Base (E1M9) - Red keycard',
|
'Military Base (E1M9) - Red keycard',
|
||||||
'Military Base (E1M9) - Rocket launcher',
|
'Military Base (E1M9) - Rocket launcher',
|
||||||
'Military Base (E1M9) - Shotgun',
|
'Military Base (E1M9) - Shotgun',
|
||||||
|
@ -2330,8 +2330,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Mt. Erebus (E3M6) - Blue skull key 2',
|
'Mt. Erebus (E3M6) - Blue skull key 2',
|
||||||
'Mt. Erebus (E3M6) - Chaingun',
|
'Mt. Erebus (E3M6) - Chaingun',
|
||||||
'Mt. Erebus (E3M6) - Chainsaw',
|
'Mt. Erebus (E3M6) - Chainsaw',
|
||||||
'Mt. Erebus (E3M6) - Complete',
|
|
||||||
'Mt. Erebus (E3M6) - Computer area map',
|
'Mt. Erebus (E3M6) - Computer area map',
|
||||||
|
'Mt. Erebus (E3M6) - Exit',
|
||||||
'Mt. Erebus (E3M6) - Invulnerability',
|
'Mt. Erebus (E3M6) - Invulnerability',
|
||||||
'Mt. Erebus (E3M6) - Invulnerability 2',
|
'Mt. Erebus (E3M6) - Invulnerability 2',
|
||||||
'Mt. Erebus (E3M6) - Mega Armor',
|
'Mt. Erebus (E3M6) - Mega Armor',
|
||||||
|
@ -2349,7 +2349,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Nuclear Plant (E1M2) - Backpack 2',
|
'Nuclear Plant (E1M2) - Backpack 2',
|
||||||
'Nuclear Plant (E1M2) - Chaingun',
|
'Nuclear Plant (E1M2) - Chaingun',
|
||||||
'Nuclear Plant (E1M2) - Chainsaw',
|
'Nuclear Plant (E1M2) - Chainsaw',
|
||||||
'Nuclear Plant (E1M2) - Complete',
|
'Nuclear Plant (E1M2) - Exit',
|
||||||
'Nuclear Plant (E1M2) - Mega Armor',
|
'Nuclear Plant (E1M2) - Mega Armor',
|
||||||
'Nuclear Plant (E1M2) - Red keycard',
|
'Nuclear Plant (E1M2) - Red keycard',
|
||||||
'Nuclear Plant (E1M2) - Shotgun',
|
'Nuclear Plant (E1M2) - Shotgun',
|
||||||
|
@ -2362,8 +2362,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Pandemonium (E3M3) - Berserk',
|
'Pandemonium (E3M3) - Berserk',
|
||||||
'Pandemonium (E3M3) - Blue skull key',
|
'Pandemonium (E3M3) - Blue skull key',
|
||||||
'Pandemonium (E3M3) - Chaingun',
|
'Pandemonium (E3M3) - Chaingun',
|
||||||
'Pandemonium (E3M3) - Complete',
|
|
||||||
'Pandemonium (E3M3) - Computer area map',
|
'Pandemonium (E3M3) - Computer area map',
|
||||||
|
'Pandemonium (E3M3) - Exit',
|
||||||
'Pandemonium (E3M3) - Invulnerability',
|
'Pandemonium (E3M3) - Invulnerability',
|
||||||
'Pandemonium (E3M3) - Mega Armor',
|
'Pandemonium (E3M3) - Mega Armor',
|
||||||
'Pandemonium (E3M3) - Mega Armor 2',
|
'Pandemonium (E3M3) - Mega Armor 2',
|
||||||
|
@ -2375,8 +2375,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Phobos Anomaly (E1M8)': {
|
'Phobos Anomaly (E1M8)': {
|
||||||
'Phobos Anomaly (E1M8) - Armor',
|
'Phobos Anomaly (E1M8) - Armor',
|
||||||
'Phobos Anomaly (E1M8) - Chaingun',
|
'Phobos Anomaly (E1M8) - Chaingun',
|
||||||
'Phobos Anomaly (E1M8) - Complete',
|
|
||||||
'Phobos Anomaly (E1M8) - Computer area map',
|
'Phobos Anomaly (E1M8) - Computer area map',
|
||||||
|
'Phobos Anomaly (E1M8) - Exit',
|
||||||
'Phobos Anomaly (E1M8) - Partial invisibility',
|
'Phobos Anomaly (E1M8) - Partial invisibility',
|
||||||
'Phobos Anomaly (E1M8) - Shotgun',
|
'Phobos Anomaly (E1M8) - Shotgun',
|
||||||
'Phobos Anomaly (E1M8) - Shotgun 2',
|
'Phobos Anomaly (E1M8) - Shotgun 2',
|
||||||
|
@ -2389,8 +2389,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Phobos Lab (E1M5) - Blue keycard',
|
'Phobos Lab (E1M5) - Blue keycard',
|
||||||
'Phobos Lab (E1M5) - Chaingun',
|
'Phobos Lab (E1M5) - Chaingun',
|
||||||
'Phobos Lab (E1M5) - Chainsaw',
|
'Phobos Lab (E1M5) - Chainsaw',
|
||||||
'Phobos Lab (E1M5) - Complete',
|
|
||||||
'Phobos Lab (E1M5) - Computer area map',
|
'Phobos Lab (E1M5) - Computer area map',
|
||||||
|
'Phobos Lab (E1M5) - Exit',
|
||||||
'Phobos Lab (E1M5) - Mega Armor',
|
'Phobos Lab (E1M5) - Mega Armor',
|
||||||
'Phobos Lab (E1M5) - Mega Armor 2',
|
'Phobos Lab (E1M5) - Mega Armor 2',
|
||||||
'Phobos Lab (E1M5) - Partial invisibility',
|
'Phobos Lab (E1M5) - Partial invisibility',
|
||||||
|
@ -2407,7 +2407,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Refinery (E2M3) - Berserk',
|
'Refinery (E2M3) - Berserk',
|
||||||
'Refinery (E2M3) - Blue keycard',
|
'Refinery (E2M3) - Blue keycard',
|
||||||
'Refinery (E2M3) - Chaingun',
|
'Refinery (E2M3) - Chaingun',
|
||||||
'Refinery (E2M3) - Complete',
|
'Refinery (E2M3) - Exit',
|
||||||
'Refinery (E2M3) - Mega Armor',
|
'Refinery (E2M3) - Mega Armor',
|
||||||
'Refinery (E2M3) - Partial invisibility',
|
'Refinery (E2M3) - Partial invisibility',
|
||||||
'Refinery (E2M3) - Partial invisibility 2',
|
'Refinery (E2M3) - Partial invisibility 2',
|
||||||
|
@ -2420,8 +2420,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Slough of Despair (E3M2) - Berserk',
|
'Slough of Despair (E3M2) - Berserk',
|
||||||
'Slough of Despair (E3M2) - Blue skull key',
|
'Slough of Despair (E3M2) - Blue skull key',
|
||||||
'Slough of Despair (E3M2) - Chaingun',
|
'Slough of Despair (E3M2) - Chaingun',
|
||||||
'Slough of Despair (E3M2) - Complete',
|
|
||||||
'Slough of Despair (E3M2) - Computer area map',
|
'Slough of Despair (E3M2) - Computer area map',
|
||||||
|
'Slough of Despair (E3M2) - Exit',
|
||||||
'Slough of Despair (E3M2) - Mega Armor',
|
'Slough of Despair (E3M2) - Mega Armor',
|
||||||
'Slough of Despair (E3M2) - Plasma gun',
|
'Slough of Despair (E3M2) - Plasma gun',
|
||||||
'Slough of Despair (E3M2) - Rocket launcher',
|
'Slough of Despair (E3M2) - Rocket launcher',
|
||||||
|
@ -2434,8 +2434,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Spawning Vats (E2M7) - Blue keycard',
|
'Spawning Vats (E2M7) - Blue keycard',
|
||||||
'Spawning Vats (E2M7) - Chaingun',
|
'Spawning Vats (E2M7) - Chaingun',
|
||||||
'Spawning Vats (E2M7) - Chainsaw',
|
'Spawning Vats (E2M7) - Chainsaw',
|
||||||
'Spawning Vats (E2M7) - Complete',
|
|
||||||
'Spawning Vats (E2M7) - Computer area map',
|
'Spawning Vats (E2M7) - Computer area map',
|
||||||
|
'Spawning Vats (E2M7) - Exit',
|
||||||
'Spawning Vats (E2M7) - Invulnerability',
|
'Spawning Vats (E2M7) - Invulnerability',
|
||||||
'Spawning Vats (E2M7) - Invulnerability 2',
|
'Spawning Vats (E2M7) - Invulnerability 2',
|
||||||
'Spawning Vats (E2M7) - Mega Armor',
|
'Spawning Vats (E2M7) - Mega Armor',
|
||||||
|
@ -2447,7 +2447,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Spawning Vats (E2M7) - Yellow keycard',
|
'Spawning Vats (E2M7) - Yellow keycard',
|
||||||
},
|
},
|
||||||
'Tower of Babel (E2M8)': {
|
'Tower of Babel (E2M8)': {
|
||||||
'Tower of Babel (E2M8) - Complete',
|
'Tower of Babel (E2M8) - Exit',
|
||||||
'Tower of Babel (E2M8) - Mega Armor',
|
'Tower of Babel (E2M8) - Mega Armor',
|
||||||
'Tower of Babel (E2M8) - Rocket launcher',
|
'Tower of Babel (E2M8) - Rocket launcher',
|
||||||
'Tower of Babel (E2M8) - Supercharge',
|
'Tower of Babel (E2M8) - Supercharge',
|
||||||
|
@ -2461,7 +2461,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Toxin Refinery (E1M3) - Blue keycard',
|
'Toxin Refinery (E1M3) - Blue keycard',
|
||||||
'Toxin Refinery (E1M3) - Chaingun',
|
'Toxin Refinery (E1M3) - Chaingun',
|
||||||
'Toxin Refinery (E1M3) - Chainsaw',
|
'Toxin Refinery (E1M3) - Chainsaw',
|
||||||
'Toxin Refinery (E1M3) - Complete',
|
'Toxin Refinery (E1M3) - Exit',
|
||||||
'Toxin Refinery (E1M3) - Mega Armor',
|
'Toxin Refinery (E1M3) - Mega Armor',
|
||||||
'Toxin Refinery (E1M3) - Partial invisibility',
|
'Toxin Refinery (E1M3) - Partial invisibility',
|
||||||
'Toxin Refinery (E1M3) - Rocket launcher',
|
'Toxin Refinery (E1M3) - Rocket launcher',
|
||||||
|
@ -2477,7 +2477,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Unholy Cathedral (E3M5) - Blue skull key',
|
'Unholy Cathedral (E3M5) - Blue skull key',
|
||||||
'Unholy Cathedral (E3M5) - Chaingun',
|
'Unholy Cathedral (E3M5) - Chaingun',
|
||||||
'Unholy Cathedral (E3M5) - Chainsaw',
|
'Unholy Cathedral (E3M5) - Chainsaw',
|
||||||
'Unholy Cathedral (E3M5) - Complete',
|
'Unholy Cathedral (E3M5) - Exit',
|
||||||
'Unholy Cathedral (E3M5) - Invulnerability',
|
'Unholy Cathedral (E3M5) - Invulnerability',
|
||||||
'Unholy Cathedral (E3M5) - Partial invisibility',
|
'Unholy Cathedral (E3M5) - Partial invisibility',
|
||||||
'Unholy Cathedral (E3M5) - Plasma gun',
|
'Unholy Cathedral (E3M5) - Plasma gun',
|
||||||
|
@ -2495,7 +2495,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
||||||
'Warrens (E3M9) - Blue skull key',
|
'Warrens (E3M9) - Blue skull key',
|
||||||
'Warrens (E3M9) - Chaingun',
|
'Warrens (E3M9) - Chaingun',
|
||||||
'Warrens (E3M9) - Chainsaw',
|
'Warrens (E3M9) - Chainsaw',
|
||||||
'Warrens (E3M9) - Complete',
|
'Warrens (E3M9) - Exit',
|
||||||
'Warrens (E3M9) - Invulnerability',
|
'Warrens (E3M9) - Invulnerability',
|
||||||
'Warrens (E3M9) - Invulnerability 2',
|
'Warrens (E3M9) - Invulnerability 2',
|
||||||
'Warrens (E3M9) - Partial invisibility',
|
'Warrens (E3M9) - Partial invisibility',
|
||||||
|
@ -2514,8 +2514,9 @@ death_logic_locations = [
|
||||||
"Command Control (E1M4) - Supercharge",
|
"Command Control (E1M4) - Supercharge",
|
||||||
"Command Control (E1M4) - Mega Armor",
|
"Command Control (E1M4) - Mega Armor",
|
||||||
"Containment Area (E2M2) - Supercharge",
|
"Containment Area (E2M2) - Supercharge",
|
||||||
|
"Pandemonium (E3M3) - Mega Armor",
|
||||||
"House of Pain (E3M4) - Chaingun",
|
"House of Pain (E3M4) - Chaingun",
|
||||||
"House of Pain (E3M4) - Invulnerability",
|
"House of Pain (E3M4) - Invulnerability",
|
||||||
"Pandemonium (E3M3) - Mega Armor",
|
|
||||||
"Unholy Cathedral (E3M5) - BFG9000",
|
"Unholy Cathedral (E3M5) - BFG9000",
|
||||||
|
"Mt. Erebus (E3M6) - Chainsaw",
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# This file is auto generated. More info: https://github.com/Daivuk/apdoom
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
map_names: List[str] = [
|
||||||
|
'Hangar (E1M1)',
|
||||||
|
'Nuclear Plant (E1M2)',
|
||||||
|
'Toxin Refinery (E1M3)',
|
||||||
|
'Command Control (E1M4)',
|
||||||
|
'Phobos Lab (E1M5)',
|
||||||
|
'Central Processing (E1M6)',
|
||||||
|
'Computer Station (E1M7)',
|
||||||
|
'Phobos Anomaly (E1M8)',
|
||||||
|
'Military Base (E1M9)',
|
||||||
|
'Deimos Anomaly (E2M1)',
|
||||||
|
'Containment Area (E2M2)',
|
||||||
|
'Refinery (E2M3)',
|
||||||
|
'Deimos Lab (E2M4)',
|
||||||
|
'Command Center (E2M5)',
|
||||||
|
'Halls of the Damned (E2M6)',
|
||||||
|
'Spawning Vats (E2M7)',
|
||||||
|
'Tower of Babel (E2M8)',
|
||||||
|
'Fortress of Mystery (E2M9)',
|
||||||
|
'Hell Keep (E3M1)',
|
||||||
|
'Slough of Despair (E3M2)',
|
||||||
|
'Pandemonium (E3M3)',
|
||||||
|
'House of Pain (E3M4)',
|
||||||
|
'Unholy Cathedral (E3M5)',
|
||||||
|
'Mt. Erebus (E3M6)',
|
||||||
|
'Limbo (E3M7)',
|
||||||
|
'Dis (E3M8)',
|
||||||
|
'Warrens (E3M9)',
|
||||||
|
]
|
|
@ -57,6 +57,11 @@ class AllowDeathLogic(Toggle):
|
||||||
display_name = "Allow Death Logic"
|
display_name = "Allow Death Logic"
|
||||||
|
|
||||||
|
|
||||||
|
class StartWithComputerAreaMaps(Toggle):
|
||||||
|
"""Give the player all Computer Area Map items from the start."""
|
||||||
|
display_name = "Start With Computer Area Maps"
|
||||||
|
|
||||||
|
|
||||||
class Episode1(DefaultOnToggle):
|
class Episode1(DefaultOnToggle):
|
||||||
"""Knee-Deep in the Dead.
|
"""Knee-Deep in the Dead.
|
||||||
If none of the episodes are chosen, Episode 1 will be chosen by default."""
|
If none of the episodes are chosen, Episode 1 will be chosen by default."""
|
||||||
|
@ -80,6 +85,7 @@ options: typing.Dict[str, AssembleOptions] = {
|
||||||
"random_monsters": RandomMonsters,
|
"random_monsters": RandomMonsters,
|
||||||
"random_pickups": RandomPickups,
|
"random_pickups": RandomPickups,
|
||||||
"allow_death_logic": AllowDeathLogic,
|
"allow_death_logic": AllowDeathLogic,
|
||||||
|
"start_with_computer_area_maps": StartWithComputerAreaMaps,
|
||||||
"death_link": DeathLink,
|
"death_link": DeathLink,
|
||||||
"episode1": Episode1,
|
"episode1": Episode1,
|
||||||
"episode2": Episode2,
|
"episode2": Episode2,
|
||||||
|
|
|
@ -1,80 +1,358 @@
|
||||||
# This file is auto generated. More info: https://github.com/Daivuk/apdoom
|
# This file is auto generated. More info: https://github.com/Daivuk/apdoom
|
||||||
|
|
||||||
from typing import List
|
from typing import List
|
||||||
from BaseClasses import Region, Entrance
|
from BaseClasses import TypedDict
|
||||||
|
|
||||||
regions:List[Region] = [
|
class RegionDict(TypedDict, total=False):
|
||||||
"Central Processing (E1M6) Blue",
|
name: str
|
||||||
"Central Processing (E1M6) Blue Yellow",
|
connects_to_hub: bool
|
||||||
"Central Processing (E1M6) Main",
|
connections: List[str]
|
||||||
"Central Processing (E1M6) Red",
|
|
||||||
"Command Center (E2M5) Main",
|
|
||||||
"Command Control (E1M4) Blue Yellow",
|
regions:List[RegionDict] = [
|
||||||
"Command Control (E1M4) Main",
|
# Hangar (E1M1)
|
||||||
"Computer Station (E1M7) Blue",
|
{"name":"Hangar (E1M1) Main",
|
||||||
"Computer Station (E1M7) Main",
|
"connects_to_hub":True,
|
||||||
"Computer Station (E1M7) Red",
|
"connections":[]},
|
||||||
"Computer Station (E1M7) Yellow",
|
|
||||||
"Computer Station (E1M7) Yellow Red",
|
# Nuclear Plant (E1M2)
|
||||||
"Containment Area (E2M2) Blue",
|
{"name":"Nuclear Plant (E1M2) Main",
|
||||||
"Containment Area (E2M2) Main",
|
"connects_to_hub":True,
|
||||||
"Containment Area (E2M2) Red",
|
"connections":["Nuclear Plant (E1M2) Red"]},
|
||||||
"Containment Area (E2M2) Yellow",
|
{"name":"Nuclear Plant (E1M2) Red",
|
||||||
"Deimos Anomaly (E2M1) Blue",
|
"connects_to_hub":False,
|
||||||
"Deimos Anomaly (E2M1) Main",
|
"connections":["Nuclear Plant (E1M2) Main"]},
|
||||||
"Deimos Anomaly (E2M1) Red",
|
|
||||||
"Deimos Lab (E2M4) Blue",
|
# Toxin Refinery (E1M3)
|
||||||
"Deimos Lab (E2M4) Blue Yellow",
|
{"name":"Toxin Refinery (E1M3) Main",
|
||||||
"Deimos Lab (E2M4) Main",
|
"connects_to_hub":True,
|
||||||
"Dis (E3M8) Main",
|
"connections":["Toxin Refinery (E1M3) Blue"]},
|
||||||
"Fortress of Mystery (E2M9) Blue",
|
{"name":"Toxin Refinery (E1M3) Blue",
|
||||||
"Fortress of Mystery (E2M9) Main",
|
"connects_to_hub":False,
|
||||||
"Fortress of Mystery (E2M9) Red",
|
"connections":[
|
||||||
"Fortress of Mystery (E2M9) Yellow",
|
|
||||||
"Halls of the Damned (E2M6) Blue Yellow Red",
|
|
||||||
"Halls of the Damned (E2M6) Main",
|
|
||||||
"Halls of the Damned (E2M6) Yellow",
|
|
||||||
"Hangar (E1M1) Main",
|
|
||||||
"Hell Keep (E3M1) Main",
|
|
||||||
"Hell Keep (E3M1) Narrow",
|
|
||||||
"House of Pain (E3M4) Blue",
|
|
||||||
"House of Pain (E3M4) Blue Red",
|
|
||||||
"House of Pain (E3M4) Blue Yellow",
|
|
||||||
"House of Pain (E3M4) Main",
|
|
||||||
"Limbo (E3M7) Blue",
|
|
||||||
"Limbo (E3M7) Main",
|
|
||||||
"Limbo (E3M7) Red",
|
|
||||||
"Limbo (E3M7) Yellow Red",
|
|
||||||
"Military Base (E1M9) Blue",
|
|
||||||
"Military Base (E1M9) Main",
|
|
||||||
"Military Base (E1M9) Red",
|
|
||||||
"Military Base (E1M9) Yellow",
|
|
||||||
"Mt. Erebus (E3M6) Blue",
|
|
||||||
"Mt. Erebus (E3M6) Main",
|
|
||||||
"Nuclear Plant (E1M2) Main",
|
|
||||||
"Nuclear Plant (E1M2) Red",
|
|
||||||
"Pandemonium (E3M3) Blue",
|
|
||||||
"Pandemonium (E3M3) Main",
|
|
||||||
"Phobos Anomaly (E1M8) Main",
|
|
||||||
"Phobos Lab (E1M5) Blue Yellow",
|
|
||||||
"Phobos Lab (E1M5) Main",
|
|
||||||
"Phobos Lab (E1M5) Yellow",
|
|
||||||
"Refinery (E2M3) Blue",
|
|
||||||
"Refinery (E2M3) Main",
|
|
||||||
"Slough of Despair (E3M2) Blue",
|
|
||||||
"Slough of Despair (E3M2) Main",
|
|
||||||
"Spawning Vats (E2M7) Blue",
|
|
||||||
"Spawning Vats (E2M7) Blue Red",
|
|
||||||
"Spawning Vats (E2M7) Main",
|
|
||||||
"Spawning Vats (E2M7) Red",
|
|
||||||
"Spawning Vats (E2M7) Yellow",
|
|
||||||
"Tower of Babel (E2M8) Main",
|
|
||||||
"Toxin Refinery (E1M3) Blue",
|
|
||||||
"Toxin Refinery (E1M3) Main",
|
|
||||||
"Toxin Refinery (E1M3) Yellow",
|
"Toxin Refinery (E1M3) Yellow",
|
||||||
"Unholy Cathedral (E3M5) Blue",
|
"Toxin Refinery (E1M3) Main"]},
|
||||||
"Unholy Cathedral (E3M5) Main",
|
{"name":"Toxin Refinery (E1M3) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Toxin Refinery (E1M3) Blue"]},
|
||||||
|
|
||||||
|
# Command Control (E1M4)
|
||||||
|
{"name":"Command Control (E1M4) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Command Control (E1M4) Blue",
|
||||||
|
"Command Control (E1M4) Yellow"]},
|
||||||
|
{"name":"Command Control (E1M4) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Command Control (E1M4) Main"]},
|
||||||
|
{"name":"Command Control (E1M4) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Command Control (E1M4) Main"]},
|
||||||
|
|
||||||
|
# Phobos Lab (E1M5)
|
||||||
|
{"name":"Phobos Lab (E1M5) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Phobos Lab (E1M5) Yellow"]},
|
||||||
|
{"name":"Phobos Lab (E1M5) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Phobos Lab (E1M5) Main",
|
||||||
|
"Phobos Lab (E1M5) Blue",
|
||||||
|
"Phobos Lab (E1M5) Green"]},
|
||||||
|
{"name":"Phobos Lab (E1M5) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Phobos Lab (E1M5) Green",
|
||||||
|
"Phobos Lab (E1M5) Yellow"]},
|
||||||
|
{"name":"Phobos Lab (E1M5) Green",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Phobos Lab (E1M5) Main",
|
||||||
|
"Phobos Lab (E1M5) Blue"]},
|
||||||
|
|
||||||
|
# Central Processing (E1M6)
|
||||||
|
{"name":"Central Processing (E1M6) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Central Processing (E1M6) Yellow",
|
||||||
|
"Central Processing (E1M6) Red",
|
||||||
|
"Central Processing (E1M6) Blue",
|
||||||
|
"Central Processing (E1M6) Nukage"]},
|
||||||
|
{"name":"Central Processing (E1M6) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Central Processing (E1M6) Main"]},
|
||||||
|
{"name":"Central Processing (E1M6) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Central Processing (E1M6) Main"]},
|
||||||
|
{"name":"Central Processing (E1M6) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Central Processing (E1M6) Main"]},
|
||||||
|
{"name":"Central Processing (E1M6) Nukage",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Central Processing (E1M6) Yellow"]},
|
||||||
|
|
||||||
|
# Computer Station (E1M7)
|
||||||
|
{"name":"Computer Station (E1M7) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Computer Station (E1M7) Red",
|
||||||
|
"Computer Station (E1M7) Yellow"]},
|
||||||
|
{"name":"Computer Station (E1M7) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Computer Station (E1M7) Yellow"]},
|
||||||
|
{"name":"Computer Station (E1M7) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Computer Station (E1M7) Main"]},
|
||||||
|
{"name":"Computer Station (E1M7) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Computer Station (E1M7) Blue",
|
||||||
|
"Computer Station (E1M7) Courtyard",
|
||||||
|
"Computer Station (E1M7) Main"]},
|
||||||
|
{"name":"Computer Station (E1M7) Courtyard",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Computer Station (E1M7) Yellow"]},
|
||||||
|
|
||||||
|
# Phobos Anomaly (E1M8)
|
||||||
|
{"name":"Phobos Anomaly (E1M8) Main",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[]},
|
||||||
|
{"name":"Phobos Anomaly (E1M8) Start",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Phobos Anomaly (E1M8) Main"]},
|
||||||
|
|
||||||
|
# Military Base (E1M9)
|
||||||
|
{"name":"Military Base (E1M9) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Military Base (E1M9) Blue",
|
||||||
|
"Military Base (E1M9) Yellow",
|
||||||
|
"Military Base (E1M9) Red"]},
|
||||||
|
{"name":"Military Base (E1M9) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Military Base (E1M9) Main"]},
|
||||||
|
{"name":"Military Base (E1M9) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Military Base (E1M9) Main"]},
|
||||||
|
{"name":"Military Base (E1M9) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Military Base (E1M9) Main"]},
|
||||||
|
|
||||||
|
# Deimos Anomaly (E2M1)
|
||||||
|
{"name":"Deimos Anomaly (E2M1) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Deimos Anomaly (E2M1) Red",
|
||||||
|
"Deimos Anomaly (E2M1) Blue"]},
|
||||||
|
{"name":"Deimos Anomaly (E2M1) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Deimos Anomaly (E2M1) Main"]},
|
||||||
|
{"name":"Deimos Anomaly (E2M1) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Deimos Anomaly (E2M1) Main"]},
|
||||||
|
|
||||||
|
# Containment Area (E2M2)
|
||||||
|
{"name":"Containment Area (E2M2) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Containment Area (E2M2) Yellow",
|
||||||
|
"Containment Area (E2M2) Blue",
|
||||||
|
"Containment Area (E2M2) Red"]},
|
||||||
|
{"name":"Containment Area (E2M2) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Containment Area (E2M2) Main"]},
|
||||||
|
{"name":"Containment Area (E2M2) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Containment Area (E2M2) Main"]},
|
||||||
|
{"name":"Containment Area (E2M2) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Containment Area (E2M2) Main"]},
|
||||||
|
|
||||||
|
# Refinery (E2M3)
|
||||||
|
{"name":"Refinery (E2M3) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Refinery (E2M3) Blue"]},
|
||||||
|
{"name":"Refinery (E2M3) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Refinery (E2M3) Main"]},
|
||||||
|
|
||||||
|
# Deimos Lab (E2M4)
|
||||||
|
{"name":"Deimos Lab (E2M4) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Deimos Lab (E2M4) Blue"]},
|
||||||
|
{"name":"Deimos Lab (E2M4) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Deimos Lab (E2M4) Main",
|
||||||
|
"Deimos Lab (E2M4) Yellow"]},
|
||||||
|
{"name":"Deimos Lab (E2M4) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Deimos Lab (E2M4) Blue"]},
|
||||||
|
|
||||||
|
# Command Center (E2M5)
|
||||||
|
{"name":"Command Center (E2M5) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[]},
|
||||||
|
|
||||||
|
# Halls of the Damned (E2M6)
|
||||||
|
{"name":"Halls of the Damned (E2M6) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Halls of the Damned (E2M6) Blue Yellow Red",
|
||||||
|
"Halls of the Damned (E2M6) Yellow",
|
||||||
|
"Halls of the Damned (E2M6) One way Yellow"]},
|
||||||
|
{"name":"Halls of the Damned (E2M6) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Halls of the Damned (E2M6) Main"]},
|
||||||
|
{"name":"Halls of the Damned (E2M6) Blue Yellow Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Halls of the Damned (E2M6) Main"]},
|
||||||
|
{"name":"Halls of the Damned (E2M6) One way Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Halls of the Damned (E2M6) Main"]},
|
||||||
|
|
||||||
|
# Spawning Vats (E2M7)
|
||||||
|
{"name":"Spawning Vats (E2M7) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Spawning Vats (E2M7) Blue",
|
||||||
|
"Spawning Vats (E2M7) Entrance Secret",
|
||||||
|
"Spawning Vats (E2M7) Red",
|
||||||
|
"Spawning Vats (E2M7) Yellow"]},
|
||||||
|
{"name":"Spawning Vats (E2M7) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Spawning Vats (E2M7) Main"]},
|
||||||
|
{"name":"Spawning Vats (E2M7) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Spawning Vats (E2M7) Main"]},
|
||||||
|
{"name":"Spawning Vats (E2M7) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Spawning Vats (E2M7) Main"]},
|
||||||
|
{"name":"Spawning Vats (E2M7) Entrance Secret",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Spawning Vats (E2M7) Main"]},
|
||||||
|
|
||||||
|
# Tower of Babel (E2M8)
|
||||||
|
{"name":"Tower of Babel (E2M8) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[]},
|
||||||
|
|
||||||
|
# Fortress of Mystery (E2M9)
|
||||||
|
{"name":"Fortress of Mystery (E2M9) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Fortress of Mystery (E2M9) Blue",
|
||||||
|
"Fortress of Mystery (E2M9) Red",
|
||||||
|
"Fortress of Mystery (E2M9) Yellow"]},
|
||||||
|
{"name":"Fortress of Mystery (E2M9) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Fortress of Mystery (E2M9) Main"]},
|
||||||
|
{"name":"Fortress of Mystery (E2M9) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Fortress of Mystery (E2M9) Main"]},
|
||||||
|
{"name":"Fortress of Mystery (E2M9) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Fortress of Mystery (E2M9) Main"]},
|
||||||
|
|
||||||
|
# Hell Keep (E3M1)
|
||||||
|
{"name":"Hell Keep (E3M1) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Hell Keep (E3M1) Narrow"]},
|
||||||
|
{"name":"Hell Keep (E3M1) Narrow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Hell Keep (E3M1) Main"]},
|
||||||
|
|
||||||
|
# Slough of Despair (E3M2)
|
||||||
|
{"name":"Slough of Despair (E3M2) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Slough of Despair (E3M2) Blue"]},
|
||||||
|
{"name":"Slough of Despair (E3M2) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Slough of Despair (E3M2) Main"]},
|
||||||
|
|
||||||
|
# Pandemonium (E3M3)
|
||||||
|
{"name":"Pandemonium (E3M3) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Pandemonium (E3M3) Blue"]},
|
||||||
|
{"name":"Pandemonium (E3M3) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Pandemonium (E3M3) Main"]},
|
||||||
|
|
||||||
|
# House of Pain (E3M4)
|
||||||
|
{"name":"House of Pain (E3M4) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["House of Pain (E3M4) Blue"]},
|
||||||
|
{"name":"House of Pain (E3M4) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"House of Pain (E3M4) Main",
|
||||||
|
"House of Pain (E3M4) Yellow",
|
||||||
|
"House of Pain (E3M4) Red"]},
|
||||||
|
{"name":"House of Pain (E3M4) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["House of Pain (E3M4) Blue"]},
|
||||||
|
{"name":"House of Pain (E3M4) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["House of Pain (E3M4) Blue"]},
|
||||||
|
|
||||||
|
# Unholy Cathedral (E3M5)
|
||||||
|
{"name":"Unholy Cathedral (E3M5) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
"Unholy Cathedral (E3M5) Yellow",
|
"Unholy Cathedral (E3M5) Yellow",
|
||||||
"Warrens (E3M9) Main",
|
"Unholy Cathedral (E3M5) Blue"]},
|
||||||
|
{"name":"Unholy Cathedral (E3M5) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Unholy Cathedral (E3M5) Main"]},
|
||||||
|
{"name":"Unholy Cathedral (E3M5) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Unholy Cathedral (E3M5) Main"]},
|
||||||
|
|
||||||
|
# Mt. Erebus (E3M6)
|
||||||
|
{"name":"Mt. Erebus (E3M6) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":["Mt. Erebus (E3M6) Blue"]},
|
||||||
|
{"name":"Mt. Erebus (E3M6) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Mt. Erebus (E3M6) Main"]},
|
||||||
|
|
||||||
|
# Limbo (E3M7)
|
||||||
|
{"name":"Limbo (E3M7) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
|
"Limbo (E3M7) Red",
|
||||||
|
"Limbo (E3M7) Blue"]},
|
||||||
|
{"name":"Limbo (E3M7) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Limbo (E3M7) Main"]},
|
||||||
|
{"name":"Limbo (E3M7) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":[
|
||||||
|
"Limbo (E3M7) Main",
|
||||||
|
"Limbo (E3M7) Yellow"]},
|
||||||
|
{"name":"Limbo (E3M7) Yellow",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Limbo (E3M7) Red"]},
|
||||||
|
|
||||||
|
# Dis (E3M8)
|
||||||
|
{"name":"Dis (E3M8) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[]},
|
||||||
|
|
||||||
|
# Warrens (E3M9)
|
||||||
|
{"name":"Warrens (E3M9) Main",
|
||||||
|
"connects_to_hub":True,
|
||||||
|
"connections":[
|
||||||
"Warrens (E3M9) Red",
|
"Warrens (E3M9) Red",
|
||||||
|
"Warrens (E3M9) Blue",
|
||||||
|
"Warrens (E3M9) Blue trigger"]},
|
||||||
|
{"name":"Warrens (E3M9) Red",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Warrens (E3M9) Main"]},
|
||||||
|
{"name":"Warrens (E3M9) Blue",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Warrens (E3M9) Main"]},
|
||||||
|
{"name":"Warrens (E3M9) Blue trigger",
|
||||||
|
"connects_to_hub":False,
|
||||||
|
"connections":["Warrens (E3M9) Main"]},
|
||||||
]
|
]
|
||||||
|
|
|
@ -11,130 +11,374 @@ def set_rules(doom_1993_world: "DOOM1993World"):
|
||||||
player = doom_1993_world.player
|
player = doom_1993_world.player
|
||||||
world = doom_1993_world.multiworld
|
world = doom_1993_world.multiworld
|
||||||
|
|
||||||
# Hangar (E1M1) - E1M1
|
# Hangar (E1M1)
|
||||||
set_rule(world.get_entrance("Mars -> Hangar (E1M1) Main", player), lambda state: state.has("Hangar (E1M1)", player, 1))
|
set_rule(world.get_entrance("Hub -> Hangar (E1M1) Main", player), lambda state:
|
||||||
|
state.has("Hangar (E1M1)", player, 1))
|
||||||
|
|
||||||
# Nuclear Plant (E1M2) - E1M2
|
# Nuclear Plant (E1M2)
|
||||||
set_rule(world.get_entrance("Mars -> Nuclear Plant (E1M2) Main", player), lambda state: state.has("Nuclear Plant (E1M2)", player, 1) and state.has("Shotgun", player, 1))
|
set_rule(world.get_entrance("Hub -> Nuclear Plant (E1M2) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Nuclear Plant (E1M2) Red", player), lambda state: state.has("Nuclear Plant (E1M2)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Nuclear Plant (E1M2) - Red keycard", player, 1)))
|
(state.has("Nuclear Plant (E1M2)", player, 1)) and
|
||||||
|
(state.has("Shotgun", player, 1) or
|
||||||
|
state.has("Chaingun", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Nuclear Plant (E1M2) Main -> Nuclear Plant (E1M2) Red", player), lambda state:
|
||||||
|
state.has("Nuclear Plant (E1M2) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Nuclear Plant (E1M2) Red -> Nuclear Plant (E1M2) Main", player), lambda state:
|
||||||
|
state.has("Nuclear Plant (E1M2) - Red keycard", player, 1))
|
||||||
|
|
||||||
# Toxin Refinery (E1M3) - E1M3
|
# Toxin Refinery (E1M3)
|
||||||
set_rule(world.get_entrance("Mars -> Toxin Refinery (E1M3) Blue", player), lambda state: state.has("Toxin Refinery (E1M3)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Toxin Refinery (E1M3) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Toxin Refinery (E1M3) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Toxin Refinery (E1M3) Main", player), lambda state: state.has("Toxin Refinery (E1M3)", player, 1) and state.has("Shotgun", player, 1))
|
(state.has("Toxin Refinery (E1M3)", player, 1)) and
|
||||||
set_rule(world.get_entrance("Mars -> Toxin Refinery (E1M3) Yellow", player), lambda state: state.has("Toxin Refinery (E1M3)", player, 1) and state.has("Shotgun", player, 1)and state.has("Toxin Refinery (E1M3) - Blue keycard", player, 1)and state.has("Toxin Refinery (E1M3) - Yellow keycard", player, 1))
|
(state.has("Shotgun", player, 1) or
|
||||||
|
state.has("Chaingun", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Toxin Refinery (E1M3) Main -> Toxin Refinery (E1M3) Blue", player), lambda state:
|
||||||
|
state.has("Toxin Refinery (E1M3) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Toxin Refinery (E1M3) Blue -> Toxin Refinery (E1M3) Yellow", player), lambda state:
|
||||||
|
state.has("Toxin Refinery (E1M3) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Toxin Refinery (E1M3) Blue -> Toxin Refinery (E1M3) Main", player), lambda state:
|
||||||
|
state.has("Toxin Refinery (E1M3) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Toxin Refinery (E1M3) Yellow -> Toxin Refinery (E1M3) Blue", player), lambda state:
|
||||||
|
state.has("Toxin Refinery (E1M3) - Yellow keycard", player, 1))
|
||||||
|
|
||||||
# Command Control (E1M4) - E1M4
|
# Command Control (E1M4)
|
||||||
set_rule(world.get_entrance("Mars -> Command Control (E1M4) Blue Yellow", player), lambda state: state.has("Command Control (E1M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Command Control (E1M4) - Blue keycard", player, 1) or state.has("Command Control (E1M4) - Yellow keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Command Control (E1M4) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Command Control (E1M4) Main", player), lambda state: state.has("Command Control (E1M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Command Control (E1M4)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Command Control (E1M4) Main -> Command Control (E1M4) Blue", player), lambda state:
|
||||||
|
state.has("Command Control (E1M4) - Blue keycard", player, 1) or
|
||||||
|
state.has("Command Control (E1M4) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Command Control (E1M4) Main -> Command Control (E1M4) Yellow", player), lambda state:
|
||||||
|
state.has("Command Control (E1M4) - Blue keycard", player, 1) or
|
||||||
|
state.has("Command Control (E1M4) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Command Control (E1M4) Blue -> Command Control (E1M4) Main", player), lambda state:
|
||||||
|
state.has("Command Control (E1M4) - Yellow keycard", player, 1) or
|
||||||
|
state.has("Command Control (E1M4) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Command Control (E1M4) Yellow -> Command Control (E1M4) Main", player), lambda state:
|
||||||
|
state.has("Command Control (E1M4) - Yellow keycard", player, 1) or
|
||||||
|
state.has("Command Control (E1M4) - Blue keycard", player, 1))
|
||||||
|
|
||||||
# Phobos Lab (E1M5) - E1M5
|
# Phobos Lab (E1M5)
|
||||||
set_rule(world.get_entrance("Mars -> Phobos Lab (E1M5) Blue Yellow", player), lambda state: state.has("Phobos Lab (E1M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Phobos Lab (E1M5) - Yellow keycard", player, 1) or state.has("Phobos Lab (E1M5) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Phobos Lab (E1M5) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Phobos Lab (E1M5) Main", player), lambda state: state.has("Phobos Lab (E1M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Phobos Lab (E1M5)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Phobos Lab (E1M5) Yellow", player), lambda state: state.has("Phobos Lab (E1M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Phobos Lab (E1M5) - Yellow keycard", player, 1)))
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Phobos Lab (E1M5) Main -> Phobos Lab (E1M5) Yellow", player), lambda state:
|
||||||
|
state.has("Phobos Lab (E1M5) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Phobos Lab (E1M5) Yellow -> Phobos Lab (E1M5) Blue", player), lambda state:
|
||||||
|
state.has("Phobos Lab (E1M5) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Phobos Lab (E1M5) Blue -> Phobos Lab (E1M5) Green", player), lambda state:
|
||||||
|
state.has("Phobos Lab (E1M5) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Phobos Lab (E1M5) Green -> Phobos Lab (E1M5) Blue", player), lambda state:
|
||||||
|
state.has("Phobos Lab (E1M5) - Blue keycard", player, 1))
|
||||||
|
|
||||||
# Central Processing (E1M6) - E1M6
|
# Central Processing (E1M6)
|
||||||
set_rule(world.get_entrance("Mars -> Central Processing (E1M6) Blue", player), lambda state: state.has("Central Processing (E1M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Central Processing (E1M6) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Central Processing (E1M6) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Central Processing (E1M6) Blue Yellow", player), lambda state: state.has("Central Processing (E1M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Central Processing (E1M6) - Yellow keycard", player, 1) or state.has("Central Processing (E1M6) - Blue keycard", player, 1)))
|
state.has("Central Processing (E1M6)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Central Processing (E1M6) Main", player), lambda state: state.has("Central Processing (E1M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Central Processing (E1M6) Red", player), lambda state: state.has("Central Processing (E1M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Central Processing (E1M6) - Red keycard", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Rocket launcher", player, 1))
|
||||||
|
set_rule(world.get_entrance("Central Processing (E1M6) Main -> Central Processing (E1M6) Yellow", player), lambda state:
|
||||||
|
state.has("Central Processing (E1M6) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Central Processing (E1M6) Main -> Central Processing (E1M6) Red", player), lambda state:
|
||||||
|
state.has("Central Processing (E1M6) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Central Processing (E1M6) Main -> Central Processing (E1M6) Blue", player), lambda state:
|
||||||
|
state.has("Central Processing (E1M6) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Central Processing (E1M6) Main -> Central Processing (E1M6) Nukage", player), lambda state:
|
||||||
|
state.has("Central Processing (E1M6) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Central Processing (E1M6) Yellow -> Central Processing (E1M6) Main", player), lambda state:
|
||||||
|
state.has("Central Processing (E1M6) - Yellow keycard", player, 1))
|
||||||
|
|
||||||
# Computer Station (E1M7) - E1M7
|
# Computer Station (E1M7)
|
||||||
set_rule(world.get_entrance("Mars -> Computer Station (E1M7) Blue", player), lambda state: state.has("Computer Station (E1M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("Computer Station (E1M7) - Blue keycard", player, 1)and state.has("Computer Station (E1M7) - Yellow keycard", player, 1))
|
set_rule(world.get_entrance("Hub -> Computer Station (E1M7) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Computer Station (E1M7) Main", player), lambda state: state.has("Computer Station (E1M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Computer Station (E1M7)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Computer Station (E1M7) Red", player), lambda state: state.has("Computer Station (E1M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Computer Station (E1M7) - Red keycard", player, 1)))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Computer Station (E1M7) Yellow", player), lambda state: state.has("Computer Station (E1M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Computer Station (E1M7) - Yellow keycard", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Computer Station (E1M7) Yellow Red", player), lambda state: state.has("Computer Station (E1M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("Computer Station (E1M7) - Yellow keycard", player, 1)and state.has("Computer Station (E1M7) - Red keycard", player, 1))
|
state.has("Rocket launcher", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Main -> Computer Station (E1M7) Red", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Main -> Computer Station (E1M7) Yellow", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Blue -> Computer Station (E1M7) Yellow", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Red -> Computer Station (E1M7) Main", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Yellow -> Computer Station (E1M7) Blue", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Yellow -> Computer Station (E1M7) Courtyard", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Yellow keycard", player, 1) and
|
||||||
|
state.has("Computer Station (E1M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Computer Station (E1M7) Courtyard -> Computer Station (E1M7) Yellow", player), lambda state:
|
||||||
|
state.has("Computer Station (E1M7) - Yellow keycard", player, 1))
|
||||||
|
|
||||||
# Phobos Anomaly (E1M8) - E1M8
|
# Phobos Anomaly (E1M8)
|
||||||
set_rule(world.get_entrance("Mars -> Phobos Anomaly (E1M8) Main", player), lambda state: state.has("Phobos Anomaly (E1M8)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Rocket launcher", player, 1) or state.has("Plasma gun", player, 1) or state.has("BFG9000", player, 1)))
|
set_rule(world.get_entrance("Hub -> Phobos Anomaly (E1M8) Start", player), lambda state:
|
||||||
|
(state.has("Phobos Anomaly (E1M8)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
|
||||||
# Military Base (E1M9) - E1M9
|
# Military Base (E1M9)
|
||||||
set_rule(world.get_entrance("Mars -> Military Base (E1M9) Blue", player), lambda state: state.has("Military Base (E1M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Military Base (E1M9) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Military Base (E1M9) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Military Base (E1M9) Main", player), lambda state: state.has("Military Base (E1M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Military Base (E1M9)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Military Base (E1M9) Red", player), lambda state: state.has("Military Base (E1M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Military Base (E1M9) - Red keycard", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Military Base (E1M9) Yellow", player), lambda state: state.has("Military Base (E1M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Military Base (E1M9) - Yellow keycard", player, 1)))
|
state.has("Shotgun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Military Base (E1M9) Main -> Military Base (E1M9) Blue", player), lambda state:
|
||||||
|
state.has("Military Base (E1M9) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Military Base (E1M9) Main -> Military Base (E1M9) Yellow", player), lambda state:
|
||||||
|
state.has("Military Base (E1M9) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Military Base (E1M9) Main -> Military Base (E1M9) Red", player), lambda state:
|
||||||
|
state.has("Military Base (E1M9) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Military Base (E1M9) Blue -> Military Base (E1M9) Main", player), lambda state:
|
||||||
|
state.has("Military Base (E1M9) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Military Base (E1M9) Yellow -> Military Base (E1M9) Main", player), lambda state:
|
||||||
|
state.has("Military Base (E1M9) - Yellow keycard", player, 1))
|
||||||
|
|
||||||
# Deimos Anomaly (E2M1) - E2M1
|
# Deimos Anomaly (E2M1)
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Anomaly (E2M1) Blue", player), lambda state: state.has("Deimos Anomaly (E2M1)", player, 1) and (state.has("Deimos Anomaly (E2M1) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Deimos Anomaly (E2M1) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Anomaly (E2M1) Main", player), lambda state: state.has("Deimos Anomaly (E2M1)", player, 1))
|
state.has("Deimos Anomaly (E2M1)", player, 1))
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Anomaly (E2M1) Red", player), lambda state: state.has("Deimos Anomaly (E2M1)", player, 1) and (state.has("Deimos Anomaly (E2M1) - Red keycard", player, 1)))
|
set_rule(world.get_entrance("Deimos Anomaly (E2M1) Main -> Deimos Anomaly (E2M1) Red", player), lambda state:
|
||||||
|
state.has("Deimos Anomaly (E2M1) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Deimos Anomaly (E2M1) Main -> Deimos Anomaly (E2M1) Blue", player), lambda state:
|
||||||
|
state.has("Deimos Anomaly (E2M1) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Deimos Anomaly (E2M1) Blue -> Deimos Anomaly (E2M1) Main", player), lambda state:
|
||||||
|
state.has("Deimos Anomaly (E2M1) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Deimos Anomaly (E2M1) Red -> Deimos Anomaly (E2M1) Main", player), lambda state:
|
||||||
|
state.has("Deimos Anomaly (E2M1) - Red keycard", player, 1))
|
||||||
|
|
||||||
# Containment Area (E2M2) - E2M2
|
# Containment Area (E2M2)
|
||||||
set_rule(world.get_entrance("Mars -> Containment Area (E2M2) Blue", player), lambda state: state.has("Containment Area (E2M2)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Containment Area (E2M2) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Containment Area (E2M2) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Containment Area (E2M2) Main", player), lambda state: state.has("Containment Area (E2M2)", player, 1) and state.has("Shotgun", player, 1))
|
(state.has("Containment Area (E2M2)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Containment Area (E2M2) Red", player), lambda state: state.has("Containment Area (E2M2)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Containment Area (E2M2) - Red keycard", player, 1)))
|
state.has("Shotgun", player, 1)) and
|
||||||
set_rule(world.get_entrance("Mars -> Containment Area (E2M2) Yellow", player), lambda state: state.has("Containment Area (E2M2)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Containment Area (E2M2) - Yellow keycard", player, 1)))
|
(state.has("Chaingun", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Containment Area (E2M2) Main -> Containment Area (E2M2) Yellow", player), lambda state:
|
||||||
|
state.has("Containment Area (E2M2) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Containment Area (E2M2) Main -> Containment Area (E2M2) Blue", player), lambda state:
|
||||||
|
state.has("Containment Area (E2M2) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Containment Area (E2M2) Main -> Containment Area (E2M2) Red", player), lambda state:
|
||||||
|
state.has("Containment Area (E2M2) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Containment Area (E2M2) Blue -> Containment Area (E2M2) Main", player), lambda state:
|
||||||
|
state.has("Containment Area (E2M2) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Containment Area (E2M2) Red -> Containment Area (E2M2) Main", player), lambda state:
|
||||||
|
state.has("Containment Area (E2M2) - Red keycard", player, 1))
|
||||||
|
|
||||||
# Refinery (E2M3) - E2M3
|
# Refinery (E2M3)
|
||||||
set_rule(world.get_entrance("Mars -> Refinery (E2M3) Blue", player), lambda state: state.has("Refinery (E2M3)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Refinery (E2M3) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Refinery (E2M3) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Refinery (E2M3) Main", player), lambda state: state.has("Refinery (E2M3)", player, 1) and state.has("Shotgun", player, 1))
|
(state.has("Refinery (E2M3)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1)) and
|
||||||
|
(state.has("Chaingun", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Refinery (E2M3) Main -> Refinery (E2M3) Blue", player), lambda state:
|
||||||
|
state.has("Refinery (E2M3) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Refinery (E2M3) Blue -> Refinery (E2M3) Main", player), lambda state:
|
||||||
|
state.has("Refinery (E2M3) - Blue keycard", player, 1))
|
||||||
|
|
||||||
# Deimos Lab (E2M4) - E2M4
|
# Deimos Lab (E2M4)
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Lab (E2M4) Blue", player), lambda state: state.has("Deimos Lab (E2M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Deimos Lab (E2M4) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Deimos Lab (E2M4) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Lab (E2M4) Blue Yellow", player), lambda state: state.has("Deimos Lab (E2M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("Deimos Lab (E2M4) - Blue keycard", player, 1)and state.has("Deimos Lab (E2M4) - Yellow keycard", player, 1))
|
state.has("Deimos Lab (E2M4)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Deimos Lab (E2M4) Main", player), lambda state: state.has("Deimos Lab (E2M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Plasma gun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Deimos Lab (E2M4) Main -> Deimos Lab (E2M4) Blue", player), lambda state:
|
||||||
|
state.has("Deimos Lab (E2M4) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Deimos Lab (E2M4) Blue -> Deimos Lab (E2M4) Yellow", player), lambda state:
|
||||||
|
state.has("Deimos Lab (E2M4) - Yellow keycard", player, 1))
|
||||||
|
|
||||||
# Command Center (E2M5) - E2M5
|
# Command Center (E2M5)
|
||||||
set_rule(world.get_entrance("Mars -> Command Center (E2M5) Main", player), lambda state: state.has("Command Center (E2M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
set_rule(world.get_entrance("Hub -> Command Center (E2M5) Main", player), lambda state:
|
||||||
|
state.has("Command Center (E2M5)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Plasma gun", player, 1))
|
||||||
|
|
||||||
# Halls of the Damned (E2M6) - E2M6
|
# Halls of the Damned (E2M6)
|
||||||
set_rule(world.get_entrance("Mars -> Halls of the Damned (E2M6) Blue Yellow Red", player), lambda state: state.has("Halls of the Damned (E2M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("Halls of the Damned (E2M6) - Red skull key", player, 1)and state.has("Halls of the Damned (E2M6) - Blue skull key", player, 1)and state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1))
|
set_rule(world.get_entrance("Hub -> Halls of the Damned (E2M6) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Halls of the Damned (E2M6) Main", player), lambda state: state.has("Halls of the Damned (E2M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Halls of the Damned (E2M6)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Halls of the Damned (E2M6) Yellow", player), lambda state: state.has("Halls of the Damned (E2M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Plasma gun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Halls of the Damned (E2M6) Main -> Halls of the Damned (E2M6) Blue Yellow Red", player), lambda state:
|
||||||
|
state.has("Halls of the Damned (E2M6) - Blue skull key", player, 1) and
|
||||||
|
state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1) and
|
||||||
|
state.has("Halls of the Damned (E2M6) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Halls of the Damned (E2M6) Main -> Halls of the Damned (E2M6) Yellow", player), lambda state:
|
||||||
|
state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Halls of the Damned (E2M6) Blue Yellow Red -> Halls of the Damned (E2M6) Main", player), lambda state:
|
||||||
|
state.has("Halls of the Damned (E2M6) - Blue skull key", player, 1) and
|
||||||
|
state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1) and
|
||||||
|
state.has("Halls of the Damned (E2M6) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Halls of the Damned (E2M6) One way Yellow -> Halls of the Damned (E2M6) Main", player), lambda state:
|
||||||
|
state.has("Halls of the Damned (E2M6) - Yellow skull key", player, 1))
|
||||||
|
|
||||||
# Spawning Vats (E2M7) - E2M7
|
# Spawning Vats (E2M7)
|
||||||
set_rule(world.get_entrance("Mars -> Spawning Vats (E2M7) Blue", player), lambda state: state.has("Spawning Vats (E2M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Spawning Vats (E2M7) - Blue keycard", player, 1)))
|
set_rule(world.get_entrance("Hub -> Spawning Vats (E2M7) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Spawning Vats (E2M7) Blue Red", player), lambda state: state.has("Spawning Vats (E2M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("Spawning Vats (E2M7) - Blue keycard", player, 1)and state.has("Spawning Vats (E2M7) - Red keycard", player, 1))
|
state.has("Spawning Vats (E2M7)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Spawning Vats (E2M7) Main", player), lambda state: state.has("Spawning Vats (E2M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Spawning Vats (E2M7) Red", player), lambda state: state.has("Spawning Vats (E2M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Spawning Vats (E2M7) - Red keycard", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Spawning Vats (E2M7) Yellow", player), lambda state: state.has("Spawning Vats (E2M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Spawning Vats (E2M7) - Yellow keycard", player, 1)))
|
state.has("Plasma gun", player, 1) and
|
||||||
|
state.has("Rocket launcher", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Main -> Spawning Vats (E2M7) Blue", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Blue keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Main -> Spawning Vats (E2M7) Entrance Secret", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Blue keycard", player, 1) and
|
||||||
|
state.has("Spawning Vats (E2M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Main -> Spawning Vats (E2M7) Red", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Main -> Spawning Vats (E2M7) Yellow", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Yellow -> Spawning Vats (E2M7) Main", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Yellow keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Red -> Spawning Vats (E2M7) Main", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Red keycard", player, 1))
|
||||||
|
set_rule(world.get_entrance("Spawning Vats (E2M7) Entrance Secret -> Spawning Vats (E2M7) Main", player), lambda state:
|
||||||
|
state.has("Spawning Vats (E2M7) - Blue keycard", player, 1) and
|
||||||
|
state.has("Spawning Vats (E2M7) - Red keycard", player, 1))
|
||||||
|
|
||||||
# Tower of Babel (E2M8) - E2M8
|
# Tower of Babel (E2M8)
|
||||||
set_rule(world.get_entrance("Mars -> Tower of Babel (E2M8) Main", player), lambda state: state.has("Tower of Babel (E2M8)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Rocket launcher", player, 1) or state.has("Plasma gun", player, 1) or state.has("BFG9000", player, 1)))
|
set_rule(world.get_entrance("Hub -> Tower of Babel (E2M8) Main", player), lambda state:
|
||||||
|
state.has("Tower of Babel (E2M8)", player, 1))
|
||||||
|
|
||||||
# Fortress of Mystery (E2M9) - E2M9
|
# Fortress of Mystery (E2M9)
|
||||||
set_rule(world.get_entrance("Mars -> Fortress of Mystery (E2M9) Blue", player), lambda state: state.has("Fortress of Mystery (E2M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Fortress of Mystery (E2M9) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Fortress of Mystery (E2M9) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Fortress of Mystery (E2M9) Main", player), lambda state: state.has("Fortress of Mystery (E2M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
(state.has("Fortress of Mystery (E2M9)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Fortress of Mystery (E2M9) Red", player), lambda state: state.has("Fortress of Mystery (E2M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Fortress of Mystery (E2M9) - Red skull key", player, 1)))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Fortress of Mystery (E2M9) Yellow", player), lambda state: state.has("Fortress of Mystery (E2M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Fortress of Mystery (E2M9) - Yellow skull key", player, 1)))
|
state.has("Chaingun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Main -> Fortress of Mystery (E2M9) Blue", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Main -> Fortress of Mystery (E2M9) Red", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Main -> Fortress of Mystery (E2M9) Yellow", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Yellow skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Blue -> Fortress of Mystery (E2M9) Main", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Red -> Fortress of Mystery (E2M9) Main", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Fortress of Mystery (E2M9) Yellow -> Fortress of Mystery (E2M9) Main", player), lambda state:
|
||||||
|
state.has("Fortress of Mystery (E2M9) - Yellow skull key", player, 1))
|
||||||
|
|
||||||
# Hell Keep (E3M1) - E3M1
|
# Hell Keep (E3M1)
|
||||||
set_rule(world.get_entrance("Mars -> Hell Keep (E3M1) Main", player), lambda state: state.has("Hell Keep (E3M1)", player, 1))
|
set_rule(world.get_entrance("Hub -> Hell Keep (E3M1) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Hell Keep (E3M1) Narrow", player), lambda state: state.has("Hell Keep (E3M1)", player, 1) and (state.has("Shotgun", player, 1) or state.has("Chaingun", player, 1)))
|
state.has("Hell Keep (E3M1)", player, 1))
|
||||||
|
set_rule(world.get_entrance("Hell Keep (E3M1) Main -> Hell Keep (E3M1) Narrow", player), lambda state:
|
||||||
|
state.has("Chaingun", player, 1) or
|
||||||
|
state.has("Shotgun", player, 1))
|
||||||
|
|
||||||
# Slough of Despair (E3M2) - E3M2
|
# Slough of Despair (E3M2)
|
||||||
set_rule(world.get_entrance("Mars -> Slough of Despair (E3M2) Blue", player), lambda state: state.has("Slough of Despair (E3M2)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Slough of Despair (E3M2) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Slough of Despair (E3M2) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Slough of Despair (E3M2) Main", player), lambda state: state.has("Slough of Despair (E3M2)", player, 1) and state.has("Shotgun", player, 1))
|
(state.has("Slough of Despair (E3M2)", player, 1)) and
|
||||||
|
(state.has("Shotgun", player, 1) or
|
||||||
|
state.has("Chaingun", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Slough of Despair (E3M2) Main -> Slough of Despair (E3M2) Blue", player), lambda state:
|
||||||
|
state.has("Slough of Despair (E3M2) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Slough of Despair (E3M2) Blue -> Slough of Despair (E3M2) Main", player), lambda state:
|
||||||
|
state.has("Slough of Despair (E3M2) - Blue skull key", player, 1))
|
||||||
|
|
||||||
# Pandemonium (E3M3) - E3M3
|
# Pandemonium (E3M3)
|
||||||
set_rule(world.get_entrance("Mars -> Pandemonium (E3M3) Blue", player), lambda state: state.has("Pandemonium (E3M3)", player, 1) and state.has("Shotgun", player, 1) and (state.has("Pandemonium (E3M3) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Pandemonium (E3M3) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Pandemonium (E3M3) Main", player), lambda state: state.has("Pandemonium (E3M3)", player, 1) and state.has("Shotgun", player, 1))
|
(state.has("Pandemonium (E3M3)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Pandemonium (E3M3) Main -> Pandemonium (E3M3) Blue", player), lambda state:
|
||||||
|
state.has("Pandemonium (E3M3) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Pandemonium (E3M3) Blue -> Pandemonium (E3M3) Main", player), lambda state:
|
||||||
|
state.has("Pandemonium (E3M3) - Blue skull key", player, 1))
|
||||||
|
|
||||||
# House of Pain (E3M4) - E3M4
|
# House of Pain (E3M4)
|
||||||
set_rule(world.get_entrance("Mars -> House of Pain (E3M4) Blue", player), lambda state: state.has("House of Pain (E3M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("House of Pain (E3M4) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> House of Pain (E3M4) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> House of Pain (E3M4) Blue Red", player), lambda state: state.has("House of Pain (E3M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("House of Pain (E3M4) - Red skull key", player, 1)and state.has("House of Pain (E3M4) - Blue skull key", player, 1))
|
(state.has("House of Pain (E3M4)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> House of Pain (E3M4) Blue Yellow", player), lambda state: state.has("House of Pain (E3M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1)and state.has("House of Pain (E3M4) - Yellow skull key", player, 1)and state.has("House of Pain (E3M4) - Blue skull key", player, 1))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> House of Pain (E3M4) Main", player), lambda state: state.has("House of Pain (E3M4)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Chaingun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Main -> House of Pain (E3M4) Blue", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Blue -> House of Pain (E3M4) Main", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Blue -> House of Pain (E3M4) Yellow", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Yellow skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Blue -> House of Pain (E3M4) Red", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Red -> House of Pain (E3M4) Blue", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("House of Pain (E3M4) Yellow -> House of Pain (E3M4) Blue", player), lambda state:
|
||||||
|
state.has("House of Pain (E3M4) - Yellow skull key", player, 1))
|
||||||
|
|
||||||
# Unholy Cathedral (E3M5) - E3M5
|
# Unholy Cathedral (E3M5)
|
||||||
set_rule(world.get_entrance("Mars -> Unholy Cathedral (E3M5) Blue", player), lambda state: state.has("Unholy Cathedral (E3M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Unholy Cathedral (E3M5) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Unholy Cathedral (E3M5) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Unholy Cathedral (E3M5) Main", player), lambda state: state.has("Unholy Cathedral (E3M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
(state.has("Unholy Cathedral (E3M5)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Unholy Cathedral (E3M5) Yellow", player), lambda state: state.has("Unholy Cathedral (E3M5)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Unholy Cathedral (E3M5) - Yellow skull key", player, 1)))
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Unholy Cathedral (E3M5) Main -> Unholy Cathedral (E3M5) Yellow", player), lambda state:
|
||||||
|
state.has("Unholy Cathedral (E3M5) - Yellow skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Unholy Cathedral (E3M5) Main -> Unholy Cathedral (E3M5) Blue", player), lambda state:
|
||||||
|
state.has("Unholy Cathedral (E3M5) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Unholy Cathedral (E3M5) Blue -> Unholy Cathedral (E3M5) Main", player), lambda state:
|
||||||
|
state.has("Unholy Cathedral (E3M5) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Unholy Cathedral (E3M5) Yellow -> Unholy Cathedral (E3M5) Main", player), lambda state:
|
||||||
|
state.has("Unholy Cathedral (E3M5) - Yellow skull key", player, 1))
|
||||||
|
|
||||||
# Mt. Erebus (E3M6) - E3M6
|
# Mt. Erebus (E3M6)
|
||||||
set_rule(world.get_entrance("Mars -> Mt. Erebus (E3M6) Blue", player), lambda state: state.has("Mt. Erebus (E3M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Mt. Erebus (E3M6) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Mt. Erebus (E3M6) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Mt. Erebus (E3M6) Main", player), lambda state: state.has("Mt. Erebus (E3M6)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
state.has("Mt. Erebus (E3M6)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1))
|
||||||
|
set_rule(world.get_entrance("Mt. Erebus (E3M6) Main -> Mt. Erebus (E3M6) Blue", player), lambda state:
|
||||||
|
state.has("Mt. Erebus (E3M6) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Mt. Erebus (E3M6) Blue -> Mt. Erebus (E3M6) Main", player), lambda state:
|
||||||
|
state.has("Mt. Erebus (E3M6) - Blue skull key", player, 1))
|
||||||
|
|
||||||
# Limbo (E3M7) - E3M7
|
# Limbo (E3M7)
|
||||||
set_rule(world.get_entrance("Mars -> Limbo (E3M7) Blue", player), lambda state: state.has("Limbo (E3M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Limbo (E3M7) - Blue skull key", player, 1)))
|
set_rule(world.get_entrance("Hub -> Limbo (E3M7) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Limbo (E3M7) Main", player), lambda state: state.has("Limbo (E3M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1))
|
(state.has("Limbo (E3M7)", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Limbo (E3M7) Red", player), lambda state: state.has("Limbo (E3M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Limbo (E3M7) - Red skull key", player, 1)))
|
state.has("Shotgun", player, 1) and
|
||||||
set_rule(world.get_entrance("Mars -> Limbo (E3M7) Yellow Red", player), lambda state: state.has("Limbo (E3M7)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Limbo (E3M7) - Yellow skull key", player, 1) or state.has("Limbo (E3M7) - Red skull key", player, 1)))
|
state.has("Chaingun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Limbo (E3M7) Main -> Limbo (E3M7) Red", player), lambda state:
|
||||||
|
state.has("Limbo (E3M7) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Limbo (E3M7) Main -> Limbo (E3M7) Blue", player), lambda state:
|
||||||
|
state.has("Limbo (E3M7) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Limbo (E3M7) Red -> Limbo (E3M7) Yellow", player), lambda state:
|
||||||
|
state.has("Limbo (E3M7) - Yellow skull key", player, 1))
|
||||||
|
|
||||||
# Dis (E3M8) - E3M8
|
# Dis (E3M8)
|
||||||
set_rule(world.get_entrance("Mars -> Dis (E3M8) Main", player), lambda state: state.has("Dis (E3M8)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Rocket launcher", player, 1) or state.has("Plasma gun", player, 1) or state.has("BFG9000", player, 1)))
|
set_rule(world.get_entrance("Hub -> Dis (E3M8) Main", player), lambda state:
|
||||||
|
(state.has("Dis (E3M8)", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1)) and
|
||||||
|
(state.has("Plasma gun", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1) or
|
||||||
|
state.has("Rocket launcher", player, 1)))
|
||||||
|
|
||||||
# Warrens (E3M9) - E3M9
|
# Warrens (E3M9)
|
||||||
set_rule(world.get_entrance("Mars -> Warrens (E3M9) Main", player), lambda state: state.has("Warrens (E3M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Rocket launcher", player, 1) or state.has("Plasma gun", player, 1) or state.has("BFG9000", player, 1)))
|
set_rule(world.get_entrance("Hub -> Warrens (E3M9) Main", player), lambda state:
|
||||||
set_rule(world.get_entrance("Mars -> Warrens (E3M9) Red", player), lambda state: state.has("Warrens (E3M9)", player, 1) and state.has("Shotgun", player, 1) and state.has("Chaingun", player, 1) and (state.has("Warrens (E3M9) - Red skull key", player, 1)))
|
(state.has("Warrens (E3M9)", player, 1) and
|
||||||
|
state.has("Shotgun", player, 1) and
|
||||||
|
state.has("Chaingun", player, 1) and
|
||||||
|
state.has("Plasma gun", player, 1)) and
|
||||||
|
(state.has("Rocket launcher", player, 1) or
|
||||||
|
state.has("BFG9000", player, 1)))
|
||||||
|
set_rule(world.get_entrance("Warrens (E3M9) Main -> Warrens (E3M9) Red", player), lambda state:
|
||||||
|
state.has("Warrens (E3M9) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Warrens (E3M9) Main -> Warrens (E3M9) Blue trigger", player), lambda state:
|
||||||
|
state.has("Warrens (E3M9) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Warrens (E3M9) Red -> Warrens (E3M9) Main", player), lambda state:
|
||||||
|
state.has("Warrens (E3M9) - Red skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Warrens (E3M9) Blue -> Warrens (E3M9) Main", player), lambda state:
|
||||||
|
state.has("Warrens (E3M9) - Blue skull key", player, 1))
|
||||||
|
set_rule(world.get_entrance("Warrens (E3M9) Blue trigger -> Warrens (E3M9) Main", player), lambda state:
|
||||||
|
state.has("Warrens (E3M9) - Blue skull key", player, 1))
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,15 @@ import functools
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
from BaseClasses import CollectionState, Item, ItemClassification, Location, MultiWorld, Region, Tutorial
|
from BaseClasses import Entrance, CollectionState, Item, ItemClassification, Location, MultiWorld, Region, Tutorial
|
||||||
from worlds.AutoWorld import WebWorld, World
|
from worlds.AutoWorld import WebWorld, World
|
||||||
from . import Events, Items, Locations, Options, Regions, Rules
|
from . import Items, Locations, Maps, Options, Regions, Rules
|
||||||
|
|
||||||
logger = logging.getLogger("DOOM 1993")
|
logger = logging.getLogger("DOOM 1993")
|
||||||
|
|
||||||
|
DOOM_TYPE_LEVEL_COMPLETE = -2
|
||||||
|
DOOM_TYPE_COMPUTER_AREA_MAP = 2026
|
||||||
|
|
||||||
|
|
||||||
class DOOM1993Location(Location):
|
class DOOM1993Location(Location):
|
||||||
game: str = "DOOM 1993"
|
game: str = "DOOM 1993"
|
||||||
|
@ -37,7 +40,7 @@ class DOOM1993World(World):
|
||||||
option_definitions = Options.options
|
option_definitions = Options.options
|
||||||
game = "DOOM 1993"
|
game = "DOOM 1993"
|
||||||
web = DOOM1993Web()
|
web = DOOM1993Web()
|
||||||
data_version = 1
|
data_version = 2
|
||||||
required_client_version = (0, 3, 9)
|
required_client_version = (0, 3, 9)
|
||||||
|
|
||||||
item_name_to_id = {data["name"]: item_id for item_id, data in Items.item_table.items()}
|
item_name_to_id = {data["name"]: item_id for item_id, data in Items.item_table.items()}
|
||||||
|
@ -88,36 +91,59 @@ class DOOM1993World(World):
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
# Main regions
|
# Main regions
|
||||||
menu_region = Region("Menu", self.player, self.multiworld)
|
menu_region = Region("Menu", self.player, self.multiworld)
|
||||||
mars_region = Region("Mars", self.player, self.multiworld)
|
hub_region = Region("Hub", self.player, self.multiworld)
|
||||||
self.multiworld.regions += [menu_region, mars_region]
|
self.multiworld.regions += [menu_region, hub_region]
|
||||||
menu_region.add_exits(["Mars"])
|
menu_region.add_exits(["Hub"])
|
||||||
|
|
||||||
# Create regions and locations
|
# Create regions and locations
|
||||||
for region_name in Regions.regions:
|
main_regions = []
|
||||||
|
connections = []
|
||||||
|
for region_dict in Regions.regions:
|
||||||
|
region_name = region_dict["name"]
|
||||||
|
if region_dict["connects_to_hub"]:
|
||||||
|
main_regions.append(region_name)
|
||||||
|
|
||||||
region = Region(region_name, self.player, self.multiworld)
|
region = Region(region_name, self.player, self.multiworld)
|
||||||
region.add_locations({
|
region.add_locations({
|
||||||
loc["name"]: (loc_id if loc["index"] != -1 else None)
|
loc["name"]: loc_id
|
||||||
for loc_id, loc in Locations.location_table.items()
|
for loc_id, loc in Locations.location_table.items()
|
||||||
if loc["region"] == region_name and self.included_episodes[loc["episode"] - 1]
|
if loc["region"] == region_name and self.included_episodes[loc["episode"] - 1]
|
||||||
}, DOOM1993Location)
|
}, DOOM1993Location)
|
||||||
|
|
||||||
self.multiworld.regions.append(region)
|
self.multiworld.regions.append(region)
|
||||||
|
|
||||||
# Link all regions to Mars
|
for connection in region_dict["connections"]:
|
||||||
mars_region.add_exits(Regions.regions)
|
connections.append((region, connection))
|
||||||
|
|
||||||
|
# Connect main regions to Hub
|
||||||
|
hub_region.add_exits(main_regions)
|
||||||
|
|
||||||
|
# Do the other connections between regions (They are not all both ways)
|
||||||
|
for connection in connections:
|
||||||
|
source = connection[0]
|
||||||
|
target = self.multiworld.get_region(connection[1], self.player)
|
||||||
|
|
||||||
|
entrance = Entrance(self.player, f"{source.name} -> {target.name}", source)
|
||||||
|
source.exits.append(entrance)
|
||||||
|
entrance.connect(target)
|
||||||
|
|
||||||
# Sum locations for items creation
|
# Sum locations for items creation
|
||||||
self.location_count = len(self.multiworld.get_locations(self.player))
|
self.location_count = len(self.multiworld.get_locations(self.player))
|
||||||
|
|
||||||
def completion_rule(self, state: CollectionState):
|
def completion_rule(self, state: CollectionState):
|
||||||
for event in Events.events:
|
for map_name in Maps.map_names:
|
||||||
if event not in self.location_name_to_id:
|
if map_name + " - Exit" not in self.location_name_to_id:
|
||||||
continue
|
continue
|
||||||
loc = Locations.location_table[self.location_name_to_id[event]]
|
|
||||||
|
# Exit location names are in form: Hangar (E1M1) - Exit
|
||||||
|
loc = Locations.location_table[self.location_name_to_id[map_name + " - Exit"]]
|
||||||
if not self.included_episodes[loc["episode"] - 1]:
|
if not self.included_episodes[loc["episode"] - 1]:
|
||||||
continue
|
continue
|
||||||
if not state.has(event, self.player, 1):
|
|
||||||
|
# Map complete item names are in form: Hangar (E1M1) - Complete
|
||||||
|
if not state.has(map_name + " - Complete", self.player, 1):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def set_rules(self):
|
def set_rules(self):
|
||||||
|
@ -126,16 +152,14 @@ class DOOM1993World(World):
|
||||||
|
|
||||||
# Forbid progression items to locations that can be missed and can't be picked up. (e.g. One-time timed
|
# Forbid progression items to locations that can be missed and can't be picked up. (e.g. One-time timed
|
||||||
# platform) Unless the user allows for it.
|
# platform) Unless the user allows for it.
|
||||||
if getattr(self.multiworld, "allow_death_logic")[self.player]:
|
if not getattr(self.multiworld, "allow_death_logic")[self.player].value:
|
||||||
self.multiworld.exclude_locations[self.player] += set(Locations.death_logic_locations)
|
for death_logic_location in Locations.death_logic_locations:
|
||||||
|
self.multiworld.exclude_locations[self.player].value.add(death_logic_location)
|
||||||
|
|
||||||
def create_item(self, name: str) -> DOOM1993Item:
|
def create_item(self, name: str) -> DOOM1993Item:
|
||||||
item_id: int = self.item_name_to_id[name]
|
item_id: int = self.item_name_to_id[name]
|
||||||
return DOOM1993Item(name, Items.item_table[item_id]["classification"], item_id, self.player)
|
return DOOM1993Item(name, Items.item_table[item_id]["classification"], item_id, self.player)
|
||||||
|
|
||||||
def create_event(self, name: str) -> DOOM1993Item:
|
|
||||||
return DOOM1993Item(name, ItemClassification.progression, None, self.player)
|
|
||||||
|
|
||||||
def place_locked_item_in_locations(self, item_name, locations):
|
def place_locked_item_in_locations(self, item_name, locations):
|
||||||
location = self.multiworld.random.choice(locations)
|
location = self.multiworld.random.choice(locations)
|
||||||
self.multiworld.get_location(location, self.player).place_locked_item(self.create_item(item_name))
|
self.multiworld.get_location(location, self.player).place_locked_item(self.create_item(item_name))
|
||||||
|
@ -144,14 +168,21 @@ class DOOM1993World(World):
|
||||||
def create_items(self):
|
def create_items(self):
|
||||||
is_only_first_episode: bool = self.get_episode_count() == 1 and self.included_episodes[0]
|
is_only_first_episode: bool = self.get_episode_count() == 1 and self.included_episodes[0]
|
||||||
itempool: List[DOOM1993Item] = []
|
itempool: List[DOOM1993Item] = []
|
||||||
|
start_with_computer_area_maps: bool = getattr(self.multiworld, "start_with_computer_area_maps")[self.player].value
|
||||||
|
|
||||||
# Items
|
# Items
|
||||||
for item_id, item in Items.item_table.items():
|
for item_id, item in Items.item_table.items():
|
||||||
|
if item["doom_type"] == DOOM_TYPE_LEVEL_COMPLETE:
|
||||||
|
continue # We'll fill it manually later
|
||||||
|
|
||||||
|
if item["doom_type"] == DOOM_TYPE_COMPUTER_AREA_MAP and start_with_computer_area_maps:
|
||||||
|
continue # We'll fill it manually, and we will put fillers in place
|
||||||
|
|
||||||
if item["episode"] != -1 and not self.included_episodes[item["episode"] - 1]:
|
if item["episode"] != -1 and not self.included_episodes[item["episode"] - 1]:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if item["name"] in {"BFG9000", "Plasma Gun"} and is_only_first_episode:
|
if item["name"] in {"BFG9000", "Plasma Gun"} and is_only_first_episode:
|
||||||
continue # Don't include those guns in first episode
|
continue # Don't include those guns if only first episode
|
||||||
|
|
||||||
if item["name"] in {"Warrens (E3M9) - Blue skull key", "Halls of the Damned (E2M6) - Yellow skull key"}:
|
if item["name"] in {"Warrens (E3M9) - Blue skull key", "Halls of the Damned (E2M6) - Yellow skull key"}:
|
||||||
continue
|
continue
|
||||||
|
@ -160,15 +191,21 @@ class DOOM1993World(World):
|
||||||
itempool += [self.create_item(item["name"]) for _ in range(count)]
|
itempool += [self.create_item(item["name"]) for _ in range(count)]
|
||||||
|
|
||||||
# Place end level items in locked locations
|
# Place end level items in locked locations
|
||||||
for event in Events.events:
|
for map_name in Maps.map_names:
|
||||||
if event not in self.location_name_to_id:
|
loc_name = map_name + " - Exit"
|
||||||
|
item_name = map_name + " - Complete"
|
||||||
|
|
||||||
|
if loc_name not in self.location_name_to_id:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
loc = Locations.location_table[self.location_name_to_id[event]]
|
if item_name not in self.item_name_to_id:
|
||||||
|
continue
|
||||||
|
|
||||||
|
loc = Locations.location_table[self.location_name_to_id[loc_name]]
|
||||||
if not self.included_episodes[loc["episode"] - 1]:
|
if not self.included_episodes[loc["episode"] - 1]:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.multiworld.get_location(event, self.player).place_locked_item(self.create_event(event))
|
self.multiworld.get_location(loc_name, self.player).place_locked_item(self.create_item(item_name))
|
||||||
self.location_count -= 1
|
self.location_count -= 1
|
||||||
|
|
||||||
# Special case for E2M6 and E3M8, where you enter a normal door then get stuck behind with a key door.
|
# Special case for E2M6 and E3M8, where you enter a normal door then get stuck behind with a key door.
|
||||||
|
@ -194,7 +231,13 @@ class DOOM1993World(World):
|
||||||
if self.included_episodes[i]:
|
if self.included_episodes[i]:
|
||||||
self.multiworld.push_precollected(self.create_item(self.starting_level_for_episode[i]))
|
self.multiworld.push_precollected(self.create_item(self.starting_level_for_episode[i]))
|
||||||
|
|
||||||
# Fill the rest starting with weapons, powerups then fillers
|
# Give Computer area maps if option selected
|
||||||
|
if getattr(self.multiworld, "start_with_computer_area_maps")[self.player].value:
|
||||||
|
for item_id, item_dict in Items.item_table.items():
|
||||||
|
if item_dict["doom_type"] == DOOM_TYPE_COMPUTER_AREA_MAP:
|
||||||
|
self.multiworld.push_precollected(self.create_item(item_dict["name"]))
|
||||||
|
|
||||||
|
# Fill the rest starting with powerups, then fillers
|
||||||
self.create_ratioed_items("Armor", itempool)
|
self.create_ratioed_items("Armor", itempool)
|
||||||
self.create_ratioed_items("Mega Armor", itempool)
|
self.create_ratioed_items("Mega Armor", itempool)
|
||||||
self.create_ratioed_items("Berserk", itempool)
|
self.create_ratioed_items("Berserk", itempool)
|
||||||
|
|
Loading…
Reference in New Issue