{
  "contents": [
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-garden-gate",
          "kind": "entrance",
          "name": "The garden gate",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-tower-door",
          "kind": "exit",
          "name": "The tower door",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": "A door of black wood with a knocker shaped like a comet. It opens before you knock.",
          "reveal": "always",
          "shape": [
            "D2"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Wakes if anyone steps on the star circle without bowing.",
          "drawFrom": null,
          "id": "c-ivy-strangled-guardian-1",
          "kind": "creature",
          "name": "Ivy-strangled guardian 1",
          "provenance": "ai-generated",
          "publicName": "a statue in the ivy",
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "stone-guardian"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Wakes if anyone steps on the star circle without bowing.",
          "drawFrom": null,
          "id": "c-ivy-strangled-guardian-2",
          "kind": "creature",
          "name": "Ivy-strangled guardian 2",
          "provenance": "ai-generated",
          "publicName": "a statue in the ivy",
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "stone-guardian"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-1",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "say",
                "text": "The carved star brightens under your feet. Both statues turn their heads."
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Stepping on it without bowing wakes the guardians.",
          "drawFrom": null,
          "id": "c-the-star-circle",
          "kind": "hazard",
          "name": "The star circle",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C4:D6"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-overgrowth",
          "kind": "terrain",
          "name": "Overgrowth",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A3:A9",
            "F3:F9"
          ],
          "stat": null,
          "tags": [
            "difficult"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Pruning shears, a lantern, a potion of healing, and Vael's gardening journal (a clue: 'the Serpent keeps the gold').",
          "drawFrom": "arcana",
          "id": "c-gardener-s-shed",
          "kind": "loot",
          "name": "Gardener's shed",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F9"
          ],
          "stat": null,
          "tags": [
            "item:Pruning shears [tool]",
            "item:Lantern",
            "item:Potion of healing",
            "item:Vael's gardening journal [quest]"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "A trader (Issue 411): stand beside them and open your Bag to buy and sell.",
          "drawFrom": null,
          "id": "c-pilgrim-osk",
          "kind": "creature",
          "name": "Pilgrim Osk",
          "provenance": "ai-generated",
          "publicName": "a pilgrim selling charms",
          "publicRef": "p10",
          "readAloud": "A pilgrim with a tray of charms and candles sits on the shrine steps. 'For the tower? Take a light. Take two.'",
          "reveal": "always",
          "shape": [
            "E2"
          ],
          "stat": {
            "packId": "dndmax.dogfood",
            "selector": "guard"
          },
          "tags": [
            "friendly",
            "trader",
            "currency:gold",
            "buys:50",
            "sells:Potion of healing@50x4",
            "sells:Potion of greater healing@150x1",
            "sells:Antidote@50x2",
            "sells:Torch@1",
            "sells:Lantern@5",
            "sells:Rope@1",
            "sells:Thieves' tools@25x1",
            "sells:Alchemist's fire@50x3",
            "sells:Shield@10x2",
            "sells:Chain shirt@50x1",
            "sells:Longsword@15x2",
            "sells:Dagger@2",
            "sells:Scroll of magic missile@75x2",
            "sells:Scroll of cure wounds@75x2"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-the-tower-garden",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-overgrown-court",
          "name": "The overgrown court",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "A walled garden gone wild around a stone circle carved with a star. Lanterns hang in the ivy, every one of them lit, though nobody has been here in a century.",
          "reveal": "on-entry",
          "shape": [
            "A3:F9"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-arch",
          "name": "The arch",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "A great stone arch, and through it, the tower door.",
          "reveal": "on-entry",
          "shape": [
            "B2:E3"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "ADVENTURE OVERVIEW. Corvin, Vael's apprentice, is halfway to lichdom and needs the Orrery finished to complete it — moving a particular star into alignment. He has the last gear. The tower floors: garden → library → alchemy → conjuring → orrery → (star-gate) zodiac / hoard; ritual chamber is Corvin's lair, reached from the zodiac floor. Star-gates: the orrery can be set to three constellations (the Crown → zodiac floor, the Serpent → hoard chamber, the Lantern → back to the garden). Clues to the settings are in the library and in the zodiac floor's inscriptions. Stop Corvin (in the ritual chamber), or break the Orrery's heart-gear. Vael's ghost-portrait offers the hoard as reward."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-inside-the-tower-door",
          "kind": "entrance",
          "name": "Inside the tower door",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-out-to-the-garden",
          "kind": "exit",
          "name": "Out to the garden",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-up-the-stair",
          "kind": "exit",
          "name": "Up the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A2"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Rolls on Tower oddities when the table opens.",
          "drawFrom": "tower-oddities",
          "id": "c-something-loose-in-the-stacks",
          "kind": "creature",
          "name": "Something loose in the stacks",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D8"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-flying-tome-1",
          "kind": "creature",
          "name": "Flying tome 1",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B4"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-flying-tome-2",
          "kind": "creature",
          "name": "Flying tome 2",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-flying-tome-3",
          "kind": "creature",
          "name": "Flying tome 3",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F6"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-flying-tome-4",
          "kind": "creature",
          "name": "Flying tome 4",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B8"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Demands silence. Attacks anyone who speaks above a whisper.",
          "drawFrom": null,
          "id": "c-the-librarian",
          "kind": "creature",
          "name": "The librarian",
          "provenance": "ai-generated",
          "publicName": "a suit of armour holding a book",
          "publicRef": "p12",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E8"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "animated-armour"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-2",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "tell-dm",
                "text": "The circle reacts to names spoken aloud inside it — teleport to the garden."
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Anyone who stands in the circle and speaks a name is teleported to the garden.",
          "drawFrom": null,
          "id": "c-the-great-circle",
          "kind": "hazard",
          "name": "The great circle",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p13",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C4:E7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "The clue to the Orrery: Crown → the zodiac; Serpent → the hoard; Lantern → home. Worth 200 gp to a sage.",
          "drawFrom": null,
          "id": "c-vael-s-star-atlas",
          "kind": "loot",
          "name": "Vael's star atlas",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p14",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F8"
          ],
          "stat": null,
          "tags": [
            "item:Vael's star atlas [quest, worth: 200 gp]",
            "container"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Spellbook pages (two 3rd-level spells) and a scroll of counterspell.",
          "drawFrom": "arcana",
          "id": "c-restricted-shelf",
          "kind": "loot",
          "name": "Restricted shelf",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p15",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B2"
          ],
          "stat": null,
          "tags": [
            "item:Spellbook pages [treasure, worth: 100 gp]",
            "item:Scroll of counterspell"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-circle-s-glow",
          "kind": "light",
          "name": "The circle's glow",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p16",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": null,
          "tags": []
        }
      ],
      "edges": [],
      "mapId": "m-the-arcane-library",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-reading-floor",
          "name": "The reading floor",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "Shelves curve around a glowing circle in the floor. Books lie open everywhere, pages turning by themselves. One shelf is flapping its covers like wings.",
          "reveal": "on-entry",
          "shape": [
            "B3:E9"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-great-circle",
          "name": "The great circle",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "A violet circle of runes. Around its rim, three constellations: a crown, a serpent, a lantern.",
          "reveal": "on-entry",
          "shape": [
            "C4:E7"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-upper-stair",
          "name": "The upper stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": "A stair winding up the tower wall.",
          "reveal": "on-entry",
          "shape": [
            "A1:B2"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "The books are restless. Some fly. The summoning circle in the middle is a trap for the careless — and a clue: its rim is engraved with the three constellations of the Orrery."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-top-of-the-stair",
          "kind": "entrance",
          "name": "Top of the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-down-the-stair",
          "kind": "exit",
          "name": "Down the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-up-the-stair",
          "kind": "exit",
          "name": "Up the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Slides out of the vat when anyone touches the bench.",
          "drawFrom": null,
          "id": "c-the-vat-jelly",
          "kind": "creature",
          "name": "The vat jelly",
          "provenance": "ai-generated",
          "publicName": "the copper vat",
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "creeping-jelly"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-homunculus-1",
          "kind": "creature",
          "name": "Homunculus 1",
          "provenance": "ai-generated",
          "publicName": "a little figure on the shelf",
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B2"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-homunculus-2",
          "kind": "creature",
          "name": "Homunculus 2",
          "provenance": "ai-generated",
          "publicName": "a little figure on the shelf",
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E2"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-3",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "say",
                "text": "Behind you, the copper vat sloshes. Then it overflows — upward."
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Touching anything wakes the vat.",
          "drawFrom": null,
          "id": "c-the-bench",
          "kind": "hazard",
          "name": "The bench",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C4:D7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Any hit that misses into the shelf: roll d6 — 1–2 fire burst (2d6), 3–4 sleeping gas (DC 13 Con), 5–6 nothing.",
          "drawFrom": null,
          "hazard": {
            "save": {
              "stat": "con",
              "dc": 13
            },
            "condition": {
              "condition": "unconscious",
              "duration": {
                "kind": "save-ends"
              }
            },
            "detectDc": 12,
            "disarmDc": 13
          },
          "id": "c-shelf-of-volatile-bottles",
          "kind": "hazard",
          "name": "Shelf of volatile bottles",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A2:A9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Potions: healing ×2, invisibility, fire resistance — and one marked healing that is actually poison.",
          "drawFrom": "arcana",
          "id": "c-the-labelled-bottles",
          "kind": "loot",
          "name": "The labelled bottles",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B2"
          ],
          "stat": null,
          "tags": [
            "item:2 potions of healing",
            "item:Potion of invisibility",
            "item:Potion of fire resistance",
            "item:A 'healing' potion that is really poison [consumable, 1d4 poison, applies poisoned, reach 4]"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Formula for the Orrery's lubricant, and a note: 'If Corvin returns, do not let him reach the heart-gear.'",
          "drawFrom": null,
          "id": "c-vael-s-notebook",
          "kind": "loot",
          "name": "Vael's notebook",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p12",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D6"
          ],
          "stat": null,
          "tags": [
            "item:Formula for the Orrery's lubricant [quest]",
            "container"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-the-alchemy-floor",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-laboratory",
          "name": "The laboratory",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "Shelves of bottles in every colour, a long bench of bubbling glassware, and a copper vat in the corner that is very, very full.",
          "reveal": "on-entry",
          "shape": [
            "B3:E9"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-vat",
          "name": "The vat",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "A copper vat full of something clear that is moving.",
          "reveal": "on-entry",
          "shape": [
            "F5:F6"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "Vael's laboratory. Half the bottles are labelled; the other half are labelled wrong. A creeping jelly lives in the vat (F5)."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-top-of-the-stair",
          "kind": "entrance",
          "name": "Top of the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-down-the-stair",
          "kind": "exit",
          "name": "Down the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-up-the-stair-to-the-orrery",
          "kind": "exit",
          "name": "Up the stair to the Orrery",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-bound-imp-1",
          "kind": "creature",
          "name": "Bound imp 1",
          "provenance": "ai-generated",
          "publicName": "a scowling red imp in the circle",
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-bound-imp-2",
          "kind": "creature",
          "name": "Bound imp 2",
          "provenance": "ai-generated",
          "publicName": "a scowling red imp in the circle",
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-bound-imp-3",
          "kind": "creature",
          "name": "Bound imp 3",
          "provenance": "ai-generated",
          "publicName": "a scowling red imp in the circle",
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D6"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "If the circle is broken carelessly, Vael's real guardian comes through.",
          "drawFrom": null,
          "id": "c-gatekeeper-demon",
          "kind": "creature",
          "name": "Gatekeeper demon",
          "provenance": "ai-generated",
          "publicName": "the circle flares",
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "when-found",
          "shape": [
            "D3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "young-drake"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-4",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": false,
              "does": {
                "kind": "say",
                "text": "The silver line smears. The imps cheer. Behind them, the air tears."
              }
            },
            {
              "id": "b-5",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": false,
              "does": {
                "kind": "reveal",
                "contentId": "c-gatekeeper-demon"
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Smudging the silver frees the imps — and something larger.",
          "drawFrom": null,
          "id": "c-breaking-the-circle",
          "kind": "hazard",
          "name": "Breaking the circle",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B4:E7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Rare reagents (worth 150 gp to a wizard) and a wand of fear (2 charges).",
          "drawFrom": "arcana",
          "id": "c-reagent-cabinet",
          "kind": "loot",
          "name": "Reagent cabinet",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A5"
          ],
          "stat": null,
          "tags": [
            "item:Rare reagents (150 gp)",
            "item:Wand of fear (2 charges)"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-the-conjuring-room",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-binding-circle",
          "name": "The binding circle",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "A circle of silver inlaid in the floor, glowing purple. Inside it, three small red figures sitting on each other's shoulders, scowling at you.",
          "reveal": "on-entry",
          "shape": [
            "B4:E7"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-cabinets",
          "name": "The cabinets",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "Cabinets of reagents, skulls, candles and jars of eyes.",
          "reveal": "on-entry",
          "shape": [
            "A2:A9",
            "F2:F9"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "Imps Vael bound and never released. They hate Corvin more than they hate the party, and will bargain — break the circle and they leave (and fight Corvin on the way out)."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-top-of-the-stair",
          "kind": "entrance",
          "name": "Top of the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-down-the-stair",
          "kind": "exit",
          "name": "Down the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-star-gate-the-crown",
          "kind": "exit",
          "name": "Star-gate: the Crown",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": "The planets swing into the shape of a crown. The floor under you becomes starlight.",
          "reveal": "always",
          "shape": [
            "D7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-star-gate-the-serpent",
          "kind": "exit",
          "name": "Star-gate: the Serpent",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p6",
          "readAloud": "The arms coil into a serpent. You fall upward.",
          "reveal": "always",
          "shape": [
            "C7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-star-gate-the-lantern",
          "kind": "exit",
          "name": "Star-gate: the Lantern",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p7",
          "readAloud": "The sun flares. You are in the garden.",
          "reveal": "always",
          "shape": [
            "E7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-orrery-sentinel",
          "kind": "creature",
          "name": "Orrery sentinel",
          "provenance": "ai-generated",
          "publicName": "a clockwork figure oiling the gears",
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F6"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "clockwork-sentinel"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-orrery-sentinel-apprentice-1",
          "kind": "creature",
          "name": "Orrery sentinel apprentice 1",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "when-found",
          "shape": [
            "B9"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "clockwork-sentinel"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-orrery-sentinel-apprentice-2",
          "kind": "creature",
          "name": "Orrery sentinel apprentice 2",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "when-found",
          "shape": [
            "E3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "clockwork-sentinel"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-6",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "reveal",
                "contentId": "c-orrery-sentinel-apprentice-1"
              }
            },
            {
              "id": "b-7",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "reveal",
                "contentId": "c-orrery-sentinel-apprentice-2"
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Touching the machine without setting the console wakes the sentinels.",
          "drawFrom": null,
          "id": "c-tampering-with-the-gears",
          "kind": "hazard",
          "name": "Tampering with the gears",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C6:E8"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "A drawer of brass gears — one is the size of the empty socket, but wrong. A clue that Corvin has the real one.",
          "drawFrom": null,
          "id": "c-spare-gears",
          "kind": "loot",
          "name": "Spare gears",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p12",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F3"
          ],
          "stat": null,
          "tags": [
            "item:The wrong brass gear [quest]",
            "container"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Her final letter, and a key to the hoard chests.",
          "drawFrom": "arcana",
          "id": "c-vael-s-desk",
          "kind": "loot",
          "name": "Vael's desk",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p13",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D4"
          ],
          "stat": null,
          "tags": [
            "item:Vael's final letter [quest]",
            "item:Key to the hoard chests [key: hoard-chests]"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-glass-sun",
          "kind": "light",
          "name": "The glass sun",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p14",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D7"
          ],
          "stat": null,
          "tags": []
        }
      ],
      "edges": [],
      "mapId": "m-the-orrery",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-orrery",
          "name": "The Orrery",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "A brass machine filling half the room — planets on arms, moons on wires, a sun of glowing glass — all turning, slowly, with a sound like a heartbeat. One socket at the heart of it is empty.",
          "reveal": "on-entry",
          "shape": [
            "B5:E8"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-console",
          "name": "The console",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "A desk with three dials: a crown, a serpent, a lantern.",
          "reveal": "on-entry",
          "shape": [
            "C4:D5"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "The machine. A great brass orrery (C6:E8). Its three settings are the star-gates. A clockwork sentinel tends it. Setting the constellation is an action at the console (D4)."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-where-the-star-gate-drops-you",
          "kind": "entrance",
          "name": "Where the star-gate drops you",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D6"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-star-gate-back-to-the-orrery",
          "kind": "exit",
          "name": "Star-gate back to the Orrery",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C5"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-stair-down-to-the-ritual-chamber",
          "kind": "exit",
          "name": "The stair down to the ritual chamber",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-bound-knight-1",
          "kind": "creature",
          "name": "Corvin's bound knight 1",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B8"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bone-knight"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-bound-knight-2",
          "kind": "creature",
          "name": "Corvin's bound knight 2",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E8"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bone-knight"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-familiar",
          "kind": "creature",
          "name": "Corvin's familiar",
          "provenance": "ai-generated",
          "publicName": "a raven made of shadow",
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D2"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Each sign stepped on casts a minor effect (d6: 1 heal 1d6, 2 blind 1 round, 3 slow, 4 haste 1 round, 5 2d6 fire, 6 teleport to another sign).",
          "drawFrom": null,
          "hazard": {
            "damage": "2d6",
            "type": "fire",
            "save": {
              "stat": "dex",
              "dc": 13,
              "half": true
            },
            "condition": {
              "condition": "blinded",
              "duration": {
                "kind": "end-of-next-turn"
              }
            },
            "rearms": true,
            "detectDc": 14
          },
          "id": "c-the-wheel-s-signs",
          "kind": "hazard",
          "name": "The wheel's signs",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B4:E7"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Charts showing which star Corvin means to move — and what happens if he does (the moon falls). 150 gp to a sage.",
          "drawFrom": null,
          "id": "c-star-charts",
          "kind": "loot",
          "name": "Star charts",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D2"
          ],
          "stat": null,
          "tags": [
            "item:Star charts of Corvin's star [quest, worth: 150 gp]",
            "container"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Coins left as offerings.",
          "drawFrom": "arcana",
          "id": "c-brazier-offerings",
          "kind": "loot",
          "name": "Brazier offerings",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B2"
          ],
          "stat": null,
          "tags": [
            "item:Offering coins: 27 gp"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-the-zodiac-floor",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-zodiac-wheel",
          "name": "The zodiac wheel",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "A great wheel of the zodiac set into the floor, the signs inlaid in bronze. Small sun and moon discs above and below it. Braziers in the corners.",
          "reveal": "on-entry",
          "shape": [
            "B4:E7"
          ],
          "tags": []
        },
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-star-desk",
          "name": "The star desk",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": "A desk of star charts — and inscriptions: 'Serpent for gold, Crown for counsel, Lantern for home.'",
          "reveal": "on-entry",
          "shape": [
            "C2:D2"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "A room outside the tower, reached only by the Crown gate. The floor is a zodiac wheel. Corvin's guards are here, and the stair down leads to his ritual chamber."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-foot-of-the-stair",
          "kind": "entrance",
          "name": "Foot of the stair",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-up-the-stair-to-the-zodiac-floor",
          "kind": "exit",
          "name": "Up the stair to the zodiac floor",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C10"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": "Ritual completes at the end of his 2nd turn — interrupt it!",
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-the-unfinished",
          "kind": "creature",
          "name": "Corvin the Unfinished",
          "provenance": "ai-generated",
          "publicName": "the young man with the gear",
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "lich-apprentice"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-flying-grimoire-1",
          "kind": "creature",
          "name": "Corvin's flying grimoire 1",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-flying-grimoire-2",
          "kind": "creature",
          "name": "Corvin's flying grimoire 2",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "F3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-flying-grimoire-3",
          "kind": "creature",
          "name": "Corvin's flying grimoire 3",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "B7"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-corvin-s-bodyguard",
          "kind": "creature",
          "name": "Corvin's bodyguard",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E7"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "animated-armour"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "Smashing it (AC 13, 20 HP) breaks the ritual and stuns Corvin for a round.",
          "drawFrom": null,
          "id": "c-the-scrying-orb",
          "kind": "hazard",
          "name": "The scrying orb",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "The missing piece of the Orrery. Placed on the Lantern setting, it puts the stars back.",
          "drawFrom": null,
          "id": "c-the-heart-gear",
          "kind": "loot",
          "name": "The heart-gear",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": null,
          "tags": [
            "item:The heart-gear [quest]",
            "container"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "His spellbook (five 4th-level spells) and his research.",
          "drawFrom": "arcana",
          "id": "c-corvin-s-grimoires",
          "kind": "loot",
          "name": "Corvin's grimoires",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p11",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "A4"
          ],
          "stat": null,
          "tags": [
            "item:Corvin's spellbook [treasure, rare, worth: 500 gp]",
            "item:Scroll of fireball"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-corvin-s-ritual-chamber",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": "Corvin, Vael's apprentice. 'She said it couldn't be finished. She was wrong about so much.'",
          "id": "r-the-ritual-floor",
          "name": "The ritual floor",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "A circle of runes, shelves of grimoires, and at the centre a crystal orb on a plinth, glowing violet. A young man in a too-big robe stands over it, holding a brass gear that glows like a star. Half his face is bone.",
          "reveal": "on-entry",
          "shape": [
            "B3:E9"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "THE FINALE. Corvin at the scrying altar (D5), the heart-gear in his hand. Kill him or take the gear before the third round of his ritual (he spends his first two turns finishing it). Taking the gear and putting it in the Orrery on the Lantern setting resets the stars."
    },
    {
      "columns": 6,
      "contents": [
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-where-the-serpent-gate-drops-you",
          "kind": "entrance",
          "name": "Where the Serpent gate drops you",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p2",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-star-gate-back-to-the-orrery",
          "kind": "exit",
          "name": "Star-gate back to the Orrery",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p3",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D9"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-ember-vael-s-drake",
          "kind": "creature",
          "name": "Ember, Vael's drake",
          "provenance": "ai-generated",
          "publicName": "something sleeping on the gold",
          "publicRef": "p4",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C5"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "young-drake"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-hoard-statue-1",
          "kind": "creature",
          "name": "Hoard statue 1",
          "provenance": "ai-generated",
          "publicName": "a statue of Vael",
          "publicRef": "p5",
          "readAloud": null,
          "reveal": "when-found",
          "shape": [
            "A3"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "stone-guardian"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-hoard-statue-2",
          "kind": "creature",
          "name": "Hoard statue 2",
          "provenance": "ai-generated",
          "publicName": "a statue of Vael",
          "publicRef": "p6",
          "readAloud": null,
          "reveal": "when-found",
          "shape": [
            "F9"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "stone-guardian"
          },
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": null,
          "drawFrom": null,
          "id": "c-the-trick-chest",
          "kind": "creature",
          "name": "The trick chest",
          "provenance": "ai-generated",
          "publicName": "a chest overflowing with rubies",
          "publicRef": "p7",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "E7"
          ],
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "chest-mimic"
          },
          "tags": []
        },
        {
          "behaviours": [
            {
              "id": "b-8",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "say",
                "text": "The gold shifts. Two golden eyes open."
              }
            },
            {
              "id": "b-9",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "reveal",
                "contentId": "c-hoard-statue-1"
              }
            },
            {
              "id": "b-10",
              "on": "token-enters",
              "arrival": "walked-in",
              "autoFire": true,
              "does": {
                "kind": "reveal",
                "contentId": "c-hoard-statue-2"
              }
            }
          ],
          "dmCue": null,
          "dmNotes": "Touching the gold wakes the drake and the statues.",
          "drawFrom": null,
          "id": "c-waking-ember",
          "kind": "hazard",
          "name": "Waking Ember",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p8",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C4:D6"
          ],
          "stat": null,
          "tags": []
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "3,000 gp, 8,000 sp, gems worth 1,500 gp, a staff of the stars (as a staff of power), and a robe of the archmagi cut for someone very tall.",
          "drawFrom": null,
          "id": "c-vael-s-hoard",
          "kind": "loot",
          "name": "Vael's hoard",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p9",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "D5"
          ],
          "stat": null,
          "tags": [
            "coins:3,000 gp",
            "coins:8,000 sp",
            "item:Gems (1,500 gp)",
            "item:Staff of the stars (as a staff of power)",
            "item:Robe of the archmagi",
            "container"
          ]
        },
        {
          "behaviours": [],
          "dmCue": null,
          "dmNotes": "A properly locked chest: a cloak of displacement and a bag of holding.",
          "drawFrom": "arcana",
          "id": "c-the-chest-by-the-door",
          "kind": "loot",
          "name": "The chest by the door",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p10",
          "readAloud": null,
          "reveal": "always",
          "shape": [
            "C3"
          ],
          "stat": null,
          "tags": [
            "item:Cloak of displacement",
            "item:Bag of holding [treasure, rare, worth: 500 gp]",
            "locked",
            "lock:hoard-chests",
            "dc:18"
          ]
        }
      ],
      "edges": [],
      "mapId": "m-vael-s-hoard",
      "regions": [
        {
          "dmCue": null,
          "dmNotes": null,
          "id": "r-the-treasury",
          "name": "The treasury",
          "provenance": "ai-generated",
          "publicName": null,
          "publicRef": "p1",
          "readAloud": "Gold. A carpet of gold coins on a red rug, chests spilling over, statues of Vael in every corner. And on the gold, curled like a cat, something scaled and copper and breathing smoke.",
          "reveal": "on-entry",
          "shape": [
            "B3:E9"
          ],
          "tags": []
        }
      ],
      "rows": 10,
      "dmNotes": "Reached only by the Serpent gate. Vael's treasury, guarded by her pet — a young drake who has been asleep on the gold for a century and is not pleased to be woken. Vael's portrait on the wall can call it off if the party has stopped Corvin."
    }
  ],
  "edges": [],
  "entry": {
    "placementId": "m-the-tower-garden"
  },
  "kind": "adventure",
  "lattices": [],
  "links": [
    {
      "id": "l-1",
      "fromMapId": "m-the-tower-garden",
      "toMapId": "m-the-arcane-library",
      "fromContentId": "c-the-tower-door",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-2",
      "fromMapId": "m-the-arcane-library",
      "toMapId": "m-the-tower-garden",
      "fromContentId": "c-out-to-the-garden",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-3",
      "fromMapId": "m-the-arcane-library",
      "toMapId": "m-the-alchemy-floor",
      "fromContentId": "c-up-the-stair",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-4",
      "fromMapId": "m-the-alchemy-floor",
      "toMapId": "m-the-arcane-library",
      "fromContentId": "c-down-the-stair",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-5",
      "fromMapId": "m-the-alchemy-floor",
      "toMapId": "m-the-conjuring-room",
      "fromContentId": "c-up-the-stair",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-6",
      "fromMapId": "m-the-conjuring-room",
      "toMapId": "m-the-alchemy-floor",
      "fromContentId": "c-down-the-stair",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-7",
      "fromMapId": "m-the-conjuring-room",
      "toMapId": "m-the-orrery",
      "fromContentId": "c-up-the-stair-to-the-orrery",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-8",
      "fromMapId": "m-the-orrery",
      "toMapId": "m-the-conjuring-room",
      "fromContentId": "c-down-the-stair",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-9",
      "fromMapId": "m-the-orrery",
      "toMapId": "m-the-zodiac-floor",
      "fromContentId": "c-star-gate-the-crown",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-10",
      "fromMapId": "m-the-orrery",
      "toMapId": "m-vael-s-hoard",
      "fromContentId": "c-star-gate-the-serpent",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-11",
      "fromMapId": "m-the-orrery",
      "toMapId": "m-the-tower-garden",
      "fromContentId": "c-star-gate-the-lantern",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-12",
      "fromMapId": "m-the-zodiac-floor",
      "toMapId": "m-the-orrery",
      "fromContentId": "c-star-gate-back-to-the-orrery",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-13",
      "fromMapId": "m-the-zodiac-floor",
      "toMapId": "m-corvin-s-ritual-chamber",
      "fromContentId": "c-the-stair-down-to-the-ritual-chamber",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-14",
      "fromMapId": "m-corvin-s-ritual-chamber",
      "toMapId": "m-the-zodiac-floor",
      "fromContentId": "c-up-the-stair-to-the-zodiac-floor",
      "fromPort": null,
      "toPort": null
    },
    {
      "id": "l-15",
      "fromMapId": "m-vael-s-hoard",
      "toMapId": "m-the-orrery",
      "fromContentId": "c-star-gate-back-to-the-orrery",
      "fromPort": null,
      "toPort": null
    }
  ],
  "manifest": {
    "authors": [
      "DnD Max Scenario Gallery"
    ],
    "engineMin": "0.1.0",
    "formatVersion": 1,
    "id": "gallery-vael-orrery",
    "license": {
      "attribution": "DnD Max",
      "spdx": "CC0-1.0"
    },
    "name": "The Orrery of Vael the Unfinished",
    "requiresPack": [
      "dndmax.bestiary"
    ],
    "version": "1.0.0"
  },
  "maps": [
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-overgrown-shrine.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-tower-garden",
      "lattice": null,
      "name": "The tower garden",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-overgrown-shrine",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-arcane-library.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-arcane-library",
      "lattice": null,
      "name": "The arcane library",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-arcane-library",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-alchemy-bench.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-alchemy-floor",
      "lattice": null,
      "name": "The alchemy floor",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-alchemy-bench",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-conjuring-room.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-conjuring-room",
      "lattice": null,
      "name": "The conjuring room",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-conjuring-room",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-orrery-room.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-orrery",
      "lattice": null,
      "name": "The Orrery",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-orrery-room",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-zodiac-floor.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.333333333333336,
        "rows": 10
      },
      "columns": 6,
      "id": "m-the-zodiac-floor",
      "lattice": null,
      "name": "The zodiac floor",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-zodiac-floor",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-ritual-chamber.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-corvin-s-ritual-chamber",
      "lattice": null,
      "name": "Corvin's ritual chamber",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-ritual-chamber",
        "version": "1"
      },
      "stack": null
    },
    {
      "backdrop": {
        "columns": 6,
        "gridVerified": true,
        "imageUrl": "/maps/library/room-hoard-chamber.webp",
        "kind": "registered",
        "licence": {
          "attribution": null,
          "spdx": "CC0-1.0"
        },
        "nativeCellPx": 50.166666666666664,
        "rows": 10
      },
      "columns": 6,
      "id": "m-vael-s-hoard",
      "lattice": null,
      "name": "Vael's hoard",
      "ports": [],
      "provenance": "ai-generated",
      "rows": 10,
      "scale": {
        "tier": "room",
        "cell": {
          "unit": "feet",
          "magnitude": 5
        }
      },
      "source": {
        "kind": "library",
        "libraryMapId": "lib-hoard-chamber",
        "version": "1"
      },
      "stack": null
    }
  ],
  "provenance": "ai-generated",
  "rollTables": [
    {
      "id": "tower-oddities",
      "name": "Tower oddities",
      "entries": [
        {
          "name": "Flying tome",
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "flying-tome"
          }
        },
        {
          "name": "Bound imp, escaped",
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "bound-imp"
          }
        },
        {
          "name": "Animated armour",
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "animated-armour"
          }
        },
        {
          "name": "Clockwork sentinel",
          "stat": {
            "packId": "dndmax.bestiary",
            "selector": "clockwork-sentinel"
          }
        },
        {
          "name": "Gravity flips for a round — everyone falls to the ceiling",
          "stat": null
        },
        {
          "name": "A portrait of Vael comments on your posture",
          "stat": null
        },
        {
          "name": "The tower turns a quarter-turn; every exit is briefly somewhere else",
          "stat": null
        }
      ]
    },
    {
      "id": "arcana",
      "name": "Arcana",
      "entries": [
        {
          "name": "A spell scroll (one 2nd-level spell)",
          "stat": null
        },
        {
          "name": "A potion of climbing that smells of lemons",
          "stat": null
        },
        {
          "name": "A wand with three charges of magic missile",
          "stat": null
        },
        {
          "name": "A brass astrolabe (75 gp) that always points to Vael's star",
          "stat": null
        },
        {
          "name": "A bag of 4d10 gp in coins from a kingdom that no longer exists",
          "stat": null
        },
        {
          "name": "A ring of feather falling, engraved 'in case of gravity'",
          "stat": null
        }
      ]
    }
  ]
}
