from typing import Dict, NamedTuple, Optional, Tuple, Union

from ..enums import (
    ZorkGrandInquisitorEvents,
    ZorkGrandInquisitorItems,
    ZorkGrandInquisitorLocations,
    ZorkGrandInquisitorRegions,
    ZorkGrandInquisitorTags,
)


class ZorkGrandInquisitorLocationData(NamedTuple):
    game_state_trigger: Optional[
        Tuple[
            Union[
                Tuple[str, str],
                Tuple[int, int],
                Tuple[int, Tuple[int, ...]],
            ],
            ...,
        ]
    ]
    archipelago_id: Optional[int]
    region: ZorkGrandInquisitorRegions
    tags: Optional[Tuple[ZorkGrandInquisitorTags, ...]] = None
    requirements: Optional[
        Tuple[
            Union[
                Union[
                    ZorkGrandInquisitorItems,
                    ZorkGrandInquisitorEvents,
                ],
                Tuple[
                    Union[
                        ZorkGrandInquisitorItems,
                        ZorkGrandInquisitorEvents,
                    ],
                    ...,
                ],
            ],
            ...,
        ]
    ] = None
    event_item_name: Optional[str] = None


LOCATION_OFFSET = 9758067000

location_data: Dict[
    Union[ZorkGrandInquisitorLocations, ZorkGrandInquisitorEvents], ZorkGrandInquisitorLocationData
] = {
    ZorkGrandInquisitorLocations.ALARM_SYSTEM_IS_DOWN: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2m"),),
        archipelago_id=LOCATION_OFFSET + 0,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.ARREST_THE_VANDAL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10789, 1),),
        archipelago_id=LOCATION_OFFSET + 1,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_GRAND_INQUISITOR_DOLL,
        ),
    ),
    ZorkGrandInquisitorLocations.ARTIFACTS_EXPLAINED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11787, 1), (11788, 1), (11789, 1)),
        archipelago_id=LOCATION_OFFSET + 2,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.A_BIG_FAT_SASSY_2_HEADED_MONSTER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((8929, 1),),
        archipelago_id=LOCATION_OFFSET + 3,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.KNOWS_OBIDIL,),
    ),
    ZorkGrandInquisitorLocations.A_LETTER_FROM_THE_WHITE_HOUSE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9124, 1),),
        archipelago_id=LOCATION_OFFSET + 4,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.WHITE_HOUSE_LETTER_MAILABLE,
            ZorkGrandInquisitorItems.HOTSPOT_666_MAILBOX,
        ),
    ),
    ZorkGrandInquisitorLocations.A_SMALLWAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11777, 1),),
        archipelago_id=LOCATION_OFFSET + 5,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_PURPLE_WORDS,
            ZorkGrandInquisitorItems.SPELL_IGRAM,
        ),
    ),
    ZorkGrandInquisitorLocations.BEAUTIFUL_THATS_PLENTY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13278, 1),),
        archipelago_id=LOCATION_OFFSET + 6,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_MOSSY_GRATE,
            ZorkGrandInquisitorItems.SPELL_THROCK,
        ),
    ),
    ZorkGrandInquisitorLocations.BEBURTT_DEMYSTIFIED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((16315, 1),),
        archipelago_id=LOCATION_OFFSET + 7,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE,
            ZorkGrandInquisitorItems.SPELL_KENDALL,
        ),
    ),
    ZorkGrandInquisitorLocations.BETTER_SPELL_MANUFACTURING_IN_UNDER_10_MINUTES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "th3x"),),
        archipelago_id=LOCATION_OFFSET + 8,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE,),
    ),
    ZorkGrandInquisitorLocations.BOING_BOING_BOING: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4220, 1),),
        archipelago_id=LOCATION_OFFSET + 9,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.SNAPDRAGON,
            ZorkGrandInquisitorItems.HOTSPOT_SPRING_MUSHROOM,
        ),
    ),
    ZorkGrandInquisitorLocations.BONK: ZorkGrandInquisitorLocationData(
        game_state_trigger=((19491, 1),),
        archipelago_id=LOCATION_OFFSET + 10,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.HOTSPOT_SNAPDRAGON,
        ),
    ),
    ZorkGrandInquisitorLocations.BRAVE_SOULS_WANTED: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "us2g"),),
        archipelago_id=LOCATION_OFFSET + 11,
        region=ZorkGrandInquisitorRegions.SUBWAY_CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.BROG_DO_GOOD: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2644, 1),),
        archipelago_id=LOCATION_OFFSET + 12,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_BROG,
            ZorkGrandInquisitorItems.BROGS_GRUE_EGG,
            ZorkGrandInquisitorItems.HOTSPOT_COOKING_POT,
            ZorkGrandInquisitorItems.BROGS_FLICKERING_TORCH,
        )
    ),
    ZorkGrandInquisitorLocations.BROG_EAT_ROCKS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2629, 1),),
        archipelago_id=LOCATION_OFFSET + 13,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_BROG,
            ZorkGrandInquisitorItems.BROGS_FLICKERING_TORCH,
        )
    ),
    ZorkGrandInquisitorLocations.BROG_KNOW_DUMB_THAT_DUMB: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2650, 1),),
        archipelago_id=LOCATION_OFFSET + 14,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_BROG,
            ZorkGrandInquisitorItems.BROGS_GRUE_EGG,
            ZorkGrandInquisitorItems.BROGS_FLICKERING_TORCH,
        )
    ),
    ZorkGrandInquisitorLocations.BROG_MUCH_BETTER_AT_THIS_GAME: ZorkGrandInquisitorLocationData(
        game_state_trigger=((15715, 1),),
        archipelago_id=LOCATION_OFFSET + 15,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_BROG,
            ZorkGrandInquisitorItems.BROGS_GRUE_EGG,
            ZorkGrandInquisitorItems.HOTSPOT_COOKING_POT,
            ZorkGrandInquisitorItems.BROGS_FLICKERING_TORCH,
            ZorkGrandInquisitorItems.BROGS_PLANK,
            ZorkGrandInquisitorItems.HOTSPOT_SKULL_CAGE,
        )
    ),
    ZorkGrandInquisitorLocations.CASTLE_WATCHING_A_FIELD_GUIDE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dv1t"),),
        archipelago_id=LOCATION_OFFSET + 16,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.CAVES_NOTES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "th3y"),),
        archipelago_id=LOCATION_OFFSET + 17,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE,),
    ),
    ZorkGrandInquisitorLocations.CLOSING_THE_TIME_TUNNELS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9543, 1),),
        archipelago_id=LOCATION_OFFSET + 18,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.CRISIS_AVERTED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11769, 1),),
        archipelago_id=LOCATION_OFFSET + 19,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.ZORK_ROCKS_ACTIVATED,
            ZorkGrandInquisitorItems.SPELL_IGRAM,
            ZorkGrandInquisitorItems.HOTSPOT_PURPLE_WORDS,
            ZorkGrandInquisitorItems.HOTSPOT_DENTED_LOCKER,
        ),
    ),
    ZorkGrandInquisitorLocations.CUT_THAT_OUT_YOU_LITTLE_CREEP: ZorkGrandInquisitorLocationData(
        game_state_trigger=((19350, 1),),
        archipelago_id=LOCATION_OFFSET + 20,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.DENIED_BY_THE_LAKE_MONSTER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((17632, 1),),
        archipelago_id=LOCATION_OFFSET + 21,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_BLINDS,
            ZorkGrandInquisitorItems.SPELL_GOLGATEM,
        ),
    ),
    ZorkGrandInquisitorLocations.DESPERATELY_SEEKING_TUTOR: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2q"),),
        archipelago_id=LOCATION_OFFSET + 22,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.DONT_EVEN_START_WITH_US_SPARKY: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "hp5e"), (8919, 2), (9, 100)),
        archipelago_id=LOCATION_OFFSET + 23,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SWORD,),
    ),
    ZorkGrandInquisitorLocations.DOOOOOOWN: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3619, 3600),),
        archipelago_id=LOCATION_OFFSET + 24,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_GRIFF,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
        ),
    ),
    ZorkGrandInquisitorLocations.DOWN: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3619, 5300),),
        archipelago_id=LOCATION_OFFSET + 25,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_LUCY,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
        ),
    ),
    ZorkGrandInquisitorLocations.DRAGON_ARCHIPELAGO_TIME_TUNNEL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9216, 1),),
        archipelago_id=LOCATION_OFFSET + 26,
        region=ZorkGrandInquisitorRegions.HADES_BEYOND_GATES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SPELL_NARWILE,),
    ),
    ZorkGrandInquisitorLocations.DUNCE_LOCKER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11851, 1),),
        archipelago_id=LOCATION_OFFSET + 27,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_BUTTONS,
        ),
    ),
    ZorkGrandInquisitorLocations.EGGPLANTS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3816, 11000),),
        archipelago_id=LOCATION_OFFSET + 28,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.ELSEWHERE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pc1e"),),
        archipelago_id=LOCATION_OFFSET + 29,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.EMERGENCY_MAGICATRONIC_MESSAGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11784, 1),),
        archipelago_id=LOCATION_OFFSET + 30,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
    ),
    ZorkGrandInquisitorLocations.ENJOY_YOUR_TRIP: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13743, 1),),
        archipelago_id=LOCATION_OFFSET + 31,
        region=ZorkGrandInquisitorRegions.SUBWAY_CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SPELL_KENDALL,),
    ),
    ZorkGrandInquisitorLocations.FAT_LOT_OF_GOOD_THATLL_DO_YA: ZorkGrandInquisitorLocationData(
        game_state_trigger=((16368, 1),),
        archipelago_id=LOCATION_OFFSET + 32,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.SPELL_IGRAM,),
    ),
    ZorkGrandInquisitorLocations.FIRE_FIRE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10277, 1),),
        archipelago_id=LOCATION_OFFSET + 33,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_GRAND_INQUISITOR_DOLL,
        ),
    ),
    ZorkGrandInquisitorLocations.FLOOD_CONTROL_DAM_3_THE_NOT_REMOTELY_BORING_TALE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "ue1h"),),
        archipelago_id=LOCATION_OFFSET + 34,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.FLYING_SNAPDRAGON: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4222, 1),),
        archipelago_id=LOCATION_OFFSET + 35,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_THROCK,
            ZorkGrandInquisitorItems.SNAPDRAGON,
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.HOTSPOT_SPRING_MUSHROOM,
        ),
    ),
    ZorkGrandInquisitorLocations.FROBUARY_3_UNDERGROUNDHOG_DAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dw2g"),),
        archipelago_id=LOCATION_OFFSET + 36,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.GETTING_SOME_CHANGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12892, 1),),
        archipelago_id=LOCATION_OFFSET + 37,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.ZORKMID_BILL_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_CHANGE_MACHINE_SLOT,
        ),
    ),
    ZorkGrandInquisitorLocations.GO_AWAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10654, 1),),
        archipelago_id=LOCATION_OFFSET + 38,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.GUE_TECH_DEANS_LIST: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2k"),),
        archipelago_id=LOCATION_OFFSET + 39,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.GUE_TECH_ENTRANCE_EXAM: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11082, 1), (11307, 1), (11536, 1)),
        archipelago_id=LOCATION_OFFSET + 40,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.GUE_TECH_HEALTH_MEMO: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2j"),),
        archipelago_id=LOCATION_OFFSET + 41,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.GUE_TECH_MAGEMEISTERS: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2n"),),
        archipelago_id=LOCATION_OFFSET + 42,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HAVE_A_HELL_OF_A_DAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((8443, 1),),
        archipelago_id=LOCATION_OFFSET + 43,
        region=ZorkGrandInquisitorRegions.HADES_SHORE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_HADES_PHONE_RECEIVER,
            ZorkGrandInquisitorItems.HOTSPOT_HADES_PHONE_BUTTONS,
        )
    ),
    ZorkGrandInquisitorLocations.HELLO_THIS_IS_SHONA_FROM_GURTH_PUBLISHING: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4698, 1),),
        archipelago_id=LOCATION_OFFSET + 44,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HELP_ME_CANT_BREATHE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10421, 1),),
        archipelago_id=LOCATION_OFFSET + 45,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_DOCK_WINCH,
            ZorkGrandInquisitorItems.PLASTIC_SIX_PACK_HOLDER,
        ),
    ),
    ZorkGrandInquisitorLocations.HEY_FREE_DIRT: ZorkGrandInquisitorLocationData(
        game_state_trigger=((11747, 1),),
        archipelago_id=LOCATION_OFFSET + 46,
        region=ZorkGrandInquisitorRegions.GUE_TECH_OUTSIDE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_DIRT_MOUND,
            ZorkGrandInquisitorItems.SHOVEL,
        ),
    ),
    ZorkGrandInquisitorLocations.HI_MY_NAME_IS_DOUG: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4698, 2),),
        archipelago_id=LOCATION_OFFSET + 47,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HMMM_INFORMATIVE_YET_DEEPLY_DISTURBING: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "mt2h"),),
        archipelago_id=LOCATION_OFFSET + 48,
        region=ZorkGrandInquisitorRegions.MONASTERY,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HOLD_ON_FOR_AN_IMPORTANT_MESSAGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4698, 5),),
        archipelago_id=LOCATION_OFFSET + 49,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HOW_TO_HYPNOTIZE_YOURSELF: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "uh1e"),),
        archipelago_id=LOCATION_OFFSET + 50,
        region=ZorkGrandInquisitorRegions.HADES_SHORE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.HOW_TO_WIN_AT_DOUBLE_FANUCCI: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "th3s"),),
        archipelago_id=LOCATION_OFFSET + 51,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.DALBOZ_LOCKER_OPENABLE,),
    ),
    ZorkGrandInquisitorLocations.IMBUE_BEBURTT: ZorkGrandInquisitorLocationData(
        game_state_trigger=((194, 1),),
        archipelago_id=LOCATION_OFFSET + 52,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_BLANK_SCROLL_BOX,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
    ),
    ZorkGrandInquisitorLocations.IM_COMPLETELY_NUDE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((19344, 1),),
        archipelago_id=LOCATION_OFFSET + 53,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.INTO_THE_FOLIAGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13060, 1),),
        archipelago_id=LOCATION_OFFSET + 54,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_DUNGEON_MASTERS_LAIR_ENTRANCE,
        ),
    ),
    ZorkGrandInquisitorLocations.INVISIBLE_FLOWERS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12967, 1),),
        archipelago_id=LOCATION_OFFSET + 55,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SPELL_IGRAM,),
    ),
    ZorkGrandInquisitorLocations.IN_CASE_OF_ADVENTURE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12931, 1),),
        archipelago_id=LOCATION_OFFSET + 56,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.HOTSPOT_GLASS_CASE,
        ),
    ),
    ZorkGrandInquisitorLocations.IN_MAGIC_WE_TRUST: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13062, 1),),
        archipelago_id=LOCATION_OFFSET + 57,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_REZROV,
            ZorkGrandInquisitorItems.HOTSPOT_IN_MAGIC_WE_TRUST_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.ITS_ONE_OF_THOSE_ADVENTURERS_AGAIN: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pe3j"),),
        archipelago_id=LOCATION_OFFSET + 58,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.I_DONT_THINK_YOU_WOULDVE_WANTED_THAT_TO_WORK_ANYWAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3816, 1008),),
        archipelago_id=LOCATION_OFFSET + 59,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_THROCK,
            ZorkGrandInquisitorItems.HOTSPOT_SNAPDRAGON,
        ),
    ),
    ZorkGrandInquisitorLocations.I_DONT_WANT_NO_TROUBLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10694, 1),),
        archipelago_id=LOCATION_OFFSET + 60,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.I_HOPE_YOU_CAN_CLIMB_UP_THERE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9637, 1),),
        archipelago_id=LOCATION_OFFSET + 61,
        region=ZorkGrandInquisitorRegions.SUBWAY_MONASTERY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorEvents.ROPE_GLORFABLE,
            ZorkGrandInquisitorItems.HOTSPOT_MONASTERY_VENT,
        ),
    ),
    ZorkGrandInquisitorLocations.I_LIKE_YOUR_STYLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((16374, 1),),
        archipelago_id=LOCATION_OFFSET + 62,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_ROPE_BRIDGE,
            ZorkGrandInquisitorEvents.DAM_DESTROYED,
            ZorkGrandInquisitorItems.SPELL_GOLGATEM,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_LAB_CHASM,
        ),
    ),
    ZorkGrandInquisitorLocations.I_SPIT_ON_YOUR_FILTHY_COINAGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tp1e"), (9, 87), (1011, 1)),
        archipelago_id=LOCATION_OFFSET + 63,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,),
    ),
    ZorkGrandInquisitorLocations.LIT_SUNFLOWERS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4129, 1),),
        archipelago_id=LOCATION_OFFSET + 64,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SPELL_THROCK,),
    ),
    ZorkGrandInquisitorLocations.MAGIC_FOREVER: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pc1e"), (10304, 1), (5221, 1)),
        archipelago_id=LOCATION_OFFSET + 65,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.LANTERN_DALBOZ_ACCESSIBLE,
            ZorkGrandInquisitorItems.ROPE,
            ZorkGrandInquisitorItems.HOTSPOT_WELL,
        ),
    ),
    ZorkGrandInquisitorLocations.MAILED_IT_TO_HELL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2498, (1, 2)),),
        archipelago_id=LOCATION_OFFSET + 66,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            (ZorkGrandInquisitorItems.TOTEM_GRIFF, ZorkGrandInquisitorItems.TOTEM_LUCY),
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_DOOR,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
        ),
    ),
    ZorkGrandInquisitorLocations.MAKE_LOVE_NOT_WAR: ZorkGrandInquisitorLocationData(
        game_state_trigger=((8623, 21),),
        archipelago_id=LOCATION_OFFSET + 67,
        region=ZorkGrandInquisitorRegions.HADES_SHORE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.CHARON_CALLED,
            ZorkGrandInquisitorItems.SWORD,
        ),
    ),
    ZorkGrandInquisitorLocations.MEAD_LIGHT: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10485, 1),),
        archipelago_id=LOCATION_OFFSET + 68,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.MEAD_LIGHT,
            ZorkGrandInquisitorItems.HOTSPOT_JACKS_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.MIKES_PANTS: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2p"),),
        archipelago_id=LOCATION_OFFSET + 69,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.MUSHROOM_HAMMERED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4217, 1),),
        archipelago_id=LOCATION_OFFSET + 70,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.HOTSPOT_SPRING_MUSHROOM,
        ),
    ),
    ZorkGrandInquisitorLocations.NATIONAL_TREASURE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((14318, 1),),
        archipelago_id=LOCATION_OFFSET + 71,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_REZROV,
            ZorkGrandInquisitorItems.HOTSPOT_FLOOD_CONTROL_DOORS,
            ZorkGrandInquisitorItems.HOTSPOT_FLOOD_CONTROL_BUTTONS,
        ),
    ),
    ZorkGrandInquisitorLocations.NATURAL_AND_SUPERNATURAL_CREATURES_OF_QUENDOR: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dv1p"),),
        archipelago_id=LOCATION_OFFSET + 72,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.NOOOOOOOOOOOOO: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12706, 1),),
        archipelago_id=LOCATION_OFFSET + 73,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_BUTTONS,
        ),
    ),
    ZorkGrandInquisitorLocations.NOTHIN_LIKE_A_GOOD_STOGIE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4237, 1),),
        archipelago_id=LOCATION_OFFSET + 74,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_HARRYS_ASHTRAY,
        ),
    ),
    ZorkGrandInquisitorLocations.NOW_YOU_LOOK_LIKE_US_WHICH_IS_AN_IMPROVEMENT: ZorkGrandInquisitorLocationData(
        game_state_trigger=((8935, 1),),
        archipelago_id=LOCATION_OFFSET + 75,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.KNOWS_SNAVIG,),
    ),
    ZorkGrandInquisitorLocations.NO_AUTOGRAPHS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10476, 1),),
        archipelago_id=LOCATION_OFFSET + 76,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_JACKS_DOOR,),
    ),
    ZorkGrandInquisitorLocations.NO_BONDAGE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pe2e"), (10262, 2), (15150, 83)),
        archipelago_id=LOCATION_OFFSET + 77,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.ROPE,
            ZorkGrandInquisitorItems.HOTSPOT_DOCK_WINCH,
        ),
    ),
    ZorkGrandInquisitorLocations.OBIDIL_DRIED_UP: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12164, 1),),
        archipelago_id=LOCATION_OFFSET + 78,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.HAS_REPAIRABLE_OBIDIL,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
    ),
    ZorkGrandInquisitorLocations.OH_DEAR_GOD_ITS_A_DRAGON: ZorkGrandInquisitorLocationData(
        game_state_trigger=((1300, 1),),
        archipelago_id=LOCATION_OFFSET + 79,
        region=ZorkGrandInquisitorRegions.DRAGON_ARCHIPELAGO_DRAGON,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.GRIFFS_AIR_PUMP,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_RAFT,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_SEA_CAPTAIN,
            ZorkGrandInquisitorItems.HOTSPOT_DRAGON_NOSTRILS,
        ),
    ),
    ZorkGrandInquisitorLocations.OH_VERY_FUNNY_GUYS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2448, 1),),
        archipelago_id=LOCATION_OFFSET + 80,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_PAST,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_BROG,
            ZorkGrandInquisitorItems.HOTSPOT_PORT_FOOZLE_PAST_TAVERN_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.OH_WOW_TALK_ABOUT_DEJA_VU: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4869, 1),),
        archipelago_id=LOCATION_OFFSET + 81,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.FLATHEADIA_FUDGE,
            ZorkGrandInquisitorItems.HUNGUS_LARD,
            ZorkGrandInquisitorItems.JAR_OF_HOTBUGS,
            ZorkGrandInquisitorItems.QUELBEE_HONEYCOMB,
            ZorkGrandInquisitorItems.MOSS_OF_MAREILON,
            ZorkGrandInquisitorItems.MUG,
        ),
    ),
    ZorkGrandInquisitorLocations.OLD_SCRATCH_WINNER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4512, 32),),
        archipelago_id=LOCATION_OFFSET + 82,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,  # This can be done anywhere if the item requirement is met
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.OLD_SCRATCH_CARD,),
    ),
    ZorkGrandInquisitorLocations.ONLY_YOU_CAN_PREVENT_FOOZLE_FIRES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pe5n"),),
        archipelago_id=LOCATION_OFFSET + 83,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.OPEN_THE_GATES_OF_HELL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((8730, 1),),
        archipelago_id=LOCATION_OFFSET + 84,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.KNOWS_SNAVIG,),
    ),
    ZorkGrandInquisitorLocations.OUTSMART_THE_QUELBEES: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4241, 1),),
        archipelago_id=LOCATION_OFFSET + 85,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HUNGUS_LARD,
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_QUELBEE_HIVE,
        ),
    ),
    ZorkGrandInquisitorLocations.PERMASEAL: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "mt1g"),),
        archipelago_id=LOCATION_OFFSET + 86,
        region=ZorkGrandInquisitorRegions.MONASTERY,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.PLANETFALL: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "pp1j"),),
        archipelago_id=LOCATION_OFFSET + 87,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_JACKS_SHOP,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.PLEASE_DONT_THROCK_THE_GRASS: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "te1g"),),
        archipelago_id=LOCATION_OFFSET + 88,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.PORT_FOOZLE_TIME_TUNNEL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9404, 1),),
        archipelago_id=LOCATION_OFFSET + 89,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_CLOSING_THE_TIME_TUNNELS_LEVER,
            ZorkGrandInquisitorItems.HOTSPOT_CLOSING_THE_TIME_TUNNELS_HAMMER_SLOT,
            ZorkGrandInquisitorItems.LARGE_TELEGRAPH_HAMMER,
            ZorkGrandInquisitorItems.SPELL_NARWILE,
        ),
    ),
    ZorkGrandInquisitorLocations.PROZORKED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4115, 1),),
        archipelago_id=LOCATION_OFFSET + 90,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.PROZORK_TABLET,
            ZorkGrandInquisitorItems.HOTSPOT_SNAPDRAGON,
        ),
    ),
    ZorkGrandInquisitorLocations.REASSEMBLE_SNAVIG: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4512, 98),),
        archipelago_id=LOCATION_OFFSET + 91,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SCROLL_FRAGMENT_ANS,
            ZorkGrandInquisitorItems.SCROLL_FRAGMENT_GIV,
            ZorkGrandInquisitorItems.HOTSPOT_MIRROR,
        ),
    ),
    ZorkGrandInquisitorLocations.RESTOCKED_ON_GRUESDAY: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tr2h"),),
        archipelago_id=LOCATION_OFFSET + 92,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.RIGHT_HELLO_YES_UH_THIS_IS_SNEFFLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4698, 3),),
        archipelago_id=LOCATION_OFFSET + 93,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.RIGHT_UH_SORRY_ITS_ME_AGAIN_SNEFFLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4698, 4),),
        archipelago_id=LOCATION_OFFSET + 94,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.SNAVIG_REPAIRED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((201, 1),),
        archipelago_id=LOCATION_OFFSET + 95,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.HAS_REPAIRABLE_SNAVIG,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
    ),
    ZorkGrandInquisitorLocations.SOUVENIR: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13408, 1),),
        archipelago_id=LOCATION_OFFSET + 96,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_SOUVENIR_COIN_SLOT,
        ),
    ),
    ZorkGrandInquisitorLocations.STRAIGHT_TO_HELL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9719, 1),),
        archipelago_id=LOCATION_OFFSET + 97,
        region=ZorkGrandInquisitorRegions.MONASTERY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_TOTEMIZER_WHEELS,
            ZorkGrandInquisitorItems.TOTEMIZER_DESTINATION_STRAIGHT_TO_HELL,
            ZorkGrandInquisitorItems.HOTSPOT_TOTEMIZER_SWITCH,
        ),
    ),
    ZorkGrandInquisitorLocations.STRIP_GRUE_FIRE_WATER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((14511, 1), (14524, 5)),
        archipelago_id=LOCATION_OFFSET + 98,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_PAST_TAVERN,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_1,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_2,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_3,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_4,
            ZorkGrandInquisitorItems.HOTSPOT_TAVERN_FLY,
            ZorkGrandInquisitorItems.HOTSPOT_ALPINES_QUANDRY_CARD_SLOTS,
        ),
    ),
    ZorkGrandInquisitorLocations.SUCKING_ROCKS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12859, 1),),
        archipelago_id=LOCATION_OFFSET + 99,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.ZORK_ROCKS_SUCKABLE,
            ZorkGrandInquisitorItems.PERMA_SUCK_MACHINE,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_VACUUM_SLOT,
        ),
    ),
    ZorkGrandInquisitorLocations.TALK_TO_ME_GRAND_INQUISITOR: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10299, 1),),
        archipelago_id=LOCATION_OFFSET + 100,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_GRAND_INQUISITOR_DOLL,),
    ),
    ZorkGrandInquisitorLocations.TAMING_YOUR_SNAPDRAGON: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dv1h"),),
        archipelago_id=LOCATION_OFFSET + 101,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.THAR_SHE_BLOWS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((1311, 1), (1312, 1)),
        archipelago_id=LOCATION_OFFSET + 102,
        region=ZorkGrandInquisitorRegions.DRAGON_ARCHIPELAGO_DRAGON,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.GRIFFS_AIR_PUMP,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_RAFT,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_SEA_CAPTAIN,
            ZorkGrandInquisitorItems.HOTSPOT_DRAGON_NOSTRILS,
            ZorkGrandInquisitorItems.GRIFFS_DRAGON_TOOTH,
        ),
    ),
    ZorkGrandInquisitorLocations.THATS_A_ROPE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10486, 1),),
        archipelago_id=LOCATION_OFFSET + 103,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.ROPE,
            ZorkGrandInquisitorItems.HOTSPOT_JACKS_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.THATS_IT_JUST_KEEP_HITTING_THOSE_BUTTONS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13805, 1),),
        archipelago_id=LOCATION_OFFSET + 104,
        region=ZorkGrandInquisitorRegions.SUBWAY_CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
    ),
    ZorkGrandInquisitorLocations.THATS_STILL_A_ROPE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "tp1e"), (9, 83), (1011, 1)),
        archipelago_id=LOCATION_OFFSET + 105,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorEvents.ROPE_GLORFABLE,),
    ),
    ZorkGrandInquisitorLocations.THATS_THE_SPIRIT: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10341, 95),),
        archipelago_id=LOCATION_OFFSET + 106,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_LOUDSPEAKER_VOLUME_BUTTONS,),
    ),
    ZorkGrandInquisitorLocations.THE_ALCHEMICAL_DEBACLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9459, 1),),
        archipelago_id=LOCATION_OFFSET + 107,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.THE_ENDLESS_FIRE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9473, 1),),
        archipelago_id=LOCATION_OFFSET + 108,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.THE_FLATHEADIAN_FUDGE_FIASCO: ZorkGrandInquisitorLocationData(
        game_state_trigger=((9520, 1),),
        archipelago_id=LOCATION_OFFSET + 109,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.THE_PERILS_OF_MAGIC: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "me1j"),),
        archipelago_id=LOCATION_OFFSET + 110,
        region=ZorkGrandInquisitorRegions.MONASTERY_EXHIBIT,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.THE_UNDERGROUND_UNDERGROUND: ZorkGrandInquisitorLocationData(
        game_state_trigger=((13167, 1),),
        archipelago_id=LOCATION_OFFSET + 111,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SUBWAY_TOKEN,
            ZorkGrandInquisitorItems.HOTSPOT_SUBWAY_TOKEN_SLOT,
        ),
    ),
    ZorkGrandInquisitorLocations.THIS_DOESNT_LOOK_ANYTHING_LIKE_THE_BROCHURE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "cd60"), (1524, 1)),
        archipelago_id=LOCATION_OFFSET + 112,
        region=ZorkGrandInquisitorRegions.DRAGON_ARCHIPELAGO,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.TOTEM_LUCY,),
    ),
    ZorkGrandInquisitorLocations.THROCKED_MUSHROOM_HAMMERED: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4219, 1),),
        archipelago_id=LOCATION_OFFSET + 113,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HAMMER,
            ZorkGrandInquisitorItems.SPELL_THROCK,
            ZorkGrandInquisitorItems.HOTSPOT_SPRING_MUSHROOM,
        ),
    ),
    ZorkGrandInquisitorLocations.TIME_TRAVEL_FOR_DUMMIES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "th3z"),),
        archipelago_id=LOCATION_OFFSET + 114,
        region=ZorkGrandInquisitorRegions.GUE_TECH_HALLWAY,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE,),
    ),
    ZorkGrandInquisitorLocations.TOTEMIZED_DAILY_BILLBOARD: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "px1h"),),
        archipelago_id=LOCATION_OFFSET + 115,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.UH_OH_BROG_CANT_SWIM: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "cd60"), (1520, 1)),
        archipelago_id=LOCATION_OFFSET + 116,
        region=ZorkGrandInquisitorRegions.DRAGON_ARCHIPELAGO,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.TOTEM_BROG,),
    ),
    ZorkGrandInquisitorLocations.UMBRELLA_FLOWERS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((12926, 1),),
        archipelago_id=LOCATION_OFFSET + 117,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorEvents.KNOWS_BEBURTT,),
    ),
    ZorkGrandInquisitorLocations.UP: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3619, 5200),),
        archipelago_id=LOCATION_OFFSET + 118,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_LUCY,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
        ),
    ),
    ZorkGrandInquisitorLocations.USELESS_BUT_FUN: ZorkGrandInquisitorLocationData(
        game_state_trigger=((14321, 1),),
        archipelago_id=LOCATION_OFFSET + 119,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(ZorkGrandInquisitorItems.SPELL_GOLGATEM,),
    ),
    ZorkGrandInquisitorLocations.UUUUUP: ZorkGrandInquisitorLocationData(
        game_state_trigger=((3619, 3500),),
        archipelago_id=LOCATION_OFFSET + 120,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_GRIFF,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
        ),
    ),
    ZorkGrandInquisitorLocations.VOYAGE_OF_CAPTAIN_ZAHAB: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "uh1h"),),
        archipelago_id=LOCATION_OFFSET + 121,
        region=ZorkGrandInquisitorRegions.HADES_SHORE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.WANT_SOME_RYE_COURSE_YA_DO: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4034, 1),),
        archipelago_id=LOCATION_OFFSET + 122,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorEvents.DOOR_SMOKED_CIGAR,
            ZorkGrandInquisitorItems.MEAD_LIGHT,
            ZorkGrandInquisitorItems.ZIMDOR_SCROLL,
            ZorkGrandInquisitorItems.HOTSPOT_HARRYS_BIRD_BATH,
        ),
    ),
    ZorkGrandInquisitorLocations.WE_DONT_SERVE_YOUR_KIND_HERE: ZorkGrandInquisitorLocationData(
        game_state_trigger=((2461, 1),),
        archipelago_id=LOCATION_OFFSET + 123,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_PAST,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.TOTEM_GRIFF,
            ZorkGrandInquisitorItems.HOTSPOT_PORT_FOOZLE_PAST_TAVERN_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.WE_GOT_A_HIGH_ROLLER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((15472, 1),),
        archipelago_id=LOCATION_OFFSET + 124,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_PAST_TAVERN,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_1,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_2,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_3,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_4,
            ZorkGrandInquisitorItems.HOTSPOT_TAVERN_FLY,
            ZorkGrandInquisitorItems.HOTSPOT_ALPINES_QUANDRY_CARD_SLOTS,
        ),
    ),
    ZorkGrandInquisitorLocations.WHAT_ARE_YOU_STUPID: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10484, 1),),
        archipelago_id=LOCATION_OFFSET + 125,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.PLASTIC_SIX_PACK_HOLDER,
            ZorkGrandInquisitorItems.HOTSPOT_JACKS_DOOR,
        ),
    ),
    ZorkGrandInquisitorLocations.WHITE_HOUSE_TIME_TUNNEL: ZorkGrandInquisitorLocationData(
        game_state_trigger=((4983, 1),),
        archipelago_id=LOCATION_OFFSET + 126,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_CLOSET_DOOR,
            ZorkGrandInquisitorItems.SPELL_NARWILE,
        ),
    ),
    ZorkGrandInquisitorLocations.WOW_IVE_NEVER_GONE_INSIDE_HIM_BEFORE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dc10"), (1596, 1)),
        archipelago_id=LOCATION_OFFSET + 127,
        region=ZorkGrandInquisitorRegions.WALKING_CASTLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.YAD_GOHDNUORGREDNU_3_YRAUBORF: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dm2g"),),
        archipelago_id=LOCATION_OFFSET + 128,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_MIRROR,),
    ),
    ZorkGrandInquisitorLocations.YOUR_PUNY_WEAPONS_DONT_PHASE_ME_BABY: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "dg4e"), (4266, 1), (9, 21), (4035, 1)),
        archipelago_id=LOCATION_OFFSET + 129,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_HARRY,
        ),
    ),
    ZorkGrandInquisitorLocations.YOU_DONT_GO_MESSING_WITH_A_MANS_ZIPPER: ZorkGrandInquisitorLocationData(
        game_state_trigger=((16405, 1),),
        archipelago_id=LOCATION_OFFSET + 130,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.SPELL_REZROV,),
    ),
    ZorkGrandInquisitorLocations.YOU_GAINED_86_EXPERIENCE_POINTS: ZorkGrandInquisitorLocationData(
        game_state_trigger=((16342, 1),),
        archipelago_id=LOCATION_OFFSET + 131,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.CORE,),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_ROPE_BRIDGE,
        ),
    ),
    ZorkGrandInquisitorLocations.YOU_ONE_OF_THEM_AGITATORS_AINT_YA: ZorkGrandInquisitorLocationData(
        game_state_trigger=((10586, 1),),
        archipelago_id=LOCATION_OFFSET + 132,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE,),
    ),
    ZorkGrandInquisitorLocations.YOU_WANT_A_PIECE_OF_ME_DOCK_BOY: ZorkGrandInquisitorLocationData(
        game_state_trigger=((15151, 1),),
        archipelago_id=LOCATION_OFFSET + 133,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.CORE, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_DOCK_WINCH,),
    ),
    # Deathsanity
    ZorkGrandInquisitorLocations.DEATH_ARRESTED_WITH_JACK: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 1)),
        archipelago_id=LOCATION_OFFSET + 200 + 0,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_GRAND_INQUISITOR_DOLL,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_ATTACKED_THE_QUELBEES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 20)),
        archipelago_id=LOCATION_OFFSET + 200 + 1,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.SWORD,
            ZorkGrandInquisitorItems.HOTSPOT_QUELBEE_HIVE,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_CLIMBED_OUT_OF_THE_WELL: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 21)),
        archipelago_id=LOCATION_OFFSET + 200 + 2,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY,),
    ),
    ZorkGrandInquisitorLocations.DEATH_EATEN_BY_A_GRUE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 18)),
        archipelago_id=LOCATION_OFFSET + 200 + 3,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.ROPE,
            ZorkGrandInquisitorItems.HOTSPOT_WELL,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_JUMPED_IN_BOTTOMLESS_PIT: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 3)),
        archipelago_id=LOCATION_OFFSET + 200 + 4,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY,),
    ),
    ZorkGrandInquisitorLocations.DEATH_LOST_GAME_OF_STRIP_GRUE_FIRE_WATER: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 37)),
        archipelago_id=LOCATION_OFFSET + 200 + 5,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE_PAST_TAVERN,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_1,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_2,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_3,
            ZorkGrandInquisitorItems.LUCYS_PLAYING_CARD_4,
            ZorkGrandInquisitorItems.HOTSPOT_TAVERN_FLY,
            ZorkGrandInquisitorItems.HOTSPOT_ALPINES_QUANDRY_CARD_SLOTS,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_LOST_SOUL_TO_OLD_SCRATCH: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 23)),
        archipelago_id=LOCATION_OFFSET + 200 + 6,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorItems.OLD_SCRATCH_CARD,),
    ),
    ZorkGrandInquisitorLocations.DEATH_OUTSMARTED_BY_THE_QUELBEES: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 29)),
        archipelago_id=LOCATION_OFFSET + 200 + 7,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.HUNGUS_LARD,
            ZorkGrandInquisitorItems.HOTSPOT_QUELBEE_HIVE,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_SLICED_UP_BY_THE_INVISIBLE_GUARD: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 30)),
        archipelago_id=LOCATION_OFFSET + 200 + 8,
        region=ZorkGrandInquisitorRegions.SPELL_LAB_BRIDGE,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
    ),
    ZorkGrandInquisitorLocations.DEATH_STEPPED_INTO_THE_INFINITE: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 4)),
        archipelago_id=LOCATION_OFFSET + 200 + 9,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_IGRAM,
            ZorkGrandInquisitorItems.HOTSPOT_PURPLE_WORDS,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_SWALLOWED_BY_A_DRAGON: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 11)),
        archipelago_id=LOCATION_OFFSET + 200 + 10,
        region=ZorkGrandInquisitorRegions.DRAGON_ARCHIPELAGO_DRAGON,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(
            ZorkGrandInquisitorItems.GRIFFS_AIR_PUMP,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_RAFT,
            ZorkGrandInquisitorItems.GRIFFS_INFLATABLE_SEA_CAPTAIN,
            ZorkGrandInquisitorItems.HOTSPOT_DRAGON_NOSTRILS,
            ZorkGrandInquisitorItems.GRIFFS_DRAGON_TOOTH,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_THROCKED_THE_GRASS: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 34)),
        archipelago_id=LOCATION_OFFSET + 200 + 11,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY,),
        requirements=(
            ZorkGrandInquisitorItems.SPELL_THROCK,
            ZorkGrandInquisitorItems.HOTSPOT_GUE_TECH_GRASS,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_TOTEMIZED: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, (9, 32, 33))),
        archipelago_id=LOCATION_OFFSET + 200 + 12,
        region=ZorkGrandInquisitorRegions.MONASTERY,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY,),
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_TOTEMIZER_WHEELS,
            ZorkGrandInquisitorItems.HOTSPOT_TOTEMIZER_SWITCH,
        ),
    ),
    ZorkGrandInquisitorLocations.DEATH_TOTEMIZED_PERMANENTLY: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, (5, 6, 7, 8, 13))),
        archipelago_id=LOCATION_OFFSET + 200 + 13,
        region=ZorkGrandInquisitorRegions.MONASTERY,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY,),
        requirements=(ZorkGrandInquisitorItems.HOTSPOT_TOTEMIZER_SWITCH,),
    ),
    ZorkGrandInquisitorLocations.DEATH_YOURE_NOT_CHARON: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 10)),
        archipelago_id=LOCATION_OFFSET + 200 + 14,
        region=ZorkGrandInquisitorRegions.HADES,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorEvents.KNOWS_SNAVIG,),
    ),
    ZorkGrandInquisitorLocations.DEATH_ZORK_ROCKS_EXPLODED: ZorkGrandInquisitorLocationData(
        game_state_trigger=(("location", "gjde"), (2201, 19)),
        archipelago_id=LOCATION_OFFSET + 200 + 15,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        tags=(ZorkGrandInquisitorTags.DEATHSANITY, ZorkGrandInquisitorTags.MISSABLE),
        requirements=(ZorkGrandInquisitorEvents.ZORK_ROCKS_ACTIVATED,),
    ),
    # Events
    ZorkGrandInquisitorEvents.CHARON_CALLED: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.HADES_SHORE,
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_HADES_PHONE_RECEIVER,
            ZorkGrandInquisitorItems.HOTSPOT_HADES_PHONE_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.CHARON_CALLED.value,
    ),
    ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        requirements=(
            ZorkGrandInquisitorItems.LANTERN,
            ZorkGrandInquisitorItems.HOTSPOT_JACKS_DOOR,
        ),
        event_item_name=ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE.value,
    ),
    ZorkGrandInquisitorEvents.DALBOZ_LOCKER_OPENABLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.DALBOZ_LOCKER_OPENABLE.value,
    ),
    ZorkGrandInquisitorEvents.DAM_DESTROYED: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.SUBWAY_FLOOD_CONTROL_DAM,
        requirements=(
            ZorkGrandInquisitorItems.SPELL_REZROV,
            ZorkGrandInquisitorItems.HOTSPOT_FLOOD_CONTROL_DOORS,
            ZorkGrandInquisitorItems.HOTSPOT_FLOOD_CONTROL_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.DAM_DESTROYED.value,
    ),
    ZorkGrandInquisitorEvents.DOOR_DRANK_MEAD: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        requirements=(
            ZorkGrandInquisitorEvents.DOOR_SMOKED_CIGAR,
            ZorkGrandInquisitorItems.MEAD_LIGHT,
            ZorkGrandInquisitorItems.ZIMDOR_SCROLL,
            ZorkGrandInquisitorItems.HOTSPOT_HARRYS_BIRD_BATH,
        ),
        event_item_name=ZorkGrandInquisitorEvents.DOOR_DRANK_MEAD.value,
    ),
    ZorkGrandInquisitorEvents.DOOR_SMOKED_CIGAR: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.DM_LAIR,
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_HARRYS_ASHTRAY,
        ),
        event_item_name=ZorkGrandInquisitorEvents.DOOR_SMOKED_CIGAR.value,
    ),
    ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.DUNCE_LOCKER_OPENABLE.value,
    ),
    ZorkGrandInquisitorEvents.HAS_REPAIRABLE_OBIDIL: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_FROZEN_TREAT_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_FROZEN_TREAT_MACHINE_DOORS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.HAS_REPAIRABLE_OBIDIL.value,
    ),
    ZorkGrandInquisitorEvents.HAS_REPAIRABLE_SNAVIG: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        requirements=(
            ZorkGrandInquisitorItems.SCROLL_FRAGMENT_ANS,
            ZorkGrandInquisitorItems.SCROLL_FRAGMENT_GIV,
            ZorkGrandInquisitorItems.HOTSPOT_MIRROR,
        ),
        event_item_name=ZorkGrandInquisitorEvents.HAS_REPAIRABLE_SNAVIG.value,
    ),
    ZorkGrandInquisitorEvents.KNOWS_BEBURTT: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        requirements=(
            ZorkGrandInquisitorItems.HOTSPOT_BLANK_SCROLL_BOX,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
        event_item_name=ZorkGrandInquisitorEvents.KNOWS_BEBURTT.value,
    ),
    ZorkGrandInquisitorEvents.KNOWS_OBIDIL: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        requirements=(
            ZorkGrandInquisitorEvents.HAS_REPAIRABLE_OBIDIL,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
        event_item_name=ZorkGrandInquisitorEvents.KNOWS_OBIDIL.value,
    ),
    ZorkGrandInquisitorEvents.KNOWS_SNAVIG: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.SPELL_LAB,
        requirements=(
            ZorkGrandInquisitorEvents.HAS_REPAIRABLE_SNAVIG,
            ZorkGrandInquisitorItems.HOTSPOT_SPELL_CHECKER,
        ),
        event_item_name=ZorkGrandInquisitorEvents.KNOWS_SNAVIG.value,
    ),
    ZorkGrandInquisitorEvents.KNOWS_YASTARD: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.DM_LAIR_INTERIOR,
        requirements=(
            ZorkGrandInquisitorItems.FLATHEADIA_FUDGE,
            ZorkGrandInquisitorItems.HUNGUS_LARD,
            ZorkGrandInquisitorItems.JAR_OF_HOTBUGS,
            ZorkGrandInquisitorItems.QUELBEE_HONEYCOMB,
            ZorkGrandInquisitorItems.MOSS_OF_MAREILON,
            ZorkGrandInquisitorItems.MUG,
        ),
        event_item_name=ZorkGrandInquisitorEvents.KNOWS_YASTARD.value,
    ),
    ZorkGrandInquisitorEvents.LANTERN_DALBOZ_ACCESSIBLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        requirements=(
            ZorkGrandInquisitorEvents.CIGAR_ACCESSIBLE,
            ZorkGrandInquisitorItems.HOTSPOT_GRAND_INQUISITOR_DOLL,
        ),
        event_item_name=ZorkGrandInquisitorEvents.LANTERN_DALBOZ_ACCESSIBLE.value,
    ),
    ZorkGrandInquisitorEvents.ROPE_GLORFABLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.CROSSROADS,
        requirements=(ZorkGrandInquisitorItems.SPELL_GLORF,),
        event_item_name=ZorkGrandInquisitorEvents.ROPE_GLORFABLE.value,
    ),
    ZorkGrandInquisitorEvents.VICTORY: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.ENDGAME,
        event_item_name=ZorkGrandInquisitorEvents.VICTORY.value,
    ),
    ZorkGrandInquisitorEvents.WHITE_HOUSE_LETTER_MAILABLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.WHITE_HOUSE,
        requirements=(
            (ZorkGrandInquisitorItems.TOTEM_GRIFF, ZorkGrandInquisitorItems.TOTEM_LUCY),
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_FLAG,
            ZorkGrandInquisitorItems.HOTSPOT_MAILBOX_DOOR,
        ),
        event_item_name=ZorkGrandInquisitorEvents.WHITE_HOUSE_LETTER_MAILABLE.value,
    ),
    ZorkGrandInquisitorEvents.ZORKMID_BILL_ACCESSIBLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.PORT_FOOZLE,
        requirements=(ZorkGrandInquisitorItems.OLD_SCRATCH_CARD,),
        event_item_name=ZorkGrandInquisitorEvents.ZORKMID_BILL_ACCESSIBLE.value,
    ),
    ZorkGrandInquisitorEvents.ZORK_ROCKS_ACTIVATED: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_SODA_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.ZORK_ROCKS,
            ZorkGrandInquisitorItems.HOTSPOT_SODA_MACHINE_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.ZORK_ROCKS_ACTIVATED.value,
    ),
    ZorkGrandInquisitorEvents.ZORK_ROCKS_SUCKABLE: ZorkGrandInquisitorLocationData(
        game_state_trigger=None,
        archipelago_id=None,
        region=ZorkGrandInquisitorRegions.GUE_TECH,
        requirements=(
            ZorkGrandInquisitorItems.POUCH_OF_ZORKMIDS,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_COIN_SLOT,
            ZorkGrandInquisitorItems.HOTSPOT_CANDY_MACHINE_BUTTONS,
        ),
        event_item_name=ZorkGrandInquisitorEvents.ZORK_ROCKS_SUCKABLE.value,
    ),
}
