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
|
||||
count: int
|
||||
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.
|
||||
map: int
|
||||
|
||||
|
@ -722,6 +722,168 @@ item_table: Dict[int, ItemDict] = {
|
|||
'doom_type': 17,
|
||||
'episode': -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,
|
||||
'index': 39,
|
||||
'doom_type': 2018,
|
||||
'region': "Command Control (E1M4) Blue Yellow"},
|
||||
'region': "Command Control (E1M4) Blue"},
|
||||
351031: {'name': 'Command Control (E1M4) - Yellow keycard',
|
||||
'episode': 1,
|
||||
'map': 4,
|
||||
'index': 61,
|
||||
'doom_type': 6,
|
||||
'region': "Command Control (E1M4) Blue Yellow"},
|
||||
'region': "Command Control (E1M4) Blue"},
|
||||
351032: {'name': 'Command Control (E1M4) - Blue keycard',
|
||||
'episode': 1,
|
||||
'map': 4,
|
||||
|
@ -228,7 +228,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 4,
|
||||
'index': 100,
|
||||
'doom_type': 2019,
|
||||
'region': "Command Control (E1M4) Blue Yellow"},
|
||||
'region': "Command Control (E1M4) Main"},
|
||||
351036: {'name': 'Command Control (E1M4) - Backpack',
|
||||
'episode': 1,
|
||||
'map': 4,
|
||||
|
@ -246,7 +246,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 5,
|
||||
'index': 4,
|
||||
'doom_type': 5,
|
||||
'region': "Phobos Lab (E1M5) Yellow"},
|
||||
'region': "Phobos Lab (E1M5) Green"},
|
||||
351039: {'name': 'Phobos Lab (E1M5) - Yellow keycard',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
|
@ -294,19 +294,19 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 5,
|
||||
'index': 173,
|
||||
'doom_type': 2002,
|
||||
'region': "Phobos Lab (E1M5) Yellow"},
|
||||
'region': "Phobos Lab (E1M5) Green"},
|
||||
351047: {'name': 'Phobos Lab (E1M5) - Backpack',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
'index': 174,
|
||||
'doom_type': 8,
|
||||
'region': "Phobos Lab (E1M5) Yellow"},
|
||||
'region': "Phobos Lab (E1M5) Green"},
|
||||
351048: {'name': 'Phobos Lab (E1M5) - Computer area map',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
'index': 176,
|
||||
'doom_type': 2026,
|
||||
'region': "Phobos Lab (E1M5) Yellow"},
|
||||
'region': "Phobos Lab (E1M5) Green"},
|
||||
351049: {'name': 'Phobos Lab (E1M5) - Mega Armor 2',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
|
@ -330,7 +330,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 5,
|
||||
'index': 280,
|
||||
'doom_type': 2018,
|
||||
'region': "Phobos Lab (E1M5) Yellow"},
|
||||
'region': "Phobos Lab (E1M5) Green"},
|
||||
351053: {'name': 'Phobos Lab (E1M5) - Partial invisibility',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
|
@ -432,7 +432,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 6,
|
||||
'index': 291,
|
||||
'doom_type': 2018,
|
||||
'region': "Central Processing (E1M6) Blue Yellow"},
|
||||
'region': "Central Processing (E1M6) Yellow"},
|
||||
351070: {'name': 'Central Processing (E1M6) - Armor 4',
|
||||
'episode': 1,
|
||||
'map': 6,
|
||||
|
@ -444,13 +444,13 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 6,
|
||||
'index': 392,
|
||||
'doom_type': 2013,
|
||||
'region': "Central Processing (E1M6) Blue"},
|
||||
'region': "Central Processing (E1M6) Nukage"},
|
||||
351072: {'name': 'Central Processing (E1M6) - Backpack 3',
|
||||
'episode': 1,
|
||||
'map': 6,
|
||||
'index': 395,
|
||||
'doom_type': 8,
|
||||
'region': "Central Processing (E1M6) Blue"},
|
||||
'region': "Central Processing (E1M6) Nukage"},
|
||||
351073: {'name': 'Computer Station (E1M7) - Chaingun',
|
||||
'episode': 1,
|
||||
'map': 7,
|
||||
|
@ -540,7 +540,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 7,
|
||||
'index': 337,
|
||||
'doom_type': 2024,
|
||||
'region': "Computer Station (E1M7) Yellow Red"},
|
||||
'region': "Computer Station (E1M7) Courtyard"},
|
||||
351088: {'name': 'Phobos Anomaly (E1M8) - Supercharge',
|
||||
'episode': 1,
|
||||
'map': 8,
|
||||
|
@ -906,7 +906,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 4,
|
||||
'index': 107,
|
||||
'doom_type': 2013,
|
||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
||||
'region': "Deimos Lab (E2M4) Yellow"},
|
||||
351149: {'name': 'Deimos Lab (E2M4) - Shotgun',
|
||||
'episode': 2,
|
||||
'map': 4,
|
||||
|
@ -918,13 +918,13 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 4,
|
||||
'index': 129,
|
||||
'doom_type': 2019,
|
||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
||||
'region': "Deimos Lab (E2M4) Yellow"},
|
||||
351151: {'name': 'Deimos Lab (E2M4) - Plasma gun',
|
||||
'episode': 2,
|
||||
'map': 4,
|
||||
'index': 130,
|
||||
'doom_type': 2004,
|
||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
||||
'region': "Deimos Lab (E2M4) Yellow"},
|
||||
351152: {'name': 'Deimos Lab (E2M4) - Backpack',
|
||||
'episode': 2,
|
||||
'map': 4,
|
||||
|
@ -1068,7 +1068,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 6,
|
||||
'index': 125,
|
||||
'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',
|
||||
'episode': 2,
|
||||
'map': 6,
|
||||
|
@ -1092,7 +1092,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 6,
|
||||
'index': 217,
|
||||
'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',
|
||||
'episode': 2,
|
||||
'map': 6,
|
||||
|
@ -1200,7 +1200,7 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 7,
|
||||
'index': 199,
|
||||
'doom_type': 2013,
|
||||
'region': "Spawning Vats (E2M7) Blue Red"},
|
||||
'region': "Spawning Vats (E2M7) Entrance Secret"},
|
||||
351198: {'name': 'Spawning Vats (E2M7) - Invulnerability 2',
|
||||
'episode': 2,
|
||||
'map': 7,
|
||||
|
@ -1524,19 +1524,19 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 4,
|
||||
'index': 134,
|
||||
'doom_type': 38,
|
||||
'region': "House of Pain (E3M4) Blue Yellow"},
|
||||
'region': "House of Pain (E3M4) Yellow"},
|
||||
351252: {'name': 'House of Pain (E3M4) - Backpack',
|
||||
'episode': 3,
|
||||
'map': 4,
|
||||
'index': 160,
|
||||
'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',
|
||||
'episode': 3,
|
||||
'map': 4,
|
||||
'index': 170,
|
||||
'doom_type': 2019,
|
||||
'region': "House of Pain (E3M4) Blue Red"},
|
||||
'region': "House of Pain (E3M4) Red"},
|
||||
351254: {'name': 'House of Pain (E3M4) - Partial invisibility',
|
||||
'episode': 3,
|
||||
'map': 4,
|
||||
|
@ -1854,253 +1854,253 @@ location_table: Dict[int, LocationDict] = {
|
|||
'map': 9,
|
||||
'index': 46,
|
||||
'doom_type': 2003,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351307: {'name': 'Warrens (E3M9) - Rocket launcher 2',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 99,
|
||||
'doom_type': 2003,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351308: {'name': 'Warrens (E3M9) - Supercharge',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 101,
|
||||
'doom_type': 2013,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351309: {'name': 'Warrens (E3M9) - Blue skull key',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 108,
|
||||
'doom_type': 40,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351310: {'name': 'Warrens (E3M9) - Berserk',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 114,
|
||||
'doom_type': 2023,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351311: {'name': 'Warrens (E3M9) - Invulnerability',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 120,
|
||||
'doom_type': 2022,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351312: {'name': 'Warrens (E3M9) - Partial invisibility',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 121,
|
||||
'doom_type': 2024,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351313: {'name': 'Warrens (E3M9) - Chaingun',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 122,
|
||||
'doom_type': 2002,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue"},
|
||||
351314: {'name': 'Warrens (E3M9) - Plasma gun',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 135,
|
||||
'doom_type': 2004,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351315: {'name': 'Warrens (E3M9) - Invulnerability 2',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 138,
|
||||
'doom_type': 2022,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351316: {'name': 'Warrens (E3M9) - Armor',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 139,
|
||||
'doom_type': 2018,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351317: {'name': 'Warrens (E3M9) - Chainsaw',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 140,
|
||||
'doom_type': 2005,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351318: {'name': 'Warrens (E3M9) - BFG9000',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 141,
|
||||
'doom_type': 2006,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351319: {'name': 'Warrens (E3M9) - Red skull key',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 143,
|
||||
'doom_type': 38,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351320: {'name': 'Warrens (E3M9) - Supercharge 2',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': 188,
|
||||
'doom_type': 2013,
|
||||
'region': "Warrens (E3M9) Main"},
|
||||
351321: {'name': 'Central Processing (E1M6) - Complete',
|
||||
'region': "Warrens (E3M9) Blue trigger"},
|
||||
351321: {'name': 'Central Processing (E1M6) - Exit',
|
||||
'episode': 1,
|
||||
'map': 6,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Central Processing (E1M6) Blue Yellow"},
|
||||
351322: {'name': 'Command Center (E2M5) - Complete',
|
||||
'region': "Central Processing (E1M6) Main"},
|
||||
351322: {'name': 'Command Center (E2M5) - Exit',
|
||||
'episode': 2,
|
||||
'map': 5,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Command Center (E2M5) Main"},
|
||||
351323: {'name': 'Command Control (E1M4) - Complete',
|
||||
351323: {'name': 'Command Control (E1M4) - Exit',
|
||||
'episode': 1,
|
||||
'map': 4,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Command Control (E1M4) Main"},
|
||||
351324: {'name': 'Computer Station (E1M7) - Complete',
|
||||
351324: {'name': 'Computer Station (E1M7) - Exit',
|
||||
'episode': 1,
|
||||
'map': 7,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Computer Station (E1M7) Blue"},
|
||||
351325: {'name': 'Containment Area (E2M2) - Complete',
|
||||
'region': "Computer Station (E1M7) Main"},
|
||||
351325: {'name': 'Containment Area (E2M2) - Exit',
|
||||
'episode': 2,
|
||||
'map': 2,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Containment Area (E2M2) Red"},
|
||||
351326: {'name': 'Deimos Anomaly (E2M1) - Complete',
|
||||
'region': "Containment Area (E2M2) Main"},
|
||||
351326: {'name': 'Deimos Anomaly (E2M1) - Exit',
|
||||
'episode': 2,
|
||||
'map': 1,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Deimos Anomaly (E2M1) Blue"},
|
||||
351327: {'name': 'Deimos Lab (E2M4) - Complete',
|
||||
'region': "Deimos Anomaly (E2M1) Main"},
|
||||
351327: {'name': 'Deimos Lab (E2M4) - Exit',
|
||||
'episode': 2,
|
||||
'map': 4,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Deimos Lab (E2M4) Blue Yellow"},
|
||||
351328: {'name': 'Dis (E3M8) - Complete',
|
||||
'region': "Deimos Lab (E2M4) Yellow"},
|
||||
351328: {'name': 'Dis (E3M8) - Exit',
|
||||
'episode': 3,
|
||||
'map': 8,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Dis (E3M8) Main"},
|
||||
351329: {'name': 'Fortress of Mystery (E2M9) - Complete',
|
||||
351329: {'name': 'Fortress of Mystery (E2M9) - Exit',
|
||||
'episode': 2,
|
||||
'map': 9,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Fortress of Mystery (E2M9) Yellow"},
|
||||
351330: {'name': 'Halls of the Damned (E2M6) - Complete',
|
||||
'region': "Fortress of Mystery (E2M9) Main"},
|
||||
351330: {'name': 'Halls of the Damned (E2M6) - Exit',
|
||||
'episode': 2,
|
||||
'map': 6,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Halls of the Damned (E2M6) Blue Yellow Red"},
|
||||
351331: {'name': 'Hangar (E1M1) - Complete',
|
||||
'region': "Halls of the Damned (E2M6) Main"},
|
||||
351331: {'name': 'Hangar (E1M1) - Exit',
|
||||
'episode': 1,
|
||||
'map': 1,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Hangar (E1M1) Main"},
|
||||
351332: {'name': 'Hell Keep (E3M1) - Complete',
|
||||
351332: {'name': 'Hell Keep (E3M1) - Exit',
|
||||
'episode': 3,
|
||||
'map': 1,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Hell Keep (E3M1) Narrow"},
|
||||
351333: {'name': 'House of Pain (E3M4) - Complete',
|
||||
'region': "Hell Keep (E3M1) Main"},
|
||||
351333: {'name': 'House of Pain (E3M4) - Exit',
|
||||
'episode': 3,
|
||||
'map': 4,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "House of Pain (E3M4) Blue Red"},
|
||||
351334: {'name': 'Limbo (E3M7) - Complete',
|
||||
'region': "House of Pain (E3M4) Main"},
|
||||
351334: {'name': 'Limbo (E3M7) - Exit',
|
||||
'episode': 3,
|
||||
'map': 7,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Limbo (E3M7) Yellow Red"},
|
||||
351335: {'name': 'Military Base (E1M9) - Complete',
|
||||
'region': "Limbo (E3M7) Main"},
|
||||
351335: {'name': 'Military Base (E1M9) - Exit',
|
||||
'episode': 1,
|
||||
'map': 9,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Military Base (E1M9) Blue"},
|
||||
351336: {'name': 'Mt. Erebus (E3M6) - Complete',
|
||||
'region': "Military Base (E1M9) Main"},
|
||||
351336: {'name': 'Mt. Erebus (E3M6) - Exit',
|
||||
'episode': 3,
|
||||
'map': 6,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Mt. Erebus (E3M6) Blue"},
|
||||
351337: {'name': 'Nuclear Plant (E1M2) - Complete',
|
||||
'region': "Mt. Erebus (E3M6) Main"},
|
||||
351337: {'name': 'Nuclear Plant (E1M2) - Exit',
|
||||
'episode': 1,
|
||||
'map': 2,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Nuclear Plant (E1M2) Red"},
|
||||
351338: {'name': 'Pandemonium (E3M3) - Complete',
|
||||
'region': "Nuclear Plant (E1M2) Main"},
|
||||
351338: {'name': 'Pandemonium (E3M3) - Exit',
|
||||
'episode': 3,
|
||||
'map': 3,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Pandemonium (E3M3) Blue"},
|
||||
351339: {'name': 'Phobos Anomaly (E1M8) - Complete',
|
||||
'region': "Pandemonium (E3M3) Main"},
|
||||
351339: {'name': 'Phobos Anomaly (E1M8) - Exit',
|
||||
'episode': 1,
|
||||
'map': 8,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Phobos Anomaly (E1M8) Main"},
|
||||
351340: {'name': 'Phobos Lab (E1M5) - Complete',
|
||||
'region': "Phobos Anomaly (E1M8) Start"},
|
||||
351340: {'name': 'Phobos Lab (E1M5) - Exit',
|
||||
'episode': 1,
|
||||
'map': 5,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Phobos Lab (E1M5) Blue Yellow"},
|
||||
351341: {'name': 'Refinery (E2M3) - Complete',
|
||||
'region': "Phobos Lab (E1M5) Main"},
|
||||
351341: {'name': 'Refinery (E2M3) - Exit',
|
||||
'episode': 2,
|
||||
'map': 3,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Refinery (E2M3) Blue"},
|
||||
351342: {'name': 'Slough of Despair (E3M2) - Complete',
|
||||
'region': "Refinery (E2M3) Main"},
|
||||
351342: {'name': 'Slough of Despair (E3M2) - Exit',
|
||||
'episode': 3,
|
||||
'map': 2,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Slough of Despair (E3M2) Blue"},
|
||||
351343: {'name': 'Spawning Vats (E2M7) - Complete',
|
||||
'region': "Slough of Despair (E3M2) Main"},
|
||||
351343: {'name': 'Spawning Vats (E2M7) - Exit',
|
||||
'episode': 2,
|
||||
'map': 7,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Spawning Vats (E2M7) Red"},
|
||||
351344: {'name': 'Tower of Babel (E2M8) - Complete',
|
||||
'region': "Spawning Vats (E2M7) Main"},
|
||||
351344: {'name': 'Tower of Babel (E2M8) - Exit',
|
||||
'episode': 2,
|
||||
'map': 8,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Tower of Babel (E2M8) Main"},
|
||||
351345: {'name': 'Toxin Refinery (E1M3) - Complete',
|
||||
351345: {'name': 'Toxin Refinery (E1M3) - Exit',
|
||||
'episode': 1,
|
||||
'map': 3,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Toxin Refinery (E1M3) Blue"},
|
||||
351346: {'name': 'Unholy Cathedral (E3M5) - Complete',
|
||||
'region': "Toxin Refinery (E1M3) Main"},
|
||||
351346: {'name': 'Unholy Cathedral (E3M5) - Exit',
|
||||
'episode': 3,
|
||||
'map': 5,
|
||||
'index': -1,
|
||||
'doom_type': -1,
|
||||
'region': "Unholy Cathedral (E3M5) Blue"},
|
||||
351347: {'name': 'Warrens (E3M9) - Complete',
|
||||
'region': "Unholy Cathedral (E3M5) Main"},
|
||||
351347: {'name': 'Warrens (E3M9) - Exit',
|
||||
'episode': 3,
|
||||
'map': 9,
|
||||
'index': -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) - Blue keycard',
|
||||
'Central Processing (E1M6) - Chaingun',
|
||||
'Central Processing (E1M6) - Complete',
|
||||
'Central Processing (E1M6) - Computer area map',
|
||||
'Central Processing (E1M6) - Exit',
|
||||
'Central Processing (E1M6) - Mega Armor',
|
||||
'Central Processing (E1M6) - Partial invisibility',
|
||||
'Central Processing (E1M6) - Partial invisibility 2',
|
||||
|
@ -2134,8 +2134,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Command Center (E2M5) - Berserk',
|
||||
'Command Center (E2M5) - Chaingun',
|
||||
'Command Center (E2M5) - Chainsaw',
|
||||
'Command Center (E2M5) - Complete',
|
||||
'Command Center (E2M5) - Computer area map',
|
||||
'Command Center (E2M5) - Exit',
|
||||
'Command Center (E2M5) - Mega Armor',
|
||||
'Command Center (E2M5) - Partial invisibility',
|
||||
'Command Center (E2M5) - Plasma gun',
|
||||
|
@ -2145,7 +2145,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Command Control (E1M4) - Backpack',
|
||||
'Command Control (E1M4) - Blue keycard',
|
||||
'Command Control (E1M4) - Chaingun',
|
||||
'Command Control (E1M4) - Complete',
|
||||
'Command Control (E1M4) - Exit',
|
||||
'Command Control (E1M4) - Mega Armor',
|
||||
'Command Control (E1M4) - Rocket launcher',
|
||||
'Command Control (E1M4) - Shotgun',
|
||||
|
@ -2159,8 +2159,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Computer Station (E1M7) - Blue keycard',
|
||||
'Computer Station (E1M7) - Chaingun',
|
||||
'Computer Station (E1M7) - Chainsaw',
|
||||
'Computer Station (E1M7) - Complete',
|
||||
'Computer Station (E1M7) - Computer area map',
|
||||
'Computer Station (E1M7) - Exit',
|
||||
'Computer Station (E1M7) - Mega Armor',
|
||||
'Computer Station (E1M7) - Partial invisibility',
|
||||
'Computer Station (E1M7) - Red keycard',
|
||||
|
@ -2181,8 +2181,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Containment Area (E2M2) - Blue keycard',
|
||||
'Containment Area (E2M2) - Chaingun',
|
||||
'Containment Area (E2M2) - Chainsaw',
|
||||
'Containment Area (E2M2) - Complete',
|
||||
'Containment Area (E2M2) - Computer area map',
|
||||
'Containment Area (E2M2) - Exit',
|
||||
'Containment Area (E2M2) - Mega Armor',
|
||||
'Containment Area (E2M2) - Plasma gun',
|
||||
'Containment Area (E2M2) - Red keycard',
|
||||
|
@ -2195,8 +2195,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Deimos Anomaly (E2M1)': {
|
||||
'Deimos Anomaly (E2M1) - Armor',
|
||||
'Deimos Anomaly (E2M1) - Blue keycard',
|
||||
'Deimos Anomaly (E2M1) - Complete',
|
||||
'Deimos Anomaly (E2M1) - Computer area map',
|
||||
'Deimos Anomaly (E2M1) - Exit',
|
||||
'Deimos Anomaly (E2M1) - Mega Armor',
|
||||
'Deimos Anomaly (E2M1) - Plasma gun',
|
||||
'Deimos Anomaly (E2M1) - Red keycard',
|
||||
|
@ -2211,8 +2211,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Deimos Lab (E2M4) - Berserk',
|
||||
'Deimos Lab (E2M4) - Blue keycard',
|
||||
'Deimos Lab (E2M4) - Chaingun',
|
||||
'Deimos Lab (E2M4) - Complete',
|
||||
'Deimos Lab (E2M4) - Computer area map',
|
||||
'Deimos Lab (E2M4) - Exit',
|
||||
'Deimos Lab (E2M4) - Mega Armor',
|
||||
'Deimos Lab (E2M4) - Partial invisibility',
|
||||
'Deimos Lab (E2M4) - Partial invisibility 2',
|
||||
|
@ -2223,7 +2223,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Deimos Lab (E2M4) - Yellow keycard',
|
||||
},
|
||||
'Dis (E3M8)': {
|
||||
'Dis (E3M8) - Complete',
|
||||
'Dis (E3M8) - Exit',
|
||||
'Dis (E3M8) - Mega Armor',
|
||||
'Dis (E3M8) - Plasma gun',
|
||||
'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) - Chaingun',
|
||||
'Fortress of Mystery (E2M9) - Chainsaw',
|
||||
'Fortress of Mystery (E2M9) - Complete',
|
||||
'Fortress of Mystery (E2M9) - Computer area map',
|
||||
'Fortress of Mystery (E2M9) - Exit',
|
||||
'Fortress of Mystery (E2M9) - Mega Armor',
|
||||
'Fortress of Mystery (E2M9) - Plasma gun',
|
||||
'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) - Chaingun',
|
||||
'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) - Exit',
|
||||
'Halls of the Damned (E2M6) - Mega Armor',
|
||||
'Halls of the Damned (E2M6) - Partial invisibility',
|
||||
'Halls of the Damned (E2M6) - Partial invisibility 2',
|
||||
|
@ -2265,12 +2265,12 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
},
|
||||
'Hangar (E1M1)': {
|
||||
'Hangar (E1M1) - Armor',
|
||||
'Hangar (E1M1) - Complete',
|
||||
'Hangar (E1M1) - Exit',
|
||||
'Hangar (E1M1) - Mega Armor',
|
||||
'Hangar (E1M1) - Shotgun',
|
||||
},
|
||||
'Hell Keep (E3M1)': {
|
||||
'Hell Keep (E3M1) - Complete',
|
||||
'Hell Keep (E3M1) - Exit',
|
||||
'Hell Keep (E3M1) - Rocket launcher',
|
||||
'Hell Keep (E3M1) - Shotgun',
|
||||
},
|
||||
|
@ -2283,7 +2283,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'House of Pain (E3M4) - Berserk',
|
||||
'House of Pain (E3M4) - Blue skull key',
|
||||
'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 2',
|
||||
'House of Pain (E3M4) - Mega Armor',
|
||||
|
@ -2301,7 +2301,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Limbo (E3M7) - BFG9000',
|
||||
'Limbo (E3M7) - Backpack',
|
||||
'Limbo (E3M7) - Blue skull key',
|
||||
'Limbo (E3M7) - Complete',
|
||||
'Limbo (E3M7) - Exit',
|
||||
'Limbo (E3M7) - Mega Armor',
|
||||
'Limbo (E3M7) - Plasma gun',
|
||||
'Limbo (E3M7) - Red skull key',
|
||||
|
@ -2315,7 +2315,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Military Base (E1M9) - Blue keycard',
|
||||
'Military Base (E1M9) - Chaingun',
|
||||
'Military Base (E1M9) - Chainsaw',
|
||||
'Military Base (E1M9) - Complete',
|
||||
'Military Base (E1M9) - Exit',
|
||||
'Military Base (E1M9) - Red keycard',
|
||||
'Military Base (E1M9) - Rocket launcher',
|
||||
'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) - Chaingun',
|
||||
'Mt. Erebus (E3M6) - Chainsaw',
|
||||
'Mt. Erebus (E3M6) - Complete',
|
||||
'Mt. Erebus (E3M6) - Computer area map',
|
||||
'Mt. Erebus (E3M6) - Exit',
|
||||
'Mt. Erebus (E3M6) - Invulnerability',
|
||||
'Mt. Erebus (E3M6) - Invulnerability 2',
|
||||
'Mt. Erebus (E3M6) - Mega Armor',
|
||||
|
@ -2349,7 +2349,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Nuclear Plant (E1M2) - Backpack 2',
|
||||
'Nuclear Plant (E1M2) - Chaingun',
|
||||
'Nuclear Plant (E1M2) - Chainsaw',
|
||||
'Nuclear Plant (E1M2) - Complete',
|
||||
'Nuclear Plant (E1M2) - Exit',
|
||||
'Nuclear Plant (E1M2) - Mega Armor',
|
||||
'Nuclear Plant (E1M2) - Red keycard',
|
||||
'Nuclear Plant (E1M2) - Shotgun',
|
||||
|
@ -2362,8 +2362,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Pandemonium (E3M3) - Berserk',
|
||||
'Pandemonium (E3M3) - Blue skull key',
|
||||
'Pandemonium (E3M3) - Chaingun',
|
||||
'Pandemonium (E3M3) - Complete',
|
||||
'Pandemonium (E3M3) - Computer area map',
|
||||
'Pandemonium (E3M3) - Exit',
|
||||
'Pandemonium (E3M3) - Invulnerability',
|
||||
'Pandemonium (E3M3) - Mega Armor',
|
||||
'Pandemonium (E3M3) - Mega Armor 2',
|
||||
|
@ -2375,8 +2375,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Phobos Anomaly (E1M8)': {
|
||||
'Phobos Anomaly (E1M8) - Armor',
|
||||
'Phobos Anomaly (E1M8) - Chaingun',
|
||||
'Phobos Anomaly (E1M8) - Complete',
|
||||
'Phobos Anomaly (E1M8) - Computer area map',
|
||||
'Phobos Anomaly (E1M8) - Exit',
|
||||
'Phobos Anomaly (E1M8) - Partial invisibility',
|
||||
'Phobos Anomaly (E1M8) - Shotgun',
|
||||
'Phobos Anomaly (E1M8) - Shotgun 2',
|
||||
|
@ -2389,8 +2389,8 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Phobos Lab (E1M5) - Blue keycard',
|
||||
'Phobos Lab (E1M5) - Chaingun',
|
||||
'Phobos Lab (E1M5) - Chainsaw',
|
||||
'Phobos Lab (E1M5) - Complete',
|
||||
'Phobos Lab (E1M5) - Computer area map',
|
||||
'Phobos Lab (E1M5) - Exit',
|
||||
'Phobos Lab (E1M5) - Mega Armor',
|
||||
'Phobos Lab (E1M5) - Mega Armor 2',
|
||||
'Phobos Lab (E1M5) - Partial invisibility',
|
||||
|
@ -2407,7 +2407,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Refinery (E2M3) - Berserk',
|
||||
'Refinery (E2M3) - Blue keycard',
|
||||
'Refinery (E2M3) - Chaingun',
|
||||
'Refinery (E2M3) - Complete',
|
||||
'Refinery (E2M3) - Exit',
|
||||
'Refinery (E2M3) - Mega Armor',
|
||||
'Refinery (E2M3) - Partial invisibility',
|
||||
'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) - Blue skull key',
|
||||
'Slough of Despair (E3M2) - Chaingun',
|
||||
'Slough of Despair (E3M2) - Complete',
|
||||
'Slough of Despair (E3M2) - Computer area map',
|
||||
'Slough of Despair (E3M2) - Exit',
|
||||
'Slough of Despair (E3M2) - Mega Armor',
|
||||
'Slough of Despair (E3M2) - Plasma gun',
|
||||
'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) - Chaingun',
|
||||
'Spawning Vats (E2M7) - Chainsaw',
|
||||
'Spawning Vats (E2M7) - Complete',
|
||||
'Spawning Vats (E2M7) - Computer area map',
|
||||
'Spawning Vats (E2M7) - Exit',
|
||||
'Spawning Vats (E2M7) - Invulnerability',
|
||||
'Spawning Vats (E2M7) - Invulnerability 2',
|
||||
'Spawning Vats (E2M7) - Mega Armor',
|
||||
|
@ -2447,7 +2447,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Spawning Vats (E2M7) - Yellow keycard',
|
||||
},
|
||||
'Tower of Babel (E2M8)': {
|
||||
'Tower of Babel (E2M8) - Complete',
|
||||
'Tower of Babel (E2M8) - Exit',
|
||||
'Tower of Babel (E2M8) - Mega Armor',
|
||||
'Tower of Babel (E2M8) - Rocket launcher',
|
||||
'Tower of Babel (E2M8) - Supercharge',
|
||||
|
@ -2461,7 +2461,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Toxin Refinery (E1M3) - Blue keycard',
|
||||
'Toxin Refinery (E1M3) - Chaingun',
|
||||
'Toxin Refinery (E1M3) - Chainsaw',
|
||||
'Toxin Refinery (E1M3) - Complete',
|
||||
'Toxin Refinery (E1M3) - Exit',
|
||||
'Toxin Refinery (E1M3) - Mega Armor',
|
||||
'Toxin Refinery (E1M3) - Partial invisibility',
|
||||
'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) - Chaingun',
|
||||
'Unholy Cathedral (E3M5) - Chainsaw',
|
||||
'Unholy Cathedral (E3M5) - Complete',
|
||||
'Unholy Cathedral (E3M5) - Exit',
|
||||
'Unholy Cathedral (E3M5) - Invulnerability',
|
||||
'Unholy Cathedral (E3M5) - Partial invisibility',
|
||||
'Unholy Cathedral (E3M5) - Plasma gun',
|
||||
|
@ -2495,7 +2495,7 @@ location_name_groups: Dict[str, Set[str]] = {
|
|||
'Warrens (E3M9) - Blue skull key',
|
||||
'Warrens (E3M9) - Chaingun',
|
||||
'Warrens (E3M9) - Chainsaw',
|
||||
'Warrens (E3M9) - Complete',
|
||||
'Warrens (E3M9) - Exit',
|
||||
'Warrens (E3M9) - Invulnerability',
|
||||
'Warrens (E3M9) - Invulnerability 2',
|
||||
'Warrens (E3M9) - Partial invisibility',
|
||||
|
@ -2514,8 +2514,9 @@ death_logic_locations = [
|
|||
"Command Control (E1M4) - Supercharge",
|
||||
"Command Control (E1M4) - Mega Armor",
|
||||
"Containment Area (E2M2) - Supercharge",
|
||||
"Pandemonium (E3M3) - Mega Armor",
|
||||
"House of Pain (E3M4) - Chaingun",
|
||||
"House of Pain (E3M4) - Invulnerability",
|
||||
"Pandemonium (E3M3) - Mega Armor",
|
||||
"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"
|
||||
|
||||
|
||||
class StartWithComputerAreaMaps(Toggle):
|
||||
"""Give the player all Computer Area Map items from the start."""
|
||||
display_name = "Start With Computer Area Maps"
|
||||
|
||||
|
||||
class Episode1(DefaultOnToggle):
|
||||
"""Knee-Deep in the Dead.
|
||||
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_pickups": RandomPickups,
|
||||
"allow_death_logic": AllowDeathLogic,
|
||||
"start_with_computer_area_maps": StartWithComputerAreaMaps,
|
||||
"death_link": DeathLink,
|
||||
"episode1": Episode1,
|
||||
"episode2": Episode2,
|
||||
|
|
|
@ -1,80 +1,358 @@
|
|||
# This file is auto generated. More info: https://github.com/Daivuk/apdoom
|
||||
|
||||
from typing import List
|
||||
from BaseClasses import Region, Entrance
|
||||
from BaseClasses import TypedDict
|
||||
|
||||
regions:List[Region] = [
|
||||
"Central Processing (E1M6) Blue",
|
||||
"Central Processing (E1M6) Blue Yellow",
|
||||
"Central Processing (E1M6) Main",
|
||||
"Central Processing (E1M6) Red",
|
||||
"Command Center (E2M5) Main",
|
||||
"Command Control (E1M4) Blue Yellow",
|
||||
"Command Control (E1M4) Main",
|
||||
"Computer Station (E1M7) Blue",
|
||||
"Computer Station (E1M7) Main",
|
||||
"Computer Station (E1M7) Red",
|
||||
"Computer Station (E1M7) Yellow",
|
||||
"Computer Station (E1M7) Yellow Red",
|
||||
"Containment Area (E2M2) Blue",
|
||||
"Containment Area (E2M2) Main",
|
||||
"Containment Area (E2M2) Red",
|
||||
"Containment Area (E2M2) Yellow",
|
||||
"Deimos Anomaly (E2M1) Blue",
|
||||
"Deimos Anomaly (E2M1) Main",
|
||||
"Deimos Anomaly (E2M1) Red",
|
||||
"Deimos Lab (E2M4) Blue",
|
||||
"Deimos Lab (E2M4) Blue Yellow",
|
||||
"Deimos Lab (E2M4) Main",
|
||||
"Dis (E3M8) Main",
|
||||
"Fortress of Mystery (E2M9) Blue",
|
||||
"Fortress of Mystery (E2M9) Main",
|
||||
"Fortress of Mystery (E2M9) Red",
|
||||
"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",
|
||||
"Unholy Cathedral (E3M5) Blue",
|
||||
"Unholy Cathedral (E3M5) Main",
|
||||
"Unholy Cathedral (E3M5) Yellow",
|
||||
"Warrens (E3M9) Main",
|
||||
"Warrens (E3M9) Red",
|
||||
class RegionDict(TypedDict, total=False):
|
||||
name: str
|
||||
connects_to_hub: bool
|
||||
connections: List[str]
|
||||
|
||||
|
||||
regions:List[RegionDict] = [
|
||||
# Hangar (E1M1)
|
||||
{"name":"Hangar (E1M1) Main",
|
||||
"connects_to_hub":True,
|
||||
"connections":[]},
|
||||
|
||||
# Nuclear Plant (E1M2)
|
||||
{"name":"Nuclear Plant (E1M2) Main",
|
||||
"connects_to_hub":True,
|
||||
"connections":["Nuclear Plant (E1M2) Red"]},
|
||||
{"name":"Nuclear Plant (E1M2) Red",
|
||||
"connects_to_hub":False,
|
||||
"connections":["Nuclear Plant (E1M2) Main"]},
|
||||
|
||||
# Toxin Refinery (E1M3)
|
||||
{"name":"Toxin Refinery (E1M3) Main",
|
||||
"connects_to_hub":True,
|
||||
"connections":["Toxin Refinery (E1M3) Blue"]},
|
||||
{"name":"Toxin Refinery (E1M3) Blue",
|
||||
"connects_to_hub":False,
|
||||
"connections":[
|
||||
"Toxin Refinery (E1M3) Yellow",
|
||||
"Toxin Refinery (E1M3) 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) 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) 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
|
||||
world = doom_1993_world.multiworld
|
||||
|
||||
# Hangar (E1M1) - E1M1
|
||||
set_rule(world.get_entrance("Mars -> Hangar (E1M1) Main", player), lambda state: state.has("Hangar (E1M1)", player, 1))
|
||||
# Hangar (E1M1)
|
||||
set_rule(world.get_entrance("Hub -> Hangar (E1M1) Main", player), lambda state:
|
||||
state.has("Hangar (E1M1)", player, 1))
|
||||
|
||||
# Nuclear Plant (E1M2) - 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("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)))
|
||||
# Nuclear Plant (E1M2)
|
||||
set_rule(world.get_entrance("Hub -> Nuclear Plant (E1M2) Main", player), lambda state:
|
||||
(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
|
||||
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("Mars -> Toxin Refinery (E1M3) Main", player), lambda state: state.has("Toxin Refinery (E1M3)", player, 1) and state.has("Shotgun", player, 1))
|
||||
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))
|
||||
# Toxin Refinery (E1M3)
|
||||
set_rule(world.get_entrance("Hub -> Toxin Refinery (E1M3) Main", player), lambda state:
|
||||
(state.has("Toxin Refinery (E1M3)", player, 1)) and
|
||||
(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
|
||||
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("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))
|
||||
# Command Control (E1M4)
|
||||
set_rule(world.get_entrance("Hub -> 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))
|
||||
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
|
||||
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("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))
|
||||
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)))
|
||||
# Phobos Lab (E1M5)
|
||||
set_rule(world.get_entrance("Hub -> 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))
|
||||
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
|
||||
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("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)))
|
||||
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))
|
||||
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)))
|
||||
# Central Processing (E1M6)
|
||||
set_rule(world.get_entrance("Hub -> 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) 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
|
||||
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("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))
|
||||
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)))
|
||||
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)))
|
||||
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))
|
||||
# Computer Station (E1M7)
|
||||
set_rule(world.get_entrance("Hub -> 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) and
|
||||
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
|
||||
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)))
|
||||
# Phobos Anomaly (E1M8)
|
||||
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
|
||||
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("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))
|
||||
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)))
|
||||
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)))
|
||||
# Military Base (E1M9)
|
||||
set_rule(world.get_entrance("Hub -> Military Base (E1M9) Main", player), lambda state:
|
||||
state.has("Military Base (E1M9)", player, 1) and
|
||||
state.has("Chaingun", player, 1) and
|
||||
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
|
||||
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("Mars -> Deimos Anomaly (E2M1) Main", player), lambda state: 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)))
|
||||
# Deimos Anomaly (E2M1)
|
||||
set_rule(world.get_entrance("Hub -> Deimos Anomaly (E2M1) Main", player), lambda state:
|
||||
state.has("Deimos Anomaly (E2M1)", 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
|
||||
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("Mars -> Containment Area (E2M2) Main", player), lambda state: state.has("Containment Area (E2M2)", player, 1) and state.has("Shotgun", player, 1))
|
||||
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)))
|
||||
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)))
|
||||
# Containment Area (E2M2)
|
||||
set_rule(world.get_entrance("Hub -> Containment Area (E2M2) Main", player), lambda state:
|
||||
(state.has("Containment Area (E2M2)", 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("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
|
||||
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("Mars -> Refinery (E2M3) Main", player), lambda state: state.has("Refinery (E2M3)", player, 1) and state.has("Shotgun", player, 1))
|
||||
# Refinery (E2M3)
|
||||
set_rule(world.get_entrance("Hub -> Refinery (E2M3) Main", player), lambda state:
|
||||
(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
|
||||
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("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))
|
||||
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))
|
||||
# Deimos Lab (E2M4)
|
||||
set_rule(world.get_entrance("Hub -> 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) 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
|
||||
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))
|
||||
# Command Center (E2M5)
|
||||
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
|
||||
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("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))
|
||||
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)))
|
||||
# Halls of the Damned (E2M6)
|
||||
set_rule(world.get_entrance("Hub -> Halls of the Damned (E2M6) Main", player), lambda state:
|
||||
state.has("Halls of the Damned (E2M6)", player, 1) and
|
||||
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
|
||||
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("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))
|
||||
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))
|
||||
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)))
|
||||
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)))
|
||||
# Spawning Vats (E2M7)
|
||||
set_rule(world.get_entrance("Hub -> 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) and
|
||||
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
|
||||
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)))
|
||||
# Tower of Babel (E2M8)
|
||||
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
|
||||
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("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))
|
||||
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)))
|
||||
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)))
|
||||
# Fortress of Mystery (E2M9)
|
||||
set_rule(world.get_entrance("Hub -> 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)) 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
|
||||
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("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)))
|
||||
# Hell Keep (E3M1)
|
||||
set_rule(world.get_entrance("Hub -> Hell Keep (E3M1) Main", player), lambda state:
|
||||
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
|
||||
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("Mars -> Slough of Despair (E3M2) Main", player), lambda state: state.has("Slough of Despair (E3M2)", player, 1) and state.has("Shotgun", player, 1))
|
||||
# Slough of Despair (E3M2)
|
||||
set_rule(world.get_entrance("Hub -> Slough of Despair (E3M2) Main", player), lambda state:
|
||||
(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
|
||||
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("Mars -> Pandemonium (E3M3) Main", player), lambda state: state.has("Pandemonium (E3M3)", player, 1) and state.has("Shotgun", player, 1))
|
||||
# Pandemonium (E3M3)
|
||||
set_rule(world.get_entrance("Hub -> Pandemonium (E3M3) Main", player), lambda state:
|
||||
(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
|
||||
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("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))
|
||||
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))
|
||||
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))
|
||||
# House of Pain (E3M4)
|
||||
set_rule(world.get_entrance("Hub -> 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)) 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
|
||||
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("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))
|
||||
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)))
|
||||
# Unholy Cathedral (E3M5)
|
||||
set_rule(world.get_entrance("Hub -> Unholy Cathedral (E3M5) Main", player), lambda state:
|
||||
(state.has("Unholy Cathedral (E3M5)", player, 1) and
|
||||
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
|
||||
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("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))
|
||||
# Mt. Erebus (E3M6)
|
||||
set_rule(world.get_entrance("Hub -> 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))
|
||||
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
|
||||
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("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))
|
||||
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)))
|
||||
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)))
|
||||
# Limbo (E3M7)
|
||||
set_rule(world.get_entrance("Hub -> Limbo (E3M7) Main", player), lambda state:
|
||||
(state.has("Limbo (E3M7)", 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("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
|
||||
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)))
|
||||
# Dis (E3M8)
|
||||
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
|
||||
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("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)))
|
||||
# Warrens (E3M9)
|
||||
set_rule(world.get_entrance("Hub -> 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("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
|
||||
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 . import Events, Items, Locations, Options, Regions, Rules
|
||||
from . import Items, Locations, Maps, Options, Regions, Rules
|
||||
|
||||
logger = logging.getLogger("DOOM 1993")
|
||||
|
||||
DOOM_TYPE_LEVEL_COMPLETE = -2
|
||||
DOOM_TYPE_COMPUTER_AREA_MAP = 2026
|
||||
|
||||
|
||||
class DOOM1993Location(Location):
|
||||
game: str = "DOOM 1993"
|
||||
|
@ -37,7 +40,7 @@ class DOOM1993World(World):
|
|||
option_definitions = Options.options
|
||||
game = "DOOM 1993"
|
||||
web = DOOM1993Web()
|
||||
data_version = 1
|
||||
data_version = 2
|
||||
required_client_version = (0, 3, 9)
|
||||
|
||||
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):
|
||||
# Main regions
|
||||
menu_region = Region("Menu", self.player, self.multiworld)
|
||||
mars_region = Region("Mars", self.player, self.multiworld)
|
||||
self.multiworld.regions += [menu_region, mars_region]
|
||||
menu_region.add_exits(["Mars"])
|
||||
hub_region = Region("Hub", self.player, self.multiworld)
|
||||
self.multiworld.regions += [menu_region, hub_region]
|
||||
menu_region.add_exits(["Hub"])
|
||||
|
||||
# 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.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()
|
||||
if loc["region"] == region_name and self.included_episodes[loc["episode"] - 1]
|
||||
}, DOOM1993Location)
|
||||
|
||||
self.multiworld.regions.append(region)
|
||||
|
||||
# Link all regions to Mars
|
||||
mars_region.add_exits(Regions.regions)
|
||||
for connection in region_dict["connections"]:
|
||||
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
|
||||
self.location_count = len(self.multiworld.get_locations(self.player))
|
||||
|
||||
def completion_rule(self, state: CollectionState):
|
||||
for event in Events.events:
|
||||
if event not in self.location_name_to_id:
|
||||
for map_name in Maps.map_names:
|
||||
if map_name + " - Exit" not in self.location_name_to_id:
|
||||
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]:
|
||||
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 True
|
||||
|
||||
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
|
||||
# platform) Unless the user allows for it.
|
||||
if getattr(self.multiworld, "allow_death_logic")[self.player]:
|
||||
self.multiworld.exclude_locations[self.player] += set(Locations.death_logic_locations)
|
||||
if not getattr(self.multiworld, "allow_death_logic")[self.player].value:
|
||||
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:
|
||||
item_id: int = self.item_name_to_id[name]
|
||||
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):
|
||||
location = self.multiworld.random.choice(locations)
|
||||
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):
|
||||
is_only_first_episode: bool = self.get_episode_count() == 1 and self.included_episodes[0]
|
||||
itempool: List[DOOM1993Item] = []
|
||||
start_with_computer_area_maps: bool = getattr(self.multiworld, "start_with_computer_area_maps")[self.player].value
|
||||
|
||||
# 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]:
|
||||
continue
|
||||
|
||||
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"}:
|
||||
continue
|
||||
|
@ -160,15 +191,21 @@ class DOOM1993World(World):
|
|||
itempool += [self.create_item(item["name"]) for _ in range(count)]
|
||||
|
||||
# Place end level items in locked locations
|
||||
for event in Events.events:
|
||||
if event not in self.location_name_to_id:
|
||||
for map_name in Maps.map_names:
|
||||
loc_name = map_name + " - Exit"
|
||||
item_name = map_name + " - Complete"
|
||||
|
||||
if loc_name not in self.location_name_to_id:
|
||||
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]:
|
||||
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
|
||||
|
||||
# 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]:
|
||||
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("Mega Armor", itempool)
|
||||
self.create_ratioed_items("Berserk", itempool)
|
||||
|
|
Loading…
Reference in New Issue