"""Regression fixtures. Also served verbatim when LOREIFY_FAKE_AI=1 (local QA).""" FIXTURE_GULLWRACK = { "title": "The Last Light of Gullwrack Point", "hook": ( "Three ships have wrecked on the Gullwrack shoals in two weeks, and the " "lighthouse at the point has gone dark. The Saltmere harbor council posts " "a bounty for anyone willing to climb the cliff road, find keeper Edda " "Brant, and get the lamp burning before the grain fleet arrives on the " "spring tide — four days from now." ), "quest_giver": ( "Alderman Piet Rosk, harbor councilman of Saltmere, offers the bounty " "with clean hands and a worried smile. He does not mention that Edda " "wrote the council three letters about strangers on the cliff road — or " "that all three ended up in his hearth." ), "objective": ( "Reach Gullwrack Point, find out what happened to keeper Edda Brant, and " "restore the light before the grain fleet reaches the shoals in four days." ), "location": ( "Gullwrack Point, a wind-scoured headland an hour north of Saltmere: a " "switchback cliff road above a black-water cove, a keeper's cottage with " "a cold hearth and a half-packed travel bag, and a granite lighthouse " "whose lamp room smells of oil and someone else's pipe smoke." ), "complications": [ "The cliff road is out — a rockslide, recent and deliberately levered " "loose (DC 13 Investigation), forces a choice between a slow exposed " "climb, a leaky fishing skiff after dark, or the smugglers' sea cave the " "party doesn't yet know is watched.", "Edda is not missing — she is hiding in the sea cave beneath the point, " "hurt but alive, and she refuses to leave or let anyone light the lamp " "until they hear her out: the dark lighthouse is the only leverage she " "has left.", "A storm front rolls in on the third night, cutting the time to act — " "and the grain fleet's escort sloop, running ahead of the weather, " "mistakes any light the party improvises for the false signals that " "wrecked the earlier ships.", ], "twist": ( "The wrecks were no accident. The Cormorant Ring, a smuggling crew out " "of Saltmere itself, has been dark-lantern signaling from the cliffs to " "steer ships onto the shoals and 'salvage' the cargo. Edda caught them " "at it — the rescue the party was hired for is the loose end of a " "wrecking operation, and the man who posted the bounty is on the Ring's " "payroll." ), "antagonist": ( "Silda Vane, quartermaster of the Cormorant Ring, runs the wrecking " "scheme with a ledger-keeper's calm. She doesn't want the keeper dead — " "a body brings inquiries — she wants Edda discredited and the lamp under " "a keeper the Ring can pay. She bargains first, bribes second, and only " "then sends knives. Use Bandit Captain, with two Thugs on the cliffs and " "a Spy inside Saltmere." ), "reward": ( "The council's posted bounty is 150 gp — fair pay for a level-4 party; " "scale toward 400 gp by level 8. If the Ring is exposed, Edda adds her " "own prize: a driftglass lantern that burns without oil for an hour a " "day, and a standing favor worth more than gold — the safest berth and " "the sharpest gossip in every port on the Saltmere run." ), "followup_hooks": [ "Alderman Rosk's ledger names a patron in the capital who has been " "buying 'salvaged' grain at a quiet discount — someone with a title and " "a reason to want the coastal ports failing.", "Edda takes the keeper's post again but keeps spotting dark-lantern " "signals answered from the sea. The Cormorant Ring was one crew of a " "larger fleet, and someone is still wrecking ships down the coast.", ], "dm_summary": ( "A rescue that curdles into a mystery: the party is hired to relight a " "dark lighthouse and finds the keeper hiding from the wreckers she " "caught — and the bounty was posted by a councilman on the smugglers' " "payroll. Run it in three beats: the climb to the point, the sea-cave " "parley with Edda, and the storm-night confrontation with Silda Vane's " "crew. Every route to the lamp has a cost, and Edda won't budge until " "someone believes her. Best for levels 3-5; tune it via Silda's Thugs." ), }