@dreadwood-types/types 0.1.203 → 0.1.205

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 (73) hide show
  1. package/dist/animation.d.ts.map +1 -1
  2. package/dist/animation.js +6 -1
  3. package/dist/animation.js.map +1 -1
  4. package/dist/areaGates.d.ts +77 -8
  5. package/dist/areaGates.d.ts.map +1 -1
  6. package/dist/areaGates.js +219 -15
  7. package/dist/areaGates.js.map +1 -1
  8. package/dist/attackableNpcs.d.ts.map +1 -1
  9. package/dist/attackableNpcs.js +6 -0
  10. package/dist/attackableNpcs.js.map +1 -1
  11. package/dist/bearFloes.d.ts +44 -0
  12. package/dist/bearFloes.d.ts.map +1 -1
  13. package/dist/bearFloes.js +56 -4
  14. package/dist/bearFloes.js.map +1 -1
  15. package/dist/bounty.d.ts +1 -1
  16. package/dist/bounty.js +1 -1
  17. package/dist/cellsBelow.d.ts +5 -4
  18. package/dist/cellsBelow.d.ts.map +1 -1
  19. package/dist/cellsBelow.js +5 -4
  20. package/dist/cellsBelow.js.map +1 -1
  21. package/dist/constants.d.ts +8 -1
  22. package/dist/constants.d.ts.map +1 -1
  23. package/dist/constants.js +30 -0
  24. package/dist/constants.js.map +1 -1
  25. package/dist/frozenDungeons.d.ts +43 -0
  26. package/dist/frozenDungeons.d.ts.map +1 -0
  27. package/dist/frozenDungeons.js +328 -0
  28. package/dist/frozenDungeons.js.map +1 -0
  29. package/dist/gateLevels.d.ts +19 -0
  30. package/dist/gateLevels.d.ts.map +1 -0
  31. package/dist/gateLevels.js +19 -0
  32. package/dist/gateLevels.js.map +1 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/legacy.d.ts +2 -0
  38. package/dist/legacy.d.ts.map +1 -1
  39. package/dist/legacy.js +2 -0
  40. package/dist/legacy.js.map +1 -1
  41. package/dist/ogreFortress.d.ts +30 -1
  42. package/dist/ogreFortress.d.ts.map +1 -1
  43. package/dist/ogreFortress.js +28 -6
  44. package/dist/ogreFortress.js.map +1 -1
  45. package/dist/quests.d.ts.map +1 -1
  46. package/dist/quests.js +2 -1
  47. package/dist/quests.js.map +1 -1
  48. package/dist/storyQuests.d.ts +6 -1
  49. package/dist/storyQuests.d.ts.map +1 -1
  50. package/dist/storyQuests.js +19 -9
  51. package/dist/storyQuests.js.map +1 -1
  52. package/dist/timedRun.js +1 -1
  53. package/dist/timedRun.js.map +1 -1
  54. package/dist/wards.d.ts.map +1 -1
  55. package/dist/wards.js +2 -0
  56. package/dist/wards.js.map +1 -1
  57. package/dist/westernEntrance.d.ts +1 -1
  58. package/dist/westernEntrance.d.ts.map +1 -1
  59. package/dist/westernEntrance.js +2 -1
  60. package/dist/westernEntrance.js.map +1 -1
  61. package/dist/worldEventLayout.d.ts +20 -0
  62. package/dist/worldEventLayout.d.ts.map +1 -0
  63. package/dist/worldEventLayout.js +33 -0
  64. package/dist/worldEventLayout.js.map +1 -0
  65. package/dist/worldEventScaling.d.ts +90 -0
  66. package/dist/worldEventScaling.d.ts.map +1 -0
  67. package/dist/worldEventScaling.js +121 -0
  68. package/dist/worldEventScaling.js.map +1 -0
  69. package/dist/worldEvents.d.ts +97 -4
  70. package/dist/worldEvents.d.ts.map +1 -1
  71. package/dist/worldEvents.js +31 -26
  72. package/dist/worldEvents.js.map +1 -1
  73. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAC3H,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC;AACjH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAQtG,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,qBAAqB,CASjF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CActE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAGxE"}
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAC3H,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC;AACjH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAQtG,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,qBAAqB,CASjF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAiBtE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAGxE"}
package/dist/animation.js CHANGED
@@ -25,8 +25,13 @@ export function attackFamilyForWeapon(kind) {
25
25
  return 'punch';
26
26
  }
27
27
  export function attackFamilyForNpc(kind) {
28
- if (kind === 'redcaparcher' || kind === 'wallarcher')
28
+ if (kind === 'redcaparcher' || kind === 'wallarcher' || kind === 'culvertlookout')
29
29
  return 'bow_shot';
30
+ // The frozen dungeons' trapper levels his spear; the drain scavenger hooks with his boat hook.
31
+ if (kind === 'trapperremnant')
32
+ return 'thrust';
33
+ if (kind === 'drainscavenger')
34
+ return 'heavy_swing';
30
35
  if (kind === 'soldier' || kind === 'amazon')
31
36
  return 'thrust';
32
37
  // Fort Rook: Bosun Harrow's boarding axe comes down overhead; Captain Rowena slashes with her cutlasses.
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animation.js","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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"}
@@ -18,13 +18,7 @@ import { type StorySkill } from './storyQuests.js';
18
18
  * - levels on gates are placeholders until the balance pass: they are the levels the game data already used, or
19
19
  * GATE_PLACEHOLDER_41 for 41+ content.
20
20
  */
21
- /** The band floor for 41+ content: the placeholder Combat level on any gate in front of it until the balance pass. */
22
- export declare const GATE_PLACEHOLDER_41 = 41;
23
- /**
24
- * The Combat level the Frozen Hallway's seal asks for (decision D1 agreed by James 2026-10-12: the Hallway opens at Combat
25
- * 20 with no key, so the Ice Prison behind it is the game's 21-38 dungeon). A placeholder until the balance pass.
26
- */
27
- export declare const FROZEN_HALLWAY_COMBAT_LEVEL = 20;
21
+ export { GATE_PLACEHOLDER_41, GATE_PLACEHOLDER_BOSS, FROZEN_HALLWAY_COMBAT_LEVEL } from './gateLevels.js';
28
22
  /** Any skill a gate can ask a level of, besides Combat and Explorer (which have their own requirement kinds). */
29
23
  export type GateSkill = Exclude<StorySkill, 'explorer'>;
30
24
  export type GateRequirement = {
@@ -60,13 +54,58 @@ export type AreaGateAt = {
60
54
  styles?: readonly string[];
61
55
  stylePrefixes?: readonly string[];
62
56
  };
57
+ /** A rectangle of world tiles, both ends included. */
58
+ export type GateTileBox = {
59
+ minX: number;
60
+ maxX: number;
61
+ minZ: number;
62
+ maxZ: number;
63
+ };
64
+ /**
65
+ * A walk gate (slice A2, 2026-10-12): a gate on a path rather than on a door. Its band tiles are blocked in the shared
66
+ * walk grid (so no creature crosses them either way), and a player may walk them only when the gate admits them, or
67
+ * when they are already inside or on the band (going out is never refused). The inside is everything a player reaches
68
+ * on foot from `inside` without crossing a band; the backend works it out once (world.ts walkGateInside) and the smoke
69
+ * proves `outside` is not in it.
70
+ */
71
+ export type AreaGateWalk = {
72
+ bands: readonly GateTileBox[];
73
+ /** A tile inside, on open ground. */
74
+ inside: {
75
+ x: number;
76
+ z: number;
77
+ };
78
+ /** A tile outside in front of the first band, on open ground (where the smoke and the teleport links stand). */
79
+ outside: {
80
+ x: number;
81
+ z: number;
82
+ };
83
+ };
63
84
  export type AreaGate = {
64
85
  id: string;
65
86
  /** What the sentence calls the place, capitalised: "The Spider Cave". */
66
87
  name: string;
67
88
  /** The place's own line, one sentence ending in a full stop: "Silk chokes the burrow, and something big moves in it." */
68
89
  flavour: string;
69
- at: AreaGateAt;
90
+ /** A door or prop gate: the entity it stands on. A walk gate has `walk` instead (a gate may have both). */
91
+ at?: AreaGateAt;
92
+ walk?: AreaGateWalk;
93
+ /**
94
+ * A boss fight gate (James, 2026-10-12: "definitely not able to attack bosses" at Combat 40-49): the NPC kinds it covers.
95
+ * The server refuses a player's attack on one of them with the gate's sentence, and the boss never locks on to a player
96
+ * the gate refuses, so a boss that wanders or is pulled to a lower player still cannot be fought. No padlock badge.
97
+ */
98
+ fight?: {
99
+ npcKinds: readonly string[];
100
+ };
101
+ /**
102
+ * Where the paper map draws the gate's padlock (world tiles). A walk gate defaults to its first band's middle; a door
103
+ * gate without it (the wolf dens move about, the Great Stair is underground) gets no map padlock.
104
+ */
105
+ mapAt?: {
106
+ x: number;
107
+ z: number;
108
+ };
70
109
  requires: readonly GateRequirement[];
71
110
  /**
72
111
  * For a two-way door (the same entity both ways): the side the outside is on. Only a player standing on that side is
@@ -101,6 +140,8 @@ export type GatePlayerView = {
101
140
  * levels and meaning; only their wording moved to the standard sentence.
102
141
  */
103
142
  export declare const AREA_GATES: readonly AreaGate[];
143
+ /** The boss fight gate on an NPC kind (`fight`), or null for an ordinary creature. */
144
+ export declare function bossGateForKind(kind: string): AreaGate | null;
104
145
  export declare const AREA_GATE_BY_ID: Readonly<Record<string, AreaGate>>;
105
146
  /** The order requirements are checked and worded in (D3). */
106
147
  export declare const GATE_REQUIREMENT_ORDER: readonly ["combat", "quest", "explorer", "skill", "member", "item"];
@@ -124,6 +165,34 @@ export declare function gateRefusalText(gate: AreaGate, missing: readonly GateRe
124
165
  export declare function gateSealedLabel(missing: readonly GateRequirement[]): string;
125
166
  /** Every requirement, short, for the guide: "Combat 15, Explorer 5". */
126
167
  export declare function gateRequirementsShort(gate: AreaGate): string;
168
+ /**
169
+ * Every requirement with whether it is met, in the D3 order: the examine list ("Combat level 41" with a tick or a
170
+ * cross). A coming quest is never met.
171
+ */
172
+ export declare function gateRequirementChecks(gate: AreaGate, player: GatePlayerView): {
173
+ text: string;
174
+ met: boolean;
175
+ }[];
176
+ export declare const WALK_GATES: readonly AreaGate[];
177
+ /** Whether a tile is on one of a walk gate's bands. */
178
+ export declare function onWalkGateBand(gate: AreaGate, x: number, z: number): boolean;
179
+ /** The walk gate whose band holds a tile, or null. */
180
+ export declare function walkGateAt(x: number, z: number): AreaGate | null;
181
+ /** Every band tile of a walk gate. */
182
+ export declare function walkGateBandTiles(gate: AreaGate): {
183
+ x: number;
184
+ z: number;
185
+ }[];
186
+ /** Where a walk gate's padlocks hang over the path: the middle of each band. */
187
+ export declare function walkGateBadgeTiles(gate: AreaGate): {
188
+ x: number;
189
+ z: number;
190
+ }[];
191
+ /** Where the paper map draws a gate's padlock, or null for none. */
192
+ export declare function areaGateMapTile(gate: AreaGate): {
193
+ x: number;
194
+ z: number;
195
+ } | null;
127
196
  /** The gate standing on an entity, or null. */
128
197
  export declare function areaGateForEntity(kind: string, style: string | undefined): AreaGate | null;
129
198
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"areaGates.d.ts","sourceRoot":"","sources":["../src/areaGates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"areaGates.d.ts","sourceRoot":"","sources":["../src/areaGates.ts"],"names":[],"mappings":"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"}
package/dist/areaGates.js CHANGED
@@ -5,6 +5,12 @@ import { FROZEN_HALLWAY_SEAL_STYLE } from './landmarks.js';
5
5
  import { CAVE_ENTRANCE_COMBAT_LEVEL, CAVE_ENTRANCE_EXPLORER_LEVEL, FROZEN_KEY_KIND, SPIDER_CAVE_EXPLORER_LEVEL, WOLF_DEN_FORAGING_LEVEL, } from './woodwork.js';
6
6
  import { DWARF_HOLD_PROP } from './dwarfHold.js';
7
7
  import { ICE_DEPTHS_ROOMS, iceDepthsPortalStyle } from './iceDepths.js';
8
+ import { FROZEN_HALLWAY_COMBAT_LEVEL, GATE_PLACEHOLDER_41, GATE_PLACEHOLDER_BOSS } from './gateLevels.js';
9
+ import { DRAGON_GATE_MAX_X, DRAGON_GATE_MIN_X, DRAGON_GATE_PATH_X, DRAGON_RIVER_GAP_MAX_X, DRAGON_RIVER_GAP_MIN_X, dragonRingSouthZ, } from './bloodRiver.js';
10
+ import { OGRE_CHIEF, OGRE_FORTRESS_CX, OGRE_GATE_BAND, OGRE_GATE_Z } from './ogreFortress.js';
11
+ import { BEAR_FLOES_PEN, BEAR_FLOES_PEN_GATE } from './bearFloes.js';
12
+ import { EVENT_ENTRANCE_KIND } from './worldEvents.js';
13
+ import { FROSTPINE_HOLLOW_ENTRANCE_MODEL, FROZEN_DUNGEON_MIN_COMBAT, ICE_CULVERT_ENTRANCE_MODEL } from './frozenDungeons.js';
8
14
  /**
9
15
  * The standard area gate (plan dreadwoods-backend/PLAN_1_TO_40.md section 5.2, decision D3 agreed by James 2026-10-12).
10
16
  *
@@ -22,13 +28,7 @@ import { ICE_DEPTHS_ROOMS, iceDepthsPortalStyle } from './iceDepths.js';
22
28
  * - levels on gates are placeholders until the balance pass: they are the levels the game data already used, or
23
29
  * GATE_PLACEHOLDER_41 for 41+ content.
24
30
  */
25
- /** The band floor for 41+ content: the placeholder Combat level on any gate in front of it until the balance pass. */
26
- export const GATE_PLACEHOLDER_41 = 41;
27
- /**
28
- * The Combat level the Frozen Hallway's seal asks for (decision D1 agreed by James 2026-10-12: the Hallway opens at Combat
29
- * 20 with no key, so the Ice Prison behind it is the game's 21-38 dungeon). A placeholder until the balance pass.
30
- */
31
- export const FROZEN_HALLWAY_COMBAT_LEVEL = 20;
31
+ export { GATE_PLACEHOLDER_41, GATE_PLACEHOLDER_BOSS, FROZEN_HALLWAY_COMBAT_LEVEL } from './gateLevels.js';
32
32
  /** The four wing arches in the Frozen Shrine's walls (the Warden's lift is its own gate, below). */
33
33
  const FROZEN_DEPTHS_WING_ARCHES = ['rune', 'hollow', 'ritual', 'lab'].map((id) => iceDepthsPortalStyle(ICE_DEPTHS_ROOMS[id].hubArch.facing, id));
34
34
  /** What the gate sentence calls each relic the lift wants. */
@@ -50,6 +50,8 @@ export const AREA_GATES = [
50
50
  at: { kind: 'caveentrance', stylePrefixes: ['basecamp-', 'farside'] },
51
51
  requires: [{ combat: CAVE_ENTRANCE_COMBAT_LEVEL }, { explorer: CAVE_ENTRANCE_EXPLORER_LEVEL }],
52
52
  where: "the Rat Tunnel, through the Suspicious hole at Base Camp or the far side's door back in",
53
+ // The paper map's padlock on the Suspicious hole (area-gates-smoke checks it stands on a placed gate).
54
+ mapAt: { x: 717, z: 826 },
53
55
  badgeY: 3.4,
54
56
  },
55
57
  {
@@ -59,6 +61,7 @@ export const AREA_GATES = [
59
61
  at: { kind: 'caveentrance', styles: [SPIDER_CAVE_MOUTH_STYLE, SPIDER_DEN_STYLE] },
60
62
  requires: [{ explorer: SPIDER_CAVE_EXPLORER_LEVEL }],
61
63
  where: 'the Spider Cave, through the den in Spider Hollow or the old burrow on its east rim',
64
+ mapAt: { x: 659, z: 701 },
62
65
  badgeY: 3.2,
63
66
  },
64
67
  {
@@ -73,23 +76,26 @@ export const AREA_GATES = [
73
76
  {
74
77
  id: 'frozen-hallway',
75
78
  name: 'The Frozen Hallway',
76
- // D1 (2026-10-12): no key. Behind it is the Ice Prison, frost wolves 21-23 to glacial lurkers 38; everything 41+
77
- // past the prison is behind the two Frozen Depths gates below.
79
+ // No key since D1; Combat 40 since James, 2026-10-12 ("frozen dungeon is an end game area, there should absolutely be
80
+ // no one entering it below level 40"), reversing D1's Combat 20. Behind it is the Ice Prison (frost wolves 21-23 to
81
+ // glacial lurkers 38, to be rebalanced very hard for 40-49); every boss past it is behind the Depths gates at 50.
78
82
  flavour: 'The sigil reads whoever touches it, and it will not part for anyone who could not fight their way back out.',
79
83
  at: { kind: 'runearch', styles: [FROZEN_HALLWAY_SEAL_STYLE] },
80
84
  requires: [{ combat: FROZEN_HALLWAY_COMBAT_LEVEL }],
81
85
  outside: 'south',
82
86
  where: 'the Frozen Hallway and the Ice Prison beyond it, behind the sealed rune arch on the Frozen Plateau',
87
+ mapAt: { x: 21, z: 169 },
83
88
  badgeY: 4.4,
84
89
  },
85
90
  {
86
- // D1 (2026-10-12): the Frozen Key moved here from the Hallway, paired with Combat 41+ (keys trade, F5). The Ice
87
- // Troll (45) stands in the Shattered Hollow behind one of these arches since the same day.
91
+ // D1 (2026-10-12): the Frozen Key moved here from the Hallway, paired with Combat (keys trade, F5). Each arch leads to
92
+ // a warden, a boss, so since James's boss rule the same day it asks the boss placeholder (50), not 41. The Ice Troll
93
+ // (45, not a boss) stands in the Shattered Hollow behind one of these arches, so it is behind 50 too.
88
94
  id: 'frozen-depths',
89
95
  name: 'The Frozen Depths',
90
96
  flavour: 'The arch drinks the warmth out of your hand and gives nothing back.',
91
97
  at: { kind: 'runearch', styles: FROZEN_DEPTHS_WING_ARCHES },
92
- requires: [{ combat: GATE_PLACEHOLDER_41 }, { item: FROZEN_KEY_KIND, label: 'a Frozen Key' }],
98
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }, { item: FROZEN_KEY_KIND, label: 'a Frozen Key' }],
93
99
  guards: 62,
94
100
  where: "the Frozen Depths' four wing rooms, through the rune arches in the Frozen Shrine's walls",
95
101
  badgeY: 4.4,
@@ -100,7 +106,7 @@ export const AREA_GATES = [
100
106
  flavour: "Four relics wake it, one from each of the Depths' wardens.",
101
107
  at: { kind: 'runearch', styles: [iceDepthsPortalStyle('n', 'core', true)] },
102
108
  requires: [
103
- { combat: GATE_PLACEHOLDER_41 },
109
+ { combat: GATE_PLACEHOLDER_BOSS },
104
110
  ...Object.keys(RELIC_LABELS).map((relic) => ({ item: relic, label: RELIC_LABELS[relic] })),
105
111
  { item: FROZEN_KEY_KIND, label: 'a Frozen Key' },
106
112
  ],
@@ -118,7 +124,140 @@ export const AREA_GATES = [
118
124
  where: 'the Great Stair at the east end of the Dwarf Hold, on the Western Line',
119
125
  badgeY: 4.6,
120
126
  },
127
+ // Slice A2 (decision D2, agreed by James 2026-10-12): the three 41+ fights that were reachable on foot with no gate.
128
+ {
129
+ id: 'blood-lake',
130
+ name: 'The Blood Lake',
131
+ flavour: "The ward cut into the ring's old pillars turns back anyone the dragons could burn in a breath.",
132
+ // Both openings in the crag ring's south arc: the pillared gap the path comes in by, and the banks where the lake's
133
+ // branch runs out to the river (the ring skips water, so its banks were a second way in). No terrain work.
134
+ walk: {
135
+ bands: [
136
+ {
137
+ minX: DRAGON_GATE_MIN_X - 1,
138
+ maxX: DRAGON_GATE_MAX_X,
139
+ minZ: dragonRingSouthZ(DRAGON_GATE_PATH_X) - 1,
140
+ maxZ: dragonRingSouthZ(DRAGON_GATE_PATH_X) + 1,
141
+ },
142
+ {
143
+ minX: DRAGON_RIVER_GAP_MIN_X - 1,
144
+ maxX: DRAGON_RIVER_GAP_MAX_X + 4,
145
+ minZ: dragonRingSouthZ(DRAGON_RIVER_GAP_MAX_X) - 2,
146
+ maxZ: dragonRingSouthZ(DRAGON_RIVER_GAP_MAX_X) + 2,
147
+ },
148
+ ],
149
+ inside: { x: DRAGON_GATE_PATH_X, z: dragonRingSouthZ(DRAGON_GATE_PATH_X) - 8 },
150
+ outside: { x: DRAGON_GATE_PATH_X, z: dragonRingSouthZ(DRAGON_GATE_PATH_X) + 4 },
151
+ },
152
+ // Every dragon is a boss (James, 2026-10-12: no boss below the boss placeholder), and the ring holds only dragons.
153
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
154
+ // The dragons roll 50-54 (backend npcs.ts DRAGON_LEVEL).
155
+ guards: 54,
156
+ where: "the Blood Lake, through the pillared gap in the dragons' crag ring",
157
+ badgeY: 3.2,
158
+ },
159
+ {
160
+ id: 'ogre-fortress',
161
+ name: 'The Ogre Fortress',
162
+ flavour: 'The Ironjaw ogres have dragged their gate shut, and they open it only to someone fit to face their chief.',
163
+ walk: {
164
+ bands: [OGRE_GATE_BAND],
165
+ inside: { x: OGRE_CHIEF.x, z: OGRE_CHIEF.z + 2 },
166
+ outside: { x: OGRE_FORTRESS_CX, z: OGRE_GATE_Z + 5 },
167
+ },
168
+ // The yard is the Ironjaw Chief's, a boss: the boss placeholder (James, 2026-10-12); his two guards are 38.
169
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
170
+ // The Ironjaw Chief is level 48 (backend npcs.ts OGRE_PROFILES); his two yard guards are 38.
171
+ guards: 48,
172
+ where: 'the Ogre Fortress, through its palisade gate (the ogres at the two outposts outside the logs are open to all)',
173
+ badgeY: 3.4,
174
+ },
175
+ {
176
+ id: 'bear-floes-pen',
177
+ name: "The hunters' pen",
178
+ flavour: 'The hunters staked off the far landing where the great bears come ashore, and they open its gate only to someone who could stand against an Alpha.',
179
+ walk: {
180
+ bands: [BEAR_FLOES_PEN_GATE],
181
+ inside: { x: BEAR_FLOES_PEN.gateX, z: BEAR_FLOES_PEN.southZ - 6 },
182
+ outside: { x: BEAR_FLOES_PEN.gateX, z: BEAR_FLOES_PEN.southZ + 3 },
183
+ },
184
+ requires: [{ combat: GATE_PLACEHOLDER_41 }],
185
+ // The Elder Polar Bears are 44 and the Alpha 52 (backend npcs.ts POLAR_BEAR_PROFILES).
186
+ guards: 52,
187
+ where: "the hunters' pen at the east end of the Bear Floes, where the Elder Polar Bears and the Alpha come ashore",
188
+ badgeY: 3,
189
+ },
190
+ // The boss fight gates (James, 2026-10-12: Combat 40-49 must "definitely not be able to attack bosses"): every 41+ boss
191
+ // at the boss placeholder, on the fight itself as well as on the door in front of its ground. Non-boss 41+ fights (the
192
+ // Elder Polar Bears, the Ice Troll) stay at 41 or behind a boss door.
193
+ {
194
+ id: 'boss-dragons',
195
+ name: 'The fight with a dragon',
196
+ flavour: 'One breath would burn you where you stand.',
197
+ fight: { npcKinds: ['dragon'] },
198
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
199
+ guards: 54,
200
+ where: 'the four dragons of the Blood Lake',
201
+ badge: false,
202
+ },
203
+ {
204
+ id: 'boss-ironjaw-chief',
205
+ name: 'The fight with the Ironjaw Chief',
206
+ flavour: 'He does not lower his club to anyone untested.',
207
+ fight: { npcKinds: ['ironjawchief'] },
208
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
209
+ guards: 48,
210
+ where: 'the Ironjaw Chief in the Ogre Fortress',
211
+ badge: false,
212
+ },
213
+ {
214
+ id: 'boss-polar-bear-alpha',
215
+ name: 'The fight with the Polar Bear Alpha',
216
+ flavour: 'It would tear through you before you landed a blow.',
217
+ fight: { npcKinds: ['polarbearalpha'] },
218
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
219
+ guards: 52,
220
+ where: "the Polar Bear Alpha in the Bear Floes' hunters' pen",
221
+ badge: false,
222
+ },
223
+ {
224
+ id: 'boss-depths-wardens',
225
+ name: "The fight with the Frozen Depths' wardens",
226
+ flavour: 'The cold around them would stop your heart before your blade arrived.',
227
+ fight: { npcKinds: ['frostalchemist', 'frostwarden', 'bonechillyeti', 'icelich', 'glacialbehemoth'] },
228
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
229
+ guards: 70,
230
+ where: "the Frozen Depths' wardens (the Frost Alchemist, the Frost Warden, the Bonechill Yeti, the Ice Lich and the Glacial Behemoth)",
231
+ badge: false,
232
+ },
233
+ // The frozen random-spawn dungeons (frozenDungeons.ts, slice C4, 2026-10-12): scaled 10-40, so the mouth lets you in
234
+ // at the band's floor. Each mouth turns up at one of its sites in the snow (it moves about).
235
+ {
236
+ id: 'frostpine-trapper-hollow',
237
+ name: 'Frostpine Trapper Hollow',
238
+ flavour: 'Something growls under the roots, and the snow at the mouth is all claw marks.',
239
+ at: { kind: EVENT_ENTRANCE_KIND, stylePrefixes: [`${FROSTPINE_HOLLOW_ENTRANCE_MODEL}-`] },
240
+ requires: [{ combat: FROZEN_DUNGEON_MIN_COMBAT }],
241
+ where: 'Frostpine Trapper Hollow, a root hollow under a fallen frostpine that turns up somewhere on the snowfields',
242
+ badgeY: 3.6,
243
+ },
244
+ {
245
+ id: 'kings-road-ice-culvert',
246
+ name: "The King's Road Ice Culvert",
247
+ flavour: 'The water under the road roars in the dark, and something down there whistles back.',
248
+ at: { kind: EVENT_ENTRANCE_KIND, stylePrefixes: [`${ICE_CULVERT_ENTRANCE_MODEL}-`] },
249
+ requires: [{ combat: FROZEN_DUNGEON_MIN_COMBAT }],
250
+ where: "the King's Road Ice Culvert, an iced arch under a road on the snowfields (it turns up under one road or another)",
251
+ badgeY: 3.8,
252
+ },
121
253
  ];
254
+ /** The boss fight gate on an NPC kind (`fight`), or null for an ordinary creature. */
255
+ export function bossGateForKind(kind) {
256
+ for (const gate of AREA_GATES)
257
+ if (gate.fight?.npcKinds.includes(kind))
258
+ return gate;
259
+ return null;
260
+ }
122
261
  export const AREA_GATE_BY_ID = Object.fromEntries(AREA_GATES.map((g) => [g.id, g]));
123
262
  /** The order requirements are checked and worded in (D3). */
124
263
  export const GATE_REQUIREMENT_ORDER = ['combat', 'quest', 'explorer', 'skill', 'member', 'item'];
@@ -212,9 +351,51 @@ export function gateSealedLabel(missing) {
212
351
  export function gateRequirementsShort(gate) {
213
352
  return [...gate.requires].sort((a, b) => rank(a) - rank(b)).map(gateRequirementShort).join(', ');
214
353
  }
354
+ /**
355
+ * Every requirement with whether it is met, in the D3 order: the examine list ("Combat level 41" with a tick or a
356
+ * cross). A coming quest is never met.
357
+ */
358
+ export function gateRequirementChecks(gate, player) {
359
+ return [...gate.requires]
360
+ .sort((a, b) => rank(a) - rank(b))
361
+ .map((req) => ({ text: gateRequirementText(req).replace(/, which is not in the game yet$/, ' (not in the game yet)'), met: gateRequirementMet(req, player) }));
362
+ }
363
+ // ---------------------------------------------------------------------------------------------------------------------
364
+ // Walk gates (slice A2)
365
+ export const WALK_GATES = AREA_GATES.filter((g) => !!g.walk);
366
+ const inBox = (box, x, z) => x >= box.minX && x <= box.maxX && z >= box.minZ && z <= box.maxZ;
367
+ /** Whether a tile is on one of a walk gate's bands. */
368
+ export function onWalkGateBand(gate, x, z) {
369
+ return !!gate.walk?.bands.some((b) => inBox(b, x, z));
370
+ }
371
+ /** The walk gate whose band holds a tile, or null. */
372
+ export function walkGateAt(x, z) {
373
+ for (const gate of WALK_GATES)
374
+ if (onWalkGateBand(gate, x, z))
375
+ return gate;
376
+ return null;
377
+ }
378
+ /** Every band tile of a walk gate. */
379
+ export function walkGateBandTiles(gate) {
380
+ const out = [];
381
+ for (const b of gate.walk?.bands ?? []) {
382
+ for (let z = b.minZ; z <= b.maxZ; z++)
383
+ for (let x = b.minX; x <= b.maxX; x++)
384
+ out.push({ x, z });
385
+ }
386
+ return out;
387
+ }
388
+ /** Where a walk gate's padlocks hang over the path: the middle of each band. */
389
+ export function walkGateBadgeTiles(gate) {
390
+ return (gate.walk?.bands ?? []).map((b) => ({ x: Math.round((b.minX + b.maxX) / 2), z: Math.round((b.minZ + b.maxZ) / 2) }));
391
+ }
392
+ /** Where the paper map draws a gate's padlock, or null for none. */
393
+ export function areaGateMapTile(gate) {
394
+ return gate.mapAt ?? walkGateBadgeTiles(gate)[0] ?? null;
395
+ }
215
396
  /** Whether a style matches a gate's `at`. */
216
397
  function atMatches(at, kind, style) {
217
- if (kind !== at.kind)
398
+ if (!at || kind !== at.kind)
218
399
  return false;
219
400
  const s = style ?? '';
220
401
  if (at.styles?.includes(s))
@@ -261,8 +442,31 @@ export function areaGateProblems(gates = AREA_GATES) {
261
442
  const ranks = gate.requires.map(rank);
262
443
  if (ranks.some((r, i) => i > 0 && r < ranks[i - 1]))
263
444
  problems.push(`${gate.id}: requirements out of the D3 order (Combat, quest, Explorer, skill, membership, key)`);
264
- if (!gate.at.styles?.length && !gate.at.stylePrefixes?.length)
445
+ if (!gate.at && !gate.walk && !gate.fight?.npcKinds.length)
446
+ problems.push(`${gate.id}: a gate stands on a door or prop (at), on a path (walk) or on a boss fight (fight)`);
447
+ if (gate.fight && !gate.requires.some((r) => 'combat' in r && r.combat >= GATE_PLACEHOLDER_BOSS))
448
+ problems.push(`${gate.id}: a boss fight asks for Combat ${GATE_PLACEHOLDER_BOSS}+`);
449
+ if (gate.at && !gate.at.styles?.length && !gate.at.stylePrefixes?.length)
265
450
  problems.push(`${gate.id}: no styles to stand on`);
451
+ if (gate.walk) {
452
+ if (!gate.walk.bands.length)
453
+ problems.push(`${gate.id}: a walk gate has a band`);
454
+ for (const b of gate.walk.bands) {
455
+ if (b.minX > b.maxX || b.minZ > b.maxZ)
456
+ problems.push(`${gate.id}: an empty band ${JSON.stringify(b)}`);
457
+ if ((b.maxX - b.minX + 1) * (b.maxZ - b.minZ + 1) > 160)
458
+ problems.push(`${gate.id}: a band over 160 tiles (a gate, not a wall)`);
459
+ }
460
+ const { inside, outside } = gate.walk;
461
+ if (onWalkGateBand(gate, inside.x, inside.z) || onWalkGateBand(gate, outside.x, outside.z))
462
+ problems.push(`${gate.id}: inside and outside stand off the bands`);
463
+ for (const other of gates) {
464
+ if (other === gate || !other.walk)
465
+ continue;
466
+ if (walkGateBandTiles(gate).some((t) => onWalkGateBand(other, t.x, t.z)))
467
+ problems.push(`${gate.id}: its band overlaps ${other.id}'s`);
468
+ }
469
+ }
266
470
  const combat = gate.requires.find((r) => 'combat' in r)?.combat ?? 0;
267
471
  const keyOnly = gate.requires.every((r) => 'item' in r);
268
472
  if (!gate.openItem && (gate.guards ?? 0) >= GATE_PLACEHOLDER_41 && keyOnly && combat < GATE_PLACEHOLDER_41) {
@@ -1 +1 @@
1
- {"version":3,"file":"areaGates.js","sourceRoot":"","sources":["../src/areaGates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAA6B,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA2B,MAAM,gBAAgB,CAAC;AAEjG;;;;;;;;;;;;;;;;GAgBG;AAEH,sHAAsH;AACtH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,oGAAoG;AACpG,MAAM,yBAAyB,GAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC7G,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjE,8DAA8D;AAC9D,MAAM,YAAY,GAAiD;IACjE,WAAW,EAAE,mBAAmB;IAChC,eAAe,EAAE,uBAAuB;IACxC,UAAU,EAAE,iBAAiB;IAC7B,YAAY,EAAE,mBAAmB;CAClC,CAAC;AAiEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,4DAA4D;QACrE,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;QACrE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;QAC9F,KAAK,EAAE,yFAAyF;QAChG,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,oEAAoE;QAC7E,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,EAAE;QACjF,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAC;QACpD,KAAK,EAAE,qFAAqF;QAC5F,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,oDAAoD;QAC7D,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE;QACzD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QACjE,KAAK,EAAE,8DAA8D;QACrE,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,oBAAoB;QAC1B,iHAAiH;QACjH,+DAA+D;QAC/D,OAAO,EAAE,6GAA6G;QACtH,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE;QAC7D,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACnD,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,oGAAoG;QAC3G,MAAM,EAAE,GAAG;KACZ;IACD;QACE,gHAAgH;QAChH,2FAA2F;QAC3F,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,qEAAqE;QAC9E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,yBAAyB,EAAE;QAC3D,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAC7F,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,0FAA0F;QACjG,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,4DAA4D;QACrE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE;QAC3E,QAAQ,EAAE;YACR,EAAE,MAAM,EAAE,mBAAmB,EAAE;YAC/B,GAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAA0B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpH,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE;SACjD;QACD,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,yEAAyE;QAChF,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,sFAAsF;QAC/F,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,GAAG,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE;QACvE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAChF,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,wEAAwE;QAC/E,MAAM,EAAE,GAAG;KACZ;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAuC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAExH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE1G,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IACrC,IAAI,OAAO,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IAC3D,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,UAAU,CAAC;IACzC,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACnC,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,GAAoB,EAAU,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AAExG,sCAAsC;AACtC,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,MAAsB;IAC7E,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IAC9D,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC;IACpE,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;IACvE,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC1C,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,MAAsB;IAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,gBAAgB,GAAG,CAAC,MAAM,EAAE,CAAC;IACzD,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,aAAa,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;IACpF,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,aAAa,GAAG,CAAC,WAAW,gCAAgC,CAAC;IAC9F,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,kBAAkB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC/D,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC;IAChF,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,YAAY,CAAC;IACzC,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC;IACnD,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,SAAS,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;IAChF,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,SAAS,GAAG,CAAC,WAAW,gBAAgB,CAAC;IAC1E,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,YAAY,GAAG,CAAC,QAAQ,EAAE,CAAC;IACzD,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1E,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,YAAY,CAAC;IACzC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,OAAmC;IAC/D,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,OAAmC;IACjF,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,GAAG,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtF,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,OAAmC;IACjE,OAAO,WAAW,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,6CAA6C;AAC7C,SAAS,SAAS,CAAC,EAAc,EAAE,IAAY,EAAE,KAAyB;IACxE,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;IACtB,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAyB;IACvE,KAAK,MAAM,IAAI,IAAI,UAAU;QAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IAC3F,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAC7B,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA6B,UAAU;IACtE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,sDAAsD,CAAC,CAAC;QAC/G,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAC;QACtG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,sFAAsF,CAAC,CAAC;QACtK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAClH,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,mBAAmB,IAAI,OAAO,IAAI,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC3G,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,8BAA8B,IAAI,CAAC,MAAM,iCAAiC,mBAAmB,IAAI,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"areaGates.js","sourceRoot":"","sources":["../src/areaGates.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"attackableNpcs.d.ts","sourceRoot":"","sources":["../src/attackableNpcs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,OAAO,CAwHpD,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}
1
+ {"version":3,"file":"attackableNpcs.d.ts","sourceRoot":"","sources":["../src/attackableNpcs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,OAAO,CA8HpD,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -126,6 +126,12 @@ export const ATTACKABLE_NPC_KINDS = new Set([
126
126
  'greyheron',
127
127
  'wakegull',
128
128
  'tidecrab',
129
+ // The frozen random-spawn dungeons' streams (frozenDungeons.ts).
130
+ 'frostrat',
131
+ 'snowfox',
132
+ 'trapperremnant',
133
+ 'drainscavenger',
134
+ 'culvertlookout',
129
135
  ]);
130
136
  export function isAttackableNpcKind(kind) {
131
137
  return ATTACKABLE_NPC_KINDS.has(kind);
@@ -1 +1 @@
1
- {"version":3,"file":"attackableNpcs.js","sourceRoot":"","sources":["../src/attackableNpcs.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB,IAAI,GAAG,CAAU;IACzE,OAAO;IACP,MAAM;IACN,uEAAuE;IACvE,8BAA8B;IAC9B,WAAW;IACX,SAAS;IACT,SAAS;IACT,gFAAgF;IAChF,OAAO;IACP,MAAM;IACN,WAAW;IACX,UAAU;IACV,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,QAAQ;IACR,uEAAuE;IACvE,uDAAuD;IACvD,WAAW;IACX,UAAU;IACV,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,QAAQ;IACR,cAAc;IACd,UAAU;IACV,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;IACN,WAAW;IACX,QAAQ;IACR,iEAAiE;IACjE,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,UAAU;IACV,2DAA2D;IAC3D,aAAa;IACb,eAAe;IACf,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,iEAAiE;IACjE,UAAU;IACV,0CAA0C;IAC1C,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,sEAAsE;IACtE,UAAU;IACV,aAAa;IACb,kDAAkD;IAClD,aAAa;IACb,cAAc;IACd,6EAA6E;IAC7E,+CAA+C;IAC/C,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,oFAAoF;IACpF,WAAW;IACX,WAAW;IACX,8DAA8D;IAC9D,SAAS;IACT,4GAA4G;IAC5G,cAAc;IACd,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;IACR,aAAa;IACb,qFAAqF;IACrF,WAAW;IACX,OAAO;IACP,OAAO;IACP,WAAW;IACX,WAAW;IACX,OAAO;IACP,YAAY;IACZ,8FAA8F;IAC9F,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,sFAAsF;IACtF,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,QAAQ;IACR,SAAS;IACT,0FAA0F;IAC1F,WAAW;IACX,cAAc;IACd,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,wHAAwH;IACxH,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAe,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"attackableNpcs.js","sourceRoot":"","sources":["../src/attackableNpcs.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB,IAAI,GAAG,CAAU;IACzE,OAAO;IACP,MAAM;IACN,uEAAuE;IACvE,8BAA8B;IAC9B,WAAW;IACX,SAAS;IACT,SAAS;IACT,gFAAgF;IAChF,OAAO;IACP,MAAM;IACN,WAAW;IACX,UAAU;IACV,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,QAAQ;IACR,uEAAuE;IACvE,uDAAuD;IACvD,WAAW;IACX,UAAU;IACV,MAAM;IACN,KAAK;IACL,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,QAAQ;IACR,cAAc;IACd,UAAU;IACV,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;IACN,WAAW;IACX,QAAQ;IACR,iEAAiE;IACjE,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,UAAU;IACV,2DAA2D;IAC3D,aAAa;IACb,eAAe;IACf,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,iEAAiE;IACjE,UAAU;IACV,0CAA0C;IAC1C,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,sEAAsE;IACtE,UAAU;IACV,aAAa;IACb,kDAAkD;IAClD,aAAa;IACb,cAAc;IACd,6EAA6E;IAC7E,+CAA+C;IAC/C,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,oFAAoF;IACpF,WAAW;IACX,WAAW;IACX,8DAA8D;IAC9D,SAAS;IACT,4GAA4G;IAC5G,cAAc;IACd,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;IACR,aAAa;IACb,qFAAqF;IACrF,WAAW;IACX,OAAO;IACP,OAAO;IACP,WAAW;IACX,WAAW;IACX,OAAO;IACP,YAAY;IACZ,8FAA8F;IAC9F,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,sFAAsF;IACtF,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,QAAQ;IACR,SAAS;IACT,0FAA0F;IAC1F,WAAW;IACX,cAAc;IACd,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,wHAAwH;IACxH,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;IACV,iEAAiE;IACjE,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAe,CAAC,CAAC;AACnD,CAAC"}
@@ -47,10 +47,54 @@ export declare const BEAR_FLOES_PATH: ReadonlyArray<{
47
47
  z: number;
48
48
  }>;
49
49
  export type BearFloesBearKind = 'polarbear' | 'polarbearelder' | 'polarbearalpha';
50
+ /**
51
+ * The hunters' pen (slice A2, decision D2 agreed by James 2026-10-12): the far
52
+ * landing at the east end of the coast (landing 3), staked off from the rest
53
+ * of the headland. The Elders (44) and the Alpha (52) come ashore only there,
54
+ * so a level-36 hunter on the near beaches never meets them; the pen's gate is
55
+ * a standard walk gate (areaGates.ts 'bear-floes-pen', Combat 41 placeholder).
56
+ *
57
+ * The stakes run south from the coast down column `westX`, then east along row
58
+ * `southZ` to the sea, leaving the gate's three tiles open (blocked for anyone
59
+ * the gate refuses, and for every bear).
60
+ */
61
+ export declare const BEAR_FLOES_PEN: {
62
+ readonly westX: 188;
63
+ readonly southZ: 43;
64
+ readonly eastX: 205;
65
+ readonly gateX: 196;
66
+ readonly gateHalfW: 1;
67
+ };
68
+ /** The landing the pen keeps (BEAR_FLOES_LANDINGS index). */
69
+ export declare const BEAR_FLOES_PEN_LANDING = 3;
70
+ /** Inside the stakes: east of the west line, north of the south line, on land. */
71
+ export declare function inBearFloesPen(x: number, z: number): boolean;
72
+ /** The pen gate's tiles, the walk gate's band. */
73
+ export declare const BEAR_FLOES_PEN_GATE: {
74
+ readonly minX: number;
75
+ readonly maxX: number;
76
+ readonly minZ: 43;
77
+ readonly maxZ: 43;
78
+ };
79
+ /**
80
+ * Every stake of the pen, with its face in degrees (the camp palisade's `palisadesnow-face<deg>`: 180 on a line south of
81
+ * what it guards, 90 on one west of it): down the west line from the coast, then along the south line to the sea, the
82
+ * gate left open.
83
+ */
84
+ export declare function bearFloesPenStakes(): readonly {
85
+ x: number;
86
+ z: number;
87
+ face: number;
88
+ }[];
50
89
  /**
51
90
  * The bears, each with its home ground (where it roams once ashore) and the
52
91
  * beach its floe brings it in to. Two of the Standards are still out on the
53
92
  * ice when the world starts, so a bear is always coming in.
93
+ *
94
+ * Since slice A2 (2026-10-12) the Elders and the Alpha land only at the far
95
+ * landing inside the hunters' pen (BEAR_FLOES_PEN_LANDING) and keep to it; the
96
+ * Standards (36) have the open beaches. The Standard that came in at the far
97
+ * landing rides in at the west beach instead, where the west Elder was.
54
98
  */
55
99
  export declare const BEAR_FLOES_BEARS: ReadonlyArray<{
56
100
  kind: BearFloesBearKind;