Getting Started
The Dungeon Extension turns Typewriter entries into instanced dungeon runs: each group gets its own world copy, rooms react to players entering polygons, and loot chests hand out rewards. Its two menus (dungeon browser and party lobby) are regular GUI Extension layouts that you design yourself. New to the menu system? Read the GUI Introduction first — the dungeon menus reuselayoutPool / mainLayoutId exactly as described there. The GUI Extension is a hard dependency: without it, no dungeon menu will open.
How the pieces fit
| Entry | Role |
|---|---|
dungeon_category | Groups dungeons for the browser menu |
dungeon_instance | One dungeon: template world, rules, costs, party size |
dungeon_room_config | The room set + spawn point used by an instance |
dungeon_room | A polygon area with onEnter/onLeave triggers, priority and criteria |
dungeon_loot_chest | Randomized reward container (NPC anchor or manual trigger) |
dungeon_enter / dungeon_leave / dungeon_close | Run lifecycle actions |
Step 1 — Define a dungeon
- Create a
dungeon_instance: pick the template world, party size limits, entry costs and rules. - Create a
dungeon_room_configpointing at your room set and spawn point, and link it from the instance. - Draw your
dungeon_roompolygons with the in-game room editor (particle edges, node handles, toolbar) and attachonEnter/onLeavetriggers — this is where fights, cinematics and door logic hook in. - Optionally place
dungeon_loot_chestentries, either anchored to NPCs or fired manually vialoot_chest_trigger. - Group instances under a
dungeon_category.
Step 2 — Design the menus (GUI layouts)
Both menu actions carry a full GUIlayoutPool, so their look is entirely yours:
dungeon_global_menu— the browser: categories and dungeons, difficulty icons, locked/unlocked states.dungeon_party_menu— the lobby: member list, ready/not-ready toggles, start button.
buttonType (the dungeon resolver fills them — the GUI docs call this the buttonType / buttonPrefix mechanism). Everything else — borders, scrollable lists, composite stacking, sounds, cooldowns — is standard GUI behavior.
A minimal browser skeleton:
Step 3 — Wire the flow
- Open the browser from an NPC or command: trigger
dungeon_global_menu. - Selecting a dungeon opens
dungeon_party_menu(built-in lobby works standalone; Parties/MMOCore adapters are optional). - When everyone is ready, the lobby fires
dungeon_enter: the instance world is created and the party is teleported to the room config’s spawn. dungeon_leavehandles individual exits;dungeon_closeshuts the instance down and cleans up the world.
Facts & progress
dungeon_facts exposes run state (completions, current room…) to the Typewriter fact system — usable in criteria anywhere: menu visibility, room triggers, quest conditions.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Menu doesn’t open | GUI Extension missing or its layout pool has no valid mainLayoutId |
| Buttons show but do nothing | Dynamic slots not tagged with the expected buttonType |
| Room triggers never fire | Polygon not closed / wrong world — re-check in the room editor |
| Players spawn at world origin | dungeon_room_config spawn point unset for that instance |