@dreadwood-types/types 0.1.225 → 0.1.227

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/floeWatch.d.ts +56 -0
  2. package/dist/floeWatch.d.ts.map +1 -0
  3. package/dist/floeWatch.js +65 -0
  4. package/dist/floeWatch.js.map +1 -0
  5. package/dist/foragePatches.d.ts +1 -1
  6. package/dist/foragePatches.d.ts.map +1 -1
  7. package/dist/foragePatches.js +26 -0
  8. package/dist/foragePatches.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/ironjawSiege.d.ts +52 -0
  14. package/dist/ironjawSiege.d.ts.map +1 -0
  15. package/dist/ironjawSiege.js +59 -0
  16. package/dist/ironjawSiege.js.map +1 -0
  17. package/dist/quests.d.ts.map +1 -1
  18. package/dist/quests.js +13 -1
  19. package/dist/quests.js.map +1 -1
  20. package/dist/redWaste.d.ts +24 -1
  21. package/dist/redWaste.d.ts.map +1 -1
  22. package/dist/redWaste.js +34 -7
  23. package/dist/redWaste.js.map +1 -1
  24. package/dist/redWasteCreatures.d.ts +14 -11
  25. package/dist/redWasteCreatures.d.ts.map +1 -1
  26. package/dist/redWasteCreatures.js +6 -6
  27. package/dist/redWasteCreatures.js.map +1 -1
  28. package/dist/redWasteQuest.d.ts +7 -4
  29. package/dist/redWasteQuest.d.ts.map +1 -1
  30. package/dist/redWasteQuest.js +16 -7
  31. package/dist/redWasteQuest.js.map +1 -1
  32. package/dist/storyQuests.d.ts +1 -1
  33. package/dist/storyQuests.d.ts.map +1 -1
  34. package/dist/storyQuests.js +158 -20
  35. package/dist/storyQuests.js.map +1 -1
  36. package/dist/sunderedBeach.d.ts +32 -0
  37. package/dist/sunderedBeach.d.ts.map +1 -0
  38. package/dist/sunderedBeach.js +23 -0
  39. package/dist/sunderedBeach.js.map +1 -0
  40. package/package.json +3 -3
@@ -35,12 +35,14 @@ import { EVERY_ROAD_PAYS_REWARD, HARROWS_HAT_KIND, NELL_CARTER_KIND, NELL_CARTER
35
35
  import { dwarfHoldPropModel } from './dwarfHold.js';
36
36
  import { LAMP_OIL_KIND, LANTERN_WAKE_HALE, LW_BEACON, LW_BEACON_KNOLL_AREA, LW_BEACON_PLACE, LW_LANTERNS_NEEDED, LW_LANTERN_PLACE, LW_LANTERN_TARGET_IDS, LW_PROP, LW_SUPPLY_CLOTH, LW_SUPPLY_OIL, LW_SUPPLY_ROPE, LW_WINCH, SIGNAL_ROPE_KIND, WICK_CLOTH_KIND, lanternWakePropModel, } from './lanternWakeQuests.js';
37
37
  import { CELLS_BELOW_CELLS_AREA, CELLS_BELOW_DOOR_AREA, CELLS_BELOW_HALLWAY_PLACE, CELLS_BELOW_PACK_PROP, CELLS_BELOW_REWARDS, } from './cellsBelow.js';
38
+ import { IRONJAW_GATE_PLACE, IRONJAW_PROP, IRONJAW_QUEST_COMBAT_LEVEL, IRONJAW_QUEST_LOGS, IRONJAW_QUEST_OGRES, IRONJAW_QUEST_WOODWORK_LEVEL, IRONJAW_RAM_NOTICE, IRONJAW_REWARDS, ironjawPropModel, } from './ironjawSiege.js';
39
+ import { FLOE_WATCH_BAIT, FLOE_WATCH_BAIT_KIND, FLOE_WATCH_BEARS, FLOE_WATCH_CAMP_PLACE, FLOE_WATCH_COMBAT_LEVEL, FLOE_WATCH_FISHING_LEVEL, FLOE_WATCH_HUNTER_NAME, FLOE_WATCH_PEN_LINE, FLOE_WATCH_PROP, FLOE_WATCH_REWARDS, floeWatchPropModel, } from './floeWatch.js';
38
40
  import { BRINDLECROSS_BEAN_PATCHES, BRINDLECROSS_STANDS } from './brindlecross.js';
39
41
  import { BRINDLECROSS_REEVE_NAME } from './brindlecrossFolk.js';
40
42
  import { BC_PROP, BC_SUPPLY_DITCH, BC_SUPPLY_RUTS, BC_SUPPLY_VERGE, MARKED_BUNDLE_KIND, ROADWARDEN_GLOVES_KIND, brindlecrossPropModel, } from './brindlecrossQuest.js';
41
43
  import { BOAR_KIND, HEDGE_THIEF_KIND } from './brindlecrossWildlife.js';
42
44
  import { CHASM_PROWLER_KIND, RAIDER_CHIEF_KIND, RAIDER_CHIEF_NAME, RED_WASTE_SCAVENGER_KIND, RED_WASTE_SCAVENGER_NAME, WASTE_RAIDER_KIND } from './redWasteCreatures.js';
43
- import { BANDIT_TOKEN_KIND, CHASM_SHARD_KIND, RAIDERS_PROWLERS_TO_DEFEAT, RAIDERS_QUEST_COMBAT_LEVEL, RAIDERS_RAIDERS_TO_DEFEAT, RAIDERS_REWARD, RAIDERS_SHARDS, RAIDERS_TOKENS, RW_BANNER, RW_MARKER_A, RW_MARKER_B, RW_MARKER_C, RW_PROP, TORN_BANNER_KIND, redWastePropModel, } from './redWasteQuest.js';
45
+ import { BANDIT_TOKEN_KIND, CHASM_SHARD_KIND, RAIDERS_PROWLERS_TO_DEFEAT, RAIDERS_QUEST_COMBAT_LEVEL, RAIDERS_RAIDERS_TO_DEFEAT, RAIDERS_REWARD, RAIDERS_SHARDS, RAIDERS_TOKENS, RW_CRATES, RAIDERS_CRATES_TO_BREAK, RW_MARKER_A, RW_MARKER_B, RW_MARKER_C, RW_PROP, TORN_BANNER_KIND, redWastePropModel, } from './redWasteQuest.js';
44
46
  import { GATEWARDEN_KIND, GATEWARDEN_NAME, GATEWARDEN_ROUNDS_COMBAT, GW_PROP, GW_TALLY_CRYPT, GW_TALLY_GROVE, GW_TALLY_MIRE, gatewardenPropModel, } from './gatewardenRounds.js';
45
47
  import { RIVERSEND_STANDS } from './riversendHalt.js';
46
48
  import { RIVERSEND_MASTER_NAME } from './riversendFolk.js';
@@ -110,6 +112,10 @@ export const STORY_QUEST_IDS = [
110
112
  'frostbiteSalve',
111
113
  // Fenwick's second (cellsBelow.ts, slice A5): through the Frozen Hallway, Combat 40 since James's end-game rule (2026-10-12).
112
114
  'cellsBelow',
115
+ // Fenwick's third (ironjawSiege.ts, slice C15): the battering ram and the Ironjaw outposts, levels 36-40.
116
+ 'breakingTheIronjaw',
117
+ // Hunter Brenna at the Bear Floes camp (floeWatch.ts, slice C15): the near landings counted, the pen left sealed.
118
+ 'floeWatch',
113
119
  'samsSecretBait',
114
120
  'bountyHuntersBrew',
115
121
  'corvinsRecipes',
@@ -158,7 +164,7 @@ export const STORY_QUEST_IDS = [
158
164
  'gatewardenRounds',
159
165
  // Riversend Halt, the third stop (riversendQuest.ts): Branik Stonecoil's quest, A Stronger Bridge.
160
166
  'strongerBridge',
161
- // The Red Waste (redWasteQuest.ts): Dessa Rake's Raiders of the Red Waste, levels 26-30.
167
+ // The Red Waste (redWasteQuest.ts): Mara Flint's Raiders of the Red Waste, levels 26-30.
162
168
  'raidersOfTheRedWaste',
163
169
  // Greenwood Wilds (greenwoodQuest.ts): Marta Fenn's quest, The Greenwarden's Glade.
164
170
  'greenwardensGlade',
@@ -223,6 +229,14 @@ export function questPropModel(style) {
223
229
  return 'questsalvage';
224
230
  if (prop === 'satchel')
225
231
  return 'questsatchel';
232
+ // Floe Watch (floeWatch.ts): the tally posts on the Bear Floes' near beaches.
233
+ const floeWatch = floeWatchPropModel(prop);
234
+ if (floeWatch)
235
+ return floeWatch;
236
+ // Breaking the Ironjaw (ironjawSiege.ts): the battering ram at the Ogre Fortress gate.
237
+ const ironjaw = ironjawPropModel(prop);
238
+ if (ironjaw)
239
+ return ironjaw;
226
240
  // The Cells Below (cellsBelow.ts): a fallen soldier's pack in the Frozen Shrine, the same satchel model.
227
241
  if (prop === CELLS_BELOW_PACK_PROP)
228
242
  return 'questsatchel';
@@ -303,7 +317,7 @@ export function questPropModel(style) {
303
317
  const riversend = riversendPropModel(prop, style);
304
318
  if (riversend)
305
319
  return riversend;
306
- // The Red Waste (redWasteQuest.ts): the raiders' road marks and the camp's banner.
320
+ // The Red Waste (redWasteQuest.ts): the raiders' road marks and the camp's supply crates.
307
321
  const redWaste = redWastePropModel(prop);
308
322
  if (redWaste)
309
323
  return redWaste;
@@ -1491,6 +1505,133 @@ export const STORY_QUESTS = {
1491
1505
  choiceXp: { qty: CELLS_BELOW_REWARDS.choiceXp.qty, skills: CELLS_BELOW_REWARDS.choiceXp.skills },
1492
1506
  },
1493
1507
  },
1508
+ /**
1509
+ * Breaking the Ironjaw (PLAN_1_TO_40.md 2.4, slice C15, T16 2026-10-14): Fenwick's third quest, the 36-40 band's siege.
1510
+ * Logs and Woodwork build the ram, the four ogres at the outposts are the fight, and the ram is run to the palisade gate,
1511
+ * which stays sealed (the Chief is a boss, GATE_PLACEHOLDER_BOSS). Places and the placeholder reward: ironjawSiege.ts.
1512
+ */
1513
+ breakingTheIronjaw: {
1514
+ giver: QUARTERMASTER,
1515
+ requires: {
1516
+ combat: IRONJAW_QUEST_COMBAT_LEVEL,
1517
+ skill: { skill: 'woodwork', level: IRONJAW_QUEST_WOODWORK_LEVEL },
1518
+ refuse: `I need someone who can fight and who can build. Ogres out there stand taller than the gate, and a ram does not make itself. Come back with Combat ${IRONJAW_QUEST_COMBAT_LEVEL} and Woodwork ${IRONJAW_QUEST_WOODWORK_LEVEL}.`,
1519
+ },
1520
+ offer: 'The Ironjaw ogres are raiding the snow road again. Every week another cart comes in half-eaten. They keep two fires outside their palisade, west and east, and they have dragged their great gate shut behind their chief. I cannot break the gate yet, but I can break their outposts and put a ram at their door so they know we mean it. Will you build the ram and clear the fires?',
1521
+ accept: `Bring me six logs, any kind, and a hand that knows a saw (Woodwork ${IRONJAW_QUEST_WOODWORK_LEVEL}). My carpenters will lash the ram together. Then clear the two outposts out on the ash by the fortress, and push the ram up to their gate.`,
1522
+ decline: 'Then the road stays unsafe, and I keep counting carts.',
1523
+ steps: [
1524
+ {
1525
+ kind: 'deliver',
1526
+ npc: QUARTERMASTER,
1527
+ items: [{ kinds: ANY_LOG, qty: IRONJAW_QUEST_LOGS, label: 'Logs' }],
1528
+ skill: { skill: 'woodwork', level: IRONJAW_QUEST_WOODWORK_LEVEL },
1529
+ label: `Bring Fenwick ${IRONJAW_QUEST_LOGS} logs for the battering ram`,
1530
+ hint: `Fell any trees for ${IRONJAW_QUEST_LOGS} logs and hand them to Fenwick at the garrison camp north of the Northern Gate (Woodwork ${IRONJAW_QUEST_WOODWORK_LEVEL}).`,
1531
+ say: 'Good timber. My lads will have the ram lashed and roped by the time you are back from the ash. It will be at the palisade gate when you get there.',
1532
+ short: `Six logs, any kind, and a hand that can saw (Woodwork ${IRONJAW_QUEST_WOODWORK_LEVEL}). The ram will not build itself.`,
1533
+ },
1534
+ {
1535
+ kind: 'kill',
1536
+ npcKinds: ['ironjawogre'],
1537
+ qty: IRONJAW_QUEST_OGRES,
1538
+ npcLabel: 'Ironjaw Ogre',
1539
+ label: `Defeat ${IRONJAW_QUEST_OGRES} Ironjaw ogres at the outposts`,
1540
+ hint: 'The Ogre Fortress stands in the Dreadwoods, north of the Blood Lake. The ogres keep two fires on the ash, one west and one east of the palisade (level 38): fight them there, never inside the logs.',
1541
+ place: IRONJAW_GATE_PLACE,
1542
+ },
1543
+ {
1544
+ kind: 'touch',
1545
+ prop: IRONJAW_PROP.ram,
1546
+ qty: 1,
1547
+ label: 'Run the battering ram up to the Ironjaw palisade gate',
1548
+ hint: 'The ram stands on the track below the palisade gate, south of the banner posts. Click it to put your shoulder to it.',
1549
+ place: IRONJAW_GATE_PLACE,
1550
+ notices: {
1551
+ [`${IRONJAW_PROP.ram}:gate`]: IRONJAW_RAM_NOTICE,
1552
+ },
1553
+ },
1554
+ {
1555
+ kind: 'talk',
1556
+ npc: QUARTERMASTER,
1557
+ label: 'Tell Fenwick the outposts are broken and the ram is at the gate',
1558
+ hint: 'Fenwick the Quartermaster keeps the trading post in the garrison camp north of the Northern Gate.',
1559
+ say: "Cold fires, a ram at their door, and the road quiet already. They will not forget it. The gate itself is the Chief's, and that is a fight for much later. Well done.",
1560
+ },
1561
+ ],
1562
+ done: "Here is your pay, and a share of the camp's thanks. Mark me: the ogres will mend that gate, and the Chief behind it is no work for anyone under fifty.",
1563
+ after: 'The snow road has been quiet since you broke their fires. The ram stands at their gate still.',
1564
+ rewards: {
1565
+ coins: IRONJAW_REWARDS.coins,
1566
+ xp: { ...IRONJAW_REWARDS.xp },
1567
+ choiceXp: { qty: IRONJAW_REWARDS.choiceXp.qty, skills: IRONJAW_REWARDS.choiceXp.skills },
1568
+ },
1569
+ },
1570
+ /**
1571
+ * Floe Watch (PLAN_1_TO_40.md 2.4, decision D10, slice C15, T16 2026-10-14): Hunter Brenna at the Bear Floes camp. Bait
1572
+ * from the ice holes (Fishing 35), the three near landings counted at their tally posts, three standard polar bears
1573
+ * (level 36) driven back. The pen (Elders 44, the Alpha 52) stays sealed. Places and the placeholder reward: floeWatch.ts.
1574
+ */
1575
+ floeWatch: {
1576
+ giver: { kind: NAMED_STORY_NPC_KIND, name: FLOE_WATCH_HUNTER_NAME },
1577
+ requires: {
1578
+ combat: FLOE_WATCH_COMBAT_LEVEL,
1579
+ skill: { skill: 'fishing', level: FLOE_WATCH_FISHING_LEVEL },
1580
+ refuse: `The bears here take a hunter who cannot fish bait or stand a charge. Come back with Combat ${FLOE_WATCH_COMBAT_LEVEL} and Fishing ${FLOE_WATCH_FISHING_LEVEL} (frost pike come through the ice holes).`,
1581
+ },
1582
+ offer: 'The floes bring the bears in all season, and nobody has counted them since the old hunters left. I am keeping the watch from this camp, but I need the beaches counted and the bait fresh. Two frost pike from the Frozen Lake to draw the bears in close, a mark on each of the three beaches, and three of the big white ones driven back from the camp. Will you help?',
1583
+ accept: 'Frost pike, through the ice: Ulf sells the auger. Bring me two. Then the three tally posts down on the beaches, west, middle and east, and three polar bears turned back. Keep clear of the stakes at the far beach.',
1584
+ decline: 'Then the beaches stay uncounted and the bears keep coming in unwatched.',
1585
+ steps: [
1586
+ {
1587
+ kind: 'deliver',
1588
+ npc: { kind: NAMED_STORY_NPC_KIND, name: FLOE_WATCH_HUNTER_NAME },
1589
+ items: [{ kinds: [FLOE_WATCH_BAIT_KIND], qty: FLOE_WATCH_BAIT, label: 'Frost pike' }],
1590
+ label: `Bring Hunter Brenna ${FLOE_WATCH_BAIT} raw frost pike`,
1591
+ hint: `Frost pike bite through the ice holes of the Frozen Lake (Fishing ${FLOE_WATCH_FISHING_LEVEL}, an Ice Auger and rod from Bait Master Ulf). Bring them raw to the camp on the Bear Floes.`,
1592
+ place: FLOE_WATCH_CAMP_PLACE,
1593
+ say: 'Fresh and still cold. The bears will smell that from the water. Now the posts: each beach has a stake of mine, and I want a mark on every one.',
1594
+ short: `Two raw frost pike, caught through the ice (Fishing ${FLOE_WATCH_FISHING_LEVEL}). A bear does not come in for dry bread.`,
1595
+ },
1596
+ {
1597
+ kind: 'touch',
1598
+ prop: FLOE_WATCH_PROP.post,
1599
+ qty: 3,
1600
+ label: 'Mark the three tally posts on the near beaches',
1601
+ hint: 'The tally posts stand a little back from the west, middle and east beaches below the camp. Polar bears come ashore and roam there: watch for them.',
1602
+ place: FLOE_WATCH_CAMP_PLACE,
1603
+ notices: {
1604
+ [`${FLOE_WATCH_PROP.post}:west`]: 'You cut a mark in the west beach post, and count two white shapes on the ice beyond, riding in on their floes.',
1605
+ [`${FLOE_WATCH_PROP.post}:mid`]: 'You mark the middle post. A bear is already padding up the sand, and another floe is drifting in behind it.',
1606
+ [`${FLOE_WATCH_PROP.post}:east`]: 'You mark the east post. Out on the shore ice a bear the size of a cart is watching you, and past the stakes, bigger shapes wait.',
1607
+ },
1608
+ },
1609
+ {
1610
+ kind: 'kill',
1611
+ npcKinds: ['polarbear'],
1612
+ qty: FLOE_WATCH_BEARS,
1613
+ npcLabel: 'Polar Bear',
1614
+ label: `Drive back ${FLOE_WATCH_BEARS} polar bears on the near beaches`,
1615
+ hint: 'The standard polar bears (level 36) come ashore on the west, middle and east beaches. Do not go east of the stakes at the far beach: the Elders and the Alpha are in the pen.',
1616
+ place: FLOE_WATCH_CAMP_PLACE,
1617
+ },
1618
+ {
1619
+ kind: 'talk',
1620
+ npc: { kind: NAMED_STORY_NPC_KIND, name: FLOE_WATCH_HUNTER_NAME },
1621
+ label: 'Report the count to Hunter Brenna',
1622
+ hint: "Hunter Brenna keeps the watch at the hunters' camp on the Bear Floes, the north-east end of the ice.",
1623
+ place: FLOE_WATCH_CAMP_PLACE,
1624
+ say: `Three posts marked and three of the white ones turned. That is the near beaches counted, and the log is the first in years. ${FLOE_WATCH_PEN_LINE}`,
1625
+ },
1626
+ ],
1627
+ done: 'Here is your share of the watch fund. The camp is yours to rest at any time.',
1628
+ after: 'The count is up on the board, and the beaches are quiet for now. The floes keep coming.',
1629
+ rewards: {
1630
+ coins: FLOE_WATCH_REWARDS.coins,
1631
+ xp: { ...FLOE_WATCH_REWARDS.xp },
1632
+ choiceXp: { qty: FLOE_WATCH_REWARDS.choiceXp.qty, skills: FLOE_WATCH_REWARDS.choiceXp.skills },
1633
+ },
1634
+ },
1494
1635
  samsSecretBait: {
1495
1636
  giver: SAM,
1496
1637
  requires: {
@@ -2847,15 +2988,15 @@ export const STORY_QUESTS = {
2847
2988
  },
2848
2989
  // ---- Greenwood Wilds (greenwoodQuest.ts, greenwoodQuestDef.ts): Marta Fenn's quest, The Greenwarden's Glade ---------------------
2849
2990
  greenwardensGlade: GREENWARDENS_GLADE_QUEST,
2850
- // ---- The Red Waste (redWasteQuest.ts): Dessa Rake's quest, Raiders of the Red Waste ------------------------------------
2991
+ // ---- The Red Waste (redWasteQuest.ts): Mara Flint's quest, Raiders of the Red Waste ------------------------------------
2851
2992
  raidersOfTheRedWaste: {
2852
2993
  giver: { kind: RED_WASTE_SCAVENGER_KIND, name: RED_WASTE_SCAVENGER_NAME },
2853
2994
  requires: {
2854
2995
  combat: RAIDERS_QUEST_COMBAT_LEVEL,
2855
2996
  refuse: 'Out here the ground eats anyone who comes soft. Raiders, prowlers, and other travellers with the same idea as you. Come back when you have steel in your arm (Combat 26).',
2856
2997
  },
2857
- offer: 'Everything out here belongs to the Redcaps now, they keep telling me. They dug the old ruin for relics, blasted the chasm for crystal and drove the prowlers out onto the plain, and now they are fencing the road to the mine. I pick the ruin over for a living and I will not have a living left. Will you break their camp?',
2858
- accept: 'Start on the road. The raiders daub red marks on the posts to say who can pass: read three of them and you will know how many they are. Then thin the prowlers, they carry shards in their spines that the dwarves pay for, break the raiders in the bone camp east of the road and tear down their banner. Their warlord holds the longhouse. Bring me a shard or three, a token or three and the banner.',
2998
+ offer: 'Everything out here belongs to the Redcaps now, they keep telling me. They dug the old ruin for relics, blasted the chasm for crystal and drove the prowlers out onto the plain, and now they are fencing the road to the mine. I keep a fire and a lean-to by the road and sell what the dust gives up, and I will not have a living left. Will you break their camp?',
2999
+ accept: 'Start on the road. The raiders daub red marks on the posts to say who can pass: read three of them and you will know how many they are. Then thin the prowlers, they carry shards in their spines that the dwarves pay for, break the raiders in the bone camp east of the road and smash their supply crates. Their chief, Rusk Redhand, holds the longhouse. Bring me three shards, three tokens and his banner.',
2859
3000
  decline: 'Then keep to the road and keep your head down. The dust keeps what it is given.',
2860
3001
  steps: [
2861
3002
  {
@@ -2888,14 +3029,11 @@ export const STORY_QUESTS = {
2888
3029
  },
2889
3030
  {
2890
3031
  kind: 'touch',
2891
- prop: RW_PROP.banner,
2892
- qty: 1,
2893
- label: "Tear down the raiders' banner in the bone camp",
2894
- hint: "The banner stands on its pole in the camp's yard, north of the fire.",
2895
- notices: {
2896
- [RW_BANNER.style]: 'You rip the red banner off its pole. It comes away in rags, stamped with the skull of the bone camp.',
2897
- },
2898
- give: { kind: TORN_BANNER_KIND, qty: 1 },
3032
+ prop: RW_PROP.crate,
3033
+ qty: RAIDERS_CRATES_TO_BREAK,
3034
+ label: `Break the raiders' supply: smash ${RAIDERS_CRATES_TO_BREAK} crates in the bone camp`,
3035
+ hint: "The raiders' supply crates stand about the yard inside the bone camp's palisade, among the tents. Click each to smash it.",
3036
+ notices: Object.fromEntries(RW_CRATES.map((c) => [c.style, 'You put your boot through the slats. Salvaged chains, rotten rations and a stack of road tolls spill out into the dust.'])),
2899
3037
  },
2900
3038
  {
2901
3039
  kind: 'kill',
@@ -2903,7 +3041,7 @@ export const STORY_QUESTS = {
2903
3041
  qty: 1,
2904
3042
  npcLabel: RAIDER_CHIEF_NAME,
2905
3043
  label: `Defeat ${RAIDER_CHIEF_NAME}`,
2906
- hint: 'The warlord (level 32, tougher than his level) stands before the longhouse at the back of the camp. Bring food, and friends if you can.',
3044
+ hint: 'Rusk Redhand (level 32, tougher than his level) stands before the longhouse at the back of the camp. Bring food, and friends if you can.',
2907
3045
  },
2908
3046
  {
2909
3047
  kind: 'deliver',
@@ -2913,13 +3051,13 @@ export const STORY_QUESTS = {
2913
3051
  { kinds: [BANDIT_TOKEN_KIND], qty: RAIDERS_TOKENS, label: 'Bandit Tokens' },
2914
3052
  { kinds: [TORN_BANNER_KIND], qty: 1, label: 'Torn Banner' },
2915
3053
  ],
2916
- label: 'Bring Dessa Rake the shards, the tokens and the banner',
2917
- hint: 'Dessa Rake keeps her fire at the ruin site west of the road. Prowlers drop shards and raiders drop tokens as you kill them: bring three of each.',
2918
- say: 'Shards, tokens and the banner. And the warlord down: the camp is leaderless, and the dust will have it by the winter. Nobody tolls this road today.',
2919
- short: 'Three shards from the prowlers, three tokens from the raiders and the banner off the pole. The dwarves will not take your word.',
3054
+ label: "Bring Mara Flint the shards, the tokens and Rusk Redhand's banner",
3055
+ hint: "Mara Flint keeps her lean-to outpost by the road's foot, east of the road. Prowlers drop shards and raiders drop tokens as you kill them: bring three of each, and the torn banner Rusk Redhand drops.",
3056
+ say: 'Shards, tokens and his own banner. Rusk Redhand down: the camp is leaderless, and the dust will have it by the winter. Nobody tolls this road today.',
3057
+ short: 'Three shards from the prowlers, three tokens from the raiders and the banner Rusk drops. The dwarves will not take your word.',
2920
3058
  },
2921
3059
  ],
2922
- done: "Here is the warlord's coin, bars of steel the dwarves left in the ruin, and my thanks. Take the road home. The marks on the posts have gone dry.",
3060
+ done: "Here is the chief's price on his head, bars of steel the dwarves left in the ruin, and my thanks. Take the road home. The marks on the posts have gone dry.",
2923
3061
  after: 'The road is quiet, for now. Another band will come, they always do. But it will take them a season to dig out the stink.',
2924
3062
  // Rewards are a proposal for the balance pass: coins, Explorer XP, a combat XP lump and steel bars.
2925
3063
  rewards: {