diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000000..537a05f68b67 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +worlds/blasphemous/region_data.py linguist-generated=true diff --git a/test/general/test_reachability.py b/test/general/test_reachability.py index d50013cc4178..fafa7023893c 100644 --- a/test/general/test_reachability.py +++ b/test/general/test_reachability.py @@ -14,6 +14,18 @@ class TestBase(unittest.TestCase): "Desert Northern Cliffs", # on top of mountain, only reachable via OWG "Dark Death Mountain Bunny Descent Area" # OWG Mountain descent }, + # These Blasphemous regions are not reachable with default options + "Blasphemous": { + "D01Z04S13[SE]", # difficulty must be hard + "D01Z05S25[E]", # difficulty must be hard + "D02Z02S05[W]", # difficulty must be hard and purified_hand must be true + "D04Z01S06[E]", # purified_hand must be true + "D04Z02S02[NE]", # difficulty must be hard and purified_hand must be true + "D05Z01S11[SW]", # difficulty must be hard + "D06Z01S08[N]", # difficulty must be hard and purified_hand must be true + "D20Z02S11[NW]", # difficulty must be hard + "D20Z02S11[E]", # difficulty must be hard + }, "Ocarina of Time": { "Prelude of Light Warp", # Prelude is not progression by default "Serenade of Water Warp", # Serenade is not progression by default diff --git a/worlds/blasphemous/ExtractorConfig.json b/worlds/blasphemous/ExtractorConfig.json new file mode 100644 index 000000000000..4d565ccf4a7d --- /dev/null +++ b/worlds/blasphemous/ExtractorConfig.json @@ -0,0 +1,19 @@ +{ + "type": "WorldDefinition", + "configuration": "./output/StringWorldDefinition.json", + "emptyRegionsToKeep": [ + "D17Z01S01", + "D01Z02S01", + "D02Z03S09", + "D03Z03S11", + "D04Z03S01", + "D06Z01S09", + "D20Z02S09", + "D09Z01S09[Cell24]", + "D09Z01S08[Cell7]", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell24]", + "D09BZ01S01[Cell17]", + "D09BZ01S01[Cell19]" + ] +} \ No newline at end of file diff --git a/worlds/blasphemous/Items.py b/worlds/blasphemous/Items.py index 23cad0f5c4dd..4843a99f2d12 100644 --- a/worlds/blasphemous/Items.py +++ b/worlds/blasphemous/Items.py @@ -637,52 +637,35 @@ class ItemDict(TypedDict): 'classification': ItemClassification.filler} ] -event_table: Dict[str, str] = { - "OpenedDCGateW": "D01Z05S24", - "OpenedDCGateE": "D01Z05S12", - "OpenedDCLadder": "D01Z05S20", - "OpenedWOTWCave": "D02Z01S06", - "RodeGOTPElevator": "D02Z02S11", - "OpenedConventLadder": "D02Z03S11", - "BrokeJondoBellW": "D03Z02S09", - "BrokeJondoBellE": "D03Z02S05", - "OpenedMOMLadder": "D04Z02S06", - "OpenedTSCGate": "D05Z02S11", - "OpenedARLadder": "D06Z01S23", - "BrokeBOTTCStatue": "D08Z01S02", - "OpenedWOTHPGate": "D09Z01S05", - "OpenedBOTSSLadder": "D17Z01S04" -} - group_table: Dict[str, Set[str]] = { - "wounds" : ["Holy Wound of Attrition", + "wounds" : {"Holy Wound of Attrition", "Holy Wound of Contrition", - "Holy Wound of Compunction"], + "Holy Wound of Compunction"}, - "masks" : ["Deformed Mask of Orestes", + "masks" : {"Deformed Mask of Orestes", "Mirrored Mask of Dolphos", - "Embossed Mask of Crescente"], + "Embossed Mask of Crescente"}, - "marks" : ["Mark of the First Refuge", + "marks" : {"Mark of the First Refuge", "Mark of the Second Refuge", - "Mark of the Third Refuge"], + "Mark of the Third Refuge"}, - "tirso" : ["Bouquet of Rosemary", + "tirso" : {"Bouquet of Rosemary", "Incense Garlic", "Olive Seeds", "Dried Clove", "Sooty Garlic", - "Bouquet of Thyme"], + "Bouquet of Thyme"}, - "tentudia": ["Tentudia's Carnal Remains", + "tentudia": {"Tentudia's Carnal Remains", "Remains of Tentudia's Hair", - "Tentudia's Skeletal Remains"], + "Tentudia's Skeletal Remains"}, - "egg" : ["Melted Golden Coins", + "egg" : {"Melted Golden Coins", "Torn Bridal Ribbon", - "Black Grieving Veil"], + "Black Grieving Veil"}, - "bones" : ["Parietal bone of Lasser, the Inquisitor", + "bones" : {"Parietal bone of Lasser, the Inquisitor", "Jaw of Ashgan, the Inquisitor", "Cervical vertebra of Zicher, the Brewmaster", "Clavicle of Dalhuisen, the Schoolchild", @@ -725,14 +708,14 @@ class ItemDict(TypedDict): "Scaphoid of Fierce, the Leper", "Anklebone of Weston, the Pilgrim", "Calcaneum of Persian, the Bandit", - "Navicular of Kahnnyhoo, the Murderer"], + "Navicular of Kahnnyhoo, the Murderer"}, - "power" : ["Life Upgrade", + "power" : {"Life Upgrade", "Fervour Upgrade", "Empty Bile Vessel", - "Quicksilver"], + "Quicksilver"}, - "prayer" : ["Seguiriya to your Eyes like Stars", + "prayer" : {"Seguiriya to your Eyes like Stars", "Debla of the Lights", "Saeta Dolorosa", "Campanillero to the Sons of the Aurora", @@ -746,10 +729,17 @@ class ItemDict(TypedDict): "Romance to the Crimson Mist", "Zambra to the Resplendent Crown", "Cantina of the Blue Rose", - "Mirabras of the Return to Port"] + "Mirabras of the Return to Port"}, + + "toe" : {"Little Toe made of Limestone", + "Big Toe made of Limestone", + "Fourth Toe made of Limestone"}, + + "eye" : {"Severed Right Eye of the Traitor", + "Broken Left Eye of the Traitor"} } -tears_set: Set[str] = [ +tears_list: List[str] = [ "Tears of Atonement (500)", "Tears of Atonement (625)", "Tears of Atonement (750)", @@ -772,16 +762,16 @@ class ItemDict(TypedDict): "Tears of Atonement (30000)" ] -reliquary_set: Set[str] = [ +reliquary_set: Set[str] = { "Reliquary of the Fervent Heart", "Reliquary of the Suffering Heart", "Reliquary of the Sorrowful Heart" -] +} -skill_set: Set[str] = [ +skill_set: Set[str] = { "Combo Skill", "Charged Skill", "Ranged Skill", "Dive Skill", "Lunge Skill" -] \ No newline at end of file +} diff --git a/worlds/blasphemous/Locations.py b/worlds/blasphemous/Locations.py index 6dd6e03180b3..6c2f71cd3799 100644 --- a/worlds/blasphemous/Locations.py +++ b/worlds/blasphemous/Locations.py @@ -1,986 +1,366 @@ -from typing import List, TypedDict +from typing import Dict -class LocationDict(TypedDict): - name: str - game_id: str - room: str - +location_names: Dict[str, str] = { + # The Holy Line + "PR14": "THL: Hanging skeleton", + "RB07": "THL: Across blood platforms", + "CO04": "THL: Underground ledge", + "QI55": "THL: Underground chest", + "RESCUED_CHERUB_07": "THL: Child of Moonlight", + "QI31": "THL: Deogracias' gift", -location_table: List[LocationDict] = [ # Albero - {'name': "Albero: Tirso's house, top floor", - 'game_id': "RB01", - 'room': "D01Z02S02"}, - {'name': "Albero: Outside Ossuary", - 'game_id': "CO43", - 'room': "D01Z02S04"}, - {'name': "Albero: Graveyard", - 'game_id': "CO16", - 'room': "D01Z02S05"}, - {'name': "Albero: Gate of Travel room", - 'game_id': "QI65", - 'room': "D01Z02S07"}, - {'name': "Albero: Child of Moonlight", - 'game_id': "RESCUED_CHERUB_08", - 'room': "D01Z02S03"}, - {'name': "Albero: Bless Linen Cloth", - 'game_id': "RE04", - 'room': "D01Z02S01"}, - {'name': "Albero: Bless Hatched Egg", - 'game_id': "RE10", - 'room': "D01Z02S01"}, - {'name': "Albero: Bless Severed Hand", - 'game_id': "RE02", - 'room': "D01Z02S01"}, - {'name': "Albero: First gift for Cleofas", - 'game_id': "QI01", - 'room': "D01Z02S03"}, - {'name': "Albero: Final gift for Cleofas", - 'game_id': "PR11", - 'room': "D01BZ04S01"}, - {'name': "Albero: Tirso's 1st reward", - 'game_id': "QI66", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's 2nd reward", - 'game_id': "Tirso[500]", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's 3rd reward", - 'game_id': "Tirso[1000]", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's 4th reward", - 'game_id': "Tirso[2000]", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's 5th reward", - 'game_id': "Tirso[5000]", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's 6th reward", - 'game_id': "Tirso[10000]", - 'room': "D01Z02S02"}, - {'name': "Albero: Tirso's final reward", - 'game_id': "QI56", - 'room': "D01Z02S02"}, - {'name': "Albero: Lvdovico's 1st reward", - 'game_id': "Lvdovico[500]", - 'room': "D01Z02S03"}, - {'name': "Albero: Lvdovico's 2nd reward", - 'game_id': "Lvdovico[1000]", - 'room': "D01Z02S03"}, - {'name': "Albero: Lvdovico's 3rd reward", - 'game_id': "PR03", - 'room': "D01Z02S03"}, - {'name': "Ossuary: Isidora, Voice of the Dead", - 'game_id': "QI201", - 'room': "D01BZ08S01"}, - {'name': "Albero: Mea Culpa altar", - 'game_id': "Sword[D01Z02S06]", - 'room': "D01Z02S06"}, - {'name': "Albero: Donate 5000 Tears", - 'game_id': "RB104", - 'room': "D01BZ04S01"}, - {'name': "Albero: Donate 50000 Tears", - 'game_id': "RB105", - 'room': "D01BZ04S01"}, - {'name': "Ossuary: 1st reward", - 'game_id': "Undertaker[250]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 2nd reward", - 'game_id': "Undertaker[500]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 3rd reward", - 'game_id': "Undertaker[750]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 4th reward", - 'game_id': "Undertaker[1000]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 5th reward", - 'game_id': "Undertaker[1250]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 6th reward", - 'game_id': "Undertaker[1500]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 7th reward", - 'game_id': "Undertaker[1750]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 8th reward", - 'game_id': "Undertaker[2000]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 9th reward", - 'game_id': "Undertaker[2500]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 10th reward", - 'game_id': "Undertaker[3000]", - 'room': "D01BZ06S01"}, - {'name': "Ossuary: 11th reward", - 'game_id': "Undertaker[5000]", - 'room': "D01BZ06S01"}, - - # All the Tears of the Sea - {'name': "AtTotS: Miriam's gift", - 'game_id': "PR201", - 'room': "D04Z04S01"}, + "RE02": "Albero: Bless Severed Hand", + "RE04": "Albero: Bless Linen Cloth", + "RE10": "Albero: Bless Hatched Egg", + "RB01": "Albero: Tirso's house, top floor", + "QI66": "Albero: Tirso's 1st reward", + "Tirso[500]": "Albero: Tirso's 2nd reward", + "Tirso[1000]": "Albero: Tirso's 3rd reward", + "Tirso[2000]": "Albero: Tirso's 4th reward", + "Tirso[5000]": "Albero: Tirso's 5th reward", + "Tirso[10000]": "Albero: Tirso's 6th reward", + "QI56": "Albero: Tirso's final reward", + "RESCUED_CHERUB_08": "Albero: Child of Moonlight", + "Lvdovico[500]": "Albero: Lvdovico's 1st reward", + "Lvdovico[1000]": "Albero: Lvdovico's 2nd reward", + "PR03": "Albero: Lvdovico's 3rd reward", + "QI01": "Albero: First gift for Cleofas", + "CO43": "Albero: Outside Ossuary", + "CO16": "Albero: Graveyard", + "Sword[D01Z02S06]": "Albero: Mea Culpa altar", + "QI65": "Albero: Gate of Travel room", + "RB104": "Albero: Donate 5000 Tears", + "RB105": "Albero: Donate 50000 Tears", + "PR11": "Albero: Final gift for Cleofas", + "Undertaker[250]": "Ossuary: 1st reward", + "Undertaker[500]": "Ossuary: 2nd reward", + "Undertaker[750]": "Ossuary: 3rd reward", + "Undertaker[1000]": "Ossuary: 4th reward", + "Undertaker[1250]": "Ossuary: 5th reward", + "Undertaker[1500]": "Ossuary: 6th reward", + "Undertaker[1750]": "Ossuary: 7th reward", + "Undertaker[2000]": "Ossuary: 8th reward", + "Undertaker[2500]": "Ossuary: 9th reward", + "Undertaker[3000]": "Ossuary: 10th reward", + "Undertaker[5000]": "Ossuary: 11th reward", + "QI201": "Ossuary: Isidora, Voice of the Dead", - # Archcathedral Rooftops - {'name': "AR: First soldier fight", - 'game_id': "QI02", - 'room': "D06Z01S03"}, - {'name': "AR: Second soldier fight", - 'game_id': "QI03", - 'room': "D06Z01S06"}, - {'name': "AR: Third soldier fight", - 'game_id': "QI04", - 'room': "D06Z01S21"}, - {'name': "AR: Upper west shaft ledge", - 'game_id': "CO06", - 'room': "D06Z01S12"}, - {'name': "AR: Upper west shaft Child of Moonlight", - 'game_id': "RESCUED_CHERUB_36", - 'room': "D06Z01S12"}, - {'name': "AR: Upper west shaft chest", - 'game_id': "PR12", - 'room': "D06Z01S12"}, - {'name': "AR: Statue near MoM", - 'game_id': "HE04", - 'room': "D06Z01S22"}, - {'name': "AR: Lady of the Six Sorrows", - 'game_id': "Lady[D06Z01S24]", - 'room': "D06Z01S24"}, - {'name': "AR: Upper east shaft ledge", - 'game_id': "CO40", - 'room': "D06Z01S15"}, - {'name': "AR: Mea Culpa altar", - 'game_id': "Sword[D06Z01S11]", - 'room': "D06Z01S11"}, - {'name': "AR: Crisanta of the Wrapped Agony", - 'game_id': "BS16", - 'room': "D06Z01S25"}, + # Wasteland of the Buried Churches + "RB04": "WotBC: Lower log path", + "CO14": "WotBC: Hidden alcove", + "CO36": "WotBC: Outside ledge", + "RESCUED_CHERUB_10": "WotBC: Outside Child of Moonlight", + "QI06": "WotBC: Under broken bridge", + "RB20": "WotBC: 3rd meeting with Redento", + "HE02": "WotBC: Cliffside statue", + "RESCUED_CHERUB_38": "WotBC: Cliffside Child of Moonlight", - # Bridge of the Three Cavalries - {'name': "BotTC: Esdras, of the Anointed Legion", - 'game_id': "BS12", - 'room': "D08Z01S01"}, - {'name': "BotTC: Esdras' gift", - 'game_id': "PR09", - 'room': "D08Z01S01"}, - {'name': "BotTC: Inside giant statue", - 'game_id': "HE101", - 'room': "D08Z01S02"}, + # Mercy Dreams + "CO30": "MD: First area hidden wall", + "CO03": "MD: Second area ledge", + "RESCUED_CHERUB_09": "MD: Second area Child of Moonlight", + "PR01": "MD: Second area trapped chest", + "RB17": "MD: First red candle", + "QI48": "MD: Third area hidden room", + "CO21": "MD: Behind gate to TSC", + "CO38": "MD: Sliding challenge", + "RESCUED_CHERUB_33": "MD: Cave Child of Moonlight", + "BS01": "MD: Ten Piedad", + "QI38": "MD: Visage of Attrition", + "QI58": "MD: Shop item 1", + "RB05": "MD: Shop item 2", + "RB09": "MD: Shop item 3", - # Brotherhood of the Silent Sorrow - {'name': "BotSS: Starting room Child of Moonlight", - 'game_id': "RESCUED_CHERUB_06", - 'room': "D17Z01S01"}, - {'name': "BotSS: Starting room ledge", - 'game_id': "RB204", - 'room': "D17Z01S01"}, - {'name': "BotSS: Chamber of the Eldest Brother", - 'game_id': "RE01", - 'room': "D17BZ01S01"}, - {'name': "BotSS: Mea Culpa altar", - 'game_id': "Sword[D17Z01S08]", - 'room': "D17Z01S08"}, - {'name': "BotSS: Platforming gauntlet", - 'game_id': "CO25", - 'room': "D17BZ02S01"}, - {'name': "BotSS: Outside church", - 'game_id': "PR203", - 'room': "D17Z01S14"}, - {'name': "BotSS: Esdras' final gift", - 'game_id': "QI204", - 'room': "D17Z01S15"}, - {'name': "BotSS: Crisanta's gift", - 'game_id': "QI301", - 'room': "D17Z01S15"}, - {'name': "BotSS: Warden of the Silent Sorrow", - 'game_id': "BS13", - 'room': "D17Z01S11"}, - - # Convent of Our Lady of the Charred Visage - {'name': "CoOLotCV: Snowy window ledge", - 'game_id': "CO05", - 'room': "D02Z03S03"}, - {'name': "CoOLotCV: Center enemy lineup", - 'game_id': "CO15", - 'room': "D02Z03S07"}, - {'name': "CoOLotCV: Center miasma room", - 'game_id': "RB08", - 'room': "D02Z03S05"}, - {'name': "CoOLotCV: Lower west statue", - 'game_id': "HE03", - 'room': "D02Z03S12"}, - {'name': "CoOLotCV: Lady of the Six Sorrows", - 'game_id': "Lady[D02Z03S15]", - 'room': "D02Z03S15"}, - {'name': "CoOLotCV: Mea Culpa altar", - 'game_id': "Sword[D02Z03S13]", - 'room': "D02Z03S13"}, - {'name': "CoOLotCV: First blue candle", - 'game_id': "RB24", - 'room': "D02Z03S17"}, - {'name': "CoOLotCV: Outside pathway", - 'game_id': "RB107", - 'room': "D02Z03S23"}, - {'name': "CoOLotCV: Fountain of burning oil", - 'game_id': "QI57", - 'room': "D02Z03S21"}, - {'name': "CoOLotCV: Our Lady of the Charred Visage", - 'game_id': "BS03", - 'room': "D02Z03S20"}, - {'name': "CoOLotCV: Visage of Compunction", - 'game_id': "QI40", - 'room': "D02Z03S21"}, - {'name': "CoOLotCV: Mask room", - 'game_id': "QI61", - 'room': "D02Z03S19"}, + # Desecrated Cistern + "CO09": "DC: Shortcut to WotBC", + "QI67": "DC: Hidden alcove near fountain", + "PR16": "DC: Upper east tunnel chest", + "RESCUED_CHERUB_13": "DC: Upper east Child of Moonlight", + "Oil[D01Z05S07]": "DC: Oil of the Pilgrims", + "QI12": "DC: Behind gate in miasma room", + "RESCUED_CHERUB_14": "DC: Child of Moonlight, miasma room", + "QI45": "DC: Lower east tunnel chest", + "RESCUED_CHERUB_12": "DC: Child of Moonlight, behind pillar", + "RESCUED_CHERUB_11": "DC: Child of Moonlight, above water", + "CO41": "DC: Behind sewage drips", + "CO32": "DC: High ledge near elevator shaft", + "RESCUED_CHERUB_15": "DC: Top of elevator Child of Moonlight", + "Lady[D01Z05S22]": "DC: Lady of the Six Sorrows, from MD", + "QI75": "DC: Chalice room", + "Sword[D01Z05S24]": "DC: Mea culpa altar", + "CO44": "DC: Elevator shaft ledge", + "RESCUED_CHERUB_22": "DC: Elevator shaft Child of Moonlight", + "Lady[D01Z05S26]": "DC: Lady of the Six Sorrows, elevator shaft", + "RB03": "DC: Shroud puzzle", - # Deambulatory of His Holiness - {'name': "DoHH: Viridiana's gift", - 'game_id': "PR08", - 'room': "D07Z01S01"}, + # Petrous + "QI101": "Petrous: Temple entrance", - # Desecrated Cistern - {'name': "DC: Lady of the Six Sorrows, from MD", - 'game_id': "Lady[D01Z05S22]", - 'room': "D01Z05S22"}, - {'name': "DC: Behind sewage drips", - 'game_id': "CO41", - 'room': "D01Z05S15"}, - {'name': "DC: Child of Moonlight, above water", - 'game_id': "RESCUED_CHERUB_11", - 'room': "D01Z05S14"}, - {'name': "DC: Lower east tunnel chest", - 'game_id': "QI45", - 'room': "D01Z05S11"}, - {'name': "DC: Upper east tunnel chest", - 'game_id': "PR16", - 'room': "D01Z05S06"}, - {'name': "DC: Upper east Child of Moonlight", - 'game_id': "RESCUED_CHERUB_13", - 'room': "D01Z05S06"}, - {'name': "DC: Hidden alcove near fountain", - 'game_id': "QI67", - 'room': "D01Z05S05"}, - {'name': "DC: Shortcut to WotBC", - 'game_id': "CO09", - 'room': "D01Z05S05"}, - {'name': "DC: Oil of the Pilgrims", - 'game_id': "Oil[D01Z05S07]", - 'room': "D01Z05S07"}, - {'name': "DC: Child of Moonlight, miasma room", - 'game_id': "RESCUED_CHERUB_14", - 'room': "D01Z05S08"}, - {'name': "DC: Behind gate in miasma room", - 'game_id': "QI12", - 'room': "D01Z05S08"}, - {'name': "DC: Child of Moonlight, behind pillar", - 'game_id': "RESCUED_CHERUB_12", - 'room': "D01Z05S13"}, - {'name': "DC: High ledge near elevator shaft", - 'game_id': "CO32", - 'room': "D01Z05S17"}, - {'name': "DC: Shroud puzzle", - 'game_id': "RB03", - 'room': "D01BZ05S01"}, - {'name': "DC: Chalice room", - 'game_id': "QI75", - 'room': "D01Z05S23"}, - {'name': "DC: Mea Culpa altar", - 'game_id': "Sword[D01Z05S24]", - 'room': "D01Z05S24"}, - {'name': "DC: Lady of the Six Sorrows, elevator shaft", - 'game_id': "Lady[D01Z05S26]", - 'room': "D01Z05S26"}, - {'name': "DC: Top of elevator Child of Moonlight", - 'game_id': "RESCUED_CHERUB_15", - 'room': "D01Z05S20"}, - {'name': "DC: Elevator shaft Child of Moonlight", - 'game_id': "RESCUED_CHERUB_22", - 'room': "D01Z05S25"}, - {'name': "DC: Elevator shaft ledge", - 'game_id': "CO44", - 'room': "D01Z05S25"}, + # Where Olive Trees Wither + "CO11": "WOTW: Below Prie Dieu", + "QI59": "WOTW: Gemino's gift", + "RB10": "WOTW: Gemino's reward", + "RESCUED_CHERUB_23": "WOTW: Upper east Child of Moonlight", + "QI20": "WOTW: Entrance to tomb", + "QI68": "WOTW: Gift for the tomb", + "QI07": "WOTW: Death run", + "CO19": "WOTW: Underground ledge", + "RESCUED_CHERUB_27": "WOTW: Underground Child of Moonlight", + "PR04": "WOTW: Underground tomb", + "HE05": "WOTW: Upper east statue", - # Echoes of Salt - {'name': "EoS: Lantern jump near MotED", - 'game_id': "RB108", - 'room': "D20Z01S02"}, - {'name': "EoS: Lantern jump near elevator", - 'game_id': "RB202", - 'room': "D20Z01S09"}, - # Graveyard of the Peaks - {'name': "GotP: Shop cave Child of Moonlight", - 'game_id': "RESCUED_CHERUB_31", - 'room': "D02Z02S08"}, - {'name': "GotP: Shop cave hidden hole", - 'game_id': "CO42", - 'room': "D02Z02S08"}, - {'name': "GotP: Shop item 1", - 'game_id': "QI11", - 'room': "D02BZ02S01"}, - {'name': "GotP: Shop item 2", - 'game_id': "RB37", - 'room': "D02BZ02S01"}, - {'name': "GotP: Shop item 3", - 'game_id': "RB02", - 'room': "D02BZ02S01"}, - {'name': "GotP: Confessor Dungeon room", - 'game_id': "RB38", - 'room': "D02Z02S06"}, - {'name': "GotP: Elevator shaft Child of Moonlight", - 'game_id': "RESCUED_CHERUB_26", - 'room': "D02Z02S11"}, - {'name': "GotP: Elevator shaft ledge", - 'game_id': "QI53", - 'room': "D02Z02S11"}, - {'name': "GotP: Lady of the Six Sorrows", - 'game_id': "Lady[D02Z02S12]", - 'room': "D02Z02S12"}, - {'name': "GotP: Self sacrifice statue", - 'game_id': "HE11", - 'room': "D02Z02S13"}, - {'name': "GotP: Lower east shaft", - 'game_id': "QI46", - 'room': "D02Z02S03"}, - {'name': "GotP: Center east shaft", - 'game_id': "CO29", - 'room': "D02Z02S03"}, - {'name': "GotP: Upper east shaft", - 'game_id': "QI08", - 'room': "D02Z02S03"}, - {'name': "GotP: East cliffside", - 'game_id': "RB106", - 'room': "D02Z02S14"}, - {'name': "GotP: West shaft Child of Moonlight", - 'game_id': "RESCUED_CHERUB_25", - 'room': "D02Z02S04"}, - {'name': "GotP: Lower west shaft", - 'game_id': "RB32", - 'room': "D02Z02S04"}, - {'name': "GotP: Upper west shaft", - 'game_id': "CO01", - 'room': "D02Z02S04"}, - {'name': "GotP: Center shaft Child of Moonlight", - 'game_id': "RESCUED_CHERUB_24", - 'room': "D02Z02S02"}, - {'name': "GotP: Center shaft ledge", - 'game_id': "RB15", - 'room': "D02Z02S05"}, - {'name': "GotP: Oil of the Pilgrims", - 'game_id': "Oil[D02Z02S10]", - 'room': "D02Z02S10"}, - {'name': "GotP: Amanecida of the Bejeweled Arrow", - 'game_id': "Amanecida[D02Z02S14]", - 'room': "D02Z02S14"}, - - # Grievance Ascends - {'name': "GA: Lower west ledge", - 'game_id': "QI44", - 'room': "D03Z03S02"}, - {'name': "GA: Miasma room treasure", - 'game_id': "RE07", - 'room': "D03Z03S06"}, - {'name': "GA: Miasma room Child of Moonlight", - 'game_id': "RESCUED_CHERUB_19", - 'room': "D03Z03S06"}, - {'name': "GA: Miasma room floor", - 'game_id': "CO12", - 'room': "D03Z03S06"}, - {'name': "GA: Oil of the Pilgrims", - 'game_id': "Oil[D03Z03S13]", - 'room': "D03Z03S13"}, - {'name': "GA: End of blood bridge", - 'game_id': "QI10", - 'room': "D03Z03S08"}, - {'name': "GA: Blood bridge Child of Moonlight", - 'game_id': "RESCUED_CHERUB_21", - 'room': "D03Z03S08"}, - {'name': "GA: Lower east Child of Moonlight", - 'game_id': "RESCUED_CHERUB_20", - 'room': "D03Z03S09"}, - {'name': "GA: Altasgracias' gift", - 'game_id': "QI13", - 'room': "D03Z03S10"}, - {'name': "GA: Empty giant egg", - 'game_id': "RB06", - 'room': "D03Z03S10"}, - {'name': "GA: Tres Angustias", - 'game_id': "BS04", - 'room': "D03Z03S15"}, - {'name': "GA: Visage of Contrition", - 'game_id': "QI39", - 'room': "D03Z03S16"}, - - # Hall of the Dawning - {'name': "HotD: Mirror room", - 'game_id': "QI105", - 'room': "D08Z03S01"}, - {'name': "HotD: Laudes, the First of the Amanecidas", - 'game_id': "LaudesBossTrigger[30000]", - 'room': "D08Z03S03"}, - + "RESCUED_CHERUB_24": "GotP: Center shaft Child of Moonlight", + "QI46": "GotP: Lower east shaft", + "CO29": "GotP: Center east shaft", + "QI08": "GotP: Upper east shaft", + "RB32": "GotP: Lower west shaft", + "CO01": "GotP: Upper west shaft", + "RESCUED_CHERUB_25": "GotP: West shaft Child of Moonlight", + "RB15": "GotP: Center shaft ledge", + "RB38": "GotP: Confessor Dungeon room", + "CO42": "GotP: Shop cave hidden hole", + "RESCUED_CHERUB_31": "GotP: Shop cave Child of Moonlight", + "Oil[D02Z02S10]": "GotP: Oil of the Pilgrims", + "QI53": "GotP: Elevator shaft ledge", + "RESCUED_CHERUB_26": "GotP: Elevator shaft Child of Moonlight", + "Lady[D02Z02S12]": "GotP: Lady of the Six Sorrows", + "HE11": "GotP: Self sacrifice statue", + "RB106": "GotP: East cliffside", + "Amanecida[D02Z02S14]": "GotP: Amanecida of the Bejeweled Arrow", + "QI11": "GotP: Shop item 1", + "RB37": "GotP: Shop item 2", + "RB02": "GotP: Shop item 3", + + # Convent of Our Lady of the Charred Visage + "CO05": "CoOLotCV: Snowy window ledge", + "RB08": "CoOLotCV: Center miasma room", + "CO15": "CoOLotCV: Center enemy lineup", + "HE03": "CoOLotCV: Lower west statue", + "Sword[D02Z03S13]": "CoOLotCV: Mea Culpa altar", + "Lady[D02Z03S15]": "CoOLotCV: Lady of the Six Sorrows", + "RB24": "CoOLotCV: First blue candle", + "QI61": "CoOLotCV: Mask room", + "BS03": "CoOLotCV: Our Lady of the Charred Visage", + "QI40": "CoOLotCV: Visage of Compunction", + "QI57": "CoOLotCV: Fountain of burning oil", + "RB107": "CoOLotCV: Outside pathway", + + # Mountains of the Endless Dusk + "CO13": "MotED: Under entrance to DC", + "QI47": "MotED: Platform above chasm", + "RB22": "MotED: 1st meeting with Redento", + "RESCUED_CHERUB_16": "MotED: Child of Moonlight, above chasm", + "Amanecida[D03Z01S03]": "MotED: Amanecida of the Golden Blades", + "QI63": "MotED: Blood platform alcove", + 'RB13': "MotED: Perpetva", + "QI14": "MotED: Egg hatching", + # Jondo - {'name': "Jondo: Upper east ledge", - 'game_id': "CO08", - 'room': "D03Z02S01"}, - {'name': "Jondo: Upper east chest", - 'game_id': "PR10", - 'room': "D03Z02S01"}, - {'name': "Jondo: Lower east under chargers", - 'game_id': "CO33", - 'room': "D03Z02S04"}, - {'name': "Jondo: Lower east bell trap", - 'game_id': "QI19", - 'room': "D03Z02S06"}, - {'name': "Jondo: Upper east Child of Moonlight", - 'game_id': "RESCUED_CHERUB_18", - 'room': "D03Z02S05"}, - {'name': "Jondo: Spike tunnel Child of Moonlight", - 'game_id': "RESCUED_CHERUB_37", - 'room': "D03Z02S11"}, - {'name': "Jondo: Spike tunnel statue", - 'game_id': "HE06", - 'room': "D03Z02S11"}, - {'name': "Jondo: Spike tunnel cave", - 'game_id': "QI103", - 'room': "D03Z02S15"}, - {'name': "Jondo: Lower west lift alcove", - 'game_id': "CO07", - 'room': "D03Z02S07"}, - {'name': "Jondo: Lower west bell alcove", - 'game_id': "QI41", - 'room': "D03Z02S08"}, - {'name': "Jondo: Upper west bell puzzle", - 'game_id': "QI52", - 'room': "D03Z02S12"}, - {'name': "Jondo: Upper west tree root", - 'game_id': "RB28", - 'room': "D03Z02S13"}, - {'name': "Jondo: Upper west Child of Moonlight", - 'game_id': "RESCUED_CHERUB_17", - 'room': "D03Z02S10"}, - - # Knot of the Three Words - {'name': "KotTW: Gift from the Traitor", - 'game_id': "HE201", - 'room': "D04Z03S02"}, - - # Library of the Negated Words - {'name': "LotNW: Platform room Child of Moonlight", - 'game_id': "RESCUED_CHERUB_01", - 'room': "D05Z01S04"}, - {'name': "LotNW: Platform room ledge", - 'game_id': "CO18", - 'room': "D05Z01S04"}, - {'name': "LotNW: Root ceiling platform", - 'game_id': "CO22", - 'room': "D05Z01S05"}, - {'name': "LotNW: Hidden floor", - 'game_id': "QI50", - 'room': "D05Z01S05"}, - {'name': "LotNW: Miasma hallway chest", - 'game_id': "RB31", - 'room': "D05Z01S06"}, - {'name': "LotNW: Lady of the Six Sorrows", - 'game_id': "Lady[D05Z01S14]", - 'room': "D05Z01S14"}, - {'name': "LotNW: Bone puzzle", - 'game_id': "PR15", - 'room': "D05Z01S18"}, - {'name': "LotNW: Lowest west upper ledge", - 'game_id': "CO28", - 'room': "D05Z01S11"}, - {'name': "LotNW: Platform puzzle chest", - 'game_id': "PR07", - 'room': "D05Z01S10"}, - {'name': "LotNW: Lowest west center ledge", - 'game_id': "RB30", - 'room': "D05Z01S11"}, - {'name': "LotNW: Lowest west Child of Moonlight", - 'game_id': "RESCUED_CHERUB_02", - 'room': "D05Z01S11"}, - {'name': "LotNW: Oil of the Pilgrims", - 'game_id': "Oil[D05Z01S19]", - 'room': "D05Z01S19"}, - {'name': "LotNW: Elevator Child of Moonlight", - 'game_id': "RESCUED_CHERUB_32", - 'room': "D05Z01S21"}, - {'name': "LotNW: Mask room", - 'game_id': "QI62", - 'room': "D05Z01S15"}, - {'name': "LotNW: Mea Culpa altar", - 'game_id': "Sword[D05Z01S13]", - 'room': "D05Z01S13"}, - {'name': "LotNW: Silence for Diosdado", - 'game_id': "RB203", - 'room': "D05Z01S11"}, - {'name': "LotNW: Twisted wood hidden wall", - 'game_id': "RB301", - 'room': "D05BZ01S01"}, + "CO08": "Jondo: Upper east ledge", + "PR10": "Jondo: Upper east chest", + "CO33": "Jondo: Lower east under chargers", + "RESCUED_CHERUB_18": "Jondo: Upper east Child of Moonlight", + "QI19": "Jondo: Lower east bell trap", + "CO07": "Jondo: Lower west lift alcove", + "QI41": "Jondo: Lower west bell alcove", + "RESCUED_CHERUB_17": "Jondo: Upper west Child of Moonlight", + "HE06": "Jondo: Spike tunnel statue", + "RESCUED_CHERUB_37": "Jondo: Spike tunnel Child of Moonlight", + "QI52": "Jondo: Upper west bell puzzle", + "RB28": "Jondo: Upper west tree root", + "QI103": "Jondo: Spike tunnel cave", - # Mercy Dreams - {'name': "MD: First area hidden wall", - 'game_id': "CO30", - 'room': "D01Z04S05"}, - {'name': "MD: Second area trapped chest", - 'game_id': "PR01", - 'room': "D01Z04S07"}, - {'name': "MD: Second area ledge", - 'game_id': "CO03", - 'room': "D01Z04S06"}, - {'name': "MD: Second area Child of Moonlight", - 'game_id': "RESCUED_CHERUB_09", - 'room': "D01Z04S06"}, - {'name': "MD: First red candle", - 'game_id': "RB17", - 'room': "D01Z04S08"}, - {'name': "MD: Shop item 1", - 'game_id': "QI58", - 'room': "D01BZ02S01"}, - {'name': "MD: Shop item 2", - 'game_id': "RB05", - 'room': "D01BZ02S01"}, - {'name': "MD: Shop item 3", - 'game_id': "RB09", - 'room': "D01BZ02S01"}, - {'name': "MD: Third area hidden room", - 'game_id': "QI48", - 'room': "D01Z04S11"}, - {'name': "MD: Sliding challenge", - 'game_id': "CO38", - 'room': "D01Z04S14"}, - {'name': "MD: Ten Piedad", - 'game_id': "BS01", - 'room': "D01Z04S18"}, - {'name': "MD: Visage of Attrition", - 'game_id': "QI38", - 'room': "D01Z04S19"}, - {'name': "MD: Cave Child of Moonlight", - 'game_id': "RESCUED_CHERUB_33", - 'room': "D01Z04S16"}, - {'name': "MD: Behind gate to TSC", - 'game_id': "CO21", - 'room': "D01Z04S13"}, + # Grievance Ascends + "QI44": "GA: Lower west ledge", + "CO12": "GA: Miasma room floor", + "RE07": "GA: Miasma room treasure", + "RESCUED_CHERUB_19": "GA: Miasma room Child of Moonlight", + "QI10": "GA: End of blood bridge", + "RESCUED_CHERUB_21": "GA: Blood bridge Child of Moonlight", + "RESCUED_CHERUB_20": "GA: Lower east Child of Moonlight", + "QI13": "GA: Altasgracias' gift", + "RB06": "GA: Empty giant egg", + "Oil[D03Z03S13]": "GA: Oil of the Pilgrims", + "BS04": "GA: Tres Angustias", + "QI39": "GA: Visage of Contrition", + + # Patio of the Silent Steps + "CO23": "PotSS: First area ledge", + "RESCUED_CHERUB_35": "PotSS: First area Child of Moonlight", + "RB14": "PotSS: Second area ledge", + "QI37": "PotSS: Third area lower ledge", + "CO39": "PotSS: Third area upper ledge", + "RESCUED_CHERUB_28": "PotSS: Third area Child of Moonlight", + "RB21": "PotSS: 4th meeting with Redento", + "Amanecida[D04Z01S04]": "PotSS: Amanecida of the Chiselled Steel", + "QI102": "PotSS: Climb to WotHP", # Mother of Mothers - {'name': "MoM: Oil of the Pilgrims", - 'game_id': "Oil[D04Z02S14]", - 'room': "D04Z02S14"}, - {'name': "MoM: Upper east ledge", - 'game_id': "RB33", - 'room': "D04Z02S07"}, - {'name': "MoM: East chandelier platform", - 'game_id': "CO35", - 'room': "D04Z02S07"}, - {'name': "MoM: Lower west Child of Moonlight", - 'game_id': "RESCUED_CHERUB_30", - 'room': "D04Z02S01"}, - {'name': "MoM: Upper west floor", - 'game_id': "CO17", - 'room': "D04Z02S02"}, - {'name': "MoM: Redento's treasure", - 'game_id': "RE03", - 'room': "D04BZ02S01"}, - {'name': "MoM: Final meeting with Redento", - 'game_id': "QI54", - 'room': "D04BZ02S01"}, - {'name': "MoM: Giant chandelier statue", - 'game_id': "HE01", - 'room': "D04Z02S16"}, - {'name': "MoM: Outside Cleofas' room", - 'game_id': "CO34", - 'room': "D04Z02S06"}, - {'name': "MoM: Upper center floor", - 'game_id': "CO20", - 'room': "D04Z02S11"}, - {'name': "MoM: Upper center Child of Moonlight", - 'game_id': "RESCUED_CHERUB_29", - 'room': "D04Z02S11"}, - {'name': "MoM: Mea Culpa altar", - 'game_id': "Sword[D04Z02S12]", - 'room': "D04Z02S12"}, - {'name': "MoM: Melquiades, The Exhumed Archbishop", - 'game_id': "BS05", - 'room': "D04Z02S22"}, - {'name': "MoM: Mask room", - 'game_id': "QI60", - 'room': "D04Z02S15"}, + "RE402": "MoM: Western room ledge", + "RESCUED_CHERUB_30": "MoM: Lower west Child of Moonlight", + "CO17": "MoM: Upper west floor", + "CO34": "MoM: Outside Cleofas' room", + "CO35": "MoM: East chandelier platform", + "RB33": "MoM: Upper east ledge", + "CO20": "MoM: Upper center floor", + "RESCUED_CHERUB_29": "MoM: Upper center Child of Moonlight", + "Sword[D04Z02S12]": "MoM: Mea Culpa altar", + "Oil[D04Z02S14]": "MoM: Oil of the Pilgrims", + "QI60": "MoM: Mask room", + "HE01": "MoM: Giant chandelier statue", + "BS05": "MoM: Melquiades, The Exhumed Archbishop", + "RE03": "MoM: Redento's treasure", + "QI54": "MoM: Final meeting with Redento", - # Mountains of the Endless Dusk - {'name': "MotED: Under entrance to DC", - 'game_id': "CO13", - 'room': "D03Z01S01"}, - {'name': "MotED: Perpetva", - 'game_id': "RB13", - 'room': "D03Z01S06"}, - {'name': "MotED: Child of Moonlight, above chasm", - 'game_id': "RESCUED_CHERUB_16", - 'room': "D03Z01S03"}, - {'name': "MotED: Platform above chasm", - 'game_id': "QI47", - 'room': "D03Z01S03"}, - {'name': "MotED: 1st meeting with Redento", - 'game_id': "RB22", - 'room': "D03Z01S03"}, - {'name': "MotED: Blood platform alcove", - 'game_id': "QI63", - 'room': "D03Z01S04"}, - {'name': "MotED: Egg hatching", - 'game_id': "QI14", - 'room': "D03Z01S06"}, - {'name': "MotED: Amanecida of the Golden Blades", - 'game_id': "Amanecida[D03Z01S03]", - 'room': "D03Z01S03"}, + # Knot of the Three Words + "HE201": "KotTW: Gift from the Traitor", - # Mourning and Havoc - {'name': "MaH: West chest", - 'game_id': "PR202", - 'room': "D20Z02S11"}, - {'name': "MaH: Upper east chest", - 'game_id': "RB201", - 'room': "D20Z02S02"}, - {'name': "MaH: Sierpes' eye", - 'game_id': "QI202", - 'room': "D20Z02S08"}, - {'name': "MaH: Sierpes", - 'game_id': "BossTrigger[5000]", - 'room': "D20Z02S08"}, - - # Patio of the Silent Steps - {'name': "PotSS: First area Child of Moonlight", - 'game_id': "RESCUED_CHERUB_35", - 'room': "D04Z01S01"}, - {'name': "PotSS: First area ledge", - 'game_id': "CO23", - 'room': "D04Z01S01"}, - {'name': "PotSS: Second area ledge", - 'game_id': "RB14", - 'room': "D04Z01S02"}, - {'name': "PotSS: Third area Child of Moonlight", - 'game_id': "RESCUED_CHERUB_28", - 'room': "D04Z01S03"}, - {'name': "PotSS: Third area lower ledge", - 'game_id': "QI37", - 'room': "D04Z01S03"}, - {'name': "PotSS: Third area upper ledge", - 'game_id': "CO39", - 'room': "D04Z01S03"}, - {'name': "PotSS: Climb to WotHP", - 'game_id': "QI102", - 'room': "D04Z01S06"}, - {'name': "PotSS: 4th meeting with Redento", - 'game_id': "RB21", - 'room': "D04Z01S04"}, - {'name': "PotSS: Amanecida of the Chiselled Steel", - 'game_id': "Amanecida[D04Z01S04]", - 'room': "D04Z01S04"}, + # All the Tears of the Sea + "PR201": "AtTotS: Miriam's gift", - # Petrous - {'name': "Petrous: Temple entrance", - 'game_id': "QI101", - 'room': "D01Z06S01"}, + # Library of the Negated Words + "CO18": "LotNW: Platform room ledge", + "RESCUED_CHERUB_01": "LotNW: Platform room Child of Moonlight", + "QI50": "LotNW: Hidden floor", + "CO22": "LotNW: Root ceiling platform", + "RB31": "LotNW: Miasma hallway chest", + "PR07": "LotNW: Platform puzzle chest", + "RB203": "LotNW: Silence for Diosdado", + "CO28": "LotNW: Lowest west upper ledge", + "RB30": "LotNW: Lowest west center ledge", + "RESCUED_CHERUB_02": "LotNW: Lowest west Child of Moonlight", + "Sword[D05Z01S13]": "LotNW: Mea Culpa altar", + "Lady[D05Z01S14]": "LotNW: Lady of the Six Sorrows", + "QI62": "LotNW: Mask room", + "PR15": "LotNW: Bone puzzle", + "Oil[D05Z01S19]": "LotNW: Oil of the Pilgrims", + "RESCUED_CHERUB_32": "LotNW: Elevator Child of Moonlight", + "RB301": "LotNW: Twisted wood hidden wall", - # The Resting Place of the Sister - {'name': "TRPotS: Perpetva's shrine", - 'game_id': "QI203", - 'room': "D20Z03S01"}, - # The Sleeping Canvases - {'name': "TSC: Painting ladder ledge", - 'game_id': "QI64", - 'room': "D05Z02S02"}, - {'name': "TSC: Candle wax puzzle", - 'game_id': "HE07", - 'room': "D05Z02S08"}, - {'name': "TSC: Shop item 1", - 'game_id': "RB12", - 'room': "D05BZ02S01"}, - {'name': "TSC: Shop item 2", - 'game_id': "QI49", - 'room': "D05BZ02S01"}, - {'name': "TSC: Shop item 3", - 'game_id': "QI71", - 'room': "D05BZ02S01"}, - {'name': "TSC: Swinging blade tunnel", - 'game_id': "QI104", - 'room': "D05Z02S15"}, - {'name': "TSC: Exposito, Scion of Abjuration", - 'game_id': "BS06", - 'room': "D05Z02S14"}, - {'name': "TSC: Under elevator shaft", - 'game_id': "CO31", - 'room': "D05Z02S11"}, - {'name': "TSC: Jocinero's 1st reward", - 'game_id': "RE05", - 'room': "D05Z02S10"}, - {'name': "TSC: Jocinero's final reward", - 'game_id': "PR05", - 'room': "D05Z02S10"}, + "QI64": "TSC: Painting ladder ledge", + "HE07": "TSC: Candle wax puzzle", + "RE05": "TSC: Jocinero's 1st reward", + "PR05": "TSC: Jocinero's final reward", + "CO31": "TSC: Under elevator shaft", + "BS06": "TSC: Exposito, Scion of Abjuration", + "QI104": "TSC: Swinging blade tunnel", + "RB12": "TSC: Shop item 1", + "QI49": "TSC: Shop item 2", + "QI71": "TSC: Shop item 3", - # The Holy Line - {'name': "THL: Deogracias' gift", - 'game_id': "QI31", - 'room': "D01Z01S07"}, - {'name': "THL: Hanging skeleton", - 'game_id': "PR14", - 'room': "D01Z01S02"}, - {'name': "THL: Across blood platforms", - 'game_id': "RB07", - 'room': "D01Z01S02"}, - {'name': "THL: Child of Moonlight", - 'game_id': "RESCUED_CHERUB_07", - 'room': "D01Z01S03"}, - {'name': "THL: Underground ledge", - 'game_id': "CO04", - 'room': "D01Z01S03"}, - {'name': "THL: Underground chest", - 'game_id': "QI55", - 'room': "D01Z01S03"}, + # Archcathedral Rooftops + "QI02": "AR: First soldier fight", + "QI03": "AR: Second soldier fight", + "QI04": "AR: Third soldier fight", + "Sword[D06Z01S11]": "AR: Mea Culpa altar", + "CO06": "AR: Upper west shaft ledge", + "PR12": "AR: Upper west shaft chest", + "RESCUED_CHERUB_36": "AR: Upper west shaft Child of Moonlight", + "CO40": "AR: Upper east shaft ledge", + "HE04": "AR: Statue near MoM", + "Lady[D06Z01S24]": "AR: Lady of the Six Sorrows", + "BS16": "AR: Crisanta of the Wrapped Agony", + + # Deambulatory of His Holiness + "PR08": "DoHH: Viridiana's gift", + + # Bridge of the Three Cavalries + "BS12": "BotTC: Esdras, of the Anointed Legion", + "PR09": "BotTC: Esdras' gift", + "HE101": "BotTC: Inside giant statue", + + # Hall of the Dawning + "QI105": "HotD: Mirror room", + "LaudesBossTrigger[30000]": "HotD: Laudes, the First of the Amanecidas", # Wall of the Holy Prohibitions - {'name': "WotHP: Upper east room, lift puzzle", - 'game_id': "RB11", - 'room': "D09Z01S02"}, - {'name': "WotHP: Upper east room, center cell ledge", - 'game_id': "CO10", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Upper east room, center cell floor", - 'game_id': "QI69", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Upper east room, top bronze cell", - 'game_id': "RESCUED_CHERUB_03", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Upper east room, top silver cell", - 'game_id': "CO24", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Upper east room, center gold cell", - 'game_id': "QI51", - 'room': "D09Z01S02"}, - {'name': "WotHP: Upper west room, center gold cell", - 'game_id': "CO26", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Lower west room, bottom gold cell", - 'game_id': "CO02", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Upper west room, top silver cell", - 'game_id': "RESCUED_CHERUB_34", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Lower west room, top ledge", - 'game_id': "RB16", - 'room': "D09Z01S09"}, - {'name': "WotHP: Lower east room, hidden ledge", - 'game_id': "CO27", - 'room': "D09Z01S10"}, - {'name': "WotHP: Lower east room, bottom silver cell", - 'game_id': "RESCUED_CHERUB_04", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Lower east room, top bronze cell", - 'game_id': "QI70", - 'room': "D09Z01S10"}, - {'name': "WotHP: Lower east room, top silver cell", - 'game_id': "CO37", - 'room': "D09BZ01S01"}, - {'name': "WotHP: Outside Child of Moonlight", - 'game_id': "RESCUED_CHERUB_05", - 'room': "D09Z01S06"}, - {'name': "WotHP: Oil of the Pilgrims", - 'game_id': "Oil[D09Z01S12]", - 'room': "D09Z01S12"}, - {'name': "WotHP: Quirce, Returned By The Flames", - 'game_id': "BS14", - 'room': "D09Z01S03"}, - {'name': "WotHP: Collapsing floor ledge", - 'game_id': "QI72", - 'room': "D09Z01S08"}, - {'name': "WotHP: Amanecida of the Molten Thorn", - 'game_id': "Amanecida[D09Z01S01]", - 'room': "D09Z01S01"}, + "Amanecida[D09Z01S01]": "WotHP: Amanecida of the Molten Thorn", + "QI51": "WotHP: Upper east room, center gold cell", + "RB11": "WotHP: Upper east room, lift puzzle", + "BS14": "WotHP: Quirce, Returned By The Flames", + "RESCUED_CHERUB_05": "WotHP: Outside Child of Moonlight", + "QI72": "WotHP: Collapsing floor ledge", + "RB16": "WotHP: Lower west room, top ledge", + "QI70": "WotHP: Lower east room, top bronze cell", + "CO27": "WotHP: Lower east room, hidden ledge", + "Oil[D09Z01S12]": "WotHP: Oil of the Pilgrims", + "CO10": "WotHP: Upper east room, center cell ledge", + "QI69": "WotHP: Upper east room, center cell floor", + "RESCUED_CHERUB_03": "WotHP: Upper east room, top bronze cell", + "CO24": "WotHP: Upper east room, top silver cell", + "RESCUED_CHERUB_34": "WotHP: Upper west room, top silver cell", + "CO26": "WotHP: Upper west room, center gold cell", + "CO02": "WotHP: Lower west room, bottom gold cell", + "CO37": "WotHP: Lower east room, top silver cell", + "RESCUED_CHERUB_04": "WotHP: Lower east room, bottom silver cell", - # Wasteland of the Buried Churches - {'name': "WotBC: Lower log path", - 'game_id': "RB04", - 'room': "D01Z03S01"}, - {'name': "WotBC: Hidden alcove", - 'game_id': "CO14", - 'room': "D01Z03S02"}, - {'name': "WotBC: Outside ledge", - 'game_id': "CO36", - 'room': "D01Z03S03"}, - {'name': "WotBC: Outside Child of Moonlight", - 'game_id': "RESCUED_CHERUB_10", - 'room': "D01Z03S03"}, - {'name': "WotBC: Under broken bridge", - 'game_id': "QI06", - 'room': "D01Z03S05"}, - {'name': "WotBC: Cliffside statue", - 'game_id': "HE02", - 'room': "D01Z03S07"}, - {'name': "WotBC: Cliffside Child of Moonlight", - 'game_id': "RESCUED_CHERUB_38", - 'room': "D01Z03S07"}, - {'name': "WotBC: 3rd meeting with Redento", - 'game_id': "RB20", - 'room': "D01Z03S06"}, - - # Where Olive Trees Wither - {'name': "WOTW: Below Prie Dieu", - 'game_id': "CO11", - 'room': "D02Z01S01"}, - {'name': "WOTW: Entrance to tomb", - 'game_id': "QI20", - 'room': "D02Z01S04"}, - {'name': "WOTW: Gift for the tomb", - 'game_id': "QI68", - 'room': "D02Z01S04"}, - {'name': "WOTW: Underground tomb", - 'game_id': "PR04", - 'room': "D02Z01S08"}, - {'name': "WOTW: Underground Child of Moonlight", - 'game_id': "RESCUED_CHERUB_27", - 'room': "D02Z01S06"}, - {'name': "WOTW: Underground ledge", - 'game_id': "CO19", - 'room': "D02Z01S06"}, - {'name': "WOTW: Upper east Child of Moonlight", - 'game_id': "RESCUED_CHERUB_23", - 'room': "D02Z01S02"}, - {'name': "WOTW: Upper east statue", - 'game_id': "HE05", - 'room': "D02Z01S09"}, - {'name': "WOTW: Death run", - 'game_id': "QI07", - 'room': "D02Z01S05"}, - {'name': "WOTW: Gemino's gift", - 'game_id': "QI59", - 'room': "D02Z01S01"}, - {'name': "WOTW: Gemino's reward", - 'game_id': "RB10", - 'room': "D02Z01S01"}, + # Brotherhood of the Silent Sorrow + "RB204": "BotSS: Starting room ledge", + "RESCUED_CHERUB_06": "BotSS: Starting room Child of Moonlight", + "RE401": "BotSS: 2nd meeting with Redento", + "Sword[D17Z01S08]": "BotSS: Mea Culpa altar", + "BS13": "BotSS: Warden of the Silent Sorrow", + "PR203": "BotSS: Outside church", + "QI204": "BotSS: Esdras' final gift", + "QI301": "BotSS: Crisanta's gift", + "RE01": "BotSS: Chamber of the Eldest Brother", + "CO25": "BotSS: Platforming gauntlet", + + # Echoes of Salt + "RB108": "EoS: Lantern jump near MotED", + "RB202": "EoS: Lantern jump near elevator", - # Various - {'name': "Beginning gift", - 'game_id': "QI106", - 'room': "Misc"}, - {'name': "Second red candle", - 'game_id': "RB18", - 'room': "Misc"}, - {'name': "Third red candle", - 'game_id': "RB19", - 'room': "Misc"}, - {'name': "Second blue candle", - 'game_id': "RB25", - 'room': "Misc"}, - {'name': "Third blue candle", - 'game_id': "RB26", - 'room': "Misc"}, - {'name': "Confessor Dungeon 1 extra", - 'game_id': "Arena_NailManager[1000]", - 'room': "Misc"}, - {'name': "Confessor Dungeon 1 main", - 'game_id': "QI32", - 'room': "Misc"}, - {'name': "Confessor Dungeon 2 extra", - 'game_id': "HE10", - 'room': "Misc"}, - {'name': "Confessor Dungeon 2 main", - 'game_id': "QI33", - 'room': "Misc"}, - {'name': "Confessor Dungeon 3 extra", - 'game_id': "Arena_NailManager[3000]", - 'room': "Misc"}, - {'name': "Confessor Dungeon 3 main", - 'game_id': "QI34", - 'room': "Misc"}, - {'name': "Confessor Dungeon 4 extra", - 'game_id': "RB34", - 'room': "Misc"}, - {'name': "Confessor Dungeon 4 main", - 'game_id': "QI35", - 'room': "Misc"}, - {'name': "Confessor Dungeon 5 extra", - 'game_id': "Arena_NailManager[5000]", - 'room': "Misc"}, - {'name': "Confessor Dungeon 5 main", - 'game_id': "QI79", - 'room': "Misc"}, - {'name': "Confessor Dungeon 6 extra", - 'game_id': "RB35", - 'room': "Misc"}, - {'name': "Confessor Dungeon 6 main", - 'game_id': "QI80", - 'room': "Misc"}, - {'name': "Confessor Dungeon 7 extra", - 'game_id': "RB36", - 'room': "Misc"}, - {'name': "Confessor Dungeon 7 main", - 'game_id': "QI81", - 'room': "Misc"}, - {'name': "Defeat 1 Amanecida", - 'game_id': "QI107", - 'room': "Misc"}, - {'name': "Defeat 2 Amanecidas", - 'game_id': "QI108", - 'room': "Misc"}, - {'name': "Defeat 3 Amanecidas", - 'game_id': "QI109", - 'room': "Misc"}, - {'name': "Defeat 4 Amanecidas", - 'game_id': "QI110", - 'room': "Misc"}, - {'name': "Defeat all Amanecidas", - 'game_id': "PR101", - 'room': "Misc"}, - {'name': "Skill 1, Tier 1", - 'game_id': "COMBO_1", - 'room': "Misc"}, - {'name': "Skill 1, Tier 2", - 'game_id': "COMBO_2", - 'room': "Misc"}, - {'name': "Skill 1, Tier 3", - 'game_id': "COMBO_3", - 'room': "Misc"}, - {'name': "Skill 2, Tier 1", - 'game_id': "CHARGED_1", - 'room': "Misc"}, - {'name': "Skill 2, Tier 2", - 'game_id': "CHARGED_2", - 'room': "Misc"}, - {'name': "Skill 2, Tier 3", - 'game_id': "CHARGED_3", - 'room': "Misc"}, - {'name': "Skill 3, Tier 1", - 'game_id': "RANGED_1", - 'room': "Misc"}, - {'name': "Skill 3, Tier 2", - 'game_id': "RANGED_2", - 'room': "Misc"}, - {'name': "Skill 3, Tier 3", - 'game_id': "RANGED_3", - 'room': "Misc"}, - {'name': "Skill 4, Tier 1", - 'game_id': "VERTICAL_1", - 'room': "Misc"}, - {'name': "Skill 4, Tier 2", - 'game_id': "VERTICAL_2", - 'room': "Misc"}, - {'name': "Skill 4, Tier 3", - 'game_id': "VERTICAL_3", - 'room': "Misc"}, - {'name': "Skill 5, Tier 1", - 'game_id': "LUNGE_1", - 'room': "Misc"}, - {'name': "Skill 5, Tier 2", - 'game_id': "LUNGE_2", - 'room': "Misc"}, - {'name': "Skill 5, Tier 3", - 'game_id': "LUNGE_3", - 'room': "Misc"}, + # Mourning and Havoc + "RB201": "MaH: Upper east chest", + "BossTrigger[5000]": "MaH: Sierpes", + "QI202": "MaH: Sierpes' eye", + "PR202": "MaH: West chest", + + # The Resting Place of the Sister + "QI203": "TRPotS: Perpetva's shrine", - # Custom Items - {'name': "BotSS: 2nd meeting with Redento", - 'game_id': "RE401", - 'room': "D17Z01S04"}, - {'name': "MoM: Western room ledge", - 'game_id': "RE402", - 'room': "D04Z02S01"} -] \ No newline at end of file + # Misc + "QI106": "Beginning gift", + "RB18": "Second red candle", + "RB19": "Third red candle", + "RB25": "Second blue candle", + "RB26": "Third blue candle", + "QI107": "Defeat 1 Amanecida", + "QI108": "Defeat 2 Amanecidas", + "QI109": "Defeat 3 Amanecidas", + "QI110": "Defeat 4 Amanecidas", + "PR101": "Defeat all Amanecidas", + "QI32": "Confessor Dungeon 1 main", + "QI33": "Confessor Dungeon 2 main", + "QI34": "Confessor Dungeon 3 main", + "QI35": "Confessor Dungeon 4 main", + "QI79": "Confessor Dungeon 5 main", + "QI80": "Confessor Dungeon 6 main", + "QI81": "Confessor Dungeon 7 main", + "Arena_NailManager[1000]": "Confessor Dungeon 1 extra", + "HE10": "Confessor Dungeon 2 extra", + "Arena_NailManager[3000]": "Confessor Dungeon 3 extra", + "RB34": "Confessor Dungeon 4 extra", + "Arena_NailManager[5000]": "Confessor Dungeon 5 extra", + "RB35": "Confessor Dungeon 6 extra", + "RB36": "Confessor Dungeon 7 extra", + "COMBO_1": "Skill 1, Tier 1", + "COMBO_2": "Skill 1, Tier 2", + "COMBO_3": "Skill 1, Tier 3", + "CHARGED_1": "Skill 2, Tier 1", + "CHARGED_2": "Skill 2, Tier 2", + "CHARGED_3": "Skill 2, Tier 3", + "RANGED_1": "Skill 3, Tier 1", + "RANGED_2": "Skill 3, Tier 2", + "RANGED_3": "Skill 3, Tier 3", + "VERTICAL_1": "Skill 4, Tier 1", + "VERTICAL_2": "Skill 4, Tier 2", + "VERTICAL_3": "Skill 4, Tier 3", + "LUNGE_1": "Skill 5, Tier 1", + "LUNGE_2": "Skill 5, Tier 2", + "LUNGE_3": "Skill 5, Tier 3" +} diff --git a/worlds/blasphemous/Options.py b/worlds/blasphemous/Options.py index 127a1dc77669..0bd08b13b260 100644 --- a/worlds/blasphemous/Options.py +++ b/worlds/blasphemous/Options.py @@ -1,4 +1,5 @@ -from Options import Choice, Toggle, DefaultOnToggle, DeathLink, StartInventoryPool +from dataclasses import dataclass +from Options import Choice, Toggle, DefaultOnToggle, DeathLink, PerGameCommonOptions, OptionGroup import random @@ -20,23 +21,30 @@ def from_text(cls, text: str) -> Choice: class PrieDieuWarp(DefaultOnToggle): - """Automatically unlocks the ability to warp between Prie Dieu shrines.""" + """ + Automatically unlocks the ability to warp between Prie Dieu shrines. + """ display_name = "Unlock Fast Travel" class SkipCutscenes(DefaultOnToggle): - """Automatically skips most cutscenes.""" + """ + Automatically skips most cutscenes. + """ display_name = "Auto Skip Cutscenes" class CorpseHints(DefaultOnToggle): - """Changes the 34 corpses in game to give various hints about item locations.""" + """ + Changes the 34 corpses in game to give various hints about item locations. + """ display_name = "Corpse Hints" class Difficulty(Choice): - """Adjusts the overall difficulty of the randomizer, including upgrades required to defeat bosses - and advanced movement tricks or glitches.""" + """ + Adjusts the overall difficulty of the randomizer, including upgrades required to defeat bosses and advanced movement tricks or glitches. + """ display_name = "Difficulty" option_easy = 0 option_normal = 1 @@ -45,15 +53,18 @@ class Difficulty(Choice): class Penitence(Toggle): - """Allows one of the three Penitences to be chosen at the beginning of the game.""" + """ + Allows one of the three Penitences to be chosen at the beginning of the game. + """ display_name = "Penitence" class StartingLocation(ChoiceIsRandom): - """Choose where to start the randomizer. Note that some starting locations cannot be chosen with certain - other options. - Specifically, Brotherhood and Mourning And Havoc cannot be chosen if Shuffle Dash is enabled, and Grievance Ascends - cannot be chosen if Shuffle Wall Climb is enabled.""" + """ + Choose where to start the randomizer. Note that some starting locations cannot be chosen with certain other options. + + Specifically, Brotherhood and Mourning And Havoc cannot be chosen if Shuffle Dash is enabled, and Grievance Ascends cannot be chosen if Shuffle Wall Climb is enabled. + """ display_name = "Starting Location" option_brotherhood = 0 option_albero = 1 @@ -66,10 +77,15 @@ class StartingLocation(ChoiceIsRandom): class Ending(Choice): - """Choose which ending is required to complete the game. + """ + Choose which ending is required to complete the game. + Talking to Tirso in Albero will tell you the selected ending for the current game. + Ending A: Collect all thorn upgrades. - Ending C: Collect all thorn upgrades and the Holy Wound of Abnegation.""" + + Ending C: Collect all thorn upgrades and the Holy Wound of Abnegation. + """ display_name = "Ending" option_any_ending = 0 option_ending_a = 1 @@ -78,14 +94,18 @@ class Ending(Choice): class SkipLongQuests(Toggle): - """Ensures that the rewards for long quests will be filler items. - Affected locations: \"Albero: Donate 50000 Tears\", \"Ossuary: 11th reward\", \"AtTotS: Miriam's gift\", - \"TSC: Jocinero's final reward\"""" + """ + Ensures that the rewards for long quests will be filler items. + + Affected locations: "Albero: Donate 50000 Tears", "Ossuary: 11th reward", "AtTotS: Miriam's gift", "TSC: Jocinero's final reward" + """ display_name = "Skip Long Quests" class ThornShuffle(Choice): - """Shuffles the Thorn given by Deogracias and all Thorn upgrades into the item pool.""" + """ + Shuffles the Thorn given by Deogracias and all Thorn upgrades into the item pool. + """ display_name = "Shuffle Thorn" option_anywhere = 0 option_local_only = 1 @@ -94,50 +114,68 @@ class ThornShuffle(Choice): class DashShuffle(Toggle): - """Turns the ability to dash into an item that must be found in the multiworld.""" + """ + Turns the ability to dash into an item that must be found in the multiworld. + """ display_name = "Shuffle Dash" class WallClimbShuffle(Toggle): - """Turns the ability to climb walls with your sword into an item that must be found in the multiworld.""" + """ + Turns the ability to climb walls with your sword into an item that must be found in the multiworld. + """ display_name = "Shuffle Wall Climb" class ReliquaryShuffle(DefaultOnToggle): - """Adds the True Torment exclusive Reliquary rosary beads into the item pool.""" + """ + Adds the True Torment exclusive Reliquary rosary beads into the item pool. + """ display_name = "Shuffle Penitence Rewards" class CustomItem1(Toggle): - """Adds the custom relic Boots of Pleading into the item pool, which grants the ability to fall onto spikes - and survive. - Must have the \"Blasphemous-Boots-of-Pleading\" mod installed to connect to a multiworld.""" + """ + Adds the custom relic Boots of Pleading into the item pool, which grants the ability to fall onto spikes and survive. + + Must have the "Boots of Pleading" mod installed to connect to a multiworld. + """ display_name = "Boots of Pleading" class CustomItem2(Toggle): - """Adds the custom relic Purified Hand of the Nun into the item pool, which grants the ability to jump - a second time in mid-air. - Must have the \"Blasphemous-Double-Jump\" mod installed to connect to a multiworld.""" + """ + Adds the custom relic Purified Hand of the Nun into the item pool, which grants the ability to jump a second time in mid-air. + + Must have the "Double Jump" mod installed to connect to a multiworld. + """ display_name = "Purified Hand of the Nun" class StartWheel(Toggle): - """Changes the beginning gift to The Young Mason's Wheel.""" + """ + Changes the beginning gift to The Young Mason's Wheel. + """ display_name = "Start with Wheel" class SkillRando(Toggle): - """Randomizes the abilities from the skill tree into the item pool.""" + """ + Randomizes the abilities from the skill tree into the item pool. + """ display_name = "Skill Randomizer" class EnemyRando(Choice): - """Randomizes the enemies that appear in each room. - Shuffled: Enemies will be shuffled amongst each other, but can only appear as many times as they do in - a standard game. + """ + Randomizes the enemies that appear in each room. + + Shuffled: Enemies will be shuffled amongst each other, but can only appear as many times as they do in a standard game. + Randomized: Every enemy is completely random, and can appear any number of times. - Some enemies will never be randomized.""" + + Some enemies will never be randomized. + """ display_name = "Enemy Randomizer" option_disabled = 0 option_shuffled = 1 @@ -146,43 +184,75 @@ class EnemyRando(Choice): class EnemyGroups(DefaultOnToggle): - """Randomized enemies will chosen from sets of specific groups. + """ + Randomized enemies will be chosen from sets of specific groups. + (Weak, normal, large, flying) - Has no effect if Enemy Randomizer is disabled.""" + + Has no effect if Enemy Randomizer is disabled. + """ display_name = "Enemy Groups" class EnemyScaling(DefaultOnToggle): - """Randomized enemies will have their stats increased or decreased depending on the area they appear in. - Has no effect if Enemy Randomizer is disabled.""" + """ + Randomized enemies will have their stats increased or decreased depending on the area they appear in. + + Has no effect if Enemy Randomizer is disabled. + """ display_name = "Enemy Scaling" class BlasphemousDeathLink(DeathLink): - """When you die, everyone dies. The reverse is also true. - Note that Guilt Fragments will not appear when killed by Death Link.""" - - -blasphemous_options = { - "prie_dieu_warp": PrieDieuWarp, - "skip_cutscenes": SkipCutscenes, - "corpse_hints": CorpseHints, - "difficulty": Difficulty, - "penitence": Penitence, - "starting_location": StartingLocation, - "ending": Ending, - "skip_long_quests": SkipLongQuests, - "thorn_shuffle" : ThornShuffle, - "dash_shuffle": DashShuffle, - "wall_climb_shuffle": WallClimbShuffle, - "reliquary_shuffle": ReliquaryShuffle, - "boots_of_pleading": CustomItem1, - "purified_hand": CustomItem2, - "start_wheel": StartWheel, - "skill_randomizer": SkillRando, - "enemy_randomizer": EnemyRando, - "enemy_groups": EnemyGroups, - "enemy_scaling": EnemyScaling, - "death_link": BlasphemousDeathLink, - "start_inventory": StartInventoryPool -} \ No newline at end of file + """ + When you die, everyone dies. The reverse is also true. + + Note that Guilt Fragments will not appear when killed by Death Link. + """ + + +@dataclass +class BlasphemousOptions(PerGameCommonOptions): + prie_dieu_warp: PrieDieuWarp + skip_cutscenes: SkipCutscenes + corpse_hints: CorpseHints + difficulty: Difficulty + penitence: Penitence + starting_location: StartingLocation + ending: Ending + skip_long_quests: SkipLongQuests + thorn_shuffle: ThornShuffle + dash_shuffle: DashShuffle + wall_climb_shuffle: WallClimbShuffle + reliquary_shuffle: ReliquaryShuffle + boots_of_pleading: CustomItem1 + purified_hand: CustomItem2 + start_wheel: StartWheel + skill_randomizer: SkillRando + enemy_randomizer: EnemyRando + enemy_groups: EnemyGroups + enemy_scaling: EnemyScaling + death_link: BlasphemousDeathLink + + +blas_option_groups = [ + OptionGroup("Quality of Life", [ + PrieDieuWarp, + SkipCutscenes, + CorpseHints, + SkipLongQuests, + StartWheel + ]), + OptionGroup("Moveset", [ + DashShuffle, + WallClimbShuffle, + SkillRando, + CustomItem1, + CustomItem2 + ]), + OptionGroup("Enemy Randomizer", [ + EnemyRando, + EnemyGroups, + EnemyScaling + ]) +] diff --git a/worlds/blasphemous/Preprocessor.py b/worlds/blasphemous/Preprocessor.py new file mode 100644 index 000000000000..dd845f26d5ab --- /dev/null +++ b/worlds/blasphemous/Preprocessor.py @@ -0,0 +1,582 @@ +# Preprocessor to convert Blasphemous Randomizer logic into a StringWorldDefinition for use with APHKLogicExtractor +# https://github.com/BrandenEK/Blasphemous.Randomizer +# https://github.com/ArchipelagoMW-HollowKnight/APHKLogicExtractor + + +import json, requests, argparse +from typing import List, Dict, Any + + +def load_resource_local(file: str) -> List[Dict[str, Any]]: + print(f"Reading from {file}") + loaded = [] + with open(file, encoding="utf-8") as f: + loaded = read_json(f.readlines()) + f.close() + + return loaded + + +def load_resource_from_web(url: str) -> List[Dict[str, Any]]: + req = requests.get(url, timeout=1) + print(f"Reading from {url}") + req.encoding = "utf-8" + lines: List[str] = [] + for line in req.text.splitlines(): + while "\t" in line: + line = line[1::] + if line != "": + lines.append(line) + return read_json(lines) + + +def read_json(lines: List[str]) -> List[Dict[str, Any]]: + loaded = [] + creating_object: bool = False + obj: str = "" + for line in lines: + stripped = line.strip() + if "{" in stripped: + creating_object = True + obj += stripped + continue + elif "}," in stripped or "}" in stripped and "]" in lines[lines.index(line)+1]: + creating_object = False + obj += "}" + #print(f"obj = {obj}") + loaded.append(json.loads(obj)) + obj = "" + continue + + if not creating_object: + continue + else: + try: + if "}," in lines[lines.index(line)+1] and stripped[-1] == ",": + obj += stripped[:-1] + else: + obj += stripped + except IndexError: + obj += stripped + + return loaded + + +def get_room_from_door(door: str) -> str: + return door[:door.find("[")] + + +def preprocess_logic(is_door: bool, id: str, logic: str) -> str: + if id in logic and not is_door: + index: int = logic.find(id) + logic = logic[:index] + logic[index+len(id)+4:] + + while ">=" in logic: + index: int = logic.find(">=") + logic = logic[:index-1] + logic[index+3:] + + while ">" in logic: + index: int = logic.find(">") + count = int(logic[index+2]) + count += 1 + logic = logic[:index-1] + str(count) + logic[index+3:] + + while "<=" in logic: + index: int = logic.find("<=") + logic = logic[:index-1] + logic[index+3:] + + while "<" in logic: + index: int = logic.find("<") + count = int(logic[index+2]) + count += 1 + logic = logic[:index-1] + str(count) + logic[index+3:] + + #print(logic) + return logic + + +def build_logic_conditions(logic: str) -> List[List[str]]: + all_conditions: List[List[str]] = [] + + parts = logic.split() + sub_part: str = "" + current_index: int = 0 + parens: int = -1 + current_condition: List[str] = [] + parens_conditions: List[List[List[str]]] = [] + + for index, part in enumerate(parts): + #print(current_index, index, parens, part) + + # skip parts that have already been handled + if index < current_index: + continue + + # break loop if reached final part + try: + parts[index+1] + except IndexError: + #print("INDEXERROR", part) + if parens < 0: + current_condition.append(part) + if len(parens_conditions) > 0: + for i in parens_conditions: + for j in i: + all_conditions.append(j + current_condition) + else: + all_conditions.append(current_condition) + break + + #print(current_condition, parens, sub_part) + + # prepare for subcondition + if "(" in part: + # keep track of nested parentheses + if parens == -1: + parens = 0 + for char in part: + if char == "(": + parens += 1 + + # add to sub part + if sub_part == "": + sub_part = part + else: + sub_part += f" {part}" + #if not ")" in part: + continue + + # end of subcondition + if ")" in part: + # read every character in case of multiple closing parentheses + for char in part: + if char == ")": + parens -= 1 + + sub_part += f" {part}" + + # if reached end of parentheses, handle subcondition + if parens == 0: + #print(current_condition, sub_part) + parens = -1 + + try: + parts[index+1] + except IndexError: + #print("END OF LOGIC") + if len(parens_conditions) > 0: + parens_conditions.append(build_logic_subconditions(current_condition, sub_part)) + #print("PARENS:", parens_conditions) + + temp_conditions: List[List[str]] = [] + + for i in parens_conditions[0]: + for j in parens_conditions[1]: + temp_conditions.append(i + j) + + parens_conditions.pop(0) + parens_conditions.pop(0) + + while len(parens_conditions) > 0: + temp_conditions2 = temp_conditions + temp_conditions = [] + for k in temp_conditions2: + for l in parens_conditions[0]: + temp_conditions.append(k + l) + + parens_conditions.pop(0) + + #print("TEMP:", remove_duplicates(temp_conditions)) + all_conditions += temp_conditions + else: + all_conditions += build_logic_subconditions(current_condition, sub_part) + else: + #print("NEXT PARTS:", parts[index+1], parts[index+2]) + if parts[index+1] == "&&": + parens_conditions.append(build_logic_subconditions(current_condition, sub_part)) + #print("PARENS:", parens_conditions) + else: + if len(parens_conditions) > 0: + parens_conditions.append(build_logic_subconditions(current_condition, sub_part)) + #print("PARENS:", parens_conditions) + + temp_conditions: List[List[str]] = [] + + for i in parens_conditions[0]: + for j in parens_conditions[1]: + temp_conditions.append(i + j) + + parens_conditions.pop(0) + parens_conditions.pop(0) + + while len(parens_conditions) > 0: + temp_conditions2 = temp_conditions + temp_conditions = [] + for k in temp_conditions2: + for l in parens_conditions[0]: + temp_conditions.append(k + l) + + parens_conditions.pop(0) + + #print("TEMP:", remove_duplicates(temp_conditions)) + all_conditions += temp_conditions + else: + all_conditions += build_logic_subconditions(current_condition, sub_part) + + current_index = index+2 + + current_condition = [] + sub_part = "" + + continue + + # collect all parts until reaching end of parentheses + if parens > 0: + sub_part += f" {part}" + continue + + current_condition.append(part) + + # continue with current condition + if parts[index+1] == "&&": + current_index = index+2 + continue + + # add condition to list and start new one + elif parts[index+1] == "||": + if len(parens_conditions) > 0: + for i in parens_conditions: + for j in i: + all_conditions.append(j + current_condition) + parens_conditions = [] + else: + all_conditions.append(current_condition) + current_condition = [] + current_index = index+2 + continue + + return remove_duplicates(all_conditions) + + +def build_logic_subconditions(current_condition: List[str], subcondition: str) -> List[List[str]]: + #print("STARTED SUBCONDITION", current_condition, subcondition) + subconditions = build_logic_conditions(subcondition[1:-1]) + final_conditions = [] + + for condition in subconditions: + final_condition = current_condition + condition + final_conditions.append(final_condition) + + #print("ENDED SUBCONDITION") + #print(final_conditions) + return final_conditions + + +def remove_duplicates(conditions: List[List[str]]) -> List[List[str]]: + final_conditions: List[List[str]] = [] + for condition in conditions: + final_conditions.append(list(dict.fromkeys(condition))) + + return final_conditions + + +def handle_door_visibility(door: Dict[str, Any]) -> Dict[str, Any]: + if door.get("visibilityFlags") == None: + return door + else: + flags: List[str] = str(door.get("visibilityFlags")).split(", ") + #print(flags) + temp_flags: List[str] = [] + this_door: bool = False + #required_doors: str = "" + + if "ThisDoor" in flags: + this_door = True + + #if "requiredDoors" in flags: + # required_doors: str = " || ".join(door.get("requiredDoors")) + + if "DoubleJump" in flags: + temp_flags.append("DoubleJump") + + if "NormalLogic" in flags: + temp_flags.append("NormalLogic") + + if "NormalLogicAndDoubleJump" in flags: + temp_flags.append("NormalLogicAndDoubleJump") + + if "HardLogic" in flags: + temp_flags.append("HardLogic") + + if "HardLogicAndDoubleJump" in flags: + temp_flags.append("HardLogicAndDoubleJump") + + if "EnemySkips" in flags: + temp_flags.append("EnemySkips") + + if "EnemySkipsAndDoubleJump" in flags: + temp_flags.append("EnemySkipsAndDoubleJump") + + # remove duplicates + temp_flags = list(dict.fromkeys(temp_flags)) + + original_logic: str = door.get("logic") + temp_logic: str = "" + + if this_door: + temp_logic = door.get("id") + + if temp_flags != []: + if temp_logic != "": + temp_logic += " || " + temp_logic += ' && '.join(temp_flags) + + if temp_logic != "" and original_logic != None: + if len(original_logic.split()) == 1: + if len(temp_logic.split()) == 1: + door["logic"] = f"{temp_logic} && {original_logic}" + else: + door["logic"] = f"({temp_logic}) && {original_logic}" + else: + if len(temp_logic.split()) == 1: + door["logic"] = f"{temp_logic} && ({original_logic})" + else: + door["logic"] = f"({temp_logic}) && ({original_logic})" + elif temp_logic != "" and original_logic == None: + door["logic"] = temp_logic + + return door + + +def get_state_provider_for_condition(condition: List[str]) -> str: + for item in condition: + if (item[0] == "D" and item[3] == "Z" and item[6] == "S")\ + or (item[0] == "D" and item[3] == "B" and item[4] == "Z" and item[7] == "S"): + return item + return None + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument('-l', '--local', action="store_true", help="Use local files in the same directory instead of reading resource files from the BrandenEK/Blasphemous-Randomizer repository.") + args = parser.parse_args() + return args + + +def main(args: argparse.Namespace): + doors = [] + locations = [] + + if (args.local): + doors = load_resource_local("doors.json") + locations = load_resource_local("locations_items.json") + + else: + doors = load_resource_from_web("https://raw.githubusercontent.com/BrandenEK/Blasphemous-Randomizer/main/resources/data/Randomizer/doors.json") + locations = load_resource_from_web("https://raw.githubusercontent.com/BrandenEK/Blasphemous-Randomizer/main/resources/data/Randomizer/locations_items.json") + + original_connections: Dict[str, str] = {} + rooms: Dict[str, List[str]] = {} + output: Dict[str, Any] = {} + logic_objects: List[Dict[str, Any]] = [] + + for door in doors: + if door.get("originalDoor") != None: + if not door.get("id") in original_connections: + original_connections[door.get("id")] = door.get("originalDoor") + original_connections[door.get("originalDoor")] = door.get("id") + + room: str = get_room_from_door(door.get("originalDoor")) + if not room in rooms.keys(): + rooms[room] = [door.get("id")] + else: + rooms[room].append(door.get("id")) + + def flip_doors_in_condition(condition: List[str]) -> List[str]: + new_condition = [] + for item in condition: + if item in original_connections: + new_condition.append(original_connections[item]) + else: + new_condition.append(item) + + return new_condition + + for room in rooms.keys(): + obj = { + "Name": room, + "Logic": [], + "Handling": "Default" + } + + for door in rooms[room]: + logic = { + "StateProvider": door, + "Conditions": [], + "StateModifiers": [] + } + obj["Logic"].append(logic) + + logic_objects.append(obj) + + for door in doors: + if door.get("direction") == 5: + continue + + handling: str = "Transition" + if "Cell" in door.get("id"): + handling = "Default" + obj = { + "Name": door.get("id"), + "Logic": [], + "Handling": handling + } + + visibility_flags: List[str] = [] + if door.get("visibilityFlags") != None: + visibility_flags = str(door.get("visibilityFlags")).split(", ") + if "1" in visibility_flags: + visibility_flags.remove("1") + visibility_flags.append("ThisDoor") + + required_doors: List[str] = [] + if door.get("requiredDoors"): + required_doors = door.get("requiredDoors") + + if len(visibility_flags) > 0: + for flag in visibility_flags: + if flag == "RequiredDoors": + continue + + if flag == "ThisDoor": + flag = original_connections[door.get("id")] + + if door.get("logic") != None: + logic: str = door.get("logic") + logic = f"{flag} && ({logic})" + logic = preprocess_logic(True, door.get("id"), logic) + conditions = build_logic_conditions(logic) + for condition in conditions: + condition = flip_doors_in_condition(condition) + state_provider: str = get_room_from_door(door.get("id")) + + if get_state_provider_for_condition(condition) != None: + state_provider = get_state_provider_for_condition(condition) + condition.remove(state_provider) + + logic = { + "StateProvider": state_provider, + "Conditions": condition, + "StateModifiers": [] + } + obj["Logic"].append(logic) + else: + logic = { + "StateProvider": get_room_from_door(door.get("id")), + "Conditions": [flag], + "StateModifiers": [] + } + obj["Logic"].append(logic) + + if "RequiredDoors" in visibility_flags: + for d in required_doors: + flipped = original_connections[d] + if door.get("logic") != None: + logic: str = preprocess_logic(True, door.get("id"), door.get("logic")) + conditions = build_logic_conditions(logic) + for condition in conditions: + condition = flip_doors_in_condition(condition) + state_provider: str = flipped + + if flipped in condition: + condition.remove(flipped) + + logic = { + "StateProvider": state_provider, + "Conditions": condition, + "StateModifiers": [] + } + obj["Logic"].append(logic) + else: + logic = { + "StateProvider": flipped, + "Conditions": [], + "StateModifiers": [] + } + obj["Logic"].append(logic) + + else: + if door.get("logic") != None: + logic: str = preprocess_logic(True, door.get("id"), door.get("logic")) + conditions = build_logic_conditions(logic) + for condition in conditions: + condition = flip_doors_in_condition(condition) + stateProvider: str = get_room_from_door(door.get("id")) + + if get_state_provider_for_condition(condition) != None: + stateProvider = get_state_provider_for_condition(condition) + condition.remove(stateProvider) + + logic = { + "StateProvider": stateProvider, + "Conditions": condition, + "StateModifiers": [] + } + obj["Logic"].append(logic) + else: + logic = { + "StateProvider": get_room_from_door(door.get("id")), + "Conditions": [], + "StateModifiers": [] + } + obj["Logic"].append(logic) + + logic_objects.append(obj) + + for location in locations: + obj = { + "Name": location.get("id"), + "Logic": [], + "Handling": "Location" + } + + if location.get("logic") != None: + for condition in build_logic_conditions(preprocess_logic(False, location.get("id"), location.get("logic"))): + condition = flip_doors_in_condition(condition) + stateProvider: str = location.get("room") + + if get_state_provider_for_condition(condition) != None: + stateProvider = get_state_provider_for_condition(condition) + condition.remove(stateProvider) + + if stateProvider == "Initial": + stateProvider = None + + logic = { + "StateProvider": stateProvider, + "Conditions": condition, + "StateModifiers": [] + } + obj["Logic"].append(logic) + else: + stateProvider: str = location.get("room") + if stateProvider == "Initial": + stateProvider = None + logic = { + "StateProvider": stateProvider, + "Conditions": [], + "StateModifiers": [] + } + obj["Logic"].append(logic) + + logic_objects.append(obj) + + output["LogicObjects"] = logic_objects + + with open("StringWorldDefinition.json", "w") as file: + print("Writing to StringWorldDefinition.json") + file.write(json.dumps(output, indent=4)) + + +if __name__ == "__main__": + main(parse_args()) diff --git a/worlds/blasphemous/Rooms.py b/worlds/blasphemous/Rooms.py deleted file mode 100644 index 74f245adeff7..000000000000 --- a/worlds/blasphemous/Rooms.py +++ /dev/null @@ -1,5405 +0,0 @@ -from typing import List, TypedDict - - -room_table: List[str] = [ - "D01Z01S01", # THL - "D01Z01S02", # THL - "D01Z01S03", # THL - "D01Z01S07", # THL - "D01Z02S01", # Albero - "D01Z02S02", # Albero - "D01Z02S03", # Albero - "D01Z02S04", # Albero - "D01Z02S05", # Albero - "D01Z02S06", # Albero - "D01Z02S07", # Albero - "D01BZ04S01", # Albero Church - "D01BZ06S01", # Ossuary - "D01BZ08S01", # Ossuary - isidora's room? - "D01Z03S01", # WotBC - "D01Z03S02", # WotBC - "D01Z03S03", # WotBC - "D01Z03S04", # WotBC - "D01Z03S05", # WotBC - "D01Z03S06", # WotBC - "D01Z03S07", # WotBC - "D01Z04S01", # MD - "D01Z04S02", # MD - "D01Z04S03", # MD - "D01Z04S05", # MD - "D01Z04S06", # MD - "D01Z04S07", # MD - "D01Z04S08", # MD - "D01Z04S09", # MD - "D01Z04S10", # MD - "D01Z04S11", # MD - "D01Z04S12", # MD - "D01Z04S13", # MD - "D01Z04S14", # MD - "D01Z04S15", # MD - "D01Z04S16", # MD - "D01Z04S17", # MD - "D01Z04S18", # MD - "D01Z04S19", # MD - "D01BZ02S01", # MD - shop - "D01Z05S01", # DC - "D01Z05S02", # DC - "D01Z05S03", # DC - "D01Z05S04", # DC - "D01Z05S05", # DC - "D01Z05S06", # DC - "D01Z05S07", # DC - "D01Z05S08", # DC - "D01Z05S09", # DC - "D01Z05S10", # DC - "D01Z05S11", # DC - "D01Z05S12", # DC - "D01Z05S13", # DC - "D01Z05S14", # DC - "D01Z05S15", # DC - "D01Z05S16", # DC - "D01Z05S17", # DC - "D01Z05S18", # DC - "D01Z05S19", # DC - "D01Z05S20", # DC - "D01Z05S21", # DC - "D01Z05S22", # DC - "D01Z05S23", # DC - "D01Z05S24", # DC - "D01Z05S25", # DC - "D01Z05S26", # DC - "D01Z05S27", # DC - "D01BZ05S01", # DC - shroud of dreamt sins room? - "D01BZ09S01", # DC - arcade room - "D01Z06S01", # Petrous - "D01BZ07S01", # Petrous - Jibrael - "D02Z01S01", # WOTW - "D02Z01S02", # WOTW - "D02Z01S03", # WOTW - "D02Z01S04", # WOTW - "D02Z01S05", # WOTW - "D02Z01S06", # WOTW - "D02Z01S08", # WOTW - "D02Z01S09", # WOTW - "D02Z02S01", # GOTP - "D02Z02S02", # GOTP - "D02Z02S03", # GOTP - "D02Z02S04", # GOTP - "D02Z02S05", # GOTP - "D02Z02S06", # GOTP - "D02Z02S07", # GOTP - "D02Z02S08", # GOTP - "D02Z02S09", # GOTP - "D02Z02S10", # GOTP - "D02Z02S11", # GOTP - "D02Z02S12", # GOTP - "D02Z02S13", # GOTP - "D02Z02S14", # GOTP - "D02BZ02S01", # GOTP - shop - "D02Z03S01", # COOLOTCV - "D02Z03S02", # COOLOTCV - "D02Z03S03", # COOLOTCV - "D02Z03S05", # COOLOTCV - "D02Z03S06", # COOLOTCV - "D02Z03S07", # COOLOTCV - "D02Z03S08", # COOLOTCV - "D02Z03S09", # COOLOTCV - "D02Z03S10", # COOLOTCV - "D02Z03S11", # COOLOTCV - "D02Z03S12", # COOLOTCV - "D02Z03S13", # COOLOTCV - "D02Z03S14", # COOLOTCV - "D02Z03S15", # COOLOTCV - "D02Z03S16", # COOLOTCV - "D02Z03S17", # COOLOTCV - "D02Z03S18", # COOLOTCV - "D02Z03S19", # COOLOTCV - "D02Z03S20", # COOLOTCV - "D02Z03S21", # COOLOTCV - "D02Z03S22", # COOLOTCV - "D02Z03S23", # COOLOTCV - "D02Z03S24", # COOLOTCV - "D03Z01S01", # MOTED - "D03Z01S02", # MOTED - "D03Z01S03", # MOTED - "D03Z01S04", # MOTED - "D03Z01S05", # MOTED - "D03Z01S06", # MOTED - "D03Z02S01", # Jondo - "D03Z02S02", # Jondo - "D03Z02S03", # Jondo - "D03Z02S04", # Jondo - "D03Z02S05", # Jondo - "D03Z02S06", # Jondo - "D03Z02S07", # Jondo - "D03Z02S08", # Jondo - "D03Z02S09", # Jondo - "D03Z02S10", # Jondo - "D03Z02S11", # Jondo - "D03Z02S12", # Jondo - "D03Z02S13", # Jondo - "D03Z02S14", # Jondo - "D03Z02S15", # Jondo - "D03Z03S01", # GA - "D03Z03S02", # GA - "D03Z03S03", # GA - "D03Z03S04", # GA - "D03Z03S05", # GA - "D03Z03S06", # GA - "D03Z03S07", # GA - "D03Z03S08", # GA - "D03Z03S09", # GA - "D03Z03S10", # GA - "D03Z03S11", # GA - "D03Z03S12", # GA - "D03Z03S13", # GA - "D03Z03S14", # GA - "D03Z03S15", # GA - "D03Z03S16", # GA - "D03Z03S17", # GA - "D03Z03S18", # GA - "D03Z03S19", # GA - "D04Z01S01", # POTSS - "D04Z01S02", # POTSS - "D04Z01S03", # POTSS - "D04Z01S04", # POTSS - "D04Z01S05", # POTSS - "D04Z01S06", # POTSS - "D04Z02S01", # MOM - "D04Z02S02", # MOM - "D04Z02S03", # MOM - "D04Z02S04", # MOM - "D04Z02S05", # MOM - "D04Z02S06", # MOM - "D04Z02S07", # MOM - "D04Z02S08", # MOM - "D04Z02S09", # MOM - "D04Z02S10", # MOM - "D04Z02S11", # MOM - "D04Z02S12", # MOM - "D04Z02S13", # MOM - "D04Z02S14", # MOM - "D04Z02S15", # MOM - "D04Z02S16", # MOM - "D04Z02S17", # MOM - "D04Z02S19", # MOM - "D04Z02S20", # MOM - "D04Z02S21", # MOM - "D04Z02S22", # MOM - "D04Z02S23", # MOM - "D04Z02S24", # MOM - "D04Z02S25", # MOM - "D04BZ02S01", # MOM - Redento - "D04Z03S01", # KOTTW - "D04Z03S02", # KOTTW - "D04Z04S01", # ATTOTS - "D04Z04S02", # ATTOTS - "D05Z01S01", # LOTNW - "D05Z01S02", # LOTNW - "D05Z01S03", # LOTNW - "D05Z01S04", # LOTNW - "D05Z01S05", # LOTNW - "D05Z01S06", # LOTNW - "D05Z01S07", # LOTNW - "D05Z01S08", # LOTNW - "D05Z01S09", # LOTNW - "D05Z01S10", # LOTNW - "D05Z01S11", # LOTNW - "D05Z01S12", # LOTNW - "D05Z01S13", # LOTNW - "D05Z01S14", # LOTNW - "D05Z01S15", # LOTNW - "D05Z01S16", # LOTNW - "D05Z01S17", # LOTNW - "D05Z01S18", # LOTNW - "D05Z01S19", # LOTNW - "D05Z01S20", # LOTNW - "D05Z01S21", # LOTNW - "D05Z01S22", # LOTNW - "D05Z01S23", # LOTNW - "D05Z01S24", # LOTNW - "D05BZ01S01", # LOTNW - secret entrance to KOTTW? - "D05Z02S01", # TSC - "D05Z02S02", # TSC - "D05Z02S03", # TSC - "D05Z02S04", # TSC - "D05Z02S05", # TSC - "D05Z02S06", # TSC - "D05Z02S07", # TSC - "D05Z02S08", # TSC - "D05Z02S09", # TSC - "D05Z02S10", # TSC - "D05Z02S11", # TSC - "D05Z02S12", # TSC - "D05Z02S13", # TSC - "D05Z02S14", # TSC - "D05Z02S15", # TSC - "D05BZ02S01", # TSC - shop - "D06Z01S01", # AR - "D06Z01S02", # AR - "D06Z01S03", # AR - "D06Z01S04", # AR - "D06Z01S05", # AR - "D06Z01S06", # AR - "D06Z01S07", # AR - "D06Z01S08", # AR - "D06Z01S09", # AR - "D06Z01S10", # AR - "D06Z01S11", # AR - "D06Z01S12", # AR - "D06Z01S13", # AR - "D06Z01S14", # AR - "D06Z01S15", # AR - "D06Z01S16", # AR - "D06Z01S17", # AR - "D06Z01S18", # AR - "D06Z01S19", # AR - "D06Z01S20", # AR - "D06Z01S21", # AR - "D06Z01S22", # AR - "D06Z01S23", # AR - "D06Z01S24", # AR - "D06Z01S25", # AR - "D06Z01S26", # AR - "D07Z01S01", # DOHH? - "D07Z01S02", # DOHH? - "D07Z01S03", # DOHH? - "D08Z01S01", # BOTTC - "D08Z01S02", # BOTTC - "D08Z02S01", # FT - "D08Z02S02", # FT - "D08Z02S03", # FT - "D08Z03S01", # HOTD - "D08Z03S02", # HOTD - "D08Z03S03", # HOTD - "D09Z01S01", # WOTHP - "D09Z01S02", # WOTHP - "D09Z01S03", # WOTHP - "D09Z01S04", # WOTHP - "D09Z01S05", # WOTHP - "D09Z01S06", # WOTHP - "D09Z01S07", # WOTHP - "D09Z01S08", # WOTHP - "D09Z01S09", # WOTHP - "D09Z01S10", # WOTHP - "D09Z01S11", # WOTHP - "D09Z01S12", # WOTHP - "D09Z01S13", # WOTHP - "D09BZ01S01", # WOTHP - all cells - "D17Z01S01", # BOTSS - "D17Z01S02", # BOTSS - "D17Z01S03", # BOTSS - "D17Z01S04", # BOTSS - "D17Z01S05", # BOTSS - "D17Z01S06", # BOTSS - "D17Z01S07", # BOTSS - "D17Z01S08", # BOTSS - "D17Z01S09", # BOTSS - "D17Z01S10", # BOTSS - "D17Z01S11", # BOTSS - "D17Z01S12", # BOTSS - "D17Z01S13", # BOTSS - "D17Z01S14", # BOTSS - "D17Z01S15", # BOTSS - "D17BZ01S01", # BOTSS - chamber of the eldest brother - "D17BZ02S01", # BOTSS - platforming challenge - "D20Z01S01", # EOS - "D20Z01S02", # EOS - "D20Z01S03", # EOS - "D20Z01S04", # EOS - "D20Z01S05", # EOS - "D20Z01S06", # EOS - "D20Z01S07", # EOS - "D20Z01S08", # EOS - "D20Z01S09", # EOS - "D20Z01S10", # EOS - "D20Z01S11", # EOS - "D20Z01S12", # EOS - "D20Z01S13", # EOS - "D20Z01S14", # EOS - "D20Z02S01", # MAH - "D20Z02S02", # MAH - "D20Z02S03", # MAH - "D20Z02S04", # MAH - "D20Z02S05", # MAH - "D20Z02S06", # MAH - "D20Z02S07", # MAH - "D20Z02S08", # MAH - "D20Z02S09", # MAH - "D20Z02S10", # MAH - "D20Z02S11", # MAH - "D20Z02S12", # MAH - "D20Z03S01", # TRPOTS -] - - -class DoorDict(TypedDict, total=False): - Id: str - Direction: int - OriginalDoor: str - Type: int - Logic: str - VisibilityFlags: int - RequiredDoors: List[str] - - -door_table: List[DoorDict] = [ - { - "Id": "D01Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z01S07[E]" - }, - { - "Id": "D01Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D01Z01S02[W]" - }, - { - "Id": "D01Z01S01[S]", - "Direction": 2, - "OriginalDoor": "D01Z06S01[N]", - "Type": 1, - "Logic": "D01Z01S01[S] || canBreakHoles || doubleJump" - }, - { - "Id": "D01Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D01Z01S01[E]" - }, - { - "Id": "D01Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D01Z01S03[W]" - }, - { - "Id": "D01Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D01Z01S02[E]" - }, - { - "Id": "D01Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S01[W]", - "Type": 1 - }, - { - "Id": "D01Z01S07[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S03[E]", - "Type": 1 - }, - { - "Id": "D01Z01S07[E]", - "Direction": 2, - "OriginalDoor": "D01Z01S01[W]" - }, - - { - "Id": "D01Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z01S03[E]", - "Type": 1 - }, - { - "Id": "D01Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S02[W]" - }, - { - "Id": "D01Z02S02[SW]", - "Direction": 1, - "OriginalDoor": "D01Z02S06[E]" - }, - { - "Id": "D01Z02S02[SE]", - "Direction": 2, - "OriginalDoor": "D01Z02S04[W]" - }, - { - "Id": "D01Z02S02[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S01[E]" - }, - { - "Id": "D01Z02S02[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S03[W]" - }, - { - "Id": "D01Z02S02[NE]", - "Direction": 2, - "OriginalDoor": "D01Z02S03[NW]" - }, - { - "Id": "D01Z02S03[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S02[E]" - }, - { - "Id": "D01Z02S03[NW]", - "Direction": 1, - "OriginalDoor": "D01Z02S02[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z02S11[NW]", "D02Z02S11[NE]", "D02Z02S11[W]", "D02Z02S11[E]", "D02Z02S11[SE]" ] - }, - { - "Id": "D01Z02S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S05[W]" - }, - { - "Id": "D01Z02S03[church]", - "Direction": 4, - "OriginalDoor": "D01BZ04S01[church]", - "Logic": "canBeatMercyBoss || canBeatConventBoss || canBeatGrievanceBoss" - }, - { - "Id": "D01Z02S03[Cherubs]", - "Direction": 5 - }, - { - "Id": "D01Z02S04[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S02[SE]" - }, - { - "Id": "D01Z02S04[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S01[N]", - "Type": 1 - }, - { - "Id": "D01Z02S04[Ossary]", - "Direction": 4, - "OriginalDoor": "D01BZ06S01[Ossary]" - }, - { - "Id": "D01Z02S05[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S03[E]" - }, - { - "Id": "D01Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S01[W]", - "Type": 1 - }, - { - "Id": "D01Z02S06[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S07[E]" - }, - { - "Id": "D01Z02S06[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S02[SW]" - }, - { - "Id": "D01Z02S07[E]", - "Direction": 2, - "OriginalDoor": "D01Z02S06[W]" - }, - { - "Id": "D01BZ04S01[church]", - "Direction": 7, - "OriginalDoor": "D01Z02S03[church]" - }, - { - "Id": "D01BZ06S01[Ossary]", - "Direction": 7, - "OriginalDoor": "D01Z02S04[Ossary]" - }, - { - "Id": "D01BZ06S01[E]", - "Direction": 2, - "OriginalDoor": "D01BZ08S01[W]", - "Logic": "bones >= 30" - }, - { - "Id": "D01BZ08S01[W]", - "Direction": 1, - "OriginalDoor": "D01BZ06S01[E]" - }, - - { - "Id": "D01Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z02S05[E]", - "Type": 1 - }, - { - "Id": "D01Z03S01[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S02[W]" - }, - { - "Id": "D01Z03S01[SE]", - "Direction": 2, - "OriginalDoor": "D01Z03S02[SW]", - "VisibilityFlags": 1 - }, - { - "Id": "D01Z03S02[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S01[E]" - }, - { - "Id": "D01Z03S02[SW]", - "Direction": 1, - "OriginalDoor": "D01Z03S01[SE]" - }, - { - "Id": "D01Z03S02[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S03[W]" - }, - { - "Id": "D01Z03S02[S]", - "Direction": 3, - "OriginalDoor": "D01Z05S05[N]", - "Type": 1, - "VisibilityFlags": 1 - }, - { - "Id": "D01Z03S03[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S02[E]" - }, - { - "Id": "D01Z03S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S04[SW]" - }, - { - "Id": "D01Z03S03[Cherubs]", - "Direction": 5 - }, - { - "Id": "D01Z03S03[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D01Z05S06[Cherubs]", - "Type": 1, - "Logic": "linen" - }, - { - "Id": "D01Z03S04[SW]", - "Direction": 1, - "OriginalDoor": "D01Z03S03[E]" - }, - { - "Id": "D01Z03S04[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S07[E]" - }, - { - "Id": "D01Z03S04[NW]", - "Direction": 1, - "OriginalDoor": "D02Z01S01[SE]", - "Type": 1 - }, - { - "Id": "D01Z03S04[SE]", - "Direction": 2, - "OriginalDoor": "D01Z03S05[W]" - }, - { - "Id": "D01Z03S04[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S06[W]" - }, - { - "Id": "D01Z03S05[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S04[SE]" - }, - { - "Id": "D01Z03S05[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S01[NW]", - "Type": 1 - }, - { - "Id": "D01Z03S05[Cherubs]", - "Direction": 6, - "OriginalDoor": "D01Z05S11[Cherubs]", - "Type": 1, - "Logic": "linen" - }, - { - "Id": "D01Z03S06[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S04[E]" - }, - { - "Id": "D01Z03S06[E]", - "Direction": 2, - "OriginalDoor": "D08Z01S01[W]", - "Type": 1 - }, - { - "Id": "D01Z03S07[E]", - "Direction": 2, - "OriginalDoor": "D01Z03S04[W]" - }, - { - "Id": "D01Z03S07[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D01Z03S03[Cherubs]", - "Logic": "linen" - }, - - { - "Id": "D01Z04S01[NW]", - "Direction": 1, - "OriginalDoor": "D01Z03S05[E]", - "Type": 1 - }, - { - "Id": "D01Z04S01[NE]", - "Direction": 2, - "OriginalDoor": "D01Z04S17[W]" - }, - { - "Id": "D01Z04S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S03[E]" - }, - { - "Id": "D01Z04S01[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S05[NW]" - }, - { - "Id": "D01Z04S01[SE]", - "Direction": 2, - "OriginalDoor": "D01Z04S05[SW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S01[S]" ] - }, - { - "Id": "D01Z04S01[S]", - "Direction": 3, - "OriginalDoor": "D01Z04S15[N]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S01[SE]" ] - }, - { - "Id": "D01Z04S02[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S13[NE]" - }, - { - "Id": "D01Z04S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S01[W]" - }, - { - "Id": "D01Z04S05[NW]", - "Direction": 1, - "OriginalDoor": "D01Z04S01[E]" - }, - { - "Id": "D01Z04S05[SW]", - "Direction": 1, - "OriginalDoor": "D01Z04S01[SE]" - }, - { - "Id": "D01Z04S06[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S07[W]" - }, - { - "Id": "D01Z04S06[NW]", - "Direction": 1, - "OriginalDoor": "D01Z04S15[NE]" - }, - { - "Id": "D01Z04S06[SW]", - "Direction": 1, - "OriginalDoor": "D01Z04S15[E]" - }, - { - "Id": "D01Z04S07[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S06[E]" - }, - { - "Id": "D01Z04S08[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S15[W]" - }, - { - "Id": "D01Z04S09[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S12[E]", - "Type": 1, - "Logic": "openedDCGateE" - }, - { - "Id": "D01Z04S09[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S15[SW]" - }, - { - "Id": "D01Z04S09[C]", - "Direction": 4, - "OriginalDoor": "D01BZ02S01[C]" - }, - { - "Id": "D01Z04S10[NW]", - "Direction": 1, - "OriginalDoor": "D01Z04S15[SE]" - }, - { - "Id": "D01Z04S10[SW]", - "Direction": 3, - "OriginalDoor": "D01Z04S11[NE]" - }, - { - "Id": "D01Z04S10[SE]", - "Direction": 3, - "OriginalDoor": "D01Z04S12[NW]" - }, - { - "Id": "D01Z04S11[NE]", - "Direction": 0, - "OriginalDoor": "D01Z04S10[SW]" - }, - { - "Id": "D01Z04S12[NW]", - "Direction": 0, - "OriginalDoor": "D01Z04S10[SE]" - }, - { - "Id": "D01Z04S12[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S18[E]" - }, - { - "Id": "D01Z04S12[SE]", - "Direction": 2, - "OriginalDoor": "D01Z04S13[NW]" - }, - { - "Id": "D01Z04S13[NW]", - "Direction": 1, - "OriginalDoor": "D01Z04S12[SE]" - }, - { - "Id": "D01Z04S13[NE]", - "Direction": 2, - "OriginalDoor": "D01Z04S02[W]" - }, - { - "Id": "D01Z04S13[SW]", - "Direction": 1, - "OriginalDoor": "D01Z04S14[E]" - }, - { - "Id": "D01Z04S13[SE]", - "Direction": 2, - "OriginalDoor": "D01Z04S16[W]", - "VisibilityFlags": 5, - "Logic": "D01Z04S13[SE] || canDiveLaser && (canAirStall || wheel || doubleJump || canEnemyBounce)" - }, - { - "Id": "D01Z04S14[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S13[SW]" - }, - { - "Id": "D01Z04S15[N]", - "Direction": 0, - "OriginalDoor": "D01Z04S01[S]" - }, - { - "Id": "D01Z04S15[NE]", - "Direction": 2, - "OriginalDoor": "D01Z04S06[NW]" - }, - { - "Id": "D01Z04S15[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S08[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S15[E]", "D01Z04S15[SW]", "D01Z04S15[SE]" ] - }, - { - "Id": "D01Z04S15[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S06[SW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S15[W]", "D01Z04S15[SW]", "D01Z04S15[SE]" ] - }, - { - "Id": "D01Z04S15[SW]", - "Direction": 1, - "OriginalDoor": "D01Z04S09[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S15[W]", "D01Z04S15[E]", "D01Z04S15[SE]" ] - }, - { - "Id": "D01Z04S15[SE]", - "Direction": 2, - "OriginalDoor": "D01Z04S10[NW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z04S15[W]", "D01Z04S15[E]", "D01Z04S15[SW]" ] - }, - { - "Id": "D01Z04S16[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S13[SE]" - }, - { - "Id": "D01Z04S16[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S12[W]", - "Type": 1 - }, - { - "Id": "D01Z04S17[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S01[NE]" - }, - { - "Id": "D01Z04S18[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S19[E]", - "Logic": "D01Z04S18[W] || canBeatMercyBoss" - }, - { - "Id": "D01Z04S18[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S12[W]", - "Logic": "D01Z04S18[E] || canBeatMercyBoss" - }, - { - "Id": "D01Z04S19[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S19[E]", - "Type": 1 - }, - { - "Id": "D01Z04S19[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S18[W]" - }, - { - "Id": "D01BZ02S01[C]", - "Direction": 7, - "OriginalDoor": "D01Z04S09[C]" - }, - - { - "Id": "D01Z05S01[N]", - "Direction": 1, - "OriginalDoor": "D01Z02S04[E]", - "Type": 1 - }, - { - "Id": "D01Z05S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S27[E]" - }, - { - "Id": "D01Z05S01[S]", - "Direction": 3, - "OriginalDoor": "D01Z05S02[N]" - }, - { - "Id": "D01Z05S02[N]", - "Direction": 0, - "OriginalDoor": "D01Z05S01[S]" - }, - { - "Id": "D01Z05S02[W]", - "Direction": 1, - "OriginalDoor": "D03Z01S01[NE]", - "Type": 1 - }, - { - "Id": "D01Z05S02[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S03[NW]", - "VisibilityFlags": 1 - }, - { - "Id": "D01Z05S02[S]", - "Direction": 3, - "OriginalDoor": "D01Z05S20[N]", - "Logic": "openedDCLadder" - }, - { - "Id": "D01Z05S03[NW]", - "Direction": 1, - "OriginalDoor": "D01Z05S02[E]" - }, - { - "Id": "D01Z05S03[NE]", - "Direction": 2, - "OriginalDoor": "D01Z05S04[W]" - }, - { - "Id": "D01Z05S03[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S07[E]" - }, - { - "Id": "D01Z05S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S08[W]" - }, - { - "Id": "D01Z05S03[S]", - "Direction": 3, - "OriginalDoor": "D01Z05S13[N]" - }, - { - "Id": "D01Z05S04[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S03[NE]" - }, - { - "Id": "D01Z05S04[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S05[NW]" - }, - { - "Id": "D01Z05S05[N]", - "Direction": 0, - "OriginalDoor": "D01Z03S02[S]", - "Type": 1 - }, - { - "Id": "D01Z05S05[NW]", - "Direction": 1, - "OriginalDoor": "D01Z05S04[E]" - }, - { - "Id": "D01Z05S05[NE]", - "Direction": 2, - "OriginalDoor": "D01Z05S06[W]" - }, - { - "Id": "D01Z05S05[SW]", - "Direction": 1, - "OriginalDoor": "D01Z05S18[E]" - }, - { - "Id": "D01Z05S05[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S09[NW]" - }, - { - "Id": "D01Z05S06[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S05[NE]" - }, - { - "Id": "D01Z05S06[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D01Z05S07[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S03[W]" - }, - { - "Id": "D01Z05S08[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S03[E]" - }, - { - "Id": "D01Z05S09[NW]", - "Direction": 1, - "OriginalDoor": "D01Z05S05[E]" - }, - { - "Id": "D01Z05S09[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S10[W]" - }, - { - "Id": "D01Z05S10[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S09[SE]" - }, - { - "Id": "D01Z05S10[NE]", - "Direction": 2, - "OriginalDoor": "D01Z05S11[W]" - }, - { - "Id": "D01Z05S10[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S12[W]" - }, - { - "Id": "D01Z05S10[S]", - "Direction": 3, - "OriginalDoor": "D01Z05S14[N]" - }, - { - "Id": "D01Z05S11[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S10[NE]" - }, - { - "Id": "D01Z05S11[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D01Z05S12[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S10[SE]" - }, - { - "Id": "D01Z05S12[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S09[W]", - "Type": 1 - }, - { - "Id": "D01Z05S13[SW]", - "Direction": 3, - "OriginalDoor": "D01Z05S16[N]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z05S13[E]" ], - "Logic": "D01Z05S13[SW] || canSurvivePoison3 && canWaterJump" - }, - { - "Id": "D01Z05S13[N]", - "Direction": 0, - "OriginalDoor": "D01Z05S03[S]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D01Z05S13[E]" ], - "Logic": "D01Z05S13[N] || canSurvivePoison3 && canWaterJump" - }, - { - "Id": "D01Z05S13[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S14[W]", - "VisibilityFlags": 1 - }, - { - "Id": "D01Z05S14[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S13[E]" - }, - { - "Id": "D01Z05S14[N]", - "Direction": 0, - "OriginalDoor": "D01Z05S10[S]" - }, - { - "Id": "D01Z05S14[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S15[W]" - }, - { - "Id": "D01Z05S15[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S14[SE]" - }, - { - "Id": "D01Z05S15[SW]", - "Direction": 1, - "OriginalDoor": "D01Z05S22[E]" - }, - { - "Id": "D01Z05S15[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S19[W]" - }, - { - "Id": "D01Z05S16[N]", - "Direction": 0, - "OriginalDoor": "D01Z05S13[SW]" - }, - { - "Id": "D01Z05S16[SW]", - "Direction": 1, - "OriginalDoor": "D01Z05S21[E]" - }, - { - "Id": "D01Z05S16[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S17[W]" - }, - { - "Id": "D01Z05S17[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S16[SE]" - }, - { - "Id": "D01Z05S17[E]", - "Direction": 2, - "OriginalDoor": "D01BZ09S01[W]", - "Logic": "dash && (D01Z05S17[E] || canWaterJump || canCrossGap5)" - }, - { - "Id": "D01Z05S18[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S05[SW]" - }, - { - "Id": "D01Z05S19[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S15[SE]" - }, - { - "Id": "D01Z05S19[E]", - "Direction": 2, - "OriginalDoor": "D01Z04S19[W]", - "Type": 1 - }, - { - "Id": "D01Z05S20[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S25[NE]" - }, - { - "Id": "D01Z05S20[N]", - "Direction": 0, - "OriginalDoor": "D01Z05S02[S]" - }, - { - "Id": "D01Z05S21[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S25[E]" - }, - { - "Id": "D01Z05S21[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S16[SW]" - }, - { - "Id": "D01Z05S21[Reward]", - "Direction": 4, - "OriginalDoor": "D01BZ05S01[Reward]", - "Logic": "shroud" - }, - { - "Id": "D01Z05S22[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S15[SW]" - }, - { - "Id": "D01Z05S23[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S24[E]", - "Logic": "chalice && chaliceRooms >= 3" - }, - { - "Id": "D01Z05S23[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S25[W]" - }, - { - "Id": "D01Z05S24[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S04[E]", - "Type": 1 - }, - { - "Id": "D01Z05S24[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S23[W]" - }, - { - "Id": "D01Z05S25[NE]", - "Direction": 2, - "OriginalDoor": "D01Z05S20[W]", - "Logic": "D01Z05S25[SW] || D01Z05S25[SE] || D01Z05S25[NE] || linen" - }, - { - "Id": "D01Z05S25[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S23[E]", - "Logic": "D01Z05S25[W] || (linen && (canWalkOnRoot || doubleJump || canAirStall)) || (D01Z05S25[E] && (canWalkOnRoot || canCrossGap3))" - }, - { - "Id": "D01Z05S25[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S21[W]", - "VisibiliyFlags": 5, - "Logic": "D01Z05S25[E] || canBreakTirana && (linen || D01Z05S25[W] && (canWalkOnRoot || canCrossGap3))" - }, - { - "Id": "D01Z05S25[SW]", - "Direction": 1, - "OriginalDoor": "D03Z03S17[E]", - "Type": 1, - "Logic": "D01Z05S25[SW] || D01Z05S25[SE] || D01Z05S25[NE] || linen" - }, - { - "Id": "D01Z05S25[SE]", - "Direction": 2, - "OriginalDoor": "D01Z05S26[W]", - "Logic": "D01Z05S25[SW] || D01Z05S25[SE] || D01Z05S25[NE] || linen" - }, - { - "Id": "D01Z05S25[EchoesW]", - "Direction": 1, - "OriginalDoor": "D20Z01S09[E]", - "Type": 1, - "VisibilityFlags": 11, - "RequiredDoors": [ "D01Z05S25[EchoesE]" ], - "Logic": "D01Z05S25[EchoesW] || (D01Z05S25[EchoesE] && (blood || canCrossGap8)) || (linen && doubleJump)" - }, - { - "Id": "D01Z05S25[EchoesE]", - "Direction": 2, - "OriginalDoor": "D20Z01S10[W]", - "Type": 1, - "VisibilityFlags": 11, - "RequiredDoors": [ "D01Z05S25[EchoesW]" ], - "Logic": "D01Z05S25[EchoesE] || (D01Z05S25[EchoesW] && (blood || canCrossGap8)) || (linen && doubleJump)" - }, - { - "Id": "D01Z05S26[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S25[SE]" - }, - { - "Id": "D01Z05S27[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S01[W]" - }, - { - "Id": "D01BZ05S01[Reward]", - "Direction": 7, - "OriginalDoor": "D01Z05S21[Reward]" - }, - { - "Id": "D01BZ09S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S17[E]" - }, - - { - "Id": "D01Z06S01[N]", - "Direction": 1, - "OriginalDoor": "D01Z01S01[S]", - "Type": 1 - }, - { - "Id": "D01Z06S01[Santos]", - "Direction": 4, - "OriginalDoor": "D01BZ07S01[Santos]", - "Logic": "bell" - }, - { - "Id": "D01BZ07S01[Santos]", - "Direction": 7, - "OriginalDoor": "D01Z06S01[Santos]" - }, - - { - "Id": "D02Z01S01[SW]", - "Direction": 1, - "OriginalDoor": "D02Z01S06[E]", - "Logic": "openedWOTWCave && (D02Z01S01[W] || D02Z01S01[CherubsL] || D02Z01S01[SW] || D02Z01S01[CherubsR] || doubleJump || wallClimb)" - }, - { - "Id": "D02Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D02Z01S02[E]", - "Logic": "D02Z01S01[W] || D02Z01S01[CherubsL] || wallClimb || doubleJump || ((D02Z01S01[SW] || D02Z01S01[CherubsR]) && canDawnJump)" - }, - { - "Id": "D02Z01S01[SE]", - "Direction": 2, - "OriginalDoor": "D01Z03S04[NW]", - "Type": 1 - }, - { - "Id": "D02Z01S01[CherubsL]", - "Direction": 5 - }, - { - "Id": "D02Z01S01[CherubsR]", - "Direction": 5 - }, - { - "Id": "D02Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D02Z01S04[E]" - }, - { - "Id": "D02Z01S02[NW]", - "Direction": 1, - "OriginalDoor": "D02Z01S03[SE]", - "Logic": "D02Z01S02[NW] || wallClimb || doubleJump || (D02Z01S02[NE] && canWalkOnRoot && canCrossGap5)" - }, - { - "Id": "D02Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S01[W]" - }, - { - "Id": "D02Z01S02[NE]", - "Direction": 2, - "OriginalDoor": "D02Z01S09[W]", - "Logic": "D02Z01S02[NE] || (doubleJump && canEnemyBounce) || (D02Z01S02[NW] || wallClimb || doubleJump) && (canWalkOnRoot || canCrossGap10)" - }, - { - "Id": "D02Z01S02[]", - "Direction": 6, - "OriginalDoor": "D02Z01S06[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D02Z01S03[SW]", - "Direction": 1, - "OriginalDoor": "D02Z01S05[E]" - }, - { - "Id": "D02Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S01[E]", - "Type": 1, - "Logic": "D02Z01S03[W] || D02Z01S03[SE] || D02Z01S03[Cherubs] || wallClimb" - }, - { - "Id": "D02Z01S03[SE]", - "Direction": 2, - "OriginalDoor": "D02Z01S02[NW]", - "Logic": "D02Z01S03[W] || D02Z01S03[SE] || D02Z01S03[Cherubs] || wallClimb" - }, - { - "Id": "D02Z01S03[Cherubs]", - "Direction": 5 - }, - { - "Id": "D02Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S02[W]" - }, - { - "Id": "D02Z01S04[-N]", - "Direction": 6, - "OriginalDoor": "D02Z01S08[N]", - "Logic": "fullThimble && (D02Z01S01[W] || D02Z01S01[CherubsL] || wallClimb || doubleJump || ((D02Z01S01[SW] || D02Z01S01[CherubsR]) && canDawnJump))" - }, - { - "Id": "D02Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S03[SW]" - }, - { - "Id": "D02Z01S06[W]", - "Direction": 1, - "OriginalDoor": "D02Z01S08[E]", - "Logic": "D02Z01S06[W] || dash || wallClimb && doubleJump" - }, - { - "Id": "D02Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S01[SW]", - "Logic": "D02Z01S06[E] || wallClimb" - }, - { - "Id": "D02Z01S06[Cherubs]", - "Direction": 5 - }, - { - "Id": "D02Z01S08[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S06[W]" - }, - { - "Id": "D02Z01S08[N]", - "Direction": 5 - }, - { - "Id": "D02Z01S09[W]", - "Direction": 1, - "OriginalDoor": "D02Z01S02[NE]" - }, - { - "Id": "D02Z01S09[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D02Z01S01[CherubsL]", - "Logic": "linen" - }, - { - "Id": "D02Z01S09[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D02Z01S01[CherubsR]", - "Logic": "linen && (canWalkOnRoot || canCrossGap2 || canEnemyBounce && canAirStall)" - }, - - { - "Id": "D02Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S08[E]", - "Logic": "D02Z02S01[W] || D02Z02S01[NW] || D02Z02S01[Cherubs] || dash" - }, - { - "Id": "D02Z02S01[NW]", - "Direction": 1, - "OriginalDoor": "D02Z02S02[SE]", - "Logic": "D02Z02S01[NW] || D02Z02S01[Cherubs] || wallClimb && (D02Z02S01[W] || dash)" - }, - { - "Id": "D02Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D02Z01S03[W]", - "Type": 1, - "Logic": "D02Z02S01[E] || D02Z02S01[NW] || D02Z02S01[Cherubs] || wallClimb || dash" - }, - { - "Id": "D02Z02S01[Cherubs]", - "Direction": 5 - }, - { - "Id": "D02Z02S02[SE]", - "Direction": 2, - "OriginalDoor": "D02Z02S01[NW]" - }, - { - "Id": "D02Z02S02[NW]", - "Direction": 1, - "OriginalDoor": "D02Z02S04[SE]", - "Logic": "D02Z02S02[NW] || D02Z02S02[NE] || D02Z02S02[CherubsL] || D02Z02S02[CherubsR] || wallClimb" - }, - { - "Id": "D02Z02S02[NE]", - "Direction": 2, - "OriginalDoor": "D02Z02S03[SW]", - "Logic": "D02Z02S02[NW] || D02Z02S02[NE] || D02Z02S02[CherubsL] || D02Z02S02[CherubsR] || wallClimb" - }, - { - "Id": "D02Z02S02[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D02Z02S08[CherubsR]", - "Logic": "linen" - }, - { - "Id": "D02Z02S02[CherubsL]", - "Direction": 5 - }, - { - "Id": "D02Z02S02[CherubsR]", - "Direction": 5 - }, - { - "Id": "D02Z02S03[SW]", - "Direction": 1, - "OriginalDoor": "D02Z02S02[NE]" - }, - { - "Id": "D02Z02S03[NW]", - "Direction": 1, - "OriginalDoor": "D02Z02S05[SE]", - "Logic": "D02Z02S03[NW] || doubleJump || wallClimb || D02Z02S03[NE] && canWalkOnRoot" - }, - { - "Id": "D02Z02S03[NE]", - "Direction": 2, - "OriginalDoor": "D02Z02S14[W]", - "Logic": "D02Z02S03[NE] || wallClimb && (canCrossGap11 || (blood && (canWalkOnRoot || canCrossGap7)) || (canWalkOnRoot && (doubleJump || canAirStall)))" - }, - { - "Id": "D02Z02S03[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D02Z02S01[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D02Z02S04[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S09[E]", - "Logic": "D02Z02S04[NE] || D02Z02S04[W] || D02Z02S04[E] && dash || D02Z02S04[SE] && (wallClimb || doubleJump && canEnemyUpslash)" - }, - { - "Id": "D02Z02S04[SE]", - "Direction": 2, - "OriginalDoor": "D02Z02S02[NW]", - "Logic": "D02Z02S04[NE] || D02Z02S04[W] || D02Z02S04[SE] || dash" - }, - { - "Id": "D02Z02S04[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S05[SW]", - "VisibilityFlags": 1 - }, - { - "Id": "D02Z02S04[NE]", - "Direction": 2, - "OriginalDoor": "D02Z02S05[W]", - "Logic": "D02Z02S04[NE] || ((D02Z02S04[W] || D02Z02S04[E] && dash) && (doubleJump || wallClimb)) || (D02Z02S04[SE] && (wallClimb || doubleJump && canEnemyUpslash))" - }, - { - "Id": "D02Z02S04[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D02Z02S08[CherubsL]", - "Logic": "linen && (D02Z02S04[NE] || D02Z02S04[W] || D02Z02S04[SE] || dash)" - }, - { - "Id": "D02Z02S05[SW]", - "Direction": 1, - "OriginalDoor": "D02Z02S04[E]" - }, - { - "Id": "D02Z02S05[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S04[NE]", - "VisibilityFlags": 65, - "Logic": "D02Z02S05[W] || doubleJump && canEnemyBounce" - }, - { - "Id": "D02Z02S05[SE]", - "Direction": 2, - "OriginalDoor": "D02Z02S03[NW]" - }, - { - "Id": "D02Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S10[W]", - "Logic": "D02Z02S05[NW] || D02Z02S05[E] || wallClimb" - }, - { - "Id": "D02Z02S05[NW]", - "Direction": 1, - "OriginalDoor": "D02Z02S07[E]", - "Logic": "D02Z02S05[NW] || wallClimb" - }, - { - "Id": "D02Z02S05[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D02Z02S02[CherubsL]", - "Logic": "linen" - }, - { - "Id": "D02Z02S05[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D02Z02S02[CherubsR]", - "Logic": "linen" - }, - { - "Id": "D02Z02S06[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S11[W]" - }, - { - "Id": "D02Z02S07[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S01[E]", - "Type": 1 - }, - { - "Id": "D02Z02S07[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S05[NW]" - }, - { - "Id": "D02Z02S07[Cherubs]", - "Direction": 5 - }, - { - "Id": "D02Z02S08[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S11[SE]" - }, - { - "Id": "D02Z02S08[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S01[W]" - }, - { - "Id": "D02Z02S08[C]", - "Direction": 4, - "OriginalDoor": "D02BZ02S01[C]" - }, - { - "Id": "D02Z02S08[CherubsL]", - "Direction": 5 - }, - { - "Id": "D02Z02S08[CherubsR]", - "Direction": 5 - }, - { - "Id": "D02Z02S09[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S04[W]" - }, - { - "Id": "D02Z02S10[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S05[E]" - }, - { - "Id": "D02Z02S11[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S06[E]" - }, - { - "Id": "D02Z02S11[SE]", - "Direction": 2, - "OriginalDoor": "D02Z02S08[W]" - }, - { - "Id": "D02Z02S11[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S12[W]", - "Logic": "D02Z02S11[E] || D02Z02S11[NW] || D02Z02S11[NE] || canCrossGap6" - }, - { - "Id": "D02Z02S11[NW]", - "Direction": 1, - "OriginalDoor": "D02Z03S14[E]", - "Type": 1, - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z02S11[NE]" ] - }, - { - "Id": "D02Z02S11[NE]", - "Direction": 2, - "OriginalDoor": "D02Z02S13[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z02S11[NW]" ] - }, - { - "Id": "D02Z02S11[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D01Z02S03[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D02Z02S12[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S11[E]" - }, - { - "Id": "D02Z02S13[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S11[NE]" - }, - { - "Id": "D02Z02S14[W]", - "Direction": 1, - "OriginalDoor": "D02Z02S03[NE]" - }, - { - "Id": "D02Z02S14[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D02Z01S03[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D02BZ02S01[C]", - "Direction": 7, - "OriginalDoor": "D02Z02S08[C]" - }, - - { - "Id": "D02Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S08[E]" - }, - { - "Id": "D02Z03S01[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S07[W]", - "Type": 1 - }, - { - "Id": "D02Z03S02[S]", - "Direction": 3, - "OriginalDoor": "D02Z03S16[N]" - }, - { - "Id": "D02Z03S02[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S03[E]", - "Logic": "D02Z03S02[NW] || D02Z03S02[NE] || D02Z03S02[N] || D02Z03S02[W] || doubleJump || wallClimb" - }, - { - "Id": "D02Z03S02[NW]", - "Direction": 1, - "OriginalDoor": "D02Z03S21[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z03S02[NE]", "D02Z03S02[N]" ] - }, - { - "Id": "D02Z03S02[NE]", - "Direction": 2, - "OriginalDoor": "D02Z03S13[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z03S02[NW]", "D02Z03S02[N]" ] - }, - { - "Id": "D02Z03S02[N]", - "Direction": 0, - "OriginalDoor": "D02Z03S11[S]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D02Z03S02[NW]", "D02Z03S02[NE]" ], - "Logic": "openedConventLadder" - }, - { - "Id": "D02Z03S03[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S05[E]" - }, - { - "Id": "D02Z03S03[NW]", - "Direction": 1, - "OriginalDoor": "D02Z03S05[NE]", - "Logic": "D02Z03S03[NW] || blood || canCrossGap3" - }, - { - "Id": "D02Z03S03[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S02[W]" - }, - { - "Id": "D02Z03S05[S]", - "Direction": 3, - "OriginalDoor": "D02Z03S07[N]", - "Logic": "D02Z03S05[S] || D02Z03S05[NE] || wallClimb" - }, - { - "Id": "D02Z03S05[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S03[W]" - }, - { - "Id": "D02Z03S05[NE]", - "Direction": 2, - "OriginalDoor": "D02Z03S03[NW]", - "Logic": "D02Z03S05[S] || D02Z03S05[NE] || wallClimb || doubleJump" - }, - { - "Id": "D02Z03S06[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S18[SE]" - }, - { - "Id": "D02Z03S06[S]", - "Direction": 3, - "OriginalDoor": "D02Z03S07[NW]" - }, - { - "Id": "D02Z03S07[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S17[E]" - }, - { - "Id": "D02Z03S07[NWW]", - "Direction": 1, - "OriginalDoor": "D02Z03S24[E]" - }, - { - "Id": "D02Z03S07[NW]", - "Direction": 0, - "OriginalDoor": "D02Z03S06[S]" - }, - { - "Id": "D02Z03S07[N]", - "Direction": 0, - "OriginalDoor": "D02Z03S05[S]" - }, - { - "Id": "D02Z03S07[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S08[W]" - }, - { - "Id": "D02Z03S08[SW]", - "Direction": 1, - "OriginalDoor": "D02Z03S12[E]" - }, - { - "Id": "D02Z03S08[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S07[E]", - "VisibilityFlags": 1 - }, - { - "Id": "D02Z03S08[SE]", - "Direction": 2, - "OriginalDoor": "D02Z03S14[W]" - }, - { - "Id": "D02Z03S08[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S01[W]" - }, - { - "Id": "D02Z03S08[NE]", - "Direction": 2, - "OriginalDoor": "D02Z03S16[W]" - }, - { - "Id": "D02Z03S09[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S18[NE]" - }, - { - "Id": "D02Z03S09[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S20[W]" - }, - { - "Id": "D02Z03S10[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S11[E]" - }, - { - "Id": "D02Z03S10[-W]", - "Direction": 2, - "OriginalDoor": "D09Z01S06[-E]", - "Type": 1 - }, - { - "Id": "D02Z03S10[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D02Z02S07[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D02Z03S11[S]", - "Direction": 3, - "OriginalDoor": "D02Z03S02[N]" - }, - { - "Id": "D02Z03S11[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S15[E]" - }, - { - "Id": "D02Z03S11[NW]", - "Direction": 1, - "OriginalDoor": "D02Z03S19[E]" - }, - { - "Id": "D02Z03S11[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S10[W]" - }, - { - "Id": "D02Z03S11[NE]", - "Direction": 2, - "OriginalDoor": "D02Z03S22[W]" - }, - { - "Id": "D02Z03S12[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S08[SW]" - }, - { - "Id": "D02Z03S13[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S02[NE]" - }, - { - "Id": "D02Z03S14[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S08[SE]" - }, - { - "Id": "D02Z03S14[E]", - "Direction": 2, - "OriginalDoor": "D02Z02S11[NW]", - "Type": 1 - }, - { - "Id": "D02Z03S15[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S11[W]" - }, - { - "Id": "D02Z03S16[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S08[NE]" - }, - { - "Id": "D02Z03S16[N]", - "Direction": 0, - "OriginalDoor": "D02Z03S02[S]" - }, - { - "Id": "D02Z03S17[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S07[W]" - }, - { - "Id": "D02Z03S18[NW]", - "Direction": 1, - "OriginalDoor": "D02Z03S23[E]", - "Logic": "D02Z03S18[NW] || D02Z03S18[NE] || wallClimb" - }, - { - "Id": "D02Z03S18[SE]", - "Direction": 2, - "OriginalDoor": "D02Z03S06[W]" - }, - { - "Id": "D02Z03S18[NE]", - "Direction": 2, - "OriginalDoor": "D02Z03S09[W]", - "Logic": "D02Z03S18[NW] || D02Z03S18[NE] || wallClimb" - }, - { - "Id": "D02Z03S19[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S11[NW]" - }, - { - "Id": "D02Z03S20[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S09[E]", - "Logic": "D02Z03S20[W] || canBeatConventBoss" - }, - { - "Id": "D02Z03S20[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S21[W]", - "Logic": "D02Z03S20[E] || canBeatConventBoss" - }, - { - "Id": "D02Z03S21[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S20[E]" - }, - { - "Id": "D02Z03S21[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S02[NW]" - }, - { - "Id": "D02Z03S22[W]", - "Direction": 1, - "OriginalDoor": "D02Z03S11[NE]" - }, - { - "Id": "D02Z03S23[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S18[NW]" - }, - { - "Id": "D02Z03S24[E]", - "Direction": 2, - "OriginalDoor": "D02Z03S07[NWW]" - }, - - { - "Id": "D03Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D03Z01S02[E]" - }, - { - "Id": "D03Z01S01[NE]", - "Direction": 2, - "OriginalDoor": "D01Z05S02[W]", - "Type": 1 - }, - { - "Id": "D03Z01S01[S]", - "Direction": 3, - "OriginalDoor": "D20Z01S03[N]", - "Type": 1, - "VisibilityFlags": 1 - }, - { - "Id": "D03Z01S01[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D20Z01S01[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D03Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D03Z01S06[E]", - "Logic": "D03Z01S02[W] || wallClimb || canCrossGap3" - }, - { - "Id": "D03Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D03Z01S01[W]", - "Logic": "D03Z01S02[E] || wallClimb || canCrossGap7" - }, - { - "Id": "D03Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D03Z01S04[E]", - "Logic": "D03Z01S03[W] || wallClimb && (D03Z01S03[SW] || canCrossGap9)" - }, - { - "Id": "D03Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D03Z01S06[W]", - "Logic": "D03Z01S03[E] || wallClimb" - }, - { - "Id": "D03Z01S03[SW]", - "Direction": 3, - "OriginalDoor": "D03Z02S10[N]", - "Type": 1, - "Logic": "D03Z01S03[W] || D03Z01S03[SW] || canCrossGap9" - }, - { - "Id": "D03Z01S03[SE]", - "Direction": 3, - "OriginalDoor": "D03Z02S01[N]", - "Type": 1 - }, - { - "Id": "D03Z01S03[-WestL]", - "Direction": 6, - "OriginalDoor": "D03Z02S10[Cherubs]", - "Type": 1, - "Logic": "linen && (D03Z01S03[W] || D03Z01S03[SW] || canCrossGap9)" - }, - { - "Id": "D03Z01S03[-WestR]", - "Direction": 6, - "OriginalDoor": "D03Z02S02[CherubsL]", - "Type": 1, - "Logic": "linen && (D03Z01S03[W] || D03Z01S03[SW] || canCrossGap9)" - }, - { - "Id": "D03Z01S03[-EastL]", - "Direction": 6, - "OriginalDoor": "D03Z02S02[CherubsR]", - "Type": 1, - "Logic": "linen && (D03Z01S03[W] || D03Z01S03[SW] || canCrossGap5)" - }, - { - "Id": "D03Z01S03[-EastR]", - "Direction": 6, - "OriginalDoor": "D03Z02S01[Cherubs]", - "Type": 1, - "Logic": "linen" - }, - { - "Id": "D03Z01S04[NW]", - "Direction": 1, - "OriginalDoor": "D03Z01S05[E]" - }, - { - "Id": "D03Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D03Z01S03[W]" - }, - { - "Id": "D03Z01S05[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S07[SE]", - "Type": 1 - }, - { - "Id": "D03Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D03Z01S04[NW]" - }, - { - "Id": "D03Z01S06[W]", - "Direction": 1, - "OriginalDoor": "D03Z01S03[E]", - "Logic": "D03Z01S06[W] || canBeatPerpetua" - }, - { - "Id": "D03Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D03Z01S02[W]", - "Logic": "D03Z01S06[E] || canBeatPerpetua" - }, - - { - "Id": "D03Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S02[E]", - "Logic": "D03Z02S01[W] || wallClimb || doubleJump && canEnemyBounce" - }, - { - "Id": "D03Z02S01[N]", - "Direction": 0, - "OriginalDoor": "D03Z01S03[SE]", - "Type": 1, - "Logic": "D03Z02S01[N] || wallClimb || doubleJump" - }, - { - "Id": "D03Z02S01[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D03Z02S02[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S10[E]", - "Logic": "D03Z02S02[W] || D03Z02S02[CherubsL] || doubleJump && (D03Z02S02[E] || D03Z02S02[CherubsR] || wallClimb || canEnemyBounce)" - }, - { - "Id": "D03Z02S02[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S01[W]", - "Logic": "D03Z02S02[E] || wallClimb || doubleJump && canEnemyBounce" - }, - { - "Id": "D03Z02S02[S]", - "Direction": 3, - "OriginalDoor": "D03Z02S03[N]" - }, - { - "Id": "D03Z02S02[CherubsL]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D03Z02S02[CherubsR]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D03Z02S03[W]", - "Direction": 3, - "OriginalDoor": "D03Z02S07[N]", - "Logic": "D03Z02S03[W] || dash && (D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S05[W]", - "Logic": "D03Z02S03[E] || (canAirStall || doubleJump || boots) && (D03Z02S03[E] && dash || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[N]", - "Direction": 0, - "OriginalDoor": "D03Z02S02[S]", - "Logic": "D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2]" - }, - { - "Id": "D03Z02S03[SE2]", - "Direction": 3, - "OriginalDoor": "D03Z02S04[NW]", - "Logic": "D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2]" - }, - { - "Id": "D03Z02S03[SW]", - "Direction": 1, - "OriginalDoor": "D03Z02S07[E]", - "Logic": "D03Z02S03[SW] || D03Z02S03[SE] || D03Z02S03[SSL] || D03Z02S03[SSR] || brokeJondoBellW && brokeJondoBellE && (D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[SE]", - "Direction": 2, - "OriginalDoor": "D03Z02S06[W]", - "Logic": "D03Z02S03[SW] || D03Z02S03[SE] || D03Z02S03[SSL] || D03Z02S03[SSR] || brokeJondoBellW && brokeJondoBellE && (D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[SSL]", - "Direction": 3, - "OriginalDoor": "D03Z03S01[NL]", - "Type": 1, - "Logic": "D03Z02S03[SW] || D03Z02S03[SE] || D03Z02S03[SSL] || D03Z02S03[SSR] || brokeJondoBellW && brokeJondoBellE && (D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[SSC]", - "Direction": 6, - "OriginalDoor": "D03Z03S01[NC]", - "Type": 1, - "Logic": "D03Z02S03[SW] || D03Z02S03[SE] || D03Z02S03[SSL] || D03Z02S03[SSR] || brokeJondoBellW && brokeJondoBellE && (D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S03[SSR]", - "Direction": 3, - "OriginalDoor": "D03Z03S01[NR]", - "Type": 1, - "Logic": "D03Z02S03[SW] || D03Z02S03[SE] || D03Z02S03[SSL] || D03Z02S03[SSR] || brokeJondoBellW && brokeJondoBellE && (D03Z02S03[W] && dash || D03Z02S03[E] || D03Z02S03[N] || D03Z02S03[SE2])" - }, - { - "Id": "D03Z02S04[NW]", - "Direction": 0, - "OriginalDoor": "D03Z02S03[SE2]", - "Logic": "D03Z02S04[NW] || wallClimb || doubleJump" - }, - { - "Id": "D03Z02S04[NE]", - "Direction": 0, - "OriginalDoor": "D03Z02S05[S]", - "Logic": "D03Z02S04[NE] || wallClimb || (D03Z02S04[S] && doubleJump)" - }, - { - "Id": "D03Z02S04[S]", - "Direction": 3, - "OriginalDoor": "D03Z02S06[N]", - "Logic": "D03Z02S04[NE] || D03Z02S04[S] || wallClimb" - }, - { - "Id": "D03Z02S05[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S03[E]" - }, - { - "Id": "D03Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S11[W]", - "Logic": "D03Z02S05[E] || D03Z02S05[S] || canCrossGap5 || (canEnemyBounce && canCrossGap3)" - }, - { - "Id": "D03Z02S05[S]", - "Direction": 3, - "OriginalDoor": "D03Z02S04[NE]", - "Logic": "D03Z02S05[E] || D03Z02S05[S] || canCrossGap5 || (canEnemyBounce && canCrossGap3)" - }, - { - "Id": "D03Z02S06[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S03[SE]", - "VisibilityFlags": 1 - }, - { - "Id": "D03Z02S06[N]", - "Direction": 0, - "OriginalDoor": "D03Z02S04[S]" - }, - { - "Id": "D03Z02S07[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S08[E]" - }, - { - "Id": "D03Z02S07[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S03[SW]", - "VisibilityFlags": 1 - }, - { - "Id": "D03Z02S07[N]", - "Direction": 0, - "OriginalDoor": "D03Z02S03[W]" - }, - { - "Id": "D03Z02S08[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S14[E]", - "Logic": "D03Z02S08[N] || D03Z02S08[W] || wallClimb || doubleJump" - }, - { - "Id": "D03Z02S08[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S07[W]" - }, - { - "Id": "D03Z02S08[N]", - "Direction": 0, - "OriginalDoor": "D03Z02S09[S]", - "Logic": "D03Z02S08[N] || D03Z02S08[W] || wallClimb || doubleJump" - }, - { - "Id": "D03Z02S09[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S12[E]", - "Logic": "D03Z02S09[W] || dash" - }, - { - "Id": "D03Z02S09[N]", - "Direction": 0, - "OriginalDoor": "D03Z02S10[S]", - "Logic": "D03Z02S09[N] || D03Z02S09[S] || D03Z02S09[Cherubs] || dash" - }, - { - "Id": "D03Z02S09[S]", - "Direction": 3, - "OriginalDoor": "D03Z02S08[N]", - "Logic": "D03Z02S09[N] || D03Z02S09[S] || D03Z02S09[Cherubs] || dash" - }, - { - "Id": "D03Z02S09[Cherubs]", - "Direction": 5 - }, - { - "Id": "D03Z02S10[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S13[E]" - }, - { - "Id": "D03Z02S10[N]", - "Direction": 0, - "OriginalDoor": "D03Z01S03[SW]", - "Type": 1 - }, - { - "Id": "D03Z02S10[S]", - "Direction": 3, - "OriginalDoor": "D03Z02S09[N]" - }, - { - "Id": "D03Z02S10[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S02[W]" - }, - { - "Id": "D03Z02S10[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D03Z02S09[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D03Z02S10[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D03Z02S11[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S05[E]", - "Logic": "D03Z02S11[W] || dash && (doubleJump || wallClimb || canCrossGap2)" - }, - { - "Id": "D03Z02S11[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S15[W]", - "Logic": "D03Z02S11[E] || dash && (wallClimb || doubleJump)" - }, - { - "Id": "D03Z02S12[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S09[W]" - }, - { - "Id": "D03Z02S12[Cherubs]", - "Direction": 5 - }, - { - "Id": "D03Z02S13[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S10[W]" - }, - { - "Id": "D03Z02S13[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D03Z02S12[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D03Z02S14[E]", - "Direction": 2, - "OriginalDoor": "D03Z02S08[W]" - }, - { - "Id": "D03Z02S15[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S11[E]" - }, - { - "Id": "D03Z02S15[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S01[W]", - "Type": 1 - }, - - { - "Id": "D03Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S18[E]" - }, - { - "Id": "D03Z03S01[S]", - "Direction": 2, - "OriginalDoor": "D03Z03S12[W]" - }, - { - "Id": "D03Z03S01[NL]", - "Direction": 0, - "OriginalDoor": "D03Z02S03[SSL]", - "Type": 1, - "Logic": "D03Z03S01[NL] || D03Z03S01[NR] || D03Z03S01[NC] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S01[NC]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D03Z03S01[NR]", - "Direction": 0, - "OriginalDoor": "D03Z02S03[SSR]", - "Type": 1, - "Logic": "D03Z03S01[NL] || D03Z03S01[NR] || D03Z03S01[NC] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S02[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S12[E]", - "Logic": "D03Z03S02[NE] || D03Z03S02[W] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S02[NE]", - "Direction": 2, - "OriginalDoor": "D03Z03S14[W]", - "Logic": "D03Z03S02[NE] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S02[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S03[W]" - }, - { - "Id": "D03Z03S03[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S02[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D03Z03S03[NE]" ] - }, - { - "Id": "D03Z03S03[NE]", - "Direction": 2, - "OriginalDoor": "D03Z03S04[NW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D03Z03S03[W]" ] - }, - { - "Id": "D03Z03S03[SE]", - "Direction": 2, - "OriginalDoor": "D03Z03S04[SW]", - "VisibilityFlags": 1 - }, - { - "Id": "D03Z03S04[NW]", - "Direction": 1, - "OriginalDoor": "D03Z03S03[NE]", - "Logic": "D03Z03S04[NW] || D03Z03S04[NE] || (wallClimb || doubleJump) && (D03Z03S04[E] || D03Z03S04[SW] || blood || canCrossGap10)" - }, - { - "Id": "D03Z03S04[NE]", - "Direction": 2, - "OriginalDoor": "D03Z03S05[NW]", - "Logic": "D03Z03S04[NE] || wallClimb && (D03Z03S04[NW] || D03Z03S04[E] || D03Z03S04[SW] || blood || canCrossGap10)" - }, - { - "Id": "D03Z03S04[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S05[SW]", - "Logic": "D03Z03S04[NW] || D03Z03S04[NE] || D03Z03S04[E] || (wallClimb || doubleJump) && (D03Z03S04[SW] || blood || canCrossGap10)" - }, - { - "Id": "D03Z03S04[SW]", - "Direction": 1, - "OriginalDoor": "D03Z03S03[SE]", - "Logic": "D03Z03S04[NW] || D03Z03S04[NE] || D03Z03S04[E] || D03Z03S04[SW] || blood || canCrossGap10" - }, - { - "Id": "D03Z03S04[SE]", - "Direction": 2, - "OriginalDoor": "D03Z03S13[W]", - "Logic": "D03Z03S04[SE] || blood" - }, - { - "Id": "D03Z03S04[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D03Z03S10[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D03Z03S05[NW]", - "Direction": 1, - "OriginalDoor": "D03Z03S04[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D03Z03S05[NE]" ] - }, - { - "Id": "D03Z03S05[NE]", - "Direction": 2, - "OriginalDoor": "D03Z03S06[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D03Z03S05[NW]" ] - }, - { - "Id": "D03Z03S05[SW]", - "Direction": 1, - "OriginalDoor": "D03Z03S04[E]", - "Logic": "D03Z03S05[SW] || D03Z03S05[SE] || linen" - }, - { - "Id": "D03Z03S05[SE]", - "Direction": 2, - "OriginalDoor": "D03Z03S07[SW]", - "Logic": "D03Z03S05[SW] || D03Z03S05[SE] || linen" - }, - { - "Id": "D03Z03S06[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S05[NE]" - }, - { - "Id": "D03Z03S07[NW]", - "Direction": 1, - "OriginalDoor": "D03Z03S19[E]", - "Logic": "D03Z03S07[NW] || D03Z03S07[NE] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S07[NE]", - "Direction": 2, - "OriginalDoor": "D03Z03S08[W]", - "Logic": "D03Z03S07[NW] || D03Z03S07[NE] || wallClimb || doubleJump" - }, - { - "Id": "D03Z03S07[SW]", - "Direction": 1, - "OriginalDoor": "D03Z03S05[SE]" - }, - { - "Id": "D03Z03S07[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S11[W]" - }, - { - "Id": "D03Z03S07[S]", - "Direction": 3, - "OriginalDoor": "D03Z03S09[N]" - }, - { - "Id": "D03Z03S08[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S07[NE]" - }, - { - "Id": "D03Z03S08[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D03Z03S11[CherubsL]", - "Logic": "linen" - }, - { - "Id": "D03Z03S08[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D03Z03S11[CherubsR]", - "Logic": "linen" - }, - { - "Id": "D03Z03S09[SW]", - "Direction": 1, - "OriginalDoor": "D03Z03S10[E]" - }, - { - "Id": "D03Z03S09[N]", - "Direction": 0, - "OriginalDoor": "D03Z03S07[S]" - }, - { - "Id": "D03Z03S10[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S09[SW]" - }, - { - "Id": "D03Z03S10[Cherubs]", - "Direction": 5 - }, - { - "Id": "D03Z03S11[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S07[E]" - }, - { - "Id": "D03Z03S11[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S15[W]" - }, - { - "Id": "D03Z03S11[CherubsL]", - "Direction": 5 - }, - { - "Id": "D03Z03S11[CherubsR]", - "Direction": 5 - }, - { - "Id": "D03Z03S12[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S01[S]" - }, - { - "Id": "D03Z03S12[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S02[W]" - }, - { - "Id": "D03Z03S13[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S04[SE]" - }, - { - "Id": "D03Z03S14[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S02[NE]" - }, - { - "Id": "D03Z03S15[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S11[E]", - "Logic": "canBeatGrievanceBoss" - }, - { - "Id": "D03Z03S15[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S16[W]", - "Logic": "canBeatGrievanceBoss" - }, - { - "Id": "D03Z03S16[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S15[E]" - }, - { - "Id": "D03Z03S16[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S17[W]" - }, - { - "Id": "D03Z03S17[W]", - "Direction": 1, - "OriginalDoor": "D03Z03S16[E]" - }, - { - "Id": "D03Z03S17[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S25[SW]", - "Type": 1 - }, - { - "Id": "D03Z03S18[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S01[W]" - }, - { - "Id": "D03Z03S19[E]", - "Direction": 2, - "OriginalDoor": "D03Z03S07[NW]" - }, - - { - "Id": "D04Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D08Z02S01[E]", - "Type": 1 - }, - { - "Id": "D04Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z01S02[W]" - }, - { - "Id": "D04Z01S01[NE]", - "Direction": 2, - "OriginalDoor": "D04Z01S02[NW]", - "Logic": "D04Z01S01[NE] || D04Z01S01[N] || canCrossGap3" - }, - { - "Id": "D04Z01S01[N]", - "Direction": 0, - "OriginalDoor": "D04Z01S05[S]", - "Logic": "D04Z01S01[NE] || D04Z01S01[N] || canCrossGap3" - }, - { - "Id": "D04Z01S01[Cherubs]", - "Direction": 5 - }, - { - "Id": "D04Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D04Z01S01[E]" - }, - { - "Id": "D04Z01S02[NW]", - "Direction": 1, - "OriginalDoor": "D04Z01S01[NE]" - }, - { - "Id": "D04Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D04Z01S03[W]" - }, - { - "Id": "D04Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D04Z01S02[E]" - }, - { - "Id": "D04Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D04Z01S04[W]" - }, - { - "Id": "D04Z01S03[S]", - "Direction": 3, - "OriginalDoor": "D05Z01S20[N]", - "Type": 1, - "VisibilityFlags": 1 - }, - { - "Id": "D04Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D04Z01S03[E]" - }, - { - "Id": "D04Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S01[W]", - "Type": 1 - }, - { - "Id": "D04Z01S04[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D04Z01S05[S]", - "Direction": 3, - "OriginalDoor": "D04Z01S01[N]" - }, - { - "Id": "D04Z01S05[N]", - "Direction": 0, - "OriginalDoor": "D04Z01S06[S]", - "Logic": "D04Z01S05[N] || (blood && canClimbOnRoot) || doubleJump && (blood || canClimbOnRoot)" - }, - { - "Id": "D04Z01S05[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D04Z01S01[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D04Z01S05[CherubsN]", - "Direction": 5 - }, - { - "Id": "D04Z01S06[S]", - "Direction": 3, - "OriginalDoor": "D04Z01S05[N]" - }, - { - "Id": "D04Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S09[SW]", - "Type": 1, - "VisibilityFlags": 9, - "Logic": "D04Z01S06[E] || doubleJump" - }, - { - "Id": "D04Z01S06[Cherubs]", - "Direction": 6, - "OriginalDoor": "D04Z01S05[CherubsN]", - "Logic": "linen" - }, - - { - "Id": "D04Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D04Z01S04[E]", - "Type": 1 - }, - { - "Id": "D04Z02S01[N]", - "Direction": 0, - "OriginalDoor": "D04Z02S02[S]", - "Logic": "D04Z02S01[N] || D04Z02S01[NE] && dash && (doubleJump || wallClimb)" - }, - { - "Id": "D04Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z03S01[W]", - "Type": 1 - }, - { - "Id": "D04Z02S01[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S03[W]", - "Logic": "D04Z02S01[NE] || D04Z02S01[N] && dash && canCrossGap1" - }, - { - "Id": "D04Z02S02[S]", - "Direction": 3, - "OriginalDoor": "D04Z02S01[N]" - }, - { - "Id": "D04Z02S02[SE]", - "Direction": 2, - "OriginalDoor": "D04Z02S17[W]" - }, - { - "Id": "D04Z02S02[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S15[W]", - "VisibilityFlags": 49, - "Logic": "D04Z02S02[NE] || (doubleJump && upwarpSkipsAllowed) || (doubleJump && canEnemyUpslash) || (canEnemyUpslash && upwarpSkipsAllowed && (wallClimb || D04Z02S02[N]))" - }, - { - "Id": "D04Z02S02[N]", - "Direction": 0, - "OriginalDoor": "D06Z01S02[S]", - "Type": 1, - "Logic": "D04Z02S02[N] || D04Z02S02[NE] || wallClimb || doubleJump" - }, - { - "Id": "D04Z02S03[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S01[NE]" - }, - { - "Id": "D04Z02S03[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S04[NW]" - }, - { - "Id": "D04Z02S04[SW]", - "Direction": 1, - "OriginalDoor": "D04Z02S14[E]" - }, - { - "Id": "D04Z02S04[SE]", - "Direction": 2, - "OriginalDoor": "D05Z01S01[NW]", - "Type": 1 - }, - { - "Id": "D04Z02S04[W]", - "Direction": 1, - "OriginalDoor": "D04Z03S01[E]", - "Type": 1 - }, - { - "Id": "D04Z02S04[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S05[W]" - }, - { - "Id": "D04Z02S04[NW]", - "Direction": 1, - "OriginalDoor": "D04Z02S03[E]", - "Logic": "D04Z02S04[NW] || D04Z02S04[NE] || D04Z02S04[N] || D04Z02S04[Cherubs] || wallClimb && doubleJump" - }, - { - "Id": "D04Z02S04[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S19[W]", - "Logic": "D04Z02S04[NW] || D04Z02S04[NE] || D04Z02S04[N] || D04Z02S04[Cherubs] || wallClimb && doubleJump" - }, - { - "Id": "D04Z02S04[N]", - "Direction": 0, - "OriginalDoor": "D04Z02S06[S]", - "Logic": "(D04Z02S04[NW] || D04Z02S04[NE] || D04Z02S04[N] || D04Z02S04[Cherubs] || wallClimb && doubleJump) && openedMoMLadder" - }, - { - "Id": "D04Z02S04[Cherubs]", - "Direction": 5 - }, - { - "Id": "D04Z02S05[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S04[E]" - }, - { - "Id": "D04Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S07[SW]" - }, - { - "Id": "D04Z02S06[S]", - "Direction": 3, - "OriginalDoor": "D04Z02S04[N]" - }, - { - "Id": "D04Z02S06[NW]", - "Direction": 1, - "OriginalDoor": "D04Z02S11[E]", - "Logic": "D04Z02S06[NW] || D04Z02S06[N] || D04Z02S06[NE] || wallClimb" - }, - { - "Id": "D04Z02S06[N]", - "Direction": 0, - "OriginalDoor": "D06Z01S23[S]", - "Type": 1, - "Logic": "(D04Z02S06[NW] || D04Z02S06[N] || D04Z02S06[NE] || wallClimb) && openedARLadder" - }, - { - "Id": "D04Z02S06[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S09[W]", - "Logic": "D04Z02S06[NW] || D04Z02S06[N] || D04Z02S06[NE] || wallClimb" - }, - { - "Id": "D04Z02S06[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S10[W]" - }, - { - "Id": "D04Z02S06[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D04Z02S04[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D04Z02S07[SW]", - "Direction": 1, - "OriginalDoor": "D04Z02S05[E]" - }, - { - "Id": "D04Z02S07[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S19[E]" - }, - { - "Id": "D04Z02S07[N]", - "Direction": 0, - "OriginalDoor": "D04Z02S08[S]" - }, - { - "Id": "D04Z02S07[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S13[W]" - }, - { - "Id": "D04Z02S07[SE]", - "Direction": 2, - "OriginalDoor": "D04Z02S23[W]" - }, - { - "Id": "D04Z02S08[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S09[E]" - }, - { - "Id": "D04Z02S08[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S20[W]" - }, - { - "Id": "D04Z02S08[S]", - "Direction": 3, - "OriginalDoor": "D04Z02S07[N]" - }, - { - "Id": "D04Z02S08[Cherubs]", - "Direction": 5 - }, - { - "Id": "D04Z02S09[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S06[NE]" - }, - { - "Id": "D04Z02S09[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S08[W]" - }, - { - "Id": "D04Z02S09[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S16[W]", - "Logic": "D04Z02S09[NE] || blood" - }, - { - "Id": "D04Z02S10[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S06[E]" - }, - { - "Id": "D04Z02S11[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S21[SE]" - }, - { - "Id": "D04Z02S11[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S06[NW]" - }, - { - "Id": "D04Z02S12[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S21[NE]" - }, - { - "Id": "D04Z02S13[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S07[NE]" - }, - { - "Id": "D04Z02S14[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S04[SW]" - }, - { - "Id": "D04Z02S15[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S02[NE]" - }, - { - "Id": "D04Z02S15[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S22[W]" - }, - { - "Id": "D04Z02S16[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S09[NE]" - }, - { - "Id": "D04Z02S16[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D04Z02S08[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D04Z02S17[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S02[SE]" - }, - { - "Id": "D04Z02S19[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S04[NE]" - }, - { - "Id": "D04Z02S19[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S07[W]" - }, - { - "Id": "D04Z02S20[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S08[E]" - }, - { - "Id": "D04Z02S20[Redento]", - "Direction": 4, - "OriginalDoor": "D04BZ02S01[Redento]", - "Logic": "redentoRooms >= 5" - }, - { - "Id": "D04Z02S21[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S22[E]", - "Logic": "D04Z02S21[NE] || D04Z02S21[W] || wallClimb || doubleJump" - }, - { - "Id": "D04Z02S21[SE]", - "Direction": 2, - "OriginalDoor": "D04Z02S11[W]" - }, - { - "Id": "D04Z02S21[NE]", - "Direction": 2, - "OriginalDoor": "D04Z02S12[W]", - "Logic": "D04Z02S21[NE] || wallClimb || doubleJump" - }, - { - "Id": "D04Z02S22[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S15[E]", - "Logic": "D04Z02S22[W] || canBeatMothersBoss" - }, - { - "Id": "D04Z02S22[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S21[W]", - "Logic": "D04Z02S22[E] || canBeatMothersBoss" - }, - { - "Id": "D04Z02S23[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S07[SE]" - }, - { - "Id": "D04Z02S23[SE]", - "Direction": 2, - "OriginalDoor": "D04Z02S24[NW]" - }, - { - "Id": "D04Z02S23[NE]", - "Direction": 2, - "OriginalDoor": "D04Z04S01[W]", - "Type": 1 - }, - { - "Id": "D04Z02S24[NW]", - "Direction": 1, - "OriginalDoor": "D04Z02S23[SE]" - }, - { - "Id": "D04Z02S24[SW]", - "Direction": 1, - "OriginalDoor": "D20Z02S01[E]", - "Type": 1 - }, - { - "Id": "D04Z02S24[SE]", - "Direction": 2, - "OriginalDoor": "D04Z02S25[W]" - }, - { - "Id": "D04Z02S25[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S24[SE]" - }, - { - "Id": "D04BZ02S01[Redento]", - "Direction": 7, - "OriginalDoor": "D04Z02S20[Redento]" - }, - - { - "Id": "D04Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S01[E]", - "Type": 1 - }, - { - "Id": "D04Z03S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S04[W]", - "Type": 1 - }, - { - "Id": "D04Z03S02[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S22[E]", - "Type": 1 - }, - - { - "Id": "D04Z04S01[W]", - "Direction": 1, - "OriginalDoor": "D04Z02S23[NE]", - "Type": 1 - }, - { - "Id": "D04Z04S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z04S02[W]", - "Type": 9 - }, - { - "Id": "D04Z04S02[W]", - "Direction": 1, - "OriginalDoor": "D04Z04S01[E]", - "Type": 9 - }, - - { - "Id": "D05Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S02[E]" - }, - { - "Id": "D05Z01S01[NW]", - "Direction": 1, - "OriginalDoor": "D04Z02S04[SE]", - "Type": 1 - }, - { - "Id": "D05Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S16[W]" - }, - { - "Id": "D05Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S15[E]", - "VisibilityFlags": 1 - }, - { - "Id": "D05Z01S02[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S03[E]" - }, - { - "Id": "D05Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S01[W]" - }, - { - "Id": "D05Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S04[E]" - }, - { - "Id": "D05Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S02[NW]" - }, - { - "Id": "D05Z01S03[Frontal]", - "Direction": 4, - "OriginalDoor": "D05BZ01S01[FrontalS]", - "Logic": "woodKey && D05Z01S23[E] && (D05Z01S11[NW] || D05Z01S11[NE])" - }, - { - "Id": "D05Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S05[E]" - }, - { - "Id": "D05Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S03[W]" - }, - { - "Id": "D05Z01S05[SW]", - "Direction": 1, - "OriginalDoor": "D05Z01S07[E]" - }, - { - "Id": "D05Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S04[W]" - }, - { - "Id": "D05Z01S05[NE]", - "Direction": 2, - "OriginalDoor": "D05Z01S17[W]", - "Logic": "D05Z01S05[NE] || blood" - }, - { - "Id": "D05Z01S06[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S24[E]", - "Logic": "D05Z01S06[W] || canSurvivePoison3" - }, - { - "Id": "D05Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S20[W]", - "Logic": "D05Z01S06[E] || canSurvivePoison3" - }, - { - "Id": "D05Z01S07[SW]", - "Direction": 1, - "OriginalDoor": "D05Z01S08[NE]" - }, - { - "Id": "D05Z01S07[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S20[E]", - "Logic": "D05Z01S07[NW] || blood && (canClimbOnRoot || doubleJump) || (canClimbOnRoot && canCrossGap3) || canCrossGap7" - }, - { - "Id": "D05Z01S07[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S05[SW]" - }, - { - "Id": "D05Z01S08[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S10[E]" - }, - { - "Id": "D05Z01S08[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S12[E]" - }, - { - "Id": "D05Z01S08[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S09[W]" - }, - { - "Id": "D05Z01S08[Health]", - "Direction": 2, - "OriginalDoor": "D05Z01S14[W]" - }, - { - "Id": "D05Z01S08[NE]", - "Direction": 2, - "OriginalDoor": "D05Z01S07[SW]" - }, - { - "Id": "D05Z01S09[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S08[E]" - }, - { - "Id": "D05Z01S09[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S18[W]" - }, - { - "Id": "D05Z01S10[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S11[E]" - }, - { - "Id": "D05Z01S10[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S11[NE]" - }, - { - "Id": "D05Z01S10[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S08[W]" - }, - { - "Id": "D05Z01S11[SW]", - "Direction": 1, - "OriginalDoor": "D05Z01S19[E]", - "VisibilityFlags": 5, - "Logic": "canBreakTirana" - }, - { - "Id": "D05Z01S11[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S23[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D05Z01S11[NE]" ] - }, - { - "Id": "D05Z01S11[NE]", - "Direction": 2, - "OriginalDoor": "D05Z01S10[NW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D05Z01S11[NW]" ] - }, - { - "Id": "D05Z01S11[SE]", - "Direction": 2, - "OriginalDoor": "D05Z02S01[W]", - "Type": 1 - }, - { - "Id": "D05Z01S11[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S10[W]" - }, - { - "Id": "D05Z01S12[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S08[NW]" - }, - { - "Id": "D05Z01S13[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S21[NW]" - }, - { - "Id": "D05Z01S14[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S08[Health]" - }, - { - "Id": "D05Z01S15[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S21[NE]" - }, - { - "Id": "D05Z01S15[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S02[W]" - }, - { - "Id": "D05Z01S16[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S01[E]" - }, - { - "Id": "D05Z01S17[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S05[NE]" - }, - { - "Id": "D05Z01S18[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S09[E]" - }, - { - "Id": "D05Z01S19[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S15[E]", - "Type": 1 - }, - { - "Id": "D05Z01S19[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S11[SW]" - }, - { - "Id": "D05Z01S20[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S06[E]" - }, - { - "Id": "D05Z01S20[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S07[NW]" - }, - { - "Id": "D05Z01S20[N]", - "Direction": 0, - "OriginalDoor": "D04Z01S03[S]", - "Type": 1 - }, - { - "Id": "D05Z01S21[SW]", - "Direction": 1, - "OriginalDoor": "D05Z02S14[E]", - "Type": 1 - }, - { - "Id": "D05Z01S21[NW]", - "Direction": 1, - "OriginalDoor": "D05Z01S13[E]" - }, - { - "Id": "D05Z01S21[NE]", - "Direction": 2, - "OriginalDoor": "D05Z01S15[W]" - }, - { - "Id": "D05Z01S21[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D05Z02S11[Cherubs]", - "Type": 1, - "Logic": "linen" - }, - { - "Id": "D05Z01S22[FrontalN]", - "Direction": 4, - "OriginalDoor": "D05BZ01S01[FrontalN]" - }, - { - "Id": "D05Z01S22[E]", - "Direction": 2, - "OriginalDoor": "D04Z03S02[W]", - "Type": 1 - }, - { - "Id": "D05Z01S23[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S11[NW]" - }, - { - "Id": "D05Z01S24[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S06[W]" - }, - { - "Id": "D05BZ01S01[FrontalS]", - "Direction": 7, - "OriginalDoor": "D05Z01S03[Frontal]" - }, - { - "Id": "D05BZ01S01[FrontalN]", - "Direction": 7, - "OriginalDoor": "D05Z01S22[FrontalN]" - }, - - { - "Id": "D05Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D05Z01S11[SE]", - "Type": 1 - }, - { - "Id": "D05Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S02[NW]" - }, - { - "Id": "D05Z02S02[SW]", - "Direction": 1, - "OriginalDoor": "D05Z02S03[E]" - }, - { - "Id": "D05Z02S02[NW]", - "Direction": 1, - "OriginalDoor": "D05Z02S01[E]" - }, - { - "Id": "D05Z02S02[SE]", - "Direction": 2, - "OriginalDoor": "D05Z02S09[W]" - }, - { - "Id": "D05Z02S02[NE]", - "Direction": 2, - "OriginalDoor": "D05Z02S05[W]" - }, - { - "Id": "D05Z02S03[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S04[E]" - }, - { - "Id": "D05Z02S03[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S02[SW]" - }, - { - "Id": "D05Z02S04[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S12[E]" - }, - { - "Id": "D05Z02S04[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S03[W]" - }, - { - "Id": "D05Z02S04[C]", - "Direction": 4, - "OriginalDoor": "D05BZ02S01[C]" - }, - { - "Id": "D05Z02S05[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S02[NE]" - }, - { - "Id": "D05Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S06[SW]" - }, - { - "Id": "D05Z02S06[SW]", - "Direction": 1, - "OriginalDoor": "D05Z02S05[E]" - }, - { - "Id": "D05Z02S06[NW]", - "Direction": 1, - "OriginalDoor": "D05Z02S07[E]" - }, - { - "Id": "D05Z02S06[SE]", - "Direction": 2, - "OriginalDoor": "D05Z02S11[W]", - "Logic": "openedTSCGate" - }, - { - "Id": "D05Z02S06[NE]", - "Direction": 2, - "OriginalDoor": "D05Z02S14[W]" - }, - { - "Id": "D05Z02S07[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S10[E]" - }, - { - "Id": "D05Z02S07[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S06[NW]" - }, - { - "Id": "D05Z02S08[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S09[E]" - }, - { - "Id": "D05Z02S09[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S02[SE]" - }, - { - "Id": "D05Z02S09[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S08[W]", - "Logic": "redWax >= 3 && blueWax >= 3" - }, - { - "Id": "D05Z02S10[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S13[E]", - "Logic": "dash" - }, - { - "Id": "D05Z02S10[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S07[W]" - }, - { - "Id": "D05Z02S11[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S06[SE]" - }, - { - "Id": "D05Z02S11[Cherubs]", - "Direction": 5, - "Type": 1 - }, - { - "Id": "D05Z02S12[W]", - "Direction": 1, - "OriginalDoor": "D01Z04S16[E]", - "Type": 1 - }, - { - "Id": "D05Z02S12[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S04[W]" - }, - { - "Id": "D05Z02S12[N]", - "Direction": 0, - "OriginalDoor": "D05Z02S15[S]" - }, - { - "Id": "D05Z02S13[E]", - "Direction": 2, - "OriginalDoor": "D05Z02S10[W]", - "Logic": "dash" - }, - { - "Id": "D05Z02S14[W]", - "Direction": 1, - "OriginalDoor": "D05Z02S06[NE]", - "Logic": "D05Z02S14[W] || canBeatCanvasesBoss" - }, - { - "Id": "D05Z02S14[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S21[SW]", - "Type": 1, - "Logic": "D05Z02S14[E] || canBeatCanvasesBoss" - }, - { - "Id": "D05Z02S15[S]", - "Direction": 3, - "OriginalDoor": "D05Z02S12[N]" - }, - { - "Id": "D05Z02S15[E]", - "Direction": 2, - "OriginalDoor": "D05Z01S19[W]", - "Type": 1 - }, - { - "Id": "D05BZ02S01[C]", - "Direction": 7, - "OriginalDoor": "D05Z02S04[C]" - }, - - { - "Id": "D06Z01S01[SW]", - "Direction": 1, - "OriginalDoor": "D06Z01S14[E]", - "Logic": "(D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || linen && (D06Z01S01[NW] || D06Z01S01[NE])" - }, - { - "Id": "D06Z01S01[SE]", - "Direction": 2, - "OriginalDoor": "D06Z01S03[W]", - "Logic": "(D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || linen && (D06Z01S01[NW] || D06Z01S01[NE])" - }, - { - "Id": "D06Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S07[E]", - "Logic": "(D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || masks >= 1 && (D06Z01S01[SW] || D06Z01S01[SE]) || linen && (D06Z01S01[NW] || D06Z01S01[NE] && (canWalkOnRoot || canCrossGap1))" - }, - { - "Id": "D06Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S06[WW]", - "Logic": "(D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || masks >= 1 && (D06Z01S01[SW] || D06Z01S01[SE]) || linen && (D06Z01S01[NE] || D06Z01S01[NW] && (canWalkOnRoot || canCrossGap1))" - }, - { - "Id": "D06Z01S01[NW]", - "Direction": 1, - "OriginalDoor": "D06Z01S16[E]", - "Logic": "D06Z01S01[NW] || D06Z01S01[NE] && (canWalkOnRoot || canCrossGap8) || linen && (D06Z01S01[NNW] || D06Z01S01[NNE] && (canWalkOnRoot || canCrossGap3))" - }, - { - "Id": "D06Z01S01[NE]", - "Direction": 2, - "OriginalDoor": "D06Z01S17[W]", - "Logic": "D06Z01S01[NE] || D06Z01S01[NW] && (canWalkOnRoot || canCrossGap8) || linen && (D06Z01S01[NNE] || D06Z01S01[NNW] && (canWalkOnRoot || canCrossGap3))" - }, - { - "Id": "D06Z01S01[NNW]", - "Direction": 1, - "OriginalDoor": "D06Z01S09[E]", - "Logic": "(D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || masks >= 2 && (D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || linen && (D06Z01S01[NW] || D06Z01S01[NE]))" - }, - { - "Id": "D06Z01S01[NNE]", - "Direction": 2, - "OriginalDoor": "D06Z01S10[W]", - "Logic": "(D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N]) || masks >= 2 && (D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || linen && (D06Z01S01[NW] || D06Z01S01[NE]))" - }, - { - "Id": "D06Z01S01[N]", - "Direction": 0, - "OriginalDoor": "D06Z01S19[S]", - "Logic": "masks >= 3 && (D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NNW] || D06Z01S01[NNE] || D06Z01S01[N] || linen && (D06Z01S01[NW] || D06Z01S01[NE]))", - "Type": 9 - }, - { - "Id": "D06Z01S01[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D06Z01S23[Cherubs]", - "Logic": "linen && (D06Z01S01[SW] || D06Z01S01[SE] || D06Z01S01[W] || D06Z01S01[E] || D06Z01S01[NW] || D06Z01S01[NE] || D06Z01S01[NNW] || D06Z01S01[NNE])" - }, - { - "Id": "D06Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S18[E]" - }, - { - "Id": "D06Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S08[W]" - }, - { - "Id": "D06Z01S02[S]", - "Direction": 3, - "OriginalDoor": "D04Z02S02[N]", - "Type": 1 - }, - { - "Id": "D06Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S01[SE]", - "Logic": "D06Z01S03[W] || canBeatLegionary" - }, - { - "Id": "D06Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S04[W]", - "Logic": "D06Z01S03[E] || canBeatLegionary" - }, - { - "Id": "D06Z01S04[SW]", - "Direction": 1, - "OriginalDoor": "D06Z01S20[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S04[W]", "D06Z01S04[Health]" ] - }, - { - "Id": "D06Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S03[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S04[SW]", "D06Z01S04[Health]" ] - }, - { - "Id": "D06Z01S04[Health]", - "Direction": 2, - "OriginalDoor": "D06Z01S24[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S04[SW]", "D06Z01S04[W]" ], - "Logic": "D06Z01S04[Health] || (wallClimb && canSurvivePoison2 && (doubleJump || blood && canClimbOnRoot))" - }, - { - "Id": "D06Z01S04[NW]", - "Direction": 1, - "OriginalDoor": "D06Z01S06[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S04[NE]", "D06Z01S04[Cherubs]" ], - "Logic": "D06Z01S04[NW] || D06Z01S04[Cherubs] || (D06Z01S04[SW] || D06Z01S04[W] || D06Z01S04[Health]) && wallClimb && canSurvivePoison2 && (dash || doubleJump && (canDawnJump || canClimbOnRoot))" - }, - { - "Id": "D06Z01S04[NE]", - "Direction": 2, - "OriginalDoor": "D06Z01S06[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S04[NW]", "D06Z01S04[Cherubs]" ], - "Logic": "D06Z01S04[NE] || (D06Z01S04[SW] || D06Z01S04[W] || D06Z01S04[Health]) && wallClimb && canSurvivePoison2 && (dash || doubleJump && (canDawnJump || canClimbOnRoot))" - }, - { - "Id": "D06Z01S04[Cherubs]", - "Direction": 5 - }, - { - "Id": "D06Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S12[NW]" - }, - { - "Id": "D06Z01S06[WW]", - "Direction": 1, - "OriginalDoor": "D06Z01S01[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S06[E]" ], - "Logic": "D06Z01S06[WW] || canBeatLegionary" - }, - { - "Id": "D06Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S04[NW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S06[WW]" ], - "Logic": "D06Z01S06[E] || canBeatLegionary" - }, - { - "Id": "D06Z01S06[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S04[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S06[EE]" ] - }, - { - "Id": "D06Z01S06[EE]", - "Direction": 2, - "OriginalDoor": "D06Z01S15[SW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S06[W]" ] - }, - { - "Id": "D06Z01S07[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S12[E]" - }, - { - "Id": "D06Z01S07[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S01[W]" - }, - { - "Id": "D06Z01S07[CherubsL]", - "Direction": 5 - }, - { - "Id": "D06Z01S07[CherubsR]", - "Direction": 5 - }, - { - "Id": "D06Z01S08[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S02[E]" - }, - { - "Id": "D06Z01S08[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S14[W]", - "Logic": "D06Z01S08[N] || D06Z01S08[E] || wallClimb" - }, - { - "Id": "D06Z01S08[N]", - "Direction": 0, - "OriginalDoor": "D06Z01S13[S]", - "VisibilityFlags": 1 - }, - { - "Id": "D06Z01S09[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S12[NE]" - }, - { - "Id": "D06Z01S09[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S01[NNW]" - }, - { - "Id": "D06Z01S09[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D06Z01S16[CherubsL]", - "Logic": "linen" - }, - { - "Id": "D06Z01S09[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D06Z01S16[CherubsR]", - "Logic": "linen" - }, - { - "Id": "D06Z01S10[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S01[NNE]" - }, - { - "Id": "D06Z01S10[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S21[W]" - }, - { - "Id": "D06Z01S10[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D06Z01S17[CherubsL]", - "Logic": "linen" - }, - { - "Id": "D06Z01S10[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D06Z01S17[CherubsR]", - "Logic": "linen" - }, - { - "Id": "D06Z01S11[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S15[NE]" - }, - { - "Id": "D06Z01S12[S]", - "Direction": 3, - "OriginalDoor": "D06Z01S14[N]" - }, - { - "Id": "D06Z01S12[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S13[E]", - "Logic": "D06Z01S12[NW] || D06Z01S12[NE] || D06Z01S12[NE2] || D06Z01S12[W] || D06Z01S12[E] || wallClimb && doubleJump" - }, - { - "Id": "D06Z01S12[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S07[W]", - "Logic": "D06Z01S12[NW] || D06Z01S12[NE] || D06Z01S12[NE2] || D06Z01S12[W] || D06Z01S12[E] || wallClimb && doubleJump" - }, - { - "Id": "D06Z01S12[NW]", - "Direction": 1, - "OriginalDoor": "D06Z01S05[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S12[NE]", "D06Z01S12[NE2]" ], - "Logic": "D06Z01S12[NW] || D06Z01S12[NE] || wallClimb || doubleJump" - }, - { - "Id": "D06Z01S12[NE]", - "Direction": 2, - "OriginalDoor": "D06Z01S09[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S12[NW]", "D06Z01S12[NE2]" ], - "Logic": "D06Z01S12[NW] || D06Z01S12[NE] || wallClimb || doubleJump" - }, - { - "Id": "D06Z01S12[NE2]", - "Direction": 2, - "OriginalDoor": "D06Z01S16[W]", - "VisibilityFlags": 1 - }, - { - "Id": "D06Z01S13[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S01[E]", - "Type": 1 - }, - { - "Id": "D06Z01S13[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S12[W]" - }, - { - "Id": "D06Z01S13[S]", - "Direction": 3, - "OriginalDoor": "D06Z01S08[N]" - }, - { - "Id": "D06Z01S14[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S08[E]" - }, - { - "Id": "D06Z01S14[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S01[SW]" - }, - { - "Id": "D06Z01S14[N]", - "Direction": 0, - "OriginalDoor": "D06Z01S12[S]" - }, - { - "Id": "D06Z01S15[SW]", - "Direction": 1, - "OriginalDoor": "D06Z01S06[EE]", - "VisibilityFlags": 1 - }, - { - "Id": "D06Z01S15[NW]", - "Direction": 1, - "OriginalDoor": "D06Z01S21[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S15[NE]" ], - "Logic": "D06Z01S15[NW] || D06Z01S15[SW] && wallClimb" - }, - { - "Id": "D06Z01S15[NE]", - "Direction": 2, - "OriginalDoor": "D06Z01S11[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D06Z01S15[NW]" ], - "Logic": "D06Z01S15[NE] || D06Z01S15[SW] && wallClimb" - }, - { - "Id": "D06Z01S16[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S12[NE2]", - "Logic": "D06Z01S16[W] || (D06Z01S16[CherubsL] && (doubleJump || wallClimb && (canWalkOnRoot || canAirStall))) || (D06Z01S16[CherubsR] && (doubleJump || canAirStall && (canWalkOnRoot || wheel) && (wallClimb || canDawnJump))) || (D06Z01S16[E] && (canWalkOnRoot || canCrossGap7) && (wallClimb || canCrossGap5))" - }, - { - "Id": "D06Z01S16[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S01[NW]", - "Logic": "D06Z01S16[E] || ((D06Z01S16[W] || D06Z01S16[CherubsL]) && (canWalkOnRoot || canCrossGap5)) || (D06Z01S16[CherubsR] && (doubleJump || canAirStall && (canWalkOnRoot || wheel)))" - }, - { - "Id": "D06Z01S16[-CherubsL]", - "Direction": 6, - "OriginalDoor": "D06Z01S07[CherubsL]", - "Logic": "linen && (D06Z01S16[W] || D06Z01S16[CherubsL] || (D06Z01S16[CherubsR] && (doubleJump || canAirStall && (canWalkOnRoot || wheel))) || (D06Z01S16[E] && (canWalkOnRoot || canCrossGap7)))" - }, - { - "Id": "D06Z01S16[-CherubsR]", - "Direction": 6, - "OriginalDoor": "D06Z01S07[CherubsR]", - "Logic": "linen && (D06Z01S16[E] || D06Z01S16[CherubsR] || (D06Z01S16[CherubsL] && (canAirStall || canWalkOnRoot || doubleJump)) || (D06Z01S16[W] && (canWalkOnRoot || canCrossGap1)))" - }, - { - "Id": "D06Z01S16[CherubsL]", - "Direction": 5 - }, - { - "Id": "D06Z01S16[CherubsR]", - "Direction": 5 - }, - { - "Id": "D06Z01S17[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S01[NE]", - "Logic": "D06Z01S17[W] || (D06Z01S17[E] || D06Z01S17[CherubsR]) && blood || D06Z01S17[CherubsL] && doubleJump" - }, - { - "Id": "D06Z01S17[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S26[W]", - "Logic": "D06Z01S17[E] || D06Z01S17[CherubsR] || blood && (D06Z01S17[W] || D06Z01S17[CherubsL] && doubleJump)" - }, - { - "Id": "D06Z01S17[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D06Z01S04[Cherubs]", - "Logic": "linen" - }, - { - "Id": "D06Z01S17[CherubsL]", - "Direction": 5 - }, - { - "Id": "D06Z01S17[CherubsR]", - "Direction": 5 - }, - { - "Id": "D06Z01S18[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S02[W]" - }, - { - "Id": "D06Z01S18[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D04Z01S04[Cherubs]", - "Type": 1, - "Logic": "linen" - }, - { - "Id": "D06Z01S19[S]", - "Direction": 3, - "OriginalDoor": "D06Z01S01[N]", - "Type": 9 - }, - { - "Id": "D06Z01S19[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S25[W]", - "Type": 9 - }, - { - "Id": "D06Z01S20[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S23[E]" - }, - { - "Id": "D06Z01S20[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S04[SW]" - }, - { - "Id": "D06Z01S21[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S10[E]", - "Logic": "D06Z01S21[W] || canBeatLegionary" - }, - { - "Id": "D06Z01S21[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S15[NW]", - "Logic": "D06Z01S21[E] || canBeatLegionary" - }, - { - "Id": "D06Z01S22[Sword]", - "Direction": 2, - "OriginalDoor": "D06Z01S23[Sword]" - }, - { - "Id": "D06Z01S23[Sword]", - "Direction": 1, - "OriginalDoor": "D06Z01S22[Sword]" - }, - { - "Id": "D06Z01S23[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S20[W]" - }, - { - "Id": "D06Z01S23[S]", - "Direction": 3, - "OriginalDoor": "D04Z02S06[N]", - "Type": 1 - }, - { - "Id": "D06Z01S23[Cherubs]", - "Direction": 5 - }, - { - "Id": "D06Z01S24[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S04[Health]" - }, - { - "Id": "D06Z01S25[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S19[E]", - "Logic": "D06Z01S25[W] || canBeatRooftopsBoss", - "Type": 9 - }, - { - "Id": "D06Z01S25[E]", - "Direction": 2, - "OriginalDoor": "D07Z01S01[W]", - "Logic": "D06Z01S25[E] || canBeatRooftopsBoss", - "Type": 9 - }, - { - "Id": "D06Z01S26[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S17[E]" - }, - - { - "Id": "D07Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D06Z01S25[E]", - "Type": 9 - }, - { - "Id": "D07Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D07Z01S02[W]", - "Type": 9 - }, - { - "Id": "D07Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D07Z01S01[E]", - "Type": 9 - }, - { - "Id": "D07Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D07Z01S03[W]", - "Type": 9 - }, - { - "Id": "D07Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D07Z01S02[E]", - "Type": 9 - }, - - { - "Id": "D08Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D01Z03S06[E]", - "Type": 1, - "Logic": "D08Z01S01[W] || canBeatBridgeBoss" - }, - { - "Id": "D08Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D08Z02S01[W]", - "Type": 1, - "Logic": "holyWounds >= 3 && (D08Z01S01[E] || D08Z01S01[Cherubs] || canBeatBridgeBoss)" - }, - { - "Id": "D08Z01S01[Cherubs]", - "Direction": 5 - }, - { - "Id": "D08Z01S02[NE]", - "Direction": 2, - "OriginalDoor": "D08Z03S03[W]", - "Type": 1, - "VisibilityFlags": 1 - }, - { - "Id": "D08Z01S02[SE]", - "Direction": 2, - "OriginalDoor": "D08Z02S03[W]", - "Type": 1 - }, - { - "Id": "D08Z01S02[-Cherubs]", - "Direction": 6, - "OriginalDoor": "D08Z01S01[Cherubs]", - "Logic": "linen" - }, - - { - "Id": "D08Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D08Z01S01[E]", - "Type": 1 - }, - { - "Id": "D08Z02S01[SE]", - "Direction": 2, - "OriginalDoor": "D08Z02S02[W]" - }, - { - "Id": "D08Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z01S01[W]", - "Type": 1 - }, - { - "Id": "D08Z02S01[N]", - "Direction": 0, - "OriginalDoor": "D08Z02S03[S]" - }, - { - "Id": "D08Z02S02[W]", - "Direction": 1, - "OriginalDoor": "D08Z02S01[SE]" - }, - { - "Id": "D08Z02S03[W]", - "Direction": 1, - "OriginalDoor": "D08Z01S02[SE]", - "Type": 1, - "Logic": "brokeBotTCStatue" - }, - { - "Id": "D08Z02S03[E]", - "Direction": 2, - "OriginalDoor": "D08Z03S01[W]", - "Type": 1 - }, - { - "Id": "D08Z02S03[S]", - "Direction": 3, - "OriginalDoor": "D08Z02S01[N]" - }, - - { - "Id": "D08Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D08Z02S03[E]", - "Type": 1 - }, - { - "Id": "D08Z03S01[E]", - "Direction": 2, - "OriginalDoor": "D08Z03S02[SW]", - "Logic": "verses >= 4" - }, - { - "Id": "D08Z03S02[SW]", - "Direction": 1, - "OriginalDoor": "D08Z03S01[E]" - }, - { - "Id": "D08Z03S02[NW]", - "Direction": 1, - "OriginalDoor": "D08Z03S03[E]", - "Logic": "D08Z03S02[NW] || wallClimb" - }, - { - "Id": "D08Z03S03[W]", - "Direction": 1, - "OriginalDoor": "D08Z01S02[NE]", - "Type": 1, - "Logic": "D08Z03S03[W] || canBeatHallBoss" - }, - { - "Id": "D08Z03S03[E]", - "Direction": 2, - "OriginalDoor": "D08Z03S02[NW]", - "Logic": "D08Z03S03[E] || canBeatHallBoss" - }, - - { - "Id": "D09Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S11[E]" - }, - { - "Id": "D09Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D06Z01S13[W]", - "Type": 1 - }, - { - "Id": "D09Z01S02[SW]", - "Direction": 1, - "OriginalDoor": "D09Z01S07[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[Cell2]" ] - }, - { - "Id": "D09Z01S02[NW]", - "Direction": 1, - "OriginalDoor": "D09Z01S07[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ] - }, - { - "Id": "D09Z01S02[N]", - "Direction": 0, - "OriginalDoor": "D09Z01S11[S]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ] - }, - { - "Id": "D09Z01S02[Cell1]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell1]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ], - "Logic": "bronzeKey" - }, - { - "Id": "D09Z01S02[Cell6]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell6]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ], - "Logic": "silverKey" - }, - { - "Id": "D09Z01S02[Cell5]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell5]", - "VisibilityFlags": 1 - }, - { - "Id": "D09Z01S02[Cell4]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell4]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ], - "Logic": "goldKey" - }, - { - "Id": "D09Z01S02[Cell2]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell2]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[SW]" ] - }, - { - "Id": "D09Z01S02[Cell3]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell3]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ], - "Logic": "bronzeKey" - }, - { - "Id": "D09Z01S02[Cell22]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell22]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ] - }, - { - "Id": "D09Z01S02[Cell23]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell23]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S02[NW]", "D09Z01S02[N]", "D09Z01S02[Cell1]", "D09Z01S02[Cell6]", "D09Z01S02[Cell4]", "D09Z01S02[Cell3]", "D09Z01S02[Cell22]", "D09Z01S02[Cell23]" ], - "Logic": "bronzeKey" - }, - { - "Id": "D09Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S05[SE]", - "Logic": "D09Z01S03[N] && canBeatPrisonBoss" - }, - { - "Id": "D09Z01S03[N]", - "Direction": 5 - }, - { - "Id": "D09Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S06[E]" - }, - { - "Id": "D09Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S11[W]" - }, - { - "Id": "D09Z01S04[S]", - "Direction": 3, - "OriginalDoor": "D09Z01S07[N]" - }, - { - "Id": "D09Z01S05[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S13[E]" - }, - { - "Id": "D09Z01S05[SE]", - "Direction": 2, - "OriginalDoor": "D09Z01S03[W]" - }, - { - "Id": "D09Z01S05[NE]", - "Direction": 2, - "OriginalDoor": "D09Z01S08[W]" - }, - { - "Id": "D09Z01S06[-E]", - "Direction": 1, - "OriginalDoor": "D02Z03S10[-W]", - "Type": 1, - "Logic": "peaksKey" - }, - { - "Id": "D09Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S04[W]" - }, - { - "Id": "D09Z01S07[SW]", - "Direction": 1, - "OriginalDoor": "D09Z01S09[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]" ] - }, - { - "Id": "D09Z01S07[SE]", - "Direction": 2, - "OriginalDoor": "D09Z01S10[W]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]" ] - }, - { - "Id": "D09Z01S07[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S08[SE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]" ] - }, - { - "Id": "D09Z01S07[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S02[SW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]" ] - }, - { - "Id": "D09Z01S07[NW]", - "Direction": 1, - "OriginalDoor": "D09Z01S08[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[N]" ] - }, - { - "Id": "D09Z01S07[N]", - "Direction": 0, - "OriginalDoor": "D09Z01S04[S]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[NW]" ] - }, - { - "Id": "D09Z01S07[NE]", - "Direction": 2, - "OriginalDoor": "D09Z01S02[NW]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]" ], - "Logic": "D09Z01S07[NE] || blood" - }, - { - "Id": "D09Z01S08[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S05[NE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S08[Cell14]" ], - "Logic": "openedWotHPGate" - }, - { - "Id": "D09Z01S08[S]", - "Direction": 6, - "OriginalDoor": "D09Z01S03[N]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S08[W]", "D09Z01S08[Cell14]" ] - }, - { - "Id": "D09Z01S08[SE]", - "Direction": 2, - "OriginalDoor": "D09Z01S07[W]", - "Logic": "D09Z01S08[SE] || D09Z01S08[Cell15] || D09Z01S08[Cell16] || D09Z01S08[Cell18] || D09Z01S08[Cell17] && dash" - }, - { - "Id": "D09Z01S08[NE]", - "Direction": 2, - "OriginalDoor": "D09Z01S07[NW]", - "Logic": "D09Z01S08[NE] || D09Z01S08[Cell7] || D09Z01S08[Cell17] && dash" - }, - { - "Id": "D09Z01S08[Cell14]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell14]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S08[W]" ] - }, - { - "Id": "D09Z01S08[Cell15]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell15]", - "Logic": "silverKey && (D09Z01S08[SE] || D09Z01S08[Cell15] || D09Z01S08[Cell16] || D09Z01S08[Cell18] || D09Z01S08[Cell17] && dash)" - }, - { - "Id": "D09Z01S08[Cell7]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell7]", - "Logic": "goldKey && (D09Z01S08[NE] || D09Z01S08[Cell7] || D09Z01S08[Cell17] && dash)" - }, - { - "Id": "D09Z01S08[Cell16]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell16]", - "Logic": "goldKey && (D09Z01S08[SE] || D09Z01S08[Cell15] || D09Z01S08[Cell16] || D09Z01S08[Cell18] || D09Z01S08[Cell17] && dash)" - }, - { - "Id": "D09Z01S08[Cell18]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell18]", - "Logic": "silverKey && (D09Z01S08[SE] || D09Z01S08[Cell15] || D09Z01S08[Cell16] || D09Z01S08[Cell18] || D09Z01S08[Cell17] && dash)" - }, - { - "Id": "D09Z01S08[Cell17]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell17]", - "VisibilityFlags": 1 - }, - { - "Id": "D09Z01S09[SW]", - "Direction": 1, - "OriginalDoor": "D04Z01S06[E]", - "Type": 1, - "Logic": "D09Z01S09[Cell21] || D09Z01S09[Cell20] || D09Z01S09[SW] || D09Z01S09[E] || dash" - }, - { - "Id": "D09Z01S09[NW]", - "Direction": 1, - "OriginalDoor": "D09Z01S12[E]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S09[Cell19]", "D09Z01S09[Cell24]" ], - "Logic": "D09Z01S09[NW] || D09Z01S09[Cell19] || dash" - }, - { - "Id": "D09Z01S09[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S07[SW]", - "Logic": "D09Z01S09[Cell21] || D09Z01S09[Cell20] || D09Z01S09[SW] || D09Z01S09[E] || dash" - }, - { - "Id": "D09Z01S09[Cell24]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell24]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S09[NW]", "D09Z01S09[Cell19]" ], - "Logic": "D09Z01S09[Cell24] || dash" - }, - { - "Id": "D09Z01S09[Cell19]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell19]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S09[NW]", "D09Z01S09[Cell24]" ], - "Logic": "D09Z01S09[NW] || D09Z01S09[Cell19] || dash" - }, - { - "Id": "D09Z01S09[Cell20]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell20]", - "Logic": "silverKey && (D09Z01S09[Cell21] || D09Z01S09[Cell20] || D09Z01S09[SW] || D09Z01S09[E] || dash)" - }, - { - "Id": "D09Z01S09[Cell21]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell21]", - "Logic": "goldKey && (D09Z01S09[Cell21] || D09Z01S09[Cell20] || D09Z01S09[SW] || D09Z01S09[E] || dash)" - }, - { - "Id": "D09Z01S10[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S07[SE]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S10[Cell12]", "D09Z01S10[Cell10]", "D09Z01S10[Cell11]" ] - }, - { - "Id": "D09Z01S10[Cell13]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell13]", - "VisibilityFlags": 1 - }, - { - "Id": "D09Z01S10[Cell12]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell12]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S10[W]", "D09Z01S10[Cell10]", "D09Z01S10[Cell11]" ], - "Logic": "bronzeKey" - }, - { - "Id": "D09Z01S10[Cell10]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell10]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S10[W]", "D09Z01S10[Cell12]", "D09Z01S10[Cell11]" ], - "Logic": "silverKey" - }, - { - "Id": "D09Z01S10[Cell11]", - "Direction": 4, - "OriginalDoor": "D09BZ01S01[Cell11]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09Z01S10[W]", "D09Z01S10[Cell12]", "D09Z01S10[Cell10]" ], - "Logic": "silverKey" - }, - { - "Id": "D09Z01S11[W]", - "Direction": 1, - "OriginalDoor": "D09Z01S04[E]", - "VisibilityFlags": 1 - }, - { - "Id": "D09Z01S11[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S01[W]" - }, - { - "Id": "D09Z01S11[S]", - "Direction": 3, - "OriginalDoor": "D09Z01S02[N]" - }, - { - "Id": "D09Z01S12[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S09[NW]" - }, - { - "Id": "D09Z01S13[E]", - "Direction": 2, - "OriginalDoor": "D09Z01S05[W]" - }, - { - "Id": "D09BZ01S01[Cell1]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell1]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell2]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell2]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell3]" ] - }, - { - "Id": "D09BZ01S01[Cell3]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell3]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell2]" ] - }, - { - "Id": "D09BZ01S01[Cell4]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell4]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell5]" ] - }, - { - "Id": "D09BZ01S01[Cell5]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell5]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell4]" ] - }, - { - "Id": "D09BZ01S01[Cell6]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell6]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell7]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell7]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell10]", - "Direction": 7, - "OriginalDoor": "D09Z01S10[Cell10]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell11]", - "Direction": 7, - "OriginalDoor": "D09Z01S10[Cell11]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell12]", - "Direction": 7, - "OriginalDoor": "D09Z01S10[Cell12]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell13]" ] - }, - { - "Id": "D09BZ01S01[Cell13]", - "Direction": 7, - "OriginalDoor": "D09Z01S10[Cell13]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell12]" ] - }, - { - "Id": "D09BZ01S01[Cell14]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell14]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell15]" ] - }, - { - "Id": "D09BZ01S01[Cell15]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell15]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell14]" ] - }, - { - "Id": "D09BZ01S01[Cell16]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell16]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell17]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell17]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell18]" ] - }, - { - "Id": "D09BZ01S01[Cell18]", - "Direction": 7, - "OriginalDoor": "D09Z01S08[Cell18]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell19]", - "Direction": 7, - "OriginalDoor": "D09Z01S09[Cell19]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell20]" ] - }, - { - "Id": "D09BZ01S01[Cell20]", - "Direction": 7, - "OriginalDoor": "D09Z01S09[Cell20]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell19]" ] - }, - { - "Id": "D09BZ01S01[Cell21]", - "Direction": 7, - "OriginalDoor": "D09Z01S09[Cell21]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell22]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell22]", - "VisibilityFlags": 1 - }, - { - "Id": "D09BZ01S01[Cell23]", - "Direction": 7, - "OriginalDoor": "D09Z01S02[Cell23]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D09BZ01S01[Cell22]" ], - "Logic": "bronzeKey" - }, - { - "Id": "D09BZ01S01[Cell24]", - "Direction": 7, - "OriginalDoor": "D09Z01S09[Cell24]", - "VisibilityFlags": 1 - }, - - { - "Id": "D17Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S02[W]" - }, - { - "Id": "D17Z01S01[Cherubs1]", - "Direction": 5 - }, - { - "Id": "D17Z01S01[Cherubs2]", - "Direction": 5 - }, - { - "Id": "D17Z01S01[Cherubs3]", - "Direction": 5 - }, - { - "Id": "D17Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S01[E]", - "Logic": "D17Z01S02[W] || dash" - }, - { - "Id": "D17Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S05[W]", - "Logic": "D17Z01S02[N] || D17Z01S02[E] || dash" - }, - { - "Id": "D17Z01S02[N]", - "Direction": 0, - "OriginalDoor": "D17Z01S10[S]", - "Logic": "D17Z01S02[N] || blood && (D17Z01S02[E] || D17Z01S02[W] && dash)" - }, - { - "Id": "D17Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S11[E]" - }, - { - "Id": "D17Z01S03[E]", - "Direction": 2, - "OriginalDoor": "D01Z01S07[W]", - "Type": 1 - }, - { - "Id": "D17Z01S03[relic]", - "Direction": 4, - "OriginalDoor": "D17BZ01S01[relic]", - "Logic": "elderKey" - }, - { - "Id": "D17Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S12[E]" - }, - { - "Id": "D17Z01S04[S]", - "Direction": 3, - "OriginalDoor": "D17Z01S07[N]" - }, - { - "Id": "D17Z01S04[FrontL]", - "Direction": 4, - "OriginalDoor": "D17BZ02S01[FrontL]" - }, - { - "Id": "D17Z01S04[N]", - "Direction": 0, - "OriginalDoor": "D17Z01S05[S]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D17Z01S04[FrontR]" ] - }, - { - "Id": "D17Z01S04[FrontR]", - "Direction": 4, - "OriginalDoor": "D17BZ02S01[FrontR]", - "VisibilityFlags": 3, - "RequiredDoors": [ "D17Z01S04[N]" ] - }, - { - "Id": "D17Z01S05[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S02[E]" - }, - { - "Id": "D17Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S11[W]" - }, - { - "Id": "D17Z01S05[S]", - "Direction": 3, - "OriginalDoor": "D17Z01S04[N]", - "Logic": "openedBotSSLadder" - }, - { - "Id": "D17Z01S06[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S07[W]" - }, - { - "Id": "D17Z01S07[SW]", - "Direction": 1, - "OriginalDoor": "D17Z01S08[E]" - }, - { - "Id": "D17Z01S07[SE]", - "Direction": 2, - "OriginalDoor": "D03Z01S05[W]", - "Type": 1 - }, - { - "Id": "D17Z01S07[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S06[E]" - }, - { - "Id": "D17Z01S07[NW]", - "Direction": 1, - "OriginalDoor": "D17Z01S09[E]" - }, - { - "Id": "D17Z01S07[N]", - "Direction": 0, - "OriginalDoor": "D17Z01S04[S]" - }, - { - "Id": "D17Z01S08[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S07[SW]" - }, - { - "Id": "D17Z01S09[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S07[NW]" - }, - { - "Id": "D17Z01S10[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S13[E]", - "Logic": "D17Z01S10[W] || blood || doubleJump" - }, - { - "Id": "D17Z01S10[S]", - "Direction": 3, - "OriginalDoor": "D17Z01S02[N]" - }, - { - "Id": "D17Z01S11[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S05[E]", - "Logic": "D17Z01S11[W] || canBeatBrotherhoodBoss" - }, - { - "Id": "D17Z01S11[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S03[W]", - "Logic": "D17Z01S11[E] || canBeatBrotherhoodBoss" - }, - { - "Id": "D17Z01S12[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S04[W]" - }, - { - "Id": "D17Z01S13[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S14[E]" - }, - { - "Id": "D17Z01S13[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S10[W]" - }, - { - "Id": "D17Z01S14[W]", - "Direction": 1, - "OriginalDoor": "D17Z01S15[E]", - "Logic": "scapular && (D17Z01S14[W] || blood)" - }, - { - "Id": "D17Z01S14[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S13[W]", - "Logic": "D17Z01S14[E] || blood" - }, - { - "Id": "D17Z01S14[-Cherubs1]", - "Direction": 6, - "OriginalDoor": "D17Z01S01[Cherubs1]", - "Logic": "linen && (D17Z01S14[W] || blood || canCrossGap11)" - }, - { - "Id": "D17Z01S14[-Cherubs2]", - "Direction": 6, - "OriginalDoor": "D17Z01S01[Cherubs2]", - "Logic": "linen && (D17Z01S14[E] && canCrossGap8 || D17Z01S14[W] && canCrossGap10 || blood)" - }, - { - "Id": "D17Z01S14[-Cherubs3]", - "Direction": 6, - "OriginalDoor": "D17Z01S01[Cherubs3]", - "Logic": "linen && (D17Z01S14[E] || blood)" - }, - { - "Id": "D17Z01S15[E]", - "Direction": 2, - "OriginalDoor": "D17Z01S14[W]" - }, - { - "Id": "D17BZ01S01[relic]", - "Direction": 7, - "OriginalDoor": "D17Z01S03[relic]" - }, - { - "Id": "D17BZ02S01[FrontL]", - "Direction": 7, - "OriginalDoor": "D17Z01S04[FrontL]", - "VisibilityFlags": 1 - }, - { - "Id": "D17BZ02S01[FrontR]", - "Direction": 7, - "OriginalDoor": "D17Z01S04[FrontR]", - "Logic": "D17BZ02S01[FrontR] || dash && wallClimb" - }, - - { - "Id": "D20Z01S01[W]", - "Direction": 1, - "OriginalDoor": "D03Z02S15[E]", - "Type": 1 - }, - { - "Id": "D20Z01S01[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S02[W]" - }, - { - "Id": "D20Z01S01[S]", - "Direction": 3, - "OriginalDoor": "D20Z01S04[N]" - }, - { - "Id": "D20Z01S01[Cherubs]", - "Direction": 5 - }, - { - "Id": "D20Z01S02[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S01[E]" - }, - { - "Id": "D20Z01S02[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S03[W]" - }, - { - "Id": "D20Z01S03[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S02[E]" - }, - { - "Id": "D20Z01S03[N]", - "Direction": 0, - "OriginalDoor": "D03Z01S01[S]", - "Type": 1 - }, - { - "Id": "D20Z01S04[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S05[E]" - }, - { - "Id": "D20Z01S04[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S24[W]", - "Type": 1, - "Logic": "openedDCGateW" - }, - { - "Id": "D20Z01S04[N]", - "Direction": 0, - "OriginalDoor": "D20Z01S01[S]" - }, - { - "Id": "D20Z01S05[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S06[NE]" - }, - { - "Id": "D20Z01S05[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S04[W]" - }, - { - "Id": "D20Z01S06[NE]", - "Direction": 2, - "OriginalDoor": "D20Z01S05[W]" - }, - { - "Id": "D20Z01S06[SE]", - "Direction": 2, - "OriginalDoor": "D20Z01S07[NW]" - }, - { - "Id": "D20Z01S07[NW]", - "Direction": 1, - "OriginalDoor": "D20Z01S06[SE]" - }, - { - "Id": "D20Z01S07[NE]", - "Direction": 2, - "OriginalDoor": "D20Z01S08[W]" - }, - { - "Id": "D20Z01S07[SE]", - "Direction": 2, - "OriginalDoor": "D20Z01S09[W]" - }, - { - "Id": "D20Z01S08[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S07[NE]" - }, - { - "Id": "D20Z01S09[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S07[SE]", - "Logic": "D20Z01S09[W] || dash" - }, - { - "Id": "D20Z01S09[E]", - "Direction": 2, - "OriginalDoor": "D01Z05S25[EchoesW]", - "Type": 1, - "Logic": "D20Z01S09[E] || blood && dash" - }, - { - "Id": "D20Z01S10[W]", - "Direction": 1, - "OriginalDoor": "D01Z05S25[EchoesE]", - "Type": 1, - "Logic": "D20Z01S10[W] || blood && dash" - }, - { - "Id": "D20Z01S10[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S11[W]", - "Logic": "D20Z01S10[E] || blood && dash" - }, - { - "Id": "D20Z01S11[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S10[E]" - }, - { - "Id": "D20Z01S11[NW]", - "Direction": 1, - "OriginalDoor": "D20Z01S12[E]" - }, - { - "Id": "D20Z01S11[NE]", - "Direction": 2, - "OriginalDoor": "D20Z01S13[W]" - }, - { - "Id": "D20Z01S11[SE]", - "Direction": 2, - "OriginalDoor": "D20Z02S12[W]", - "Type": 1 - }, - { - "Id": "D20Z01S12[E]", - "Direction": 2, - "OriginalDoor": "D20Z01S11[NW]" - }, - { - "Id": "D20Z01S13[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S11[NE]" - }, - { - "Id": "D20Z01S13[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S11[NW]", - "Type": 1 - }, - { - "Id": "D20Z01S13[N]", - "Direction": 0, - "OriginalDoor": "D20Z01S14[S]" - }, - { - "Id": "D20Z01S14[S]", - "Direction": 3, - "OriginalDoor": "D20Z01S13[N]" - }, - { - "Id": "D20Z01S14[E]", - "Direction": 2, - "OriginalDoor": "D20Z03S01[W]", - "Type": 1 - }, - - { - "Id": "D20Z02S01[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S03[SE]" - }, - { - "Id": "D20Z02S01[E]", - "Direction": 2, - "OriginalDoor": "D04Z02S24[SW]", - "Type": 1 - }, - { - "Id": "D20Z02S02[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S03[NE]" - }, - { - "Id": "D20Z02S03[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S04[E]" - }, - { - "Id": "D20Z02S03[NE]", - "Direction": 2, - "OriginalDoor": "D20Z02S02[W]", - "Logic": "D20Z02S03[NE] || canWalkOnRoot || canCrossGap5" - }, - { - "Id": "D20Z02S03[SE]", - "Direction": 2, - "OriginalDoor": "D20Z02S01[W]" - }, - { - "Id": "D20Z02S04[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S05[E]", - "Logic": "D20Z02S04[W] || dash" - }, - { - "Id": "D20Z02S04[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S03[W]", - "Logic": "D20Z02S04[E] || dash" - }, - { - "Id": "D20Z02S05[SW]", - "Direction": 1, - "OriginalDoor": "D20Z02S06[SE]" - }, - { - "Id": "D20Z02S05[NW]", - "Direction": 1, - "OriginalDoor": "D20Z02S06[NE]", - "Logic": "D20Z02S05[NW] || nail || canCrossGap3" - }, - { - "Id": "D20Z02S05[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S04[W]" - }, - { - "Id": "D20Z02S06[SW]", - "Direction": 1, - "OriginalDoor": "D20Z02S09[E]" - }, - { - "Id": "D20Z02S06[SE]", - "Direction": 2, - "OriginalDoor": "D20Z02S05[SW]" - }, - { - "Id": "D20Z02S06[NW]", - "Direction": 1, - "OriginalDoor": "D20Z02S07[E]", - "Logic": "D20Z02S06[NW] || D20Z02S06[NE] || doubleJump || canClimbOnRoot || canDiveLaser" - }, - { - "Id": "D20Z02S06[NE]", - "Direction": 2, - "OriginalDoor": "D20Z02S05[NW]", - "Logic": "D20Z02S06[NW] || D20Z02S06[NE] || doubleJump || canClimbOnRoot || canDiveLaser" - }, - { - "Id": "D20Z02S07[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S08[E]" - }, - { - "Id": "D20Z02S07[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S06[NW]" - }, - { - "Id": "D20Z02S08[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S07[W]" - }, - { - "Id": "D20Z02S09[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S10[E]" - }, - { - "Id": "D20Z02S09[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S06[SW]" - }, - { - "Id": "D20Z02S10[W]", - "Direction": 1, - "OriginalDoor": "D20Z02S11[E]" - }, - { - "Id": "D20Z02S10[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S09[W]" - }, - { - "Id": "D20Z02S11[SW]", - "Direction": 1, - "OriginalDoor": "D20Z02S12[E]" - }, - { - "Id": "D20Z02S11[NW]", - "Direction": 1, - "OriginalDoor": "D20Z01S13[E]", - "Type": 1, - "VisibilityFlags": 5, - "RequiredDoors": [ "D20Z02S11[E]" ], - "Logic": "D20Z02S11[NW] || mourningSkipAllowed && (doubleJump || canBreakTirana || D20Z02S11[E])" - }, - { - "Id": "D20Z02S11[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S10[W]", - "VisibilityFlags": 5, - "Logic": "D20Z02S11[E] || mourningSkipAllowed && (doubleJump || canBreakTirana || D20Z02S11[NW] && canCrossGap5)" - }, - { - "Id": "D20Z02S12[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S11[SE]", - "Type": 1 - }, - { - "Id": "D20Z02S12[E]", - "Direction": 2, - "OriginalDoor": "D20Z02S11[SW]" - }, - - { - "Id": "D20Z03S01[W]", - "Direction": 1, - "OriginalDoor": "D20Z01S14[E]", - "Type": 1 - }, -] \ No newline at end of file diff --git a/worlds/blasphemous/Rules.py b/worlds/blasphemous/Rules.py index 5d8829213163..119e618dc22f 100644 --- a/worlds/blasphemous/Rules.py +++ b/worlds/blasphemous/Rules.py @@ -1,4458 +1,1388 @@ -from typing import Dict, List, Set -from worlds.generic.Rules import set_rule, add_rule +from typing import Dict, List, Tuple, Any, Callable, TYPE_CHECKING from BaseClasses import CollectionState +if TYPE_CHECKING: + from . import BlasphemousWorld +else: + BlasphemousWorld = object + + +class BlasRules: + player: int + world: BlasphemousWorld + string_rules: Dict[str, Callable[[CollectionState], bool]] + + def __init__(self, world: "BlasphemousWorld") -> None: + self.player = world.player + self.world = world + self.multiworld = world.multiworld + self.indirect_conditions: List[Tuple[str, str]] = [] + + # BrandenEK/Blasphemous.Randomizer/ItemRando/BlasphemousInventory.cs + self.string_rules = { + # Visibility flags + "DoubleJump": lambda state: bool(self.world.options.purified_hand), + "NormalLogic": lambda state: self.world.options.difficulty >= 1, + "NormalLogicAndDoubleJump": lambda state: self.world.options.difficulty >= 1 \ + and bool(self.world.options.purified_hand), + "HardLogic": lambda state: self.world.options.difficulty >= 2, + "HardLogicAndDoubleJump": lambda state: self.world.options.difficulty >= 2 \ + and bool(self.world.options.purified_hand), + "EnemySkips": self.enemy_skips_allowed, + "EnemySkipsAndDoubleJump": lambda state: self.enemy_skips_allowed(state) \ + and bool(self.world.options.purified_hand), + + # Relics + "blood": self.blood, + # skip "root" + "linen": self.linen, + "nail": self.nail, + "shroud": self.shroud, + # skip "lung" + + # Keys + "bronzeKey": self.bronze_key, + "silverKey": self.silver_key, + "goldKey": self.gold_key, + "peaksKey": self.peaks_key, + "elderKey": self.elder_key, + "woodKey": self.wood_key, + + # Collections + "cherubs20": lambda state: self.cherubs(state) >= 20, + "cherubs38": lambda state: self.cherubs(state) >= 38, + + "bones4": lambda state: self.bones(state) >= 4, + "bones8": lambda state: self.bones(state) >= 8, + "bones12": lambda state: self.bones(state) >= 12, + "bones16": lambda state: self.bones(state) >= 16, + "bones20": lambda state: self.bones(state) >= 20, + "bones24": lambda state: self.bones(state) >= 24, + "bones28": lambda state: self.bones(state) >= 28, + "bones30": lambda state: self.bones(state) >= 30, + "bones32": lambda state: self.bones(state) >= 32, + "bones36": lambda state: self.bones(state) >= 36, + "bones40": lambda state: self.bones(state) >= 40, + "bones44": lambda state: self.bones(state) >= 44, + + "tears0": lambda state: True, + + # Special items + "dash": self.dash, + "wallClimb": self.wall_climb, + # skip "airImpulse" + "boots": self.boots, + "doubleJump": self.double_jump, + + # Speed boosts + "wheel": self.wheel, + # skip "dawnHeart" + + # Health boosts + # skip "flasks" + # skip "quicksilver" + + # Puzzles + "redWax1": lambda state: self.red_wax(state) >= 1, + "redWax3": lambda state: self.red_wax(state) >= 3, + "blueWax1": lambda state: self.blue_wax(state) >= 1, + "blueWax3": lambda state: self.blue_wax(state) >= 3, + "chalice": self.chalice, + + # Cherubs + "debla": self.debla, + "lorquiana": self.lorquiana, + "zarabanda": self.zarabanda, + "taranto": self.taranto, + "verdiales": self.verdiales, + "cante": self.cante, + "cantina": self.cantina, + + "aubade": self.aubade, + "tirana": self.tirana, + + "ruby": self.ruby, + "tiento": self.tiento, + # skip "anyPrayer" + "pillar": self.pillar, + + # Stats + # skip "healthLevel" + # skip "fervourLevel" + # skip "swordLevel" + + # Skills + # skip "combo" + # skip "charged" + # skip "ranged" + # skip "dive" + # skip "lunge" + "chargeBeam": self.charge_beam, + "rangedAttack": lambda state: self.ranged(state) > 0, + + # Main quest + "holyWounds3": lambda state: self.holy_wounds(state) >= 3, + "masks1": lambda state: self.masks(state) >= 1, + "masks2": lambda state: self.masks(state) >= 2, + "masks3": lambda state: self.masks(state) >= 3, + "guiltBead": self.guilt_bead, + + # LOTL quest + "cloth": self.cloth, + "hand": self.hand, + "hatchedEgg": self.hatched_egg, + + # Tirso quest + "herbs1": lambda state: self.herbs(state) >= 1, + "herbs2": lambda state: self.herbs(state) >= 2, + "herbs3": lambda state: self.herbs(state) >= 3, + "herbs4": lambda state: self.herbs(state) >= 4, + "herbs5": lambda state: self.herbs(state) >= 5, + "herbs6": lambda state: self.herbs(state) >= 6, + + # Tentudia quest + "tentudiaRemains1": lambda state: self.tentudia_remains(state) >= 1, + "tentudiaRemains2": lambda state: self.tentudia_remains(state) >= 2, + "tentudiaRemains3": lambda state: self.tentudia_remains(state) >= 3, + + # Gemino quest + "emptyThimble": self.empty_thimble, + "fullThimble": self.full_thimble, + "driedFlowers": self.dried_flowers, + + # Altasgracias quest + "ceremonyItems3": lambda state: self.ceremony_items(state) >= 3, + "egg": self.egg, + + # Redento quest + # skip "limestones", not actually used + # skip "knots", not actually used + + # Cleofas quest + "marksOfRefuge3": lambda state: self.marks_of_refuge(state) >= 3, + "cord": self.cord, + + # Crisanta quest + "scapular": self.scapular, + "trueHeart": self.true_heart, + "traitorEyes2": lambda state: self.traitor_eyes(state) >= 2, + + # Jibrael quest + "bell": self.bell, + "verses4": lambda state: self.verses(state) >= 4, + + # Movement tech + "canAirStall": self.can_air_stall, + "canDawnJump": self.can_dawn_jump, + "canWaterJump": self.can_water_jump, + + # Breakable tech + "canBreakHoles": self.can_break_holes, + "canDiveLaser": self.can_dive_laser, + + # Root tech + "canWalkOnRoot": self.can_walk_on_root, + "canClimbOnRoot": self.can_climb_on_root, + + # Lung tech + "canSurvivePoison1": self.can_survive_poison_1, + "canSurvivePoison2": self.can_survive_poison_2, + "canSurvivePoison3": self.can_survive_poison_3, + + # Enemy tech + "canEnemyBounce": self.can_enemy_bounce, + "canEnemyUpslash": self.can_enemy_upslash, + + # Reaching rooms + "guiltRooms1": lambda state: self.guilt_rooms(state) >= 1, + "guiltRooms2": lambda state: self.guilt_rooms(state) >= 2, + "guiltRooms3": lambda state: self.guilt_rooms(state) >= 3, + "guiltRooms4": lambda state: self.guilt_rooms(state) >= 4, + "guiltRooms5": lambda state: self.guilt_rooms(state) >= 5, + "guiltRooms6": lambda state: self.guilt_rooms(state) >= 6, + "guiltRooms7": lambda state: self.guilt_rooms(state) >= 7, + + "swordRooms1": lambda state: self.sword_rooms(state) >= 1, + "swordRooms2": lambda state: self.sword_rooms(state) >= 2, + "swordRooms3": lambda state: self.sword_rooms(state) >= 3, + "swordRooms4": lambda state: self.sword_rooms(state) >= 4, + "swordRooms5": lambda state: self.sword_rooms(state) >= 5, + "swordRooms6": lambda state: self.sword_rooms(state) >= 6, + "swordRooms7": lambda state: self.sword_rooms(state) >= 7, + + "redentoRooms2": lambda state: self.redento_rooms(state) >= 2, + "redentoRooms3": lambda state: self.redento_rooms(state) >= 3, + "redentoRooms4": lambda state: self.redento_rooms(state) >= 4, + "redentoRooms5": lambda state: self.redento_rooms(state) >= 5, + + "miriamRooms5": lambda state: self.miriam_rooms(state) >= 5, + + "amanecidaRooms1": lambda state: self.amanecida_rooms(state) >= 1, + "amanecidaRooms2": lambda state: self.amanecida_rooms(state) >= 2, + "amanecidaRooms3": lambda state: self.amanecida_rooms(state) >= 3, + "amanecidaRooms4": lambda state: self.amanecida_rooms(state) >= 4, + + "chaliceRooms3": lambda state: self.chalice_rooms(state) >= 3, + + # Crossing gaps + "canCrossGap1": self.can_cross_gap_1, + "canCrossGap2": self.can_cross_gap_2, + "canCrossGap3": self.can_cross_gap_3, + "canCrossGap4": self.can_cross_gap_4, + "canCrossGap5": self.can_cross_gap_5, + "canCrossGap6": self.can_cross_gap_6, + "canCrossGap7": self.can_cross_gap_7, + "canCrossGap8": self.can_cross_gap_8, + "canCrossGap9": self.can_cross_gap_9, + "canCrossGap10": self.can_cross_gap_10, + "canCrossGap11": self.can_cross_gap_11, + + # Events in different scenes + "openedDCGateW": self.opened_dc_gate_w, + "openedDCGateE": self.opened_dc_gate_e, + "openedDCLadder": self.opened_dc_ladder, + "openedWOTWCave": self.opened_wotw_cave, + "rodeGotPElevator": self.rode_gotp_elevator, + "openedConventLadder": self.opened_convent_ladder, + "brokeJondoBellW": self.broke_jondo_bell_w, + "brokeJondoBellE": self.broke_jondo_bell_e, + "openedMoMLadder": self.opened_mom_ladder, + "openedTSCGate": self.opened_tsc_gate, + "openedARLadder": self.opened_ar_ladder, + "brokeBotTCStatue": self.broke_bottc_statue, + "openedWotHPGate": self.opened_wothp_gate, + "openedBotSSLadder": self.opened_botss_ladder, + + # Special skips + "upwarpSkipsAllowed": self.upwarp_skips_allowed, + "mourningSkipAllowed": self.mourning_skip_allowed, + "enemySkipsAllowed": self.enemy_skips_allowed, + "obscureSkipsAllowed": self.obscure_skips_allowed, + "preciseSkipsAllowed": self.precise_skips_allowed, + + # Bosses + "canBeatBrotherhoodBoss": self.can_beat_brotherhood_boss, + "canBeatMercyBoss": self.can_beat_mercy_boss, + "canBeatConventBoss": self.can_beat_convent_boss, + "canBeatGrievanceBoss": self.can_beat_grievance_boss, + "canBeatBridgeBoss": self.can_beat_bridge_boss, + "canBeatMothersBoss": self.can_beat_mothers_boss, + "canBeatCanvasesBoss": self.can_beat_canvases_boss, + "canBeatPrisonBoss": self.can_beat_prison_boss, + "canBeatRooftopsBoss": self.can_beat_rooftops_boss, + "canBeatOssuaryBoss": self.can_beat_ossuary_boss, + "canBeatMourningBoss": self.can_beat_mourning_boss, + "canBeatGraveyardBoss": self.can_beat_graveyard_boss, + "canBeatJondoBoss": self.can_beat_jondo_boss, + "canBeatPatioBoss": self.can_beat_patio_boss, + "canBeatWallBoss": self.can_beat_wall_boss, + "canBeatHallBoss": self.can_beat_hall_boss, + "canBeatPerpetua": self.can_beat_perpetua, + "canBeatLegionary": self.can_beat_legionary + } -def total_fervour(state: CollectionState, player: int) -> int: - totalFervour: int = 60 + (20 * state.count("Fervour Upgrade", player)) + (10 * state.count("Bead of Blue Wax", player)) - - return totalFervour - - -def aubade(state: CollectionState, player: int) -> bool: - return state.has("Aubade of the Nameless Guardian", player) if total_fervour(state, player) >= 90 else False - - -def tirana(state: CollectionState, player: int) -> bool: - return state.has("Tirana of the Celestial Bastion", player) if total_fervour(state, player) >= 90 else False - - -def pillar(state: CollectionState, player: int) -> bool: - return state.has_any({"Debla of the Lights", "Taranto to my Sister", "Cloistered Ruby"}, player) + boss_strength_indirect_regions: List[str] = [ + # flasks + "D01Z05S05[SW]", + "D02Z02S04[W]", + "D03Z02S08[W]", + "D03Z03S04[SW]", + "D04Z02S13[W]", + "D05Z01S08[NW]", + "D20Z01S07[NE]", + # quicksilver + "D01Z05S01[W]" + ] + + guilt_indirect_regions: List[str] = [ + "D01Z04S01[NE]", + "D02Z02S11[W]", + "D03Z03S02[NE]", + "D04Z02S02[SE]", + "D05Z01S05[NE]", + "D09Z01S05[W]", + "D17Z01S04[W]" + ] + + sword_indirect_regions: List[str] = [ + "D01Z02S07[E]", + "D01Z02S02[SW]", + "D20Z01S04[E]", + "D01Z05S23[W]", + "D02Z03S02[NE]", + "D04Z02S21[NE]", + "D05Z01S21[NW]", + "D06Z01S15[NE]", + "D17Z01S07[SW]" + ] + + redento_indirect_regions: List[str] = [ + "D03Z01S04[E]", + "D03Z02S10[N]", + "D17Z01S05[S]", + "D17BZ02S01[FrontR]", + "D01Z03S04[E]", + "D08Z01S01[W]", + "D04Z01S03[E]", + "D04Z02S01[W]", + "D06Z01S18[-Cherubs]", + "D04Z02S08[E]", + "D04BZ02S01[Redento]", + "D17Z01S07[NW]" + ] + + miriam_indirect_regions: List[str] = [ + "D02Z03S07[NWW]", + "D03Z03S07[NW]", + "D04Z04S01[E]", + "D05Z01S06[W]", + "D06Z01S17[E]" + ] + + chalice_indirect_regions: List[str] = [ + "D03Z01S02[E]", + "D01Z05S02[W]", + "D20Z01S03[N]", + "D05Z01S11[SE]", + "D05Z02S02[NW]", + "D09Z01S09[E]", + "D09Z01S10[W]", + "D09Z01S08[SE]", + "D09Z01S02[SW]" + ] + + self.indirect_regions: Dict[str, List[str]] = { + "openedDCGateW": ["D20Z01S04[E]", + "D01Z05S23[W]"], + "openedDCGateE": ["D01Z05S10[SE]", + "D01Z04S09[W]"], + "openedDCLadder": ["D01Z05S25[NE]", + "D01Z05S02[S]"], + "openedWOTWCave": ["D02Z01S01[SW]", + "D02Z01S08[E]", + "D02Z01S02[]"], + "rodeGotPElevator": ["D02Z03S14[E]", + "D02Z02S13[W]", + "D02Z02S06[E]", + "D02Z02S12[W]", + "D02Z02S08[W]"], + "openedConventLadder": ["D02Z03S02[N]", + "D02Z03S15[E]", + "D02Z03S19[E]", + "D02Z03S10[W]", + "D02Z03S22[W]"], + "brokeJondoBellW": ["D03Z02S08[N]", + "D03Z02S12[E]", + "D03Z02S10[S]", + "D03Z02S10[-Cherubs]"], + "brokeJondoBellE": ["D03Z02S04[NE]", + "D03Z02S11[W]", + "D03Z02S03[E]"], + "openedMoMLadder": ["D04Z02S11[E]", + "D04Z02S09[W]", + "D06Z01S23[S]", + "D04Z02S04[N]"], + "openedTSCGate": ["D05Z02S06[SE]", + "D05Z01S21[-Cherubs]"], + "openedARLadder": ["D06Z01S22[Sword]", + "D06Z01S20[W]", + "D04Z02S06[N]", + "D06Z01S01[-Cherubs]"], + "brokeBotTCStatue": ["D08Z03S03[W]", + "D08Z02S03[W]"], + "openedWotHPGate": ["D09Z01S13[E]", + "D09Z01S03[W]", + "D09Z01S08[W]"], + "openedBotSSLadder": ["D17Z01S05[S]", + "D17BZ02S01[FrontR]"], + "canBeatBrotherhoodBoss": [*boss_strength_indirect_regions, + "D17Z01S05[E]", + "D17Z01S03[W]"], + "canBeatMercyBoss": [*boss_strength_indirect_regions, + "D01Z04S19[E]", + "D01Z04S12[W]"], + "canBeatConventBoss": [*boss_strength_indirect_regions, + "D02Z03S09[E]", + "D02Z03S21[W]"], + "canBeatGrievanceBoss": [*boss_strength_indirect_regions, + "D03Z03S11[E]", + "D03Z03S16[W]"], + "canBeatBridgeBoss": [*boss_strength_indirect_regions, + "D01Z03S06[E]", + "D08Z02S01[W]"], + "canBeatMothersBoss": [*boss_strength_indirect_regions, + "D04Z02S15[E]", + "D04Z02S21[W]"], + "canBeatCanvasesBoss": [*boss_strength_indirect_regions, + "D05Z02S06[NE]", + "D05Z01S21[SW]"], + "canBeatPrisonBoss": [*boss_strength_indirect_regions, + "D09Z01S05[SE]", + "D09Z01S08[S]"], + "canBeatRooftopsBoss": [*boss_strength_indirect_regions, + "D06Z01S19[E]", + "D07Z01S01[W]"], + "canBeatOssuaryBoss": [*boss_strength_indirect_regions, + "D01BZ06S01[E]"], + "canBeatMourningBoss": [*boss_strength_indirect_regions, + "D20Z02S07[W]"], + "canBeatGraveyardBoss": [*boss_strength_indirect_regions, + "D01Z06S01[Santos]", + "D02Z03S18[NW]", + "D02Z02S03[NE]"], + "canBeatJondoBoss": [*boss_strength_indirect_regions, + "D01Z06S01[Santos]", + "D20Z01S06[NE]", + "D20Z01S04[W]", + "D03Z01S04[E]", + "D03Z02S10[N]"], + "canBeatPatioBoss": [*boss_strength_indirect_regions, + "D01Z06S01[Santos]", + "D06Z01S02[W]", + "D04Z01S03[E]", + "D04Z01S01[W]", + "D06Z01S18[-Cherubs]"], + "canBeatWallBoss": [*boss_strength_indirect_regions, + "D01Z06S01[Santos]", + "D09Z01S09[Cell24]", + "D09Z01S11[E]", + "D06Z01S13[W]"], + "canBeatHallBoss": [*boss_strength_indirect_regions, + "D08Z01S02[NE]", + "D08Z03S02[NW]"], + "canBeatPerpetua": boss_strength_indirect_regions, + "canBeatLegionary": boss_strength_indirect_regions, + "guiltRooms1": guilt_indirect_regions, + "guiltRooms2": guilt_indirect_regions, + "guiltRooms3": guilt_indirect_regions, + "guiltRooms4": guilt_indirect_regions, + "guiltRooms5": guilt_indirect_regions, + "guiltRooms6": guilt_indirect_regions, + "guiltRooms7": guilt_indirect_regions, + "swordRooms1": sword_indirect_regions, + "swordRooms2": sword_indirect_regions, + "swordRooms3": sword_indirect_regions, + "swordRooms4": sword_indirect_regions, + "swordRooms5": sword_indirect_regions, + "swordRooms6": sword_indirect_regions, + "swordRooms7": sword_indirect_regions, + "redentoRooms2": redento_indirect_regions, + "redentoRooms3": redento_indirect_regions, + "redentoRooms4": redento_indirect_regions, + "redentoRooms5": redento_indirect_regions, + "miriamRooms5": miriam_indirect_regions, + "chaliceRooms3": chalice_indirect_regions + } + self.indirect_regions["amanecidaRooms1"] = [*self.indirect_regions["canBeatGraveyardBoss"], + *self.indirect_regions["canBeatJondoBoss"], + *self.indirect_regions["canBeatPatioBoss"], + *self.indirect_regions["canBeatWallBoss"]] + self.indirect_regions["amanecidaRooms2"] = [*self.indirect_regions["canBeatGraveyardBoss"], + *self.indirect_regions["canBeatJondoBoss"], + *self.indirect_regions["canBeatPatioBoss"], + *self.indirect_regions["canBeatWallBoss"]] + self.indirect_regions["amanecidaRooms3"] = [*self.indirect_regions["canBeatGraveyardBoss"], + *self.indirect_regions["canBeatJondoBoss"], + *self.indirect_regions["canBeatPatioBoss"], + *self.indirect_regions["canBeatWallBoss"]] + self.indirect_regions["amanecidaRooms4"] = [*self.indirect_regions["canBeatGraveyardBoss"], + *self.indirect_regions["canBeatJondoBoss"], + *self.indirect_regions["canBeatPatioBoss"], + *self.indirect_regions["canBeatWallBoss"]] + + + def req_is_region(self, string: str) -> bool: + return (string[0] == "D" and string[3] == "Z" and string[6] == "S")\ + or (string[0] == "D" and string[3] == "B" and string[4] == "Z" and string[7] == "S") + + def load_rule(self, obj_is_region: bool, name: str, obj: Dict[str, Any]) -> Callable[[CollectionState], bool]: + clauses = [] + for clause in obj["logic"]: + reqs = [] + for req in clause["item_requirements"]: + if self.req_is_region(req): + if obj_is_region: + # add to indirect conditions if object and requirement are doors + self.indirect_conditions.append((req, f"{name} -> {obj['target']}")) + reqs.append(lambda state, req=req: state.can_reach_region(req, self.player)) + else: + if obj_is_region and req in self.indirect_regions: + # add to indirect conditions if object is door and requirement has list of regions + for region in self.indirect_regions[req]: + self.indirect_conditions.append((region, f"{name} -> {obj['target']}")) + reqs.append(self.string_rules[req]) + if len(reqs) == 1: + clauses.append(reqs[0]) + else: + clauses.append(lambda state, reqs=reqs: all(req(state) for req in reqs)) + if not clauses: + return lambda state: True + elif len(clauses) == 1: + return clauses[0] + else: + return lambda state: any(clause(state) for clause in clauses) -def charge_beam(state: CollectionState, player: int) -> bool: - return state.has("Charged Skill", player, 3) + # Relics + def blood(self, state: CollectionState) -> bool: + return state.has("Blood Perpetuated in Sand", self.player) + + def root(self, state: CollectionState) -> bool: + return state.has("Three Gnarled Tongues", self.player) + def linen(self, state: CollectionState) -> bool: + return state.has("Linen of Golden Thread", self.player) + + def nail(self, state: CollectionState) -> bool: + return state.has("Nail Uprooted from Dirt", self.player) + + def shroud(self, state: CollectionState) -> bool: + return state.has("Shroud of Dreamt Sins", self.player) -def can_air_stall(state: CollectionState, logic: int, player: int) -> bool: - return state.has("Ranged Skill", player) if logic >= 1 else False + def lung(self, state: CollectionState) -> bool: + return state.has("Silvered Lung of Dolphos", self.player) + + # Keys + def bronze_key(self, state: CollectionState) -> bool: + return state.has("Key of the Secular", self.player) + + def silver_key(self, state: CollectionState) -> bool: + return state.has("Key of the Scribe", self.player) + + def gold_key(self, state: CollectionState) -> bool: + return state.has("Key of the Inquisitor", self.player) + def peaks_key(self, state: CollectionState) -> bool: + return state.has("Key of the High Peaks", self.player) + + def elder_key(self, state: CollectionState) -> bool: + return state.has("Key to the Chamber of the Eldest Brother", self.player) + + def wood_key(self, state: CollectionState) -> bool: + return state.has("Key Grown from Twisted Wood", self.player) + + # Collections + def cherubs(self, state: CollectionState) -> int: + return state.count("Child of Moonlight", self.player) + + def bones(self, state: CollectionState) -> int: + return state.count_group_unique("bones", self.player) + + # def tears(): -def can_dawn_jump(state: CollectionState, logic: int, player: int) -> bool: - return state.has_all({"Brilliant Heart of Dawn", "Dash Ability"}, player) if logic >= 1 else False + # Special items + def dash(self, state: CollectionState) -> bool: + return state.has("Dash Ability", self.player) + def wall_climb(self, state: CollectionState) -> bool: + return state.has("Wall Climb Ability", self.player) + + #def air_impulse(): -def can_water_jump(state: CollectionState, player: int) -> bool: - return state.has_any({"Nail Uprooted from Dirt", "Purified Hand of the Nun"}, player) + def boots(self, state: CollectionState) -> bool: + return state.has("Boots of Pleading", self.player) + + def double_jump(self, state: CollectionState) -> bool: + return state.has("Purified Hand of the Nun", self.player) + + # Speed boosts + def wheel(self, state: CollectionState) -> bool: + return state.has("The Young Mason's Wheel", self.player) + + def dawn_heart(self, state: CollectionState) -> bool: + return state.has("Brilliant Heart of Dawn", self.player) + + # Health boosts + def flasks(self, state: CollectionState) -> int: + doors = { + "D01Z05S05[SW]", + "D02Z02S04[W]", + "D03Z02S08[W]", + "D03Z03S04[SW]", + "D04Z02S13[W]", + "D05Z01S08[NW]", + "D20Z01S07[NE]" + } + return state.count("Empty Bile Vessel", self.player) \ + if sum(state.can_reach_region(door, self.player) for door in doors) >= 1 else 0 + + def quicksilver(self, state: CollectionState) -> int: + return state.count("Quicksilver", self.player) if state.can_reach_region("D01Z05S01[W]", self.player) else 0 + + # Puzzles + def red_wax(self, state: CollectionState) -> int: + return state.count("Bead of Red Wax", self.player) + + def blue_wax(self, state: CollectionState) -> int: + return state.count("Bead of Blue Wax", self.player) + + def chalice(self, state: CollectionState) -> bool: + return state.has("Chalice of Inverted Verses", self.player) + + # Cherubs + def debla(self, state: CollectionState) -> bool: + return state.has("Debla of the Lights", self.player) + + def lorquiana(self, state: CollectionState) -> bool: + return state.has("Lorquiana", self.player) + + def zarabanda(self, state: CollectionState) -> bool: + return state.has("Zarabanda of the Safe Haven", self.player) + + def taranto(self, state: CollectionState) -> bool: + return state.has("Taranto to my Sister", self.player) + + def verdiales(self, state: CollectionState) -> bool: + return state.has("Verdiales of the Forsaken Hamlet", self.player) + + def cante(self, state: CollectionState) -> bool: + return state.has("Cante Jondo of the Three Sisters", self.player) + + def cantina(self, state: CollectionState) -> bool: + return state.has("Cantina of the Blue Rose", self.player) -def can_break_holes(state: CollectionState, player: int) -> bool: - return ( - state.has_any({"Charged Skill", "Dive Skill"}, player) - or ( - state.has("Lunge Skill", player, 3) - and state.has("Dash Ability", player) + def aubade(self, state: CollectionState) -> bool: + return ( + state.has("Aubade of the Nameless Guardian", self.player) + and self.total_fervour(state) >= 90 + ) + + def tirana(self, state: CollectionState) -> bool: + return ( + state.has("Tirana of the Celestial Bastion", self.player) + and self.total_fervour(state) >= 90 ) - or state.has_group("prayer", player) - or aubade(state, player) - or tirana(state, player) - ) - - -def can_break_tirana(state: CollectionState, logic: int, player: int) -> bool: - return tirana(state, player) if logic >= 2 else False - - -def can_dive_laser(state: CollectionState, logic: int, player: int) -> bool: - return state.has("Dive Skill", player, 3) if logic >= 2 else False - - -def can_walk_on_root(state: CollectionState, player: int) -> bool: - return state.has("Three Gnarled Tongues", player) - - -def can_climb_on_root(state: CollectionState, player: int) -> bool: - return state.has_all({"Three Gnarled Tongues", "Wall Climb Ability"}, player) - - -def can_survive_poison(state: CollectionState, logic: int, player: int, number: int) -> bool: - if number == 1: - if logic >= 2: - return True - elif logic == 1: - return state.has_any({"Silvered Lung of Dolphos", "Tiento to your Thorned Hairs"}, player) - elif logic == 0: - return state.has("Silvered Lung of Dolphos", player) - elif number == 2: - if logic >= 1: - return state.has_any({"Silvered Lung of Dolphos", "Tiento to your Thorned Hairs"}, player) - else: - return state.has("Silvered Lung of Dolphos", player) - elif number == 3: - if logic >= 2 and total_fervour(state, player) >= 120: - return state.has_any({"Silvered Lung of Dolphos", "Tiento to your Thorned Hairs"}, player) - else: - return state.has("Silvered Lung of Dolphos", player) + def ruby(self, state: CollectionState) -> bool: + return state.has("Cloistered Ruby", self.player) + + def tiento(self, state: CollectionState) -> bool: + return state.has("Tiento to my Sister", self.player) + + def any_small_prayer(self, state: CollectionState) -> bool: + return ( + self.debla(state) + or self.lorquiana(state) + or self.zarabanda(state) + or self.taranto(state) + or self.verdiales(state) + or self.cante(state) + or self.cantina(state) + or self.tiento(state) + or state.has_any({ + "Campanillero to the Sons of the Aurora", + "Mirabras of the Return to Port", + "Romance to the Crimson Mist", + "Saeta Dolorosa", + "Seguiriya to your Eyes like Stars", + "Verdiales of the Forsaken Hamlet", + "Zambra to the Resplendent Crown" + }, self.player) + ) + + def pillar(self, state: CollectionState) -> bool: + return ( + self.debla(state) + or self.taranto(state) + or self.ruby(state) + ) + + def can_use_any_prayer(self, state: CollectionState) -> bool: + return ( + self.any_small_prayer(state) + or self.tirana(state) + or self.aubade(state) + ) -def can_enemy_bounce(logic: int, enemy: int) -> bool: # TODO - return enemy_skips_allowed(logic, enemy) + # Stats + def total_fervour(self, state: CollectionState) -> int: + return ( + 60 + + (20 * min(6, state.count("Fervour Upgrade", self.player))) + + (10 * min(3, state.count("Bead of Blue Wax", self.player))) + ) + # Skills + def combo(self, state: CollectionState) -> int: + return state.count("Combo Skill", self.player) -def can_enemy_upslash(state: CollectionState, logic: int, enemy: int, player: int) -> bool: - return state.has("Combo Skill", player, 2) and \ - enemy_skips_allowed(logic, enemy) + def charged(self, state: CollectionState) -> int: + return state.count("Charged Skill", self.player) + def ranged(self, state: CollectionState) -> int: + return state.count("Ranged Skill", self.player) + + def dive(self, state: CollectionState) -> int: + return state.count("Dive Skill", self.player) + + def lunge(self, state: CollectionState) -> int: + return state.count("Lunge Skill", self.player) + + def charge_beam(self, state: CollectionState) -> bool: + return self.charged(state) >= 3 + + # Main quest + def holy_wounds(self, state: CollectionState) -> int: + return state.count_group_unique("wounds", self.player) + + def masks(self, state: CollectionState) -> int: + return state.count_group_unique("masks", self.player) + + def guilt_bead(self, state: CollectionState) -> bool: + return state.has("Weight of True Guilt", self.player) + + # LOTL quest + def cloth(self, state: CollectionState) -> bool: + return state.has("Linen Cloth", self.player) + + def hand(self, state: CollectionState) -> bool: + return state.has("Severed Hand", self.player) -def can_cross_gap(state: CollectionState, logic: int, player: int, number: int) -> bool: - if number == 1: + def hatched_egg(self, state: CollectionState) -> bool: + return state.has("Hatched Egg of Deformity", self.player) + + # Tirso quest + def herbs(self, state: CollectionState) -> int: + return state.count_group_unique("tirso", self.player) + + # Tentudia quest + def tentudia_remains(self, state: CollectionState) -> int: + return state.count_group_unique("tentudia", self.player) + + # Gemino quest + def empty_thimble(self, state: CollectionState) -> bool: + return state.has("Empty Golden Thimble", self.player) + + def full_thimble(self, state: CollectionState) -> bool: + return state.has("Golden Thimble Filled with Burning Oil", self.player) + + def dried_flowers(self, state: CollectionState) -> bool: + return state.has("Dried Flowers bathed in Tears", self.player) + + # Altasgracias quest + def ceremony_items(self, state: CollectionState) -> int: + return state.count_group_unique("egg", self.player) + + def egg(self, state: CollectionState) -> bool: + return state.has("Egg of Deformity", self.player) + + # Redento quest + def limestones(self, state: CollectionState) -> int: + return state.count_group_unique("toe", self.player) + + def knots(self, state: CollectionState) -> int: + return state.count("Knot of Rosary Rope", self.player) if state.can_reach_region("D17Z01S07[NW]", self.player)\ + else 0 + + # Cleofas quest + def marks_of_refuge(self, state: CollectionState) -> int: + return state.count_group_unique("marks", self.player) + + def cord(self, state: CollectionState) -> bool: + return state.has("Cord of the True Burying", self.player) + + # Crisanta quest + def scapular(self, state: CollectionState) -> bool: + return state.has("Incomplete Scapular", self.player) + + def true_heart(self, state: CollectionState) -> bool: + return state.has("Apodictic Heart of Mea Culpa", self.player) + + def traitor_eyes(self, state: CollectionState) -> int: + return state.count_group_unique("eye", self.player) + + # Jibrael quest + def bell(self, state: CollectionState) -> bool: + return state.has("Petrified Bell", self.player) + + def verses(self, state: CollectionState) -> int: + return state.count("Verses Spun from Gold", self.player) + + # Movement tech + def can_air_stall(self, state: CollectionState) -> bool: return ( - state.has_any({"Purified Hand of the Nun", "The Young Mason's Wheel"}, player) - or can_dawn_jump(state, logic, player) - or can_air_stall(state, logic, player) + self.ranged(state) > 0 + and self.world.options.difficulty >= 1 ) - elif number == 2: + + def can_dawn_jump(self, state: CollectionState) -> bool: return ( - state.has_any({"Purified Hand of the Nun", "The Young Mason's Wheel"}, player) - or can_dawn_jump(state, logic, player) + self.dawn_heart(state) + and self.dash(state) + and self.world.options.difficulty >= 1 ) - elif number == 3: + + def can_water_jump(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) - or can_dawn_jump(state, logic, player) - or ( - state.has("The Young Mason's Wheel", player) - and can_air_stall(state, logic, player) - ) + self.nail(state) + or self.double_jump(state) + ) + + # Breakable tech + def can_break_holes(self, state: CollectionState) -> bool: + return ( + self.charged(state) > 0 + or self.dive(state) > 0 + or self.lunge(state) >= 3 and self.dash(state) + or self.can_use_any_prayer(state) + ) + + def can_dive_laser(self, state: CollectionState) -> bool: + return ( + self.dive(state) >= 3 + and self.world.options.difficulty >= 2 + ) + + # Root tech + def can_walk_on_root(self, state: CollectionState) -> bool: + return self.root(state) + + def can_climb_on_root(self, state: CollectionState) -> bool: + return ( + self.root(state) + and self.wall_climb(state) + ) + + # Lung tech + def can_survive_poison_1(self, state: CollectionState) -> bool: + return ( + self.lung(state) + or self.world.options.difficulty >= 1 + and self.tiento(state) + or self.world.options.difficulty >= 2 + ) + + def can_survive_poison_2(self, state: CollectionState) -> bool: + return ( + self.lung(state) + or self.world.options.difficulty >= 1 + and self.tiento(state) + ) + + def can_survive_poison_3(self, state: CollectionState) -> bool: + return ( + self.lung(state) + or self.world.options.difficulty >= 2 + and self.tiento(state) + and self.total_fervour(state) >= 120 + ) + + # Enemy tech + def can_enemy_bounce(self, state: CollectionState) -> bool: + return self.enemy_skips_allowed(state) + + def can_enemy_upslash(self, state: CollectionState) -> bool: + return ( + self.combo(state) >= 2 + and self.enemy_skips_allowed(state) + ) + + # Crossing gaps + def can_cross_gap_1(self, state: CollectionState) -> bool: + return ( + self.double_jump(state) + or self.can_dawn_jump(state) + or self.wheel(state) + or self.can_air_stall(state) + ) + + def can_cross_gap_2(self, state: CollectionState) -> bool: + return ( + self.double_jump(state) + or self.can_dawn_jump(state) + or self.wheel(state) ) - elif number == 4: + + def can_cross_gap_3(self, state: CollectionState) -> bool: + return ( + self.double_jump(state) + or self.can_dawn_jump(state) + or self.wheel(state) + and self.can_air_stall(state) + ) + + def can_cross_gap_4(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) - or can_dawn_jump(state, logic, player) + self.double_jump(state) + or self.can_dawn_jump(state) ) - elif number == 5: + + def can_cross_gap_5(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) - or ( - can_dawn_jump(state, logic, player) - and can_air_stall(state, logic, player)) + self.double_jump(state) + or self.can_dawn_jump(state) + and self.can_air_stall(state) ) - elif number == 6: - return state.has("Purified Hand of the Nun", player) - elif number == 7: + + def can_cross_gap_6(self, state: CollectionState) -> bool: + return self.double_jump(state) + + def can_cross_gap_7(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) + self.double_jump(state) and ( - can_dawn_jump(state, logic, player) - or state.has("The Young Mason's Wheel", player) - or can_air_stall(state, logic, player) + self.can_dawn_jump(state) + or self.wheel(state) + or self.can_air_stall(state) ) ) - elif number == 8: + + def can_cross_gap_8(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) + self.double_jump(state) and ( - can_dawn_jump(state, logic, player) - or state.has("The Young Mason's Wheel", player) + self.can_dawn_jump(state) + or self.wheel(state) ) ) - elif number == 9: + + def can_cross_gap_9(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) + self.double_jump(state) and ( - can_dawn_jump(state, logic, player) - or state.has("The Young Mason's Wheel", player) - and can_air_stall(state, logic, player) + self.can_dawn_jump(state) + or self.wheel(state) + and self.can_air_stall(state) ) ) - elif number == 10: + + def can_cross_gap_10(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) - and can_dawn_jump(state, logic, player) + self.double_jump(state) + and self.can_dawn_jump(state) ) - elif number == 11: + + def can_cross_gap_11(self, state: CollectionState) -> bool: return ( - state.has("Purified Hand of the Nun", player) - and can_dawn_jump(state, logic, player) - and can_air_stall(state, logic, player) + self.double_jump(state) + and self.can_dawn_jump(state) + and self.can_air_stall(state) ) - -def can_ride_albero_elevator(state: CollectionState, player: int) -> bool: - return state.has_any({"D02Z02S11[NW]", "D02Z02S11[NE]", "D02Z02S11[W]", "D02Z02S11[E]", \ - "D02Z02S11[SE]"}, player) - - -def opened_dc_gate_w(state: CollectionState, player: int) -> bool: - return state.has_any({"D01Z05S24[W]", "D01Z05S24[E]"}, player) - - -def opened_dc_gate_e(state: CollectionState, player: int) -> bool: - return state.has_any({"D01Z05S12[W]", "D01Z05S12[E]"}, player) - - -def opened_dc_ladder(state: CollectionState, player: int) -> bool: - return state.has_any({"D01Z05S20[W]", "D01Z05S20[N]"}, player) - - -def opened_wotw_cave(state: CollectionState, player: int) -> bool: - return ( - state.has("D02Z01S06[E]", player) - or state.has("Wall Climb Ability", player) - and ( - state.has("D02Z01S06[W]", player) - or state.has("D02Z01S06[Cherubs]", player) + # Events that trigger in different scenes + def opened_dc_gate_w(self, state: CollectionState) -> bool: + return ( + state.can_reach_region("D20Z01S04[E]", self.player) + or state.can_reach_region("D01Z05S23[W]", self.player) ) - ) - - -def rode_gotp_elevator(state: CollectionState, player: int) -> bool: - return state.has_any({"D02Z02S11[NW]", "D02Z02S11[NE]", "D02Z02S11[W]", "D02Z02S11[E]", \ - "D02Z02S11[SE]"}, player) - - -def opened_convent_ladder(state: CollectionState, player: int) -> bool: - return state.has_any({"D02Z03S11[S]", "D02Z03S11[W]", "D02Z03S11[NW]", "D02Z03S11[E]", \ - "D02Z03S11[NE]"}, player) - - -def broke_jondo_bell_w(state: CollectionState, player: int) -> bool: - return ( - state.has("D03Z02S09[S]", player) - or state.has("D03Z02S09[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S09[N]", player) - or state.has("D03Z02S09[Cherubs]", player) - ) - - -def broke_jondo_bell_e(state: CollectionState, logic: int, enemy: int, player: int) -> bool: - return ( - state.has("D03Z02S05[S]", player) - or state.has("D03Z02S05[E]", player) - or state.has("D03Z02S05[W]", player) - and ( - can_cross_gap(state, logic, player, 5) - or can_enemy_bounce(logic, enemy) - and can_cross_gap(state, logic, player, 3) + + def opened_dc_gate_e(self, state: CollectionState) -> bool: + return ( + state.can_reach_region("D01Z05S10[SE]", self.player) + or state.can_reach_region("D01Z04S09[W]", self.player) ) - ) - - -def opened_mom_ladder(state: CollectionState, player: int) -> bool: - return state.has_any({"D04Z02S06[NW]", "D04Z02S06[NE]", "D04Z02S06[N]", "D04Z02S06[S]"}, player) - - -def opened_tsc_gate(state: CollectionState, player: int) -> bool: - return state.has_any({"D05Z02S11[W]", "D05Z02S11[Cherubs]"}, player) - - -def opened_ar_ladder(state: CollectionState, player: int) -> bool: - return state.has_any({"D06Z01S23[Sword]", "D06Z01S23[E]", "D06Z01S23[S]", "D06Z01S23[Cherubs]"}, player) - - -def broke_bottc_statue(state: CollectionState, player: int) -> bool: - return state.has_any({"D08Z01S02[NE]", "D08Z01S02[SE]"}, player) - - -def opened_wothp_gate(state: CollectionState, player: int) -> bool: - return state.has_any({"D09Z01S05[W]", "D09Z01S05[SE]", "D09Z01S05[NE]"}, player) - - -def opened_botss_ladder(state: CollectionState, player: int) -> bool: - return state.has_any({"D17Z01S04[N]", "D17Z01S04[FrontR]"}, player) - - -def upwarp_skips_allowed(logic: int) -> bool: - return logic >= 2 - - -def mourning_skips_allowed(logic: int) -> bool: - return logic >= 2 - - -def enemy_skips_allowed(logic: int, enemy: int) -> bool: - return logic >= 2 and enemy == 0 - - -def obscure_skips_allowed(logic): - return logic >= 2 - - -def precise_skips_allowed(logic): - return logic >= 2 - - -def can_beat_boss(state: CollectionState, boss: str, logic: int, player: int) -> bool: - def has_boss_strength(name: str) -> bool: - silver: int = state.count("Quicksilver", player) if state.has("D01Z05S27[E]", player) else 0 - flasks: int = state.count("Empty Bile Flask", player) if \ - state.has_any({"D01Z05S18[E]", "D02Z02S09[E]", "D03Z02S14[E]", "D03Z03S03[SE]", "D04Z02S13[W]", \ - "D05Z01S12[E]", "D20Z01S08[W]"}, player) else 0 - - - playerStrength: float = state.count("Life Upgrade", player) * 0.25 / 6 + \ - state.count("Mea Culpa Upgrade", player) * 0.25 / 7 + state.count("Fervour Upgrade", player) * 0.20 \ - / 6 + flasks * 0.15 / 8 + silver * 0.15 / 5 - - bosses: Dict[str, int] = { - "warden": -0.10, - "ten-piedad": 0.05, - "charred-visage": 0.20, - "tres-angustias": 0.15, - "esdras": 0.25, - "melquiades": 0.25, - "exposito": 0.30, - "quirce": 0.35, - "crisanta": 0.50, - "isidora": 0.70, - "sierpes": 0.70, - "amanecida": 0.60, - "laudes": 0.60, - "perpetua": -0.05, - "legionary": 0.20 - } - - bossStrength: int = bosses[name] - - return playerStrength >= (bossStrength - 0.10 if logic >= 2 else (bossStrength if logic >= 1 else bossStrength + 0.10)) - if boss == "Brotherhood": + def opened_dc_ladder(self, state: CollectionState) -> bool: return ( - has_boss_strength("warden") - and state.has_any({"D17Z01S11[W]", "D17Z01S11[E]"}, player) + state.can_reach_region("D01Z05S25[NE]", self.player) + or state.can_reach_region("D01Z05S02[S]", self.player) ) - elif boss == "Mercy": + + def opened_wotw_cave(self, state: CollectionState) -> bool: return ( - has_boss_strength("ten-piedad") - and state.has_any({"D01Z04S18[W]", "D01Z04S18[E]"}, player) + state.can_reach_region("D02Z01S01[SW]", self.player) + or self.wall_climb(state) + and state.can_reach_region("D02Z01S08[E]", self.player) + or state.can_reach_region("D02Z01S02[]", self.player) ) - elif boss == "Convent": + + def rode_gotp_elevator(self, state: CollectionState) -> bool: return ( - has_boss_strength("charred-visage") - and state.has_any({"D02Z03S20[W]", "D02Z03S20[E]"}, player) + state.can_reach_region("D02Z03S14[E]", self.player) + or state.can_reach_region("D02Z02S13[W]", self.player) + or state.can_reach_region("D02Z02S06[E]", self.player) + or state.can_reach_region("D02Z02S12[W]", self.player) + or state.can_reach_region("D02Z02S08[W]", self.player) ) - elif boss == "Grievance": + + def opened_convent_ladder(self, state: CollectionState) -> bool: return ( - has_boss_strength("tres-angustias") - and state.has_any({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - and state.has_any({"D03Z03S15[W]", "D03Z03S15[E]"}, player) + state.can_reach_region("D02Z03S02[N]", self.player) + or state.can_reach_region("D02Z03S15[E]", self.player) + or state.can_reach_region("D02Z03S19[E]", self.player) + or state.can_reach_region("D02Z03S10[W]", self.player) + or state.can_reach_region("D02Z03S22[W]", self.player) ) - elif boss == "Bridge": + + def broke_jondo_bell_w(self, state: CollectionState) -> bool: return ( - has_boss_strength("esdras") - and state.has_any({"D08Z01S01[W]", "D08Z01S01[E]"}, player) + state.can_reach_region("D03Z02S08[N]", self.player) + or state.can_reach_region("D03Z02S12[E]", self.player) + and self.dash(state) + or state.can_reach_region("D03Z02S10[S]", self.player) + or state.can_reach_region("D03Z02S10[-Cherubs]", self.player) ) - elif boss == "Mothers": + + def broke_jondo_bell_e(self, state: CollectionState) -> bool: return ( - has_boss_strength("melquiades") - and state.has_any({"D04Z02S22[W]", "D04Z02S22[E]"}, player) + state.can_reach_region("D03Z02S04[NE]", self.player) + or state.can_reach_region("D03Z02S11[W]", self.player) + or state.can_reach_region("D03Z02S03[E]", self.player) + and ( + self.can_cross_gap_5(state) + or self.can_enemy_bounce(state) + and self.can_cross_gap_3(state) + ) ) - elif boss == "Canvases": + + def opened_mom_ladder(self, state: CollectionState) -> bool: return ( - has_boss_strength("exposito") - and state.has_any({"D05Z02S14[W]", "D05Z02S14[E]"}, player) + state.can_reach_region("D04Z02S11[E]", self.player) + or state.can_reach_region("D04Z02S09[W]", self.player) + or state.can_reach_region("D06Z01S23[S]", self.player) + or state.can_reach_region("D04Z02S04[N]", self.player) ) - elif boss == "Prison": + + def opened_tsc_gate(self, state: CollectionState) -> bool: return ( - has_boss_strength("quirce") - and state.has_any({"D09Z01S03[W]", "D09Z01S03[N]"}, player) + state.can_reach_region("D05Z02S06[SE]", self.player) + or state.can_reach_region("D05Z01S21[-Cherubs]", self.player) ) - elif boss == "Rooftops": + + def opened_ar_ladder(self, state: CollectionState) -> bool: return ( - has_boss_strength("crisanta") - and state.has_any({"D06Z01S25[W]", "D06Z01S25[E]"}, player) + state.can_reach_region("D06Z01S22[Sword]", self.player) + or state.can_reach_region("D06Z01S20[W]", self.player) + or state.can_reach_region("D04Z02S06[N]", self.player) + or state.can_reach_region("D06Z01S01[-Cherubs]", self.player) ) - elif boss == "Ossuary": + + def broke_bottc_statue(self, state: CollectionState) -> bool: return ( - has_boss_strength("isidora") - and state.has("D01BZ08S01[W]", player) + state.can_reach_region("D08Z03S03[W]", self.player) + or state.can_reach_region("D08Z02S03[W]", self.player) ) - elif boss == "Mourning": + + def opened_wothp_gate(self, state: CollectionState) -> bool: return ( - has_boss_strength("sierpes") - and state.has("D20Z02S08[E]", player) + state.can_reach_region("D09Z01S13[E]", self.player) + or state.can_reach_region("D09Z01S03[W]", self.player) + or state.can_reach_region("D09Z01S08[W]", self.player) ) - elif boss == "Graveyard": + + def opened_botss_ladder(self, state: CollectionState) -> bool: return ( - has_boss_strength("amanecida") - and state.has_all({"D01Z06S01[Santos]", "D02Z03S23[E]", "D02Z02S14[W]", "Wall Climb Ability"}, player) + state.can_reach_region("D17Z01S05[S]", self.player) + or state.can_reach_region("D17BZ02S01[FrontR]", self.player) ) - elif boss == "Jondo": + + # Special skips + def upwarp_skips_allowed(self, state: CollectionState) -> bool: + return self.world.options.difficulty >= 2 + + def mourning_skip_allowed(self, state: CollectionState) -> bool: + return self.world.options.difficulty >= 2 + + def enemy_skips_allowed(self, state: CollectionState) -> bool: return ( - has_boss_strength("amanecida") - and state.has("D01Z06S01[Santos]", player) - and state.has_any({"D20Z01S05[W]", "D20Z01S05[E]"}, player) - and state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) + self.world.options.difficulty >= 2 + and not self.world.options.enemy_randomizer ) - elif boss == "Patio": + + def obscure_skips_allowed(self, state: CollectionState) -> bool: + return self.world.options.difficulty >= 2 + + def precise_skips_allowed(self, state: CollectionState) -> bool: + return self.world.options.difficulty >= 2 + + # Bosses + def can_beat_brotherhood_boss(self, state: CollectionState) -> bool: return ( - has_boss_strength("amanecida") - and state.has_all({"D01Z06S01[Santos]", "D06Z01S18[E]"}, player) - and state.has_any({"D04Z01S04[W]", "D04Z01S04[E]", "D04Z01S04[Cherubs]"}, player) + self.has_boss_strength(state, "warden") + and ( + state.can_reach_region("D17Z01S05[E]", self.player) + or state.can_reach_region("D17Z01S03[W]", self.player) + ) ) - elif boss == "Wall": + + def can_beat_mercy_boss(self, state: CollectionState) -> bool: return ( - has_boss_strength("amanecida") - and state.has_all({"D01Z06S01[Santos]", "D09BZ01S01[Cell24]"}, player) - and state.has_any({"D09Z01S01[W]", "D09Z01S01[E]"}, player) + self.has_boss_strength(state, "ten-piedad") + and ( + state.can_reach_region("D01Z04S19[E]", self.player) + or state.can_reach_region("D01Z04S12[W]", self.player) + ) ) - elif boss == "Hall": + + def can_beat_convent_boss(self, state: CollectionState) -> bool: return ( - has_boss_strength("laudes") - and state.has_any({"D08Z03S03[W]", "D08Z03S03[E]"}, player) + self.has_boss_strength(state, "charred-visage") + and ( + state.can_reach_region("D02Z03S09[E]", self.player) + or state.can_reach_region("D02Z03S21[W]", self.player) + ) ) - elif boss == "Perpetua": - return has_boss_strength("perpetua") - elif boss == "Legionary": - return has_boss_strength("legionary") - - -def guilt_rooms(state: CollectionState, player: int, number: int) -> bool: - doors: List[str] = [ - "D01Z04S17[W]", - "D02Z02S06[E]", - "D03Z03S14[W]", - "D04Z02S17[W]", - "D05Z01S17[W]", - "D09Z01S13[E]", - "D17Z01S12[E]" - ] - - total: int = sum(state.has(item, player) for item in doors) - - return total >= number - - -def sword_rooms(state: CollectionState, player: int, number: int) -> bool: - doors: List[Set[str]] = [ - {"D01Z02S06[W]", "D01Z02S06[E]"}, - {"D01Z05S24[W]", "D01Z05S24[E]"}, - {"D02Z03S13[W]"}, - {"D04Z02S12[W]"}, - {"D05Z01S13[E]"}, - {"D06Z01S11[W]"}, - {"D17Z01S08[E]"} - ] - - total: int = sum(state.has_any(items, player) for items in doors) - - return total >= number - - -def redento(state: CollectionState, world, player: int, number: int) -> bool: - if number == 1: - return state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) - elif number == 2: + + def can_beat_grievance_boss(self, state: CollectionState) -> bool: return ( - state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) - and state.has("OpenedBOTSSLadder", player) + self.has_boss_strength(state, "tres-angustias") + and ( + self.wall_climb(state) + or self.double_jump(state) + ) and ( + state.can_reach_region("D03Z03S11[E]", self.player) + or state.can_reach_region("D03Z03S16[W]", self.player) + ) ) - elif number == 3: + + def can_beat_bridge_boss(self, state: CollectionState) -> bool: return ( - state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) - and state.has("OpenedBOTSSLadder", player) - and state.can_reach(world.multiworld.get_region("D01Z03S06", player)) + self.has_boss_strength(state, "esdras") + and ( + state.can_reach_region("D01Z03S06[E]", self.player) + or state.can_reach_region("D08Z02S01[W]", self.player) + ) ) - elif number == 4: + + def can_beat_mothers_boss(self, state: CollectionState) -> bool: return ( - state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) - and state.has("OpenedBOTSSLadder", player) - and state.can_reach(world.multiworld.get_region("D01Z03S06", player)) - and state.can_reach(world.multiworld.get_region("D04Z01S04", player)) + self.has_boss_strength(state, "melquiades") + and ( + state.can_reach_region("D04Z02S15[E]", self.player) + or state.can_reach_region("D04Z02S21[W]", self.player) + ) ) - elif number == 5: + + def can_beat_canvases_boss(self, state: CollectionState) -> bool: return ( - state.has_any({"D03Z01S03[W]", "D03Z01S03[SW]"}, player) - and state.has("OpenedBOTSSLadder", player) - and state.can_reach(world.multiworld.get_region("D01Z03S06", player)) - and state.can_reach(world.multiworld.get_region("D04Z01S04", player)) - and state.can_reach(world.multiworld.get_region("D04Z02S20", player)) - and state.has_all({"Little Toe made of Limestone", "Big Toe made of Limestone", \ - "Fourth Toe made of Limestone", "D17Z01S09[E]"}, player) - and state.has("Knot of Rosary Rope", player) + self.has_boss_strength(state, "exposito") + and ( + state.can_reach_region("D05Z02S06[NE]", self.player) + or state.can_reach_region("D05Z01S21[SW]", self.player) + ) ) - - -def miriam(state: CollectionState, player: int) -> bool: - return state.has_all({"D02Z03S24[E]", "D03Z03S19[E]", "D04Z04S02[W]", "D05Z01S24[E]", "D06Z01S26[W]"}, player) - - -def amanecida_rooms(state: CollectionState, logic: int, player: int, number: int) -> bool: - bosses: List[str] = [ - "Graveyard", - "Jondo", - "Patio", - "Wall" - ] - - total = sum(can_beat_boss(state, boss, logic, player) for boss in bosses) - - return total >= number - - -def chalice_rooms(state: CollectionState, player: int, number: int) -> bool: - doors: List[Set[str]] = [ - {"D03Z01S01[W]", "D03Z01S01[NE]", "D03Z01S01[S]"}, - {"D05Z02S01[W]", "D05Z02S01[E]"}, - {"D09Z01S07[SW]", "D09Z01S07[SE]", "D09Z01S07[W]", "D09Z01S07[E]"} - ] - - total: int = sum(state.has_any(items, player) for items in doors) - - return total >= number - - -def rules(blasphemousworld): - world = blasphemousworld.multiworld - player = blasphemousworld.player - logic = world.difficulty[player].value - enemy = world.enemy_randomizer[player].value - - - # D01Z01S01 (The Holy Line) - # No items - # Doors - set_rule(world.get_entrance("D01Z01S01[S]", player), - lambda state: ( - can_break_holes(state, player) - or state.has("Purified Hand of the Nun", player) - )) - - - # D01Z01S02 (The Holy Line) - # Items - set_rule(world.get_location("THL: Across blood platforms", player), - lambda state: ( - state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - )) - # No doors - - - # D01Z01S03 (The Holy Line) - # Items - set_rule(world.get_location("THL: Underground chest", player), - lambda state: ( - state.has_all({"Blood Perpetuated in Sand", "Dash Ability"}, player) - and can_water_jump(state, player) - )) - # No doors - - - # D01Z02S01 (Albero) - # Items - set_rule(world.get_location("Albero: Bless Linen Cloth", player), - lambda state: state.has("Linen Cloth", player)) - set_rule(world.get_location("Albero: Bless Hatched Egg", player), - lambda state: state.has("Hatched Egg of Deformity", player)) - set_rule(world.get_location("Albero: Bless Severed Hand", player), - lambda state: state.has("Severed Hand", player)) - # No doors - - - # D01Z02S02 (Albero) - # Items - set_rule(world.get_location("Albero: Tirso's 1st reward", player), - lambda state: state.has_group("tirso", player, 1)) - set_rule(world.get_location("Albero: Tirso's 2nd reward", player), - lambda state: state.has_group("tirso", player, 2)) - set_rule(world.get_location("Albero: Tirso's 3rd reward", player), - lambda state: state.has_group("tirso", player, 3)) - set_rule(world.get_location("Albero: Tirso's 4th reward", player), - lambda state: state.has_group("tirso", player, 4)) - set_rule(world.get_location("Albero: Tirso's 5th reward", player), - lambda state: state.has_group("tirso", player, 5)) - set_rule(world.get_location("Albero: Tirso's 6th reward", player), - lambda state: state.has_group("tirso", player, 6)) - set_rule(world.get_location("Albero: Tirso's final reward", player), - lambda state: ( - state.has_group("tirso", player, 6) - and can_beat_boss(state, "Mercy", logic, player) - and can_beat_boss(state, "Convent", logic, player) - and can_beat_boss(state, "Grievance", logic, player) - and can_beat_boss(state, "Mothers", logic, player) - and can_beat_boss(state, "Canvases", logic, player) - and can_beat_boss(state, "Prison", logic, player) - )) - # No doors - - - # D01Z02S03 (Albero) - # Items - set_rule(world.get_location("Albero: Child of Moonlight", player), - lambda state: ( - state.has("RodeGOTPElevator", player) - or pillar(state, player) - or state.has("Cante Jondo of the Three Sisters", player) - or state.has("Purified Hand of the Nun", player) - or state.has("D01Z02S03[NW]", player) - and ( - can_cross_gap(state, logic, player, 2) - or state.has("Lorquiana", player) - or aubade(state, player) - or state.has("Cantina of the Blue Rose", player) - or charge_beam(state, player) - or state.has("Ranged Skill", player) - ) - )) - set_rule(world.get_location("Albero: Lvdovico's 1st reward", player), - lambda state: state.has_group("tentudia", player, 1)) - set_rule(world.get_location("Albero: Lvdovico's 2nd reward", player), - lambda state: state.has_group("tentudia", player, 2)) - set_rule(world.get_location("Albero: Lvdovico's 3rd reward", player), - lambda state: state.has_group("tentudia", player, 3)) - set_rule(world.get_location("Albero: First gift for Cleofas", player), - lambda state: state.has("D04Z02S10[W]", player)) - # Doors - set_rule(world.get_entrance("D01Z02S03[NW]", player), - lambda state: ( - state.has("D02Z02S11[NW]", player) - or state.has("D02Z02S11[NE]", player) - or state.has("D02Z02S11[W]", player) - or state.has("D02Z02S11[E]", player) - or state.has("D02Z02S11[SE]", player) - )) - set_rule(world.get_entrance("D01Z02S03[church]", player), - lambda state: ( - can_beat_boss(state, "Mercy", logic, player) - or can_beat_boss(state, "Convent", logic, player) - or can_beat_boss(state, "Grievance", logic, player) - )) - - - # D01BZ04S01 (Albero: Inside church) - # Items - set_rule(world.get_location("Albero: Final gift for Cleofas", player), - lambda state: ( - state.has_group("marks", player, 3) - and state.has("Cord of the True Burying", player) - and state.has("D04Z02S10[W]", player) - and state.has("D06Z01S18[E]", player) - )) - # No doors - - - # D01BZ06S01 (Ossuary) - # Items - set_rule(world.get_location("Ossuary: 1st reward", player), - lambda state: state.has_group("bones", player, 4)) - set_rule(world.get_location("Ossuary: 2nd reward", player), - lambda state: state.has_group("bones", player, 8)) - set_rule(world.get_location("Ossuary: 3rd reward", player), - lambda state: state.has_group("bones", player, 12)) - set_rule(world.get_location("Ossuary: 4th reward", player), - lambda state: state.has_group("bones", player, 16)) - set_rule(world.get_location("Ossuary: 5th reward", player), - lambda state: state.has_group("bones", player, 20)) - set_rule(world.get_location("Ossuary: 6th reward", player), - lambda state: state.has_group("bones", player, 24)) - set_rule(world.get_location("Ossuary: 7th reward", player), - lambda state: state.has_group("bones", player, 28)) - set_rule(world.get_location("Ossuary: 8th reward", player), - lambda state: state.has_group("bones", player, 32)) - set_rule(world.get_location("Ossuary: 9th reward", player), - lambda state: state.has_group("bones", player, 36)) - set_rule(world.get_location("Ossuary: 10th reward", player), - lambda state: state.has_group("bones", player, 40)) - set_rule(world.get_location("Ossuary: 11th reward", player), - lambda state: state.has_group("bones", player, 44)) - # Doors - set_rule(world.get_entrance("D01BZ06S01[E]", player), - lambda state: state.has_group("bones", player, 30)) - - - # D01BZ08S01 (Isidora) - # Items - set_rule(world.get_location("Ossuary: Isidora, Voice of the Dead", player), - lambda state: can_beat_boss(state, "Ossuary", logic, player)) - # No doors - - - # D01Z03S01 (Wasteland of the Buried Churches) - # Items - set_rule(world.get_location("WotBC: Lower log path", player), - lambda state: state.has("D01Z03S01[SE]", player)) - # No doors - - - # D01Z03S02 (Wasteland of the Buried Churches) - # Items - set_rule(world.get_location("WotBC: Hidden alcove", player), - lambda state: state.has("Dash Ability", player)) - # No doors - - - # D01Z03S03 (Wasteland of the Buried Churches) - # No items - # Doors - set_rule(world.get_entrance("D01Z03S03[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D01Z03S05 (Wasteland of the Buried Churches) - # Items - set_rule(world.get_location("WotBC: Under broken bridge", player), - lambda state: ( - state.has_any({"Blood Perpetuated in Sand", "Boots of Pleading"}, player) - or can_cross_gap(state, logic, player, 3) - )) - # Doors - set_rule(world.get_entrance("D01Z03S05[Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D01Z03S06 (Wasteland of the Buried Churches) - # Items - set_rule(world.get_location("WotBC: 3rd meeting with Redento", player), - lambda state: redento(state, blasphemousworld, player, 3)) - # No doors - - - # D01Z03S07 (Wasteland of the Buried Churches) - # Items - set_rule(world.get_location("WotBC: Cliffside Child of Moonlight", player), - lambda state: ( - can_cross_gap(state, logic, player, 2) - or aubade(state, player) - or charge_beam(state, player) - or state.has_any({"Lorquiana", "Cante Jondo of the Three Sisters", "Cantina of the Blue Rose", \ - "Cloistered Ruby", "Ranged Skill"}, player) - or precise_skips_allowed(logic) - )) - # Doors - set_rule(world.get_entrance("D01Z03S07[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D01Z04S01 (Mercy Dreams) - # No items - # Doors - set_rule(world.get_entrance("D01Z04S01[SE]", player), - lambda state: state.has("D01Z04S01[S]", player)) - set_rule(world.get_entrance("D01Z04S01[S]", player), - lambda state: state.has("D01Z04S01[SE]", player)) - - - # D01Z04S09 (Mercy Dreams) - # No items - # Doors - set_rule(world.get_entrance("D01Z04S09[W]", player), - lambda state: state.has("OpenedDCGateE", player)) - - - # D01Z04S13 (Mercy Dreams) - # Items - set_rule(world.get_location("MD: Behind gate to TSC", player), - lambda state: ( - state.has("D01Z04S13[SE]", player) - or can_dive_laser(state, logic, player) and ( - can_air_stall(state, logic, player) - or state.has_any({"The Young Mason's Wheel", "Purified Hand of the Nun"}, player) - or can_enemy_bounce(logic, enemy) - ) - )) - # Doors - set_rule(world.get_entrance("D01Z04S13[SE]", player), - lambda state: ( - can_dive_laser(state, logic, player) and ( - can_air_stall(state, logic, player) - or state.has_any({"The Young Mason's Wheel", "Purified Hand of the Nun"}, player) - or can_enemy_bounce(logic, enemy) - ) - )) - - - # D01Z04S14 (Mercy Dreams) - # Items - set_rule(world.get_location("MD: Sliding challenge", player), - lambda state: state.has("Dash Ability", player)) - # No doors - - - # D01Z04S15 (Mercy Dreams) - # No items - # Doors - set_rule(world.get_entrance("D01Z04S15[W]", player), - lambda state: ( - state.has("D01Z04S15[E]", player) - or state.has("D01Z04S15[SW]", player) - or state.has("D01Z04S15[SE]", player) - )) - set_rule(world.get_entrance("D01Z04S15[E]", player), - lambda state: ( - state.has("D01Z04S15[W]", player) - or state.has("D01Z04S15[SW]", player) - or state.has("D01Z04S15[SE]", player) - )) - set_rule(world.get_entrance("D01Z04S15[SW]", player), - lambda state: ( - state.has("D01Z04S15[W]", player) - or state.has("D01Z04S15[E]", player) - or state.has("D01Z04S15[SE]", player) - )) - set_rule(world.get_entrance("D01Z04S15[SE]", player), - lambda state: ( - state.has("D01Z04S15[W]", player) - or state.has("D01Z04S15[E]", player) - or state.has("D01Z04S15[SW]", player) - )) - - - # D01Z04S16 (Mercy Dreams) - # Items - set_rule(world.get_location("MD: Cave Child of Moonlight", player), - lambda state: ( - state.has_any({"Purified Hand of the Nun", "Cante Jondo of the Three Sisters"}, player) - or pillar(state, player) - or tirana(state, player) - )) - # No doors - - - # D01Z04S18 (Ten Piedad) - # Items - set_rule(world.get_location("MD: Ten Piedad", player), - lambda state: can_beat_boss(state, "Mercy", logic, player)) - # Doors - set_rule(world.get_entrance("D01Z04S18[W]", player), - lambda state: can_beat_boss(state, "Mercy", logic, player)) - set_rule(world.get_entrance("D01Z04S18[E]", player), - lambda state: can_beat_boss(state, "Mercy", logic, player)) - - - # D01Z05S02 (Desecrated Cistern) - # No items - # Doors - set_rule(world.get_entrance("D01Z05S02[S]", player), - lambda state: state.has("OpenedDCLadder", player)) - - - # D01Z05S05 (Desecrated Cistern) - # Items - set_rule(world.get_location("DC: Hidden alcove near fountain", player), - lambda state: ( - state.has("Dash Ability", player) - and can_water_jump(state, player) - )) - # No doors - - - # D01Z05S06 (Desecrated Cistern) - # Items - set_rule(world.get_location("DC: Upper east tunnel chest", player), - lambda state: ( - state.has("D01Z05S06[Cherubs]", player) - or can_water_jump(state, player) - )) - set_rule(world.get_location("DC: Upper east Child of Moonlight", player), - lambda state: ( - state.has("D01Z05S06[Cherubs]", player) - or can_water_jump(state, player) - or pillar(state, player) - or state.has("Cante Jondo of the Three Sisters", player) - or aubade(state, player) - or tirana(state, player) - or can_air_stall(state, logic, player) - )) - # No doors - - - # D01Z05S12 (Desecrated Cistern) - # Event - set_rule(world.get_location("OpenedDCGateE", player), - lambda state: opened_dc_gate_e(state, player)) - - - # D01Z05S13 (Desecrated Cistern) - # Items - set_rule(world.get_location("DC: Child of Moonlight, behind pillar", player), - lambda state: ( - state.has("D01Z05S13[SW]", player) - or state.has("D01Z05S13[E]", player) - and can_survive_poison(state, logic, player, 3) - and can_water_jump(state, player) - )) - # Doors - set_rule(world.get_entrance("D01Z05S13[SW]", player), - lambda state: state.has("D01Z05S13[E]", player)) - add_rule(world.get_entrance("D01Z05S13[SW]", player), - lambda state: ( - can_survive_poison(state, logic, player, 3) - and can_water_jump(state, player) - )) - set_rule(world.get_entrance("D01Z05S13[N]", player), - lambda state: state.has("D01Z05S13[E]", player)) - add_rule(world.get_entrance("D01Z05S13[N]", player), - lambda state: ( - can_survive_poison(state, logic, player, 3) - and can_water_jump(state, player) - )) - - - # D01Z05S17 (Desecrated Cistern) - # Items - set_rule(world.get_location("DC: High ledge near elevator shaft", player), - lambda state: ( - state.has("D01Z05S17[E]", player) - or can_water_jump(state, player) - or can_cross_gap(state, logic, player, 5) - )) - # Doors - set_rule(world.get_entrance("D01Z05S17[E]", player), - lambda state: ( - state.has("Dash Ability", player) and ( - can_water_jump(state, player) - or can_cross_gap(state, logic, player, 5) - ) - )) - - - # D01Z05S20 (Desecrated Cistern) - # Event - set_rule(world.get_location("OpenedDCLadder", player), - lambda state: opened_dc_ladder(state, player)) - - - # D01Z05S21 (Desecrated Cistern) - # No items - # Doors - set_rule(world.get_entrance("D01Z05S21[Reward]", player), - lambda state: state.has("Shroud of Dreamt Sins", player)) - - - # D01Z05S23 (Desecrated Cistern) - # No items - # Doors - set_rule(world.get_entrance("D01Z05S23[W]", player), - lambda state: ( - chalice_rooms(state, player, 3) - and state.has("Chalice of Inverted Verses", player) - )) - - - # D01Z05S24 (Desecrated Cistern) - # Event - set_rule(world.get_location("OpenedDCGateW", player), - lambda state: opened_dc_gate_w(state, player)) - - - # D01Z05S25 (Desecrated Cistern) - # Items - set_rule(world.get_location("DC: Elevator shaft ledge", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - or ( - state.has("Purified Hand of the Nun", player) - and state.has_any({"D01Z05S25[SW]", "D01Z05S25[SE]", "D01Z05S25[NE]"}, player) - ) - )) - set_rule(world.get_location("DC: Elevator shaft Child of Moonlight", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - or ( - obscure_skips_allowed(logic) - and state.has_any({"D01Z05S25[SW]", "D01Z05S25[SE]", "D01Z05S25[NE]"}, player) - and ( - aubade(state, player) - or state.has("Cantina of the Blue Rose", player) - ) - ) - or ( - pillar(state, player) - and ( - state.has("D01Z05S25[E]", player) - or state.has("D01Z05S25[W]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - ) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D01Z05S25[NE]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - or state.has("D01Z05S25[SW]", player) - or state.has("D01Z05S25[SE]", player) - )) - set_rule(world.get_entrance("D01Z05S25[W]", player), - lambda state: ( - ( - state.has("Linen of Golden Thread", player) - and ( - can_walk_on_root(state, player) - or state.has("Purified Hand of the Nun", player) - or can_air_stall(state, logic, player) - ) - ) - or ( - state.has("D01Z05S25[E]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - ) - ) - )) - set_rule(world.get_entrance("D01Z05S25[E]", player), - lambda state: ( - can_break_tirana(state, logic, player) - and ( - state.has("Linen of Golden Thread", player) - or state.has("D01Z05S25[W]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - ) - ) - )) - set_rule(world.get_entrance("D01Z05S25[SW]", player), - lambda state: ( - state.has("D01Z05S25[SE]", player) - or state.has("D01Z05S25[NE]", player) - or state.has("Linen of Golden Thread", player) - )) - set_rule(world.get_entrance("D01Z05S25[SE]", player), - lambda state: ( - state.has("D01Z05S25[SW]", player) - or state.has("D01Z05S25[NE]", player) - or state.has("Linen of Golden Thread", player) - )) - set_rule(world.get_entrance("D01Z05S25[EchoesW]", player), - lambda state: state.has("D01Z05S25[EchoesE]", player)) - add_rule(world.get_entrance("D01Z05S25[EchoesW]", player), - lambda state: ( - state.has("D01Z05S25[EchoesE]", player) - and ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 8) - ) - or state.has("Linen of Golden Thread", player) - and ( - can_cross_gap(state, logic, player, 5) - or can_air_stall(state, logic, player) - and state.has("Blood Perpetuated in Sand", player) - ) - )) - set_rule(world.get_entrance("D01Z05S25[EchoesE]", player), - lambda state: state.has("D01Z05S25[EchoesW]", player)) - add_rule(world.get_entrance("D01Z05S25[EchoesE]", player), - lambda state: ( - state.has("D01Z05S25[EchoesW]", player) - and ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 8) - ) - or state.has("Linen of Golden Thread", player) - and ( - can_cross_gap(state, logic, player, 5) - or can_air_stall(state, logic, player) - and state.has("Blood Perpetuated in Sand", player) - ) - )) - - - # D01Z06S01 (Petrous) - # No items - # Doors - set_rule(world.get_entrance("D01Z06S01[Santos]", player), - lambda state: state.has("Petrified Bell", player)) - - - # D02Z01S01 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Below Prie Dieu", player), - lambda state: ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_location("WOTW: Gemino's gift", player), - lambda state: ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - ( - state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - ) - and can_dawn_jump(state, logic, player) - ) - )) - set_rule(world.get_location("WOTW: Gemino's reward", player), - lambda state: ( - state.has("Golden Thimble Filled with Burning Oil", player) - and ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - ( - state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - ) - and can_dawn_jump(state, logic, player) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z01S01[SW]", player), - lambda state: ( - state.has("OpenedWOTWCave", player) - and ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has("D02Z01S01[CherubsR]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - ) - )) - set_rule(world.get_entrance("D02Z01S01[W]", player), - lambda state: ( - state.has("D02Z01S01[CherubsL]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - ( - state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - ) - and can_dawn_jump(state, logic, player) - ) - )) - - - # D02Z01S02 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Upper east Child of Moonlight", player), - lambda state: ( - state.has("D02Z01S02[NE]", player) - or ( - state.has("D02Z01S02[NW]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - ) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 4) - or pillar(state, player) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z01S02[NW]", player), - lambda state: ( - state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - state.has("D02Z01S02[NE]", player) - and can_walk_on_root(state, player) - and can_cross_gap(state, logic, player, 5) - ) - )) - set_rule(world.get_entrance("D02Z01S02[NE]", player), - lambda state: ( - ( - state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - ) - or ( - state.has("D02Z01S02[NW]", player) - or state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - ) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 10) - ) - )) - set_rule(world.get_entrance("D02Z01S02[]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z01S03 (Where Olive Trees Wither) - # No items - # Doors - set_rule(world.get_entrance("D02Z01S03[W]", player), - lambda state: ( - state.has("D02Z01S03[SE]", player) - or state.has("D02Z01S03[Cherubs]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z01S03[SE]", player), - lambda state: ( - state.has("D02Z01S03[W]", player) - or state.has("D02Z01S03[Cherubs]", player) - or state.has("Wall Climb Ability", player) - )) - - - # D02Z01S04 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Gift for the tomb", player), - lambda state: ( - state.has("Golden Thimble Filled with Burning Oil", player) - and ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - ( - state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - ) - and can_dawn_jump(state, logic, player) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z01S04[-N]", player), - lambda state: ( - state.has("Golden Thimble Filled with Burning Oil", player) - and ( - state.has("D02Z01S01[W]", player) - or state.has("D02Z01S01[CherubsL]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or ( - ( - state.has("D02Z01S01[SW]", player) - or state.has("D02Z01S01[CherubsR]", player) - ) - and can_dawn_jump(state, logic, player) - ) - ) - )) - - - # D02Z01S06 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Underground ledge", player), - lambda state: ( - state.has("Wall Climb Ability", player) - and ( - state.has("Purified Hand of the Nun", player) - or state.has("Blood Perpetuated in Sand", player) - and ( - state.has("Dash Ability", player) - or state.has("D02Z01S06[Cherubs]", player) - ) - ) - )) - set_rule(world.get_location("WOTW: Underground Child of Moonlight", player), - lambda state: ( - ( - state.has("D02Z01S06[W]", player) - or state.has("Dash Ability", player) - or state.has("Purified Hand of the Nun", player) - and state.has("Wall Climb Ability", player) - ) - and ( - pillar(state, player) - or state.has("Cante Jondo of the Three Sisters", player) - or can_dive_laser(state, logic, player) - ) - or ( - state.has("Wall Climb Ability", player) - and ( - state.has("D02Z01S06[W]", player) - or state.has("Purified Hand of the Nun", player) - or state.has("Dash Ability", player) - ) - ) - and ( - state.has("Lorquiana", player) - or aubade(state, player) - or state.has("Cantina of the Blue Rose", player) - or can_air_stall(state, logic, player) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z01S06[W]", player), - lambda state: ( - state.has("Dash Ability", player) - or state.has_all({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D02Z01S06[E]", player), - lambda state: state.has("Wall Climb Ability", player)) - # Event - set_rule(world.get_location("OpenedWOTWCave", player), - lambda state: opened_wotw_cave(state, player)) - - - # D02Z01S08 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Underground tomb", player), - lambda state: state.has("Dried Flowers bathed in Tears", player)) - # No doors - - - # D02Z01S09 (Where Olive Trees Wither) - # Items - set_rule(world.get_location("WOTW: Upper east statue", player), - lambda state: ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 11) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - )) - # Doors - set_rule(world.get_entrance("D02Z01S09[-CherubsL]", player), - lambda state: state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D02Z01S09[-CherubsR]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 2) - or can_enemy_bounce(logic, enemy) - and can_air_stall(state, logic, player) - ) - )) - - - # D02Z02S01 (Graveyard of the Peaks) - # No items - # Doors - set_rule(world.get_entrance("D02Z02S01[W]", player), - lambda state: ( - state.has("D02Z02S01[NW]", player) - or state.has("D02Z02S01[Cherubs]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D02Z02S01[NW]", player), - lambda state: ( - state.has("D02Z02S01[Cherubs]", player) - or state.has("Wall Climb Ability", player) - and ( - state.has("D02Z02S01[W]", player) - or state.has("Dash Ability", player) - ) - )) - set_rule(world.get_entrance("D02Z02S01[E]", player), - lambda state: ( - state.has("D02Z02S01[NW]", player) - or state.has("D02Z02S01[Cherubs]", player) - or state.has_any({"Wall Climb Ability", "Dash Ability"}, player) - )) - - - # D02Z02S02 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Center shaft Child of Moonlight", player), - lambda state: ( - state.has("D02Z02S02[CherubsL]", player) - or state.has("D02Z02S02[CherubsR]", player) - or ( - ( - state.has("D02Z02S02[NW]", player) - or state.has("D02Z02S02[NE]", player) - or state.has("Wall Climb Ability", player) - ) - and ( - state.has_any({"Purified Hand of the Nun", "Cante Jondo of the Three Sisters"}, player) - or pillar(state, player) - or tirana(state, player) - or can_dive_laser(state, logic, player) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z02S02[NW]", player), - lambda state: ( - state.has("D02Z02S02[NE]", player) - or state.has("D02Z02S02[CherubsL]", player) - or state.has("D02Z02S02[CherubsR]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z02S02[NE]", player), - lambda state: ( - state.has("D02Z02S02[NW]", player) - or state.has("D02Z02S02[CherubsL]", player) - or state.has("D02Z02S02[CherubsR]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z02S02[-CherubsR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z02S03 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Lower east shaft", player), - lambda state: ( - state.has("D02Z02S03[NW]", player) - or state.has("D02Z02S03[NE]", player) - or state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 2) - )) - set_rule(world.get_location("GotP: Center east shaft", player), - lambda state: ( - state.has("D02Z02S03[NW]", player) - or state.has("D02Z02S03[NE]", player) - or state.has_any({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - )) - set_rule(world.get_location("GotP: Upper east shaft", player), - lambda state: ( - can_climb_on_root(state, player) - and ( - state.has("D02Z02S03[NE]", player) - or state.has("Purified Hand of the Nun", player) - or state.has("Blood Perpetuated in Sand", player) - ) - or state.has_all({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - )) - # Doors - set_rule(world.get_entrance("D02Z02S03[NW]", player), - lambda state: ( - state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - or state.has("D02Z02S03[NE]", player) - and can_walk_on_root(state, player) - )) - set_rule(world.get_entrance("D02Z02S03[NE]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - and ( - can_cross_gap(state, logic, player, 11) - or ( - state.has("Blood Perpetuated in Sand", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 7) - ) - ) - or ( - can_walk_on_root(state, player) - and ( - state.has("Purified Hand of the Nun", player) - or can_air_stall(state, logic, player) - ) - ) - ) - )) - set_rule(world.get_entrance("D02Z02S03[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z02S04 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Lower west shaft", player), - lambda state: state.has("D02Z02S04[E]", player)) - set_rule(world.get_location("GotP: Upper west shaft", player), - lambda state: - ( - state.has("D02Z02S04[NE]", player) - or ( - ( - state.has("D02Z02S04[W]", player) - or state.has("D02Z02S04[E]", player) - and state.has("Dash Ability", player) - ) - and ( - state.has("Purified Hand of the Nun", player) - or state.has("Wall Climb Ability", player) - ) - ) - or ( - state.has("D02Z02S04[SE]", player) - and ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_upslash(state, logic, enemy, player) - ) - ) - )) - set_rule(world.get_location("GotP: West shaft Child of Moonlight", player), - lambda state: - ( - ( - state.has("D02Z02S04[NE]", player) - or state.has("D02Z02S04[W]", player) - or state.has("D02Z02S04[E]", player) - and state.has("Dash Ability", player) - or state.has("D02Z02S04[SE]", player) - and ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_upslash(state, logic, enemy, player) - ) - ) - and ( - state.has("Blood Perpetuated in Sand", player) - and state.has("Dash Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - or state.has_any({"Lorquiana", "Cante Jondo of the Three Sisters", "Verdiales of the Forsaken Hamlet", "Cantina of the Blue Rose"}, player) - or aubade(state, player) - ) - or ( - state.has("D02Z02S04[NE]", player) - or state.has("D02Z02S04[W]", player) - or state.has("D02Z02S04[E]", player) - and state.has("Dash Ability", player) - or state.has("D02Z02S04[SE]", player) - ) - and pillar(state, player) - )) - # Doors - set_rule(world.get_entrance("D02Z02S04[W]", player), - lambda state: ( - state.has("D02Z02S04[NE]", player) - or state.has("D02Z02S04[E]", player) - and state.has("Dash Ability", player) - or state.has("D02Z02S04[SE]", player) - and ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_upslash(state, logic, enemy, player) - ) - )) - set_rule(world.get_entrance("D02Z02S04[SE]", player), - lambda state: ( - state.has("D02Z02S04[NE]", player) - or state.has("D02Z02S04[W]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D02Z02S04[NE]", player), - lambda state: ( - ( - ( - state.has("D02Z02S04[W]", player) - or state.has("D02Z02S04[E]", player) - and state.has("Dash Ability", player) - ) - and state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - ) - or ( - state.has("D02Z02S04[SE]", player) - and ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_upslash(state, logic, enemy, player) - ) - ) - )) - set_rule(world.get_entrance("D02Z02S04[-CherubsL]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D02Z02S04[NE]", player) - or state.has("D02Z02S04[W]", player) - or state.has("D02Z02S04[SE]", player) - or state.has("Dash Ability", player) - ) - )) - - - # D02Z02S05 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Center shaft ledge", player), - lambda state: ( - state.has("D02Z02S05[NW]", player) - or state.has("Wall Climb Ability", player) - )) - # Doors - set_rule(world.get_entrance("D02Z02S05[W]", player), - lambda state: ( - state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - )) - set_rule(world.get_entrance("D02Z02S05[E]", player), - lambda state: ( - state.has("D02Z02S05[NW]", player) - or state.has("D02Z02S05[E]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z02S05[NW]", player), - lambda state: ( - state.has("D02Z02S05[NW]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z02S05[-CherubsL]", player), - lambda state: state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D02Z02S05[-CherubsR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z02S08 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Shop cave hidden hole", player), - lambda state: ( - state.has("D02Z02S08[CherubsR]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_break_holes(state, player) - or can_cross_gap(state, logic, player, 8) - )) - set_rule(world.get_location("GotP: Shop cave Child of Moonlight", player), - lambda state: ( - state.has("D02Z02S08[CherubsR]", player) - or can_dive_laser(state, logic, player) - or state.has("Blood Perpetuated in Sand", player) - or pillar(state, player) - or can_cross_gap(state, logic, player, 8) - )) - # No doors - - - # D02Z02S11 (Graveyard of the Peaks) - # No items - # Doors - set_rule(world.get_entrance("D02Z02S11[E]", player), - lambda state: ( - state.has("D02Z02S11[NW]", player) - or state.has("D02Z02S11[NE]", player) - or can_cross_gap(state, logic, player, 6) - )) - set_rule(world.get_entrance("D02Z02S11[NW]", player), - lambda state: state.has("D02Z02S11[NE]", player)) - set_rule(world.get_entrance("D02Z02S11[NE]", player), - lambda state: state.has("D02Z02S11[NW]", player)) - set_rule(world.get_entrance("D02Z02S11[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z02S14 (Graveyard of the Peaks) - # Items - set_rule(world.get_location("GotP: Amanecida of the Bejeweled Arrow", player), - lambda state: can_beat_boss(state, "Graveyard", logic, player)) - # Doors - set_rule(world.get_entrance("D02Z02S14[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z03S02 (Convent of Our Lady of the Charred Visage) - # No items - # Doors - set_rule(world.get_entrance("D02Z03S02[W]", player), - lambda state: ( - state.has("D02Z03S02[NW]", player) - or state.has("D02Z03S02[NE]", player) - or state.has("D02Z03S02[N]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D02Z03S02[NW]", player), - lambda state: ( - state.has("D02Z03S02[NE]", player) - or state.has("D02Z03S02[N]", player) - )) - set_rule(world.get_entrance("D02Z03S02[NE]", player), - lambda state: ( - state.has("D02Z03S02[NW]", player) - or state.has("D02Z03S02[N]", player) - )) - set_rule(world.get_entrance("D02Z03S02[N]", player), - lambda state: ( - state.has("D02Z03S02[NW]", player) - or state.has("D02Z03S02[NE]", player) - )) - add_rule(world.get_entrance("D02Z03S02[N]", player), - lambda state: state.has("OpenedConventLadder", player)) - - - # D02Z03S03 (Convent of Our Lady of the Charred Visage) - # Items - set_rule(world.get_location("CoOLotCV: Snowy window ledge", player), - lambda state: ( - state.has("D02Z03S03[NW]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 3) - )) - # Doors - set_rule(world.get_entrance("D02Z03S03[NW]", player), - lambda state: ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 3) - )) - - - # D02Z03S05 (Convent of Our Lady of the Charred Visage) - # Items - set_rule(world.get_location("CoOLotCV: Center miasma room", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("D02Z03S05[S]", player) - or state.has("D02Z03S05[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - ) - )) - # Doors - set_rule(world.get_entrance("D02Z03S05[S]", player), - lambda state: ( - state.has("D02Z03S05[NE]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z03S05[NE]", player), - lambda state: ( - state.has("D02Z03S05[S]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - - - # D02Z03S10 (Convent of Our Lady of the Charred Visage) - # No items - # Doors - set_rule(world.get_entrance("D02Z03S10[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D02Z03S11 (Convent of Our Lady of the Charred Visage) - # Event - set_rule(world.get_location("OpenedConventLadder", player), - lambda state: opened_convent_ladder(state, player)) - - - # D02Z03S12 (Convent of Our Lady of the Charred Visage) - # Items - set_rule(world.get_location("CoOLotCV: Lower west statue", player), - lambda state: ( - can_survive_poison(state, logic, player, 1) - and state.has("Dash Ability", player) - )) - # No doors - - - # D02Z03S18 (Convent of Our Lady of the Charred Visage) - # No items - # Doors - set_rule(world.get_entrance("D02Z03S18[NW]", player), - lambda state: ( - state.has("D02Z03S18[NE]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D02Z03S18[NE]", player), - lambda state: ( - state.has("D02Z03S18[NW]", player) - or state.has("Wall Climb Ability", player) - )) - - - # D02Z03S20 (Convent of Our Lady of the Charred Visage) - # Items - set_rule(world.get_location("CoOLotCV: Our Lady of the Charred Visage", player), - lambda state: can_beat_boss(state, "Convent", logic, player)) - # Doors - set_rule(world.get_entrance("D02Z03S20[W]", player), - lambda state: can_beat_boss(state, "Convent", logic, player)) - set_rule(world.get_entrance("D02Z03S20[E]", player), - lambda state: can_beat_boss(state, "Convent", logic, player)) - - - # D02Z03S21 (Convent of Our Lady of the Charred Visage) - # Items - set_rule(world.get_location("CoOLotCV: Fountain of burning oil", player), - lambda state: state.has("Empty Golden Thimble", player)) - # No doors - - - # D03Z01S01 (Mountains of the Endless Dusk) - # No items - # Doors - set_rule(world.get_entrance("D03Z01S01[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z01S02 (Mountains of the Endless Dusk) - # No items - # Doors - set_rule(world.get_entrance("D03Z01S02[W]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 3) - )) - set_rule(world.get_entrance("D03Z01S02[E]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 7) - )) - - - # D03Z01S03 (Mountains of the Endless Dusk) - # Items - set_rule(world.get_location("MotED: Platform above chasm", player), - lambda state: ( - state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - and ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - ) - )) - set_rule(world.get_location("MotED: 1st meeting with Redento", player), - lambda state: ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - )) - set_rule(world.get_location("MotED: Child of Moonlight, above chasm", player), - lambda state: ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - )) - set_rule(world.get_location("MotED: Amanecida of the Golden Blades", player), - lambda state: ( - can_beat_boss(state, "Jondo", logic, player) - and ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - ) - )) - # Doors - set_rule(world.get_entrance("D03Z01S03[W]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - and ( - state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - ) - )) - set_rule(world.get_entrance("D03Z01S03[E]", player), - lambda state: state.has("Wall Climb Ability", player)) - set_rule(world.get_entrance("D03Z01S03[SW]", player), - lambda state: ( - state.has("D03Z01S03[W]", player) - or can_cross_gap(state, logic, player, 9) - )) - set_rule(world.get_entrance("D03Z01S03[-WestL]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - ) - )) - set_rule(world.get_entrance("D03Z01S03[-WestR]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 9) - ) - )) - set_rule(world.get_entrance("D03Z01S03[-EastL]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D03Z01S03[W]", player) - or state.has("D03Z01S03[SW]", player) - or can_cross_gap(state, logic, player, 5) - ) - )) - set_rule(world.get_entrance("D03Z01S03[-EastR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z01S04 (Mountains of the Endless Dusk) - # Items - set_rule(world.get_location("MotED: Blood platform alcove", player), - lambda state: ( - state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - or upwarp_skips_allowed(logic) - )) - # No doors - - - # D03Z01S06 (Mountains of the Endless Dusk) - # Items - set_rule(world.get_location("MotED: Perpetva", player), - lambda state: can_beat_boss(state, "Perpetua", logic, player)) - set_rule(world.get_location("MotED: Egg hatching", player), - lambda state: can_beat_boss(state, "Perpetua", logic, player) and \ - state.has("Egg of Deformity", player)) - # Doors - set_rule(world.get_entrance("D03Z01S06[W]", player), - lambda state: can_beat_boss(state, "Perpetua", logic, player)) - set_rule(world.get_entrance("D03Z01S06[E]", player), - lambda state: can_beat_boss(state, "Perpetua", logic, player)) - - - # D03Z02S01 (Jondo) - # Items - set_rule(world.get_location("Jondo: Upper east chest", player), - lambda state: ( - state.has("D03Z02S01[Cherubs]", player) - or can_climb_on_root(state, player) - or can_cross_gap(state, logic, player, 8) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - )) - # Doors - set_rule(world.get_entrance("D03Z02S01[W]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - )) - set_rule(world.get_entrance("D03Z02S01[N]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - )) - - - # D03Z02S02 (Jondo) - # No items - # Doors - set_rule(world.get_entrance("D03Z02S02[W]", player), - lambda state: ( - state.has("D03Z02S02[CherubsL]", player) - or state.has("Purified Hand of the Nun", player) - and ( - state.has("D03Z02S02[E]", player) - or state.has("D03Z02S02[CherubsR]", player) - or state.has("Wall Climb Ability", player) - or can_enemy_bounce(logic, enemy) - ) - )) - set_rule(world.get_entrance("D03Z02S02[E]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - )) - - # D03Z02S03 (Jondo) - # No items - # Doors - set_rule(world.get_entrance("D03Z02S03[W]", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[E]", player), - lambda state: ( - ( - can_air_stall(state, logic, player) - or state.has_any({"Purified Hand of the Nun", "Boots of Pleading"}, player) - ) - and ( - state.has("Dash Ability", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[N]", player), - lambda state: ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[SE2]", player) - )) - set_rule(world.get_entrance("D03Z02S03[SE2]", player), - lambda state: ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - )) - set_rule(world.get_entrance("D03Z02S03[SW]", player), - lambda state: ( - state.has("D03Z02S03[SE]", player) - or state.has("D03Z02S03[SSL]", player) - or state.has("D03Z02S03[SSR]", player) - or state.has("BrokeJondoBellW", player) - and state.has("BrokeJondoBellE", player) - and ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[SE]", player), - lambda state: ( - state.has("D03Z02S03[SW]", player) - or state.has("D03Z02S03[SSL]", player) - or state.has("D03Z02S03[SSR]", player) - or state.has("BrokeJondoBellW", player) - and state.has("BrokeJondoBellE", player) - and ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[SSL]", player), - lambda state: ( - state.has("D03Z02S03[SW]", player) - or state.has("D03Z02S03[SE]", player) - or state.has("D03Z02S03[SSR]", player) - or state.has("BrokeJondoBellW", player) - and state.has("BrokeJondoBellE", player) - and ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[SSC]", player), - lambda state: ( - state.has("D03Z02S03[SW]", player) - or state.has("D03Z02S03[SE]", player) - or state.has("D03Z02S03[SSL]", player) - or state.has("D03Z02S03[SSR]", player) - or state.has("BrokeJondoBellW", player) - and state.has("BrokeJondoBellE", player) - and ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - set_rule(world.get_entrance("D03Z02S03[SSR]", player), - lambda state: ( - state.has("D03Z02S03[SW]", player) - or state.has("D03Z02S03[SE]", player) - or state.has("D03Z02S03[SSL]", player) - or state.has("BrokeJondoBellW", player) - and state.has("BrokeJondoBellE", player) - and ( - state.has("D03Z02S03[W]", player) - and state.has("Dash Ability", player) - or state.has("D03Z02S03[E]", player) - or state.has("D03Z02S03[N]", player) - or state.has("D03Z02S03[SE2]", player) - ) - )) - - - # D03Z02S04 (Jondo) - # Items - set_rule(world.get_location("Jondo: Lower east under chargers", player), - lambda state: ( - state.has("D03Z02S04[NE]", player) - or state.has("D03Z02S04[S]", player) - or state.has("Wall Climb Ability", player) - )) - # Doors - set_rule(world.get_entrance("D03Z02S04[NW]", player), - lambda state: state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player)) - set_rule(world.get_entrance("D03Z02S04[NE]", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or ( - state.has("D03Z02S04[S]", player) - and state.has("Purified Hand of the Nun", player) - ) - )) - set_rule(world.get_entrance("D03Z02S04[S]", player), - lambda state: ( - state.has("D03Z02S04[NE]", player) - or state.has("Wall Climb Ability", player) - )) - - - # D03Z02S05 (Jondo) - # Items - set_rule(world.get_location("Jondo: Upper east Child of Moonlight", player), - lambda state: ( - state.has("D03Z02S05[E]", player) - or state.has("D03Z02S05[S]", player) - or can_cross_gap(state, logic, player, 5) - or ( - can_enemy_bounce(logic, enemy) - and can_cross_gap(state, logic, player, 3) - ) - )) - # Doors - set_rule(world.get_entrance("D03Z02S05[E]", player), - lambda state: ( - state.has("D03Z02S05[S]", player) - or can_cross_gap(state, logic, player, 5) - or ( - can_enemy_bounce(logic, enemy) - and can_cross_gap(state, logic, player, 3) - ) - )) - set_rule(world.get_entrance("D03Z02S05[S]", player), - lambda state: ( - state.has("D03Z02S05[E]", player) - or can_cross_gap(state, logic, player, 5) - or ( - can_enemy_bounce(logic, enemy) - and can_cross_gap(state, logic, player, 3) - ) - )) - # Event - set_rule(world.get_location("BrokeJondoBellE", player), - lambda state: broke_jondo_bell_e(state, logic, enemy, player)) - - - # D03Z02S08 (Jondo) - # Items - set_rule(world.get_location("Jondo: Lower west bell alcove", player), - lambda state: ( - state.has("D03Z02S08[N]", player) - or state.has("D03Z02S08[W]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - # Doors - set_rule(world.get_entrance("D03Z02S08[W]", player), - lambda state: ( - state.has("D03Z02S08[N]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D03Z02S08[N]", player), - lambda state: ( - state.has("D03Z02S08[W]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - - - # D03Z02S09 (Jondo) - # No items - # Doors - set_rule(world.get_entrance("D03Z02S09[W]", player), - lambda state: state.has("Dash Ability", player)) - set_rule(world.get_entrance("D03Z02S09[N]", player), - lambda state: ( - state.has("D03Z02S09[S]", player) - or state.has("D03Z02S09[Cherubs]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D03Z02S09[S]", player), - lambda state: ( - state.has("D03Z02S09[N]", player) - or state.has("D03Z02S09[Cherubs]", player) - or state.has("Dash Ability", player) - )) - # Event - set_rule(world.get_location("BrokeJondoBellW", player), - lambda state: broke_jondo_bell_w(state, player)) - - - # D03Z02S10 (Jondo) - # No items - # Doors - set_rule(world.get_entrance("D03Z02S10[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z02S11 (Jondo) - # Items - set_rule(world.get_location("Jondo: Spike tunnel statue", player), - lambda state: ( - state.has("D03Z02S11[W]", player) - and state.has("Purified Hand of the Nun", player) - or state.has("D03Z02S11[E]", player) - and state.has("Dash Ability", player) - and ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 2) - or precise_skips_allowed(logic) - and can_cross_gap(state, logic, player, 1) - ) - )) - set_rule(world.get_location("Jondo: Spike tunnel Child of Moonlight", player), - lambda state: ( - state.has("D03Z02S11[W]", player) - and ( - state.has("Purified Hand of the Nun", player) - or state.has("Dash Ability", player) - and ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 2) - and can_enemy_bounce(logic, enemy) - or can_cross_gap(state, logic, player, 3) - ) - ) - or state.has("D03Z02S11[E]", player) - and state.has("Dash Ability", player) - and ( - can_cross_gap(state, logic, player, 1) - or state.has("Wall Climb Ability", player) - or can_enemy_bounce(logic, enemy) - ) - )) - # Doors - set_rule(world.get_entrance("D03Z02S11[W]", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 2) - or precise_skips_allowed(logic) - and can_cross_gap(state, logic, player, 1) - ) - )) - set_rule(world.get_entrance("D03Z02S11[E]", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - or can_cross_gap(state, logic, player, 2) - and can_enemy_bounce(logic, enemy) - ) - )) - - # D03Z02S13 (Jondo) - # Items - set_rule(world.get_location("Jondo: Upper west tree root", player), - lambda state: ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - )) - # Doors - set_rule(world.get_entrance("D03Z02S13[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z03S01 (Grievance Ascends) - # No items - # Doors - set_rule(world.get_entrance("D03Z03S01[NL]", player), - lambda state: ( - state.has("D03Z03S01[NR]", player) - or state.has("D03Z03S01[NC]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D03Z03S01[NR]", player), - lambda state: ( - state.has("D03Z03S01[NL]", player) - or state.has("D03Z03S01[NC]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - - - # D03Z03S02 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: Lower west ledge", player), - lambda state: can_survive_poison(state, logic, player, 1)) - # Doors - set_rule(world.get_entrance("D03Z03S02[W]", player), - lambda state: ( - state.has("D03Z03S02[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D03Z03S02[NE]", player), - lambda state: state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player)) - - - # D03Z03S03 (Grievance Ascends) - # No items - # Doors - set_rule(world.get_entrance("D03Z03S03[W]", player), - lambda state: state.has("D03Z03S03[NE]", player)) - set_rule(world.get_entrance("D03Z03S03[NE]", player), - lambda state: state.has("D03Z03S03[W]", player)) - - - # D03Z03S04 (Grievance Ascends) - # No items - # Doors - set_rule(world.get_entrance("D03Z03S04[NW]", player), - lambda state: ( - state.has("D03Z03S04[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - and ( - state.has("D03Z03S04[E]", player) - or state.has("D03Z03S04[SW]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 10) - ) - )) - set_rule(world.get_entrance("D03Z03S04[NE]", player), - lambda state: ( - ( - state.has("Wall Climb Ability", player) - or state.has("Purified Hand of the Nun", player) - and can_enemy_bounce(logic, enemy) - ) - and ( - state.has("D03Z03S04[NW]", player) - or state.has("D03Z03S04[E]", player) - or state.has("D03Z03S04[SW]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 10) - ) - )) - set_rule(world.get_entrance("D03Z03S04[E]", player), - lambda state: ( - state.has("D03Z03S04[NW]", player) - or state.has("D03Z03S04[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - and ( - state.has("D03Z03S04[SW]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 10) - ) - )) - set_rule(world.get_entrance("D03Z03S04[SW]", player), - lambda state: ( - state.has("D03Z03S04[NW]", player) - or state.has("D03Z03S04[NE]", player) - or state.has("D03Z03S04[E]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 10) - )) - set_rule(world.get_entrance("D03Z03S04[SE]", player), - lambda state: state.has("Blood Perpetuated in Sand", player)) - set_rule(world.get_entrance("D03Z03S04[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z03S05 (Grievance Ascends) - # No items - # Doors - set_rule(world.get_entrance("D03Z03S05[NW]", player), - lambda state: state.has("D03Z03S05[NE]", player)) - set_rule(world.get_entrance("D03Z03S05[NE]", player), - lambda state: state.has("D03Z03S05[NW]", player)) - set_rule(world.get_entrance("D03Z03S05[SW]", player), - lambda state: state.has("D03Z03S05[SE]", player) or \ - state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D03Z03S05[SE]", player), - lambda state: state.has("D03Z03S05[SW]", player) or \ - state.has("Linen of Golden Thread", player)) - - - # D03Z03S06 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: Miasma room floor", player), - lambda state: can_survive_poison(state, logic, player, 1)) - set_rule(world.get_location("GA: Miasma room treasure", player), - lambda state: state.has("Wall Climb Ability", player)) - set_rule(world.get_location("GA: Miasma room Child of Moonlight", player), - lambda state: ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 11) - and state.has("Taranto to my Sister", player) - and obscure_skips_allowed(logic) - )) - # No doors - - - # D03Z03S07 (Grievance Ascends) - # No items - # Doors - set_rule(world.get_entrance("D03Z03S07[NW]", player), - lambda state: ( - state.has("D03Z03S07[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D03Z03S07[NE]", player), - lambda state: ( - state.has("D03Z03S07[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - - - # D03Z03S08 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: End of blood bridge", player), - lambda state: ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 11) - )) - set_rule(world.get_location("GA: Blood bridge Child of Moonlight", player), - lambda state: ( - ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 11) - ) - and ( - state.has_any({"Purified Hand of the Nun", "Cante Jondo of the Three Sisters", "Verdiales of the Forsaken Hamlet"}, player) - or pillar(state, player) - or tirana(state, player) - or aubade(state, player) - and can_air_stall(state, logic, player) - ) - )) - # Doors - set_rule(world.get_entrance("D03Z03S08[-CherubsL]", player), - lambda state: state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D03Z03S08[-CherubsR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D03Z03S09 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: Lower east Child of Moonlight", player), - lambda state: ( - can_climb_on_root(state, player) - or state.has_any({"Purified Hand of the Nun", "Lorquiana", "Zarabanda of the Safe Haven", "Cante Jondo of the Three Sisters"}, player) - or pillar(state, player) - or aubade(state, player) - or tirana(state, player) - )) - # No doors - - - # D03Z03S10 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: Altasgracias' gift", player), - lambda state: state.has_group("egg", player, 3)) - set_rule(world.get_location("GA: Empty giant egg", player), - lambda state: ( - state.has_group("egg", player, 3) - and state.has("Hatched Egg of Deformity", player) - and ( - state.has("D01Z02S01[W]", player) - or state.has("D01Z02S01[E]", player) - ) - )) - # No doors - - - # D03Z03S15 (Grievance Ascends) - # Items - set_rule(world.get_location("GA: Tres Angustias", player), - lambda state: can_beat_boss(state, "Grievance", logic, player)) - # Doors - set_rule(world.get_entrance("D03Z03S15[W]", player), - lambda state: can_beat_boss(state, "Grievance", logic, player)) - set_rule(world.get_entrance("D03Z03S15[E]", player), - lambda state: can_beat_boss(state, "Grievance", logic, player)) - - - # D04Z01S01 (Patio of the Silent Steps) - # Items - set_rule(world.get_location("PotSS: First area ledge", player), - lambda state: ( - state.has("D04Z01S01[NE]", player) - or state.has("D04Z01S01[N]", player) - or can_cross_gap(state, logic, player, 3) - )) - # Doors - set_rule(world.get_entrance("D04Z01S01[NE]", player), - lambda state: ( - state.has("D04Z01S01[N]", player) - or can_cross_gap(state, logic, player, 3) - )) - set_rule(world.get_entrance("D04Z01S01[N]", player), - lambda state: ( - state.has("D04Z01S01[NE]", player) - or can_cross_gap(state, logic, player, 3) - )) - - - # D04Z01S02 (Patio of the Silent Steps) - # Items - set_rule(world.get_location("PotSS: Second area ledge", player), - lambda state: ( - can_climb_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - )) - # No doors - - - # D04Z01S03 (Patio of the Silent Steps) - # Items - set_rule(world.get_location("PotSS: Third area upper ledge", player), - lambda state: ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - )) - # No doors - - - # D04Z01S04 (Patio of the Silent Steps) - # Items - set_rule(world.get_location("PotSS: 4th meeting with Redento", player), - lambda state: redento(state, blasphemousworld, player, 4)) - set_rule(world.get_location("PotSS: Amanecida of the Chiselled Steel", player), - lambda state: can_beat_boss(state, "Patio", logic, player)) - # No doors - - - # D04Z01S05 (Patio of the Silent Steps) - # No items - # Doors - set_rule(world.get_entrance("D04Z01S05[N]", player), - lambda state: ( - ( - state.has("Blood Perpetuated in Sand", player) - and can_climb_on_root(state, player) - ) - or state.has("Purified Hand of the Nun", player) - and ( - state.has("Blood Perpetuated in Sand", player) - or can_climb_on_root(state, player) - ) - )) - set_rule(world.get_entrance("D04Z01S05[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D04Z01S06 (Patio of the Silent Steps) - # No items - # Doors - set_rule(world.get_entrance("D04Z01S06[E]", player), - lambda state: state.has("Purified Hand of the Nun", player)) - set_rule(world.get_entrance("D04Z01S06[Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D04Z02S01 (Mother of Mothers) - # Items - if world.purified_hand[player]: - set_rule(world.get_location("MoM: Western room ledge", player), - lambda state: ( - state.has("D04Z02S01[N]", player) - or state.has("D04Z02S01[NE]", player) - and state.has("Dash Ability", player) - and state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_location("MoM: Lower west Child of Moonlight", player), - lambda state: ( - state.has("D04Z02S01[N]", player) - or pillar(state, player) - or state.has("D04Z02S01[NE]", player) - and state.has("Dash Ability", player) - and ( - state.has("Wall Climb Ability", player) - or can_cross_gap(state, logic, player, 1) - ) - )) - # Doors - set_rule(world.get_entrance("D04Z02S01[N]", player), - lambda state: ( - state.has("D04Z02S04[NE]", player) - and state.has("Dash Ability", player) - and state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D04Z02S01[NE]", player), - lambda state: ( - state.has("D04Z02S01[N]", player) - or state.has("Dash Ability", player) - and can_cross_gap(state, logic, player, 1) - )) - - - # D04Z02S02 (Mother of Mothers) - # No items - # Doors - set_rule(world.get_entrance("D04Z02S02[NE]", player), - lambda state: ( - ( - state.has("Purified Hand of the Nun", player) - and upwarp_skips_allowed(logic) - ) - or ( - state.has("Purified Hand of the Nun", player) - and can_enemy_upslash(state, logic, enemy, player) - ) - or ( - can_enemy_upslash(state, logic, enemy, player) - and upwarp_skips_allowed(logic) - and ( - state.has("Wall Climb Ability", player) - or state.has("D04Z02S02[N]", player) - ) - ) - )) - set_rule(world.get_entrance("D04Z02S02[N]", player), - lambda state: ( - state.has("D04Z02S02[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - - - # D04Z02S04 (Mother of Mothers) - # No items - # Doors - set_rule(world.get_entrance("D04Z02S04[NW]", player), - lambda state: ( - state.has("D04Z02S04[NE]", player) - or state.has("D04Z02S04[N]", player) - or state.has("D04Z02S04[Cherubs]", player) - or state.has_all({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D04Z02S04[NE]", player), - lambda state: ( - state.has("D04Z02S04[NW]", player) - or state.has("D04Z02S04[N]", player) - or state.has("D04Z02S04[Cherubs]", player) - or state.has_all({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D04Z02S04[N]", player), - lambda state: ( - ( - state.has("D04Z02S04[NW]", player) - or state.has("D04Z02S04[NE]", player) - or state.has("D04Z02S04[Cherubs]", player) - or state.has_all({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - ) - and state.has("OpenedMOMLadder", player) - )) - - - # D04Z02S06 (Mother of Mothers) - # Items - set_rule(world.get_location("MoM: Outside Cleofas' room", player), - lambda state: ( - state.has("D04Z02S06[NW]", player) - or state.has("D04Z02S06[N]", player) - or state.has("D04Z02S06[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - # Doors - set_rule(world.get_entrance("D04Z02S06[NW]", player), - lambda state: ( - state.has("D04Z02S06[N]", player) - or state.has("D04Z02S06[NE]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D04Z02S06[N]", player), - lambda state: ( - ( - state.has("D04Z02S06[NW]", player) - or state.has("D04Z02S06[NE]", player) - or state.has("Wall Climb Ability", player) - ) - and state.has("OpenedARLadder", player) - )) - set_rule(world.get_entrance("D04Z02S06[NE]", player), - lambda state: ( - state.has("D04Z02S06[NW]", player) - or state.has("D04Z02S06[N]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D04Z02S06[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - # Event - set_rule(world.get_location("OpenedMOMLadder", player), - lambda state: opened_mom_ladder(state, player)) - - - # D04Z02S07 (Mother of Mothers) - # Items - set_rule(world.get_location("MoM: East chandelier platform", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 3) - ) - )) - # No doors - - - # D04Z02S09 (Mother of Mothers) - # No items - # Doors - set_rule(world.get_entrance("D04Z02S09[NE]", player), - lambda state: state.has("Blood Perpetuated in Sand", player)) - - - # D04Z02S16 (Mother of Mothers) - # Items - set_rule(world.get_location("MoM: Giant chandelier statue", player), - lambda state: ( - state.has("Wall Climb Ability", player) - and state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - )) - # Doors - set_rule(world.get_entrance("D04Z02S16[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D04Z02S20 (Mother of Mothers) - # No items - # Doors - set_rule(world.get_entrance("D04Z02S20[Redento]", player), - lambda state: redento(state, blasphemousworld, player, 5)) - - - # D04Z02S21 (Mother of Mothers) - # No items - # Doors - set_rule(world.get_entrance("D04Z02S21[W]", player), - lambda state: ( - state.has("D04Z02S21[NE]", player) - or state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player) - )) - set_rule(world.get_entrance("D04Z02S21[NE]", player), - lambda state: state.has_any({"Purified Hand of the Nun", "Wall Climb Ability"}, player)) - - - # D04Z02S22 (Mother of Mothers) - # Items - set_rule(world.get_location("MoM: Melquiades, The Exhumed Archbishop", player), - lambda state: can_beat_boss(state, "Mothers", logic, player)) - # Doors - set_rule(world.get_entrance("D04Z02S22[W]", player), - lambda state: can_beat_boss(state, "Mothers", logic, player)) - set_rule(world.get_entrance("D04Z02S22[E]", player), - lambda state: can_beat_boss(state, "Mothers", logic, player)) - - - # D04BZ02S01 (Mother of Mothers - Redento) - # Items - set_rule(world.get_location("MoM: Final meeting with Redento", player), - lambda state: redento(state, blasphemousworld, player, 5)) - # No doors - - - # D04Z03S02 (Knot of the Three Words) - # Items - set_rule(world.get_location("KotTW: Gift from the Traitor", player), - lambda state: state.has_all({"Severed Right Eye of the Traitor", "Broken Left Eye of the Traitor"}, player)) - # No doors - - - # D04Z04S01 (All the Tears of the Sea) - # Items - set_rule(world.get_location("AtTotS: Miriam's gift", player), - lambda state: ( - miriam(state, player) - and state.has("Dash Ability", player) - and state.has("Wall Climb Ability", player) - )) - # No doors - - - # D05Z01S03 (Library of the Negated Words) - # No items - # Doors - set_rule(world.get_entrance("D05Z01S03[Frontal]", player), - lambda state: ( - state.has("Key Grown from Twisted Wood", player) - and state.has("D05Z01S23[E]", player) - and ( - state.has("D05Z01S11[NW]", player) - or state.has("D05Z01S11[NE]", player) - ) - )) - - - # D05Z01S05 (Library of the Negated Words) - # Items - set_rule(world.get_location("LotNW: Hidden floor", player), - lambda state: can_break_holes(state, player)) - set_rule(world.get_location("LotNW: Root ceiling platform", player), - lambda state: ( - ( - can_climb_on_root(state, player) - or state.has("Purified Hand of the Nun", player) - ) - and ( - state.has("D05Z01S05[NE]", player) - or state.has("Blood Perpetuated in Sand", player) - ) - )) - # Doors - set_rule(world.get_entrance("D05Z01S05[NE]", player), - lambda state: state.has("Blood Perpetuated in Sand", player)) - - - # D05Z01S06 (Library of the Negated Words) - # Items - set_rule(world.get_location("LotNW: Miasma hallway chest", player), - lambda state: ( - state.has("D05Z01S06[W]", player) - or can_survive_poison(state, logic, player, 3) - )) - # Doors - set_rule(world.get_entrance("D05Z01S06[W]", player), - lambda state: can_survive_poison(state, logic, player, 3)) - set_rule(world.get_entrance("D05Z01S06[E]", player), - lambda state: can_survive_poison(state, logic, player, 3)) - - - # D05Z01S07 (Library of the Negated Words) - # No items - # Doors - set_rule(world.get_entrance("D05Z01S07[NW]", player), - lambda state: ( - state.has("Blood Perpetuated in Sand", player) - and ( - can_climb_on_root(state, player) - or state.has("Purified Hand of the Nun", player) - ) - or ( - can_climb_on_root(state, player) - and can_cross_gap(state, logic, player, 3) - ) - or can_cross_gap(state, logic, player, 7) - )) - - - # D05Z01S10 (Library of the Negated Words) - # Items - set_rule(world.get_location("LotNW: Platform puzzle chest", player), - lambda state: ( - state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player) - or can_enemy_bounce(logic, enemy) - and can_cross_gap(state, logic, player, 2) - )) - # No doors - - - # D05Z01S11 (Library of the Negated Words) - # Items - set_rule(world.get_location("LotNW: Silence for Diosdado", player), - lambda state: ( - ( - state.has("D05Z01S11[NW]", player) - or state.has("D05Z01S11[NE]", player) - ) - and state.has("D05Z01S23[E]", player) - )) - set_rule(world.get_location("LotNW: Lowest west upper ledge", player), - lambda state: ( - state.has("D05Z01S11[NW]", player) - or state.has("D05Z01S11[NE]", player) - )) - # Doors - set_rule(world.get_entrance("D05Z01S11[SW]", player), - lambda state: can_break_tirana(state, logic, player)) - set_rule(world.get_entrance("D05Z01S11[NW]", player), - lambda state: state.has("D05Z01S11[NE]", player)) - set_rule(world.get_entrance("D05Z01S11[NE]", player), - lambda state: state.has("D05Z01S11[NW]", player)) - - - # D05Z01S21 (Library of the Negated Words) - # Items - set_rule(world.get_location("LotNW: Elevator Child of Moonlight", player), - lambda state: ( - state.has("Blood Perpetuated in Sand", player) - and ( - can_walk_on_root(state, player) - or state.has("Purified Hand of the Nun", player) - or can_cross_gap(state, logic, player, 5) - and pillar(state, player) - ) - or obscure_skips_allowed(logic) - and ( - state.has("Zarabanda of the Safe Haven", player) - or aubade(state, player) - or state.has("Cantina of the Blue Rose", player) - ) - )) - # Doors - set_rule(world.get_entrance("D05Z01S21[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D05Z02S06 (The Sleeping Canvases) - # No items - # Doors - set_rule(world.get_entrance("D05Z02S06[SE]", player), - lambda state: state.has("OpenedTSCGate", player)) - - - # D05Z02S09 (The Sleeping Canvases) - # No items - # Doors - set_rule(world.get_entrance("D05Z02S09[E]", player), - lambda state: ( - state.has("Bead of Red Wax", player, 3) - and state.has("Bead of Blue Wax", player, 3) - )) - - - # D05Z02S10 (The Sleeping Canvases) - # Items - set_rule(world.get_location("TSC: Jocinero's 1st reward", player), - lambda state: state.has("Child of Moonlight", player, 20)) - set_rule(world.get_location("TSC: Jocinero's final reward", player), - lambda state: state.has("Child of Moonlight", player, 38)) - # Doors - set_rule(world.get_entrance("D05Z02S10[W]", player), - lambda state: state.has("Dash Ability", player)) - - # D05Z02S11 (The Sleeping Canvases) - # Event - set_rule(world.get_location("OpenedTSCGate", player), - lambda state: opened_tsc_gate(state, player)) - - - # D05Z02S13 (The Sleeping Canvases) - # No items - # Doors - set_rule(world.get_entrance("D05Z02S13[E]", player), - lambda state: state.has("Dash Ability", player)) - - - # D05Z02S14 (The Sleeping Canvases) - # Items - set_rule(world.get_location("TSC: Exposito, Scion of Abjuration", player), - lambda state: can_beat_boss(state, "Canvases", logic, player)) - # Doors - set_rule(world.get_entrance("D05Z02S14[W]", player), - lambda state: can_beat_boss(state, "Canvases", logic, player)) - set_rule(world.get_entrance("D05Z02S14[E]", player), - lambda state: can_beat_boss(state, "Canvases", logic, player)) - - - # D05Z02S15 (The Sleeping Canvases) - # Items - set_rule(world.get_location("TSC: Swinging blade tunnel", player), - lambda state: state.has("Dash Ability", player)) - # No doors - - - # D06Z01S01 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S01[SW]", player), - lambda state: ( - ( - state.has("D06Z01S01[SE]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - ) - )) - set_rule(world.get_entrance("D06Z01S01[SE]", player), - lambda state: ( - ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - ) - )) - set_rule(world.get_entrance("D06Z01S01[W]", player), - lambda state: ( - ( - state.has("D06Z01S01[E]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has_group("masks", player, 1) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 1) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[E]", player), - lambda state: ( - ( - state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has_group("masks", player, 1) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 1) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[NW]", player), - lambda state: ( - state.has("D06Z01S01[NE]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 8) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[NE]", player), - lambda state: ( - state.has("D06Z01S01[NW]", player) - or ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 8) - ) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 3) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[NNW]", player), - lambda state: ( - ( - state.has("D06Z01S01[NNE]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has_group("masks", player, 2) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[NNE]", player), - lambda state: ( - ( - state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[N]", player) - ) - or state.has_group("masks", player, 2) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[N]", player), - lambda state: ( - state.has_group("masks", player, 3) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player) - or state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S01[-Cherubs]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S01[SW]", player) - or state.has("D06Z01S01[SE]", player) - or state.has("D06Z01S01[W]", player) - or state.has("D06Z01S01[E]", player) - or state.has("D06Z01S01[NW]", player) - or state.has("D06Z01S01[NE]", player) - or state.has("D06Z01S01[NNW]", player) - or state.has("D06Z01S01[NNE]", player)) - )) - - - # D06Z01S03 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: First soldier fight", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - # Doors - set_rule(world.get_entrance("D06Z01S03[W]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - set_rule(world.get_entrance("D06Z01S03[E]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - - - # D06Z01S04 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S04[SW]", player), - lambda state: ( - state.has("D06Z01S04[W]", player) - or state.has("D06Z01S04[Health]", player) - )) - set_rule(world.get_entrance("D06Z01S04[W]", player), - lambda state: ( - state.has("D06Z01S04[SW]", player) - or state.has("D06Z01S04[Health]", player) - )) - set_rule(world.get_entrance("D06Z01S04[Health]", player), - lambda state: ( - state.has("D06Z01S04[SW]", player) - or state.has("D06Z01S04[W]", player) - )) - add_rule(world.get_entrance("D06Z01S04[Health]", player), - lambda state: ( - ( - state.has("Wall Climb Ability", player) - and can_survive_poison(state, logic, player, 2) - and ( - state.has("Purified Hand of the Nun", player) - or ( - state.has("Blood Perpetuated in Sand", player) - and can_climb_on_root(state, player) - ) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S04[NW]", player), - lambda state: ( - state.has("D06Z01S04[NE]", player) - or state.has("D06Z01S04[Cherubs]", player) - )) - add_rule(world.get_entrance("D06Z01S04[NW]", player), - lambda state: ( - state.has("D06Z01S04[Cherubs]", player) - or ( - state.has("D06Z01S04[SW]", player) - or state.has("D06Z01S04[W]", player) - or state.has("D06Z01S04[Health]", player) - ) - and state.has("Wall Climb Ability", player) - and can_survive_poison(state, logic, player, 2) - and ( - state.has_any({"Dash Ability", "Purified Hand of the Nun"}, player) - and ( - can_dawn_jump(state, logic, player) - or can_climb_on_root(state, player) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S04[NE]", player), - lambda state: ( - state.has("D06Z01S04[NW]", player) - or state.has("D06Z01S04[Cherubs]", player) - )) - add_rule(world.get_entrance("D06Z01S04[NE]", player), - lambda state: ( - ( - state.has("D06Z01S04[SW]", player) - or state.has("D06Z01S04[W]", player) - or state.has("D06Z01S04[Health]", player) - ) - and state.has("Wall Climb Ability", player) - and can_survive_poison(state, logic, player, 2) - and ( - state.has_any({"Dash Ability", "Purified Hand of the Nun"}, player) - and ( - can_dawn_jump(state, logic, player) - or can_climb_on_root(state, player) - ) - ) - )) - - - # D06Z01S06 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: Second soldier fight", player), - lambda state: ( - can_beat_boss(state, "Legionary", logic, player) - and ( - state.has("D06Z01S06[WW]", player) - or state.has("D06Z01S06[E]", player) - ) - )) - # Doors - set_rule(world.get_entrance("D06Z01S06[WW]", player), - lambda state: state.has("D06Z01S06[E]", player)) - add_rule(world.get_entrance("D06Z01S06[WW]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - set_rule(world.get_entrance("D06Z01S06[E]", player), - lambda state: state.has("D06Z01S06[WW]", player)) - add_rule(world.get_entrance("D06Z01S06[E]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - set_rule(world.get_entrance("D06Z01S06[W]", player), - lambda state: state.has("D06Z01S06[EE]", player)) - set_rule(world.get_entrance("D06Z01S06[EE]", player), - lambda state: state.has("D06Z01S06[W]", player)) - - - # D06Z01S08 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S08[E]", player), - lambda state: state.has("D06Z01S08[N]", player) or \ - state.has("Wall Climb Ability", player)) - - - # D06Z01S09 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S09[-CherubsL]", player), - lambda state: state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D06Z01S09[-CherubsR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D06Z01S10 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S10[-CherubsL]", player), - lambda state: state.has("Linen of Golden Thread", player)) - set_rule(world.get_entrance("D06Z01S10[-CherubsR]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D06Z01S12 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: Upper west shaft ledge", player), - lambda state: ( - state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE]", player) - or state.has("D06Z01S12[NE2]", player) - or state.has("D06Z01S12[W]", player) - or state.has("D06Z01S12[E]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_location("AR: Upper west shaft chest", player), - lambda state: ( - state.has("D06Z01S12[NE2]", player) - or ( - state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE]", player) - ) - and state.has("Purified Hand of the Nun", player) - )) - set_rule(world.get_location("AR: Upper west shaft Child of Moonlight", player), - lambda state: ( - state.has("D06Z01S12[W]", player) - or state.has("D06Z01S12[E]", player) - or state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE]", player) - or state.has("D06Z01S12[NE2]", player) - or state.has("Wall Climb Ability", player) - and state.has_any({"Purified Hand of the Nun", "Taranto to my Sister"}, player) - )) - # Doors - set_rule(world.get_entrance("D06Z01S12[W]", player), - lambda state: ( - state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE]", player) - or state.has("D06Z01S12[NE2]", player) - or state.has("D06Z01S12[E]", player) - or state.has_all({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - )) - set_rule(world.get_entrance("D06Z01S12[E]", player), - lambda state: ( - state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE]", player) - or state.has("D06Z01S12[NE2]", player) - or state.has("D06Z01S12[W]", player) - or state.has_all({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - )) - set_rule(world.get_entrance("D06Z01S12[NW]", player), - lambda state: ( - state.has("D06Z01S12[NE]", player) - or state.has("D06Z01S12[NE2]", player) - )) - add_rule(world.get_entrance("D06Z01S12[NW]", player), - lambda state: ( - state.has("D06Z01S12[NE]", player) - or state.has_any({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - )) - set_rule(world.get_entrance("D06Z01S12[NE]", player), - lambda state: ( - state.has("D06Z01S12[NW]", player) - or state.has("D06Z01S12[NE2]", player) - )) - add_rule(world.get_entrance("D06Z01S12[NE]", player), - lambda state: ( - state.has("D06Z01S12[NW]", player) - or state.has_any({"Wall Climb Ability", "Purified Hand of the Nun"}, player) - )) - - - # D06Z01S15 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: Upper east shaft ledge", player), - lambda state: ( - state.has("D06Z01S15[SW]", player) - and state.has("Wall Climb Ability", player) - and ( - can_cross_gap(state, logic, player, 10) - or can_climb_on_root(state, player) - and ( - state.has("Blood Perpetuated in Sand", player) - or state.has("Purified Hand of the Nun", player) - and can_air_stall(state, logic, player) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D06Z01S15[NW]", player), - lambda state: state.has("D06Z01S15[NE]", player)) - add_rule(world.get_entrance("D06Z01S15[NW]", player), - lambda state: ( - state.has("D06Z01S15[SW]", player) - or state.has("Wall Climb Ability", player) - )) - set_rule(world.get_entrance("D06Z01S15[NE]", player), - lambda state: state.has("D06Z01S15[NW]", player)) - add_rule(world.get_entrance("D06Z01S15[NE]", player), - lambda state: ( - state.has("D06Z01S15[SW]", player) - or state.has("Wall Climb Ability", player) - )) - - - # D06Z01S16 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S16[W]", player), - lambda state: ( - ( - state.has("D06Z01S16[CherubsL]", player) - and ( - state.has("Purified Hand of the Nun", player) - or state.has("Wall Climb Ability", player) - and ( - can_walk_on_root(state, player) - or can_air_stall(state, logic, player) - ) - ) - ) - or ( - state.has("D06Z01S16[CherubsR]", player) - and ( - state.has("Purified Hand of the Nun", player) - or can_air_stall(state, logic, player) - and ( - can_walk_on_root(state, player) - or state.has("The Young Mason's Wheel", player) - ) - and ( - state.has("Wall Climb Ability", player) - or can_dawn_jump(state, logic, player) - ) - ) - ) - or ( - state.has("D06Z01S16[E]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 7) - ) - and ( - state.has("Wall Climb Ability", player) or - can_cross_gap(state, logic, player, 5) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S16[E]", player), - lambda state: ( - ( - ( - state.has("D06Z01S16[W]", player) - or state.has("D06Z01S16[CherubsL]", player) - ) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 5) - ) - ) - or ( - state.has("D06Z01S16[CherubsR]", player) - and ( - state.has("Purified Hand of the Nun", player) - or can_air_stall(state, logic, player) - and ( - can_walk_on_root(state, player) - and state.has("The Young Mason's Wheel", player) - ) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S16[-CherubsL]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S16[W]", player) - or ( - state.has("D06Z01S16[CherubsR]", player) - and ( - state.has("Purified Hand of the Nun", player) - or can_air_stall(state, logic, player) - and ( - can_walk_on_root(state, player) - or state.has("The Young Mason's Wheel", player) - ) - ) - ) - or ( - state.has("D06Z01S16[E]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 7) - ) - ) - ) - )) - set_rule(world.get_entrance("D06Z01S16[-CherubsR]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) - and ( - state.has("D06Z01S16[E]", player) - or ( - state.has("D06Z01S16[CherubsL]", player) - and ( - can_air_stall(state, logic, player) - or can_walk_on_root(state, player) - or state.has("Purified Hand of the Nun", player) - ) - ) - or ( - state.has("D06Z01S16[W]", player) - and ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 1) - ) - ) - ) - )) - - - # D06Z01S17 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S17[W]", player), - lambda state: ( - ( - state.has("D06Z01S17[E]", player) - or state.has("D06Z01S17[CherubsR]", player) - ) - and state.has("Blood Perpetuated in Sand", player) - or state.has("D06Z01S17[CherubsL]", player) - and state.has("Purified Hand of the Nun", player) - )) - set_rule(world.get_entrance("D06Z01S17[E]", player), - lambda state: ( - state.has("D06Z01S17[CherubsR]", player) - or state.has("Blood Perpetuated in Sand", player) + def can_beat_prison_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "quirce") and ( - state.has("D06Z01S17[W]", player) - or state.has("D06Z01S17[CherubsL]", player) - and state.has("Purified Hand of the Nun", player) + state.can_reach_region("D09Z01S05[SE]", self.player) + or state.can_reach_region("D09Z01S08[S]", self.player) ) - )) - set_rule(world.get_entrance("D06Z01S17[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - - # D06Z01S18 (Archcathedral Rooftops) - # No items - # Doors - set_rule(world.get_entrance("D06Z01S18[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - - # D06Z01S21 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: Third soldier fight", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - # Doors - set_rule(world.get_entrance("D06Z01S21[W]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) - set_rule(world.get_entrance("D06Z01S21[E]", player), - lambda state: can_beat_boss(state, "Legionary", logic, player)) + ) - - # D06Z01S23 (Archcathedral Rooftops) - # Event - set_rule(world.get_location("OpenedARLadder", player), - lambda state: opened_ar_ladder(state, player)) - - - # D06Z01S25 (Archcathedral Rooftops) - # Items - set_rule(world.get_location("AR: Crisanta of the Wrapped Agony", player), - lambda state: can_beat_boss(state, "Rooftops", logic, player)) - # Doors - set_rule(world.get_entrance("D06Z01S25[W]", player), - lambda state: can_beat_boss(state, "Rooftops", logic, player)) - set_rule(world.get_entrance("D06Z01S25[E]", player), - lambda state: can_beat_boss(state, "Rooftops", logic, player)) - - - # D08Z01S01 (Bridge of the Three Cavalries) - # Items - set_rule(world.get_location("BotTC: Esdras, of the Anointed Legion", player), - lambda state: ( - state.has_group("wounds", player, 3) - and can_beat_boss(state, "Bridge", logic, player) - )) - set_rule(world.get_location("BotTC: Esdras' gift", player), - lambda state: ( - state.has_group("wounds", player, 3) - and can_beat_boss(state, "Bridge", logic, player) - )) - # Doors - set_rule(world.get_entrance("D08Z01S01[W]", player), - lambda state: can_beat_boss(state, "Bridge", logic, player)) - set_rule(world.get_entrance("D08Z01S01[E]", player), - lambda state: ( - state.has_group("wounds", player, 3) + def can_beat_rooftops_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "crisanta") and ( - state.has("D08Z01S01[Cherubs]", player) - or can_beat_boss(state, "Bridge", logic, player) + state.can_reach_region("D06Z01S19[E]", self.player) + or state.can_reach_region("D07Z01S01[W]", self.player) ) - )) - - - # D08Z01S02 (Bridge of the Three Cavalries) - # No items - # Items - set_rule(world.get_entrance("D08Z01S02[-Cherubs]", player), - lambda state: state.has("Linen of Golden Thread", player)) - # Event - set_rule(world.get_location("BrokeBOTTCStatue", player), - lambda state: broke_bottc_statue(state, player)) - - - # D08Z02S03 (Ferrous Tree) - # No items - # Doors - set_rule(world.get_entrance("D08Z02S03[W]", player), - lambda state: state.has("OpenedBOTTCStatue", player)) - - - # D08Z03S01 (Hall of the Dawning) - # No items - # Doors - set_rule(world.get_entrance("D08Z03S01[E]", player), - lambda state: state.has("Verses Spun from Gold", player, 4)) - - - # D08Z03S02 (Hall of the Dawning) - # No items - # Doors - set_rule(world.get_entrance("D08Z03S02[NW]", player), - lambda state: state.has("Wall Climb Ability", player)) - - - # D08Z03S03 (Hall of the Dawning) - # Items - set_rule(world.get_location("HotD: Laudes, the First of the Amanecidas", player), - lambda state: can_beat_boss(state, "Hall", logic, player)) - # Doors - set_rule(world.get_entrance("D08Z03S03[W]", player), - lambda state: can_beat_boss(state, "Hall", logic, player)) - set_rule(world.get_entrance("D08Z03S03[E]", player), - lambda state: can_beat_boss(state, "Hall", logic, player)) - - - # D09Z01S01 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Amanecida of the Molten Thorn", player), - lambda state: can_beat_boss(state, "Wall", logic, player)) - # No doors - - - # D09Z01S02 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Upper east room, center gold cell", player), - lambda state: state.has("D09Z01S02[Cell5]", player)) - set_rule(world.get_location("WotHP: Upper east room, lift puzzle", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - # Doors - set_rule(world.get_entrance("D09Z01S02[SW]", player), - lambda state: state.has("D09Z01S02[Cell2]", player)) - set_rule(world.get_entrance("D09Z01S02[NW]", player), - lambda state: ( - state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - set_rule(world.get_entrance("D09Z01S02[N]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - set_rule(world.get_entrance("D09Z01S02[Cell1]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - add_rule(world.get_entrance("D09Z01S02[Cell1]", player), - lambda state: state.has("Key of the Secular", player)) - set_rule(world.get_entrance("D09Z01S02[Cell6]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - add_rule(world.get_entrance("D09Z01S02[Cell6]", player), - lambda state: state.has("Key of the Scribe", player)) - set_rule(world.get_entrance("D09Z01S02[Cell4]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - add_rule(world.get_entrance("D09Z01S02[Cell4]", player), - lambda state: state.has("Key of the Inquisitor", player)) - set_rule(world.get_entrance("D09Z01S02[Cell2]", player), - lambda state: state.has("D09Z01S02[SW]", player)) - set_rule(world.get_entrance("D09Z01S02[Cell3]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell22]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - add_rule(world.get_entrance("D09Z01S02[Cell3]", player), - lambda state: state.has("Key of the Secular", player)) - set_rule(world.get_entrance("D09Z01S02[Cell22]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell23]", player) - )) - set_rule(world.get_entrance("D09Z01S02[Cell23]", player), - lambda state: ( - state.has("D09Z01S02[NW]", player) - or state.has("D09Z01S02[N]", player) - or state.has("D09Z01S02[Cell1]", player) - or state.has("D09Z01S02[Cell6]", player) - or state.has("D09Z01S02[Cell4]", player) - or state.has("D09Z01S02[Cell3]", player) - or state.has("D09Z01S02[Cell22]", player) - )) - add_rule(world.get_entrance("D09Z01S02[Cell23]", player), - lambda state: state.has("Key of the Secular", player)) - - - # D09Z01S03 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Quirce, Returned By The Flames", player), - lambda state: can_beat_boss(state, "Prison", logic, player)) - # Doors - set_rule(world.get_entrance("D09Z01S03[W]", player), - lambda state: ( - state.has("D09Z01S03[N]", player) - and can_beat_boss(state, "Prison", logic, player) - )) + ) - - # D09Z01S05 (Wall of the Holy Prohibitions) - # Event - set_rule(world.get_location("OpenedWOTHPGate", player), - lambda state: opened_wothp_gate(state, player)) - - - # D09Z01S06 (Wall of the Holy Prohibitions) - # No items - # Doors - set_rule(world.get_entrance("D09Z01S06[-E]", player), - lambda state: state.has("Key of the High Peaks", player)) - - - # D09Z01S07 (Wall of the Holy Prohibitions) - # No items - # Doors - set_rule(world.get_entrance("D09Z01S07[SW]", player), - lambda state: ( - state.has("D09Z01S07[SE]", player) - or state.has("D09Z01S07[W]", player) - or state.has("D09Z01S07[E]", player) - )) - set_rule(world.get_entrance("D09Z01S07[SE]", player), - lambda state: ( - state.has("D09Z01S07[SW]", player) - or state.has("D09Z01S07[W]", player) - or state.has("D09Z01S07[E]", player) - )) - set_rule(world.get_entrance("D09Z01S07[W]", player), - lambda state: ( - state.has("D09Z01S07[SW]", player) - or state.has("D09Z01S07[SE]", player) - or state.has("D09Z01S07[E]", player) - )) - set_rule(world.get_entrance("D09Z01S07[E]", player), - lambda state: ( - state.has("D09Z01S07[SW]", player) - or state.has("D09Z01S07[SE]", player) - or state.has("D09Z01S07[W]", player) - )) - set_rule(world.get_entrance("D09Z01S07[NW]", player), - lambda state: state.has("D09Z01S07[N]", player)) - set_rule(world.get_entrance("D09Z01S07[N]", player), - lambda state: state.has("D09Z01S07[NW]", player)) - set_rule(world.get_entrance("D09Z01S07[NE]", player), - lambda state: ( - state.has("D09Z01S07[SW]", player) - or state.has("D09Z01S07[SE]", player) - or state.has("D09Z01S07[W]", player) - or state.has("D09Z01S07[E]", player) - )) - add_rule(world.get_entrance("D09Z01S07[NE]", player), - lambda state: state.has("Blood Perpetuated in Sand", player)) - - - # D09Z01S08 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Collapsing floor ledge", player), - lambda state: ( - ( - state.has("D09Z01S08[W]", player) - or state.has("D09Z01S08[Cell18]", player) - ) - and state.has("OpenedWOTHPGate", player) - )) - # Doors - set_rule(world.get_entrance("D09Z01S08[W]", player), - lambda state: state.has("D09Z01S08[Cell14]", player)) - add_rule(world.get_entrance("D09Z01S08[W]", player), - lambda state: state.has("OpenedWOTHPGate", player)) - set_rule(world.get_entrance("D09Z01S08[S]", player), - lambda state: ( - state.has("D09Z01S08[W]", player) - or state.has("D09Z01S08[Cell14]", player) - )) - set_rule(world.get_entrance("D09Z01S08[SE]", player), - lambda state: ( - state.has("D09Z01S08[Cell15]", player) - or state.has("D09Z01S08[Cell16]", player) - or state.has("D09Z01S08[Cell18]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D09Z01S08[NE]", player), - lambda state: ( - state.has("D09Z01S08[Cell7]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D09Z01S08[Cell14]", player), - lambda state: state.has("D09Z01S08[W]", player)) - set_rule(world.get_entrance("D09Z01S08[Cell15]", player), - lambda state: ( - state.has("Key of the Scribe", player) - and ( - state.has("D09Z01S08[SE]", player) - or state.has("D09Z01S08[Cell16]", player) - or state.has("D09Z01S08[Cell18]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - ) - )) - set_rule(world.get_entrance("D09Z01S08[Cell7]", player), - lambda state: ( - state.has("Key of the Inquisitor", player) - and ( - state.has("D09Z01S08[NE]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - ) - )) - set_rule(world.get_entrance("D09Z01S08[Cell16]", player), - lambda state: ( - state.has("Key of the Inquisitor", player) - and ( - state.has("D09Z01S08[SE]", player) - or state.has("D09Z01S08[Cell15]", player) - or state.has("D09Z01S08[Cell18]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - ) - )) - set_rule(world.get_entrance("D09Z01S08[Cell18]", player), - lambda state: ( - state.has("Key of the Scribe", player) - and ( - state.has("D09Z01S08[SE]", player) - or state.has("D09Z01S08[Cell15]", player) - or state.has("D09Z01S08[Cell16]", player) - or state.has("D09Z01S08[Cell17]", player) - and state.has("Dash Ability", player) - ) - )) - - - # D09Z01S09 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Lower west room, top ledge", player), - lambda state: ( - state.has("D09Z01S09[Cell24]", player) - or state.has("Dash Ability", player) - and ( - state.has("D09Z01S09[NW]", player) - or state.has("D09Z01S09[Cell19]", player) - or state.has("Purified Hand of the Nun", player) - and ( - can_air_stall(state, logic, player) - or can_dawn_jump(state, logic, player) - ) - ) - )) - # Doors - set_rule(world.get_entrance("D09Z01S09[SW]", player), - lambda state: ( - state.has("D09Z01S09[Cell21]", player) - or state.has("D09Z01S09[Cell20]", player) - or state.has("D09Z01S09[E]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D09Z01S09[NW]", player), - lambda state: ( - state.has("D09Z01S09[Cell19]", player) - or state.has("D09Z01S09[Cell24]", player) - )) - add_rule(world.get_entrance("D09Z01S09[NW]", player), - lambda state: ( - state.has("D09Z01S09[Cell19]", player) - or state.has("Dash Ability", player) - and ( - state.has("D09Z01S09[Cell24]", player) - or state.has("Purified Hand of the Nun", player) - and ( - can_air_stall(state, logic, player) - or can_dawn_jump(state, logic, player) - ) - ) - )) - set_rule(world.get_entrance("D09Z01S09[E]", player), - lambda state: ( - state.has("D09Z01S09[Cell21]", player) - or state.has("D09Z01S09[Cell20]", player) - or state.has("D09Z01S09[SW]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D09Z01S09[Cell24]", player), - lambda state: ( - state.has("D09Z01S09[NW]", player) - or state.has("D09Z01S09[Cell19]", player) - )) - add_rule(world.get_entrance("D09Z01S09[Cell24]", player), - lambda state: ( - state.has("Dash Ability", player) - and ( - state.has("D09Z01S09[NW]", player) - or state.has("D09Z01S09[Cell19]", player) - or state.has("Purified Hand of the Nun", player) - and ( - can_air_stall(state, logic, player) - or can_dawn_jump(state, logic, player) - ) - ) - )) - set_rule(world.get_entrance("D09Z01S09[Cell19]", player), - lambda state: ( - state.has("D09Z01S09[NW]", player) - or state.has("D09Z01S09[Cell24]", player) - )) - add_rule(world.get_entrance("D09Z01S09[Cell19]", player), - lambda state: ( - state.has("D09Z01S09[NW]", player) - or state.has("Dash Ability", player) - and ( - state.has("D09Z01S09[Cell24]", player) - or state.has("Purified Hand of the Nun", player) - and ( - can_air_stall(state, logic, player) - or can_dawn_jump(state, logic, player) - ) - ) - )) - set_rule(world.get_entrance("D09Z01S09[Cell20]", player), - lambda state: ( - state.has("Key of the Scribe", player) - and ( - state.has("D09Z01S09[Cell21]", player) - or state.has("D09Z01S09[SW]", player) - or state.has("D09Z01S09[E]", player) - or state.has("Dash Ability", player) - ) - )) - set_rule(world.get_entrance("D09Z01S09[Cell21]", player), - lambda state: ( - state.has("Key of the Inquisitor", player) - and ( - state.has("D09Z01S09[Cell20]", player) - or state.has("D09Z01S09[SW]", player) - or state.has("D09Z01S09[E]", player) - or state.has("Dash Ability", player) - ) - )) - - - # D09Z01S10 (Wall of the Holy Prohibitions) - # Items - set_rule(world.get_location("WotHP: Lower east room, top bronze cell", player), - lambda state: state.has("D09Z01S10[Cell13]", player)) - set_rule(world.get_location("WotHP: Lower east room, hidden ledge", player), - lambda state: ( - state.has("D09Z01S10[W]", player) - or state.has("D09Z01S10[Cell12]", player) - or state.has("D09Z01S10[Cell10]", player) - or state.has("D09Z01S10[Cell11]", player) - )) - # Doors - set_rule(world.get_entrance("D09Z01S10[W]", player), - lambda state: ( - state.has("D09Z01S10[Cell12]", player) - or state.has("D09Z01S10[Cell10]", player) - or state.has("D09Z01S10[Cell11]", player) - )) - set_rule(world.get_entrance("D09Z01S10[Cell12]", player), - lambda state: ( - state.has("D09Z01S10[W]", player) or \ - state.has("D09Z01S10[Cell10]", player) or \ - state.has("D09Z01S10[Cell11]", player) - )) - add_rule(world.get_entrance("D09Z01S10[Cell12]", player), - lambda state: state.has("Key of the Secular", player)) - set_rule(world.get_entrance("D09Z01S10[Cell10]", player), - lambda state: ( - state.has("D09Z01S10[W]", player) - or state.has("D09Z01S10[Cell12]", player) - or state.has("D09Z01S10[Cell11]", player) - )) - add_rule(world.get_entrance("D09Z01S10[Cell10]", player), - lambda state: state.has("Key of the Scribe", player)) - set_rule(world.get_entrance("D09Z01S10[Cell11]", player), - lambda state: ( - state.has("D09Z01S10[W]", player) - or state.has("D09Z01S10[Cell12]", player) - or state.has("D09Z01S10[Cell10]", player) - )) - add_rule(world.get_entrance("D09Z01S10[Cell11]", player), - lambda state: state.has("Key of the Scribe", player)) + def can_beat_ossuary_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "isidora") + and state.can_reach_region("D01BZ06S01[E]", self.player) + ) - # D09BZ01S01 (Wall of the Holy Prohibitions - Inside cells) - # Items - set_rule(world.get_location("WotHP: Upper east room, center cell ledge", player), - lambda state: state.has("D09BZ01S01[Cell22]", player)) - set_rule(world.get_location("WotHP: Upper east room, center cell floor", player), - lambda state: ( - state.has("D09BZ01S01[Cell22]", player) - or state.has("D09BZ01S01[Cell23]", player) - )) - set_rule(world.get_location("WotHP: Upper east room, top bronze cell", player), - lambda state: state.has("D09BZ01S01[Cell1]", player)) - set_rule(world.get_location("WotHP: Upper east room, top silver cell", player), - lambda state: state.has("D09BZ01S01[Cell6]", player)) - set_rule(world.get_location("WotHP: Upper west room, top silver cell", player), - lambda state: ( - state.has("D09BZ01S01[Cell14]", player) - or state.has("D09BZ01S01[Cell15]", player) - )) - set_rule(world.get_location("WotHP: Upper west room, center gold cell", player), - lambda state: state.has("D09BZ01S01[Cell16]", player)) - set_rule(world.get_location("WotHP: Lower west room, bottom gold cell", player), - lambda state: ( - state.has("D09BZ01S01[Cell21]", player) - and state.has("Blood Perpetuated in Sand", player) - and can_climb_on_root(state, player) - and can_survive_poison(state, logic, player, 2) - and state.has("Dash Ability", player) - )) - set_rule(world.get_location("WotHP: Lower east room, top silver cell", player), - lambda state: state.has("D09BZ01S01[Cell10]", player)) - set_rule(world.get_location("WotHP: Lower east room, bottom silver cell", player), - lambda state: ( - state.has("D09BZ01S01[Cell11]", player) - and ( - can_survive_poison(state, logic, player, 1) - and state.has("Dash Ability", player) - or state.has_any({"Debla of the Lights", "Taranto to my Sister", "Cante Jondo of the Three Sisters", "Verdiales of the Forsaken Hamlet", "Cantina of the Blue Rose"}, player) - or aubade(state, player) - ) - )) - # Doors - set_rule(world.get_entrance("D09BZ01S01[Cell2]", player), - lambda state: state.has("D09BZ01S01[Cell3]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell3]", player), - lambda state: state.has("D09BZ01S01[Cell2]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell4]", player), - lambda state: state.has("D09BZ01S01[Cell5]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell5]", player), - lambda state: state.has("D09BZ01S01[Cell5]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell12]", player), - lambda state: state.has("D09BZ01S01[Cell13]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell13]", player), - lambda state: state.has("D09BZ01S01[Cell12]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell14]", player), - lambda state: state.has("D09BZ01S01[Cell15]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell15]", player), - lambda state: state.has("D09BZ01S01[Cell14]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell17]", player), - lambda state: state.has("D09BZ01S01[Cell18]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell19]", player), - lambda state: state.has("D09BZ01S01[Cell20]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell20]", player), - lambda state: state.has("D09BZ01S01[Cell19]", player)) - set_rule(world.get_entrance("D09BZ01S01[Cell23]", player), - lambda state: state.has("D09BZ01S01[Cell22]", player)) - add_rule(world.get_entrance("D09BZ01S01[Cell23]", player), - lambda state: state.has("Key of the Secular", player)) - - - # D17Z01S01 (Brotherhood of the Silent Sorrow) - set_rule(world.get_location("BotSS: Starting room ledge", player), - lambda state: state.has("D17Z01S01[Cherubs3]", player)) - set_rule(world.get_location("BotSS: Starting room Child of Moonlight", player), - lambda state: ( - state.has("D17Z01S01[Cherubs1]", player) - or state.has("Taranto to my Sister", player) - or ( - can_climb_on_root(state, player) - or can_cross_gap(state, logic, player, 9) - ) - and ( - state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun", "Debla of the Lights", "Verdiales of the Forsaken Hamlet", "Cloistered Ruby"}, player) - or tirana(state, player) - ) - )) - - - # D17Z01S02 (Brotherhood of the Silent Sorrow) - # No items - # Doors - set_rule(world.get_entrance("D17Z01S02[W]", player), - lambda state: state.has("Dash Ability", player)) - set_rule(world.get_entrance("D17Z01S02[E]", player), - lambda state: ( - state.has("D17Z01S02[N]", player) - or state.has("Dash Ability", player) - )) - set_rule(world.get_entrance("D17Z01S02[N]", player), - lambda state: ( - state.has("Blood Perpetuated in Sand", player) - and ( - state.has("D17Z01S02[E]", player) - or state.has("D17Z01S02[W]", player) - and state.has("Dash Ability", player) - ) - )) - - - # D17Z01S03 (Brotherhood of the Silent Sorrow) - # No items - # Doors - set_rule(world.get_entrance("D17Z01S03[relic]", player), - lambda state: state.has("Key to the Chamber of the Eldest Brother", player)) - - - # D17Z01S04 (Brotherhood of the Silent Sorrow) - # Items - if world.boots_of_pleading[player]: - set_rule(world.get_location("BotSS: 2nd meeting with Redento", player), - lambda state: redento(state, blasphemousworld, player, 2)) - # Doors - set_rule(world.get_entrance("D17Z01S04[N]", player), - lambda state: state.has("D17Z01S04[FrontR]", player)) - set_rule(world.get_entrance("D17Z01S04[FrontR]", player), - lambda state: state.has("D17Z01S04[N]", player)) - # Event - set_rule(world.get_location("OpenedBOTSSLadder", player), - lambda state: opened_botss_ladder(state, player)) - - - # D17Z01S05 (Brotherhood of the Silent Sorrow) - # No items - # Doors - set_rule(world.get_entrance("D17Z01S05[S]", player), - lambda state: state.has("OpenedBOTSSLadder", player)) - - - # D17Z01S10 (Brotherhood of the Silent Sorrow) - # No items - # Doors - set_rule(world.get_entrance("D17Z01S10[W]", player), - lambda state: state.has_any({"Blood Perpetuated in Sand", "Purified Hand of the Nun"}, player)) - - - # D17Z01S11 (Brotherhood of the Silent Sorrow) - # Items - set_rule(world.get_location("BotSS: Warden of the Silent Sorrow", player), - lambda state: can_beat_boss(state, "Brotherhood", logic, player)) - # Doors - set_rule(world.get_entrance("D17Z01S11[W]", player), - lambda state: can_beat_boss(state, "Brotherhood", logic, player)) - set_rule(world.get_entrance("D17Z01S11[E]", player), - lambda state: can_beat_boss(state, "Brotherhood", logic, player)) - - - # D17Z01S14 (Brotherhood of the Silent Sorrow) - # Items - set_rule(world.get_location("BotSS: Outside church", player), - lambda state: ( - state.has("D17Z01S14[W]", player) - or state.has("Blood Perpetuated in Sand", player) - )) - # Doors - set_rule(world.get_entrance("D17Z01S14[W]", player), - lambda state: ( - state.has("Incomplete Scapular", player) - and state.has("Blood Perpetuated in Sand", player) - )) - set_rule(world.get_entrance("D17Z01S14[E]", player), - lambda state: state.has("Blood Perpetuated in Sand", player)) - set_rule(world.get_entrance("D17Z01S14[-Cherubs1]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) + def can_beat_mourning_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "sierpes") + and state.can_reach_region("D20Z02S07[W]", self.player) + ) + + def can_beat_graveyard_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "amanecida") + and self.wall_climb(state) + and state.can_reach_region("D01Z06S01[Santos]", self.player) + and state.can_reach_region("D02Z03S18[NW]", self.player) + and state.can_reach_region("D02Z02S03[NE]", self.player) + ) + + def can_beat_jondo_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "amanecida") + and state.can_reach_region("D01Z06S01[Santos]", self.player) and ( - state.has("D17Z01S14[W]", player) - or state.has("Blood Perpetuated in Sand", player) - or can_cross_gap(state, logic, player, 11) + state.can_reach_region("D20Z01S06[NE]", self.player) + or state.can_reach_region("D20Z01S04[W]", self.player) ) - )) - set_rule(world.get_entrance("D17Z01S14[-Cherubs2]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) and ( - state.has("D17Z01S14[E]", player) - and can_cross_gap(state, logic, player, 8) - or state.has("D17Z01S14[W]", player) - and can_cross_gap(state, logic, player, 10) - or state.has("Blood Perpetuated in Sand", player) + state.can_reach_region("D03Z01S04[E]", self.player) + or state.can_reach_region("D03Z02S10[N]", self.player) ) - )) - set_rule(world.get_entrance("D17Z01S14[-Cherubs3]", player), - lambda state: ( - state.has("Linen of Golden Thread", player) + ) + + def can_beat_patio_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "amanecida") + and state.can_reach_region("D01Z06S01[Santos]", self.player) + and state.can_reach_region("D06Z01S02[W]", self.player) and ( - state.has("D17Z01S14[E]", player) - or state.has("Blood Perpetuated in Sand", player) + state.can_reach_region("D04Z01S03[E]", self.player) + or state.can_reach_region("D04Z01S01[W]", self.player) + or state.can_reach_region("D06Z01S18[-Cherubs]", self.player) ) - )) - - - # D17Z01S15 (Brotherhood of the Silent Sorrow) - # Items - set_rule(world.get_location("BotSS: Esdras' final gift", player), - lambda state: ( - can_beat_boss(state, "Bridge", logic, player) - and state.has_group("wounds", player, 3) - )) - set_rule(world.get_location("BotSS: Crisanta's gift", player), - lambda state: ( - can_beat_boss(state, "Rooftops", logic, player) - and state.has("Apodictic Heart of Mea Culpa", player) - )) - # No doors - - - # D17BZ02S01 (Brotherhood of the Silent Sorrow - Platforming challenge) - # Items - set_rule(world.get_location("BotSS: Platforming gauntlet", player), - lambda state: ( - #state.has("D17BZ02S01[FrontR]", player) or - # TODO: actually fix this once door rando is real - state.has_all({"Dash Ability", "Wall Climb Ability"}, player) - )) - # Doors - set_rule(world.get_entrance("D17BZ02S01[FrontR]", player), - lambda state: state.has_all({"Dash Ability", "Wall Climb Ability"}, player)) - - - # D20Z01S04 (Echoes of Salt) - # No items - # Doors - set_rule(world.get_entrance("D20Z01S04[E]", player), - lambda state: state.has("OpenedDCGateW", player)) - - - # D20Z01S09 (Echoes of Salt) - # Items - set_rule(world.get_location("EoS: Lantern jump near elevator", player), - lambda state: ( - state.has("D20Z01S09[W]", player) - or state.has("Dash Ability", player) - )) - # Doors - set_rule(world.get_entrance("D20Z01S09[W]", player), - lambda state: state.has("Dash Ability", player)) - set_rule(world.get_entrance("D20Z01S09[E]", player), - lambda state: state.has_all({"Blood Perpetuated in Sand", "Dash Ability"}, player)) - - - # D20Z01S10 (Echoes of Salt) - # No items - # Doors - set_rule(world.get_entrance("D20Z01S10[W]", player), - lambda state: state.has_all({"Blood Perpetuated in Sand", "Dash Ability"}, player)) - set_rule(world.get_entrance("D20Z01S10[E]", player), - lambda state: state.has_all({"Blood Perpetuated in Sand", "Dash Ability"}, player)) - - - # D20Z02S03 (Mourning and Havoc) - # No items - # Doors - set_rule(world.get_entrance("D20Z02S03[NE]", player), - lambda state: ( - can_walk_on_root(state, player) - or can_cross_gap(state, logic, player, 5) - )) - - - # D20Z02S04 (Mourning and Havoc) - # No items - # Doors - set_rule(world.get_entrance("D20Z02S04[W]", player), - lambda state: state.has("Dash Ability", player)) - set_rule(world.get_entrance("D20Z02S04[E]", player), - lambda state: state.has("Dash Ability", player)) - - - # D20Z02S05 (Mourning and Havoc) - # No items - # Doors - set_rule(world.get_entrance("D20Z02S05[NW]", player), - lambda state: ( - state.has("Nail Uprooted from Dirt", player) - or can_cross_gap(state, logic, player, 3) - )) - - - # D20Z02S06 (Mourning and Havoc) - # No items - # Doors - set_rule(world.get_entrance("D20Z02S06[NW]", player), - lambda state: ( - state.has("D20Z02S06[NE]", player) - or state.has("Purified Hand of the Nun", player) - or can_climb_on_root(state, player) - or can_dive_laser(state, logic, player) - )) - set_rule(world.get_entrance("D20Z02S06[NE]", player), - lambda state: ( - state.has("D20Z02S06[NW]", player) - or state.has("Purified Hand of the Nun", player) - or can_climb_on_root(state, player) - or can_dive_laser(state, logic, player) - )) - - - # D20Z02S08 (Mourning and Havoc) - # Items - set_rule(world.get_location("MaH: Sierpes", player), - lambda state: can_beat_boss(state, "Mourning", logic, player)) - set_rule(world.get_location("MaH: Sierpes' eye", player), - lambda state: can_beat_boss(state, "Mourning", logic, player)) - # No doors - - - # D20Z02S11 (Mourning and Havoc) - # No items - # Doors - set_rule(world.get_entrance("D20Z02S11[NW]", player), - lambda state: state.has("D20Z02S11[E]", player)) - set_rule(world.get_entrance("D20Z02S11[NW]", player), - lambda state: ( - mourning_skips_allowed(logic) + ) + + def can_beat_wall_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "amanecida") + and state.can_reach_region("D01Z06S01[Santos]", self.player) + and state.can_reach_region("D09Z01S09[Cell24]", self.player) and ( - state.has("Purified Hand of the Nun", player) - or can_break_tirana(state, logic, player) - or state.has("D20Z02S11[E]", player) + state.can_reach_region("D09Z01S11[E]", self.player) + or state.can_reach_region("D06Z01S13[W]", self.player) ) - )) - set_rule(world.get_entrance("D20Z02S11[E]", player), - lambda state: ( - mourning_skips_allowed(logic) + ) + + def can_beat_hall_boss(self, state: CollectionState) -> bool: + return ( + self.has_boss_strength(state, "laudes") and ( - state.has("Purified Hand of the Nun", player) - or can_break_tirana(state, logic, player) - or state.has("D20Z02S11[NW]", player) - and can_cross_gap(state, logic, player, 5) + state.can_reach_region("D08Z01S02[NE]", self.player) + or state.can_reach_region("D08Z03S02[NW]", self.player) ) - )) + ) + def can_beat_perpetua(self, state: CollectionState) -> bool: + return self.has_boss_strength(state, "perpetua") + + def can_beat_legionary(self, state: CollectionState) -> bool: + return self.has_boss_strength(state, "legionary") + + + def has_boss_strength(self, state: CollectionState, boss: str) -> bool: + life: int = state.count("Life Upgrade", self.player) + sword: int = state.count("Mea Culpa Upgrade", self.player) + fervour: int = state.count("Fervour Upgrade", self.player) + flasks: int = self.flasks(state) + quicksilver: int = self.quicksilver(state) + + player_strength: float = ( + min(6, life) * 0.25 / 6 + + min(7, sword) * 0.25 / 7 + + min(6, fervour) * 0.20 / 6 + + min(8, flasks) * 0.15 / 8 + + min(5, quicksilver) * 0.15 / 5 + ) - # Misc Items - set_rule(world.get_location("Second red candle", player), - lambda state: ( - state.has("Bead of Red Wax", player) - and ( - state.can_reach(world.get_region("D02Z03S06", player), player) - or state.has("D05Z01S02[W]", player) - ) - )) - set_rule(world.get_location("Third red candle", player), - lambda state: ( - state.has("Bead of Red Wax", player) - and state.has("D05Z01S02[W]", player) - and state.can_reach(world.get_region("D02Z03S06", player), player) - )) - set_rule(world.get_location("Second blue candle", player), - lambda state: ( - state.has("Bead of Blue Wax", player) - and ( - state.has("OpenedBOTSSLadder", player) - or state.can_reach(world.get_region("D01Z04S16", player), player) - ) - )) - set_rule(world.get_location("Third blue candle", player), - lambda state: ( - state.has("Bead of Blue Wax", player) - and state.has("OpenedBOTSSLadder", player) - and state.can_reach(world.get_region("D01Z04S16", player), player) - )) - set_rule(world.get_location("Defeat 1 Amanecida", player), - lambda state: amanecida_rooms(state, logic, player, 1)) - set_rule(world.get_location("Defeat 2 Amanecidas", player), - lambda state: amanecida_rooms(state, logic, player, 2)) - set_rule(world.get_location("Defeat 3 Amanecidas", player), - lambda state: amanecida_rooms(state, logic, player, 3)) - set_rule(world.get_location("Defeat 4 Amanecidas", player), - lambda state: amanecida_rooms(state, logic, player, 4)) - set_rule(world.get_location("Defeat all Amanecidas", player), - lambda state: amanecida_rooms(state, logic, player, 4)) - set_rule(world.get_location("Confessor Dungeon 1 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 1) - )) - set_rule(world.get_location("Confessor Dungeon 2 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 2) - )) - set_rule(world.get_location("Confessor Dungeon 3 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 3) - )) - set_rule(world.get_location("Confessor Dungeon 4 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 4) - )) - set_rule(world.get_location("Confessor Dungeon 5 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 5) - )) - set_rule(world.get_location("Confessor Dungeon 6 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 6) - )) - set_rule(world.get_location("Confessor Dungeon 7 main", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 7) - )) - set_rule(world.get_location("Confessor Dungeon 1 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 1) - )) - set_rule(world.get_location("Confessor Dungeon 2 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 2) - )) - set_rule(world.get_location("Confessor Dungeon 3 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 3) - )) - set_rule(world.get_location("Confessor Dungeon 4 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 4) - )) - set_rule(world.get_location("Confessor Dungeon 5 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 5) - )) - set_rule(world.get_location("Confessor Dungeon 6 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 6) - )) - set_rule(world.get_location("Confessor Dungeon 7 extra", player), - lambda state: ( - state.has("Weight of True Guilt", player) - and guilt_rooms(state, player, 7) - )) - set_rule(world.get_location("Skill 1, Tier 1", player), - lambda state: sword_rooms(state, player, 1)) - set_rule(world.get_location("Skill 1, Tier 2", player), - lambda state: sword_rooms(state, player, 2)) - set_rule(world.get_location("Skill 1, Tier 3", player), - lambda state: sword_rooms(state, player, 4)) - set_rule(world.get_location("Skill 2, Tier 1", player), - lambda state: sword_rooms(state, player, 1)) - set_rule(world.get_location("Skill 2, Tier 2", player), - lambda state: sword_rooms(state, player, 3)) - set_rule(world.get_location("Skill 2, Tier 3", player), - lambda state: sword_rooms(state, player, 6)) - set_rule(world.get_location("Skill 3, Tier 1", player), - lambda state: sword_rooms(state, player, 2)) - set_rule(world.get_location("Skill 3, Tier 2", player), - lambda state: sword_rooms(state, player, 5)) - set_rule(world.get_location("Skill 3, Tier 3", player), - lambda state: sword_rooms(state, player, 7)) - set_rule(world.get_location("Skill 4, Tier 1", player), - lambda state: sword_rooms(state, player, 1)) - set_rule(world.get_location("Skill 4, Tier 2", player), - lambda state: sword_rooms(state, player, 3)) - set_rule(world.get_location("Skill 4, Tier 3", player), - lambda state: sword_rooms(state, player, 6)) - set_rule(world.get_location("Skill 5, Tier 1", player), - lambda state: sword_rooms(state, player, 1)) - set_rule(world.get_location("Skill 5, Tier 2", player), - lambda state: sword_rooms(state, player, 2)) - set_rule(world.get_location("Skill 5, Tier 3", player), - lambda state: sword_rooms(state, player, 4)) \ No newline at end of file + bosses: Dict[str, float] = { + "warden": -0.10, + "ten-piedad": 0.05, + "charred-visage": 0.20, + "tres-angustias": 0.15, + "esdras": 0.25, + "melquiades": 0.25, + "exposito": 0.30, + "quirce": 0.35, + "crisanta": 0.50, + "isidora": 0.70, + "sierpes": 0.70, + "amanecida": 0.60, + "laudes": 0.60, + "perpetua": -0.05, + "legionary": 0.20 + } + boss_strength: float = bosses[boss] + return player_strength >= (boss_strength - 0.10 if self.world.options.difficulty >= 2 else + (boss_strength if self.world.options.difficulty >= 1 else boss_strength + 0.10)) + + def guilt_rooms(self, state: CollectionState) -> int: + doors = [ + "D01Z04S01[NE]", + "D02Z02S11[W]", + "D03Z03S02[NE]", + "D04Z02S02[SE]", + "D05Z01S05[NE]", + "D09Z01S05[W]", + "D17Z01S04[W]", + ] + + return sum(state.can_reach_region(door, self.player) for door in doors) + + def sword_rooms(self, state: CollectionState) -> int: + doors = [ + ["D01Z02S07[E]", "D01Z02S02[SW]"], + ["D20Z01S04[E]", "D01Z05S23[W]"], + ["D02Z03S02[NE]"], + ["D04Z02S21[NE]"], + ["D05Z01S21[NW]"], + ["D06Z01S15[NE]"], + ["D17Z01S07[SW]"] + ] + + total: int = 0 + for subdoors in doors: + for door in subdoors: + if state.can_reach_region(door, self.player): + total += 1 + break + + return total + + def redento_rooms(self, state: CollectionState) -> int: + if ( + state.can_reach_region("D03Z01S04[E]", self.player) + or state.can_reach_region("D03Z02S10[N]", self.player) + ): + if ( + state.can_reach_region("D17Z01S05[S]", self.player) + or state.can_reach_region("D17BZ02S01[FrontR]", self.player) + ): + if ( + state.can_reach_region("D01Z03S04[E]", self.player) + or state.can_reach_region("D08Z01S01[W]", self.player) + ): + if ( + state.can_reach_region("D04Z01S03[E]", self.player) + or state.can_reach_region("D04Z02S01[W]", self.player) + or state.can_reach_region("D06Z01S18[-Cherubs]", self.player) + ): + if ( + self.knots(state) >= 1 + and self.limestones(state) >= 3 + and ( + state.can_reach_region("D04Z02S08[E]", self.player) + or state.can_reach_region("D04BZ02S01[Redento]", self.player) + ) + ): + return 5 + return 4 + return 3 + return 2 + return 1 + return 0 + + def miriam_rooms(self, state: CollectionState) -> int: + doors = [ + "D02Z03S07[NWW]", + "D03Z03S07[NW]", + "D04Z04S01[E]", + "D05Z01S06[W]", + "D06Z01S17[E]" + ] + + return sum(state.can_reach_region(door, self.player) for door in doors) + + def amanecida_rooms(self, state: CollectionState) -> int: + total: int = 0 + if self.can_beat_graveyard_boss(state): + total += 1 + if self.can_beat_jondo_boss(state): + total += 1 + if self.can_beat_patio_boss(state): + total += 1 + if self.can_beat_wall_boss(state): + total += 1 + + return total + + def chalice_rooms(self, state: CollectionState) -> int: + doors = [ + ["D03Z01S02[E]", "D01Z05S02[W]", "D20Z01S03[N]"], + ["D05Z01S11[SE]", "D05Z02S02[NW]"], + ["D09Z01S09[E]", "D09Z01S10[W]", "D09Z01S08[SE]", "D09Z01S02[SW]"] + ] + + total: int = 0 + for subdoors in doors: + for door in subdoors: + if state.can_reach_region(door, self.player): + total += 1 + break + + return total diff --git a/worlds/blasphemous/Vanilla.py b/worlds/blasphemous/Vanilla.py index 034a2a295b6b..9cefe9df8ac4 100644 --- a/worlds/blasphemous/Vanilla.py +++ b/worlds/blasphemous/Vanilla.py @@ -8,12 +8,12 @@ } -junk_locations: Set[str] = [ +junk_locations: Set[str] = { "Albero: Donate 50000 Tears", "Ossuary: 11th reward", "AtTotS: Miriam's gift", "TSC: Jocinero's final reward" -] +} thorn_set: Set[str] = { @@ -44,4 +44,4 @@ "Skill 5, Tier 1": "Lunge Skill", "Skill 5, Tier 2": "Lunge Skill", "Skill 5, Tier 3": "Lunge Skill", -} \ No newline at end of file +} diff --git a/worlds/blasphemous/__init__.py b/worlds/blasphemous/__init__.py index a46fb55b9541..b110c316da48 100644 --- a/worlds/blasphemous/__init__.py +++ b/worlds/blasphemous/__init__.py @@ -1,15 +1,15 @@ from typing import Dict, List, Set, Any from collections import Counter -from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification +from BaseClasses import Region, Location, Item, Tutorial, ItemClassification +from Options import OptionError from worlds.AutoWorld import World, WebWorld -from .Items import base_id, item_table, group_table, tears_set, reliquary_set, event_table -from .Locations import location_table -from .Rooms import room_table, door_table -from .Rules import rules -from worlds.generic.Rules import set_rule, add_rule -from .Options import blasphemous_options +from .Items import base_id, item_table, group_table, tears_list, reliquary_set +from .Locations import location_names +from .Rules import BlasRules +from worlds.generic.Rules import set_rule +from .Options import BlasphemousOptions, blas_option_groups from .Vanilla import unrandomized_dict, junk_locations, thorn_set, skill_dict - +from .region_data import regions, locations class BlasphemousWeb(WebWorld): theme = "stone" @@ -21,39 +21,33 @@ class BlasphemousWeb(WebWorld): "setup/en", ["TRPG"] )] + option_groups = blas_option_groups class BlasphemousWorld(World): """ Blasphemous is a challenging Metroidvania set in the cursed land of Cvstodia. Play as the Penitent One, trapped - in an endless cycle of death and rebirth, and free the world from it's terrible fate in your quest to break + in an endless cycle of death and rebirth, and free the world from its terrible fate in your quest to break your eternal damnation! """ - game: str = "Blasphemous" + game = "Blasphemous" web = BlasphemousWeb() item_name_to_id = {item["name"]: (base_id + index) for index, item in enumerate(item_table)} - location_name_to_id = {loc["name"]: (base_id + index) for index, loc in enumerate(location_table)} - location_name_to_game_id = {loc["name"]: loc["game_id"] for loc in location_table} + location_name_to_id = {loc: (base_id + index) for index, loc in enumerate(location_names.values())} item_name_groups = group_table - option_definitions = blasphemous_options + options_dataclass = BlasphemousOptions + options: BlasphemousOptions - required_client_version = (0, 4, 2) + required_client_version = (0, 4, 7) def __init__(self, multiworld, player): super(BlasphemousWorld, self).__init__(multiworld, player) self.start_room: str = "D17Z01S01" - self.door_connections: Dict[str, str] = {} - - - def set_rules(self): - rules(self) - for door in door_table: - add_rule(self.multiworld.get_location(door["Id"], self.player), - lambda state: state.can_reach(self.get_connected_door(door["Id"])), self.player) + self.disabled_locations: List[str] = [] def create_item(self, name: str) -> "BlasphemousItem": @@ -68,64 +62,56 @@ def create_event(self, event: str): def get_filler_item_name(self) -> str: - return self.multiworld.random.choice(tears_set) + return self.random.choice(tears_list) def generate_early(self): - world = self.multiworld - player = self.player - - if not world.starting_location[player].randomized: - if world.starting_location[player].value == 6 and world.difficulty[player].value < 2: - raise Exception(f"[Blasphemous - '{world.get_player_name(player)}'] {world.starting_location[player]}" - " cannot be chosen if Difficulty is lower than Hard.") - - if (world.starting_location[player].value == 0 or world.starting_location[player].value == 6) \ - and world.dash_shuffle[player]: - raise Exception(f"[Blasphemous - '{world.get_player_name(player)}'] {world.starting_location[player]}" - " cannot be chosen if Shuffle Dash is enabled.") + if not self.options.starting_location.randomized: + if self.options.starting_location == "mourning_havoc" and self.options.difficulty < 2: + raise OptionError(f"[Blasphemous - '{self.player_name}'] " + f"{self.options.starting_location} cannot be chosen if Difficulty is lower than Hard.") + + if (self.options.starting_location == "brotherhood" or self.options.starting_location == "mourning_havoc") \ + and self.options.dash_shuffle: + raise OptionError(f"[Blasphemous - '{self.player_name}'] " + f"{self.options.starting_location} cannot be chosen if Shuffle Dash is enabled.") - if world.starting_location[player].value == 3 and world.wall_climb_shuffle[player]: - raise Exception(f"[Blasphemous - '{world.get_player_name(player)}'] {world.starting_location[player]}" - " cannot be chosen if Shuffle Wall Climb is enabled.") + if self.options.starting_location == "grievance" and self.options.wall_climb_shuffle: + raise OptionError(f"[Blasphemous - '{self.player_name}'] " + f"{self.options.starting_location} cannot be chosen if Shuffle Wall Climb is enabled.") else: locations: List[int] = [ 0, 1, 2, 3, 4, 5, 6 ] - invalid: bool = False - if world.difficulty[player].value < 2: + if self.options.difficulty < 2: locations.remove(6) - if world.dash_shuffle[player]: + if self.options.dash_shuffle: locations.remove(0) if 6 in locations: locations.remove(6) - if world.wall_climb_shuffle[player]: + if self.options.wall_climb_shuffle: locations.remove(3) - if world.starting_location[player].value == 6 and world.difficulty[player].value < 2: - invalid = True - - if (world.starting_location[player].value == 0 or world.starting_location[player].value == 6) \ - and world.dash_shuffle[player]: - invalid = True - - if world.starting_location[player].value == 3 and world.wall_climb_shuffle[player]: - invalid = True - - if invalid: - world.starting_location[player].value = world.random.choice(locations) + if self.options.starting_location.value not in locations: + self.options.starting_location.value = self.random.choice(locations) - if not world.dash_shuffle[player]: - world.push_precollected(self.create_item("Dash Ability")) + if not self.options.dash_shuffle: + self.multiworld.push_precollected(self.create_item("Dash Ability")) - if not world.wall_climb_shuffle[player]: - world.push_precollected(self.create_item("Wall Climb Ability")) + if not self.options.wall_climb_shuffle: + self.multiworld.push_precollected(self.create_item("Wall Climb Ability")) - if world.skip_long_quests[player]: + if not self.options.boots_of_pleading: + self.disabled_locations.append("RE401") + + if not self.options.purified_hand: + self.disabled_locations.append("RE402") + + if self.options.skip_long_quests: for loc in junk_locations: - world.exclude_locations[player].value.add(loc) + self.options.exclude_locations.value.add(loc) start_rooms: Dict[int, str] = { 0: "D17Z01S01", @@ -137,13 +123,10 @@ def generate_early(self): 6: "D20Z02S09" } - self.start_room = start_rooms[world.starting_location[player].value] + self.start_room = start_rooms[self.options.starting_location.value] def create_items(self): - world = self.multiworld - player = self.player - removed: int = 0 to_remove: List[str] = [ "Tears of Atonement (250)", @@ -156,46 +139,46 @@ def create_items(self): skipped_items = [] junk: int = 0 - for item, count in world.start_inventory[player].value.items(): + for item, count in self.options.start_inventory.value.items(): for _ in range(count): skipped_items.append(item) junk += 1 skipped_items.extend(unrandomized_dict.values()) - if world.thorn_shuffle[player] == 2: - for i in range(8): + if self.options.thorn_shuffle == "vanilla": + for _ in range(8): skipped_items.append("Thorn Upgrade") - if world.dash_shuffle[player]: + if self.options.dash_shuffle: skipped_items.append(to_remove[removed]) removed += 1 - elif not world.dash_shuffle[player]: + elif not self.options.dash_shuffle: skipped_items.append("Dash Ability") - if world.wall_climb_shuffle[player]: + if self.options.wall_climb_shuffle: skipped_items.append(to_remove[removed]) removed += 1 - elif not world.wall_climb_shuffle[player]: + elif not self.options.wall_climb_shuffle: skipped_items.append("Wall Climb Ability") - if not world.reliquary_shuffle[player]: + if not self.options.reliquary_shuffle: skipped_items.extend(reliquary_set) - elif world.reliquary_shuffle[player]: - for i in range(3): + elif self.options.reliquary_shuffle: + for _ in range(3): skipped_items.append(to_remove[removed]) removed += 1 - if not world.boots_of_pleading[player]: + if not self.options.boots_of_pleading: skipped_items.append("Boots of Pleading") - if not world.purified_hand[player]: + if not self.options.purified_hand: skipped_items.append("Purified Hand of the Nun") - if world.start_wheel[player]: + if self.options.start_wheel: skipped_items.append("The Young Mason's Wheel") - if not world.skill_randomizer[player]: + if not self.options.skill_randomizer: skipped_items.extend(skill_dict.values()) counter = Counter(skipped_items) @@ -208,184 +191,140 @@ def create_items(self): if count <= 0: continue else: - for i in range(count): + for _ in range(count): pool.append(self.create_item(item["name"])) for _ in range(junk): pool.append(self.create_item(self.get_filler_item_name())) - world.itempool += pool + self.multiworld.itempool += pool def pre_fill(self): - world = self.multiworld - player = self.player - self.place_items_from_dict(unrandomized_dict) - if world.thorn_shuffle[player] == 2: + if self.options.thorn_shuffle == "vanilla": self.place_items_from_set(thorn_set, "Thorn Upgrade") - if world.start_wheel[player]: - world.get_location("Beginning gift", player)\ - .place_locked_item(self.create_item("The Young Mason's Wheel")) + if self.options.start_wheel: + self.get_location("Beginning gift").place_locked_item(self.create_item("The Young Mason's Wheel")) - if not world.skill_randomizer[player]: + if not self.options.skill_randomizer: self.place_items_from_dict(skill_dict) - if world.thorn_shuffle[player] == 1: - world.local_items[player].value.add("Thorn Upgrade") + if self.options.thorn_shuffle == "local_only": + self.options.local_items.value.add("Thorn Upgrade") def place_items_from_set(self, location_set: Set[str], name: str): for loc in location_set: - self.multiworld.get_location(loc, self.player)\ - .place_locked_item(self.create_item(name)) + self.get_location(loc).place_locked_item(self.create_item(name)) def place_items_from_dict(self, option_dict: Dict[str, str]): for loc, item in option_dict.items(): - self.multiworld.get_location(loc, self.player)\ - .place_locked_item(self.create_item(item)) + self.get_location(loc).place_locked_item(self.create_item(item)) def create_regions(self) -> None: + multiworld = self.multiworld player = self.player - world = self.multiworld - - menu_region = Region("Menu", player, world) - misc_region = Region("Misc", player, world) - world.regions += [menu_region, misc_region] - for room in room_table: - region = Region(room, player, world) - world.regions.append(region) + created_regions: List[str] = [] - menu_region.add_exits({self.start_room: "New Game"}) - world.get_region(self.start_room, player).add_exits({"Misc": "Misc"}) + for r in regions: + multiworld.regions.append(Region(r["name"], player, multiworld)) + created_regions.append(r["name"]) - for door in door_table: - if door.get("OriginalDoor") is None: - continue - else: - if not door["Id"] in self.door_connections.keys(): - self.door_connections[door["Id"]] = door["OriginalDoor"] - self.door_connections[door["OriginalDoor"]] = door["Id"] - - parent_region: Region = self.get_room_from_door(door["Id"]) - target_region: Region = self.get_room_from_door(door["OriginalDoor"]) - parent_region.add_exits({ - target_region.name: door["Id"] - }, { - target_region.name: lambda x: door.get("VisibilityFlags") != 1 - }) - - for index, loc in enumerate(location_table): - if not world.boots_of_pleading[player] and loc["name"] == "BotSS: 2nd meeting with Redento": - continue - if not world.purified_hand[player] and loc["name"] == "MoM: Western room ledge": - continue + self.get_region("Menu").add_exits({self.start_room: "New Game"}) + + blas_logic = BlasRules(self) + + for r in regions: + region = self.get_region(r["name"]) + + for e in r["exits"]: + region.add_exits({e["target"]}, {e["target"]: blas_logic.load_rule(True, r["name"], e)}) - region: Region = world.get_region(loc["room"], player) - region.add_locations({loc["name"]: base_id + index}) - #id = base_id + location_table.index(loc) - #reg.locations.append(BlasphemousLocation(player, loc["name"], id, reg)) - - for e, r in event_table.items(): - region: Region = world.get_region(r, player) - event = BlasphemousLocation(player, e, None, region) - event.show_in_spoiler = False - event.place_locked_item(self.create_event(e)) - region.locations.append(event) - - for door in door_table: - region: Region = self.get_room_from_door(self.door_connections[door["Id"]]) - event = BlasphemousLocation(player, door["Id"], None, region) - event.show_in_spoiler = False - event.place_locked_item(self.create_event(door["Id"])) - region.locations.append(event) + for l in [l for l in r["locations"] if l not in self.disabled_locations]: + region.add_locations({location_names[l]: self.location_name_to_id[location_names[l]]}, BlasphemousLocation) + + for t in r["transitions"]: + if t == r["name"]: + continue + + if t in created_regions: + region.add_exits({t}) + else: + multiworld.regions.append(Region(t, player, multiworld)) + created_regions.append(t) + region.add_exits({t}) + + + for l in [l for l in locations if l["name"] not in self.disabled_locations]: + location = self.get_location(location_names[l["name"]]) + set_rule(location, blas_logic.load_rule(False, l["name"], l)) + + for rname, ename in blas_logic.indirect_conditions: + self.multiworld.register_indirect_condition(self.get_region(rname), self.get_entrance(ename)) + #from Utils import visualize_regions + #visualize_regions(self.get_region("Menu"), "blasphemous_regions.puml") - victory = Location(player, "His Holiness Escribar", None, world.get_region("D07Z01S03", player)) + victory = Location(player, "His Holiness Escribar", None, self.get_region("D07Z01S03[W]")) victory.place_locked_item(self.create_event("Victory")) - world.get_region("D07Z01S03", player).locations.append(victory) + self.get_region("D07Z01S03[W]").locations.append(victory) - if world.ending[self.player].value == 1: + if self.options.ending == "ending_a": set_rule(victory, lambda state: state.has("Thorn Upgrade", player, 8)) - elif world.ending[self.player].value == 2: + elif self.options.ending == "ending_c": set_rule(victory, lambda state: state.has("Thorn Upgrade", player, 8) and state.has("Holy Wound of Abnegation", player)) - world.completion_condition[self.player] = lambda state: state.has("Victory", player) - - - def get_room_from_door(self, door: str) -> Region: - return self.multiworld.get_region(door.split("[")[0], self.player) - - - def get_connected_door(self, door: str) -> Entrance: - return self.multiworld.get_entrance(self.door_connections[door], self.player) + multiworld.completion_condition[self.player] = lambda state: state.has("Victory", player) def fill_slot_data(self) -> Dict[str, Any]: slot_data: Dict[str, Any] = {} - locations = [] doors: Dict[str, str] = {} - - world = self.multiworld - player = self.player thorns: bool = True - if world.thorn_shuffle[player].value == 2: + if self.options.thorn_shuffle == "vanilla": thorns = False - for loc in world.get_filled_locations(player): - if loc.item.code == None: - continue - else: - data = { - "id": self.location_name_to_game_id[loc.name], - "ap_id": loc.address, - "name": loc.item.name, - "player_name": world.player_name[loc.item.player], - "type": int(loc.item.classification) - } - - locations.append(data) - config = { - "LogicDifficulty": world.difficulty[player].value, - "StartingLocation": world.starting_location[player].value, + "LogicDifficulty": self.options.difficulty.value, + "StartingLocation": self.options.starting_location.value, "VersionCreated": "AP", - "UnlockTeleportation": bool(world.prie_dieu_warp[player].value), - "AllowHints": bool(world.corpse_hints[player].value), - "AllowPenitence": bool(world.penitence[player].value), + "UnlockTeleportation": bool(self.options.prie_dieu_warp.value), + "AllowHints": bool(self.options.corpse_hints.value), + "AllowPenitence": bool(self.options.penitence.value), - "ShuffleReliquaries": bool(world.reliquary_shuffle[player].value), - "ShuffleBootsOfPleading": bool(world.boots_of_pleading[player].value), - "ShufflePurifiedHand": bool(world.purified_hand[player].value), - "ShuffleDash": bool(world.dash_shuffle[player].value), - "ShuffleWallClimb": bool(world.wall_climb_shuffle[player].value), + "ShuffleReliquaries": bool(self.options.reliquary_shuffle.value), + "ShuffleBootsOfPleading": bool(self.options.boots_of_pleading.value), + "ShufflePurifiedHand": bool(self.options.purified_hand.value), + "ShuffleDash": bool(self.options.dash_shuffle.value), + "ShuffleWallClimb": bool(self.options.wall_climb_shuffle.value), - "ShuffleSwordSkills": bool(world.skill_randomizer[player].value), + "ShuffleSwordSkills": bool(self.options.wall_climb_shuffle.value), "ShuffleThorns": thorns, - "JunkLongQuests": bool(world.skip_long_quests[player].value), - "StartWithWheel": bool(world.start_wheel[player].value), + "JunkLongQuests": bool(self.options.skip_long_quests.value), + "StartWithWheel": bool(self.options.start_wheel.value), - "EnemyShuffleType": world.enemy_randomizer[player].value, - "MaintainClass": bool(world.enemy_groups[player].value), - "AreaScaling": bool(world.enemy_scaling[player].value), + "EnemyShuffleType": self.options.enemy_randomizer.value, + "MaintainClass": bool(self.options.enemy_groups.value), + "AreaScaling": bool(self.options.enemy_scaling.value), "BossShuffleType": 0, "DoorShuffleType": 0 } slot_data = { - "locations": locations, + "locationinfo": [{"gameId": loc, "apId": (base_id + index)} for index, loc in enumerate(location_names)], "doors": doors, "cfg": config, - "ending": world.ending[self.player].value, - "death_link": bool(world.death_link[self.player].value) + "ending": self.options.ending.value, + "death_link": bool(self.options.death_link.value) } return slot_data diff --git a/worlds/blasphemous/docs/setup_en.md b/worlds/blasphemous/docs/setup_en.md index 070d1ca4964b..068990be1f3a 100644 --- a/worlds/blasphemous/docs/setup_en.md +++ b/worlds/blasphemous/docs/setup_en.md @@ -1,48 +1,17 @@ # Blasphemous Multiworld Setup Guide -## Useful Links +It is recommended to use the [Mod Installer](https://github.com/BrandenEK/Blasphemous.Modding.Installer) to handle installing and updating mods. If you would prefer to install mods manually, instructions can also be found at the Mod Installer repository. -Required: -- Blasphemous: [Steam](https://store.steampowered.com/app/774361/Blasphemous/) - - The GOG version of Blasphemous will also work. -- Blasphemous Mod Installer: [GitHub](https://github.com/BrandenEK/Blasphemous-Mod-Installer) -- Blasphemous Modding API: [GitHub](https://github.com/BrandenEK/Blasphemous-Modding-API) -- Blasphemous Randomizer: [GitHub](https://github.com/BrandenEK/Blasphemous-Randomizer) -- Blasphemous Multiworld: [GitHub](https://github.com/BrandenEK/Blasphemous-Multiworld) +You will need the [Multiworld](https://github.com/BrandenEK/Blasphemous.Randomizer.Multiworld) mod to play an Archipelago randomizer. -Optional: -- In-game map tracker: [GitHub](https://github.com/BrandenEK/Blasphemous-Rando-Map) -- Quick Prie Dieu warp mod: [GitHub](https://github.com/BadMagic100/Blasphemous-PrieWarp) -- Boots of Pleading mod: [GitHub](https://github.com/BrandenEK/Blasphemous-Boots-of-Pleading) -- Double Jump mod: [GitHub](https://github.com/BrandenEK/Blasphemous-Double-Jump) +Some optional mods are also recommended: +- [Rando Map](https://github.com/BrandenEK/Blasphemous.Randomizer.MapTracker) +- [Boots of Pleading](https://github.com/BrandenEK/Blasphemous.BootsOfPleading) (Required if the "Boots of Pleading" option is enabled) +- [Double Jump](https://github.com/BrandenEK/Blasphemous.DoubleJump) (Required if the "Purified Hand of the Nun" option is enabled) -## Mod Installer (Recommended) +To connect to a multiworld: Choose a save file and enter the address, your name, and the password (if the server has one) into the menu. -1. Download the [Mod Installer](https://github.com/BrandenEK/Blasphemous-Mod-Installer), -and point it to your install directory for Blasphemous. - -2. Install the `Modding API`, `Randomizer`, and `Multiworld` mods. Optionally, you can also install the -`Rando Map`, `PrieWarp`, `Boots of Pleading`, and `Double Jump` mods, and set up the PopTracker pack if desired. - -3. Start Blasphemous. To verfy that the mods are working, look for a version number for both -the Randomizer and Multiworld on the title screen. - -## Manual Installation - -1. Download the [Modding API](https://github.com/BrandenEK/Blasphemous-Modding-API/releases), and follow -the [installation instructions](https://github.com/BrandenEK/Blasphemous-Modding-API#installation) on the GitHub page. - -2. After the Modding API has been installed, download the -[Randomizer](https://github.com/BrandenEK/Blasphemous-Randomizer/releases) and -[Multiworld](https://github.com/BrandenEK/Blasphemous-Multiworld/releases) archives, and extract the contents of both -into the `Modding` folder. Then, add any desired additional mods. - -3. Start Blasphemous. To verfy that the mods are working, look for a version number for both -the Randomizer and Multiworld on the title screen. - -## Connecting - -To connect to an Archipelago server, open the in-game console by pressing backslash `\` and use -the command `multiworld connect [address:port] [name] [password]`. -The port and password are both optional - if no port is provided then the default port of 38281 is used. -**Make sure to connect to the server before attempting to start a new save file.** \ No newline at end of file +After connecting, there are some commands you can use in the console, which can be opened by pressing backslash `\`: +- `ap status` - Display connection status. +- `ap say [message]` - Send a message to the server. +- `ap hint [item]` - Request a hint for an item from the server. \ No newline at end of file diff --git a/worlds/blasphemous/region_data.py b/worlds/blasphemous/region_data.py new file mode 100644 index 000000000000..b072b7931857 --- /dev/null +++ b/worlds/blasphemous/region_data.py @@ -0,0 +1,48070 @@ +# This file is programmatically generated, do not modify by hand + +regions = [ + { + "name": "Menu", + "exits": [], + "locations": [ + "QI106", + "QI107", + "QI108", + "QI109", + "QI110", + "PR101", + "QI32", + "QI33", + "QI34", + "QI35", + "QI79", + "QI80", + "QI81", + "Arena_NailManager[1000]", + "HE10", + "Arena_NailManager[3000]", + "RB34", + "Arena_NailManager[5000]", + "RB35", + "RB36", + "COMBO_1", + "COMBO_2", + "COMBO_3", + "CHARGED_1", + "CHARGED_2", + "CHARGED_3", + "RANGED_1", + "RANGED_2", + "RANGED_3", + "VERTICAL_1", + "VERTICAL_2", + "VERTICAL_3", + "LUNGE_1", + "LUNGE_2", + "LUNGE_3" + ], + "transitions": [] + }, + { + "name": "D01Z01S07", + "exits": [ + { + "logic": [], + "target": "D01Z01S07[W]" + }, + { + "logic": [], + "target": "D01Z01S07[E]" + } + ], + "locations": [ + "QI31" + ], + "transitions": [] + }, + { + "name": "D01Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D01Z01S07" + } + ], + "locations": [], + "transitions": [ + "D01Z01S01[W]" + ] + }, + { + "name": "D17Z01S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z01S07" + } + ], + "locations": [], + "transitions": [ + "D17Z01S03[E]" + ] + }, + { + "name": "D01Z01S02", + "exits": [ + { + "logic": [], + "target": "D01Z01S02[W]" + }, + { + "logic": [], + "target": "D01Z01S02[E]" + } + ], + "locations": [ + "PR14", + "RB07" + ], + "transitions": [] + }, + { + "name": "D01Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D01Z01S02" + } + ], + "locations": [], + "transitions": [ + "D01Z01S01[E]" + ] + }, + { + "name": "D01Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D01Z01S02" + } + ], + "locations": [], + "transitions": [ + "D01Z01S03[W]" + ] + }, + { + "name": "D01Z06S01", + "exits": [ + { + "logic": [], + "target": "D01Z06S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "bell" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z06S01[Santos]" + } + ], + "locations": [ + "QI101" + ], + "transitions": [] + }, + { + "name": "D01Z01S01[S]", + "exits": [ + { + "logic": [], + "target": "D01Z06S01" + } + ], + "locations": [], + "transitions": [ + "D01Z01S01[S]" + ] + }, + { + "name": "D01BZ07S01[Santos]", + "exits": [ + { + "logic": [], + "target": "D01Z06S01" + } + ], + "locations": [], + "transitions": [ + "D01BZ07S01[Santos]" + ] + }, + { + "name": "D01Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D01Z01S01[W]" + }, + { + "logic": [], + "target": "D01Z01S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z01S02[W]" + ] + }, + { + "name": "D01Z01S07[E]", + "exits": [ + { + "logic": [], + "target": "D01Z01S01[W]" + }, + { + "logic": [], + "target": "D01Z01S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z01S07[E]" + ] + }, + { + "name": "D01Z06S01[N]", + "exits": [ + { + "logic": [], + "target": "D01Z01S01[S]" + }, + { + "logic": [], + "target": "D01Z01S01[W]" + }, + { + "logic": [], + "target": "D01Z01S01[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z06S01[N]" + ] + }, + { + "name": "D01Z01S03", + "exits": [ + { + "logic": [], + "target": "D01Z01S03[W]" + }, + { + "logic": [], + "target": "D01Z01S03[E]" + } + ], + "locations": [ + "CO04", + "QI55", + "RESCUED_CHERUB_07" + ], + "transitions": [] + }, + { + "name": "D01Z01S02[E]", + "exits": [ + { + "logic": [], + "target": "D01Z01S03" + } + ], + "locations": [], + "transitions": [ + "D01Z01S02[E]" + ] + }, + { + "name": "D01Z02S01[W]", + "exits": [ + { + "logic": [], + "target": "D01Z01S03" + } + ], + "locations": [], + "transitions": [ + "D01Z02S01[W]" + ] + }, + { + "name": "D01Z02S01", + "exits": [ + { + "logic": [], + "target": "D01Z02S01[W]" + }, + { + "logic": [], + "target": "D01Z02S01[E]" + } + ], + "locations": [ + "RE02", + "RE04", + "RE10" + ], + "transitions": [] + }, + { + "name": "D01Z01S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S01" + }, + { + "logic": [ + { + "item_requirements": [ + "ceremonyItems3", + "hatchedEgg" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB06" + } + ], + "locations": [], + "transitions": [ + "D01Z01S03[E]" + ] + }, + { + "name": "D01Z02S02[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S01" + }, + { + "logic": [ + { + "item_requirements": [ + "ceremonyItems3", + "hatchedEgg" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB06" + } + ], + "locations": [], + "transitions": [ + "D01Z02S02[W]" + ] + }, + { + "name": "D01Z01S07[W]", + "exits": [ + { + "logic": [], + "target": "D17Z01S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "elderKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S03[relic]" + }, + { + "logic": [], + "target": "D17Z01S11[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z01S07[W]" + ] + }, + { + "name": "D17Z01S11[E]", + "exits": [ + { + "logic": [], + "target": "D17Z01S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "elderKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S03[relic]" + }, + { + "logic": [], + "target": "D17Z01S11" + } + ], + "locations": [], + "transitions": [ + "D17Z01S11[E]", + "D17Z01S03[W]" + ] + }, + { + "name": "D17BZ01S01[relic]", + "exits": [ + { + "logic": [], + "target": "D17Z01S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "elderKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S03[relic]" + }, + { + "logic": [], + "target": "D17Z01S11[E]" + } + ], + "locations": [], + "transitions": [ + "D17BZ01S01[relic]" + ] + }, + { + "name": "D01Z02S02", + "exits": [ + { + "logic": [], + "target": "D01Z02S02[SW]" + }, + { + "logic": [], + "target": "D01Z02S02[SE]" + }, + { + "logic": [], + "target": "D01Z02S02[W]" + }, + { + "logic": [], + "target": "D01Z02S02[E]" + }, + { + "logic": [], + "target": "D01Z02S02[NE]" + } + ], + "locations": [ + "RB01", + "QI66", + "Tirso[500]", + "Tirso[1000]", + "Tirso[2000]", + "Tirso[5000]", + "Tirso[10000]", + "QI56" + ], + "transitions": [] + }, + { + "name": "D01Z02S01[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S02" + } + ], + "locations": [], + "transitions": [ + "D01Z02S01[E]" + ] + }, + { + "name": "D01Z02S03[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S02" + } + ], + "locations": [], + "transitions": [ + "D01Z02S03[W]" + ] + }, + { + "name": "D01Z02S03[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z02S02" + } + ], + "locations": [], + "transitions": [ + "D01Z02S03[NW]" + ] + }, + { + "name": "D01Z02S04[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S02" + } + ], + "locations": [], + "transitions": [ + "D01Z02S04[W]" + ] + }, + { + "name": "D01Z02S06[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S02" + } + ], + "locations": [], + "transitions": [ + "D01Z02S06[E]" + ] + }, + { + "name": "D01Z02S06", + "exits": [ + { + "logic": [], + "target": "D01Z02S06[W]" + }, + { + "logic": [], + "target": "D01Z02S06[E]" + } + ], + "locations": [ + "Sword[D01Z02S06]" + ], + "transitions": [] + }, + { + "name": "D01Z02S02[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z02S06" + } + ], + "locations": [], + "transitions": [ + "D01Z02S02[SW]" + ] + }, + { + "name": "D01Z02S07[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S06" + } + ], + "locations": [], + "transitions": [ + "D01Z02S07[E]" + ] + }, + { + "name": "D01Z02S04", + "exits": [ + { + "logic": [], + "target": "D01Z02S04[W]" + }, + { + "logic": [], + "target": "D01Z02S04[E]" + }, + { + "logic": [], + "target": "D01Z02S04[Ossary]" + } + ], + "locations": [ + "CO43" + ], + "transitions": [] + }, + { + "name": "D01Z02S02[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z02S04" + } + ], + "locations": [], + "transitions": [ + "D01Z02S02[SE]" + ] + }, + { + "name": "D01BZ06S01[Ossary]", + "exits": [ + { + "logic": [], + "target": "D01Z02S04" + } + ], + "locations": [], + "transitions": [ + "D01BZ06S01[Ossary]" + ] + }, + { + "name": "D01Z05S01[N]", + "exits": [ + { + "logic": [], + "target": "D01Z02S04" + } + ], + "locations": [], + "transitions": [ + "D01Z05S01[N]" + ] + }, + { + "name": "D01Z02S03", + "exits": [ + { + "logic": [], + "target": "D01Z02S03[W]" + }, + { + "logic": [], + "target": "D01Z02S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatMercyBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBeatConventBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBeatGrievanceBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z02S03[church]" + }, + { + "logic": [ + { + "item_requirements": [ + "rodeGotPElevator" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_08" + } + ], + "locations": [ + "Lvdovico[500]", + "Lvdovico[1000]", + "PR03" + ], + "transitions": [] + }, + { + "name": "D01Z02S02[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S03" + } + ], + "locations": [], + "transitions": [ + "D01Z02S02[E]" + ] + }, + { + "name": "D01Z02S02[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z02S03" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "chargeBeam" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "rangedAttack" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_08" + } + ], + "locations": [], + "transitions": [ + "D01Z02S02[NE]" + ] + }, + { + "name": "D01Z02S05[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S03" + } + ], + "locations": [], + "transitions": [ + "D01Z02S05[W]" + ] + }, + { + "name": "D01BZ04S01[church]", + "exits": [ + { + "logic": [], + "target": "D01Z02S03" + } + ], + "locations": [], + "transitions": [ + "D01BZ04S01[church]" + ] + }, + { + "name": "D02Z02S11[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D01Z02S03" + } + ], + "locations": [], + "transitions": [ + "D02Z02S11[-Cherubs]" + ] + }, + { + "name": "D01Z02S05", + "exits": [ + { + "logic": [], + "target": "D01Z02S05[W]" + }, + { + "logic": [], + "target": "D01Z02S05[E]" + } + ], + "locations": [ + "CO16" + ], + "transitions": [] + }, + { + "name": "D01Z02S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z02S05" + } + ], + "locations": [], + "transitions": [ + "D01Z02S03[E]" + ] + }, + { + "name": "D01Z03S01[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S05" + } + ], + "locations": [], + "transitions": [ + "D01Z03S01[W]" + ] + }, + { + "name": "D01BZ04S01", + "exits": [ + { + "logic": [], + "target": "D01BZ04S01[church]" + } + ], + "locations": [ + "RB104", + "RB105" + ], + "transitions": [] + }, + { + "name": "D01Z02S03[church]", + "exits": [ + { + "logic": [], + "target": "D01BZ04S01" + } + ], + "locations": [], + "transitions": [ + "D01Z02S03[church]" + ] + }, + { + "name": "D01Z02S04[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S01[N]" + }, + { + "logic": [], + "target": "D01Z05S02[N]" + } + ], + "locations": [], + "transitions": [ + "D01Z02S04[E]" + ] + }, + { + "name": "D01Z05S02[N]", + "exits": [ + { + "logic": [], + "target": "D01Z05S01[N]" + }, + { + "logic": [], + "target": "D01Z05S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S03[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedDCLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S02[N]", + "D01Z05S01[S]", + "D01Z05S27[E]", + "D01Z05S01[W]" + ] + }, + { + "name": "D01BZ06S01", + "exits": [ + { + "logic": [], + "target": "D01BZ06S01[Ossary]" + }, + { + "logic": [ + { + "item_requirements": [ + "bones30" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01BZ06S01[E]" + } + ], + "locations": [ + "Undertaker[250]", + "Undertaker[500]", + "Undertaker[750]", + "Undertaker[1000]", + "Undertaker[1250]", + "Undertaker[1500]", + "Undertaker[1750]", + "Undertaker[2000]", + "Undertaker[2500]", + "Undertaker[3000]", + "Undertaker[5000]" + ], + "transitions": [] + }, + { + "name": "D01Z02S04[Ossary]", + "exits": [ + { + "logic": [], + "target": "D01BZ06S01" + } + ], + "locations": [], + "transitions": [ + "D01Z02S04[Ossary]" + ] + }, + { + "name": "D01BZ08S01[W]", + "exits": [ + { + "logic": [], + "target": "D01BZ06S01" + } + ], + "locations": [], + "transitions": [ + "D01BZ08S01[W]" + ] + }, + { + "name": "D01Z02S05[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S01[W]" + }, + { + "logic": [], + "target": "D01Z03S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z03S02[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z02S05[E]" + ] + }, + { + "name": "D01Z03S02[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S01[W]" + }, + { + "logic": [], + "target": "D01Z03S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z03S02[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S02[W]" + ] + }, + { + "name": "D01Z03S02[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z03S01[W]" + }, + { + "logic": [], + "target": "D01Z03S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z03S02[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S01[SE]" + } + ], + "locations": [ + "RB04" + ], + "transitions": [ + "D01Z03S02[SW]" + ] + }, + { + "name": "D01Z02S07", + "exits": [ + { + "logic": [], + "target": "D01Z02S07[E]" + } + ], + "locations": [ + "QI65" + ], + "transitions": [] + }, + { + "name": "D01Z02S06[W]", + "exits": [ + { + "logic": [], + "target": "D01Z02S07" + } + ], + "locations": [], + "transitions": [ + "D01Z02S06[W]" + ] + }, + { + "name": "D01BZ08S01", + "exits": [ + { + "logic": [], + "target": "D01BZ08S01[W]" + } + ], + "locations": [ + "QI201" + ], + "transitions": [] + }, + { + "name": "D01BZ06S01[E]", + "exits": [ + { + "logic": [], + "target": "D01BZ08S01" + } + ], + "locations": [], + "transitions": [ + "D01BZ06S01[E]" + ] + }, + { + "name": "D01Z03S02", + "exits": [ + { + "logic": [], + "target": "D01Z03S02[W]" + }, + { + "logic": [], + "target": "D01Z03S02[SW]" + }, + { + "logic": [], + "target": "D01Z03S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S05[N]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S02[S]" + } + ], + "locations": [ + "CO14" + ], + "transitions": [] + }, + { + "name": "D01Z03S01[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S02" + } + ], + "locations": [], + "transitions": [ + "D01Z03S01[E]" + ] + }, + { + "name": "D01Z03S01[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z03S02" + } + ], + "locations": [], + "transitions": [ + "D01Z03S01[SE]" + ] + }, + { + "name": "D01Z03S03[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S02" + } + ], + "locations": [], + "transitions": [ + "D01Z03S03[W]" + ] + }, + { + "name": "D01Z05S05[N]", + "exits": [ + { + "logic": [], + "target": "D01Z03S02" + } + ], + "locations": [], + "transitions": [ + "D01Z05S05[N]" + ] + }, + { + "name": "D01Z03S03", + "exits": [ + { + "logic": [], + "target": "D01Z03S03[W]" + }, + { + "logic": [], + "target": "D01Z03S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S03[-Cherubs]" + } + ], + "locations": [ + "CO36", + "RESCUED_CHERUB_10" + ], + "transitions": [] + }, + { + "name": "D01Z03S02[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S03" + } + ], + "locations": [], + "transitions": [ + "D01Z03S02[E]" + ] + }, + { + "name": "D01Z03S04[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z03S03" + } + ], + "locations": [], + "transitions": [ + "D01Z03S04[SW]" + ] + }, + { + "name": "D01Z03S07[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D01Z03S03" + } + ], + "locations": [], + "transitions": [ + "D01Z03S07[-Cherubs]" + ] + }, + { + "name": "D01Z05S05", + "exits": [ + { + "logic": [], + "target": "D01Z05S05[N]" + }, + { + "logic": [], + "target": "D01Z05S05[NW]" + }, + { + "logic": [], + "target": "D01Z05S05[NE]" + }, + { + "logic": [], + "target": "D01Z05S05[SW]" + }, + { + "logic": [], + "target": "D01Z05S05[E]" + } + ], + "locations": [ + "CO09", + "QI67" + ], + "transitions": [] + }, + { + "name": "D01Z03S02[S]", + "exits": [ + { + "logic": [], + "target": "D01Z05S05" + } + ], + "locations": [], + "transitions": [ + "D01Z03S02[S]" + ] + }, + { + "name": "D01Z05S04[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S05" + } + ], + "locations": [], + "transitions": [ + "D01Z05S04[E]" + ] + }, + { + "name": "D01Z05S06[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S05" + } + ], + "locations": [], + "transitions": [ + "D01Z05S06[W]" + ] + }, + { + "name": "D01Z05S09[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z05S05" + } + ], + "locations": [], + "transitions": [ + "D01Z05S09[NW]" + ] + }, + { + "name": "D01Z05S18[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S05" + } + ], + "locations": [], + "transitions": [ + "D01Z05S18[E]" + ] + }, + { + "name": "D01Z03S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S04[SW]" + }, + { + "logic": [], + "target": "D01Z03S04[W]" + }, + { + "logic": [], + "target": "D01Z03S04[SE]" + }, + { + "logic": [], + "target": "D01Z03S04[E]" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S03[E]" + ] + }, + { + "name": "D01Z03S05[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S04[SW]" + }, + { + "logic": [], + "target": "D01Z03S04[W]" + }, + { + "logic": [], + "target": "D01Z03S04[SE]" + }, + { + "logic": [], + "target": "D01Z03S04[E]" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S05[W]" + ] + }, + { + "name": "D01Z03S06[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S04[SW]" + }, + { + "logic": [], + "target": "D01Z03S04[W]" + }, + { + "logic": [], + "target": "D01Z03S04[SE]" + }, + { + "logic": [], + "target": "D01Z03S04[E]" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S06[W]" + ] + }, + { + "name": "D01Z03S07[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S04[SW]" + }, + { + "logic": [], + "target": "D01Z03S04[W]" + }, + { + "logic": [], + "target": "D01Z03S04[SE]" + }, + { + "logic": [], + "target": "D01Z03S04[E]" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S07[E]" + ] + }, + { + "name": "D02Z01S01[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z03S04[SW]" + }, + { + "logic": [], + "target": "D01Z03S04[W]" + }, + { + "logic": [], + "target": "D01Z03S04[SE]" + }, + { + "logic": [], + "target": "D01Z03S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedWOTWCave", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "openedWOTWCave", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO11" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI59" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB10" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S01[SE]", + "D01Z03S04[NW]" + ] + }, + { + "name": "D01Z03S03[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "PR16" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_13" + }, + { + "logic": [], + "target": "D01Z05S06[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S03[-Cherubs]" + ] + }, + { + "name": "D01Z05S05[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S06[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "PR16" + }, + { + "logic": [ + { + "item_requirements": [ + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_13" + } + ], + "locations": [], + "transitions": [ + "D01Z05S05[NE]" + ] + }, + { + "name": "D01Z03S07", + "exits": [ + { + "logic": [], + "target": "D01Z03S07[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S07[-Cherubs]" + } + ], + "locations": [ + "HE02", + "RESCUED_CHERUB_38" + ], + "transitions": [] + }, + { + "name": "D01Z03S04[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S07" + } + ], + "locations": [], + "transitions": [ + "D01Z03S04[W]" + ] + }, + { + "name": "D02Z01S02[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedWOTWCave" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S04[-N]" + }, + { + "logic": [], + "target": "CO11" + }, + { + "logic": [], + "target": "QI59" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB10" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI68" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + }, + { + "logic": [], + "target": "D02Z01S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_23" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S03[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S02[E]", + "D02Z01S01[W]" + ] + }, + { + "name": "D02Z01S06[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedWOTWCave" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S04[-N]" + }, + { + "logic": [], + "target": "CO11" + }, + { + "logic": [ + { + "item_requirements": [ + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI59" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB10" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI68" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S06[E]" + ] + }, + { + "name": "D02Z01S09[-CherubsL]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedWOTWCave" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S04[-N]" + }, + { + "logic": [], + "target": "CO11" + }, + { + "logic": [], + "target": "QI59" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB10" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI68" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + }, + { + "logic": [], + "target": "D02Z01S02[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S09[-CherubsL]" + ] + }, + { + "name": "D02Z01S09[-CherubsR]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedWOTWCave" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S04[-N]" + }, + { + "logic": [], + "target": "CO11" + }, + { + "logic": [ + { + "item_requirements": [ + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI59" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB10" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI68" + }, + { + "logic": [], + "target": "D02Z01S01[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S09[-CherubsR]" + ] + }, + { + "name": "D01Z03S05", + "exits": [ + { + "logic": [], + "target": "D01Z03S05[W]" + }, + { + "logic": [], + "target": "D01Z03S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z03S05[Cherubs]" + } + ], + "locations": [ + "QI06" + ], + "transitions": [] + }, + { + "name": "D01Z03S04[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z03S05" + } + ], + "locations": [], + "transitions": [ + "D01Z03S04[SE]" + ] + }, + { + "name": "D01Z04S01[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z03S05" + } + ], + "locations": [], + "transitions": [ + "D01Z04S01[NW]" + ] + }, + { + "name": "D01Z03S06", + "exits": [ + { + "logic": [], + "target": "D01Z03S06[W]" + }, + { + "logic": [], + "target": "D01Z03S06[E]" + } + ], + "locations": [ + "RB20" + ], + "transitions": [] + }, + { + "name": "D01Z03S04[E]", + "exits": [ + { + "logic": [], + "target": "D01Z03S06" + } + ], + "locations": [], + "transitions": [ + "D01Z03S04[E]" + ] + }, + { + "name": "D08Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D01Z03S06" + } + ], + "locations": [], + "transitions": [ + "D08Z01S01[W]" + ] + }, + { + "name": "D01Z03S05[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S01[NW]" + }, + { + "logic": [], + "target": "D01Z04S01[E]" + }, + { + "logic": [], + "target": "D01Z04S03[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S05[E]" + ] + }, + { + "name": "D01Z04S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S01[NW]" + }, + { + "logic": [], + "target": "D01Z04S01[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S03[E]", + "D01Z04S01[W]", + "D01Z04S17[W]", + "D01Z04S01[NE]" + ] + }, + { + "name": "D01Z04S05[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S01[NW]" + }, + { + "logic": [], + "target": "D01Z04S01[E]" + }, + { + "logic": [], + "target": "D01Z04S03[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S05[NW]" + ] + }, + { + "name": "D01Z04S05[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S01[SE]" + }, + { + "logic": [], + "target": "D01Z04S01[NW]" + }, + { + "logic": [], + "target": "D01Z04S01[E]" + }, + { + "logic": [], + "target": "D01Z04S03[E]" + }, + { + "logic": [], + "target": "D01Z04S15[N]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S05[SW]" + ] + }, + { + "name": "D01Z04S15[N]", + "exits": [ + { + "logic": [], + "target": "D01Z04S01[SE]" + }, + { + "logic": [], + "target": "D01Z04S01[NW]" + }, + { + "logic": [], + "target": "D01Z04S01[E]" + }, + { + "logic": [], + "target": "D01Z04S03[E]" + }, + { + "logic": [], + "target": "D01Z04S15[NE]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S15[N]", + "D01Z04S01[S]" + ] + }, + { + "name": "D01Z05S11", + "exits": [ + { + "logic": [], + "target": "D01Z05S11[W]" + } + ], + "locations": [ + "QI45" + ], + "transitions": [] + }, + { + "name": "D01Z03S05[Cherubs]", + "exits": [ + { + "logic": [], + "target": "D01Z05S11" + } + ], + "locations": [], + "transitions": [ + "D01Z03S05[Cherubs]" + ] + }, + { + "name": "D01Z05S10[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S11" + } + ], + "locations": [], + "transitions": [ + "D01Z05S10[NE]" + ] + }, + { + "name": "D08Z01S01", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatBridgeBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "holyWounds3", + "canBeatBridgeBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S01[E]" + } + ], + "locations": [ + "BS12", + "PR09" + ], + "transitions": [] + }, + { + "name": "D01Z03S06[E]", + "exits": [ + { + "logic": [], + "target": "D08Z01S01" + }, + { + "logic": [], + "target": "D08Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z03S06[E]" + ] + }, + { + "name": "D08Z01S02[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D08Z01S01" + }, + { + "logic": [ + { + "item_requirements": [ + "holyWounds3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S01[E]" + } + ], + "locations": [], + "transitions": [ + "D08Z01S02[-Cherubs]" + ] + }, + { + "name": "D08Z02S01[W]", + "exits": [ + { + "logic": [], + "target": "D08Z01S01" + }, + { + "logic": [ + { + "item_requirements": [ + "holyWounds3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S01[E]" + } + ], + "locations": [], + "transitions": [ + "D08Z02S01[W]" + ] + }, + { + "name": "D01Z04S05", + "exits": [ + { + "logic": [], + "target": "D01Z04S05[NW]" + }, + { + "logic": [], + "target": "D01Z04S05[SW]" + } + ], + "locations": [ + "CO30" + ], + "transitions": [] + }, + { + "name": "D01Z04S01[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S05" + } + ], + "locations": [], + "transitions": [ + "D01Z04S01[E]" + ] + }, + { + "name": "D01Z04S01[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z04S05" + } + ], + "locations": [], + "transitions": [ + "D01Z04S01[SE]" + ] + }, + { + "name": "D01Z04S06[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S15[N]" + }, + { + "logic": [], + "target": "D01Z04S15[NE]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S06[NW]" + ] + }, + { + "name": "D01Z04S06[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S15[W]" + }, + { + "logic": [], + "target": "D01Z04S15[E]" + }, + { + "logic": [], + "target": "D01Z04S15[N]" + }, + { + "logic": [], + "target": "D01Z04S15[NE]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S06[SW]" + ] + }, + { + "name": "D01Z04S08[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S15[W]" + }, + { + "logic": [], + "target": "D01Z04S15[E]" + }, + { + "logic": [], + "target": "D01Z04S15[N]" + }, + { + "logic": [], + "target": "D01Z04S15[NE]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S08[E]" + ] + }, + { + "name": "D01Z04S09[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S15[W]" + }, + { + "logic": [], + "target": "D01Z04S15[E]" + }, + { + "logic": [], + "target": "D01Z04S15[N]" + }, + { + "logic": [], + "target": "D01Z04S15[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedDCGateE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S09[W]" + }, + { + "logic": [], + "target": "D01Z04S09[C]" + }, + { + "logic": [], + "target": "D01Z04S10[SW]" + }, + { + "logic": [], + "target": "D01Z04S13[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S13[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO21" + }, + { + "logic": [], + "target": "D01Z04S18" + } + ], + "locations": [], + "transitions": [ + "D01Z04S09[E]", + "D01Z04S15[SW]", + "D01Z04S10[NW]", + "D01Z04S15[SE]", + "D01Z04S10[SE]", + "D01Z04S12[NW]", + "D01Z04S12[SE]", + "D01Z04S13[NW]", + "D01Z04S18[E]", + "D01Z04S12[W]", + "D01Z04S02[W]", + "D01Z04S13[NE]" + ] + }, + { + "name": "D01Z04S14[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S13[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "canDiveLaser", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S13[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO21" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S14[E]" + ] + }, + { + "name": "D01Z04S16[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "HardLogic" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S13[SE]" + }, + { + "logic": [], + "target": "CO21" + }, + { + "logic": [], + "target": "D01Z04S13[SW]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S16[W]" + ] + }, + { + "name": "D01Z04S07", + "exits": [ + { + "logic": [], + "target": "D01Z04S07[W]" + } + ], + "locations": [ + "PR01" + ], + "transitions": [] + }, + { + "name": "D01Z04S06[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S07" + } + ], + "locations": [], + "transitions": [ + "D01Z04S06[E]" + ] + }, + { + "name": "D01Z04S06", + "exits": [ + { + "logic": [], + "target": "D01Z04S06[E]" + }, + { + "logic": [], + "target": "D01Z04S06[NW]" + }, + { + "logic": [], + "target": "D01Z04S06[SW]" + } + ], + "locations": [ + "CO03", + "RESCUED_CHERUB_09" + ], + "transitions": [] + }, + { + "name": "D01Z04S07[W]", + "exits": [ + { + "logic": [], + "target": "D01Z04S06" + } + ], + "locations": [], + "transitions": [ + "D01Z04S07[W]" + ] + }, + { + "name": "D01Z04S15[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z04S06" + } + ], + "locations": [], + "transitions": [ + "D01Z04S15[NE]" + ] + }, + { + "name": "D01Z04S15[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S06" + } + ], + "locations": [], + "transitions": [ + "D01Z04S15[E]" + ] + }, + { + "name": "D01Z04S09[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S12[E]" + }, + { + "logic": [], + "target": "D01Z05S10[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S09[W]" + ] + }, + { + "name": "D01Z05S10[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S12[E]" + }, + { + "logic": [], + "target": "D01Z05S10[NE]" + }, + { + "logic": [], + "target": "D01Z05S10[S]" + }, + { + "logic": [], + "target": "D01Z05S09[NW]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S10[SE]", + "D01Z05S12[W]", + "D01Z05S10[W]", + "D01Z05S09[SE]" + ] + }, + { + "name": "D01BZ02S01", + "exits": [ + { + "logic": [], + "target": "D01BZ02S01[C]" + } + ], + "locations": [ + "QI58", + "RB05", + "RB09" + ], + "transitions": [] + }, + { + "name": "D01Z04S09[C]", + "exits": [ + { + "logic": [], + "target": "D01BZ02S01" + } + ], + "locations": [], + "transitions": [ + "D01Z04S09[C]" + ] + }, + { + "name": "D01Z04S11", + "exits": [ + { + "logic": [], + "target": "D01Z04S11[NE]" + } + ], + "locations": [ + "QI48" + ], + "transitions": [] + }, + { + "name": "D01Z04S10[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S11" + } + ], + "locations": [], + "transitions": [ + "D01Z04S10[SW]" + ] + }, + { + "name": "D01Z04S11[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z04S10[SW]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S11[NE]" + ] + }, + { + "name": "D01Z04S18", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatMercyBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S18[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatMercyBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S09[E]" + } + ], + "locations": [ + "BS01" + ], + "transitions": [] + }, + { + "name": "D01Z04S19[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S18" + }, + { + "logic": [], + "target": "D01Z04S18[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S19[E]" + ] + }, + { + "name": "D01Z04S14", + "exits": [ + { + "logic": [], + "target": "D01Z04S14[E]" + } + ], + "locations": [ + "CO38" + ], + "transitions": [] + }, + { + "name": "D01Z04S13[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z04S14" + } + ], + "locations": [], + "transitions": [ + "D01Z04S13[SW]" + ] + }, + { + "name": "D01Z04S16", + "exits": [ + { + "logic": [], + "target": "D01Z04S16[W]" + }, + { + "logic": [], + "target": "D01Z04S16[E]" + } + ], + "locations": [ + "RESCUED_CHERUB_33" + ], + "transitions": [] + }, + { + "name": "D01Z04S13[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z04S16" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB25" + } + ], + "locations": [], + "transitions": [ + "D01Z04S13[SE]" + ] + }, + { + "name": "D05Z02S12[W]", + "exits": [ + { + "logic": [], + "target": "D01Z04S16" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB25" + } + ], + "locations": [], + "transitions": [ + "D05Z02S12[W]" + ] + }, + { + "name": "D01Z04S08", + "exits": [ + { + "logic": [], + "target": "D01Z04S08[E]" + } + ], + "locations": [ + "RB17" + ], + "transitions": [] + }, + { + "name": "D01Z04S15[W]", + "exits": [ + { + "logic": [], + "target": "D01Z04S08" + } + ], + "locations": [], + "transitions": [ + "D01Z04S15[W]" + ] + }, + { + "name": "D01BZ02S01[C]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedDCGateE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S09[W]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + }, + { + "logic": [], + "target": "D01Z04S09[C]" + } + ], + "locations": [], + "transitions": [ + "D01BZ02S01[C]" + ] + }, + { + "name": "D01Z05S12[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedDCGateE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z04S09[W]" + }, + { + "logic": [], + "target": "D01Z04S09[E]" + }, + { + "logic": [], + "target": "D01Z04S09[C]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S12[E]" + ] + }, + { + "name": "D01Z04S16[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S12[W]" + }, + { + "logic": [], + "target": "D05Z02S12[N]" + }, + { + "logic": [], + "target": "D05Z02S04[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S16[E]" + ] + }, + { + "name": "D05Z02S04[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S12[W]" + }, + { + "logic": [], + "target": "D05Z02S12[N]" + }, + { + "logic": [], + "target": "D05Z02S04[C]" + }, + { + "logic": [], + "target": "D05Z02S03[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S04[W]", + "D05Z02S12[E]", + "D05Z02S04[E]", + "D05Z02S03[W]" + ] + }, + { + "name": "D05Z02S15[S]", + "exits": [ + { + "logic": [], + "target": "D05Z02S12[W]" + }, + { + "logic": [], + "target": "D05Z02S12[N]" + }, + { + "logic": [], + "target": "D05Z02S04[W]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S15[S]" + ] + }, + { + "name": "D01Z04S19", + "exits": [ + { + "logic": [], + "target": "D01Z04S19[W]" + }, + { + "logic": [], + "target": "D01Z04S19[E]" + } + ], + "locations": [ + "QI38" + ], + "transitions": [] + }, + { + "name": "D01Z04S18[W]", + "exits": [ + { + "logic": [], + "target": "D01Z04S19" + } + ], + "locations": [], + "transitions": [ + "D01Z04S18[W]" + ] + }, + { + "name": "D01Z05S19[E]", + "exits": [ + { + "logic": [], + "target": "D01Z04S19" + } + ], + "locations": [], + "transitions": [ + "D01Z05S19[E]" + ] + }, + { + "name": "D01Z04S19[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S19[W]" + }, + { + "logic": [], + "target": "D01Z05S19[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z04S19[W]" + ] + }, + { + "name": "D01Z05S15[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S19[W]" + }, + { + "logic": [], + "target": "D01Z05S19[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S15[SE]" + ] + }, + { + "name": "D01Z05S03[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z05S02[N]" + }, + { + "logic": [], + "target": "D01Z05S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S03[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedDCLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S03[NW]" + ] + }, + { + "name": "D01Z05S20[N]", + "exits": [ + { + "logic": [], + "target": "D01Z05S02[N]" + }, + { + "logic": [], + "target": "D01Z05S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S03[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedDCLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S20[N]" + ] + }, + { + "name": "D03Z01S01[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S02[N]" + }, + { + "logic": [], + "target": "D01Z05S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S03[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedDCLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S02[S]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S01[NE]" + ] + }, + { + "name": "D03Z01S01", + "exits": [ + { + "logic": [], + "target": "D03Z01S01[W]" + }, + { + "logic": [], + "target": "D03Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D20Z01S03[N]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S01[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S01[-Cherubs]" + } + ], + "locations": [ + "CO13" + ], + "transitions": [] + }, + { + "name": "D01Z05S02[W]", + "exits": [ + { + "logic": [], + "target": "D03Z01S01" + } + ], + "locations": [], + "transitions": [ + "D01Z05S02[W]" + ] + }, + { + "name": "D03Z01S02[E]", + "exits": [ + { + "logic": [], + "target": "D03Z01S01" + } + ], + "locations": [], + "transitions": [ + "D03Z01S02[E]" + ] + }, + { + "name": "D20Z01S03[N]", + "exits": [ + { + "logic": [], + "target": "D03Z01S01" + } + ], + "locations": [], + "transitions": [ + "D20Z01S03[N]" + ] + }, + { + "name": "D01Z05S02[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S03[NW]" + }, + { + "logic": [], + "target": "D01Z05S03[W]" + }, + { + "logic": [], + "target": "D01Z05S03[E]" + }, + { + "logic": [], + "target": "D01Z05S04[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S02[E]" + ] + }, + { + "name": "D01Z05S04[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S03[NW]" + }, + { + "logic": [], + "target": "D01Z05S03[W]" + }, + { + "logic": [], + "target": "D01Z05S03[E]" + }, + { + "logic": [], + "target": "D01Z05S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S14[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S13[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S04[W]", + "D01Z05S03[NE]", + "D01Z05S13[N]", + "D01Z05S03[S]" + ] + }, + { + "name": "D01Z05S07[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S03[NW]" + }, + { + "logic": [], + "target": "D01Z05S03[W]" + }, + { + "logic": [], + "target": "D01Z05S03[E]" + }, + { + "logic": [], + "target": "D01Z05S04[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S07[E]" + ] + }, + { + "name": "D01Z05S08[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S03[NW]" + }, + { + "logic": [], + "target": "D01Z05S03[W]" + }, + { + "logic": [], + "target": "D01Z05S03[E]" + }, + { + "logic": [], + "target": "D01Z05S04[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S08[W]" + ] + }, + { + "name": "D01Z05S20", + "exits": [ + { + "logic": [], + "target": "D01Z05S20[W]" + }, + { + "logic": [], + "target": "D01Z05S20[N]" + } + ], + "locations": [ + "RESCUED_CHERUB_15" + ], + "transitions": [] + }, + { + "name": "D01Z05S02[S]", + "exits": [ + { + "logic": [], + "target": "D01Z05S20" + } + ], + "locations": [], + "transitions": [ + "D01Z05S02[S]" + ] + }, + { + "name": "D01Z05S25[NE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S20" + } + ], + "locations": [], + "transitions": [ + "D01Z05S25[NE]" + ] + }, + { + "name": "D01Z05S05[NW]", + "exits": [ + { + "logic": [], + "target": "D01Z05S04[W]" + }, + { + "logic": [], + "target": "D01Z05S04[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S05[NW]" + ] + }, + { + "name": "D01Z05S07", + "exits": [ + { + "logic": [], + "target": "D01Z05S07[E]" + } + ], + "locations": [ + "Oil[D01Z05S07]" + ], + "transitions": [] + }, + { + "name": "D01Z05S03[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S07" + } + ], + "locations": [], + "transitions": [ + "D01Z05S03[W]" + ] + }, + { + "name": "D01Z05S08", + "exits": [ + { + "logic": [], + "target": "D01Z05S08[W]" + } + ], + "locations": [ + "QI12", + "RESCUED_CHERUB_14" + ], + "transitions": [] + }, + { + "name": "D01Z05S03[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S08" + } + ], + "locations": [], + "transitions": [ + "D01Z05S03[E]" + ] + }, + { + "name": "D01Z05S14[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canSurvivePoison3", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_12" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S03[S]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canSurvivePoison3", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S04[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S14[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S13[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S16[N]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canSurvivePoison3", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S16[N]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S14[W]" + ] + }, + { + "name": "D01Z05S16[N]", + "exits": [ + { + "logic": [], + "target": "RESCUED_CHERUB_12" + }, + { + "logic": [ + { + "item_requirements": [ + "D01Z05S14[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S13[E]" + }, + { + "logic": [], + "target": "D01Z05S21[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "shroud" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S21[Reward]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S17[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO32" + } + ], + "locations": [], + "transitions": [ + "D01Z05S16[N]", + "D01Z05S13[SW]", + "D01Z05S21[E]", + "D01Z05S16[SW]", + "D01Z05S17[W]", + "D01Z05S16[SE]" + ] + }, + { + "name": "D01Z05S05[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z05S18[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S05[SW]" + ] + }, + { + "name": "D01Z05S05[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S09[NW]" + }, + { + "logic": [], + "target": "D01Z05S10[SE]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S05[E]" + ] + }, + { + "name": "D01Z05S11[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S10[NE]" + }, + { + "logic": [], + "target": "D01Z05S10[SE]" + }, + { + "logic": [], + "target": "D01Z05S10[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S11[W]" + ] + }, + { + "name": "D01Z05S14[N]", + "exits": [ + { + "logic": [], + "target": "D01Z05S10[NE]" + }, + { + "logic": [], + "target": "D01Z05S10[SE]" + }, + { + "logic": [], + "target": "D01Z05S10[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S14[N]" + ] + }, + { + "name": "D01Z05S14", + "exits": [ + { + "logic": [], + "target": "D01Z05S14[W]" + }, + { + "logic": [], + "target": "D01Z05S14[N]" + }, + { + "logic": [], + "target": "D01Z05S14[SE]" + } + ], + "locations": [ + "RESCUED_CHERUB_11" + ], + "transitions": [] + }, + { + "name": "D01Z05S10[S]", + "exits": [ + { + "logic": [], + "target": "D01Z05S14" + } + ], + "locations": [], + "transitions": [ + "D01Z05S10[S]" + ] + }, + { + "name": "D01Z05S13[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S14" + } + ], + "locations": [], + "transitions": [ + "D01Z05S13[E]" + ] + }, + { + "name": "D01Z05S15[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S14" + } + ], + "locations": [], + "transitions": [ + "D01Z05S15[W]" + ] + }, + { + "name": "D01Z05S15", + "exits": [ + { + "logic": [], + "target": "D01Z05S15[W]" + }, + { + "logic": [], + "target": "D01Z05S15[SW]" + }, + { + "logic": [], + "target": "D01Z05S15[SE]" + } + ], + "locations": [ + "CO41" + ], + "transitions": [] + }, + { + "name": "D01Z05S14[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S15" + } + ], + "locations": [], + "transitions": [ + "D01Z05S14[SE]" + ] + }, + { + "name": "D01Z05S19[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S15" + } + ], + "locations": [], + "transitions": [ + "D01Z05S19[W]" + ] + }, + { + "name": "D01Z05S22[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S15" + } + ], + "locations": [], + "transitions": [ + "D01Z05S22[E]" + ] + }, + { + "name": "D01Z05S22", + "exits": [ + { + "logic": [], + "target": "D01Z05S22[E]" + } + ], + "locations": [ + "Lady[D01Z05S22]" + ], + "transitions": [] + }, + { + "name": "D01Z05S15[SW]", + "exits": [ + { + "logic": [], + "target": "D01Z05S22" + } + ], + "locations": [], + "transitions": [ + "D01Z05S15[SW]" + ] + }, + { + "name": "D01Z05S25[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S21[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "shroud" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S21[Reward]" + }, + { + "logic": [], + "target": "D01Z05S16[N]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S25[E]" + ] + }, + { + "name": "D01BZ05S01[Reward]", + "exits": [ + { + "logic": [], + "target": "D01Z05S21[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "shroud" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S21[Reward]" + }, + { + "logic": [], + "target": "D01Z05S16[N]" + } + ], + "locations": [], + "transitions": [ + "D01BZ05S01[Reward]" + ] + }, + { + "name": "D01BZ09S01[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S17[E]" + }, + { + "logic": [], + "target": "CO32" + }, + { + "logic": [], + "target": "D01Z05S16[N]" + } + ], + "locations": [], + "transitions": [ + "D01BZ09S01[W]" + ] + }, + { + "name": "D01Z05S17[E]", + "exits": [ + { + "logic": [], + "target": "D01BZ09S01[W]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S17[E]" + ] + }, + { + "name": "D01Z05S20[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S25[NE]" + }, + { + "logic": [], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "obscureSkipsAllowed", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [], + "target": "D03Z03S17[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S20[W]" + ] + }, + { + "name": "D01Z05S21[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S17[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S21[W]" + ] + }, + { + "name": "D01Z05S23[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "pillar", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S17[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S23[E]" + ] + }, + { + "name": "D01Z05S26[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S25[NE]" + }, + { + "logic": [], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "obscureSkipsAllowed", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [], + "target": "D03Z03S17[E]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S26[W]" + ] + }, + { + "name": "D03Z03S17[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S25[NE]" + }, + { + "logic": [], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "obscureSkipsAllowed", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogic", + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogic", + "linen", + "canAirStall", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [], + "target": "D03Z03S17[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S17[E]", + "D01Z05S25[SW]" + ] + }, + { + "name": "D20Z01S09[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D20Z01S10[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S17[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB202" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S09[E]", + "D01Z05S25[EchoesW]" + ] + }, + { + "name": "D20Z01S10[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D20Z01S09[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S25[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO44" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_22" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S17[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S11[W]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S10[W]", + "D01Z05S25[EchoesE]" + ] + }, + { + "name": "D01BZ05S01", + "exits": [ + { + "logic": [], + "target": "D01BZ05S01[Reward]" + } + ], + "locations": [ + "RB03" + ], + "transitions": [] + }, + { + "name": "D01Z05S21[Reward]", + "exits": [ + { + "logic": [], + "target": "D01BZ05S01" + } + ], + "locations": [], + "transitions": [ + "D01Z05S21[Reward]" + ] + }, + { + "name": "D01Z05S24", + "exits": [ + { + "logic": [], + "target": "D01Z05S24[W]" + }, + { + "logic": [], + "target": "D01Z05S24[E]" + } + ], + "locations": [ + "Sword[D01Z05S24]" + ], + "transitions": [] + }, + { + "name": "D01Z05S23[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S24" + } + ], + "locations": [], + "transitions": [ + "D01Z05S23[W]" + ] + }, + { + "name": "D20Z01S04[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S24" + } + ], + "locations": [], + "transitions": [ + "D20Z01S04[E]" + ] + }, + { + "name": "D01Z05S24[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedDCGateW" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S04[E]" + }, + { + "logic": [], + "target": "D20Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D01Z05S24[W]" + ] + }, + { + "name": "D20Z01S01[S]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedDCGateW" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S04[E]" + }, + { + "logic": [], + "target": "D20Z01S01[W]" + }, + { + "logic": [], + "target": "D20Z01S01[E]" + }, + { + "logic": [], + "target": "RB202" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S09[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S01[S]", + "D20Z01S04[N]", + "D20Z01S05[E]", + "D20Z01S04[W]", + "D20Z01S06[NE]", + "D20Z01S05[W]", + "D20Z01S07[NW]", + "D20Z01S06[SE]", + "D20Z01S07[SE]", + "D20Z01S09[W]", + "D20Z01S08[W]", + "D20Z01S07[NE]" + ] + }, + { + "name": "D01Z05S23", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "chalice", + "chaliceRooms3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D01Z05S23[W]" + }, + { + "logic": [], + "target": "D01Z05S23[E]" + } + ], + "locations": [ + "QI75" + ], + "transitions": [] + }, + { + "name": "D01Z05S24[E]", + "exits": [ + { + "logic": [], + "target": "D01Z05S23" + } + ], + "locations": [], + "transitions": [ + "D01Z05S24[E]" + ] + }, + { + "name": "D01Z05S25[W]", + "exits": [ + { + "logic": [], + "target": "D01Z05S23" + } + ], + "locations": [], + "transitions": [ + "D01Z05S25[W]" + ] + }, + { + "name": "D03Z03S16[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S17[W]" + }, + { + "logic": [], + "target": "D03Z03S17[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S16[E]" + ] + }, + { + "name": "D01Z05S26", + "exits": [ + { + "logic": [], + "target": "D01Z05S26[W]" + } + ], + "locations": [ + "Lady[D01Z05S26]" + ], + "transitions": [] + }, + { + "name": "D01Z05S25[SE]", + "exits": [ + { + "logic": [], + "target": "D01Z05S26" + } + ], + "locations": [], + "transitions": [ + "D01Z05S25[SE]" + ] + }, + { + "name": "D20Z01S11[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z01S10[W]" + }, + { + "logic": [], + "target": "D20Z01S13[E]" + }, + { + "logic": [], + "target": "D20Z02S12[E]" + }, + { + "logic": [], + "target": "D20Z01S14[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S11[W]", + "D20Z01S10[E]", + "D20Z01S12[E]", + "D20Z01S11[NW]", + "D20Z01S13[W]", + "D20Z01S11[NE]", + "D20Z02S12[W]", + "D20Z01S11[SE]", + "D20Z01S14[S]", + "D20Z01S13[N]" + ] + }, + { + "name": "D01Z06S01[Santos]", + "exits": [ + { + "logic": [], + "target": "D01BZ07S01[Santos]" + } + ], + "locations": [], + "transitions": [ + "D01Z06S01[Santos]" + ] + }, + { + "name": "D02Z01S01[SW]", + "exits": [ + { + "logic": [], + "target": "D02Z01S06[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S06[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO19" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_27" + } + ], + "locations": [], + "transitions": [ + "D02Z01S01[SW]" + ] + }, + { + "name": "D02Z01S02[]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO19" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S06[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S06[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "wallClimb", + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "dash", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_27" + } + ], + "locations": [], + "transitions": [ + "D02Z01S02[]" + ] + }, + { + "name": "D02Z01S08[E]", + "exits": [ + { + "logic": [], + "target": "D02Z01S06[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_27" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S06[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO19" + } + ], + "locations": [], + "transitions": [ + "D02Z01S08[E]" + ] + }, + { + "name": "D02Z01S03[SE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_23" + }, + { + "logic": [], + "target": "D02Z01S02[W]" + }, + { + "logic": [], + "target": "D02Z01S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[]" + }, + { + "logic": [], + "target": "D02Z01S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S08[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S03[SE]", + "D02Z01S02[NW]", + "D02Z02S01[E]", + "D02Z01S03[W]" + ] + }, + { + "name": "D02Z01S04[E]", + "exits": [ + { + "logic": [], + "target": "D02Z01S02[W]" + }, + { + "logic": [], + "target": "D02Z01S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_23" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S03[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S04[E]" + ] + }, + { + "name": "D02Z01S09[W]", + "exits": [ + { + "logic": [], + "target": "D02Z01S02[NE]" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_23" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S03[SE]" + }, + { + "logic": [], + "target": "D02Z01S02[W]" + }, + { + "logic": [], + "target": "D02Z01S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S02[]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S09[W]" + ] + }, + { + "name": "D02Z01S04", + "exits": [ + { + "logic": [], + "target": "D02Z01S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S04[-N]" + }, + { + "logic": [ + { + "item_requirements": [ + "fullThimble", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "fullThimble", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI68" + } + ], + "locations": [ + "QI20" + ], + "transitions": [] + }, + { + "name": "D02Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D02Z01S04" + } + ], + "locations": [], + "transitions": [ + "D02Z01S02[W]" + ] + }, + { + "name": "D02Z01S05[E]", + "exits": [ + { + "logic": [], + "target": "D02Z01S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S03[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z01S05[E]" + ] + }, + { + "name": "D02Z02S14[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D02Z01S03[SE]" + }, + { + "logic": [], + "target": "D02Z01S03[SW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S14[-Cherubs]" + ] + }, + { + "name": "D02Z01S09", + "exits": [ + { + "logic": [], + "target": "D02Z01S09[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S09[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canEnemyBounce", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S09[-CherubsR]" + } + ], + "locations": [ + "HE05" + ], + "transitions": [] + }, + { + "name": "D02Z01S02[NE]", + "exits": [ + { + "logic": [], + "target": "D02Z01S09" + } + ], + "locations": [], + "transitions": [ + "D02Z01S02[NE]" + ] + }, + { + "name": "D02Z01S05", + "exits": [ + { + "logic": [], + "target": "D02Z01S05[E]" + } + ], + "locations": [ + "QI07" + ], + "transitions": [] + }, + { + "name": "D02Z01S03[SW]", + "exits": [ + { + "logic": [], + "target": "D02Z01S05" + } + ], + "locations": [], + "transitions": [ + "D02Z01S03[SW]" + ] + }, + { + "name": "D02Z02S02[SE]", + "exits": [ + { + "logic": [], + "target": "D02Z01S03[SE]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_24" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[SW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S02[SE]", + "D02Z02S01[NW]" + ] + }, + { + "name": "D02Z02S03[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D02Z01S03[SE]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [], + "target": "D02Z02S02[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S03[-Cherubs]" + ] + }, + { + "name": "D02Z02S08[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z01S03[SE]" + }, + { + "logic": [], + "target": "D02Z02S08[W]" + }, + { + "logic": [], + "target": "D02Z02S08[C]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO42" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_31" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S08[E]", + "D02Z02S01[W]" + ] + }, + { + "name": "D02Z01S08", + "exits": [ + { + "logic": [], + "target": "D02Z01S08[E]" + } + ], + "locations": [ + "PR04" + ], + "transitions": [] + }, + { + "name": "D02Z01S04[-N]", + "exits": [ + { + "logic": [], + "target": "D02Z01S08" + } + ], + "locations": [], + "transitions": [ + "D02Z01S04[-N]" + ] + }, + { + "name": "D02Z01S06[W]", + "exits": [ + { + "logic": [], + "target": "D02Z01S08" + } + ], + "locations": [], + "transitions": [ + "D02Z01S06[W]" + ] + }, + { + "name": "D02Z02S02[-CherubsR]", + "exits": [ + { + "logic": [], + "target": "CO42" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_31" + }, + { + "logic": [], + "target": "D02Z02S08[W]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [], + "target": "D02Z02S08[C]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S02[-CherubsR]" + ] + }, + { + "name": "D02Z02S04[-CherubsL]", + "exits": [ + { + "logic": [], + "target": "D02Z02S08[W]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [], + "target": "D02Z02S08[C]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO42" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_31" + } + ], + "locations": [], + "transitions": [ + "D02Z02S04[-CherubsL]" + ] + }, + { + "name": "D02Z02S11[SE]", + "exits": [ + { + "logic": [], + "target": "D02Z02S08[W]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [], + "target": "D02Z02S08[C]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO42" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_31" + } + ], + "locations": [], + "transitions": [ + "D02Z02S11[SE]" + ] + }, + { + "name": "D02BZ02S01[C]", + "exits": [ + { + "logic": [], + "target": "D02Z02S08[W]" + }, + { + "logic": [], + "target": "D02Z02S08[E]" + }, + { + "logic": [], + "target": "D02Z02S08[C]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO42" + }, + { + "logic": [ + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_31" + } + ], + "locations": [], + "transitions": [ + "D02BZ02S01[C]" + ] + }, + { + "name": "D02Z02S03[SW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_24" + }, + { + "logic": [], + "target": "D02Z02S02[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canCrossGap11" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI46" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO29" + }, + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI08" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO01" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_25" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z02S05[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S09[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S03[SW]", + "D02Z02S02[NE]", + "D02Z02S04[SE]", + "D02Z02S02[NW]" + ] + }, + { + "name": "D02Z02S05[-CherubsL]", + "exits": [ + { + "logic": [], + "target": "RESCUED_CHERUB_24" + }, + { + "logic": [], + "target": "D02Z02S02[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[-CherubsR]" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S05[-CherubsL]" + ] + }, + { + "name": "D02Z02S05[-CherubsR]", + "exits": [ + { + "logic": [], + "target": "RESCUED_CHERUB_24" + }, + { + "logic": [], + "target": "D02Z02S02[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S02[-CherubsR]" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S05[-CherubsR]" + ] + }, + { + "name": "D02Z02S05[SW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO01" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_25" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z02S05[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S09[E]" + } + ], + "locations": [ + "RB32" + ], + "transitions": [ + "D02Z02S05[SW]" + ] + }, + { + "name": "D02Z02S05[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[-CherubsL]" + }, + { + "logic": [], + "target": "CO01" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_25" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z02S05[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[E]" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + }, + { + "logic": [], + "target": "D02Z02S09[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S05[W]" + ] + }, + { + "name": "D02Z02S09[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO01" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_25" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z02S05[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S04[E]" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S09[E]", + "D02Z02S04[W]" + ] + }, + { + "name": "D02Z02S05[SE]", + "exits": [ + { + "logic": [], + "target": "QI46" + }, + { + "logic": [], + "target": "CO29" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canCrossGap11" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "blood", + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI08" + }, + { + "logic": [], + "target": "D02Z02S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB15" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S05[SE]", + "D02Z02S03[NW]" + ] + }, + { + "name": "D02Z02S14[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S03[NE]" + }, + { + "logic": [], + "target": "QI46" + }, + { + "logic": [], + "target": "CO29" + }, + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI08" + }, + { + "logic": [], + "target": "D02Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S03[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[SE]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S14[W]" + ] + }, + { + "name": "D02Z02S04[E]", + "exits": [ + { + "logic": [], + "target": "D02Z02S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[W]" + }, + { + "logic": [], + "target": "D02Z02S05[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB15" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S04[E]" + ] + }, + { + "name": "D02Z02S04[NE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[W]" + }, + { + "logic": [], + "target": "D02Z02S05[SW]" + }, + { + "logic": [], + "target": "D02Z02S05[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB15" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S04[NE]" + ] + }, + { + "name": "D02Z02S07[E]", + "exits": [ + { + "logic": [], + "target": "D02Z02S05[E]" + }, + { + "logic": [], + "target": "RB15" + }, + { + "logic": [], + "target": "D02Z02S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[W]" + }, + { + "logic": [], + "target": "D02Z02S05[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsR]" + }, + { + "logic": [], + "target": "D02Z03S08[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z03S07[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S08[W]" + }, + { + "logic": [], + "target": "D02Z02S11" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + }, + { + "logic": [], + "target": "D02Z02S11[E]" + }, + { + "logic": [], + "target": "D02Z02S11[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S02[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S07[E]", + "D02Z02S05[NW]", + "D02Z03S01[E]", + "D02Z02S07[W]", + "D02Z03S08[E]", + "D02Z03S01[W]", + "D02Z03S08[SE]", + "D02Z03S14[W]", + "D02Z03S14[E]", + "D02Z02S11[NW]", + "D02Z03S16[W]", + "D02Z03S08[NE]", + "D02Z03S02[S]", + "D02Z03S16[N]" + ] + }, + { + "name": "D02Z02S10[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S05[E]" + }, + { + "logic": [], + "target": "D02Z02S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[W]" + }, + { + "logic": [], + "target": "D02Z02S05[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S05[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB15" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S10[W]" + ] + }, + { + "name": "D02Z02S14", + "exits": [ + { + "logic": [], + "target": "D02Z02S14[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S14[-Cherubs]" + } + ], + "locations": [ + "RB106", + "Amanecida[D02Z02S14]" + ], + "transitions": [] + }, + { + "name": "D02Z02S03[NE]", + "exits": [ + { + "logic": [], + "target": "D02Z02S14" + } + ], + "locations": [], + "transitions": [ + "D02Z02S03[NE]" + ] + }, + { + "name": "D02Z02S10", + "exits": [ + { + "logic": [], + "target": "D02Z02S10[W]" + } + ], + "locations": [ + "Oil[D02Z02S10]" + ], + "transitions": [] + }, + { + "name": "D02Z02S05[E]", + "exits": [ + { + "logic": [], + "target": "D02Z02S10" + } + ], + "locations": [], + "transitions": [ + "D02Z02S05[E]" + ] + }, + { + "name": "D02Z03S10[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S10[-Cherubs]" + ] + }, + { + "name": "D02Z02S11", + "exits": [ + { + "logic": [], + "target": "D02Z02S11[W]" + }, + { + "logic": [], + "target": "D02Z02S11[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap6" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S11[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z02S11[-Cherubs]" + } + ], + "locations": [ + "QI53", + "RESCUED_CHERUB_26" + ], + "transitions": [] + }, + { + "name": "D02Z02S06[E]", + "exits": [ + { + "logic": [], + "target": "D02Z02S11" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S06[E]" + ] + }, + { + "name": "D02Z02S08[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S11" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S08[W]" + ] + }, + { + "name": "D02Z02S12[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S11" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + }, + { + "logic": [], + "target": "D02Z02S11[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S12[W]" + ] + }, + { + "name": "D02Z02S13[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S11" + }, + { + "logic": [], + "target": "D01Z02S03[NW]" + }, + { + "logic": [], + "target": "D02Z02S11[E]" + }, + { + "logic": [], + "target": "D02Z02S11[NE]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z02S13[W]" + ] + }, + { + "name": "D02BZ02S01", + "exits": [ + { + "logic": [], + "target": "D02BZ02S01[C]" + } + ], + "locations": [ + "QI11", + "RB37", + "RB02" + ], + "transitions": [] + }, + { + "name": "D02Z02S08[C]", + "exits": [ + { + "logic": [], + "target": "D02BZ02S01" + } + ], + "locations": [], + "transitions": [ + "D02Z02S08[C]" + ] + }, + { + "name": "D02Z02S06", + "exits": [ + { + "logic": [], + "target": "D02Z02S06[E]" + } + ], + "locations": [ + "RB38" + ], + "transitions": [] + }, + { + "name": "D02Z02S11[W]", + "exits": [ + { + "logic": [], + "target": "D02Z02S06" + } + ], + "locations": [], + "transitions": [ + "D02Z02S11[W]" + ] + }, + { + "name": "D02Z02S12", + "exits": [ + { + "logic": [], + "target": "D02Z02S12[W]" + } + ], + "locations": [ + "Lady[D02Z02S12]" + ], + "transitions": [] + }, + { + "name": "D02Z02S11[E]", + "exits": [ + { + "logic": [], + "target": "D02Z02S12" + } + ], + "locations": [], + "transitions": [ + "D02Z02S11[E]" + ] + }, + { + "name": "D02Z02S13", + "exits": [ + { + "logic": [], + "target": "D02Z02S13[W]" + } + ], + "locations": [ + "HE11" + ], + "transitions": [] + }, + { + "name": "D02Z02S11[NE]", + "exits": [ + { + "logic": [], + "target": "D02Z02S13" + } + ], + "locations": [], + "transitions": [ + "D02Z02S11[NE]" + ] + }, + { + "name": "D02Z03S07[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S08[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z03S07[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S08[W]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S07[E]" + ] + }, + { + "name": "D02Z03S12[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S08[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D02Z03S07[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S08[W]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S12[E]" + ] + }, + { + "name": "D02Z03S02[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO05" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S05[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S05[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB08" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S02[W]", + "D02Z03S03[E]", + "D02Z03S05[E]", + "D02Z03S03[W]" + ] + }, + { + "name": "D02Z03S05[NE]", + "exits": [ + { + "logic": [], + "target": "CO05" + }, + { + "logic": [], + "target": "D02Z03S05[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB08" + }, + { + "logic": [], + "target": "D02Z03S02[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S05[NE]", + "D02Z03S03[NW]" + ] + }, + { + "name": "D02Z03S21", + "exits": [ + { + "logic": [], + "target": "D02Z03S21[W]" + }, + { + "logic": [], + "target": "D02Z03S21[E]" + } + ], + "locations": [ + "QI40", + "QI57" + ], + "transitions": [] + }, + { + "name": "D02Z03S02[NW]", + "exits": [ + { + "logic": [], + "target": "D02Z03S21" + } + ], + "locations": [], + "transitions": [ + "D02Z03S02[NW]" + ] + }, + { + "name": "D02Z03S20[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S21" + } + ], + "locations": [], + "transitions": [ + "D02Z03S20[E]" + ] + }, + { + "name": "D02Z03S13", + "exits": [ + { + "logic": [], + "target": "D02Z03S13[W]" + } + ], + "locations": [ + "Sword[D02Z03S13]" + ], + "transitions": [] + }, + { + "name": "D02Z03S02[NE]", + "exits": [ + { + "logic": [], + "target": "D02Z03S13" + } + ], + "locations": [], + "transitions": [ + "D02Z03S02[NE]" + ] + }, + { + "name": "D02Z03S02[N]", + "exits": [ + { + "logic": [], + "target": "D02Z03S11[S]" + }, + { + "logic": [], + "target": "D02Z03S11[W]" + }, + { + "logic": [], + "target": "D02Z03S11[NW]" + }, + { + "logic": [], + "target": "D02Z03S10[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S02[N]" + ] + }, + { + "name": "D02Z03S10[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S11[S]" + }, + { + "logic": [], + "target": "D02Z03S11[W]" + }, + { + "logic": [], + "target": "D02Z03S11[NW]" + }, + { + "logic": [], + "target": "D02Z03S10[-W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S10[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S10[W]", + "D02Z03S11[E]", + "D02Z03S22[W]", + "D02Z03S11[NE]" + ] + }, + { + "name": "D02Z03S15[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S11[S]" + }, + { + "logic": [], + "target": "D02Z03S11[W]" + }, + { + "logic": [], + "target": "D02Z03S11[NW]" + }, + { + "logic": [], + "target": "D02Z03S10[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S15[E]" + ] + }, + { + "name": "D02Z03S19[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S11[S]" + }, + { + "logic": [], + "target": "D02Z03S11[W]" + }, + { + "logic": [], + "target": "D02Z03S11[NW]" + }, + { + "logic": [], + "target": "D02Z03S10[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S19[E]" + ] + }, + { + "name": "D02Z03S07[N]", + "exits": [ + { + "logic": [], + "target": "D02Z03S05[S]" + }, + { + "logic": [], + "target": "D02Z03S05[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB08" + }, + { + "logic": [], + "target": "D02Z03S02[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S07[N]" + ] + }, + { + "name": "D02Z03S11[S]", + "exits": [ + { + "logic": [], + "target": "D02Z03S02[W]" + }, + { + "logic": [], + "target": "D02Z03S02[NW]" + }, + { + "logic": [], + "target": "D02Z03S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedConventLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S02[N]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S11[S]" + ] + }, + { + "name": "D02Z03S13[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S02[W]" + }, + { + "logic": [], + "target": "D02Z03S02[NW]" + }, + { + "logic": [], + "target": "D02Z03S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedConventLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S02[N]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S13[W]" + ] + }, + { + "name": "D02Z03S21[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S02[W]" + }, + { + "logic": [], + "target": "D02Z03S02[NW]" + }, + { + "logic": [], + "target": "D02Z03S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedConventLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S02[N]" + }, + { + "logic": [], + "target": "D02Z02S07[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S21[E]" + ] + }, + { + "name": "D02Z03S07", + "exits": [ + { + "logic": [], + "target": "D02Z03S07[W]" + }, + { + "logic": [], + "target": "D02Z03S07[NWW]" + }, + { + "logic": [], + "target": "D02Z03S07[NW]" + }, + { + "logic": [], + "target": "D02Z03S07[N]" + }, + { + "logic": [], + "target": "D02Z03S07[E]" + } + ], + "locations": [ + "CO15" + ], + "transitions": [] + }, + { + "name": "D02Z03S05[S]", + "exits": [ + { + "logic": [], + "target": "D02Z03S07" + } + ], + "locations": [], + "transitions": [ + "D02Z03S05[S]" + ] + }, + { + "name": "D02Z03S06[S]", + "exits": [ + { + "logic": [], + "target": "D02Z03S07" + } + ], + "locations": [], + "transitions": [ + "D02Z03S06[S]" + ] + }, + { + "name": "D02Z03S08[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S07" + } + ], + "locations": [], + "transitions": [ + "D02Z03S08[W]" + ] + }, + { + "name": "D02Z03S17[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S07" + } + ], + "locations": [], + "transitions": [ + "D02Z03S17[E]" + ] + }, + { + "name": "D02Z03S24[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S07" + } + ], + "locations": [], + "transitions": [ + "D02Z03S24[E]" + ] + }, + { + "name": "D02Z03S06[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S18[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S18[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "redWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB18" + }, + { + "logic": [], + "target": "D02Z03S06[S]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S06[W]", + "D02Z03S18[SE]" + ] + }, + { + "name": "D02Z03S09[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S18[NW]" + }, + { + "logic": [], + "target": "D02Z03S18[NE]" + }, + { + "logic": [], + "target": "D02Z03S06[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S09[W]" + ] + }, + { + "name": "D02Z03S23[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S18[NW]" + }, + { + "logic": [], + "target": "D02Z03S18[NE]" + }, + { + "logic": [], + "target": "D02Z03S06[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S23[E]" + ] + }, + { + "name": "D02Z03S17", + "exits": [ + { + "logic": [], + "target": "D02Z03S17[E]" + } + ], + "locations": [ + "RB24" + ], + "transitions": [] + }, + { + "name": "D02Z03S07[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S17" + } + ], + "locations": [], + "transitions": [ + "D02Z03S07[W]" + ] + }, + { + "name": "D02Z03S07[NWW]", + "exits": [ + { + "logic": [], + "target": "D02Z03S24[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S07[NWW]" + ] + }, + { + "name": "D02Z03S07[NW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "redWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB18" + }, + { + "logic": [], + "target": "D02Z03S06[W]" + }, + { + "logic": [], + "target": "D02Z03S06[S]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S07[NW]" + ] + }, + { + "name": "D02Z03S12", + "exits": [ + { + "logic": [], + "target": "D02Z03S12[E]" + } + ], + "locations": [ + "HE03" + ], + "transitions": [] + }, + { + "name": "D02Z03S08[SW]", + "exits": [ + { + "logic": [], + "target": "D02Z03S12" + } + ], + "locations": [], + "transitions": [ + "D02Z03S08[SW]" + ] + }, + { + "name": "D02Z03S20", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatConventBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S20[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatConventBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S20[E]" + } + ], + "locations": [ + "BS03" + ], + "transitions": [] + }, + { + "name": "D02Z03S09[E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S20" + }, + { + "logic": [], + "target": "D02Z03S20[W]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S09[E]" + ] + }, + { + "name": "D02Z03S21[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S20" + }, + { + "logic": [], + "target": "D02Z03S20[E]" + } + ], + "locations": [], + "transitions": [ + "D02Z03S21[W]" + ] + }, + { + "name": "D09Z01S06", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "peaksKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S06[-E]" + }, + { + "logic": [], + "target": "D09Z01S06[E]" + } + ], + "locations": [ + "RESCUED_CHERUB_05" + ], + "transitions": [] + }, + { + "name": "D02Z03S10[-W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S06" + } + ], + "locations": [], + "transitions": [ + "D02Z03S10[-W]" + ] + }, + { + "name": "D09Z01S04[W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S06" + } + ], + "locations": [], + "transitions": [ + "D09Z01S04[W]" + ] + }, + { + "name": "D02Z03S15", + "exits": [ + { + "logic": [], + "target": "D02Z03S15[E]" + } + ], + "locations": [ + "Lady[D02Z03S15]" + ], + "transitions": [] + }, + { + "name": "D02Z03S11[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S15" + } + ], + "locations": [], + "transitions": [ + "D02Z03S11[W]" + ] + }, + { + "name": "D02Z03S19", + "exits": [ + { + "logic": [], + "target": "D02Z03S19[E]" + } + ], + "locations": [ + "QI61" + ], + "transitions": [] + }, + { + "name": "D02Z03S11[NW]", + "exits": [ + { + "logic": [], + "target": "D02Z03S19" + } + ], + "locations": [], + "transitions": [ + "D02Z03S11[NW]" + ] + }, + { + "name": "D09Z01S06[-E]", + "exits": [ + { + "logic": [], + "target": "D02Z03S10[W]" + }, + { + "logic": [], + "target": "D02Z03S10[-W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D02Z03S10[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S06[-E]" + ] + }, + { + "name": "D02Z03S23", + "exits": [ + { + "logic": [], + "target": "D02Z03S23[E]" + } + ], + "locations": [ + "RB107" + ], + "transitions": [] + }, + { + "name": "D02Z03S18[NW]", + "exits": [ + { + "logic": [], + "target": "D02Z03S23" + } + ], + "locations": [], + "transitions": [ + "D02Z03S18[NW]" + ] + }, + { + "name": "D02Z03S09", + "exits": [ + { + "logic": [], + "target": "D02Z03S09[W]" + }, + { + "logic": [], + "target": "D02Z03S09[E]" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D02Z03S18[NE]", + "exits": [ + { + "logic": [], + "target": "D02Z03S09" + } + ], + "locations": [], + "transitions": [ + "D02Z03S18[NE]" + ] + }, + { + "name": "D02Z03S20[W]", + "exits": [ + { + "logic": [], + "target": "D02Z03S09" + } + ], + "locations": [], + "transitions": [ + "D02Z03S20[W]" + ] + }, + { + "name": "D03Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D03Z01S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S06[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S01[W]" + ] + }, + { + "name": "D03Z01S06[E]", + "exits": [ + { + "logic": [], + "target": "D03Z01S06" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S02[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S06[E]", + "D03Z01S02[W]" + ] + }, + { + "name": "D03Z01S01[S]", + "exits": [ + { + "logic": [], + "target": "D20Z01S03[W]" + }, + { + "logic": [], + "target": "D20Z01S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S01[S]" + ] + }, + { + "name": "D20Z01S02[E]", + "exits": [ + { + "logic": [], + "target": "D20Z01S03[W]" + }, + { + "logic": [], + "target": "D20Z01S03[N]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S02[E]" + ] + }, + { + "name": "D03Z01S01[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D20Z01S01[W]" + }, + { + "logic": [], + "target": "D20Z01S01[E]" + }, + { + "logic": [], + "target": "D20Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S01[-Cherubs]" + ] + }, + { + "name": "D03Z02S15[E]", + "exits": [ + { + "logic": [], + "target": "D20Z01S01[W]" + }, + { + "logic": [], + "target": "D20Z01S01[E]" + }, + { + "logic": [], + "target": "D20Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S15[E]" + ] + }, + { + "name": "D20Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D20Z01S01[W]" + }, + { + "logic": [], + "target": "D20Z01S01[E]" + }, + { + "logic": [], + "target": "D20Z01S01[S]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S02[W]" + ] + }, + { + "name": "D03Z01S06", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatPerpetua" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S06[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatPerpetua" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[E]" + } + ], + "locations": [ + "RB13", + "QI14" + ], + "transitions": [] + }, + { + "name": "D03Z01S03[E]", + "exits": [ + { + "logic": [], + "target": "D03Z01S06" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[SW]" + }, + { + "logic": [], + "target": "D03Z01S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestR]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastR]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI47" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB22" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_16" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatJondoBoss", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "Amanecida[D03Z01S03]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[E]", + "D03Z01S06[W]" + ] + }, + { + "name": "D03Z01S04", + "exits": [ + { + "logic": [], + "target": "D03Z01S04[NW]" + }, + { + "logic": [], + "target": "D03Z01S04[E]" + } + ], + "locations": [ + "QI63" + ], + "transitions": [] + }, + { + "name": "D03Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D03Z01S04" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[W]" + ] + }, + { + "name": "D03Z01S05[E]", + "exits": [ + { + "logic": [], + "target": "D03Z01S04" + } + ], + "locations": [], + "transitions": [ + "D03Z01S05[E]" + ] + }, + { + "name": "D03Z02S10", + "exits": [ + { + "logic": [], + "target": "D03Z02S10[W]" + }, + { + "logic": [], + "target": "D03Z02S10[N]" + }, + { + "logic": [], + "target": "D03Z02S10[S]" + }, + { + "logic": [], + "target": "D03Z02S10[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S10[-Cherubs]" + } + ], + "locations": [ + "RESCUED_CHERUB_17" + ], + "transitions": [] + }, + { + "name": "D03Z01S03[SW]", + "exits": [ + { + "logic": [], + "target": "D03Z02S10" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[SW]" + ] + }, + { + "name": "D03Z01S03[-WestL]", + "exits": [ + { + "logic": [], + "target": "D03Z02S10" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[-WestL]" + ] + }, + { + "name": "D03Z02S02[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S10" + } + ], + "locations": [], + "transitions": [ + "D03Z02S02[W]" + ] + }, + { + "name": "D03Z02S09[N]", + "exits": [ + { + "logic": [], + "target": "D03Z02S10" + } + ], + "locations": [], + "transitions": [ + "D03Z02S09[N]" + ] + }, + { + "name": "D03Z02S13[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S10" + } + ], + "locations": [], + "transitions": [ + "D03Z02S13[E]" + ] + }, + { + "name": "D03Z02S01", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "PR10" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[SE]" + } + ], + "locations": [ + "CO08" + ], + "transitions": [] + }, + { + "name": "D03Z01S03[SE]", + "exits": [ + { + "logic": [], + "target": "D03Z02S01" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestR]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastR]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI47" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB22" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_16" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatJondoBoss", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "Amanecida[D03Z01S03]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[SE]", + "D03Z02S01[N]" + ] + }, + { + "name": "D03Z01S03[-EastR]", + "exits": [ + { + "logic": [], + "target": "D03Z02S01" + }, + { + "logic": [], + "target": "PR10" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[-EastR]" + ] + }, + { + "name": "D03Z02S02[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S01" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[W]" + }, + { + "logic": [], + "target": "D03Z02S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S02[E]", + "D03Z02S01[W]" + ] + }, + { + "name": "D03Z01S03[-WestR]", + "exits": [ + { + "logic": [], + "target": "D03Z02S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[E]" + }, + { + "logic": [], + "target": "D03Z02S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[-WestR]" + ] + }, + { + "name": "D03Z01S03[-EastL]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[E]" + }, + { + "logic": [], + "target": "D03Z02S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S03[-EastL]" + ] + }, + { + "name": "D03Z02S03[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S01[NL]" + }, + { + "logic": [ + { + "item_requirements": [ + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "boots" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO33" + } + ], + "locations": [], + "transitions": [ + "D03Z02S03[N]", + "D03Z02S02[S]", + "D03Z02S04[NW]", + "D03Z02S03[SE2]" + ] + }, + { + "name": "D03Z02S10[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S02[E]" + }, + { + "logic": [], + "target": "D03Z02S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S10[E]" + ] + }, + { + "name": "D03Z01S04[NW]", + "exits": [ + { + "logic": [], + "target": "D03Z01S05[E]" + }, + { + "logic": [], + "target": "D17Z01S07[SE]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S04[NW]" + ] + }, + { + "name": "D17Z01S07[SE]", + "exits": [ + { + "logic": [], + "target": "D03Z01S05[E]" + }, + { + "logic": [], + "target": "D17Z01S07[SW]" + }, + { + "logic": [], + "target": "D17Z01S07[N]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S07[SE]", + "D03Z01S05[W]", + "D17Z01S06[E]", + "D17Z01S07[W]", + "D17Z01S09[E]", + "D17Z01S07[NW]" + ] + }, + { + "name": "D03Z01S04[E]", + "exits": [ + { + "logic": [], + "target": "D03Z01S03[W]" + }, + { + "logic": [], + "target": "D03Z01S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestR]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastL]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI47" + }, + { + "logic": [], + "target": "RB22" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_16" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatJondoBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "Amanecida[D03Z01S03]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[E]" + }, + { + "logic": [], + "target": "D03Z01S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastR]" + } + ], + "locations": [], + "transitions": [ + "D03Z01S04[E]" + ] + }, + { + "name": "D03Z02S10[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[W]" + }, + { + "logic": [], + "target": "D03Z01S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-WestR]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastL]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI47" + }, + { + "logic": [], + "target": "RB22" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_16" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatJondoBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "Amanecida[D03Z01S03]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[E]" + }, + { + "logic": [], + "target": "D03Z01S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z01S03[-EastR]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S10[N]" + ] + }, + { + "name": "D17Z01S04[S]", + "exits": [ + { + "logic": [], + "target": "D17Z01S07[SW]" + }, + { + "logic": [], + "target": "D17Z01S07[SE]" + }, + { + "logic": [], + "target": "D17Z01S07[N]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S04[S]" + ] + }, + { + "name": "D17Z01S08[E]", + "exits": [ + { + "logic": [], + "target": "D17Z01S07[SW]" + }, + { + "logic": [], + "target": "D17Z01S07[SE]" + }, + { + "logic": [], + "target": "D17Z01S07[N]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S08[E]" + ] + }, + { + "name": "D03Z02S05[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[W]" + }, + { + "logic": [], + "target": "D03Z02S03[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S01[NL]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_18" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S04[NE]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S05[W]", + "D03Z02S03[E]" + ] + }, + { + "name": "D03Z02S06[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S03[SW]" + }, + { + "logic": [], + "target": "D03Z02S03[SE]" + }, + { + "logic": [], + "target": "D03Z03S01[NL]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S06[W]" + ] + }, + { + "name": "D03Z02S07[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S03[SW]" + }, + { + "logic": [], + "target": "D03Z02S03[SE]" + }, + { + "logic": [], + "target": "D03Z03S01[NL]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S07[E]" + ] + }, + { + "name": "D03Z02S07[N]", + "exits": [ + { + "logic": [], + "target": "D03Z02S03[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeJondoBellW", + "brokeJondoBellE", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S01[NL]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S07[N]" + ] + }, + { + "name": "D03Z03S01[NL]", + "exits": [ + { + "logic": [], + "target": "D03Z02S03[SW]" + }, + { + "logic": [], + "target": "D03Z02S03[SE]" + }, + { + "logic": [], + "target": "D03Z03S12[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S01[NL]", + "D03Z02S03[SSL]", + "D03Z02S03[SSC]", + "D03Z02S03[SSR]", + "D03Z03S01[NR]" + ] + }, + { + "name": "D03Z02S07", + "exits": [ + { + "logic": [], + "target": "D03Z02S07[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D03Z02S03[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S07[E]" + }, + { + "logic": [], + "target": "D03Z02S07[N]" + } + ], + "locations": [ + "CO07" + ], + "transitions": [] + }, + { + "name": "D03Z02S03[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S07" + } + ], + "locations": [], + "transitions": [ + "D03Z02S03[W]" + ] + }, + { + "name": "D03Z02S03[SW]", + "exits": [ + { + "logic": [], + "target": "D03Z02S07" + } + ], + "locations": [], + "transitions": [ + "D03Z02S03[SW]" + ] + }, + { + "name": "D03Z02S08[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S07" + } + ], + "locations": [], + "transitions": [ + "D03Z02S08[E]" + ] + }, + { + "name": "D03Z02S04[NE]", + "exits": [ + { + "logic": [], + "target": "RESCUED_CHERUB_18" + }, + { + "logic": [], + "target": "D03Z02S04[S]" + }, + { + "logic": [], + "target": "CO33" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "HE06" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap2", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_37" + }, + { + "logic": [], + "target": "D03Z02S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap2", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S11[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S04[NE]", + "D03Z02S05[S]", + "D03Z02S11[W]", + "D03Z02S05[E]" + ] + }, + { + "name": "D03Z02S06[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S04[NE]" + }, + { + "logic": [], + "target": "D03Z02S04[S]" + }, + { + "logic": [], + "target": "CO33" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S03[N]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S06[N]" + ] + }, + { + "name": "D03Z02S06", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D03Z02S03[SE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S06[W]" + }, + { + "logic": [], + "target": "D03Z02S06[N]" + } + ], + "locations": [ + "QI19" + ], + "transitions": [] + }, + { + "name": "D03Z02S03[SE]", + "exits": [ + { + "logic": [], + "target": "D03Z02S06" + } + ], + "locations": [], + "transitions": [ + "D03Z02S03[SE]" + ] + }, + { + "name": "D03Z02S04[S]", + "exits": [ + { + "logic": [], + "target": "D03Z02S06" + } + ], + "locations": [], + "transitions": [ + "D03Z02S04[S]" + ] + }, + { + "name": "D03Z03S12[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S01[NL]" + }, + { + "logic": [], + "target": "D03Z03S02" + } + ], + "locations": [], + "transitions": [ + "D03Z03S12[W]", + "D03Z03S01[S]", + "D03Z03S18[E]", + "D03Z03S01[W]", + "D03Z03S02[W]", + "D03Z03S12[E]" + ] + }, + { + "name": "D03Z02S15[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S11[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "preciseSkipsAllowed", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "HE06" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_37" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "preciseSkipsAllowed", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S04[NE]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S15[W]" + ] + }, + { + "name": "D03Z02S07[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S08[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI41" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[S]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S07[W]" + ] + }, + { + "name": "D03Z02S09[S]", + "exits": [ + { + "logic": [], + "target": "QI41" + }, + { + "logic": [], + "target": "D03Z02S09[N]" + }, + { + "logic": [], + "target": "D03Z02S08[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S09[S]", + "D03Z02S08[N]", + "D03Z02S14[E]", + "D03Z02S08[W]" + ] + }, + { + "name": "D03Z02S10[S]", + "exits": [ + { + "logic": [], + "target": "D03Z02S09[N]" + }, + { + "logic": [], + "target": "D03Z02S09[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S10[S]" + ] + }, + { + "name": "D03Z02S10[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D03Z02S09[N]" + }, + { + "logic": [], + "target": "D03Z02S09[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S10[-Cherubs]" + ] + }, + { + "name": "D03Z02S12[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S09[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S09[S]" + } + ], + "locations": [], + "transitions": [ + "D03Z02S12[E]" + ] + }, + { + "name": "D03Z02S12", + "exits": [ + { + "logic": [], + "target": "D03Z02S12[E]" + } + ], + "locations": [ + "QI52" + ], + "transitions": [] + }, + { + "name": "D03Z02S09[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S12" + } + ], + "locations": [], + "transitions": [ + "D03Z02S09[W]" + ] + }, + { + "name": "D03Z02S13[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D03Z02S12" + } + ], + "locations": [], + "transitions": [ + "D03Z02S13[-Cherubs]" + ] + }, + { + "name": "D03Z02S13", + "exits": [ + { + "logic": [], + "target": "D03Z02S13[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z02S13[-Cherubs]" + } + ], + "locations": [ + "RB28" + ], + "transitions": [] + }, + { + "name": "D03Z02S10[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S13" + } + ], + "locations": [], + "transitions": [ + "D03Z02S10[W]" + ] + }, + { + "name": "D03Z02S15", + "exits": [ + { + "logic": [], + "target": "D03Z02S15[W]" + }, + { + "logic": [], + "target": "D03Z02S15[E]" + } + ], + "locations": [ + "QI103" + ], + "transitions": [] + }, + { + "name": "D03Z02S11[E]", + "exits": [ + { + "logic": [], + "target": "D03Z02S15" + } + ], + "locations": [], + "transitions": [ + "D03Z02S11[E]" + ] + }, + { + "name": "D20Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D03Z02S15" + } + ], + "locations": [], + "transitions": [ + "D20Z01S01[W]" + ] + }, + { + "name": "D03Z03S02[NE]", + "exits": [ + { + "logic": [], + "target": "D03Z03S02" + }, + { + "logic": [], + "target": "D03Z03S12[W]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S02[NE]", + "D03Z03S14[W]" + ] + }, + { + "name": "D03Z03S02[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S03[W]" + }, + { + "logic": [], + "target": "D03Z03S04[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D03Z03S04[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S03[SE]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S02[E]" + ] + }, + { + "name": "D03Z03S04[NW]", + "exits": [ + { + "logic": [], + "target": "D03Z03S03[W]" + }, + { + "logic": [], + "target": "D03Z03S04[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[NW]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D03Z03S04[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S03[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S04[NW]", + "D03Z03S03[NE]" + ] + }, + { + "name": "D03Z03S04[SW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D03Z03S04[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S03[SE]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S04[SW]" + ] + }, + { + "name": "D03Z03S02", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S02[NE]" + }, + { + "logic": [], + "target": "D03Z03S02[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S12[W]" + } + ], + "locations": [ + "QI44" + ], + "transitions": [] + }, + { + "name": "D03Z03S03[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S02" + } + ], + "locations": [], + "transitions": [ + "D03Z03S03[W]" + ] + }, + { + "name": "D03Z03S03[SE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[NW]" + }, + { + "logic": [], + "target": "D03Z03S04[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S03[SE]" + ] + }, + { + "name": "D03Z03S05[NW]", + "exits": [ + { + "logic": [], + "target": "D03Z03S04[NW]" + }, + { + "logic": [], + "target": "D03Z03S04[SW]" + }, + { + "logic": [], + "target": "D03Z03S05[NE]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S05[NW]", + "D03Z03S04[NE]" + ] + }, + { + "name": "D03Z03S05[SW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[NW]" + }, + { + "logic": [], + "target": "D03Z03S04[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S07[NE]" + }, + { + "logic": [], + "target": "D03Z03S07[E]" + }, + { + "logic": [], + "target": "D03Z03S07[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S19[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S05[SW]", + "D03Z03S04[E]", + "D03Z03S07[SW]", + "D03Z03S05[SE]" + ] + }, + { + "name": "D03Z03S13[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S04[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S04[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[SW]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S13[W]" + ] + }, + { + "name": "D03Z03S06[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S05[NW]" + }, + { + "logic": [], + "target": "D03Z03S05[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S05[SW]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S06[W]" + ] + }, + { + "name": "D03Z03S13", + "exits": [ + { + "logic": [], + "target": "D03Z03S13[W]" + } + ], + "locations": [ + "Oil[D03Z03S13]" + ], + "transitions": [] + }, + { + "name": "D03Z03S04[SE]", + "exits": [ + { + "logic": [], + "target": "D03Z03S13" + } + ], + "locations": [], + "transitions": [ + "D03Z03S04[SE]" + ] + }, + { + "name": "D03Z03S10", + "exits": [ + { + "logic": [], + "target": "D03Z03S10[E]" + } + ], + "locations": [ + "QI13" + ], + "transitions": [] + }, + { + "name": "D03Z03S04[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D03Z03S10" + } + ], + "locations": [], + "transitions": [ + "D03Z03S04[-Cherubs]" + ] + }, + { + "name": "D03Z03S09[SW]", + "exits": [ + { + "logic": [], + "target": "D03Z03S10" + } + ], + "locations": [], + "transitions": [ + "D03Z03S09[SW]" + ] + }, + { + "name": "D03Z03S06", + "exits": [ + { + "logic": [], + "target": "D03Z03S06[W]" + } + ], + "locations": [ + "CO12", + "RE07", + "RESCUED_CHERUB_19" + ], + "transitions": [] + }, + { + "name": "D03Z03S05[NE]", + "exits": [ + { + "logic": [], + "target": "D03Z03S06" + } + ], + "locations": [], + "transitions": [ + "D03Z03S05[NE]" + ] + }, + { + "name": "D03Z03S08[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S07[NE]" + }, + { + "logic": [], + "target": "D03Z03S07[E]" + }, + { + "logic": [], + "target": "D03Z03S07[S]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + }, + { + "logic": [], + "target": "D03Z03S19[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S08[W]" + ] + }, + { + "name": "D03Z03S09[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S07[NE]" + }, + { + "logic": [], + "target": "D03Z03S07[E]" + }, + { + "logic": [], + "target": "D03Z03S07[S]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S19[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S09[N]" + ] + }, + { + "name": "D03Z03S11[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S07[NE]" + }, + { + "logic": [], + "target": "D03Z03S07[E]" + }, + { + "logic": [], + "target": "D03Z03S07[S]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S19[E]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S11[W]" + ] + }, + { + "name": "D03Z03S19[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S07[NE]" + }, + { + "logic": [], + "target": "D03Z03S07[E]" + }, + { + "logic": [], + "target": "D03Z03S07[S]" + }, + { + "logic": [], + "target": "D03Z03S05[SW]" + } + ], + "locations": [], + "transitions": [ + "D03Z03S19[E]", + "D03Z03S07[NW]" + ] + }, + { + "name": "D03Z03S08", + "exits": [ + { + "logic": [], + "target": "D03Z03S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S08[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S08[-CherubsR]" + } + ], + "locations": [ + "QI10", + "RESCUED_CHERUB_21" + ], + "transitions": [] + }, + { + "name": "D03Z03S07[NE]", + "exits": [ + { + "logic": [], + "target": "D03Z03S08" + } + ], + "locations": [], + "transitions": [ + "D03Z03S07[NE]" + ] + }, + { + "name": "D03Z03S11", + "exits": [ + { + "logic": [], + "target": "D03Z03S11[W]" + }, + { + "logic": [], + "target": "D03Z03S11[E]" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D03Z03S07[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S11" + } + ], + "locations": [], + "transitions": [ + "D03Z03S07[E]" + ] + }, + { + "name": "D03Z03S08[-CherubsL]", + "exits": [ + { + "logic": [], + "target": "D03Z03S11" + } + ], + "locations": [], + "transitions": [ + "D03Z03S08[-CherubsL]" + ] + }, + { + "name": "D03Z03S08[-CherubsR]", + "exits": [ + { + "logic": [], + "target": "D03Z03S11" + } + ], + "locations": [], + "transitions": [ + "D03Z03S08[-CherubsR]" + ] + }, + { + "name": "D03Z03S15[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S11" + } + ], + "locations": [], + "transitions": [ + "D03Z03S15[W]" + ] + }, + { + "name": "D03Z03S09", + "exits": [ + { + "logic": [], + "target": "D03Z03S09[SW]" + }, + { + "logic": [], + "target": "D03Z03S09[N]" + } + ], + "locations": [ + "RESCUED_CHERUB_20" + ], + "transitions": [] + }, + { + "name": "D03Z03S07[S]", + "exits": [ + { + "logic": [], + "target": "D03Z03S09" + } + ], + "locations": [], + "transitions": [ + "D03Z03S07[S]" + ] + }, + { + "name": "D03Z03S10[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S09" + } + ], + "locations": [], + "transitions": [ + "D03Z03S10[E]" + ] + }, + { + "name": "D03Z03S15", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatGrievanceBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S15[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatGrievanceBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D03Z03S15[E]" + } + ], + "locations": [ + "BS04" + ], + "transitions": [] + }, + { + "name": "D03Z03S11[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S15" + } + ], + "locations": [], + "transitions": [ + "D03Z03S11[E]" + ] + }, + { + "name": "D03Z03S16[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S15" + } + ], + "locations": [], + "transitions": [ + "D03Z03S16[W]" + ] + }, + { + "name": "D03Z03S16", + "exits": [ + { + "logic": [], + "target": "D03Z03S16[W]" + }, + { + "logic": [], + "target": "D03Z03S16[E]" + } + ], + "locations": [ + "QI39" + ], + "transitions": [] + }, + { + "name": "D03Z03S15[E]", + "exits": [ + { + "logic": [], + "target": "D03Z03S16" + } + ], + "locations": [], + "transitions": [ + "D03Z03S15[E]" + ] + }, + { + "name": "D03Z03S17[W]", + "exits": [ + { + "logic": [], + "target": "D03Z03S16" + } + ], + "locations": [], + "transitions": [ + "D03Z03S17[W]" + ] + }, + { + "name": "D04Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D08Z02S01[W]" + }, + { + "logic": [], + "target": "D08Z02S01[E]" + }, + { + "logic": [], + "target": "D08Z02S02[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z01S01[W]" + ] + }, + { + "name": "D08Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D08Z02S01[W]" + }, + { + "logic": [], + "target": "D08Z02S01[E]" + }, + { + "logic": [], + "target": "D08Z02S02[W]" + } + ], + "locations": [], + "transitions": [ + "D08Z01S01[E]" + ] + }, + { + "name": "D08Z02S02[W]", + "exits": [ + { + "logic": [], + "target": "D08Z02S01[W]" + }, + { + "logic": [], + "target": "D08Z02S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "brokeBotTCStatue" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z02S03[W]" + }, + { + "logic": [], + "target": "D08Z02S03[E]" + } + ], + "locations": [], + "transitions": [ + "D08Z02S02[W]", + "D08Z02S01[SE]", + "D08Z02S03[S]", + "D08Z02S01[N]" + ] + }, + { + "name": "D04Z01S02", + "exits": [ + { + "logic": [], + "target": "D04Z01S02[W]" + }, + { + "logic": [], + "target": "D04Z01S02[NW]" + }, + { + "logic": [], + "target": "D04Z01S02[E]" + } + ], + "locations": [ + "RB14" + ], + "transitions": [] + }, + { + "name": "D04Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D04Z01S02" + } + ], + "locations": [], + "transitions": [ + "D04Z01S01[E]" + ] + }, + { + "name": "D04Z01S01[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z01S02" + } + ], + "locations": [], + "transitions": [ + "D04Z01S01[NE]" + ] + }, + { + "name": "D04Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D04Z01S02" + } + ], + "locations": [], + "transitions": [ + "D04Z01S03[W]" + ] + }, + { + "name": "D04Z01S01[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S05[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S05[-Cherubs]" + }, + { + "logic": [], + "target": "D04Z01S01" + }, + { + "logic": [], + "target": "D04Z01S01[NE]" + }, + { + "logic": [], + "target": "CO23" + } + ], + "locations": [], + "transitions": [ + "D04Z01S01[N]", + "D04Z01S05[S]" + ] + }, + { + "name": "D04Z01S06[S]", + "exits": [ + { + "logic": [], + "target": "D04Z01S05[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S05[-Cherubs]" + }, + { + "logic": [], + "target": "D04Z01S01[N]" + } + ], + "locations": [], + "transitions": [ + "D04Z01S06[S]" + ] + }, + { + "name": "D04Z01S06[Cherubs]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S05[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S05[-Cherubs]" + }, + { + "logic": [], + "target": "D04Z01S01[N]" + } + ], + "locations": [], + "transitions": [ + "D04Z01S06[Cherubs]" + ] + }, + { + "name": "D04Z01S01", + "exits": [ + { + "logic": [], + "target": "D04Z01S01[W]" + }, + { + "logic": [], + "target": "D04Z01S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO23" + } + ], + "locations": [ + "RESCUED_CHERUB_35" + ], + "transitions": [] + }, + { + "name": "D04Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D04Z01S01" + } + ], + "locations": [], + "transitions": [ + "D04Z01S02[W]" + ] + }, + { + "name": "D04Z01S02[NW]", + "exits": [ + { + "logic": [], + "target": "D04Z01S01" + }, + { + "logic": [], + "target": "D04Z01S01[NE]" + }, + { + "logic": [], + "target": "D04Z01S01[N]" + }, + { + "logic": [], + "target": "CO23" + } + ], + "locations": [], + "transitions": [ + "D04Z01S02[NW]" + ] + }, + { + "name": "D04Z01S05[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D04Z01S01" + } + ], + "locations": [], + "transitions": [ + "D04Z01S05[-Cherubs]" + ] + }, + { + "name": "D08Z02S01[E]", + "exits": [ + { + "logic": [], + "target": "D04Z01S01" + } + ], + "locations": [], + "transitions": [ + "D08Z02S01[E]" + ] + }, + { + "name": "D04Z01S03", + "exits": [ + { + "logic": [], + "target": "D04Z01S03[W]" + }, + { + "logic": [], + "target": "D04Z01S03[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D05Z01S20[N]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S03[S]" + } + ], + "locations": [ + "QI37", + "CO39", + "RESCUED_CHERUB_28" + ], + "transitions": [] + }, + { + "name": "D04Z01S02[E]", + "exits": [ + { + "logic": [], + "target": "D04Z01S03" + } + ], + "locations": [], + "transitions": [ + "D04Z01S02[E]" + ] + }, + { + "name": "D04Z01S04[W]", + "exits": [ + { + "logic": [], + "target": "D04Z01S03" + } + ], + "locations": [], + "transitions": [ + "D04Z01S04[W]" + ] + }, + { + "name": "D05Z01S20[N]", + "exits": [ + { + "logic": [], + "target": "D04Z01S03" + } + ], + "locations": [], + "transitions": [ + "D05Z01S20[N]" + ] + }, + { + "name": "D04Z01S04", + "exits": [ + { + "logic": [], + "target": "D04Z01S04[W]" + }, + { + "logic": [], + "target": "D04Z01S04[E]" + } + ], + "locations": [ + "RB21", + "Amanecida[D04Z01S04]" + ], + "transitions": [] + }, + { + "name": "D04Z01S03[E]", + "exits": [ + { + "logic": [], + "target": "D04Z01S04" + } + ], + "locations": [], + "transitions": [ + "D04Z01S03[E]" + ] + }, + { + "name": "D04Z02S01[W]", + "exits": [ + { + "logic": [], + "target": "D04Z01S04" + } + ], + "locations": [], + "transitions": [ + "D04Z02S01[W]" + ] + }, + { + "name": "D06Z01S18[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D04Z01S04" + } + ], + "locations": [], + "transitions": [ + "D06Z01S18[-Cherubs]" + ] + }, + { + "name": "D04Z01S03[S]", + "exits": [ + { + "logic": [], + "target": "D05Z01S20[N]" + }, + { + "logic": [], + "target": "D05Z01S06[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z01S03[S]" + ] + }, + { + "name": "D05Z01S06[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S20[N]" + }, + { + "logic": [], + "target": "D05Z01S07[E]" + }, + { + "logic": [], + "target": "D05Z01S08[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canSurvivePoison3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S06[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canSurvivePoison3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB31" + } + ], + "locations": [], + "transitions": [ + "D05Z01S06[E]", + "D05Z01S20[W]", + "D05Z01S07[NW]", + "D05Z01S20[E]" + ] + }, + { + "name": "D04Z01S04[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S01[W]" + }, + { + "logic": [], + "target": "D04Z02S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_30" + } + ], + "locations": [], + "transitions": [ + "D04Z01S04[E]" + ] + }, + { + "name": "D04Z02S02[S]", + "exits": [ + { + "logic": [], + "target": "D04Z02S01[N]" + }, + { + "logic": [], + "target": "RE402" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_30" + }, + { + "logic": [], + "target": "D04Z02S01[W]" + }, + { + "logic": [], + "target": "D04Z02S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S03[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S02[S]" + ] + }, + { + "name": "D04Z02S03[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RE402" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_30" + }, + { + "logic": [], + "target": "D04Z02S01[W]" + }, + { + "logic": [], + "target": "D04Z02S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + }, + { + "logic": [], + "target": "D04Z02S19[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S03[W]", + "D04Z02S01[NE]", + "D04Z02S04[NW]", + "D04Z02S03[E]", + "D04Z02S19[W]", + "D04Z02S04[NE]" + ] + }, + { + "name": "D04Z03S01[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S01[W]" + }, + { + "logic": [], + "target": "D04Z02S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_30" + } + ], + "locations": [], + "transitions": [ + "D04Z03S01[W]" + ] + }, + { + "name": "D04Z01S06", + "exits": [ + { + "logic": [], + "target": "D04Z01S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "DoubleJump", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S06[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S06[Cherubs]" + } + ], + "locations": [ + "QI102" + ], + "transitions": [] + }, + { + "name": "D04Z01S05[N]", + "exits": [ + { + "logic": [], + "target": "D04Z01S06" + } + ], + "locations": [], + "transitions": [ + "D04Z01S05[N]" + ] + }, + { + "name": "D09Z01S09[SW]", + "exits": [ + { + "logic": [], + "target": "D04Z01S06" + }, + { + "logic": [ + { + "item_requirements": [ + "DoubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z01S06[E]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S09[SW]" + ] + }, + { + "name": "D04Z01S06[E]", + "exits": [ + { + "logic": [], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [ + "D04Z01S06[E]" + ] + }, + { + "name": "D09Z01S07[SW]", + "exits": [ + { + "logic": [], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [ + "D09Z01S07[SW]", + "D09Z01S09[E]", + "D09Z01S02[SW]", + "D09Z01S07[E]", + "D09Z01S08[SE]", + "D09Z01S07[W]", + "D09Z01S10[W]", + "D09Z01S07[SE]" + ] + }, + { + "name": "D09Z01S12[E]", + "exits": [ + { + "logic": [], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [ + "D09Z01S12[E]" + ] + }, + { + "name": "D09BZ01S01[Cell19]", + "exits": [ + { + "logic": [], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D09BZ01S01[Cell24]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S12[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell19]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S12[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell19]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D04Z02S02", + "exits": [ + { + "logic": [], + "target": "D04Z02S02[S]" + }, + { + "logic": [], + "target": "D04Z02S02[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogicAndDoubleJump", + "doubleJump", + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogicAndDoubleJump", + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogicAndDoubleJump", + "canEnemyUpslash", + "upwarpSkipsAllowed", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "EnemySkips", + "doubleJump", + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "EnemySkips", + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "EnemySkips", + "canEnemyUpslash", + "upwarpSkipsAllowed", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S02[S]" + } + ], + "locations": [ + "CO17" + ], + "transitions": [] + }, + { + "name": "D04Z02S01[N]", + "exits": [ + { + "logic": [], + "target": "D04Z02S02" + } + ], + "locations": [], + "transitions": [ + "D04Z02S01[N]" + ] + }, + { + "name": "D04Z02S15[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S02" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogicAndDoubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "EnemySkips" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S02[NE]" + }, + { + "logic": [], + "target": "D06Z01S02[S]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S15[W]" + ] + }, + { + "name": "D04Z02S17[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S02" + } + ], + "locations": [], + "transitions": [ + "D04Z02S17[W]" + ] + }, + { + "name": "D06Z01S02[S]", + "exits": [ + { + "logic": [], + "target": "D04Z02S02" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogicAndDoubleJump", + "canEnemyUpslash", + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "EnemySkips", + "canEnemyUpslash", + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S02[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S18[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "wallClimb", + "doubleJump", + "canEnemyBounce", + "preciseSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S08[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[SW]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S02[S]", + "D04Z02S02[N]", + "D06Z01S18[E]", + "D06Z01S02[W]", + "D06Z01S08[W]", + "D06Z01S02[E]" + ] + }, + { + "name": "D04Z03S01", + "exits": [ + { + "logic": [], + "target": "D04Z03S01[W]" + }, + { + "logic": [], + "target": "D04Z03S01[E]" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D04Z02S01[E]", + "exits": [ + { + "logic": [], + "target": "D04Z03S01" + } + ], + "locations": [], + "transitions": [ + "D04Z02S01[E]" + ] + }, + { + "name": "D04Z02S04[W]", + "exits": [ + { + "logic": [], + "target": "D04Z03S01" + } + ], + "locations": [], + "transitions": [ + "D04Z02S04[W]" + ] + }, + { + "name": "D04Z02S02[SE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S17[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S02[SE]" + ] + }, + { + "name": "D04Z02S15", + "exits": [ + { + "logic": [], + "target": "D04Z02S15[W]" + }, + { + "logic": [], + "target": "D04Z02S15[E]" + } + ], + "locations": [ + "QI60" + ], + "transitions": [] + }, + { + "name": "D04Z02S02[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S15" + } + ], + "locations": [], + "transitions": [ + "D04Z02S02[NE]" + ] + }, + { + "name": "D04Z02S22[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S15" + } + ], + "locations": [], + "transitions": [ + "D04Z02S22[W]" + ] + }, + { + "name": "D04Z02S05[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S03[W]" + }, + { + "logic": [], + "target": "D04Z02S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D05Z01S15[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S02[W]" + }, + { + "logic": [], + "target": "D05Z01S03[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S05[W]", + "D04Z02S04[E]", + "D05Z01S01[NW]", + "D04Z02S04[SE]", + "D05Z01S02[E]", + "D05Z01S01[W]", + "D05Z01S16[W]", + "D05Z01S01[E]", + "D05Z01S03[E]", + "D05Z01S02[NW]" + ] + }, + { + "name": "D04Z02S06[S]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [], + "target": "D04Z02S03[W]" + }, + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S06[S]" + ] + }, + { + "name": "D04Z02S06[-Cherubs]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [], + "target": "D04Z02S03[W]" + }, + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S06[-Cherubs]" + ] + }, + { + "name": "D04Z02S14[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S03[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S14[E]" + ] + }, + { + "name": "D04Z03S01[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S04[SW]" + }, + { + "logic": [], + "target": "D04Z02S04[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "openedMoMLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S04[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S03[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z03S01[E]" + ] + }, + { + "name": "D04Z02S14", + "exits": [ + { + "logic": [], + "target": "D04Z02S14[E]" + } + ], + "locations": [ + "Oil[D04Z02S14]" + ], + "transitions": [] + }, + { + "name": "D04Z02S04[SW]", + "exits": [ + { + "logic": [], + "target": "D04Z02S14" + } + ], + "locations": [], + "transitions": [ + "D04Z02S04[SW]" + ] + }, + { + "name": "D04Z02S07[SW]", + "exits": [ + { + "logic": [], + "target": "D04Z02S05[W]" + }, + { + "logic": [], + "target": "D04Z02S05[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S07[SW]" + ] + }, + { + "name": "D04Z02S07[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S19[E]" + }, + { + "logic": [], + "target": "D04Z02S03[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S07[W]" + ] + }, + { + "name": "D04Z02S04[N]", + "exits": [ + { + "logic": [], + "target": "D04Z02S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "openedARLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO34" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S09[W]" + }, + { + "logic": [], + "target": "D04Z02S10[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S04[N]" + ] + }, + { + "name": "D04Z02S09[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S06[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedARLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[N]" + }, + { + "logic": [], + "target": "CO34" + }, + { + "logic": [], + "target": "D04Z02S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S09[NE]" + }, + { + "logic": [], + "target": "D04Z02S10[W]" + }, + { + "logic": [], + "target": "D04Z02S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "redentoRooms5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S20[Redento]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S09[W]", + "D04Z02S06[NE]", + "D04Z02S08[W]", + "D04Z02S09[E]", + "D04Z02S20[W]", + "D04Z02S08[E]" + ] + }, + { + "name": "D04Z02S10[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "openedARLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO34" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S09[W]" + } + ], + "locations": [ + "QI01", + "PR11" + ], + "transitions": [ + "D04Z02S10[W]", + "D04Z02S06[E]" + ] + }, + { + "name": "D04Z02S11[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S06[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedARLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[N]" + }, + { + "logic": [], + "target": "CO34" + }, + { + "logic": [], + "target": "D04Z02S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[-Cherubs]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + }, + { + "logic": [], + "target": "D04Z02S10[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S11[E]" + ] + }, + { + "name": "D06Z01S23[S]", + "exits": [ + { + "logic": [], + "target": "D04Z02S06[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedARLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[N]" + }, + { + "logic": [], + "target": "CO34" + }, + { + "logic": [], + "target": "D04Z02S06[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S06[-Cherubs]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + }, + { + "logic": [], + "target": "D04Z02S10[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S23[S]" + ] + }, + { + "name": "D04Z02S07", + "exits": [ + { + "logic": [], + "target": "D04Z02S07[SW]" + }, + { + "logic": [], + "target": "D04Z02S07[W]" + }, + { + "logic": [], + "target": "D04Z02S07[N]" + }, + { + "logic": [], + "target": "D04Z02S07[NE]" + }, + { + "logic": [], + "target": "D04Z02S07[SE]" + } + ], + "locations": [ + "CO35", + "RB33" + ], + "transitions": [] + }, + { + "name": "D04Z02S05[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S07" + } + ], + "locations": [], + "transitions": [ + "D04Z02S05[E]" + ] + }, + { + "name": "D04Z02S08[S]", + "exits": [ + { + "logic": [], + "target": "D04Z02S07" + } + ], + "locations": [], + "transitions": [ + "D04Z02S08[S]" + ] + }, + { + "name": "D04Z02S13[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S07" + } + ], + "locations": [], + "transitions": [ + "D04Z02S13[W]" + ] + }, + { + "name": "D04Z02S19[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S07" + } + ], + "locations": [], + "transitions": [ + "D04Z02S19[E]" + ] + }, + { + "name": "D04Z02S23[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S07" + } + ], + "locations": [], + "transitions": [ + "D04Z02S23[W]" + ] + }, + { + "name": "D04Z02S11", + "exits": [ + { + "logic": [], + "target": "D04Z02S11[W]" + }, + { + "logic": [], + "target": "D04Z02S11[E]" + } + ], + "locations": [ + "CO20", + "RESCUED_CHERUB_29" + ], + "transitions": [] + }, + { + "name": "D04Z02S06[NW]", + "exits": [ + { + "logic": [], + "target": "D04Z02S11" + } + ], + "locations": [], + "transitions": [ + "D04Z02S06[NW]" + ] + }, + { + "name": "D04Z02S21[SE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S11" + } + ], + "locations": [], + "transitions": [ + "D04Z02S21[SE]" + ] + }, + { + "name": "D04Z02S06[N]", + "exits": [ + { + "logic": [], + "target": "D06Z01S23[Sword]" + }, + { + "logic": [], + "target": "D06Z01S23[S]" + }, + { + "logic": [], + "target": "D06Z01S20[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S06[N]" + ] + }, + { + "name": "D06Z01S01[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D06Z01S23[Sword]" + }, + { + "logic": [], + "target": "D06Z01S23[S]" + }, + { + "logic": [], + "target": "D06Z01S20[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[-Cherubs]" + ] + }, + { + "name": "D06Z01S20[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S23[Sword]" + }, + { + "logic": [], + "target": "D06Z01S23[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S24[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canSurvivePoison2", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canSurvivePoison2", + "blood", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canSurvivePoison2", + "dash", + "preciseSkipsAllowed", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce", + "preciseSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S04[Health]" + }, + { + "logic": [], + "target": "D06Z01S03" + } + ], + "locations": [], + "transitions": [ + "D06Z01S20[W]", + "D06Z01S23[E]", + "D06Z01S20[E]", + "D06Z01S04[SW]", + "D06Z01S04[W]", + "D06Z01S03[E]" + ] + }, + { + "name": "D06Z01S22[Sword]", + "exits": [ + { + "logic": [], + "target": "D06Z01S23[Sword]" + }, + { + "logic": [], + "target": "D06Z01S23[S]" + }, + { + "logic": [], + "target": "D06Z01S20[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S22[Sword]" + ] + }, + { + "name": "D04Z02S16[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S09[NE]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S16[W]" + ] + }, + { + "name": "D04Z02S07[N]", + "exits": [ + { + "logic": [], + "target": "D04Z02S08[S]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S07[N]" + ] + }, + { + "name": "D04Z02S16[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D04Z02S08[S]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S16[-Cherubs]" + ] + }, + { + "name": "D04Z02S07[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S13[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S07[NE]" + ] + }, + { + "name": "D04Z02S07[SE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S23[W]" + }, + { + "logic": [], + "target": "D04Z02S23[NE]" + }, + { + "logic": [], + "target": "D04Z02S24[NW]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S07[SE]" + ] + }, + { + "name": "D04Z02S24[NW]", + "exits": [ + { + "logic": [], + "target": "D04Z02S23[W]" + }, + { + "logic": [], + "target": "D04Z02S23[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S03[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S05[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S24[NW]", + "D04Z02S23[SE]", + "D20Z02S01[E]", + "D04Z02S24[SW]", + "D04Z02S25[W]", + "D04Z02S24[SE]", + "D20Z02S03[SE]", + "D20Z02S01[W]", + "D20Z02S04[E]", + "D20Z02S03[W]" + ] + }, + { + "name": "D04Z04S01[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S23[W]" + }, + { + "logic": [], + "target": "D04Z02S23[NE]" + }, + { + "logic": [], + "target": "D04Z02S24[NW]" + } + ], + "locations": [], + "transitions": [ + "D04Z04S01[W]" + ] + }, + { + "name": "D04BZ02S01[Redento]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "redentoRooms5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S20[Redento]" + }, + { + "logic": [], + "target": "D04Z02S09[W]" + } + ], + "locations": [], + "transitions": [ + "D04BZ02S01[Redento]" + ] + }, + { + "name": "D04Z02S16", + "exits": [ + { + "logic": [], + "target": "D04Z02S16[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S16[-Cherubs]" + } + ], + "locations": [ + "HE01" + ], + "transitions": [] + }, + { + "name": "D04Z02S09[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S16" + } + ], + "locations": [], + "transitions": [ + "D04Z02S09[NE]" + ] + }, + { + "name": "D04Z02S11[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S21[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S21[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S22[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S11[W]" + ] + }, + { + "name": "D04Z02S12[W]", + "exits": [ + { + "logic": [], + "target": "D04Z02S21[NE]" + }, + { + "logic": [], + "target": "D04Z02S22[E]" + }, + { + "logic": [], + "target": "D04Z02S21[SE]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S12[W]" + ] + }, + { + "name": "D04Z02S22[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S22" + }, + { + "logic": [], + "target": "D04Z02S21[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S21[NE]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S22[E]", + "D04Z02S21[W]" + ] + }, + { + "name": "D04Z02S22", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatMothersBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S22[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatMothersBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S22[E]" + } + ], + "locations": [ + "BS05" + ], + "transitions": [] + }, + { + "name": "D04Z02S15[E]", + "exits": [ + { + "logic": [], + "target": "D04Z02S22" + }, + { + "logic": [], + "target": "D04Z02S22[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z02S15[E]" + ] + }, + { + "name": "D04BZ02S01", + "exits": [ + { + "logic": [], + "target": "D04BZ02S01[Redento]" + } + ], + "locations": [ + "RE03", + "QI54" + ], + "transitions": [] + }, + { + "name": "D04Z02S20[Redento]", + "exits": [ + { + "logic": [], + "target": "D04BZ02S01" + } + ], + "locations": [], + "transitions": [ + "D04Z02S20[Redento]" + ] + }, + { + "name": "D04Z02S12", + "exits": [ + { + "logic": [], + "target": "D04Z02S12[W]" + } + ], + "locations": [ + "Sword[D04Z02S12]" + ], + "transitions": [] + }, + { + "name": "D04Z02S21[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z02S12" + } + ], + "locations": [], + "transitions": [ + "D04Z02S21[NE]" + ] + }, + { + "name": "D04Z04S01", + "exits": [ + { + "logic": [], + "target": "D04Z04S01[W]" + }, + { + "logic": [], + "target": "D04Z04S01[E]" + } + ], + "locations": [ + "PR201" + ], + "transitions": [] + }, + { + "name": "D04Z02S23[NE]", + "exits": [ + { + "logic": [], + "target": "D04Z04S01" + } + ], + "locations": [], + "transitions": [ + "D04Z02S23[NE]" + ] + }, + { + "name": "D04Z04S02[W]", + "exits": [ + { + "logic": [], + "target": "D04Z04S01" + } + ], + "locations": [], + "transitions": [ + "D04Z04S02[W]" + ] + }, + { + "name": "D04Z03S02[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S22[FrontalN]" + }, + { + "logic": [], + "target": "D05Z01S22[E]" + } + ], + "locations": [], + "transitions": [ + "D04Z03S02[W]" + ] + }, + { + "name": "D05BZ01S01[FrontalN]", + "exits": [ + { + "logic": [], + "target": "D05Z01S22[FrontalN]" + }, + { + "logic": [], + "target": "D05Z01S22[E]" + } + ], + "locations": [], + "transitions": [ + "D05BZ01S01[FrontalN]" + ] + }, + { + "name": "D04Z04S01[E]", + "exits": [ + { + "logic": [], + "target": "D04Z04S02[W]" + } + ], + "locations": [], + "transitions": [ + "D04Z04S01[E]" + ] + }, + { + "name": "D05Z01S15[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "redWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB18" + }, + { + "logic": [ + { + "item_requirements": [ + "D05Z01S15[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S02[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [ + "RB19" + ], + "transitions": [ + "D05Z01S15[E]" + ] + }, + { + "name": "D05Z01S15", + "exits": [ + { + "logic": [], + "target": "D05Z01S15[W]" + }, + { + "logic": [], + "target": "D05Z01S15[E]" + } + ], + "locations": [ + "QI62" + ], + "transitions": [] + }, + { + "name": "D05Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S15" + } + ], + "locations": [], + "transitions": [ + "D05Z01S02[W]" + ] + }, + { + "name": "D05Z01S21[NE]", + "exits": [ + { + "logic": [], + "target": "D05Z01S15" + } + ], + "locations": [], + "transitions": [ + "D05Z01S21[NE]" + ] + }, + { + "name": "D05Z01S04[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S03[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S04[E]" + ] + }, + { + "name": "D05BZ01S01[FrontalS]", + "exits": [ + { + "logic": [], + "target": "D05Z01S03[W]" + }, + { + "logic": [], + "target": "D04Z02S05[W]" + } + ], + "locations": [], + "transitions": [ + "D05BZ01S01[FrontalS]" + ] + }, + { + "name": "D05Z01S04", + "exits": [ + { + "logic": [], + "target": "D05Z01S04[W]" + }, + { + "logic": [], + "target": "D05Z01S04[E]" + } + ], + "locations": [ + "CO18", + "RESCUED_CHERUB_01" + ], + "transitions": [] + }, + { + "name": "D05Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S04" + } + ], + "locations": [], + "transitions": [ + "D05Z01S03[W]" + ] + }, + { + "name": "D05Z01S05[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S04" + } + ], + "locations": [], + "transitions": [ + "D05Z01S05[E]" + ] + }, + { + "name": "D05BZ01S01", + "exits": [ + { + "logic": [], + "target": "D05BZ01S01[FrontalS]" + }, + { + "logic": [], + "target": "D05BZ01S01[FrontalN]" + } + ], + "locations": [ + "RB301" + ], + "transitions": [] + }, + { + "name": "D05Z01S03[Frontal]", + "exits": [ + { + "logic": [], + "target": "D05BZ01S01" + } + ], + "locations": [], + "transitions": [ + "D05Z01S03[Frontal]" + ] + }, + { + "name": "D05Z01S22[FrontalN]", + "exits": [ + { + "logic": [], + "target": "D05BZ01S01" + } + ], + "locations": [], + "transitions": [ + "D05Z01S22[FrontalN]" + ] + }, + { + "name": "D05Z01S05", + "exits": [ + { + "logic": [], + "target": "D05Z01S05[SW]" + }, + { + "logic": [], + "target": "D05Z01S05[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO22" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S17[W]" + } + ], + "locations": [ + "QI50" + ], + "transitions": [] + }, + { + "name": "D05Z01S04[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S05" + } + ], + "locations": [], + "transitions": [ + "D05Z01S04[W]" + ] + }, + { + "name": "D05Z01S07[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S05" + } + ], + "locations": [], + "transitions": [ + "D05Z01S07[E]" + ] + }, + { + "name": "D05Z01S17[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S05" + }, + { + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO22" + } + ], + "locations": [], + "transitions": [ + "D05Z01S17[W]", + "D05Z01S05[NE]" + ] + }, + { + "name": "D05Z01S05[SW]", + "exits": [ + { + "logic": [], + "target": "D05Z01S07[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S06[E]" + }, + { + "logic": [], + "target": "D05Z01S08[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S05[SW]" + ] + }, + { + "name": "D05Z01S08[NE]", + "exits": [ + { + "logic": [], + "target": "D05Z01S07[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S06[E]" + }, + { + "logic": [], + "target": "D05Z01S08[W]" + }, + { + "logic": [], + "target": "D05Z01S08[Health]" + }, + { + "logic": [], + "target": "D05Z01S09[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S08[NE]", + "D05Z01S07[SW]", + "D05Z01S12[E]", + "D05Z01S08[NW]", + "D05Z01S09[W]", + "D05Z01S08[E]" + ] + }, + { + "name": "D05Z01S06[W]", + "exits": [ + { + "logic": [], + "target": "RB31" + }, + { + "logic": [ + { + "item_requirements": [ + "canSurvivePoison3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S06[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S06[W]", + "D05Z01S24[E]" + ] + }, + { + "name": "D05Z01S10[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S08[W]" + }, + { + "logic": [], + "target": "D05Z01S08[Health]" + }, + { + "logic": [], + "target": "D05Z01S08[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S10[E]" + ] + }, + { + "name": "D05Z01S14[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S08[W]" + }, + { + "logic": [], + "target": "D05Z01S08[Health]" + }, + { + "logic": [], + "target": "D05Z01S08[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S14[W]" + ] + }, + { + "name": "D05Z01S10", + "exits": [ + { + "logic": [], + "target": "D05Z01S10[W]" + }, + { + "logic": [], + "target": "D05Z01S10[NW]" + }, + { + "logic": [], + "target": "D05Z01S10[E]" + } + ], + "locations": [ + "PR07" + ], + "transitions": [] + }, + { + "name": "D05Z01S08[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S10" + } + ], + "locations": [], + "transitions": [ + "D05Z01S08[W]" + ] + }, + { + "name": "D05Z01S11[NE]", + "exits": [ + { + "logic": [], + "target": "D05Z01S10" + } + ], + "locations": [], + "transitions": [ + "D05Z01S11[NE]" + ] + }, + { + "name": "D05Z01S11[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S10" + } + ], + "locations": [], + "transitions": [ + "D05Z01S11[E]" + ] + }, + { + "name": "D05Z01S18[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S09[E]" + }, + { + "logic": [], + "target": "D05Z01S08[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S18[W]" + ] + }, + { + "name": "D05Z01S14", + "exits": [ + { + "logic": [], + "target": "D05Z01S14[W]" + } + ], + "locations": [ + "Lady[D05Z01S14]" + ], + "transitions": [] + }, + { + "name": "D05Z01S08[Health]", + "exits": [ + { + "logic": [], + "target": "D05Z01S14" + } + ], + "locations": [], + "transitions": [ + "D05Z01S08[Health]" + ] + }, + { + "name": "D05Z01S18", + "exits": [ + { + "logic": [], + "target": "D05Z01S18[W]" + } + ], + "locations": [ + "PR15" + ], + "transitions": [] + }, + { + "name": "D05Z01S09[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S18" + } + ], + "locations": [], + "transitions": [ + "D05Z01S09[E]" + ] + }, + { + "name": "D05Z01S11", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S11[SW]" + }, + { + "logic": [], + "target": "D05Z01S11[SE]" + }, + { + "logic": [], + "target": "D05Z01S11[E]" + } + ], + "locations": [ + "RB30", + "RESCUED_CHERUB_02" + ], + "transitions": [] + }, + { + "name": "D05Z01S10[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S11" + } + ], + "locations": [], + "transitions": [ + "D05Z01S10[W]" + ] + }, + { + "name": "D05Z01S10[NW]", + "exits": [ + { + "logic": [], + "target": "D05Z01S11" + }, + { + "logic": [], + "target": "D05Z01S11[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D05Z01S11[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB203" + }, + { + "logic": [], + "target": "CO28" + }, + { + "logic": [], + "target": "D05Z01S23[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S10[NW]" + ] + }, + { + "name": "D05Z01S19[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S11" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S11[SW]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S19[E]" + ] + }, + { + "name": "D05Z01S23[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S11" + }, + { + "logic": [], + "target": "D05Z01S11[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D05Z01S11[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB203" + }, + { + "logic": [], + "target": "CO28" + }, + { + "logic": [ + { + "item_requirements": [ + "woodKey", + "D05Z01S23[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "woodKey", + "D05Z01S10[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S03[Frontal]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S23[E]", + "D05Z01S11[NW]" + ] + }, + { + "name": "D05Z02S01[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S11" + } + ], + "locations": [], + "transitions": [ + "D05Z02S01[W]" + ] + }, + { + "name": "D05Z01S19", + "exits": [ + { + "logic": [], + "target": "D05Z01S19[W]" + }, + { + "logic": [], + "target": "D05Z01S19[E]" + } + ], + "locations": [ + "Oil[D05Z01S19]" + ], + "transitions": [] + }, + { + "name": "D05Z01S11[SW]", + "exits": [ + { + "logic": [], + "target": "D05Z01S19" + } + ], + "locations": [], + "transitions": [ + "D05Z01S11[SW]" + ] + }, + { + "name": "D05Z02S15[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S19" + } + ], + "locations": [], + "transitions": [ + "D05Z02S15[E]" + ] + }, + { + "name": "D05Z01S11[SE]", + "exits": [ + { + "logic": [], + "target": "D05Z02S01[W]" + }, + { + "logic": [], + "target": "D05Z02S01[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S11[SE]" + ] + }, + { + "name": "D05Z02S02[NW]", + "exits": [ + { + "logic": [], + "target": "D05Z02S01[W]" + }, + { + "logic": [], + "target": "D05Z02S01[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S02[NW]" + ] + }, + { + "name": "D05Z01S21", + "exits": [ + { + "logic": [], + "target": "D05Z01S21[SW]" + }, + { + "logic": [], + "target": "D05Z01S21[NW]" + }, + { + "logic": [], + "target": "D05Z01S21[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z01S21[-Cherubs]" + } + ], + "locations": [ + "RESCUED_CHERUB_32" + ], + "transitions": [] + }, + { + "name": "D05Z01S13[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S21" + } + ], + "locations": [], + "transitions": [ + "D05Z01S13[E]" + ] + }, + { + "name": "D05Z01S15[W]", + "exits": [ + { + "logic": [], + "target": "D05Z01S21" + } + ], + "locations": [], + "transitions": [ + "D05Z01S15[W]" + ] + }, + { + "name": "D05Z02S14[E]", + "exits": [ + { + "logic": [], + "target": "D05Z01S21" + } + ], + "locations": [], + "transitions": [ + "D05Z02S14[E]" + ] + }, + { + "name": "D05Z02S15", + "exits": [ + { + "logic": [], + "target": "D05Z02S15[S]" + }, + { + "logic": [], + "target": "D05Z02S15[E]" + } + ], + "locations": [ + "QI104" + ], + "transitions": [] + }, + { + "name": "D05Z01S19[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S15" + } + ], + "locations": [], + "transitions": [ + "D05Z01S19[W]" + ] + }, + { + "name": "D05Z02S12[N]", + "exits": [ + { + "logic": [], + "target": "D05Z02S15" + } + ], + "locations": [], + "transitions": [ + "D05Z02S12[N]" + ] + }, + { + "name": "D05Z02S14", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatCanvasesBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S14[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatCanvasesBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S06[NE]" + } + ], + "locations": [ + "BS06" + ], + "transitions": [] + }, + { + "name": "D05Z01S21[SW]", + "exits": [ + { + "logic": [], + "target": "D05Z02S14" + }, + { + "logic": [], + "target": "D05Z02S14[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z01S21[SW]" + ] + }, + { + "name": "D05Z02S06[NE]", + "exits": [ + { + "logic": [], + "target": "D05Z02S14" + }, + { + "logic": [ + { + "item_requirements": [ + "openedTSCGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S06[SE]" + }, + { + "logic": [], + "target": "D05Z02S05[W]" + }, + { + "logic": [], + "target": "D05Z02S07[W]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S06[NE]", + "D05Z02S14[W]", + "D05Z02S06[SW]", + "D05Z02S05[E]", + "D05Z02S07[E]", + "D05Z02S06[NW]" + ] + }, + { + "name": "D05Z01S13", + "exits": [ + { + "logic": [], + "target": "D05Z01S13[E]" + } + ], + "locations": [ + "Sword[D05Z01S13]" + ], + "transitions": [] + }, + { + "name": "D05Z01S21[NW]", + "exits": [ + { + "logic": [], + "target": "D05Z01S13" + } + ], + "locations": [], + "transitions": [ + "D05Z01S21[NW]" + ] + }, + { + "name": "D05Z02S11", + "exits": [ + { + "logic": [], + "target": "D05Z02S11[W]" + } + ], + "locations": [ + "CO31" + ], + "transitions": [] + }, + { + "name": "D05Z01S21[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D05Z02S11" + } + ], + "locations": [], + "transitions": [ + "D05Z01S21[-Cherubs]" + ] + }, + { + "name": "D05Z02S06[SE]", + "exits": [ + { + "logic": [], + "target": "D05Z02S11" + } + ], + "locations": [], + "transitions": [ + "D05Z02S06[SE]" + ] + }, + { + "name": "D04Z03S02", + "exits": [ + { + "logic": [], + "target": "D04Z03S02[W]" + } + ], + "locations": [ + "HE201" + ], + "transitions": [] + }, + { + "name": "D05Z01S22[E]", + "exits": [ + { + "logic": [], + "target": "D04Z03S02" + } + ], + "locations": [], + "transitions": [ + "D05Z01S22[E]" + ] + }, + { + "name": "D05Z02S02", + "exits": [ + { + "logic": [], + "target": "D05Z02S02[SW]" + }, + { + "logic": [], + "target": "D05Z02S02[NW]" + }, + { + "logic": [], + "target": "D05Z02S02[SE]" + }, + { + "logic": [], + "target": "D05Z02S02[NE]" + } + ], + "locations": [ + "QI64" + ], + "transitions": [] + }, + { + "name": "D05Z02S01[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S02" + } + ], + "locations": [], + "transitions": [ + "D05Z02S01[E]" + ] + }, + { + "name": "D05Z02S03[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S02" + } + ], + "locations": [], + "transitions": [ + "D05Z02S03[E]" + ] + }, + { + "name": "D05Z02S05[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S02" + } + ], + "locations": [], + "transitions": [ + "D05Z02S05[W]" + ] + }, + { + "name": "D05Z02S09[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S02" + } + ], + "locations": [], + "transitions": [ + "D05Z02S09[W]" + ] + }, + { + "name": "D05Z02S02[SW]", + "exits": [ + { + "logic": [], + "target": "D05Z02S03[E]" + }, + { + "logic": [], + "target": "D05Z02S04[W]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S02[SW]" + ] + }, + { + "name": "D05Z02S02[SE]", + "exits": [ + { + "logic": [], + "target": "D05Z02S09[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "redWax3", + "blueWax3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S09[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S02[SE]" + ] + }, + { + "name": "D05Z02S08[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S09[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "redWax3", + "blueWax3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S09[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S08[W]" + ] + }, + { + "name": "D05Z02S02[NE]", + "exits": [ + { + "logic": [], + "target": "D05Z02S05[W]" + }, + { + "logic": [], + "target": "D05Z02S06[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S02[NE]" + ] + }, + { + "name": "D05BZ02S01[C]", + "exits": [ + { + "logic": [], + "target": "D05Z02S04[W]" + }, + { + "logic": [], + "target": "D05Z02S04[C]" + } + ], + "locations": [], + "transitions": [ + "D05BZ02S01[C]" + ] + }, + { + "name": "D05BZ02S01", + "exits": [ + { + "logic": [], + "target": "D05BZ02S01[C]" + } + ], + "locations": [ + "RB12", + "QI49", + "QI71" + ], + "transitions": [] + }, + { + "name": "D05Z02S04[C]", + "exits": [ + { + "logic": [], + "target": "D05BZ02S01" + } + ], + "locations": [], + "transitions": [ + "D05Z02S04[C]" + ] + }, + { + "name": "D05Z02S11[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedTSCGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S06[SE]" + }, + { + "logic": [], + "target": "D05Z02S06[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S11[W]" + ] + }, + { + "name": "D05Z02S10[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S07[W]" + }, + { + "logic": [], + "target": "D05Z02S06[NE]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S10[E]" + ] + }, + { + "name": "D05Z02S10", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S10[W]" + }, + { + "logic": [], + "target": "D05Z02S10[E]" + } + ], + "locations": [ + "RE05", + "PR05" + ], + "transitions": [] + }, + { + "name": "D05Z02S07[W]", + "exits": [ + { + "logic": [], + "target": "D05Z02S10" + } + ], + "locations": [], + "transitions": [ + "D05Z02S07[W]" + ] + }, + { + "name": "D05Z02S13[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S10" + } + ], + "locations": [], + "transitions": [ + "D05Z02S13[E]" + ] + }, + { + "name": "D05Z02S08", + "exits": [ + { + "logic": [], + "target": "D05Z02S08[W]" + } + ], + "locations": [ + "HE07" + ], + "transitions": [] + }, + { + "name": "D05Z02S09[E]", + "exits": [ + { + "logic": [], + "target": "D05Z02S08" + } + ], + "locations": [], + "transitions": [ + "D05Z02S09[E]" + ] + }, + { + "name": "D05Z02S10[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D05Z02S13[E]" + } + ], + "locations": [], + "transitions": [ + "D05Z02S10[W]" + ] + }, + { + "name": "D06Z01S01[SW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "masks1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + }, + { + "logic": [], + "target": "D06Z01S03" + }, + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump", + "wallClimb", + "doubleJump", + "canEnemyBounce", + "preciseSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S08[N]" + }, + { + "logic": [], + "target": "D06Z01S02[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO06" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "taranto" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_36" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[SW]", + "D06Z01S14[E]", + "D06Z01S01[SE]", + "D06Z01S03[W]", + "D06Z01S08[E]", + "D06Z01S14[W]", + "D06Z01S12[S]", + "D06Z01S14[N]" + ] + }, + { + "name": "D06Z01S03", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S20[W]" + } + ], + "locations": [ + "QI02" + ], + "transitions": [] + }, + { + "name": "D06Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI03" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S04[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S04[NW]" + }, + { + "logic": [], + "target": "CO06" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_36" + }, + { + "logic": [], + "target": "D06Z01S13[W]" + }, + { + "logic": [], + "target": "D06Z01S13[S]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[W]", + "D06Z01S07[E]", + "D06Z01S01[E]", + "D06Z01S06[WW]", + "D06Z01S12[E]", + "D06Z01S07[W]", + "D06Z01S13[E]", + "D06Z01S12[W]" + ] + }, + { + "name": "D06Z01S16[-CherubsL]", + "exits": [ + { + "logic": [], + "target": "D06Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S16[-CherubsL]" + ] + }, + { + "name": "D06Z01S16[-CherubsR]", + "exits": [ + { + "logic": [], + "target": "D06Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S16[-CherubsR]" + ] + }, + { + "name": "D06Z01S04[NW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI03" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S04[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S01[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S04[NW]", + "D06Z01S06[E]" + ] + }, + { + "name": "D06Z01S04[NE]", + "exits": [ + { + "logic": [], + "target": "D06Z01S06[EE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S17[-Cherubs]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S04[NW]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S04[NE]", + "D06Z01S06[W]" + ] + }, + { + "name": "D06Z01S15[SW]", + "exits": [ + { + "logic": [], + "target": "D06Z01S06[EE]" + }, + { + "logic": [], + "target": "D06Z01S04[NE]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S15[SW]" + ] + }, + { + "name": "D06Z01S01[NW]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canWalkOnRoot", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap7", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap7", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE2]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[NW]", + "D06Z01S16[E]" + ] + }, + { + "name": "D06Z01S09[-CherubsL]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE2]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S09[-CherubsL]" + ] + }, + { + "name": "D06Z01S09[-CherubsR]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canAirStall", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "canWalkOnRoot", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "canWalkOnRoot", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "wheel", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canAirStall", + "wheel", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE2]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S09[-CherubsR]" + ] + }, + { + "name": "D06Z01S12[NE2]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S16[-CherubsR]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S05[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S09[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE]" + }, + { + "logic": [], + "target": "CO06" + }, + { + "logic": [], + "target": "PR12" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_36" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S05[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S09[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S05[E]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S12[NE2]", + "D06Z01S16[W]" + ] + }, + { + "name": "D06Z01S01[NE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks2", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S17[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S26[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[NE]", + "D06Z01S17[W]" + ] + }, + { + "name": "D06Z01S10[-CherubsL]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S17[-Cherubs]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S26[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S10[-CherubsL]" + ] + }, + { + "name": "D06Z01S10[-CherubsR]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S17[-Cherubs]" + }, + { + "logic": [], + "target": "D06Z01S26[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S10[-CherubsR]" + ] + }, + { + "name": "D06Z01S26[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S17[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S26[W]", + "D06Z01S17[E]" + ] + }, + { + "name": "D06Z01S09", + "exits": [ + { + "logic": [], + "target": "D06Z01S09[W]" + }, + { + "logic": [], + "target": "D06Z01S09[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S09[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S09[-CherubsR]" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D06Z01S01[NNW]", + "exits": [ + { + "logic": [], + "target": "D06Z01S09" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[NNW]" + ] + }, + { + "name": "D06Z01S12[NE]", + "exits": [ + { + "logic": [], + "target": "D06Z01S09" + } + ], + "locations": [], + "transitions": [ + "D06Z01S12[NE]" + ] + }, + { + "name": "D06Z01S01[NNE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S10[-CherubsL]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S10[-CherubsR]" + }, + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + }, + { + "logic": [], + "target": "D06Z01S21" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[NNE]", + "D06Z01S10[W]", + "D06Z01S21[W]", + "D06Z01S10[E]" + ] + }, + { + "name": "D06Z01S01[N]", + "exits": [ + { + "logic": [], + "target": "D06Z01S19[S]" + }, + { + "logic": [], + "target": "D06Z01S25[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S01[N]" + ] + }, + { + "name": "D06Z01S25[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S19[S]" + }, + { + "logic": [], + "target": "D06Z01S25" + } + ], + "locations": [], + "transitions": [ + "D06Z01S25[W]", + "D06Z01S19[E]" + ] + }, + { + "name": "D06Z01S13[S]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "EnemySkipsAndDoubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S08[N]" + }, + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [], + "target": "D06Z01S02[S]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S13[S]" + ] + }, + { + "name": "D06Z01S09[E]", + "exits": [ + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NE]" + }, + { + "logic": [], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[-Cherubs]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S09[E]" + ] + }, + { + "name": "D06Z01S19[S]", + "exits": [ + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [], + "target": "D06Z01S01[NNW]" + }, + { + "logic": [], + "target": "D06Z01S01[NNE]" + }, + { + "logic": [ + { + "item_requirements": [ + "masks3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[N]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S19[S]" + ] + }, + { + "name": "D06Z01S17[-Cherubs]", + "exits": [ + { + "logic": [], + "target": "D06Z01S04[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S20[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S03[E]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "wallClimb", + "canSurvivePoison2", + "doubleJump", + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "canCrossGap9" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S24[W]", + "canSurvivePoison2", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S04[NE]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S17[-Cherubs]" + ] + }, + { + "name": "D06Z01S24[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S04[Health]" + }, + { + "logic": [], + "target": "D06Z01S20[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S24[W]" + ] + }, + { + "name": "D06Z01S24", + "exits": [ + { + "logic": [], + "target": "D06Z01S24[W]" + } + ], + "locations": [ + "Lady[D06Z01S24]" + ], + "transitions": [] + }, + { + "name": "D06Z01S04[Health]", + "exits": [ + { + "logic": [], + "target": "D06Z01S24" + } + ], + "locations": [], + "transitions": [ + "D06Z01S04[Health]" + ] + }, + { + "name": "D06Z01S05[E]", + "exits": [ + { + "logic": [], + "target": "D06Z01S12[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S16[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE2]" + }, + { + "logic": [], + "target": "CO06" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "PR12" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_36" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [], + "target": "D06Z01S01[SW]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S05[E]", + "D06Z01S12[NW]" + ] + }, + { + "name": "D06Z01S09[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S12[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S16[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S12[NE2]" + }, + { + "logic": [], + "target": "CO06" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "PR12" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_36" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + }, + { + "logic": [], + "target": "D06Z01S01[SW]" + }, + { + "logic": [], + "target": "D06Z01S05[E]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S09[W]" + ] + }, + { + "name": "D06Z01S06[EE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[EE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S15[SW]" + } + ], + "locations": [ + "CO40" + ], + "transitions": [ + "D06Z01S06[EE]" + ] + }, + { + "name": "D06Z01S11[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S15[NE]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S21[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S21[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[EE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S15[SW]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S11[W]" + ] + }, + { + "name": "D06Z01S21[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D06Z01S11[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D06Z01S06[EE]", + "doubleJump", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S15[NE]" + }, + { + "logic": [], + "target": "D06Z01S21" + }, + { + "logic": [ + { + "item_requirements": [ + "D06Z01S06[EE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S15[SW]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S21[E]", + "D06Z01S15[NW]" + ] + }, + { + "name": "D06Z01S08[N]", + "exits": [ + { + "logic": [], + "target": "D06Z01S13[W]" + }, + { + "logic": [], + "target": "D06Z01S13[S]" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D06Z01S08[N]" + ] + }, + { + "name": "D09Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D06Z01S13[W]" + }, + { + "logic": [], + "target": "D06Z01S13[S]" + }, + { + "logic": [], + "target": "D06Z01S01[W]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S01[E]" + ] + }, + { + "name": "D06Z01S21", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S21[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S01[NNE]" + } + ], + "locations": [ + "QI04" + ], + "transitions": [] + }, + { + "name": "D09Z01S01", + "exits": [ + { + "logic": [], + "target": "D09Z01S01[W]" + }, + { + "logic": [], + "target": "D09Z01S01[E]" + } + ], + "locations": [ + "Amanecida[D09Z01S01]" + ], + "transitions": [] + }, + { + "name": "D06Z01S13[W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S01" + } + ], + "locations": [], + "transitions": [ + "D06Z01S13[W]" + ] + }, + { + "name": "D09Z01S11[E]", + "exits": [ + { + "logic": [], + "target": "D09Z01S01" + } + ], + "locations": [], + "transitions": [ + "D09Z01S11[E]" + ] + }, + { + "name": "D06Z01S11", + "exits": [ + { + "logic": [], + "target": "D06Z01S11[W]" + } + ], + "locations": [ + "Sword[D06Z01S11]" + ], + "transitions": [] + }, + { + "name": "D06Z01S15[NE]", + "exits": [ + { + "logic": [], + "target": "D06Z01S11" + } + ], + "locations": [], + "transitions": [ + "D06Z01S15[NE]" + ] + }, + { + "name": "D06Z01S25", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatRooftopsBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S25[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatRooftopsBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D06Z01S25[E]" + } + ], + "locations": [ + "BS16" + ], + "transitions": [] + }, + { + "name": "D07Z01S01[W]", + "exits": [ + { + "logic": [], + "target": "D06Z01S25" + }, + { + "logic": [], + "target": "D06Z01S25[E]" + } + ], + "locations": [], + "transitions": [ + "D07Z01S01[W]" + ] + }, + { + "name": "D06Z01S22", + "exits": [ + { + "logic": [], + "target": "D06Z01S22[Sword]" + } + ], + "locations": [ + "HE04" + ], + "transitions": [] + }, + { + "name": "D06Z01S23[Sword]", + "exits": [ + { + "logic": [], + "target": "D06Z01S22" + } + ], + "locations": [], + "transitions": [ + "D06Z01S23[Sword]" + ] + }, + { + "name": "D07Z01S01", + "exits": [ + { + "logic": [], + "target": "D07Z01S01[W]" + }, + { + "logic": [], + "target": "D07Z01S01[E]" + } + ], + "locations": [ + "PR08" + ], + "transitions": [] + }, + { + "name": "D06Z01S25[E]", + "exits": [ + { + "logic": [], + "target": "D07Z01S01" + } + ], + "locations": [], + "transitions": [ + "D06Z01S25[E]" + ] + }, + { + "name": "D07Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D07Z01S01" + } + ], + "locations": [], + "transitions": [ + "D07Z01S02[W]" + ] + }, + { + "name": "D07Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D07Z01S02[W]" + }, + { + "logic": [], + "target": "D07Z01S03[W]" + } + ], + "locations": [], + "transitions": [ + "D07Z01S01[E]" + ] + }, + { + "name": "D07Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D07Z01S02[W]" + } + ], + "locations": [], + "transitions": [ + "D07Z01S03[W]", + "D07Z01S02[E]" + ] + }, + { + "name": "D08Z03S03", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatHallBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z03S03[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatHallBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z03S02[NW]" + } + ], + "locations": [ + "LaudesBossTrigger[30000]" + ], + "transitions": [] + }, + { + "name": "D08Z01S02[NE]", + "exits": [ + { + "logic": [], + "target": "D08Z03S03" + }, + { + "logic": [], + "target": "D08Z03S03[W]" + } + ], + "locations": [], + "transitions": [ + "D08Z01S02[NE]" + ] + }, + { + "name": "D08Z03S02[NW]", + "exits": [ + { + "logic": [], + "target": "D08Z03S03" + }, + { + "logic": [], + "target": "D08Z03S02[SW]" + } + ], + "locations": [], + "transitions": [ + "D08Z03S02[NW]", + "D08Z03S03[E]" + ] + }, + { + "name": "D08Z01S02[SE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "brokeBotTCStatue" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z02S03[W]" + }, + { + "logic": [], + "target": "D08Z02S03[E]" + }, + { + "logic": [], + "target": "D08Z02S02[W]" + } + ], + "locations": [], + "transitions": [ + "D08Z01S02[SE]" + ] + }, + { + "name": "D08Z03S01[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "brokeBotTCStatue" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z02S03[W]" + }, + { + "logic": [], + "target": "D08Z02S03[E]" + }, + { + "logic": [], + "target": "D08Z02S02[W]" + } + ], + "locations": [], + "transitions": [ + "D08Z03S01[W]" + ] + }, + { + "name": "D08Z01S02", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D08Z03S03[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S02[NE]" + }, + { + "logic": [], + "target": "D08Z01S02[SE]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z01S02[-Cherubs]" + } + ], + "locations": [ + "HE101" + ], + "transitions": [] + }, + { + "name": "D08Z02S03[W]", + "exits": [ + { + "logic": [], + "target": "D08Z01S02" + } + ], + "locations": [], + "transitions": [ + "D08Z02S03[W]" + ] + }, + { + "name": "D08Z03S03[W]", + "exits": [ + { + "logic": [], + "target": "D08Z01S02" + } + ], + "locations": [], + "transitions": [ + "D08Z03S03[W]" + ] + }, + { + "name": "D08Z03S01", + "exits": [ + { + "logic": [], + "target": "D08Z03S01[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "verses4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z03S01[E]" + } + ], + "locations": [ + "QI105" + ], + "transitions": [] + }, + { + "name": "D08Z02S03[E]", + "exits": [ + { + "logic": [], + "target": "D08Z03S01" + } + ], + "locations": [], + "transitions": [ + "D08Z02S03[E]" + ] + }, + { + "name": "D08Z03S02[SW]", + "exits": [ + { + "logic": [], + "target": "D08Z03S01" + } + ], + "locations": [], + "transitions": [ + "D08Z03S02[SW]" + ] + }, + { + "name": "D08Z03S01[E]", + "exits": [ + { + "logic": [], + "target": "D08Z03S02[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D08Z03S02[NW]" + } + ], + "locations": [], + "transitions": [ + "D08Z03S01[E]" + ] + }, + { + "name": "D09Z01S01[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S04[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S11[W]" + }, + { + "logic": [], + "target": "D09Z01S11[E]" + }, + { + "logic": [], + "target": "D09Z01S02[N]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S01[W]" + ] + }, + { + "name": "D09Z01S02[N]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S04[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S11[W]" + }, + { + "logic": [], + "target": "D09Z01S11[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "goldKey", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S02[N]", + "D09Z01S11[S]", + "D09Z01S02[NW]", + "D09Z01S07[NE]" + ] + }, + { + "name": "D09Z01S04[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S04[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S11[W]" + }, + { + "logic": [], + "target": "D09Z01S11[E]" + }, + { + "logic": [], + "target": "D09Z01S02[N]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S04[E]" + ] + }, + { + "name": "D09Z01S04[S]", + "exits": [ + { + "logic": [], + "target": "D09Z01S04[W]" + }, + { + "logic": [], + "target": "D09Z01S04[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [ + "D09Z01S04[S]", + "D09Z01S07[N]", + "D09Z01S08[NE]", + "D09Z01S07[NW]" + ] + }, + { + "name": "D09Z01S02[Cell1]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "RESCUED_CHERUB_03" + ], + "transitions": [] + }, + { + "name": "D09Z01S02[Cell6]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "CO24" + ], + "transitions": [] + }, + { + "name": "D09Z01S02[Cell22]", + "exits": [ + { + "logic": [], + "target": "QI69" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "bronzeKey", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + } + ], + "locations": [ + "CO10" + ], + "transitions": [] + }, + { + "name": "D09Z01S08[Cell7]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D09Z01S08[Cell16]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "CO26" + ], + "transitions": [] + }, + { + "name": "D09Z01S08[Cell18]", + "exits": [ + { + "logic": [], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D09Z01S09[Cell24]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D09Z01S09[Cell21]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "CO02" + ], + "transitions": [] + }, + { + "name": "D09Z01S10[Cell10]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "CO37" + ], + "transitions": [] + }, + { + "name": "D09Z01S10[Cell11]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "RESCUED_CHERUB_04" + ], + "transitions": [] + }, + { + "name": "D09Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S05[SE]" + }, + { + "logic": [], + "target": "D09Z01S05[NE]" + }, + { + "logic": [], + "target": "D09Z01S13[E]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S03[W]" + ] + }, + { + "name": "D09Z01S08[W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S05[SE]" + }, + { + "logic": [], + "target": "D09Z01S05[NE]" + }, + { + "logic": [], + "target": "D09Z01S13[E]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S08[W]" + ] + }, + { + "name": "D09Z01S13[E]", + "exits": [ + { + "logic": [], + "target": "D09Z01S05[SE]" + }, + { + "logic": [], + "target": "D09Z01S05[NE]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S13[E]", + "D09Z01S05[W]" + ] + }, + { + "name": "D09Z01S03", + "exits": [], + "locations": [ + "BS14" + ], + "transitions": [] + }, + { + "name": "D09Z01S05[SE]", + "exits": [ + { + "logic": [], + "target": "D09Z01S03" + } + ], + "locations": [], + "transitions": [ + "D09Z01S05[SE]" + ] + }, + { + "name": "D09Z01S08[S]", + "exits": [ + { + "logic": [], + "target": "D09Z01S03" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatPrisonBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S03[W]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S08[S]" + ] + }, + { + "name": "D09Z01S05[NE]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [ + "D09Z01S05[NE]" + ] + }, + { + "name": "D09BZ01S01[Cell17]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "goldKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "silverKey", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell17]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "silverKey", + "dash", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D09Z01S06[E]", + "exits": [ + { + "logic": [], + "target": "D09Z01S04[W]" + }, + { + "logic": [], + "target": "D09Z01S04[E]" + }, + { + "logic": [], + "target": "D09Z01S04[S]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S06[E]" + ] + }, + { + "name": "D09Z01S11[W]", + "exits": [ + { + "logic": [], + "target": "D09Z01S04[W]" + }, + { + "logic": [], + "target": "D09Z01S04[E]" + }, + { + "logic": [], + "target": "D09Z01S04[S]" + } + ], + "locations": [], + "transitions": [ + "D09Z01S11[W]" + ] + }, + { + "name": "D09BZ01S01[Cell13]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell7]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]", + "goldKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]", + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell5]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell1]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell6]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell13]", + "D09Z01S02[Cell22]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "QI70" + ], + "transitions": [] + }, + { + "name": "D09BZ01S01[Cell5]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell24]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "goldKey", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell21]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S07[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S09[Cell24]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB16" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "NormalLogicAndDoubleJump", + "dash", + "doubleJump", + "canDawnJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S09[Cell21]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell19]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "goldKey", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell7]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell7]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "D09BZ01S01[Cell17]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell17]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "goldKey", + "D09Z01S08[Cell16]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "goldKey", + "D09Z01S08[Cell18]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell16]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[Cell18]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_34" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell16]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S08[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell18]", + "openedWotHPGate" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI72" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S08[Cell7]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S04[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell10]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S10[Cell11]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO27" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell10]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "D09Z01S10[Cell11]", + "D09BZ01S01[Cell13]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "bronzeKey", + "D09Z01S10[Cell10]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "bronzeKey", + "D09Z01S10[Cell11]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09BZ01S01[Cell13]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell1]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "silverKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell6]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D09Z01S02[Cell22]" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB11" + }, + { + "logic": [ + { + "item_requirements": [ + "D09BZ01S01[Cell5]", + "bronzeKey" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "QI69" + } + ], + "locations": [ + "QI51" + ], + "transitions": [] + }, + { + "name": "D09Z01S12", + "exits": [ + { + "logic": [], + "target": "D09Z01S12[E]" + } + ], + "locations": [ + "Oil[D09Z01S12]" + ], + "transitions": [] + }, + { + "name": "D09Z01S09[NW]", + "exits": [ + { + "logic": [], + "target": "D09Z01S12" + } + ], + "locations": [], + "transitions": [ + "D09Z01S09[NW]" + ] + }, + { + "name": "D17Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D17Z01S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S10[S]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S01[E]" + ] + }, + { + "name": "D17Z01S05[W]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S02[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedBotSSLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S05[S]" + }, + { + "logic": [], + "target": "D17Z01S11" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S10[S]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S05[W]", + "D17Z01S02[E]", + "D17Z01S11[W]", + "D17Z01S05[E]" + ] + }, + { + "name": "D17Z01S10[S]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S02[W]" + }, + { + "logic": [], + "target": "D17Z01S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S13[E]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S10[S]", + "D17Z01S02[N]" + ] + }, + { + "name": "D17Z01S01", + "exits": [ + { + "logic": [], + "target": "D17Z01S01[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "taranto" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "debla" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot", + "ruby" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "debla" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap9", + "ruby" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RESCUED_CHERUB_06" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D17Z01S02[W]", + "exits": [ + { + "logic": [], + "target": "D17Z01S01" + } + ], + "locations": [], + "transitions": [ + "D17Z01S02[W]" + ] + }, + { + "name": "D17Z01S14[-Cherubs1]", + "exits": [ + { + "logic": [], + "target": "D17Z01S01" + }, + { + "logic": [], + "target": "RESCUED_CHERUB_06" + } + ], + "locations": [], + "transitions": [ + "D17Z01S14[-Cherubs1]" + ] + }, + { + "name": "D17Z01S14[-Cherubs2]", + "exits": [ + { + "logic": [], + "target": "D17Z01S01" + } + ], + "locations": [], + "transitions": [ + "D17Z01S14[-Cherubs2]" + ] + }, + { + "name": "D17Z01S14[-Cherubs3]", + "exits": [ + { + "logic": [], + "target": "D17Z01S01" + } + ], + "locations": [ + "RB204" + ], + "transitions": [ + "D17Z01S14[-Cherubs3]" + ] + }, + { + "name": "D17Z01S04[N]", + "exits": [ + { + "logic": [], + "target": "D17Z01S05[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "openedBotSSLadder" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S05[S]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S04[N]" + ] + }, + { + "name": "D17Z01S13[E]", + "exits": [ + { + "logic": [], + "target": "D17Z01S10[S]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs2]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs3]" + }, + { + "logic": [ + { + "item_requirements": [ + "scapular", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "canCrossGap11" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs1]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "PR203" + } + ], + "locations": [], + "transitions": [ + "D17Z01S13[E]", + "D17Z01S10[W]", + "D17Z01S14[E]", + "D17Z01S13[W]" + ] + }, + { + "name": "D17Z01S11", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "canBeatBrotherhoodBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S11[E]" + }, + { + "logic": [ + { + "item_requirements": [ + "canBeatBrotherhoodBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S05[W]" + } + ], + "locations": [ + "BS13" + ], + "transitions": [] + }, + { + "name": "D17BZ01S01", + "exits": [ + { + "logic": [], + "target": "D17BZ01S01[relic]" + } + ], + "locations": [ + "RE01" + ], + "transitions": [] + }, + { + "name": "D17Z01S03[relic]", + "exits": [ + { + "logic": [], + "target": "D17BZ01S01" + } + ], + "locations": [], + "transitions": [ + "D17Z01S03[relic]" + ] + }, + { + "name": "D17Z01S04[W]", + "exits": [ + { + "logic": [], + "target": "D17Z01S12[E]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S04[W]" + ] + }, + { + "name": "D17Z01S04[FrontL]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "D17Z01S04[FrontL]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17BZ02S01[FrontL]" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "CO25" + }, + { + "logic": [ + { + "item_requirements": [ + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S04[FrontR]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S04[FrontL]" + ] + }, + { + "name": "D17Z01S04[FrontR]", + "exits": [ + { + "logic": [], + "target": "CO25" + }, + { + "logic": [], + "target": "D17Z01S04" + }, + { + "logic": [], + "target": "D17Z01S04[N]" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB25" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1", + "D01Z04S13[SE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blueWax1", + "D05Z02S12[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB26" + }, + { + "logic": [ + { + "item_requirements": [ + "D17Z01S04[FrontL]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17BZ02S01[FrontL]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S04[FrontR]", + "D17BZ02S01[FrontR]" + ] + }, + { + "name": "D17Z01S04", + "exits": [ + { + "logic": [], + "target": "D17Z01S04[W]" + }, + { + "logic": [], + "target": "D17Z01S04[S]" + }, + { + "logic": [], + "target": "D17Z01S04[FrontL]" + } + ], + "locations": [ + "RE401" + ], + "transitions": [] + }, + { + "name": "D17Z01S05[S]", + "exits": [ + { + "logic": [], + "target": "D17Z01S04" + }, + { + "logic": [], + "target": "D17Z01S04[N]" + }, + { + "logic": [], + "target": "D17Z01S04[FrontR]" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB25" + }, + { + "logic": [ + { + "item_requirements": [ + "blueWax1", + "D01Z04S13[SE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blueWax1", + "D05Z02S12[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "RB26" + } + ], + "locations": [], + "transitions": [ + "D17Z01S05[S]" + ] + }, + { + "name": "D17Z01S07[N]", + "exits": [ + { + "logic": [], + "target": "D17Z01S04" + } + ], + "locations": [], + "transitions": [ + "D17Z01S07[N]" + ] + }, + { + "name": "D17Z01S12[E]", + "exits": [ + { + "logic": [], + "target": "D17Z01S04" + } + ], + "locations": [], + "transitions": [ + "D17Z01S12[E]" + ] + }, + { + "name": "D17BZ02S01[FrontL]", + "exits": [ + { + "logic": [], + "target": "D17Z01S04" + } + ], + "locations": [], + "transitions": [ + "D17BZ02S01[FrontL]" + ] + }, + { + "name": "D17Z01S08", + "exits": [ + { + "logic": [], + "target": "D17Z01S08[E]" + } + ], + "locations": [ + "Sword[D17Z01S08]" + ], + "transitions": [] + }, + { + "name": "D17Z01S07[SW]", + "exits": [ + { + "logic": [], + "target": "D17Z01S08" + } + ], + "locations": [], + "transitions": [ + "D17Z01S07[SW]" + ] + }, + { + "name": "D17Z01S15[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "scapular" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[W]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs1]" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "linen", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs2]" + }, + { + "logic": [], + "target": "PR203" + }, + { + "logic": [ + { + "item_requirements": [ + "linen", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S14[-Cherubs3]" + }, + { + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D17Z01S13[E]" + } + ], + "locations": [], + "transitions": [ + "D17Z01S15[E]" + ] + }, + { + "name": "D17Z01S15", + "exits": [ + { + "logic": [], + "target": "D17Z01S15[E]" + } + ], + "locations": [ + "QI204", + "QI301" + ], + "transitions": [] + }, + { + "name": "D17Z01S14[W]", + "exits": [ + { + "logic": [], + "target": "D17Z01S15" + } + ], + "locations": [], + "transitions": [ + "D17Z01S14[W]" + ] + }, + { + "name": "D20Z01S02", + "exits": [ + { + "logic": [], + "target": "D20Z01S02[W]" + }, + { + "logic": [], + "target": "D20Z01S02[E]" + } + ], + "locations": [ + "RB108" + ], + "transitions": [] + }, + { + "name": "D20Z01S01[E]", + "exits": [ + { + "logic": [], + "target": "D20Z01S02" + } + ], + "locations": [], + "transitions": [ + "D20Z01S01[E]" + ] + }, + { + "name": "D20Z01S03[W]", + "exits": [ + { + "logic": [], + "target": "D20Z01S02" + } + ], + "locations": [], + "transitions": [ + "D20Z01S03[W]" + ] + }, + { + "name": "D20Z02S11[NW]", + "exits": [ + { + "logic": [], + "target": "D20Z01S13[E]" + }, + { + "logic": [], + "target": "D20Z01S11[W]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S11[NW]" + ] + }, + { + "name": "D20Z02S11[SW]", + "exits": [ + { + "logic": [], + "target": "D20Z02S12[E]" + }, + { + "logic": [], + "target": "D20Z01S11[W]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S11[SW]" + ] + }, + { + "name": "D20Z02S11", + "exits": [ + { + "logic": [], + "target": "D20Z02S11[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed", + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed", + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[E]" + } + ], + "locations": [ + "PR202" + ], + "transitions": [] + }, + { + "name": "D20Z01S13[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S11" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z01S13[E]" + ] + }, + { + "name": "D20Z02S10[W]", + "exits": [ + { + "logic": [], + "target": "D20Z02S11" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic", + "mourningSkipAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "HardLogic" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S11[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S10[W]" + ] + }, + { + "name": "D20Z02S12[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S11" + } + ], + "locations": [], + "transitions": [ + "D20Z02S12[E]" + ] + }, + { + "name": "D20Z03S01[W]", + "exits": [ + { + "logic": [], + "target": "D20Z01S14[E]" + }, + { + "logic": [], + "target": "D20Z01S11[W]" + } + ], + "locations": [], + "transitions": [ + "D20Z03S01[W]" + ] + }, + { + "name": "D20Z03S01", + "exits": [ + { + "logic": [], + "target": "D20Z03S01[W]" + } + ], + "locations": [ + "QI203" + ], + "transitions": [] + }, + { + "name": "D20Z01S14[E]", + "exits": [ + { + "logic": [], + "target": "D20Z03S01" + } + ], + "locations": [], + "transitions": [ + "D20Z01S14[E]" + ] + }, + { + "name": "D20Z02S02[W]", + "exits": [ + { + "logic": [], + "target": "D20Z02S03[NE]" + }, + { + "logic": [], + "target": "D04Z02S24[NW]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S02[W]" + ] + }, + { + "name": "D20Z02S05[E]", + "exits": [ + { + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D04Z02S24[NW]" + }, + { + "logic": [ + { + "item_requirements": [ + "nail" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S06[NE]" + }, + { + "logic": [], + "target": "D20Z02S06[SW]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S05[E]", + "D20Z02S04[W]", + "D20Z02S06[SE]", + "D20Z02S05[SW]" + ] + }, + { + "name": "D20Z02S02", + "exits": [ + { + "logic": [], + "target": "D20Z02S02[W]" + } + ], + "locations": [ + "RB201" + ], + "transitions": [] + }, + { + "name": "D20Z02S03[NE]", + "exits": [ + { + "logic": [], + "target": "D20Z02S02" + } + ], + "locations": [], + "transitions": [ + "D20Z02S03[NE]" + ] + }, + { + "name": "D20Z02S06[NE]", + "exits": [ + { + "logic": [], + "target": "D20Z02S05[E]" + }, + { + "logic": [], + "target": "D20Z02S06[SW]" + }, + { + "logic": [], + "target": "D20Z02S07[W]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S06[NE]", + "D20Z02S05[NW]", + "D20Z02S07[E]", + "D20Z02S06[NW]" + ] + }, + { + "name": "D20Z02S09[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S06[SW]" + }, + { + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ], + "target": "D20Z02S06[NE]" + }, + { + "logic": [], + "target": "D20Z02S05[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S09[E]" + ] + }, + { + "name": "D20Z02S09", + "exits": [ + { + "logic": [], + "target": "D20Z02S09[W]" + }, + { + "logic": [], + "target": "D20Z02S09[E]" + } + ], + "locations": [], + "transitions": [] + }, + { + "name": "D20Z02S06[SW]", + "exits": [ + { + "logic": [], + "target": "D20Z02S09" + } + ], + "locations": [], + "transitions": [ + "D20Z02S06[SW]" + ] + }, + { + "name": "D20Z02S10[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S09" + } + ], + "locations": [], + "transitions": [ + "D20Z02S10[E]" + ] + }, + { + "name": "D20Z02S08[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S07[W]" + }, + { + "logic": [], + "target": "D20Z02S06[NE]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S08[E]" + ] + }, + { + "name": "D20Z02S08", + "exits": [ + { + "logic": [], + "target": "D20Z02S08[E]" + } + ], + "locations": [ + "BossTrigger[5000]", + "QI202" + ], + "transitions": [] + }, + { + "name": "D20Z02S07[W]", + "exits": [ + { + "logic": [], + "target": "D20Z02S08" + } + ], + "locations": [], + "transitions": [ + "D20Z02S07[W]" + ] + }, + { + "name": "D20Z02S09[W]", + "exits": [ + { + "logic": [], + "target": "D20Z02S10[W]" + }, + { + "logic": [], + "target": "D20Z02S10[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S09[W]" + ] + }, + { + "name": "D20Z02S11[E]", + "exits": [ + { + "logic": [], + "target": "D20Z02S10[W]" + }, + { + "logic": [], + "target": "D20Z02S10[E]" + } + ], + "locations": [], + "transitions": [ + "D20Z02S11[E]" + ] + }, + { + "name": "RESCUED_CHERUB_08", + "exits": [], + "locations": [ + "RESCUED_CHERUB_08" + ], + "transitions": [] + }, + { + "name": "CO21", + "exits": [], + "locations": [ + "CO21" + ], + "transitions": [] + }, + { + "name": "PR16", + "exits": [], + "locations": [ + "PR16" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_13", + "exits": [], + "locations": [ + "RESCUED_CHERUB_13" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_12", + "exits": [], + "locations": [ + "RESCUED_CHERUB_12" + ], + "transitions": [] + }, + { + "name": "CO32", + "exits": [], + "locations": [ + "CO32" + ], + "transitions": [] + }, + { + "name": "CO44", + "exits": [], + "locations": [ + "CO44" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_22", + "exits": [], + "locations": [ + "RESCUED_CHERUB_22" + ], + "transitions": [] + }, + { + "name": "CO11", + "exits": [], + "locations": [ + "CO11" + ], + "transitions": [] + }, + { + "name": "QI59", + "exits": [], + "locations": [ + "QI59" + ], + "transitions": [] + }, + { + "name": "RB10", + "exits": [], + "locations": [ + "RB10" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_23", + "exits": [], + "locations": [ + "RESCUED_CHERUB_23" + ], + "transitions": [] + }, + { + "name": "QI68", + "exits": [], + "locations": [ + "QI68" + ], + "transitions": [] + }, + { + "name": "CO19", + "exits": [], + "locations": [ + "CO19" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_27", + "exits": [], + "locations": [ + "RESCUED_CHERUB_27" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_24", + "exits": [], + "locations": [ + "RESCUED_CHERUB_24" + ], + "transitions": [] + }, + { + "name": "QI46", + "exits": [], + "locations": [ + "QI46" + ], + "transitions": [] + }, + { + "name": "CO29", + "exits": [], + "locations": [ + "CO29" + ], + "transitions": [] + }, + { + "name": "QI08", + "exits": [], + "locations": [ + "QI08" + ], + "transitions": [] + }, + { + "name": "CO01", + "exits": [], + "locations": [ + "CO01" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_25", + "exits": [], + "locations": [ + "RESCUED_CHERUB_25" + ], + "transitions": [] + }, + { + "name": "RB15", + "exits": [], + "locations": [ + "RB15" + ], + "transitions": [] + }, + { + "name": "CO42", + "exits": [], + "locations": [ + "CO42" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_31", + "exits": [], + "locations": [ + "RESCUED_CHERUB_31" + ], + "transitions": [] + }, + { + "name": "CO05", + "exits": [], + "locations": [ + "CO05" + ], + "transitions": [] + }, + { + "name": "RB08", + "exits": [], + "locations": [ + "RB08" + ], + "transitions": [] + }, + { + "name": "QI47", + "exits": [], + "locations": [ + "QI47" + ], + "transitions": [] + }, + { + "name": "RB22", + "exits": [], + "locations": [ + "RB22" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_16", + "exits": [], + "locations": [ + "RESCUED_CHERUB_16" + ], + "transitions": [] + }, + { + "name": "Amanecida[D03Z01S03]", + "exits": [], + "locations": [ + "Amanecida[D03Z01S03]" + ], + "transitions": [] + }, + { + "name": "PR10", + "exits": [], + "locations": [ + "PR10" + ], + "transitions": [] + }, + { + "name": "CO33", + "exits": [], + "locations": [ + "CO33" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_18", + "exits": [], + "locations": [ + "RESCUED_CHERUB_18" + ], + "transitions": [] + }, + { + "name": "QI41", + "exits": [], + "locations": [ + "QI41" + ], + "transitions": [] + }, + { + "name": "HE06", + "exits": [], + "locations": [ + "HE06" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_37", + "exits": [], + "locations": [ + "RESCUED_CHERUB_37" + ], + "transitions": [] + }, + { + "name": "RB06", + "exits": [], + "locations": [ + "RB06" + ], + "transitions": [] + }, + { + "name": "CO23", + "exits": [], + "locations": [ + "CO23" + ], + "transitions": [] + }, + { + "name": "RE402", + "exits": [], + "locations": [ + "RE402" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_30", + "exits": [], + "locations": [ + "RESCUED_CHERUB_30" + ], + "transitions": [] + }, + { + "name": "CO34", + "exits": [], + "locations": [ + "CO34" + ], + "transitions": [] + }, + { + "name": "CO22", + "exits": [], + "locations": [ + "CO22" + ], + "transitions": [] + }, + { + "name": "RB31", + "exits": [], + "locations": [ + "RB31" + ], + "transitions": [] + }, + { + "name": "RB203", + "exits": [], + "locations": [ + "RB203" + ], + "transitions": [] + }, + { + "name": "CO28", + "exits": [], + "locations": [ + "CO28" + ], + "transitions": [] + }, + { + "name": "QI03", + "exits": [], + "locations": [ + "QI03" + ], + "transitions": [] + }, + { + "name": "CO06", + "exits": [], + "locations": [ + "CO06" + ], + "transitions": [] + }, + { + "name": "PR12", + "exits": [], + "locations": [ + "PR12" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_36", + "exits": [], + "locations": [ + "RESCUED_CHERUB_36" + ], + "transitions": [] + }, + { + "name": "RB11", + "exits": [], + "locations": [ + "RB11" + ], + "transitions": [] + }, + { + "name": "QI72", + "exits": [], + "locations": [ + "QI72" + ], + "transitions": [] + }, + { + "name": "RB16", + "exits": [], + "locations": [ + "RB16" + ], + "transitions": [] + }, + { + "name": "CO27", + "exits": [], + "locations": [ + "CO27" + ], + "transitions": [] + }, + { + "name": "QI69", + "exits": [], + "locations": [ + "QI69" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_34", + "exits": [], + "locations": [ + "RESCUED_CHERUB_34" + ], + "transitions": [] + }, + { + "name": "RESCUED_CHERUB_06", + "exits": [], + "locations": [ + "RESCUED_CHERUB_06" + ], + "transitions": [] + }, + { + "name": "PR203", + "exits": [], + "locations": [ + "PR203" + ], + "transitions": [] + }, + { + "name": "CO25", + "exits": [], + "locations": [ + "CO25" + ], + "transitions": [] + }, + { + "name": "RB202", + "exits": [], + "locations": [ + "RB202" + ], + "transitions": [] + }, + { + "name": "RB18", + "exits": [], + "locations": [ + "RB18" + ], + "transitions": [] + }, + { + "name": "RB25", + "exits": [], + "locations": [ + "RB25" + ], + "transitions": [] + }, + { + "name": "RB26", + "exits": [], + "locations": [ + "RB26" + ], + "transitions": [] + } +] +locations = [ + { + "name": "PR14", + "logic": [] + }, + { + "name": "RB07", + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO04", + "logic": [] + }, + { + "name": "QI55", + "logic": [ + { + "item_requirements": [ + "blood", + "dash", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_07", + "logic": [] + }, + { + "name": "QI31", + "logic": [] + }, + { + "name": "RE02", + "logic": [ + { + "item_requirements": [ + "hand" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RE04", + "logic": [ + { + "item_requirements": [ + "cloth" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RE10", + "logic": [ + { + "item_requirements": [ + "hatchedEgg" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB01", + "logic": [] + }, + { + "name": "QI66", + "logic": [ + { + "item_requirements": [ + "herbs1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Tirso[500]", + "logic": [ + { + "item_requirements": [ + "herbs2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Tirso[1000]", + "logic": [ + { + "item_requirements": [ + "herbs3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Tirso[2000]", + "logic": [ + { + "item_requirements": [ + "herbs4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Tirso[5000]", + "logic": [ + { + "item_requirements": [ + "herbs5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Tirso[10000]", + "logic": [ + { + "item_requirements": [ + "herbs6" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI56", + "logic": [ + { + "item_requirements": [ + "herbs6", + "canBeatMercyBoss", + "canBeatConventBoss", + "canBeatGrievanceBoss", + "canBeatMothersBoss", + "canBeatCanvasesBoss", + "canBeatPrisonBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_08", + "logic": [] + }, + { + "name": "Lvdovico[500]", + "logic": [ + { + "item_requirements": [ + "tentudiaRemains1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Lvdovico[1000]", + "logic": [ + { + "item_requirements": [ + "tentudiaRemains2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR03", + "logic": [ + { + "item_requirements": [ + "tentudiaRemains3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI01", + "logic": [] + }, + { + "name": "CO43", + "logic": [] + }, + { + "name": "CO16", + "logic": [] + }, + { + "name": "Sword[D01Z02S06]", + "logic": [] + }, + { + "name": "QI65", + "logic": [] + }, + { + "name": "RB104", + "logic": [] + }, + { + "name": "RB105", + "logic": [] + }, + { + "name": "PR11", + "logic": [ + { + "item_requirements": [ + "marksOfRefuge3", + "cord", + "D06Z01S02[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[250]", + "logic": [ + { + "item_requirements": [ + "bones4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[500]", + "logic": [ + { + "item_requirements": [ + "bones8" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[750]", + "logic": [ + { + "item_requirements": [ + "bones12" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[1000]", + "logic": [ + { + "item_requirements": [ + "bones16" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[1250]", + "logic": [ + { + "item_requirements": [ + "bones20" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[1500]", + "logic": [ + { + "item_requirements": [ + "bones24" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[1750]", + "logic": [ + { + "item_requirements": [ + "bones28" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[2000]", + "logic": [ + { + "item_requirements": [ + "bones32" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[2500]", + "logic": [ + { + "item_requirements": [ + "bones36" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[3000]", + "logic": [ + { + "item_requirements": [ + "bones40" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Undertaker[5000]", + "logic": [ + { + "item_requirements": [ + "bones44" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI201", + "logic": [ + { + "item_requirements": [ + "canBeatOssuaryBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB04", + "logic": [] + }, + { + "name": "CO14", + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO36", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_10", + "logic": [] + }, + { + "name": "QI06", + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "boots" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB20", + "logic": [ + { + "item_requirements": [ + "redentoRooms3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE02", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_38", + "logic": [ + { + "item_requirements": [ + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "ruby" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "chargeBeam" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "rangedAttack" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "preciseSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO30", + "logic": [] + }, + { + "name": "CO03", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_09", + "logic": [] + }, + { + "name": "PR01", + "logic": [] + }, + { + "name": "RB17", + "logic": [] + }, + { + "name": "QI48", + "logic": [] + }, + { + "name": "CO21", + "logic": [] + }, + { + "name": "CO38", + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_33", + "logic": [ + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "BS01", + "logic": [ + { + "item_requirements": [ + "canBeatMercyBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI38", + "logic": [] + }, + { + "name": "QI58", + "logic": [] + }, + { + "name": "RB05", + "logic": [] + }, + { + "name": "RB09", + "logic": [] + }, + { + "name": "CO09", + "logic": [] + }, + { + "name": "QI67", + "logic": [ + { + "item_requirements": [ + "dash", + "canWaterJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR16", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_13", + "logic": [] + }, + { + "name": "Oil[D01Z05S07]", + "logic": [] + }, + { + "name": "QI12", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_14", + "logic": [] + }, + { + "name": "QI45", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_12", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_11", + "logic": [] + }, + { + "name": "CO41", + "logic": [] + }, + { + "name": "CO32", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_15", + "logic": [] + }, + { + "name": "Lady[D01Z05S22]", + "logic": [] + }, + { + "name": "QI75", + "logic": [] + }, + { + "name": "Sword[D01Z05S24]", + "logic": [] + }, + { + "name": "CO44", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_22", + "logic": [] + }, + { + "name": "Lady[D01Z05S26]", + "logic": [] + }, + { + "name": "RB03", + "logic": [] + }, + { + "name": "QI101", + "logic": [] + }, + { + "name": "CO11", + "logic": [] + }, + { + "name": "QI59", + "logic": [] + }, + { + "name": "RB10", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_23", + "logic": [] + }, + { + "name": "QI20", + "logic": [] + }, + { + "name": "QI68", + "logic": [] + }, + { + "name": "QI07", + "logic": [] + }, + { + "name": "CO19", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_27", + "logic": [] + }, + { + "name": "PR04", + "logic": [ + { + "item_requirements": [ + "driedFlowers" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE05", + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_24", + "logic": [] + }, + { + "name": "QI46", + "logic": [] + }, + { + "name": "CO29", + "logic": [] + }, + { + "name": "QI08", + "logic": [] + }, + { + "name": "RB32", + "logic": [] + }, + { + "name": "CO01", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_25", + "logic": [] + }, + { + "name": "RB15", + "logic": [] + }, + { + "name": "RB38", + "logic": [] + }, + { + "name": "CO42", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_31", + "logic": [] + }, + { + "name": "Oil[D02Z02S10]", + "logic": [] + }, + { + "name": "QI53", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_26", + "logic": [] + }, + { + "name": "Lady[D02Z02S12]", + "logic": [] + }, + { + "name": "HE11", + "logic": [] + }, + { + "name": "RB106", + "logic": [] + }, + { + "name": "Amanecida[D02Z02S14]", + "logic": [ + { + "item_requirements": [ + "canBeatGraveyardBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI11", + "logic": [] + }, + { + "name": "RB37", + "logic": [] + }, + { + "name": "RB02", + "logic": [] + }, + { + "name": "CO05", + "logic": [] + }, + { + "name": "RB08", + "logic": [] + }, + { + "name": "CO15", + "logic": [] + }, + { + "name": "HE03", + "logic": [ + { + "item_requirements": [ + "canSurvivePoison1", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Sword[D02Z03S13]", + "logic": [] + }, + { + "name": "Lady[D02Z03S15]", + "logic": [] + }, + { + "name": "RB24", + "logic": [] + }, + { + "name": "QI61", + "logic": [] + }, + { + "name": "BS03", + "logic": [ + { + "item_requirements": [ + "canBeatConventBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI40", + "logic": [] + }, + { + "name": "QI57", + "logic": [ + { + "item_requirements": [ + "emptyThimble" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB107", + "logic": [] + }, + { + "name": "CO13", + "logic": [] + }, + { + "name": "QI47", + "logic": [] + }, + { + "name": "RB22", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_16", + "logic": [] + }, + { + "name": "Amanecida[D03Z01S03]", + "logic": [] + }, + { + "name": "QI63", + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB13", + "logic": [ + { + "item_requirements": [ + "canBeatPerpetua" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI14", + "logic": [ + { + "item_requirements": [ + "canBeatPerpetua", + "egg" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO08", + "logic": [] + }, + { + "name": "PR10", + "logic": [] + }, + { + "name": "CO33", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_18", + "logic": [] + }, + { + "name": "QI19", + "logic": [] + }, + { + "name": "CO07", + "logic": [] + }, + { + "name": "QI41", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_17", + "logic": [] + }, + { + "name": "HE06", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_37", + "logic": [] + }, + { + "name": "QI52", + "logic": [] + }, + { + "name": "RB28", + "logic": [ + { + "item_requirements": [ + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI103", + "logic": [] + }, + { + "name": "QI44", + "logic": [ + { + "item_requirements": [ + "canSurvivePoison1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO12", + "logic": [ + { + "item_requirements": [ + "canSurvivePoison1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RE07", + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_19", + "logic": [ + { + "item_requirements": [ + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "taranto", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI10", + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_21", + "logic": [ + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "aubade", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap11", + "aubade", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap7", + "aubade", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_20", + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "lorquiana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "zarabanda" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI13", + "logic": [ + { + "item_requirements": [ + "ceremonyItems3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB06", + "logic": [] + }, + { + "name": "Oil[D03Z03S13]", + "logic": [] + }, + { + "name": "BS04", + "logic": [ + { + "item_requirements": [ + "canBeatGrievanceBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI39", + "logic": [] + }, + { + "name": "CO23", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_35", + "logic": [] + }, + { + "name": "RB14", + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI37", + "logic": [] + }, + { + "name": "CO39", + "logic": [ + { + "item_requirements": [ + "canClimbOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_28", + "logic": [] + }, + { + "name": "RB21", + "logic": [ + { + "item_requirements": [ + "redentoRooms4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Amanecida[D04Z01S04]", + "logic": [ + { + "item_requirements": [ + "canBeatPatioBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI102", + "logic": [] + }, + { + "name": "RE402", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_30", + "logic": [] + }, + { + "name": "CO17", + "logic": [] + }, + { + "name": "CO34", + "logic": [] + }, + { + "name": "CO35", + "logic": [ + { + "item_requirements": [ + "dash", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "dash", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB33", + "logic": [] + }, + { + "name": "CO20", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_29", + "logic": [] + }, + { + "name": "Sword[D04Z02S12]", + "logic": [] + }, + { + "name": "Oil[D04Z02S14]", + "logic": [] + }, + { + "name": "QI60", + "logic": [] + }, + { + "name": "HE01", + "logic": [ + { + "item_requirements": [ + "wallClimb", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "BS05", + "logic": [ + { + "item_requirements": [ + "canBeatMothersBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RE03", + "logic": [] + }, + { + "name": "QI54", + "logic": [ + { + "item_requirements": [ + "redentoRooms5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE201", + "logic": [ + { + "item_requirements": [ + "traitorEyes2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR201", + "logic": [ + { + "item_requirements": [ + "miriamRooms5", + "dash", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO18", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_01", + "logic": [] + }, + { + "name": "QI50", + "logic": [ + { + "item_requirements": [ + "canBreakHoles" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO22", + "logic": [] + }, + { + "name": "RB31", + "logic": [] + }, + { + "name": "PR07", + "logic": [ + { + "item_requirements": [ + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyBounce", + "canCrossGap2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB203", + "logic": [] + }, + { + "name": "CO28", + "logic": [] + }, + { + "name": "RB30", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_02", + "logic": [] + }, + { + "name": "Sword[D05Z01S13]", + "logic": [] + }, + { + "name": "Lady[D05Z01S14]", + "logic": [] + }, + { + "name": "QI62", + "logic": [] + }, + { + "name": "PR15", + "logic": [] + }, + { + "name": "Oil[D05Z01S19]", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_32", + "logic": [ + { + "item_requirements": [ + "blood", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "blood", + "canCrossGap5", + "pillar" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "zarabanda" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "obscureSkipsAllowed", + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB301", + "logic": [] + }, + { + "name": "QI64", + "logic": [] + }, + { + "name": "HE07", + "logic": [] + }, + { + "name": "RE05", + "logic": [ + { + "item_requirements": [ + "cherubs20" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR05", + "logic": [ + { + "item_requirements": [ + "cherubs38" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO31", + "logic": [] + }, + { + "name": "BS06", + "logic": [ + { + "item_requirements": [ + "canBeatCanvasesBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI104", + "logic": [ + { + "item_requirements": [ + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB12", + "logic": [] + }, + { + "name": "QI49", + "logic": [] + }, + { + "name": "QI71", + "logic": [] + }, + { + "name": "QI02", + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI03", + "logic": [] + }, + { + "name": "QI04", + "logic": [ + { + "item_requirements": [ + "canBeatLegionary" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Sword[D06Z01S11]", + "logic": [] + }, + { + "name": "CO06", + "logic": [] + }, + { + "name": "PR12", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_36", + "logic": [] + }, + { + "name": "CO40", + "logic": [ + { + "item_requirements": [ + "wallClimb", + "canCrossGap10" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canClimbOnRoot", + "blood" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canClimbOnRoot", + "preciseSkipsAllowed", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canClimbOnRoot", + "preciseSkipsAllowed", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "canClimbOnRoot", + "doubleJump", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE04", + "logic": [] + }, + { + "name": "Lady[D06Z01S24]", + "logic": [] + }, + { + "name": "BS16", + "logic": [ + { + "item_requirements": [ + "canBeatRooftopsBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR08", + "logic": [] + }, + { + "name": "BS12", + "logic": [ + { + "item_requirements": [ + "holyWounds3", + "canBeatBridgeBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR09", + "logic": [ + { + "item_requirements": [ + "holyWounds3", + "canBeatBridgeBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE101", + "logic": [] + }, + { + "name": "QI105", + "logic": [] + }, + { + "name": "LaudesBossTrigger[30000]", + "logic": [ + { + "item_requirements": [ + "canBeatHallBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Amanecida[D09Z01S01]", + "logic": [ + { + "item_requirements": [ + "canBeatWallBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI51", + "logic": [] + }, + { + "name": "RB11", + "logic": [] + }, + { + "name": "BS14", + "logic": [ + { + "item_requirements": [ + "canBeatPrisonBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RESCUED_CHERUB_05", + "logic": [] + }, + { + "name": "QI72", + "logic": [] + }, + { + "name": "RB16", + "logic": [] + }, + { + "name": "QI70", + "logic": [] + }, + { + "name": "CO27", + "logic": [] + }, + { + "name": "Oil[D09Z01S12]", + "logic": [] + }, + { + "name": "CO10", + "logic": [] + }, + { + "name": "QI69", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_03", + "logic": [] + }, + { + "name": "CO24", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_34", + "logic": [] + }, + { + "name": "CO26", + "logic": [] + }, + { + "name": "CO02", + "logic": [ + { + "item_requirements": [ + "blood", + "canClimbOnRoot", + "canSurvivePoison2", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CO37", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_04", + "logic": [ + { + "item_requirements": [ + "canSurvivePoison1", + "dash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "debla" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "taranto" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cante" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "verdiales" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "aubade" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "cantina" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB204", + "logic": [] + }, + { + "name": "RESCUED_CHERUB_06", + "logic": [] + }, + { + "name": "RE401", + "logic": [ + { + "item_requirements": [ + "redentoRooms2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Sword[D17Z01S08]", + "logic": [] + }, + { + "name": "BS13", + "logic": [ + { + "item_requirements": [ + "canBeatBrotherhoodBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR203", + "logic": [] + }, + { + "name": "QI204", + "logic": [ + { + "item_requirements": [ + "canBeatBridgeBoss", + "holyWounds3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI301", + "logic": [ + { + "item_requirements": [ + "canBeatRooftopsBoss", + "trueHeart" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RE01", + "logic": [] + }, + { + "name": "CO25", + "logic": [] + }, + { + "name": "RB108", + "logic": [] + }, + { + "name": "RB202", + "logic": [] + }, + { + "name": "RB201", + "logic": [] + }, + { + "name": "BossTrigger[5000]", + "logic": [ + { + "item_requirements": [ + "canBeatMourningBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI202", + "logic": [ + { + "item_requirements": [ + "canBeatMourningBoss" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR202", + "logic": [] + }, + { + "name": "QI203", + "logic": [] + }, + { + "name": "QI106", + "logic": [] + }, + { + "name": "RB18", + "logic": [] + }, + { + "name": "RB19", + "logic": [ + { + "item_requirements": [ + "redWax1", + "D02Z03S18[SE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "redWax1", + "D02Z03S07[NW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB25", + "logic": [] + }, + { + "name": "RB26", + "logic": [] + }, + { + "name": "QI107", + "logic": [ + { + "item_requirements": [ + "amanecidaRooms1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI108", + "logic": [ + { + "item_requirements": [ + "amanecidaRooms2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI109", + "logic": [ + { + "item_requirements": [ + "amanecidaRooms3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI110", + "logic": [ + { + "item_requirements": [ + "amanecidaRooms4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "PR101", + "logic": [ + { + "item_requirements": [ + "amanecidaRooms4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI32", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI33", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI34", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI35", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI79", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI80", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms6" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "QI81", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Arena_NailManager[1000]", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms1" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "HE10", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms2" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Arena_NailManager[3000]", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB34", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms4" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "Arena_NailManager[5000]", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB35", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms6" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RB36", + "logic": [ + { + "item_requirements": [ + "guiltBead", + "guiltRooms7" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "COMBO_1", + "logic": [ + { + "item_requirements": [ + "swordRooms1", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "COMBO_2", + "logic": [ + { + "item_requirements": [ + "swordRooms2", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "COMBO_3", + "logic": [ + { + "item_requirements": [ + "swordRooms4", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CHARGED_1", + "logic": [ + { + "item_requirements": [ + "swordRooms1", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CHARGED_2", + "logic": [ + { + "item_requirements": [ + "swordRooms3", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "CHARGED_3", + "logic": [ + { + "item_requirements": [ + "swordRooms6", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RANGED_1", + "logic": [ + { + "item_requirements": [ + "swordRooms2", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RANGED_2", + "logic": [ + { + "item_requirements": [ + "swordRooms5", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "RANGED_3", + "logic": [ + { + "item_requirements": [ + "swordRooms7", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "VERTICAL_1", + "logic": [ + { + "item_requirements": [ + "swordRooms1", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "VERTICAL_2", + "logic": [ + { + "item_requirements": [ + "swordRooms3", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "VERTICAL_3", + "logic": [ + { + "item_requirements": [ + "swordRooms6", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "LUNGE_1", + "logic": [ + { + "item_requirements": [ + "swordRooms1", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "LUNGE_2", + "logic": [ + { + "item_requirements": [ + "swordRooms2", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "LUNGE_3", + "logic": [ + { + "item_requirements": [ + "swordRooms4", + "tears0" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + } +] +transitions = [ + { + "name": "D01Z01S01[W]", + "logic": [] + }, + { + "name": "D01Z01S01[E]", + "logic": [] + }, + { + "name": "D01Z01S01[S]", + "logic": [] + }, + { + "name": "D01Z01S02[W]", + "logic": [] + }, + { + "name": "D01Z01S02[E]", + "logic": [] + }, + { + "name": "D01Z01S03[W]", + "logic": [] + }, + { + "name": "D01Z01S03[E]", + "logic": [] + }, + { + "name": "D01Z01S07[W]", + "logic": [] + }, + { + "name": "D01Z01S07[E]", + "logic": [] + }, + { + "name": "D01Z02S01[W]", + "logic": [] + }, + { + "name": "D01Z02S01[E]", + "logic": [] + }, + { + "name": "D01Z02S02[SW]", + "logic": [] + }, + { + "name": "D01Z02S02[SE]", + "logic": [] + }, + { + "name": "D01Z02S02[W]", + "logic": [] + }, + { + "name": "D01Z02S02[E]", + "logic": [] + }, + { + "name": "D01Z02S02[NE]", + "logic": [] + }, + { + "name": "D01Z02S03[W]", + "logic": [] + }, + { + "name": "D01Z02S03[NW]", + "logic": [] + }, + { + "name": "D01Z02S03[E]", + "logic": [] + }, + { + "name": "D01Z02S03[church]", + "logic": [] + }, + { + "name": "D01Z02S04[W]", + "logic": [] + }, + { + "name": "D01Z02S04[E]", + "logic": [] + }, + { + "name": "D01Z02S04[Ossary]", + "logic": [] + }, + { + "name": "D01Z02S05[W]", + "logic": [] + }, + { + "name": "D01Z02S05[E]", + "logic": [] + }, + { + "name": "D01Z02S06[W]", + "logic": [] + }, + { + "name": "D01Z02S06[E]", + "logic": [] + }, + { + "name": "D01Z02S07[E]", + "logic": [] + }, + { + "name": "D01BZ04S01[church]", + "logic": [] + }, + { + "name": "D01BZ06S01[Ossary]", + "logic": [] + }, + { + "name": "D01BZ06S01[E]", + "logic": [] + }, + { + "name": "D01BZ08S01[W]", + "logic": [] + }, + { + "name": "D01Z03S01[W]", + "logic": [] + }, + { + "name": "D01Z03S01[E]", + "logic": [] + }, + { + "name": "D01Z03S01[SE]", + "logic": [] + }, + { + "name": "D01Z03S02[W]", + "logic": [] + }, + { + "name": "D01Z03S02[SW]", + "logic": [] + }, + { + "name": "D01Z03S02[E]", + "logic": [] + }, + { + "name": "D01Z03S02[S]", + "logic": [] + }, + { + "name": "D01Z03S03[W]", + "logic": [] + }, + { + "name": "D01Z03S03[E]", + "logic": [] + }, + { + "name": "D01Z03S03[-Cherubs]", + "logic": [] + }, + { + "name": "D01Z03S04[SW]", + "logic": [] + }, + { + "name": "D01Z03S04[W]", + "logic": [] + }, + { + "name": "D01Z03S04[NW]", + "logic": [] + }, + { + "name": "D01Z03S04[SE]", + "logic": [] + }, + { + "name": "D01Z03S04[E]", + "logic": [] + }, + { + "name": "D01Z03S05[W]", + "logic": [] + }, + { + "name": "D01Z03S05[E]", + "logic": [] + }, + { + "name": "D01Z03S05[Cherubs]", + "logic": [] + }, + { + "name": "D01Z03S06[W]", + "logic": [] + }, + { + "name": "D01Z03S06[E]", + "logic": [] + }, + { + "name": "D01Z03S07[E]", + "logic": [] + }, + { + "name": "D01Z03S07[-Cherubs]", + "logic": [] + }, + { + "name": "D01Z04S01[NW]", + "logic": [] + }, + { + "name": "D01Z04S01[NE]", + "logic": [] + }, + { + "name": "D01Z04S01[W]", + "logic": [] + }, + { + "name": "D01Z04S01[E]", + "logic": [] + }, + { + "name": "D01Z04S01[SE]", + "logic": [] + }, + { + "name": "D01Z04S01[S]", + "logic": [] + }, + { + "name": "D01Z04S02[W]", + "logic": [] + }, + { + "name": "D01Z04S03[E]", + "logic": [] + }, + { + "name": "D01Z04S05[NW]", + "logic": [] + }, + { + "name": "D01Z04S05[SW]", + "logic": [] + }, + { + "name": "D01Z04S06[E]", + "logic": [] + }, + { + "name": "D01Z04S06[NW]", + "logic": [] + }, + { + "name": "D01Z04S06[SW]", + "logic": [] + }, + { + "name": "D01Z04S07[W]", + "logic": [] + }, + { + "name": "D01Z04S08[E]", + "logic": [] + }, + { + "name": "D01Z04S09[W]", + "logic": [] + }, + { + "name": "D01Z04S09[E]", + "logic": [] + }, + { + "name": "D01Z04S09[C]", + "logic": [] + }, + { + "name": "D01Z04S10[NW]", + "logic": [] + }, + { + "name": "D01Z04S10[SW]", + "logic": [] + }, + { + "name": "D01Z04S10[SE]", + "logic": [] + }, + { + "name": "D01Z04S11[NE]", + "logic": [] + }, + { + "name": "D01Z04S12[NW]", + "logic": [] + }, + { + "name": "D01Z04S12[W]", + "logic": [] + }, + { + "name": "D01Z04S12[SE]", + "logic": [] + }, + { + "name": "D01Z04S13[NW]", + "logic": [] + }, + { + "name": "D01Z04S13[NE]", + "logic": [] + }, + { + "name": "D01Z04S13[SW]", + "logic": [] + }, + { + "name": "D01Z04S13[SE]", + "logic": [ + { + "item_requirements": [ + "D01Z04S16[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "canAirStall" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "wheel" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canDiveLaser", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D01Z04S14[E]", + "logic": [] + }, + { + "name": "D01Z04S15[N]", + "logic": [] + }, + { + "name": "D01Z04S15[NE]", + "logic": [] + }, + { + "name": "D01Z04S15[W]", + "logic": [] + }, + { + "name": "D01Z04S15[E]", + "logic": [] + }, + { + "name": "D01Z04S15[SW]", + "logic": [] + }, + { + "name": "D01Z04S15[SE]", + "logic": [] + }, + { + "name": "D01Z04S16[W]", + "logic": [] + }, + { + "name": "D01Z04S16[E]", + "logic": [] + }, + { + "name": "D01Z04S17[W]", + "logic": [] + }, + { + "name": "D01Z04S18[W]", + "logic": [] + }, + { + "name": "D01Z04S18[E]", + "logic": [] + }, + { + "name": "D01Z04S19[W]", + "logic": [] + }, + { + "name": "D01Z04S19[E]", + "logic": [] + }, + { + "name": "D01BZ02S01[C]", + "logic": [] + }, + { + "name": "D01Z05S01[N]", + "logic": [] + }, + { + "name": "D01Z05S01[W]", + "logic": [] + }, + { + "name": "D01Z05S01[S]", + "logic": [] + }, + { + "name": "D01Z05S02[N]", + "logic": [] + }, + { + "name": "D01Z05S02[W]", + "logic": [] + }, + { + "name": "D01Z05S02[E]", + "logic": [] + }, + { + "name": "D01Z05S02[S]", + "logic": [] + }, + { + "name": "D01Z05S03[NW]", + "logic": [] + }, + { + "name": "D01Z05S03[NE]", + "logic": [] + }, + { + "name": "D01Z05S03[W]", + "logic": [] + }, + { + "name": "D01Z05S03[E]", + "logic": [] + }, + { + "name": "D01Z05S03[S]", + "logic": [] + }, + { + "name": "D01Z05S04[W]", + "logic": [] + }, + { + "name": "D01Z05S04[E]", + "logic": [] + }, + { + "name": "D01Z05S05[N]", + "logic": [] + }, + { + "name": "D01Z05S05[NW]", + "logic": [] + }, + { + "name": "D01Z05S05[NE]", + "logic": [] + }, + { + "name": "D01Z05S05[SW]", + "logic": [] + }, + { + "name": "D01Z05S05[E]", + "logic": [] + }, + { + "name": "D01Z05S06[W]", + "logic": [] + }, + { + "name": "D01Z05S07[E]", + "logic": [] + }, + { + "name": "D01Z05S08[W]", + "logic": [] + }, + { + "name": "D01Z05S09[NW]", + "logic": [] + }, + { + "name": "D01Z05S09[SE]", + "logic": [] + }, + { + "name": "D01Z05S10[W]", + "logic": [] + }, + { + "name": "D01Z05S10[NE]", + "logic": [] + }, + { + "name": "D01Z05S10[SE]", + "logic": [] + }, + { + "name": "D01Z05S10[S]", + "logic": [] + }, + { + "name": "D01Z05S11[W]", + "logic": [] + }, + { + "name": "D01Z05S12[W]", + "logic": [] + }, + { + "name": "D01Z05S12[E]", + "logic": [] + }, + { + "name": "D01Z05S13[SW]", + "logic": [] + }, + { + "name": "D01Z05S13[N]", + "logic": [] + }, + { + "name": "D01Z05S13[E]", + "logic": [] + }, + { + "name": "D01Z05S14[W]", + "logic": [] + }, + { + "name": "D01Z05S14[N]", + "logic": [] + }, + { + "name": "D01Z05S14[SE]", + "logic": [] + }, + { + "name": "D01Z05S15[W]", + "logic": [] + }, + { + "name": "D01Z05S15[SW]", + "logic": [] + }, + { + "name": "D01Z05S15[SE]", + "logic": [] + }, + { + "name": "D01Z05S16[N]", + "logic": [] + }, + { + "name": "D01Z05S16[SW]", + "logic": [] + }, + { + "name": "D01Z05S16[SE]", + "logic": [] + }, + { + "name": "D01Z05S17[W]", + "logic": [] + }, + { + "name": "D01Z05S17[E]", + "logic": [] + }, + { + "name": "D01Z05S18[E]", + "logic": [] + }, + { + "name": "D01Z05S19[W]", + "logic": [] + }, + { + "name": "D01Z05S19[E]", + "logic": [] + }, + { + "name": "D01Z05S20[W]", + "logic": [] + }, + { + "name": "D01Z05S20[N]", + "logic": [] + }, + { + "name": "D01Z05S21[W]", + "logic": [] + }, + { + "name": "D01Z05S21[E]", + "logic": [] + }, + { + "name": "D01Z05S21[Reward]", + "logic": [] + }, + { + "name": "D01Z05S22[E]", + "logic": [] + }, + { + "name": "D01Z05S23[W]", + "logic": [] + }, + { + "name": "D01Z05S23[E]", + "logic": [] + }, + { + "name": "D01Z05S24[W]", + "logic": [] + }, + { + "name": "D01Z05S24[E]", + "logic": [] + }, + { + "name": "D01Z05S25[NE]", + "logic": [] + }, + { + "name": "D01Z05S25[W]", + "logic": [] + }, + { + "name": "D01Z05S25[E]", + "logic": [ + { + "item_requirements": [ + "D01Z05S21[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana", + "obscureSkipsAllowed", + "linen" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana", + "obscureSkipsAllowed", + "D01Z05S23[E]", + "canWalkOnRoot" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana", + "obscureSkipsAllowed", + "D01Z05S23[E]", + "canCrossGap3" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D01Z05S25[SW]", + "logic": [] + }, + { + "name": "D01Z05S25[SE]", + "logic": [] + }, + { + "name": "D01Z05S25[EchoesW]", + "logic": [] + }, + { + "name": "D01Z05S25[EchoesE]", + "logic": [] + }, + { + "name": "D01Z05S26[W]", + "logic": [] + }, + { + "name": "D01Z05S27[E]", + "logic": [] + }, + { + "name": "D01BZ05S01[Reward]", + "logic": [] + }, + { + "name": "D01BZ09S01[W]", + "logic": [] + }, + { + "name": "D01Z06S01[N]", + "logic": [] + }, + { + "name": "D01Z06S01[Santos]", + "logic": [] + }, + { + "name": "D01BZ07S01[Santos]", + "logic": [] + }, + { + "name": "D02Z01S01[SW]", + "logic": [] + }, + { + "name": "D02Z01S01[W]", + "logic": [] + }, + { + "name": "D02Z01S01[SE]", + "logic": [] + }, + { + "name": "D02Z01S02[W]", + "logic": [] + }, + { + "name": "D02Z01S02[NW]", + "logic": [] + }, + { + "name": "D02Z01S02[E]", + "logic": [] + }, + { + "name": "D02Z01S02[NE]", + "logic": [] + }, + { + "name": "D02Z01S02[]", + "logic": [] + }, + { + "name": "D02Z01S03[SW]", + "logic": [] + }, + { + "name": "D02Z01S03[W]", + "logic": [] + }, + { + "name": "D02Z01S03[SE]", + "logic": [] + }, + { + "name": "D02Z01S04[E]", + "logic": [] + }, + { + "name": "D02Z01S04[-N]", + "logic": [] + }, + { + "name": "D02Z01S05[E]", + "logic": [] + }, + { + "name": "D02Z01S06[W]", + "logic": [] + }, + { + "name": "D02Z01S06[E]", + "logic": [] + }, + { + "name": "D02Z01S08[E]", + "logic": [] + }, + { + "name": "D02Z01S09[W]", + "logic": [] + }, + { + "name": "D02Z01S09[-CherubsL]", + "logic": [] + }, + { + "name": "D02Z01S09[-CherubsR]", + "logic": [] + }, + { + "name": "D02Z02S01[W]", + "logic": [] + }, + { + "name": "D02Z02S01[NW]", + "logic": [] + }, + { + "name": "D02Z02S01[E]", + "logic": [] + }, + { + "name": "D02Z02S02[SE]", + "logic": [] + }, + { + "name": "D02Z02S02[NW]", + "logic": [] + }, + { + "name": "D02Z02S02[NE]", + "logic": [] + }, + { + "name": "D02Z02S02[-CherubsR]", + "logic": [] + }, + { + "name": "D02Z02S03[SW]", + "logic": [] + }, + { + "name": "D02Z02S03[NW]", + "logic": [] + }, + { + "name": "D02Z02S03[NE]", + "logic": [] + }, + { + "name": "D02Z02S03[-Cherubs]", + "logic": [] + }, + { + "name": "D02Z02S04[W]", + "logic": [] + }, + { + "name": "D02Z02S04[SE]", + "logic": [] + }, + { + "name": "D02Z02S04[E]", + "logic": [] + }, + { + "name": "D02Z02S04[NE]", + "logic": [] + }, + { + "name": "D02Z02S04[-CherubsL]", + "logic": [] + }, + { + "name": "D02Z02S05[SW]", + "logic": [] + }, + { + "name": "D02Z02S05[W]", + "logic": [ + { + "item_requirements": [ + "D02Z02S04[NE]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyBounce" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D02Z02S05[SE]", + "logic": [] + }, + { + "name": "D02Z02S05[E]", + "logic": [] + }, + { + "name": "D02Z02S05[NW]", + "logic": [] + }, + { + "name": "D02Z02S05[-CherubsL]", + "logic": [] + }, + { + "name": "D02Z02S05[-CherubsR]", + "logic": [] + }, + { + "name": "D02Z02S06[E]", + "logic": [] + }, + { + "name": "D02Z02S07[W]", + "logic": [] + }, + { + "name": "D02Z02S07[E]", + "logic": [] + }, + { + "name": "D02Z02S08[W]", + "logic": [] + }, + { + "name": "D02Z02S08[E]", + "logic": [] + }, + { + "name": "D02Z02S08[C]", + "logic": [] + }, + { + "name": "D02Z02S09[E]", + "logic": [] + }, + { + "name": "D02Z02S10[W]", + "logic": [] + }, + { + "name": "D02Z02S11[W]", + "logic": [] + }, + { + "name": "D02Z02S11[SE]", + "logic": [] + }, + { + "name": "D02Z02S11[E]", + "logic": [] + }, + { + "name": "D02Z02S11[NW]", + "logic": [] + }, + { + "name": "D02Z02S11[NE]", + "logic": [] + }, + { + "name": "D02Z02S11[-Cherubs]", + "logic": [] + }, + { + "name": "D02Z02S12[W]", + "logic": [] + }, + { + "name": "D02Z02S13[W]", + "logic": [] + }, + { + "name": "D02Z02S14[W]", + "logic": [] + }, + { + "name": "D02Z02S14[-Cherubs]", + "logic": [] + }, + { + "name": "D02BZ02S01[C]", + "logic": [] + }, + { + "name": "D02Z03S01[W]", + "logic": [] + }, + { + "name": "D02Z03S01[E]", + "logic": [] + }, + { + "name": "D02Z03S02[S]", + "logic": [] + }, + { + "name": "D02Z03S02[W]", + "logic": [] + }, + { + "name": "D02Z03S02[NW]", + "logic": [] + }, + { + "name": "D02Z03S02[NE]", + "logic": [] + }, + { + "name": "D02Z03S02[N]", + "logic": [] + }, + { + "name": "D02Z03S03[W]", + "logic": [] + }, + { + "name": "D02Z03S03[NW]", + "logic": [] + }, + { + "name": "D02Z03S03[E]", + "logic": [] + }, + { + "name": "D02Z03S05[S]", + "logic": [] + }, + { + "name": "D02Z03S05[E]", + "logic": [] + }, + { + "name": "D02Z03S05[NE]", + "logic": [] + }, + { + "name": "D02Z03S06[W]", + "logic": [] + }, + { + "name": "D02Z03S06[S]", + "logic": [] + }, + { + "name": "D02Z03S07[W]", + "logic": [] + }, + { + "name": "D02Z03S07[NWW]", + "logic": [] + }, + { + "name": "D02Z03S07[NW]", + "logic": [] + }, + { + "name": "D02Z03S07[N]", + "logic": [] + }, + { + "name": "D02Z03S07[E]", + "logic": [] + }, + { + "name": "D02Z03S08[SW]", + "logic": [] + }, + { + "name": "D02Z03S08[W]", + "logic": [] + }, + { + "name": "D02Z03S08[SE]", + "logic": [] + }, + { + "name": "D02Z03S08[E]", + "logic": [] + }, + { + "name": "D02Z03S08[NE]", + "logic": [] + }, + { + "name": "D02Z03S09[W]", + "logic": [] + }, + { + "name": "D02Z03S09[E]", + "logic": [] + }, + { + "name": "D02Z03S10[W]", + "logic": [] + }, + { + "name": "D02Z03S10[-W]", + "logic": [] + }, + { + "name": "D02Z03S10[-Cherubs]", + "logic": [] + }, + { + "name": "D02Z03S11[S]", + "logic": [] + }, + { + "name": "D02Z03S11[W]", + "logic": [] + }, + { + "name": "D02Z03S11[NW]", + "logic": [] + }, + { + "name": "D02Z03S11[E]", + "logic": [] + }, + { + "name": "D02Z03S11[NE]", + "logic": [] + }, + { + "name": "D02Z03S12[E]", + "logic": [] + }, + { + "name": "D02Z03S13[W]", + "logic": [] + }, + { + "name": "D02Z03S14[W]", + "logic": [] + }, + { + "name": "D02Z03S14[E]", + "logic": [] + }, + { + "name": "D02Z03S15[E]", + "logic": [] + }, + { + "name": "D02Z03S16[W]", + "logic": [] + }, + { + "name": "D02Z03S16[N]", + "logic": [] + }, + { + "name": "D02Z03S17[E]", + "logic": [] + }, + { + "name": "D02Z03S18[NW]", + "logic": [] + }, + { + "name": "D02Z03S18[SE]", + "logic": [] + }, + { + "name": "D02Z03S18[NE]", + "logic": [] + }, + { + "name": "D02Z03S19[E]", + "logic": [] + }, + { + "name": "D02Z03S20[W]", + "logic": [] + }, + { + "name": "D02Z03S20[E]", + "logic": [] + }, + { + "name": "D02Z03S21[W]", + "logic": [] + }, + { + "name": "D02Z03S21[E]", + "logic": [] + }, + { + "name": "D02Z03S22[W]", + "logic": [] + }, + { + "name": "D02Z03S23[E]", + "logic": [] + }, + { + "name": "D02Z03S24[E]", + "logic": [] + }, + { + "name": "D03Z01S01[W]", + "logic": [] + }, + { + "name": "D03Z01S01[NE]", + "logic": [] + }, + { + "name": "D03Z01S01[S]", + "logic": [] + }, + { + "name": "D03Z01S01[-Cherubs]", + "logic": [] + }, + { + "name": "D03Z01S02[W]", + "logic": [] + }, + { + "name": "D03Z01S02[E]", + "logic": [] + }, + { + "name": "D03Z01S03[W]", + "logic": [] + }, + { + "name": "D03Z01S03[E]", + "logic": [] + }, + { + "name": "D03Z01S03[SW]", + "logic": [] + }, + { + "name": "D03Z01S03[SE]", + "logic": [] + }, + { + "name": "D03Z01S03[-WestL]", + "logic": [] + }, + { + "name": "D03Z01S03[-WestR]", + "logic": [] + }, + { + "name": "D03Z01S03[-EastL]", + "logic": [] + }, + { + "name": "D03Z01S03[-EastR]", + "logic": [] + }, + { + "name": "D03Z01S04[NW]", + "logic": [] + }, + { + "name": "D03Z01S04[E]", + "logic": [] + }, + { + "name": "D03Z01S05[W]", + "logic": [] + }, + { + "name": "D03Z01S05[E]", + "logic": [] + }, + { + "name": "D03Z01S06[W]", + "logic": [] + }, + { + "name": "D03Z01S06[E]", + "logic": [] + }, + { + "name": "D03Z02S01[W]", + "logic": [] + }, + { + "name": "D03Z02S01[N]", + "logic": [] + }, + { + "name": "D03Z02S02[W]", + "logic": [] + }, + { + "name": "D03Z02S02[E]", + "logic": [] + }, + { + "name": "D03Z02S02[S]", + "logic": [] + }, + { + "name": "D03Z02S03[W]", + "logic": [] + }, + { + "name": "D03Z02S03[E]", + "logic": [] + }, + { + "name": "D03Z02S03[N]", + "logic": [] + }, + { + "name": "D03Z02S03[SE2]", + "logic": [] + }, + { + "name": "D03Z02S03[SW]", + "logic": [] + }, + { + "name": "D03Z02S03[SE]", + "logic": [] + }, + { + "name": "D03Z02S03[SSL]", + "logic": [] + }, + { + "name": "D03Z02S03[SSC]", + "logic": [] + }, + { + "name": "D03Z02S03[SSR]", + "logic": [] + }, + { + "name": "D03Z02S04[NW]", + "logic": [] + }, + { + "name": "D03Z02S04[NE]", + "logic": [] + }, + { + "name": "D03Z02S04[S]", + "logic": [] + }, + { + "name": "D03Z02S05[W]", + "logic": [] + }, + { + "name": "D03Z02S05[E]", + "logic": [] + }, + { + "name": "D03Z02S05[S]", + "logic": [] + }, + { + "name": "D03Z02S06[W]", + "logic": [] + }, + { + "name": "D03Z02S06[N]", + "logic": [] + }, + { + "name": "D03Z02S07[W]", + "logic": [] + }, + { + "name": "D03Z02S07[E]", + "logic": [] + }, + { + "name": "D03Z02S07[N]", + "logic": [] + }, + { + "name": "D03Z02S08[W]", + "logic": [] + }, + { + "name": "D03Z02S08[E]", + "logic": [] + }, + { + "name": "D03Z02S08[N]", + "logic": [] + }, + { + "name": "D03Z02S09[W]", + "logic": [] + }, + { + "name": "D03Z02S09[N]", + "logic": [] + }, + { + "name": "D03Z02S09[S]", + "logic": [] + }, + { + "name": "D03Z02S10[W]", + "logic": [] + }, + { + "name": "D03Z02S10[N]", + "logic": [] + }, + { + "name": "D03Z02S10[S]", + "logic": [] + }, + { + "name": "D03Z02S10[E]", + "logic": [] + }, + { + "name": "D03Z02S10[-Cherubs]", + "logic": [] + }, + { + "name": "D03Z02S11[W]", + "logic": [] + }, + { + "name": "D03Z02S11[E]", + "logic": [] + }, + { + "name": "D03Z02S12[E]", + "logic": [] + }, + { + "name": "D03Z02S13[E]", + "logic": [] + }, + { + "name": "D03Z02S13[-Cherubs]", + "logic": [] + }, + { + "name": "D03Z02S14[E]", + "logic": [] + }, + { + "name": "D03Z02S15[W]", + "logic": [] + }, + { + "name": "D03Z02S15[E]", + "logic": [] + }, + { + "name": "D03Z03S01[W]", + "logic": [] + }, + { + "name": "D03Z03S01[S]", + "logic": [] + }, + { + "name": "D03Z03S01[NL]", + "logic": [] + }, + { + "name": "D03Z03S01[NR]", + "logic": [] + }, + { + "name": "D03Z03S02[W]", + "logic": [] + }, + { + "name": "D03Z03S02[NE]", + "logic": [] + }, + { + "name": "D03Z03S02[E]", + "logic": [] + }, + { + "name": "D03Z03S03[W]", + "logic": [] + }, + { + "name": "D03Z03S03[NE]", + "logic": [] + }, + { + "name": "D03Z03S03[SE]", + "logic": [] + }, + { + "name": "D03Z03S04[NW]", + "logic": [] + }, + { + "name": "D03Z03S04[NE]", + "logic": [] + }, + { + "name": "D03Z03S04[E]", + "logic": [] + }, + { + "name": "D03Z03S04[SW]", + "logic": [] + }, + { + "name": "D03Z03S04[SE]", + "logic": [] + }, + { + "name": "D03Z03S04[-Cherubs]", + "logic": [] + }, + { + "name": "D03Z03S05[NW]", + "logic": [] + }, + { + "name": "D03Z03S05[NE]", + "logic": [] + }, + { + "name": "D03Z03S05[SW]", + "logic": [] + }, + { + "name": "D03Z03S05[SE]", + "logic": [] + }, + { + "name": "D03Z03S06[W]", + "logic": [] + }, + { + "name": "D03Z03S07[NW]", + "logic": [] + }, + { + "name": "D03Z03S07[NE]", + "logic": [] + }, + { + "name": "D03Z03S07[SW]", + "logic": [] + }, + { + "name": "D03Z03S07[E]", + "logic": [] + }, + { + "name": "D03Z03S07[S]", + "logic": [] + }, + { + "name": "D03Z03S08[W]", + "logic": [] + }, + { + "name": "D03Z03S08[-CherubsL]", + "logic": [] + }, + { + "name": "D03Z03S08[-CherubsR]", + "logic": [] + }, + { + "name": "D03Z03S09[SW]", + "logic": [] + }, + { + "name": "D03Z03S09[N]", + "logic": [] + }, + { + "name": "D03Z03S10[E]", + "logic": [] + }, + { + "name": "D03Z03S11[W]", + "logic": [] + }, + { + "name": "D03Z03S11[E]", + "logic": [] + }, + { + "name": "D03Z03S12[W]", + "logic": [] + }, + { + "name": "D03Z03S12[E]", + "logic": [] + }, + { + "name": "D03Z03S13[W]", + "logic": [] + }, + { + "name": "D03Z03S14[W]", + "logic": [] + }, + { + "name": "D03Z03S15[W]", + "logic": [] + }, + { + "name": "D03Z03S15[E]", + "logic": [] + }, + { + "name": "D03Z03S16[W]", + "logic": [] + }, + { + "name": "D03Z03S16[E]", + "logic": [] + }, + { + "name": "D03Z03S17[W]", + "logic": [] + }, + { + "name": "D03Z03S17[E]", + "logic": [] + }, + { + "name": "D03Z03S18[E]", + "logic": [] + }, + { + "name": "D03Z03S19[E]", + "logic": [] + }, + { + "name": "D04Z01S01[W]", + "logic": [] + }, + { + "name": "D04Z01S01[E]", + "logic": [] + }, + { + "name": "D04Z01S01[NE]", + "logic": [] + }, + { + "name": "D04Z01S01[N]", + "logic": [] + }, + { + "name": "D04Z01S02[W]", + "logic": [] + }, + { + "name": "D04Z01S02[NW]", + "logic": [] + }, + { + "name": "D04Z01S02[E]", + "logic": [] + }, + { + "name": "D04Z01S03[W]", + "logic": [] + }, + { + "name": "D04Z01S03[E]", + "logic": [] + }, + { + "name": "D04Z01S03[S]", + "logic": [] + }, + { + "name": "D04Z01S04[W]", + "logic": [] + }, + { + "name": "D04Z01S04[E]", + "logic": [] + }, + { + "name": "D04Z01S05[S]", + "logic": [] + }, + { + "name": "D04Z01S05[N]", + "logic": [] + }, + { + "name": "D04Z01S05[-Cherubs]", + "logic": [] + }, + { + "name": "D04Z01S06[S]", + "logic": [] + }, + { + "name": "D04Z01S06[E]", + "logic": [ + { + "item_requirements": [ + "D09Z01S09[SW]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D04Z01S06[Cherubs]", + "logic": [] + }, + { + "name": "D04Z02S01[W]", + "logic": [] + }, + { + "name": "D04Z02S01[N]", + "logic": [] + }, + { + "name": "D04Z02S01[E]", + "logic": [] + }, + { + "name": "D04Z02S01[NE]", + "logic": [] + }, + { + "name": "D04Z02S02[S]", + "logic": [] + }, + { + "name": "D04Z02S02[SE]", + "logic": [] + }, + { + "name": "D04Z02S02[NE]", + "logic": [ + { + "item_requirements": [ + "D04Z02S15[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "upwarpSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "doubleJump", + "canEnemyUpslash" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyUpslash", + "upwarpSkipsAllowed", + "wallClimb" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "canEnemyUpslash", + "upwarpSkipsAllowed", + "D06Z01S02[S]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D04Z02S02[N]", + "logic": [] + }, + { + "name": "D04Z02S03[W]", + "logic": [] + }, + { + "name": "D04Z02S03[E]", + "logic": [] + }, + { + "name": "D04Z02S04[SW]", + "logic": [] + }, + { + "name": "D04Z02S04[SE]", + "logic": [] + }, + { + "name": "D04Z02S04[W]", + "logic": [] + }, + { + "name": "D04Z02S04[E]", + "logic": [] + }, + { + "name": "D04Z02S04[NW]", + "logic": [] + }, + { + "name": "D04Z02S04[NE]", + "logic": [] + }, + { + "name": "D04Z02S04[N]", + "logic": [] + }, + { + "name": "D04Z02S05[W]", + "logic": [] + }, + { + "name": "D04Z02S05[E]", + "logic": [] + }, + { + "name": "D04Z02S06[S]", + "logic": [] + }, + { + "name": "D04Z02S06[NW]", + "logic": [] + }, + { + "name": "D04Z02S06[N]", + "logic": [] + }, + { + "name": "D04Z02S06[NE]", + "logic": [] + }, + { + "name": "D04Z02S06[E]", + "logic": [] + }, + { + "name": "D04Z02S06[-Cherubs]", + "logic": [] + }, + { + "name": "D04Z02S07[SW]", + "logic": [] + }, + { + "name": "D04Z02S07[W]", + "logic": [] + }, + { + "name": "D04Z02S07[N]", + "logic": [] + }, + { + "name": "D04Z02S07[NE]", + "logic": [] + }, + { + "name": "D04Z02S07[SE]", + "logic": [] + }, + { + "name": "D04Z02S08[W]", + "logic": [] + }, + { + "name": "D04Z02S08[E]", + "logic": [] + }, + { + "name": "D04Z02S08[S]", + "logic": [] + }, + { + "name": "D04Z02S09[W]", + "logic": [] + }, + { + "name": "D04Z02S09[E]", + "logic": [] + }, + { + "name": "D04Z02S09[NE]", + "logic": [] + }, + { + "name": "D04Z02S10[W]", + "logic": [] + }, + { + "name": "D04Z02S11[W]", + "logic": [] + }, + { + "name": "D04Z02S11[E]", + "logic": [] + }, + { + "name": "D04Z02S12[W]", + "logic": [] + }, + { + "name": "D04Z02S13[W]", + "logic": [] + }, + { + "name": "D04Z02S14[E]", + "logic": [] + }, + { + "name": "D04Z02S15[W]", + "logic": [] + }, + { + "name": "D04Z02S15[E]", + "logic": [] + }, + { + "name": "D04Z02S16[W]", + "logic": [] + }, + { + "name": "D04Z02S16[-Cherubs]", + "logic": [] + }, + { + "name": "D04Z02S17[W]", + "logic": [] + }, + { + "name": "D04Z02S19[W]", + "logic": [] + }, + { + "name": "D04Z02S19[E]", + "logic": [] + }, + { + "name": "D04Z02S20[W]", + "logic": [] + }, + { + "name": "D04Z02S20[Redento]", + "logic": [] + }, + { + "name": "D04Z02S21[W]", + "logic": [] + }, + { + "name": "D04Z02S21[SE]", + "logic": [] + }, + { + "name": "D04Z02S21[NE]", + "logic": [] + }, + { + "name": "D04Z02S22[W]", + "logic": [] + }, + { + "name": "D04Z02S22[E]", + "logic": [] + }, + { + "name": "D04Z02S23[W]", + "logic": [] + }, + { + "name": "D04Z02S23[SE]", + "logic": [] + }, + { + "name": "D04Z02S23[NE]", + "logic": [] + }, + { + "name": "D04Z02S24[NW]", + "logic": [] + }, + { + "name": "D04Z02S24[SW]", + "logic": [] + }, + { + "name": "D04Z02S24[SE]", + "logic": [] + }, + { + "name": "D04Z02S25[W]", + "logic": [] + }, + { + "name": "D04BZ02S01[Redento]", + "logic": [] + }, + { + "name": "D04Z03S01[W]", + "logic": [] + }, + { + "name": "D04Z03S01[E]", + "logic": [] + }, + { + "name": "D04Z03S02[W]", + "logic": [] + }, + { + "name": "D04Z04S01[W]", + "logic": [] + }, + { + "name": "D04Z04S01[E]", + "logic": [] + }, + { + "name": "D04Z04S02[W]", + "logic": [] + }, + { + "name": "D05Z01S01[W]", + "logic": [] + }, + { + "name": "D05Z01S01[NW]", + "logic": [] + }, + { + "name": "D05Z01S01[E]", + "logic": [] + }, + { + "name": "D05Z01S02[W]", + "logic": [] + }, + { + "name": "D05Z01S02[NW]", + "logic": [] + }, + { + "name": "D05Z01S02[E]", + "logic": [] + }, + { + "name": "D05Z01S03[W]", + "logic": [] + }, + { + "name": "D05Z01S03[E]", + "logic": [] + }, + { + "name": "D05Z01S03[Frontal]", + "logic": [] + }, + { + "name": "D05Z01S04[W]", + "logic": [] + }, + { + "name": "D05Z01S04[E]", + "logic": [] + }, + { + "name": "D05Z01S05[SW]", + "logic": [] + }, + { + "name": "D05Z01S05[E]", + "logic": [] + }, + { + "name": "D05Z01S05[NE]", + "logic": [] + }, + { + "name": "D05Z01S06[W]", + "logic": [] + }, + { + "name": "D05Z01S06[E]", + "logic": [] + }, + { + "name": "D05Z01S07[SW]", + "logic": [] + }, + { + "name": "D05Z01S07[NW]", + "logic": [] + }, + { + "name": "D05Z01S07[E]", + "logic": [] + }, + { + "name": "D05Z01S08[W]", + "logic": [] + }, + { + "name": "D05Z01S08[NW]", + "logic": [] + }, + { + "name": "D05Z01S08[E]", + "logic": [] + }, + { + "name": "D05Z01S08[Health]", + "logic": [] + }, + { + "name": "D05Z01S08[NE]", + "logic": [] + }, + { + "name": "D05Z01S09[W]", + "logic": [] + }, + { + "name": "D05Z01S09[E]", + "logic": [] + }, + { + "name": "D05Z01S10[W]", + "logic": [] + }, + { + "name": "D05Z01S10[NW]", + "logic": [] + }, + { + "name": "D05Z01S10[E]", + "logic": [] + }, + { + "name": "D05Z01S11[SW]", + "logic": [ + { + "item_requirements": [ + "D05Z01S19[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D05Z01S11[NW]", + "logic": [] + }, + { + "name": "D05Z01S11[NE]", + "logic": [] + }, + { + "name": "D05Z01S11[SE]", + "logic": [] + }, + { + "name": "D05Z01S11[E]", + "logic": [] + }, + { + "name": "D05Z01S12[E]", + "logic": [] + }, + { + "name": "D05Z01S13[E]", + "logic": [] + }, + { + "name": "D05Z01S14[W]", + "logic": [] + }, + { + "name": "D05Z01S15[W]", + "logic": [] + }, + { + "name": "D05Z01S15[E]", + "logic": [] + }, + { + "name": "D05Z01S16[W]", + "logic": [] + }, + { + "name": "D05Z01S17[W]", + "logic": [] + }, + { + "name": "D05Z01S18[W]", + "logic": [] + }, + { + "name": "D05Z01S19[W]", + "logic": [] + }, + { + "name": "D05Z01S19[E]", + "logic": [] + }, + { + "name": "D05Z01S20[W]", + "logic": [] + }, + { + "name": "D05Z01S20[E]", + "logic": [] + }, + { + "name": "D05Z01S20[N]", + "logic": [] + }, + { + "name": "D05Z01S21[SW]", + "logic": [] + }, + { + "name": "D05Z01S21[NW]", + "logic": [] + }, + { + "name": "D05Z01S21[NE]", + "logic": [] + }, + { + "name": "D05Z01S21[-Cherubs]", + "logic": [] + }, + { + "name": "D05Z01S22[FrontalN]", + "logic": [] + }, + { + "name": "D05Z01S22[E]", + "logic": [] + }, + { + "name": "D05Z01S23[E]", + "logic": [] + }, + { + "name": "D05Z01S24[E]", + "logic": [] + }, + { + "name": "D05BZ01S01[FrontalS]", + "logic": [] + }, + { + "name": "D05BZ01S01[FrontalN]", + "logic": [] + }, + { + "name": "D05Z02S01[W]", + "logic": [] + }, + { + "name": "D05Z02S01[E]", + "logic": [] + }, + { + "name": "D05Z02S02[SW]", + "logic": [] + }, + { + "name": "D05Z02S02[NW]", + "logic": [] + }, + { + "name": "D05Z02S02[SE]", + "logic": [] + }, + { + "name": "D05Z02S02[NE]", + "logic": [] + }, + { + "name": "D05Z02S03[W]", + "logic": [] + }, + { + "name": "D05Z02S03[E]", + "logic": [] + }, + { + "name": "D05Z02S04[W]", + "logic": [] + }, + { + "name": "D05Z02S04[E]", + "logic": [] + }, + { + "name": "D05Z02S04[C]", + "logic": [] + }, + { + "name": "D05Z02S05[W]", + "logic": [] + }, + { + "name": "D05Z02S05[E]", + "logic": [] + }, + { + "name": "D05Z02S06[SW]", + "logic": [] + }, + { + "name": "D05Z02S06[NW]", + "logic": [] + }, + { + "name": "D05Z02S06[SE]", + "logic": [] + }, + { + "name": "D05Z02S06[NE]", + "logic": [] + }, + { + "name": "D05Z02S07[W]", + "logic": [] + }, + { + "name": "D05Z02S07[E]", + "logic": [] + }, + { + "name": "D05Z02S08[W]", + "logic": [] + }, + { + "name": "D05Z02S09[W]", + "logic": [] + }, + { + "name": "D05Z02S09[E]", + "logic": [] + }, + { + "name": "D05Z02S10[W]", + "logic": [] + }, + { + "name": "D05Z02S10[E]", + "logic": [] + }, + { + "name": "D05Z02S11[W]", + "logic": [] + }, + { + "name": "D05Z02S12[W]", + "logic": [] + }, + { + "name": "D05Z02S12[E]", + "logic": [] + }, + { + "name": "D05Z02S12[N]", + "logic": [] + }, + { + "name": "D05Z02S13[E]", + "logic": [] + }, + { + "name": "D05Z02S14[W]", + "logic": [] + }, + { + "name": "D05Z02S14[E]", + "logic": [] + }, + { + "name": "D05Z02S15[S]", + "logic": [] + }, + { + "name": "D05Z02S15[E]", + "logic": [] + }, + { + "name": "D05BZ02S01[C]", + "logic": [] + }, + { + "name": "D06Z01S01[SW]", + "logic": [] + }, + { + "name": "D06Z01S01[SE]", + "logic": [] + }, + { + "name": "D06Z01S01[W]", + "logic": [] + }, + { + "name": "D06Z01S01[E]", + "logic": [] + }, + { + "name": "D06Z01S01[NW]", + "logic": [] + }, + { + "name": "D06Z01S01[NE]", + "logic": [] + }, + { + "name": "D06Z01S01[NNW]", + "logic": [] + }, + { + "name": "D06Z01S01[NNE]", + "logic": [] + }, + { + "name": "D06Z01S01[N]", + "logic": [] + }, + { + "name": "D06Z01S01[-Cherubs]", + "logic": [] + }, + { + "name": "D06Z01S02[W]", + "logic": [] + }, + { + "name": "D06Z01S02[E]", + "logic": [] + }, + { + "name": "D06Z01S02[S]", + "logic": [] + }, + { + "name": "D06Z01S03[W]", + "logic": [] + }, + { + "name": "D06Z01S03[E]", + "logic": [] + }, + { + "name": "D06Z01S04[SW]", + "logic": [] + }, + { + "name": "D06Z01S04[W]", + "logic": [] + }, + { + "name": "D06Z01S04[Health]", + "logic": [] + }, + { + "name": "D06Z01S04[NW]", + "logic": [] + }, + { + "name": "D06Z01S04[NE]", + "logic": [] + }, + { + "name": "D06Z01S05[E]", + "logic": [] + }, + { + "name": "D06Z01S06[WW]", + "logic": [] + }, + { + "name": "D06Z01S06[E]", + "logic": [] + }, + { + "name": "D06Z01S06[W]", + "logic": [] + }, + { + "name": "D06Z01S06[EE]", + "logic": [] + }, + { + "name": "D06Z01S07[W]", + "logic": [] + }, + { + "name": "D06Z01S07[E]", + "logic": [] + }, + { + "name": "D06Z01S08[W]", + "logic": [] + }, + { + "name": "D06Z01S08[E]", + "logic": [] + }, + { + "name": "D06Z01S08[N]", + "logic": [ + { + "item_requirements": [ + "D06Z01S13[S]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "wallClimb", + "doubleJump", + "canEnemyBounce", + "preciseSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D06Z01S09[W]", + "logic": [] + }, + { + "name": "D06Z01S09[E]", + "logic": [] + }, + { + "name": "D06Z01S09[-CherubsL]", + "logic": [] + }, + { + "name": "D06Z01S09[-CherubsR]", + "logic": [] + }, + { + "name": "D06Z01S10[W]", + "logic": [] + }, + { + "name": "D06Z01S10[E]", + "logic": [] + }, + { + "name": "D06Z01S10[-CherubsL]", + "logic": [] + }, + { + "name": "D06Z01S10[-CherubsR]", + "logic": [] + }, + { + "name": "D06Z01S11[W]", + "logic": [] + }, + { + "name": "D06Z01S12[S]", + "logic": [] + }, + { + "name": "D06Z01S12[W]", + "logic": [] + }, + { + "name": "D06Z01S12[E]", + "logic": [] + }, + { + "name": "D06Z01S12[NW]", + "logic": [] + }, + { + "name": "D06Z01S12[NE]", + "logic": [] + }, + { + "name": "D06Z01S12[NE2]", + "logic": [] + }, + { + "name": "D06Z01S13[W]", + "logic": [] + }, + { + "name": "D06Z01S13[E]", + "logic": [] + }, + { + "name": "D06Z01S13[S]", + "logic": [] + }, + { + "name": "D06Z01S14[W]", + "logic": [] + }, + { + "name": "D06Z01S14[E]", + "logic": [] + }, + { + "name": "D06Z01S14[N]", + "logic": [] + }, + { + "name": "D06Z01S15[SW]", + "logic": [] + }, + { + "name": "D06Z01S15[NW]", + "logic": [] + }, + { + "name": "D06Z01S15[NE]", + "logic": [] + }, + { + "name": "D06Z01S16[W]", + "logic": [] + }, + { + "name": "D06Z01S16[E]", + "logic": [] + }, + { + "name": "D06Z01S16[-CherubsL]", + "logic": [] + }, + { + "name": "D06Z01S16[-CherubsR]", + "logic": [] + }, + { + "name": "D06Z01S17[W]", + "logic": [] + }, + { + "name": "D06Z01S17[E]", + "logic": [] + }, + { + "name": "D06Z01S17[-Cherubs]", + "logic": [] + }, + { + "name": "D06Z01S18[E]", + "logic": [] + }, + { + "name": "D06Z01S18[-Cherubs]", + "logic": [] + }, + { + "name": "D06Z01S19[S]", + "logic": [] + }, + { + "name": "D06Z01S19[E]", + "logic": [] + }, + { + "name": "D06Z01S20[W]", + "logic": [] + }, + { + "name": "D06Z01S20[E]", + "logic": [] + }, + { + "name": "D06Z01S21[W]", + "logic": [] + }, + { + "name": "D06Z01S21[E]", + "logic": [] + }, + { + "name": "D06Z01S22[Sword]", + "logic": [] + }, + { + "name": "D06Z01S23[Sword]", + "logic": [] + }, + { + "name": "D06Z01S23[E]", + "logic": [] + }, + { + "name": "D06Z01S23[S]", + "logic": [] + }, + { + "name": "D06Z01S24[W]", + "logic": [] + }, + { + "name": "D06Z01S25[W]", + "logic": [] + }, + { + "name": "D06Z01S25[E]", + "logic": [] + }, + { + "name": "D06Z01S26[W]", + "logic": [] + }, + { + "name": "D07Z01S01[W]", + "logic": [] + }, + { + "name": "D07Z01S01[E]", + "logic": [] + }, + { + "name": "D07Z01S02[W]", + "logic": [] + }, + { + "name": "D07Z01S02[E]", + "logic": [] + }, + { + "name": "D07Z01S03[W]", + "logic": [] + }, + { + "name": "D08Z01S01[W]", + "logic": [] + }, + { + "name": "D08Z01S01[E]", + "logic": [] + }, + { + "name": "D08Z01S02[NE]", + "logic": [] + }, + { + "name": "D08Z01S02[SE]", + "logic": [] + }, + { + "name": "D08Z01S02[-Cherubs]", + "logic": [] + }, + { + "name": "D08Z02S01[W]", + "logic": [] + }, + { + "name": "D08Z02S01[SE]", + "logic": [] + }, + { + "name": "D08Z02S01[E]", + "logic": [] + }, + { + "name": "D08Z02S01[N]", + "logic": [] + }, + { + "name": "D08Z02S02[W]", + "logic": [] + }, + { + "name": "D08Z02S03[W]", + "logic": [] + }, + { + "name": "D08Z02S03[E]", + "logic": [] + }, + { + "name": "D08Z02S03[S]", + "logic": [] + }, + { + "name": "D08Z03S01[W]", + "logic": [] + }, + { + "name": "D08Z03S01[E]", + "logic": [] + }, + { + "name": "D08Z03S02[SW]", + "logic": [] + }, + { + "name": "D08Z03S02[NW]", + "logic": [] + }, + { + "name": "D08Z03S03[W]", + "logic": [] + }, + { + "name": "D08Z03S03[E]", + "logic": [] + }, + { + "name": "D09Z01S01[W]", + "logic": [] + }, + { + "name": "D09Z01S01[E]", + "logic": [] + }, + { + "name": "D09Z01S02[SW]", + "logic": [] + }, + { + "name": "D09Z01S02[NW]", + "logic": [] + }, + { + "name": "D09Z01S02[N]", + "logic": [] + }, + { + "name": "D09Z01S03[W]", + "logic": [] + }, + { + "name": "D09Z01S04[W]", + "logic": [] + }, + { + "name": "D09Z01S04[E]", + "logic": [] + }, + { + "name": "D09Z01S04[S]", + "logic": [] + }, + { + "name": "D09Z01S05[W]", + "logic": [] + }, + { + "name": "D09Z01S05[SE]", + "logic": [] + }, + { + "name": "D09Z01S05[NE]", + "logic": [] + }, + { + "name": "D09Z01S06[-E]", + "logic": [] + }, + { + "name": "D09Z01S06[E]", + "logic": [] + }, + { + "name": "D09Z01S07[SW]", + "logic": [] + }, + { + "name": "D09Z01S07[SE]", + "logic": [] + }, + { + "name": "D09Z01S07[W]", + "logic": [] + }, + { + "name": "D09Z01S07[E]", + "logic": [] + }, + { + "name": "D09Z01S07[NW]", + "logic": [] + }, + { + "name": "D09Z01S07[N]", + "logic": [] + }, + { + "name": "D09Z01S07[NE]", + "logic": [] + }, + { + "name": "D09Z01S08[W]", + "logic": [] + }, + { + "name": "D09Z01S08[S]", + "logic": [] + }, + { + "name": "D09Z01S08[SE]", + "logic": [] + }, + { + "name": "D09Z01S08[NE]", + "logic": [] + }, + { + "name": "D09Z01S09[SW]", + "logic": [] + }, + { + "name": "D09Z01S09[NW]", + "logic": [] + }, + { + "name": "D09Z01S09[E]", + "logic": [] + }, + { + "name": "D09Z01S10[W]", + "logic": [] + }, + { + "name": "D09Z01S11[W]", + "logic": [] + }, + { + "name": "D09Z01S11[E]", + "logic": [] + }, + { + "name": "D09Z01S11[S]", + "logic": [] + }, + { + "name": "D09Z01S12[E]", + "logic": [] + }, + { + "name": "D09Z01S13[E]", + "logic": [] + }, + { + "name": "D17Z01S01[E]", + "logic": [] + }, + { + "name": "D17Z01S02[W]", + "logic": [] + }, + { + "name": "D17Z01S02[E]", + "logic": [] + }, + { + "name": "D17Z01S02[N]", + "logic": [] + }, + { + "name": "D17Z01S03[W]", + "logic": [] + }, + { + "name": "D17Z01S03[E]", + "logic": [] + }, + { + "name": "D17Z01S03[relic]", + "logic": [] + }, + { + "name": "D17Z01S04[W]", + "logic": [] + }, + { + "name": "D17Z01S04[S]", + "logic": [] + }, + { + "name": "D17Z01S04[FrontL]", + "logic": [] + }, + { + "name": "D17Z01S04[N]", + "logic": [] + }, + { + "name": "D17Z01S04[FrontR]", + "logic": [] + }, + { + "name": "D17Z01S05[W]", + "logic": [] + }, + { + "name": "D17Z01S05[E]", + "logic": [] + }, + { + "name": "D17Z01S05[S]", + "logic": [] + }, + { + "name": "D17Z01S06[E]", + "logic": [] + }, + { + "name": "D17Z01S07[SW]", + "logic": [] + }, + { + "name": "D17Z01S07[SE]", + "logic": [] + }, + { + "name": "D17Z01S07[W]", + "logic": [] + }, + { + "name": "D17Z01S07[NW]", + "logic": [] + }, + { + "name": "D17Z01S07[N]", + "logic": [] + }, + { + "name": "D17Z01S08[E]", + "logic": [] + }, + { + "name": "D17Z01S09[E]", + "logic": [] + }, + { + "name": "D17Z01S10[W]", + "logic": [] + }, + { + "name": "D17Z01S10[S]", + "logic": [] + }, + { + "name": "D17Z01S11[W]", + "logic": [] + }, + { + "name": "D17Z01S11[E]", + "logic": [] + }, + { + "name": "D17Z01S12[E]", + "logic": [] + }, + { + "name": "D17Z01S13[W]", + "logic": [] + }, + { + "name": "D17Z01S13[E]", + "logic": [] + }, + { + "name": "D17Z01S14[W]", + "logic": [] + }, + { + "name": "D17Z01S14[E]", + "logic": [] + }, + { + "name": "D17Z01S14[-Cherubs1]", + "logic": [] + }, + { + "name": "D17Z01S14[-Cherubs2]", + "logic": [] + }, + { + "name": "D17Z01S14[-Cherubs3]", + "logic": [] + }, + { + "name": "D17Z01S15[E]", + "logic": [] + }, + { + "name": "D17BZ01S01[relic]", + "logic": [] + }, + { + "name": "D17BZ02S01[FrontL]", + "logic": [] + }, + { + "name": "D17BZ02S01[FrontR]", + "logic": [] + }, + { + "name": "D20Z01S01[W]", + "logic": [] + }, + { + "name": "D20Z01S01[E]", + "logic": [] + }, + { + "name": "D20Z01S01[S]", + "logic": [] + }, + { + "name": "D20Z01S02[W]", + "logic": [] + }, + { + "name": "D20Z01S02[E]", + "logic": [] + }, + { + "name": "D20Z01S03[W]", + "logic": [] + }, + { + "name": "D20Z01S03[N]", + "logic": [] + }, + { + "name": "D20Z01S04[W]", + "logic": [] + }, + { + "name": "D20Z01S04[E]", + "logic": [] + }, + { + "name": "D20Z01S04[N]", + "logic": [] + }, + { + "name": "D20Z01S05[W]", + "logic": [] + }, + { + "name": "D20Z01S05[E]", + "logic": [] + }, + { + "name": "D20Z01S06[NE]", + "logic": [] + }, + { + "name": "D20Z01S06[SE]", + "logic": [] + }, + { + "name": "D20Z01S07[NW]", + "logic": [] + }, + { + "name": "D20Z01S07[NE]", + "logic": [] + }, + { + "name": "D20Z01S07[SE]", + "logic": [] + }, + { + "name": "D20Z01S08[W]", + "logic": [] + }, + { + "name": "D20Z01S09[W]", + "logic": [] + }, + { + "name": "D20Z01S09[E]", + "logic": [] + }, + { + "name": "D20Z01S10[W]", + "logic": [] + }, + { + "name": "D20Z01S10[E]", + "logic": [] + }, + { + "name": "D20Z01S11[W]", + "logic": [] + }, + { + "name": "D20Z01S11[NW]", + "logic": [] + }, + { + "name": "D20Z01S11[NE]", + "logic": [] + }, + { + "name": "D20Z01S11[SE]", + "logic": [] + }, + { + "name": "D20Z01S12[E]", + "logic": [] + }, + { + "name": "D20Z01S13[W]", + "logic": [] + }, + { + "name": "D20Z01S13[E]", + "logic": [] + }, + { + "name": "D20Z01S13[N]", + "logic": [] + }, + { + "name": "D20Z01S14[S]", + "logic": [] + }, + { + "name": "D20Z01S14[E]", + "logic": [] + }, + { + "name": "D20Z02S01[W]", + "logic": [] + }, + { + "name": "D20Z02S01[E]", + "logic": [] + }, + { + "name": "D20Z02S02[W]", + "logic": [] + }, + { + "name": "D20Z02S03[W]", + "logic": [] + }, + { + "name": "D20Z02S03[NE]", + "logic": [] + }, + { + "name": "D20Z02S03[SE]", + "logic": [] + }, + { + "name": "D20Z02S04[W]", + "logic": [] + }, + { + "name": "D20Z02S04[E]", + "logic": [] + }, + { + "name": "D20Z02S05[SW]", + "logic": [] + }, + { + "name": "D20Z02S05[NW]", + "logic": [] + }, + { + "name": "D20Z02S05[E]", + "logic": [] + }, + { + "name": "D20Z02S06[SW]", + "logic": [] + }, + { + "name": "D20Z02S06[SE]", + "logic": [] + }, + { + "name": "D20Z02S06[NW]", + "logic": [] + }, + { + "name": "D20Z02S06[NE]", + "logic": [] + }, + { + "name": "D20Z02S07[W]", + "logic": [] + }, + { + "name": "D20Z02S07[E]", + "logic": [] + }, + { + "name": "D20Z02S08[E]", + "logic": [] + }, + { + "name": "D20Z02S09[W]", + "logic": [] + }, + { + "name": "D20Z02S09[E]", + "logic": [] + }, + { + "name": "D20Z02S10[W]", + "logic": [] + }, + { + "name": "D20Z02S10[E]", + "logic": [] + }, + { + "name": "D20Z02S11[SW]", + "logic": [] + }, + { + "name": "D20Z02S11[NW]", + "logic": [ + { + "item_requirements": [ + "D20Z01S13[E]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "D20Z02S10[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D20Z02S11[E]", + "logic": [ + { + "item_requirements": [ + "D20Z02S10[W]" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "D20Z01S13[E]", + "canCrossGap5" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "doubleJump" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + }, + { + "item_requirements": [ + "mourningSkipAllowed", + "tirana", + "obscureSkipsAllowed" + ], + "location_requirements": [], + "region_requirements": [], + "state_modifiers": [] + } + ] + }, + { + "name": "D20Z02S12[W]", + "logic": [] + }, + { + "name": "D20Z02S12[E]", + "logic": [] + }, + { + "name": "D20Z03S01[W]", + "logic": [] + } +] +transition_to_region_map = { + "D01Z01S01[W]": "D01Z01S01[W]", + "D17Z01S03[E]": "D17Z01S03[E]", + "D01Z01S01[E]": "D01Z01S01[E]", + "D01Z01S03[W]": "D01Z01S03[W]", + "D01Z01S01[S]": "D01Z01S01[S]", + "D01BZ07S01[Santos]": "D01BZ07S01[Santos]", + "D01Z01S02[W]": "D01Z01S02[W]", + "D01Z01S07[E]": "D01Z01S07[E]", + "D01Z06S01[N]": "D01Z06S01[N]", + "D01Z01S02[E]": "D01Z01S02[E]", + "D01Z02S01[W]": "D01Z02S01[W]", + "D01Z01S03[E]": "D01Z01S03[E]", + "D01Z02S02[W]": "D01Z02S02[W]", + "D01Z01S07[W]": "D01Z01S07[W]", + "D17Z01S11[E]": "D17Z01S11[E]", + "D17Z01S03[W]": "D17Z01S11[E]", + "D17BZ01S01[relic]": "D17BZ01S01[relic]", + "D01Z02S01[E]": "D01Z02S01[E]", + "D01Z02S03[W]": "D01Z02S03[W]", + "D01Z02S03[NW]": "D01Z02S03[NW]", + "D01Z02S04[W]": "D01Z02S04[W]", + "D01Z02S06[E]": "D01Z02S06[E]", + "D01Z02S02[SW]": "D01Z02S02[SW]", + "D01Z02S07[E]": "D01Z02S07[E]", + "D01Z02S02[SE]": "D01Z02S02[SE]", + "D01BZ06S01[Ossary]": "D01BZ06S01[Ossary]", + "D01Z05S01[N]": "D01Z05S01[N]", + "D01Z02S02[E]": "D01Z02S02[E]", + "D01Z02S02[NE]": "D01Z02S02[NE]", + "D01Z02S05[W]": "D01Z02S05[W]", + "D01BZ04S01[church]": "D01BZ04S01[church]", + "D02Z02S11[-Cherubs]": "D02Z02S11[-Cherubs]", + "D01Z02S03[E]": "D01Z02S03[E]", + "D01Z03S01[W]": "D01Z03S01[W]", + "D01Z02S03[church]": "D01Z02S03[church]", + "D01Z02S04[E]": "D01Z02S04[E]", + "D01Z05S02[N]": "D01Z05S02[N]", + "D01Z05S01[S]": "D01Z05S02[N]", + "D01Z05S27[E]": "D01Z05S02[N]", + "D01Z05S01[W]": "D01Z05S02[N]", + "D01Z02S04[Ossary]": "D01Z02S04[Ossary]", + "D01BZ08S01[W]": "D01BZ08S01[W]", + "D01Z02S05[E]": "D01Z02S05[E]", + "D01Z03S02[W]": "D01Z03S02[W]", + "D01Z03S02[SW]": "D01Z03S02[SW]", + "D01Z02S06[W]": "D01Z02S06[W]", + "D01BZ06S01[E]": "D01BZ06S01[E]", + "D01Z03S01[E]": "D01Z03S01[E]", + "D01Z03S01[SE]": "D01Z03S01[SE]", + "D01Z03S03[W]": "D01Z03S03[W]", + "D01Z05S05[N]": "D01Z05S05[N]", + "D01Z03S02[E]": "D01Z03S02[E]", + "D01Z03S04[SW]": "D01Z03S04[SW]", + "D01Z03S07[-Cherubs]": "D01Z03S07[-Cherubs]", + "D01Z03S02[S]": "D01Z03S02[S]", + "D01Z05S04[E]": "D01Z05S04[E]", + "D01Z05S06[W]": "D01Z05S06[W]", + "D01Z05S09[NW]": "D01Z05S09[NW]", + "D01Z05S18[E]": "D01Z05S18[E]", + "D01Z03S03[E]": "D01Z03S03[E]", + "D01Z03S05[W]": "D01Z03S05[W]", + "D01Z03S06[W]": "D01Z03S06[W]", + "D01Z03S07[E]": "D01Z03S07[E]", + "D02Z01S01[SE]": "D02Z01S01[SE]", + "D01Z03S04[NW]": "D02Z01S01[SE]", + "D01Z03S03[-Cherubs]": "D01Z03S03[-Cherubs]", + "D01Z05S05[NE]": "D01Z05S05[NE]", + "D01Z03S04[W]": "D01Z03S04[W]", + "D02Z01S02[E]": "D02Z01S02[E]", + "D02Z01S01[W]": "D02Z01S02[E]", + "D02Z01S06[E]": "D02Z01S06[E]", + "D02Z01S09[-CherubsL]": "D02Z01S09[-CherubsL]", + "D02Z01S09[-CherubsR]": "D02Z01S09[-CherubsR]", + "D01Z03S04[SE]": "D01Z03S04[SE]", + "D01Z04S01[NW]": "D01Z04S01[NW]", + "D01Z03S04[E]": "D01Z03S04[E]", + "D08Z01S01[W]": "D08Z01S01[W]", + "D01Z03S05[E]": "D01Z03S05[E]", + "D01Z04S03[E]": "D01Z04S03[E]", + "D01Z04S01[W]": "D01Z04S03[E]", + "D01Z04S17[W]": "D01Z04S03[E]", + "D01Z04S01[NE]": "D01Z04S03[E]", + "D01Z04S05[NW]": "D01Z04S05[NW]", + "D01Z04S05[SW]": "D01Z04S05[SW]", + "D01Z04S15[N]": "D01Z04S15[N]", + "D01Z04S01[S]": "D01Z04S15[N]", + "D01Z03S05[Cherubs]": "D01Z03S05[Cherubs]", + "D01Z05S10[NE]": "D01Z05S10[NE]", + "D01Z03S06[E]": "D01Z03S06[E]", + "D08Z01S02[-Cherubs]": "D08Z01S02[-Cherubs]", + "D08Z02S01[W]": "D08Z02S01[W]", + "D01Z04S01[E]": "D01Z04S01[E]", + "D01Z04S01[SE]": "D01Z04S01[SE]", + "D01Z04S06[NW]": "D01Z04S06[NW]", + "D01Z04S06[SW]": "D01Z04S06[SW]", + "D01Z04S08[E]": "D01Z04S08[E]", + "D01Z04S09[E]": "D01Z04S09[E]", + "D01Z04S15[SW]": "D01Z04S09[E]", + "D01Z04S10[NW]": "D01Z04S09[E]", + "D01Z04S15[SE]": "D01Z04S09[E]", + "D01Z04S10[SE]": "D01Z04S09[E]", + "D01Z04S12[NW]": "D01Z04S09[E]", + "D01Z04S12[SE]": "D01Z04S09[E]", + "D01Z04S13[NW]": "D01Z04S09[E]", + "D01Z04S18[E]": "D01Z04S09[E]", + "D01Z04S12[W]": "D01Z04S09[E]", + "D01Z04S02[W]": "D01Z04S09[E]", + "D01Z04S13[NE]": "D01Z04S09[E]", + "D01Z04S14[E]": "D01Z04S14[E]", + "D01Z04S16[W]": "D01Z04S16[W]", + "D01Z04S06[E]": "D01Z04S06[E]", + "D01Z04S07[W]": "D01Z04S07[W]", + "D01Z04S15[NE]": "D01Z04S15[NE]", + "D01Z04S15[E]": "D01Z04S15[E]", + "D01Z04S09[W]": "D01Z04S09[W]", + "D01Z05S10[SE]": "D01Z05S10[SE]", + "D01Z05S12[W]": "D01Z05S10[SE]", + "D01Z05S10[W]": "D01Z05S10[SE]", + "D01Z05S09[SE]": "D01Z05S10[SE]", + "D01Z04S09[C]": "D01Z04S09[C]", + "D01Z04S10[SW]": "D01Z04S10[SW]", + "D01Z04S11[NE]": "D01Z04S11[NE]", + "D01Z04S19[E]": "D01Z04S19[E]", + "D01Z04S13[SW]": "D01Z04S13[SW]", + "D01Z04S13[SE]": "D01Z04S13[SE]", + "D05Z02S12[W]": "D05Z02S12[W]", + "D01Z04S15[W]": "D01Z04S15[W]", + "D01BZ02S01[C]": "D01BZ02S01[C]", + "D01Z05S12[E]": "D01Z05S12[E]", + "D01Z04S16[E]": "D01Z04S16[E]", + "D05Z02S04[W]": "D05Z02S04[W]", + "D05Z02S12[E]": "D05Z02S04[W]", + "D05Z02S04[E]": "D05Z02S04[W]", + "D05Z02S03[W]": "D05Z02S04[W]", + "D05Z02S15[S]": "D05Z02S15[S]", + "D01Z04S18[W]": "D01Z04S18[W]", + "D01Z05S19[E]": "D01Z05S19[E]", + "D01Z04S19[W]": "D01Z04S19[W]", + "D01Z05S15[SE]": "D01Z05S15[SE]", + "D01Z05S03[NW]": "D01Z05S03[NW]", + "D01Z05S20[N]": "D01Z05S20[N]", + "D03Z01S01[NE]": "D03Z01S01[NE]", + "D01Z05S02[W]": "D01Z05S02[W]", + "D03Z01S02[E]": "D03Z01S02[E]", + "D20Z01S03[N]": "D20Z01S03[N]", + "D01Z05S02[E]": "D01Z05S02[E]", + "D01Z05S04[W]": "D01Z05S04[W]", + "D01Z05S03[NE]": "D01Z05S04[W]", + "D01Z05S13[N]": "D01Z05S04[W]", + "D01Z05S03[S]": "D01Z05S04[W]", + "D01Z05S07[E]": "D01Z05S07[E]", + "D01Z05S08[W]": "D01Z05S08[W]", + "D01Z05S02[S]": "D01Z05S02[S]", + "D01Z05S25[NE]": "D01Z05S25[NE]", + "D01Z05S05[NW]": "D01Z05S05[NW]", + "D01Z05S03[W]": "D01Z05S03[W]", + "D01Z05S03[E]": "D01Z05S03[E]", + "D01Z05S14[W]": "D01Z05S14[W]", + "D01Z05S16[N]": "D01Z05S16[N]", + "D01Z05S13[SW]": "D01Z05S16[N]", + "D01Z05S21[E]": "D01Z05S16[N]", + "D01Z05S16[SW]": "D01Z05S16[N]", + "D01Z05S17[W]": "D01Z05S16[N]", + "D01Z05S16[SE]": "D01Z05S16[N]", + "D01Z05S05[SW]": "D01Z05S05[SW]", + "D01Z05S05[E]": "D01Z05S05[E]", + "D01Z05S11[W]": "D01Z05S11[W]", + "D01Z05S14[N]": "D01Z05S14[N]", + "D01Z05S10[S]": "D01Z05S10[S]", + "D01Z05S13[E]": "D01Z05S13[E]", + "D01Z05S15[W]": "D01Z05S15[W]", + "D01Z05S14[SE]": "D01Z05S14[SE]", + "D01Z05S19[W]": "D01Z05S19[W]", + "D01Z05S22[E]": "D01Z05S22[E]", + "D01Z05S15[SW]": "D01Z05S15[SW]", + "D01Z05S25[E]": "D01Z05S25[E]", + "D01BZ05S01[Reward]": "D01BZ05S01[Reward]", + "D01BZ09S01[W]": "D01BZ09S01[W]", + "D01Z05S17[E]": "D01Z05S17[E]", + "D01Z05S20[W]": "D01Z05S20[W]", + "D01Z05S21[W]": "D01Z05S21[W]", + "D01Z05S23[E]": "D01Z05S23[E]", + "D01Z05S26[W]": "D01Z05S26[W]", + "D03Z03S17[E]": "D03Z03S17[E]", + "D01Z05S25[SW]": "D03Z03S17[E]", + "D20Z01S09[E]": "D20Z01S09[E]", + "D01Z05S25[EchoesW]": "D20Z01S09[E]", + "D20Z01S10[W]": "D20Z01S10[W]", + "D01Z05S25[EchoesE]": "D20Z01S10[W]", + "D01Z05S21[Reward]": "D01Z05S21[Reward]", + "D01Z05S23[W]": "D01Z05S23[W]", + "D20Z01S04[E]": "D20Z01S04[E]", + "D01Z05S24[W]": "D01Z05S24[W]", + "D20Z01S01[S]": "D20Z01S01[S]", + "D20Z01S04[N]": "D20Z01S01[S]", + "D20Z01S05[E]": "D20Z01S01[S]", + "D20Z01S04[W]": "D20Z01S01[S]", + "D20Z01S06[NE]": "D20Z01S01[S]", + "D20Z01S05[W]": "D20Z01S01[S]", + "D20Z01S07[NW]": "D20Z01S01[S]", + "D20Z01S06[SE]": "D20Z01S01[S]", + "D20Z01S07[SE]": "D20Z01S01[S]", + "D20Z01S09[W]": "D20Z01S01[S]", + "D20Z01S08[W]": "D20Z01S01[S]", + "D20Z01S07[NE]": "D20Z01S01[S]", + "D01Z05S24[E]": "D01Z05S24[E]", + "D01Z05S25[W]": "D01Z05S25[W]", + "D03Z03S16[E]": "D03Z03S16[E]", + "D01Z05S25[SE]": "D01Z05S25[SE]", + "D20Z01S11[W]": "D20Z01S11[W]", + "D20Z01S10[E]": "D20Z01S11[W]", + "D20Z01S12[E]": "D20Z01S11[W]", + "D20Z01S11[NW]": "D20Z01S11[W]", + "D20Z01S13[W]": "D20Z01S11[W]", + "D20Z01S11[NE]": "D20Z01S11[W]", + "D20Z02S12[W]": "D20Z01S11[W]", + "D20Z01S11[SE]": "D20Z01S11[W]", + "D20Z01S14[S]": "D20Z01S11[W]", + "D20Z01S13[N]": "D20Z01S11[W]", + "D01Z06S01[Santos]": "D01Z06S01[Santos]", + "D02Z01S01[SW]": "D02Z01S01[SW]", + "D02Z01S02[]": "D02Z01S02[]", + "D02Z01S08[E]": "D02Z01S08[E]", + "D02Z01S03[SE]": "D02Z01S03[SE]", + "D02Z01S02[NW]": "D02Z01S03[SE]", + "D02Z02S01[E]": "D02Z01S03[SE]", + "D02Z01S03[W]": "D02Z01S03[SE]", + "D02Z01S04[E]": "D02Z01S04[E]", + "D02Z01S09[W]": "D02Z01S09[W]", + "D02Z01S02[W]": "D02Z01S02[W]", + "D02Z01S05[E]": "D02Z01S05[E]", + "D02Z02S14[-Cherubs]": "D02Z02S14[-Cherubs]", + "D02Z01S02[NE]": "D02Z01S02[NE]", + "D02Z01S03[SW]": "D02Z01S03[SW]", + "D02Z02S02[SE]": "D02Z02S02[SE]", + "D02Z02S01[NW]": "D02Z02S02[SE]", + "D02Z02S03[-Cherubs]": "D02Z02S03[-Cherubs]", + "D02Z02S08[E]": "D02Z02S08[E]", + "D02Z02S01[W]": "D02Z02S08[E]", + "D02Z01S04[-N]": "D02Z01S04[-N]", + "D02Z01S06[W]": "D02Z01S06[W]", + "D02Z02S02[-CherubsR]": "D02Z02S02[-CherubsR]", + "D02Z02S04[-CherubsL]": "D02Z02S04[-CherubsL]", + "D02Z02S11[SE]": "D02Z02S11[SE]", + "D02BZ02S01[C]": "D02BZ02S01[C]", + "D02Z02S03[SW]": "D02Z02S03[SW]", + "D02Z02S02[NE]": "D02Z02S03[SW]", + "D02Z02S04[SE]": "D02Z02S03[SW]", + "D02Z02S02[NW]": "D02Z02S03[SW]", + "D02Z02S05[-CherubsL]": "D02Z02S05[-CherubsL]", + "D02Z02S05[-CherubsR]": "D02Z02S05[-CherubsR]", + "D02Z02S05[SW]": "D02Z02S05[SW]", + "D02Z02S05[W]": "D02Z02S05[W]", + "D02Z02S09[E]": "D02Z02S09[E]", + "D02Z02S04[W]": "D02Z02S09[E]", + "D02Z02S05[SE]": "D02Z02S05[SE]", + "D02Z02S03[NW]": "D02Z02S05[SE]", + "D02Z02S14[W]": "D02Z02S14[W]", + "D02Z02S04[E]": "D02Z02S04[E]", + "D02Z02S04[NE]": "D02Z02S04[NE]", + "D02Z02S07[E]": "D02Z02S07[E]", + "D02Z02S05[NW]": "D02Z02S07[E]", + "D02Z03S01[E]": "D02Z02S07[E]", + "D02Z02S07[W]": "D02Z02S07[E]", + "D02Z03S08[E]": "D02Z02S07[E]", + "D02Z03S01[W]": "D02Z02S07[E]", + "D02Z03S08[SE]": "D02Z02S07[E]", + "D02Z03S14[W]": "D02Z02S07[E]", + "D02Z03S14[E]": "D02Z02S07[E]", + "D02Z02S11[NW]": "D02Z02S07[E]", + "D02Z03S16[W]": "D02Z02S07[E]", + "D02Z03S08[NE]": "D02Z02S07[E]", + "D02Z03S02[S]": "D02Z02S07[E]", + "D02Z03S16[N]": "D02Z02S07[E]", + "D02Z02S10[W]": "D02Z02S10[W]", + "D02Z02S03[NE]": "D02Z02S03[NE]", + "D02Z02S05[E]": "D02Z02S05[E]", + "D02Z03S10[-Cherubs]": "D02Z03S10[-Cherubs]", + "D02Z02S06[E]": "D02Z02S06[E]", + "D02Z02S08[W]": "D02Z02S08[W]", + "D02Z02S12[W]": "D02Z02S12[W]", + "D02Z02S13[W]": "D02Z02S13[W]", + "D02Z02S08[C]": "D02Z02S08[C]", + "D02Z02S11[W]": "D02Z02S11[W]", + "D02Z02S11[E]": "D02Z02S11[E]", + "D02Z02S11[NE]": "D02Z02S11[NE]", + "D02Z03S07[E]": "D02Z03S07[E]", + "D02Z03S12[E]": "D02Z03S12[E]", + "D02Z03S02[W]": "D02Z03S02[W]", + "D02Z03S03[E]": "D02Z03S02[W]", + "D02Z03S05[E]": "D02Z03S02[W]", + "D02Z03S03[W]": "D02Z03S02[W]", + "D02Z03S05[NE]": "D02Z03S05[NE]", + "D02Z03S03[NW]": "D02Z03S05[NE]", + "D02Z03S02[NW]": "D02Z03S02[NW]", + "D02Z03S20[E]": "D02Z03S20[E]", + "D02Z03S02[NE]": "D02Z03S02[NE]", + "D02Z03S02[N]": "D02Z03S02[N]", + "D02Z03S10[W]": "D02Z03S10[W]", + "D02Z03S11[E]": "D02Z03S10[W]", + "D02Z03S22[W]": "D02Z03S10[W]", + "D02Z03S11[NE]": "D02Z03S10[W]", + "D02Z03S15[E]": "D02Z03S15[E]", + "D02Z03S19[E]": "D02Z03S19[E]", + "D02Z03S07[N]": "D02Z03S07[N]", + "D02Z03S11[S]": "D02Z03S11[S]", + "D02Z03S13[W]": "D02Z03S13[W]", + "D02Z03S21[E]": "D02Z03S21[E]", + "D02Z03S05[S]": "D02Z03S05[S]", + "D02Z03S06[S]": "D02Z03S06[S]", + "D02Z03S08[W]": "D02Z03S08[W]", + "D02Z03S17[E]": "D02Z03S17[E]", + "D02Z03S24[E]": "D02Z03S24[E]", + "D02Z03S06[W]": "D02Z03S06[W]", + "D02Z03S18[SE]": "D02Z03S06[W]", + "D02Z03S09[W]": "D02Z03S09[W]", + "D02Z03S23[E]": "D02Z03S23[E]", + "D02Z03S07[W]": "D02Z03S07[W]", + "D02Z03S07[NWW]": "D02Z03S07[NWW]", + "D02Z03S07[NW]": "D02Z03S07[NW]", + "D02Z03S08[SW]": "D02Z03S08[SW]", + "D02Z03S09[E]": "D02Z03S09[E]", + "D02Z03S21[W]": "D02Z03S21[W]", + "D02Z03S10[-W]": "D02Z03S10[-W]", + "D09Z01S04[W]": "D09Z01S04[W]", + "D02Z03S11[W]": "D02Z03S11[W]", + "D02Z03S11[NW]": "D02Z03S11[NW]", + "D09Z01S06[-E]": "D09Z01S06[-E]", + "D02Z03S18[NW]": "D02Z03S18[NW]", + "D02Z03S18[NE]": "D02Z03S18[NE]", + "D02Z03S20[W]": "D02Z03S20[W]", + "D03Z01S01[W]": "D03Z01S01[W]", + "D03Z01S06[E]": "D03Z01S06[E]", + "D03Z01S02[W]": "D03Z01S06[E]", + "D03Z01S01[S]": "D03Z01S01[S]", + "D20Z01S02[E]": "D20Z01S02[E]", + "D03Z01S01[-Cherubs]": "D03Z01S01[-Cherubs]", + "D03Z02S15[E]": "D03Z02S15[E]", + "D20Z01S02[W]": "D20Z01S02[W]", + "D03Z01S03[E]": "D03Z01S03[E]", + "D03Z01S06[W]": "D03Z01S03[E]", + "D03Z01S03[W]": "D03Z01S03[W]", + "D03Z01S05[E]": "D03Z01S05[E]", + "D03Z01S03[SW]": "D03Z01S03[SW]", + "D03Z01S03[-WestL]": "D03Z01S03[-WestL]", + "D03Z02S02[W]": "D03Z02S02[W]", + "D03Z02S09[N]": "D03Z02S09[N]", + "D03Z02S13[E]": "D03Z02S13[E]", + "D03Z01S03[SE]": "D03Z01S03[SE]", + "D03Z02S01[N]": "D03Z01S03[SE]", + "D03Z01S03[-EastR]": "D03Z01S03[-EastR]", + "D03Z02S02[E]": "D03Z02S02[E]", + "D03Z02S01[W]": "D03Z02S02[E]", + "D03Z01S03[-WestR]": "D03Z01S03[-WestR]", + "D03Z01S03[-EastL]": "D03Z01S03[-EastL]", + "D03Z02S03[N]": "D03Z02S03[N]", + "D03Z02S02[S]": "D03Z02S03[N]", + "D03Z02S04[NW]": "D03Z02S03[N]", + "D03Z02S03[SE2]": "D03Z02S03[N]", + "D03Z02S10[E]": "D03Z02S10[E]", + "D03Z01S04[NW]": "D03Z01S04[NW]", + "D17Z01S07[SE]": "D17Z01S07[SE]", + "D03Z01S05[W]": "D17Z01S07[SE]", + "D17Z01S06[E]": "D17Z01S07[SE]", + "D17Z01S07[W]": "D17Z01S07[SE]", + "D17Z01S09[E]": "D17Z01S07[SE]", + "D17Z01S07[NW]": "D17Z01S07[SE]", + "D03Z01S04[E]": "D03Z01S04[E]", + "D03Z02S10[N]": "D03Z02S10[N]", + "D17Z01S04[S]": "D17Z01S04[S]", + "D17Z01S08[E]": "D17Z01S08[E]", + "D03Z02S05[W]": "D03Z02S05[W]", + "D03Z02S03[E]": "D03Z02S05[W]", + "D03Z02S06[W]": "D03Z02S06[W]", + "D03Z02S07[E]": "D03Z02S07[E]", + "D03Z02S07[N]": "D03Z02S07[N]", + "D03Z03S01[NL]": "D03Z03S01[NL]", + "D03Z02S03[SSL]": "D03Z03S01[NL]", + "D03Z02S03[SSC]": "D03Z03S01[NL]", + "D03Z02S03[SSR]": "D03Z03S01[NL]", + "D03Z03S01[NR]": "D03Z03S01[NL]", + "D03Z02S03[W]": "D03Z02S03[W]", + "D03Z02S03[SW]": "D03Z02S03[SW]", + "D03Z02S08[E]": "D03Z02S08[E]", + "D03Z02S04[NE]": "D03Z02S04[NE]", + "D03Z02S05[S]": "D03Z02S04[NE]", + "D03Z02S11[W]": "D03Z02S04[NE]", + "D03Z02S05[E]": "D03Z02S04[NE]", + "D03Z02S06[N]": "D03Z02S06[N]", + "D03Z02S03[SE]": "D03Z02S03[SE]", + "D03Z02S04[S]": "D03Z02S04[S]", + "D03Z03S12[W]": "D03Z03S12[W]", + "D03Z03S01[S]": "D03Z03S12[W]", + "D03Z03S18[E]": "D03Z03S12[W]", + "D03Z03S01[W]": "D03Z03S12[W]", + "D03Z03S02[W]": "D03Z03S12[W]", + "D03Z03S12[E]": "D03Z03S12[W]", + "D03Z02S15[W]": "D03Z02S15[W]", + "D03Z02S07[W]": "D03Z02S07[W]", + "D03Z02S09[S]": "D03Z02S09[S]", + "D03Z02S08[N]": "D03Z02S09[S]", + "D03Z02S14[E]": "D03Z02S09[S]", + "D03Z02S08[W]": "D03Z02S09[S]", + "D03Z02S10[S]": "D03Z02S10[S]", + "D03Z02S10[-Cherubs]": "D03Z02S10[-Cherubs]", + "D03Z02S12[E]": "D03Z02S12[E]", + "D03Z02S09[W]": "D03Z02S09[W]", + "D03Z02S13[-Cherubs]": "D03Z02S13[-Cherubs]", + "D03Z02S10[W]": "D03Z02S10[W]", + "D03Z02S11[E]": "D03Z02S11[E]", + "D20Z01S01[W]": "D20Z01S01[W]", + "D03Z03S02[NE]": "D03Z03S02[NE]", + "D03Z03S14[W]": "D03Z03S02[NE]", + "D03Z03S02[E]": "D03Z03S02[E]", + "D03Z03S04[NW]": "D03Z03S04[NW]", + "D03Z03S03[NE]": "D03Z03S04[NW]", + "D03Z03S04[SW]": "D03Z03S04[SW]", + "D03Z03S03[W]": "D03Z03S03[W]", + "D03Z03S03[SE]": "D03Z03S03[SE]", + "D03Z03S05[NW]": "D03Z03S05[NW]", + "D03Z03S04[NE]": "D03Z03S05[NW]", + "D03Z03S05[SW]": "D03Z03S05[SW]", + "D03Z03S04[E]": "D03Z03S05[SW]", + "D03Z03S07[SW]": "D03Z03S05[SW]", + "D03Z03S05[SE]": "D03Z03S05[SW]", + "D03Z03S13[W]": "D03Z03S13[W]", + "D03Z03S06[W]": "D03Z03S06[W]", + "D03Z03S04[SE]": "D03Z03S04[SE]", + "D03Z03S04[-Cherubs]": "D03Z03S04[-Cherubs]", + "D03Z03S09[SW]": "D03Z03S09[SW]", + "D03Z03S05[NE]": "D03Z03S05[NE]", + "D03Z03S08[W]": "D03Z03S08[W]", + "D03Z03S09[N]": "D03Z03S09[N]", + "D03Z03S11[W]": "D03Z03S11[W]", + "D03Z03S19[E]": "D03Z03S19[E]", + "D03Z03S07[NW]": "D03Z03S19[E]", + "D03Z03S07[NE]": "D03Z03S07[NE]", + "D03Z03S07[E]": "D03Z03S07[E]", + "D03Z03S08[-CherubsL]": "D03Z03S08[-CherubsL]", + "D03Z03S08[-CherubsR]": "D03Z03S08[-CherubsR]", + "D03Z03S15[W]": "D03Z03S15[W]", + "D03Z03S07[S]": "D03Z03S07[S]", + "D03Z03S10[E]": "D03Z03S10[E]", + "D03Z03S11[E]": "D03Z03S11[E]", + "D03Z03S16[W]": "D03Z03S16[W]", + "D03Z03S15[E]": "D03Z03S15[E]", + "D03Z03S17[W]": "D03Z03S17[W]", + "D04Z01S01[W]": "D04Z01S01[W]", + "D08Z01S01[E]": "D08Z01S01[E]", + "D08Z02S02[W]": "D08Z02S02[W]", + "D08Z02S01[SE]": "D08Z02S02[W]", + "D08Z02S03[S]": "D08Z02S02[W]", + "D08Z02S01[N]": "D08Z02S02[W]", + "D04Z01S01[E]": "D04Z01S01[E]", + "D04Z01S01[NE]": "D04Z01S01[NE]", + "D04Z01S03[W]": "D04Z01S03[W]", + "D04Z01S01[N]": "D04Z01S01[N]", + "D04Z01S05[S]": "D04Z01S01[N]", + "D04Z01S06[S]": "D04Z01S06[S]", + "D04Z01S06[Cherubs]": "D04Z01S06[Cherubs]", + "D04Z01S02[W]": "D04Z01S02[W]", + "D04Z01S02[NW]": "D04Z01S02[NW]", + "D04Z01S05[-Cherubs]": "D04Z01S05[-Cherubs]", + "D08Z02S01[E]": "D08Z02S01[E]", + "D04Z01S02[E]": "D04Z01S02[E]", + "D04Z01S04[W]": "D04Z01S04[W]", + "D05Z01S20[N]": "D05Z01S20[N]", + "D04Z01S03[E]": "D04Z01S03[E]", + "D04Z02S01[W]": "D04Z02S01[W]", + "D06Z01S18[-Cherubs]": "D06Z01S18[-Cherubs]", + "D04Z01S03[S]": "D04Z01S03[S]", + "D05Z01S06[E]": "D05Z01S06[E]", + "D05Z01S20[W]": "D05Z01S06[E]", + "D05Z01S07[NW]": "D05Z01S06[E]", + "D05Z01S20[E]": "D05Z01S06[E]", + "D04Z01S04[E]": "D04Z01S04[E]", + "D04Z02S02[S]": "D04Z02S02[S]", + "D04Z02S03[W]": "D04Z02S03[W]", + "D04Z02S01[NE]": "D04Z02S03[W]", + "D04Z02S04[NW]": "D04Z02S03[W]", + "D04Z02S03[E]": "D04Z02S03[W]", + "D04Z02S19[W]": "D04Z02S03[W]", + "D04Z02S04[NE]": "D04Z02S03[W]", + "D04Z03S01[W]": "D04Z03S01[W]", + "D04Z01S05[N]": "D04Z01S05[N]", + "D09Z01S09[SW]": "D09Z01S09[SW]", + "D04Z01S06[E]": "D04Z01S06[E]", + "D09Z01S07[SW]": "D09Z01S07[SW]", + "D09Z01S09[E]": "D09Z01S07[SW]", + "D09Z01S02[SW]": "D09Z01S07[SW]", + "D09Z01S07[E]": "D09Z01S07[SW]", + "D09Z01S08[SE]": "D09Z01S07[SW]", + "D09Z01S07[W]": "D09Z01S07[SW]", + "D09Z01S10[W]": "D09Z01S07[SW]", + "D09Z01S07[SE]": "D09Z01S07[SW]", + "D09Z01S12[E]": "D09Z01S12[E]", + "D04Z02S01[N]": "D04Z02S01[N]", + "D04Z02S15[W]": "D04Z02S15[W]", + "D04Z02S17[W]": "D04Z02S17[W]", + "D06Z01S02[S]": "D06Z01S02[S]", + "D04Z02S02[N]": "D06Z01S02[S]", + "D06Z01S18[E]": "D06Z01S02[S]", + "D06Z01S02[W]": "D06Z01S02[S]", + "D06Z01S08[W]": "D06Z01S02[S]", + "D06Z01S02[E]": "D06Z01S02[S]", + "D04Z02S01[E]": "D04Z02S01[E]", + "D04Z02S04[W]": "D04Z02S04[W]", + "D04Z02S02[SE]": "D04Z02S02[SE]", + "D04Z02S02[NE]": "D04Z02S02[NE]", + "D04Z02S22[W]": "D04Z02S22[W]", + "D04Z02S05[W]": "D04Z02S05[W]", + "D04Z02S04[E]": "D04Z02S05[W]", + "D05Z01S01[NW]": "D04Z02S05[W]", + "D04Z02S04[SE]": "D04Z02S05[W]", + "D05Z01S02[E]": "D04Z02S05[W]", + "D05Z01S01[W]": "D04Z02S05[W]", + "D05Z01S16[W]": "D04Z02S05[W]", + "D05Z01S01[E]": "D04Z02S05[W]", + "D05Z01S03[E]": "D04Z02S05[W]", + "D05Z01S02[NW]": "D04Z02S05[W]", + "D04Z02S06[S]": "D04Z02S06[S]", + "D04Z02S06[-Cherubs]": "D04Z02S06[-Cherubs]", + "D04Z02S14[E]": "D04Z02S14[E]", + "D04Z03S01[E]": "D04Z03S01[E]", + "D04Z02S04[SW]": "D04Z02S04[SW]", + "D04Z02S07[SW]": "D04Z02S07[SW]", + "D04Z02S07[W]": "D04Z02S07[W]", + "D04Z02S04[N]": "D04Z02S04[N]", + "D04Z02S09[W]": "D04Z02S09[W]", + "D04Z02S06[NE]": "D04Z02S09[W]", + "D04Z02S08[W]": "D04Z02S09[W]", + "D04Z02S09[E]": "D04Z02S09[W]", + "D04Z02S20[W]": "D04Z02S09[W]", + "D04Z02S08[E]": "D04Z02S09[W]", + "D04Z02S10[W]": "D04Z02S10[W]", + "D04Z02S06[E]": "D04Z02S10[W]", + "D04Z02S11[E]": "D04Z02S11[E]", + "D06Z01S23[S]": "D06Z01S23[S]", + "D04Z02S05[E]": "D04Z02S05[E]", + "D04Z02S08[S]": "D04Z02S08[S]", + "D04Z02S13[W]": "D04Z02S13[W]", + "D04Z02S19[E]": "D04Z02S19[E]", + "D04Z02S23[W]": "D04Z02S23[W]", + "D04Z02S06[NW]": "D04Z02S06[NW]", + "D04Z02S21[SE]": "D04Z02S21[SE]", + "D04Z02S06[N]": "D04Z02S06[N]", + "D06Z01S01[-Cherubs]": "D06Z01S01[-Cherubs]", + "D06Z01S20[W]": "D06Z01S20[W]", + "D06Z01S23[E]": "D06Z01S20[W]", + "D06Z01S20[E]": "D06Z01S20[W]", + "D06Z01S04[SW]": "D06Z01S20[W]", + "D06Z01S04[W]": "D06Z01S20[W]", + "D06Z01S03[E]": "D06Z01S20[W]", + "D06Z01S22[Sword]": "D06Z01S22[Sword]", + "D04Z02S16[W]": "D04Z02S16[W]", + "D04Z02S07[N]": "D04Z02S07[N]", + "D04Z02S16[-Cherubs]": "D04Z02S16[-Cherubs]", + "D04Z02S07[NE]": "D04Z02S07[NE]", + "D04Z02S07[SE]": "D04Z02S07[SE]", + "D04Z02S24[NW]": "D04Z02S24[NW]", + "D04Z02S23[SE]": "D04Z02S24[NW]", + "D20Z02S01[E]": "D04Z02S24[NW]", + "D04Z02S24[SW]": "D04Z02S24[NW]", + "D04Z02S25[W]": "D04Z02S24[NW]", + "D04Z02S24[SE]": "D04Z02S24[NW]", + "D20Z02S03[SE]": "D04Z02S24[NW]", + "D20Z02S01[W]": "D04Z02S24[NW]", + "D20Z02S04[E]": "D04Z02S24[NW]", + "D20Z02S03[W]": "D04Z02S24[NW]", + "D04Z04S01[W]": "D04Z04S01[W]", + "D04BZ02S01[Redento]": "D04BZ02S01[Redento]", + "D04Z02S09[NE]": "D04Z02S09[NE]", + "D04Z02S11[W]": "D04Z02S11[W]", + "D04Z02S12[W]": "D04Z02S12[W]", + "D04Z02S22[E]": "D04Z02S22[E]", + "D04Z02S21[W]": "D04Z02S22[E]", + "D04Z02S15[E]": "D04Z02S15[E]", + "D04Z02S20[Redento]": "D04Z02S20[Redento]", + "D04Z02S21[NE]": "D04Z02S21[NE]", + "D04Z02S23[NE]": "D04Z02S23[NE]", + "D04Z04S02[W]": "D04Z04S02[W]", + "D04Z03S02[W]": "D04Z03S02[W]", + "D05BZ01S01[FrontalN]": "D05BZ01S01[FrontalN]", + "D04Z04S01[E]": "D04Z04S01[E]", + "D05Z01S15[E]": "D05Z01S15[E]", + "D05Z01S02[W]": "D05Z01S02[W]", + "D05Z01S21[NE]": "D05Z01S21[NE]", + "D05Z01S04[E]": "D05Z01S04[E]", + "D05BZ01S01[FrontalS]": "D05BZ01S01[FrontalS]", + "D05Z01S03[W]": "D05Z01S03[W]", + "D05Z01S05[E]": "D05Z01S05[E]", + "D05Z01S03[Frontal]": "D05Z01S03[Frontal]", + "D05Z01S22[FrontalN]": "D05Z01S22[FrontalN]", + "D05Z01S04[W]": "D05Z01S04[W]", + "D05Z01S07[E]": "D05Z01S07[E]", + "D05Z01S17[W]": "D05Z01S17[W]", + "D05Z01S05[NE]": "D05Z01S17[W]", + "D05Z01S05[SW]": "D05Z01S05[SW]", + "D05Z01S08[NE]": "D05Z01S08[NE]", + "D05Z01S07[SW]": "D05Z01S08[NE]", + "D05Z01S12[E]": "D05Z01S08[NE]", + "D05Z01S08[NW]": "D05Z01S08[NE]", + "D05Z01S09[W]": "D05Z01S08[NE]", + "D05Z01S08[E]": "D05Z01S08[NE]", + "D05Z01S06[W]": "D05Z01S06[W]", + "D05Z01S24[E]": "D05Z01S06[W]", + "D05Z01S10[E]": "D05Z01S10[E]", + "D05Z01S14[W]": "D05Z01S14[W]", + "D05Z01S08[W]": "D05Z01S08[W]", + "D05Z01S11[NE]": "D05Z01S11[NE]", + "D05Z01S11[E]": "D05Z01S11[E]", + "D05Z01S18[W]": "D05Z01S18[W]", + "D05Z01S08[Health]": "D05Z01S08[Health]", + "D05Z01S09[E]": "D05Z01S09[E]", + "D05Z01S10[W]": "D05Z01S10[W]", + "D05Z01S10[NW]": "D05Z01S10[NW]", + "D05Z01S19[E]": "D05Z01S19[E]", + "D05Z01S23[E]": "D05Z01S23[E]", + "D05Z01S11[NW]": "D05Z01S23[E]", + "D05Z02S01[W]": "D05Z02S01[W]", + "D05Z01S11[SW]": "D05Z01S11[SW]", + "D05Z02S15[E]": "D05Z02S15[E]", + "D05Z01S11[SE]": "D05Z01S11[SE]", + "D05Z02S02[NW]": "D05Z02S02[NW]", + "D05Z01S13[E]": "D05Z01S13[E]", + "D05Z01S15[W]": "D05Z01S15[W]", + "D05Z02S14[E]": "D05Z02S14[E]", + "D05Z01S19[W]": "D05Z01S19[W]", + "D05Z02S12[N]": "D05Z02S12[N]", + "D05Z01S21[SW]": "D05Z01S21[SW]", + "D05Z02S06[NE]": "D05Z02S06[NE]", + "D05Z02S14[W]": "D05Z02S06[NE]", + "D05Z02S06[SW]": "D05Z02S06[NE]", + "D05Z02S05[E]": "D05Z02S06[NE]", + "D05Z02S07[E]": "D05Z02S06[NE]", + "D05Z02S06[NW]": "D05Z02S06[NE]", + "D05Z01S21[NW]": "D05Z01S21[NW]", + "D05Z01S21[-Cherubs]": "D05Z01S21[-Cherubs]", + "D05Z02S06[SE]": "D05Z02S06[SE]", + "D05Z01S22[E]": "D05Z01S22[E]", + "D05Z02S01[E]": "D05Z02S01[E]", + "D05Z02S03[E]": "D05Z02S03[E]", + "D05Z02S05[W]": "D05Z02S05[W]", + "D05Z02S09[W]": "D05Z02S09[W]", + "D05Z02S02[SW]": "D05Z02S02[SW]", + "D05Z02S02[SE]": "D05Z02S02[SE]", + "D05Z02S08[W]": "D05Z02S08[W]", + "D05Z02S02[NE]": "D05Z02S02[NE]", + "D05BZ02S01[C]": "D05BZ02S01[C]", + "D05Z02S04[C]": "D05Z02S04[C]", + "D05Z02S11[W]": "D05Z02S11[W]", + "D05Z02S10[E]": "D05Z02S10[E]", + "D05Z02S07[W]": "D05Z02S07[W]", + "D05Z02S13[E]": "D05Z02S13[E]", + "D05Z02S09[E]": "D05Z02S09[E]", + "D05Z02S10[W]": "D05Z02S10[W]", + "D06Z01S01[SW]": "D06Z01S01[SW]", + "D06Z01S14[E]": "D06Z01S01[SW]", + "D06Z01S01[SE]": "D06Z01S01[SW]", + "D06Z01S03[W]": "D06Z01S01[SW]", + "D06Z01S08[E]": "D06Z01S01[SW]", + "D06Z01S14[W]": "D06Z01S01[SW]", + "D06Z01S12[S]": "D06Z01S01[SW]", + "D06Z01S14[N]": "D06Z01S01[SW]", + "D06Z01S01[W]": "D06Z01S01[W]", + "D06Z01S07[E]": "D06Z01S01[W]", + "D06Z01S01[E]": "D06Z01S01[W]", + "D06Z01S06[WW]": "D06Z01S01[W]", + "D06Z01S12[E]": "D06Z01S01[W]", + "D06Z01S07[W]": "D06Z01S01[W]", + "D06Z01S13[E]": "D06Z01S01[W]", + "D06Z01S12[W]": "D06Z01S01[W]", + "D06Z01S16[-CherubsL]": "D06Z01S16[-CherubsL]", + "D06Z01S16[-CherubsR]": "D06Z01S16[-CherubsR]", + "D06Z01S04[NW]": "D06Z01S04[NW]", + "D06Z01S06[E]": "D06Z01S04[NW]", + "D06Z01S04[NE]": "D06Z01S04[NE]", + "D06Z01S06[W]": "D06Z01S04[NE]", + "D06Z01S15[SW]": "D06Z01S15[SW]", + "D06Z01S01[NW]": "D06Z01S01[NW]", + "D06Z01S16[E]": "D06Z01S01[NW]", + "D06Z01S09[-CherubsL]": "D06Z01S09[-CherubsL]", + "D06Z01S09[-CherubsR]": "D06Z01S09[-CherubsR]", + "D06Z01S12[NE2]": "D06Z01S12[NE2]", + "D06Z01S16[W]": "D06Z01S12[NE2]", + "D06Z01S01[NE]": "D06Z01S01[NE]", + "D06Z01S17[W]": "D06Z01S01[NE]", + "D06Z01S10[-CherubsL]": "D06Z01S10[-CherubsL]", + "D06Z01S10[-CherubsR]": "D06Z01S10[-CherubsR]", + "D06Z01S26[W]": "D06Z01S26[W]", + "D06Z01S17[E]": "D06Z01S26[W]", + "D06Z01S01[NNW]": "D06Z01S01[NNW]", + "D06Z01S12[NE]": "D06Z01S12[NE]", + "D06Z01S01[NNE]": "D06Z01S01[NNE]", + "D06Z01S10[W]": "D06Z01S01[NNE]", + "D06Z01S21[W]": "D06Z01S01[NNE]", + "D06Z01S10[E]": "D06Z01S01[NNE]", + "D06Z01S01[N]": "D06Z01S01[N]", + "D06Z01S25[W]": "D06Z01S25[W]", + "D06Z01S19[E]": "D06Z01S25[W]", + "D06Z01S13[S]": "D06Z01S13[S]", + "D06Z01S09[E]": "D06Z01S09[E]", + "D06Z01S19[S]": "D06Z01S19[S]", + "D06Z01S17[-Cherubs]": "D06Z01S17[-Cherubs]", + "D06Z01S24[W]": "D06Z01S24[W]", + "D06Z01S04[Health]": "D06Z01S04[Health]", + "D06Z01S05[E]": "D06Z01S05[E]", + "D06Z01S12[NW]": "D06Z01S05[E]", + "D06Z01S09[W]": "D06Z01S09[W]", + "D06Z01S06[EE]": "D06Z01S06[EE]", + "D06Z01S11[W]": "D06Z01S11[W]", + "D06Z01S21[E]": "D06Z01S21[E]", + "D06Z01S15[NW]": "D06Z01S21[E]", + "D06Z01S08[N]": "D06Z01S08[N]", + "D09Z01S01[E]": "D09Z01S01[E]", + "D06Z01S13[W]": "D06Z01S13[W]", + "D09Z01S11[E]": "D09Z01S11[E]", + "D06Z01S15[NE]": "D06Z01S15[NE]", + "D07Z01S01[W]": "D07Z01S01[W]", + "D06Z01S23[Sword]": "D06Z01S23[Sword]", + "D06Z01S25[E]": "D06Z01S25[E]", + "D07Z01S02[W]": "D07Z01S02[W]", + "D07Z01S01[E]": "D07Z01S01[E]", + "D07Z01S03[W]": "D07Z01S03[W]", + "D07Z01S02[E]": "D07Z01S03[W]", + "D08Z01S02[NE]": "D08Z01S02[NE]", + "D08Z03S02[NW]": "D08Z03S02[NW]", + "D08Z03S03[E]": "D08Z03S02[NW]", + "D08Z01S02[SE]": "D08Z01S02[SE]", + "D08Z03S01[W]": "D08Z03S01[W]", + "D08Z02S03[W]": "D08Z02S03[W]", + "D08Z03S03[W]": "D08Z03S03[W]", + "D08Z02S03[E]": "D08Z02S03[E]", + "D08Z03S02[SW]": "D08Z03S02[SW]", + "D08Z03S01[E]": "D08Z03S01[E]", + "D09Z01S01[W]": "D09Z01S01[W]", + "D09Z01S02[N]": "D09Z01S02[N]", + "D09Z01S11[S]": "D09Z01S02[N]", + "D09Z01S02[NW]": "D09Z01S02[N]", + "D09Z01S07[NE]": "D09Z01S02[N]", + "D09Z01S04[E]": "D09Z01S04[E]", + "D09Z01S04[S]": "D09Z01S04[S]", + "D09Z01S07[N]": "D09Z01S04[S]", + "D09Z01S08[NE]": "D09Z01S04[S]", + "D09Z01S07[NW]": "D09Z01S04[S]", + "D09Z01S03[W]": "D09Z01S03[W]", + "D09Z01S08[W]": "D09Z01S08[W]", + "D09Z01S13[E]": "D09Z01S13[E]", + "D09Z01S05[W]": "D09Z01S13[E]", + "D09Z01S05[SE]": "D09Z01S05[SE]", + "D09Z01S08[S]": "D09Z01S08[S]", + "D09Z01S05[NE]": "D09Z01S05[NE]", + "D09Z01S06[E]": "D09Z01S06[E]", + "D09Z01S11[W]": "D09Z01S11[W]", + "D09Z01S09[NW]": "D09Z01S09[NW]", + "D17Z01S01[E]": "D17Z01S01[E]", + "D17Z01S05[W]": "D17Z01S05[W]", + "D17Z01S02[E]": "D17Z01S05[W]", + "D17Z01S11[W]": "D17Z01S05[W]", + "D17Z01S05[E]": "D17Z01S05[W]", + "D17Z01S10[S]": "D17Z01S10[S]", + "D17Z01S02[N]": "D17Z01S10[S]", + "D17Z01S02[W]": "D17Z01S02[W]", + "D17Z01S14[-Cherubs1]": "D17Z01S14[-Cherubs1]", + "D17Z01S14[-Cherubs2]": "D17Z01S14[-Cherubs2]", + "D17Z01S14[-Cherubs3]": "D17Z01S14[-Cherubs3]", + "D17Z01S04[N]": "D17Z01S04[N]", + "D17Z01S13[E]": "D17Z01S13[E]", + "D17Z01S10[W]": "D17Z01S13[E]", + "D17Z01S14[E]": "D17Z01S13[E]", + "D17Z01S13[W]": "D17Z01S13[E]", + "D17Z01S03[relic]": "D17Z01S03[relic]", + "D17Z01S04[W]": "D17Z01S04[W]", + "D17Z01S04[FrontL]": "D17Z01S04[FrontL]", + "D17Z01S04[FrontR]": "D17Z01S04[FrontR]", + "D17BZ02S01[FrontR]": "D17Z01S04[FrontR]", + "D17Z01S05[S]": "D17Z01S05[S]", + "D17Z01S07[N]": "D17Z01S07[N]", + "D17Z01S12[E]": "D17Z01S12[E]", + "D17BZ02S01[FrontL]": "D17BZ02S01[FrontL]", + "D17Z01S07[SW]": "D17Z01S07[SW]", + "D17Z01S15[E]": "D17Z01S15[E]", + "D17Z01S14[W]": "D17Z01S14[W]", + "D20Z01S01[E]": "D20Z01S01[E]", + "D20Z01S03[W]": "D20Z01S03[W]", + "D20Z02S11[NW]": "D20Z02S11[NW]", + "D20Z02S11[SW]": "D20Z02S11[SW]", + "D20Z01S13[E]": "D20Z01S13[E]", + "D20Z02S10[W]": "D20Z02S10[W]", + "D20Z02S12[E]": "D20Z02S12[E]", + "D20Z03S01[W]": "D20Z03S01[W]", + "D20Z01S14[E]": "D20Z01S14[E]", + "D20Z02S02[W]": "D20Z02S02[W]", + "D20Z02S05[E]": "D20Z02S05[E]", + "D20Z02S04[W]": "D20Z02S05[E]", + "D20Z02S06[SE]": "D20Z02S05[E]", + "D20Z02S05[SW]": "D20Z02S05[E]", + "D20Z02S03[NE]": "D20Z02S03[NE]", + "D20Z02S06[NE]": "D20Z02S06[NE]", + "D20Z02S05[NW]": "D20Z02S06[NE]", + "D20Z02S07[E]": "D20Z02S06[NE]", + "D20Z02S06[NW]": "D20Z02S06[NE]", + "D20Z02S09[E]": "D20Z02S09[E]", + "D20Z02S06[SW]": "D20Z02S06[SW]", + "D20Z02S10[E]": "D20Z02S10[E]", + "D20Z02S08[E]": "D20Z02S08[E]", + "D20Z02S07[W]": "D20Z02S07[W]", + "D20Z02S09[W]": "D20Z02S09[W]", + "D20Z02S11[E]": "D20Z02S11[E]" +} diff --git a/worlds/blasphemous/test/__init__.py b/worlds/blasphemous/test/__init__.py new file mode 100644 index 000000000000..9f89bd26c879 --- /dev/null +++ b/worlds/blasphemous/test/__init__.py @@ -0,0 +1,7 @@ +from test.bases import WorldTestBase +from .. import BlasphemousWorld + + +class BlasphemousTestBase(WorldTestBase): + game = "Blasphemous" + world: BlasphemousWorld diff --git a/worlds/blasphemous/test/test_background_zones.py b/worlds/blasphemous/test/test_background_zones.py new file mode 100644 index 000000000000..cd93f51766a9 --- /dev/null +++ b/worlds/blasphemous/test/test_background_zones.py @@ -0,0 +1,56 @@ +from . import BlasphemousTestBase +from ..Locations import location_names + + +class BotSSGauntletTest(BlasphemousTestBase): + options = { + "starting_location": "albero", + "wall_climb_shuffle": True, + "dash_shuffle": True + } + + @property + def run_default_tests(self) -> bool: + return False + + def test_botss_gauntlet(self) -> None: + self.assertAccessDependency([location_names["CO25"]], [["Dash Ability", "Wall Climb Ability"]], True) + + +class BackgroundZonesTest(BlasphemousTestBase): + @property + def run_default_tests(self) -> bool: + return False + + def test_dc_shroud(self) -> None: + self.assertAccessDependency([location_names["RB03"]], [["Shroud of Dreamt Sins"]], True) + + def test_wothp_bronze_cells(self) -> None: + bronze_locations = [ + location_names["QI70"], + location_names["RESCUED_CHERUB_03"] + ] + + self.assertAccessDependency(bronze_locations, [["Key of the Secular"]], True) + + def test_wothp_silver_cells(self) -> None: + silver_locations = [ + location_names["CO24"], + location_names["RESCUED_CHERUB_34"], + location_names["CO37"], + location_names["RESCUED_CHERUB_04"] + ] + + self.assertAccessDependency(silver_locations, [["Key of the Scribe"]], True) + + def test_wothp_gold_cells(self) -> None: + gold_locations = [ + location_names["QI51"], + location_names["CO26"], + location_names["CO02"] + ] + + self.assertAccessDependency(gold_locations, [["Key of the Inquisitor"]], True) + + def test_wothp_quirce(self) -> None: + self.assertAccessDependency([location_names["BS14"]], [["Key of the Secular", "Key of the Scribe", "Key of the Inquisitor"]], True) diff --git a/worlds/blasphemous/test/test_starting_locations.py b/worlds/blasphemous/test/test_starting_locations.py new file mode 100644 index 000000000000..9e04d52ef369 --- /dev/null +++ b/worlds/blasphemous/test/test_starting_locations.py @@ -0,0 +1,135 @@ +from . import BlasphemousTestBase + + +class TestBrotherhoodEasy(BlasphemousTestBase): + options = { + "starting_location": "brotherhood", + "difficulty": "easy" + } + + +class TestBrotherhoodNormal(BlasphemousTestBase): + options = { + "starting_location": "brotherhood", + "difficulty": "normal" + } + + +class TestBrotherhoodHard(BlasphemousTestBase): + options = { + "starting_location": "brotherhood", + "difficulty": "hard" + } + + +class TestAlberoEasy(BlasphemousTestBase): + options = { + "starting_location": "albero", + "difficulty": "easy" + } + + +class TestAlberoNormal(BlasphemousTestBase): + options = { + "starting_location": "albero", + "difficulty": "normal" + } + + +class TestAlberoHard(BlasphemousTestBase): + options = { + "starting_location": "albero", + "difficulty": "hard" + } + + +class TestConventEasy(BlasphemousTestBase): + options = { + "starting_location": "convent", + "difficulty": "easy" + } + + +class TestConventNormal(BlasphemousTestBase): + options = { + "starting_location": "convent", + "difficulty": "normal" + } + + +class TestConventHard(BlasphemousTestBase): + options = { + "starting_location": "convent", + "difficulty": "hard" + } + + +class TestGrievanceEasy(BlasphemousTestBase): + options = { + "starting_location": "grievance", + "difficulty": "easy" + } + + +class TestGrievanceNormal(BlasphemousTestBase): + options = { + "starting_location": "grievance", + "difficulty": "normal" + } + + +class TestGrievanceHard(BlasphemousTestBase): + options = { + "starting_location": "grievance", + "difficulty": "hard" + } + + +class TestKnotOfWordsEasy(BlasphemousTestBase): + options = { + "starting_location": "knot_of_words", + "difficulty": "easy" + } + + +class TestKnotOfWordsNormal(BlasphemousTestBase): + options = { + "starting_location": "knot_of_words", + "difficulty": "normal" + } + + +class TestKnotOfWordsHard(BlasphemousTestBase): + options = { + "starting_location": "knot_of_words", + "difficulty": "hard" + } + + +class TestRooftopsEasy(BlasphemousTestBase): + options = { + "starting_location": "rooftops", + "difficulty": "easy" + } + + +class TestRooftopsNormal(BlasphemousTestBase): + options = { + "starting_location": "rooftops", + "difficulty": "normal" + } + + +class TestRooftopsHard(BlasphemousTestBase): + options = { + "starting_location": "rooftops", + "difficulty": "hard" + } + + +# mourning and havoc can't be selected on easy or normal. hard only +class TestMourningHavocHard(BlasphemousTestBase): + options = { + "starting_location": "mourning_havoc", + "difficulty": "hard" + }