@dreadwood-types/types 0.1.202 → 0.1.204

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 (48) hide show
  1. package/dist/areaGates.d.ts +77 -3
  2. package/dist/areaGates.d.ts.map +1 -1
  3. package/dist/areaGates.js +231 -8
  4. package/dist/areaGates.js.map +1 -1
  5. package/dist/bearFloes.d.ts +44 -0
  6. package/dist/bearFloes.d.ts.map +1 -1
  7. package/dist/bearFloes.js +56 -4
  8. package/dist/bearFloes.js.map +1 -1
  9. package/dist/bounty.d.ts +4 -2
  10. package/dist/bounty.d.ts.map +1 -1
  11. package/dist/bounty.js +4 -2
  12. package/dist/bounty.js.map +1 -1
  13. package/dist/cellsBelow.d.ts +60 -0
  14. package/dist/cellsBelow.d.ts.map +1 -0
  15. package/dist/cellsBelow.js +52 -0
  16. package/dist/cellsBelow.js.map +1 -0
  17. package/dist/gateLevels.d.ts +19 -0
  18. package/dist/gateLevels.d.ts.map +1 -0
  19. package/dist/gateLevels.js +19 -0
  20. package/dist/gateLevels.js.map +1 -0
  21. package/dist/iceDepths.d.ts +12 -0
  22. package/dist/iceDepths.d.ts.map +1 -1
  23. package/dist/iceDepths.js +12 -0
  24. package/dist/iceDepths.js.map +1 -1
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/landmarks.d.ts +6 -3
  30. package/dist/landmarks.d.ts.map +1 -1
  31. package/dist/landmarks.js +8 -5
  32. package/dist/landmarks.js.map +1 -1
  33. package/dist/ogreFortress.d.ts +30 -1
  34. package/dist/ogreFortress.d.ts.map +1 -1
  35. package/dist/ogreFortress.js +28 -6
  36. package/dist/ogreFortress.js.map +1 -1
  37. package/dist/quests.d.ts.map +1 -1
  38. package/dist/quests.js +7 -0
  39. package/dist/quests.js.map +1 -1
  40. package/dist/storyQuests.d.ts +7 -2
  41. package/dist/storyQuests.d.ts.map +1 -1
  42. package/dist/storyQuests.js +91 -2
  43. package/dist/storyQuests.js.map +1 -1
  44. package/dist/westernEntrance.d.ts +1 -1
  45. package/dist/westernEntrance.d.ts.map +1 -1
  46. package/dist/westernEntrance.js +2 -1
  47. package/dist/westernEntrance.js.map +1 -1
  48. package/package.json +1 -1
@@ -18,8 +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;
21
+ export { GATE_PLACEHOLDER_41, GATE_PLACEHOLDER_BOSS, FROZEN_HALLWAY_COMBAT_LEVEL } from './gateLevels.js';
23
22
  /** Any skill a gate can ask a level of, besides Combat and Explorer (which have their own requirement kinds). */
24
23
  export type GateSkill = Exclude<StorySkill, 'explorer'>;
25
24
  export type GateRequirement = {
@@ -55,13 +54,58 @@ export type AreaGateAt = {
55
54
  styles?: readonly string[];
56
55
  stylePrefixes?: readonly string[];
57
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
+ };
58
84
  export type AreaGate = {
59
85
  id: string;
60
86
  /** What the sentence calls the place, capitalised: "The Spider Cave". */
61
87
  name: string;
62
88
  /** The place's own line, one sentence ending in a full stop: "Silk chokes the burrow, and something big moves in it." */
63
89
  flavour: string;
64
- 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
+ };
65
109
  requires: readonly GateRequirement[];
66
110
  /**
67
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
@@ -96,6 +140,8 @@ export type GatePlayerView = {
96
140
  * levels and meaning; only their wording moved to the standard sentence.
97
141
  */
98
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;
99
145
  export declare const AREA_GATE_BY_ID: Readonly<Record<string, AreaGate>>;
100
146
  /** The order requirements are checked and worded in (D3). */
101
147
  export declare const GATE_REQUIREMENT_ORDER: readonly ["combat", "quest", "explorer", "skill", "member", "item"];
@@ -119,6 +165,34 @@ export declare function gateRefusalText(gate: AreaGate, missing: readonly GateRe
119
165
  export declare function gateSealedLabel(missing: readonly GateRequirement[]): string;
120
166
  /** Every requirement, short, for the guide: "Combat 15, Explorer 5". */
121
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;
122
196
  /** The gate standing on an entity, or null. */
123
197
  export declare function areaGateForEntity(kind: string, style: string | undefined): AreaGate | null;
124
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
@@ -4,6 +4,11 @@ import { SPIDER_CAVE_MOUTH_STYLE, SPIDER_DEN_STYLE } from './spiderCave.js';
4
4
  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
+ 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';
7
12
  /**
8
13
  * The standard area gate (plan dreadwoods-backend/PLAN_1_TO_40.md section 5.2, decision D3 agreed by James 2026-10-12).
9
14
  *
@@ -21,8 +26,16 @@ import { DWARF_HOLD_PROP } from './dwarfHold.js';
21
26
  * - levels on gates are placeholders until the balance pass: they are the levels the game data already used, or
22
27
  * GATE_PLACEHOLDER_41 for 41+ content.
23
28
  */
24
- /** The band floor for 41+ content: the placeholder Combat level on any gate in front of it until the balance pass. */
25
- export const GATE_PLACEHOLDER_41 = 41;
29
+ export { GATE_PLACEHOLDER_41, GATE_PLACEHOLDER_BOSS, FROZEN_HALLWAY_COMBAT_LEVEL } from './gateLevels.js';
30
+ /** The four wing arches in the Frozen Shrine's walls (the Warden's lift is its own gate, below). */
31
+ const FROZEN_DEPTHS_WING_ARCHES = ['rune', 'hollow', 'ritual', 'lab'].map((id) => iceDepthsPortalStyle(ICE_DEPTHS_ROOMS[id].hubArch.facing, id));
32
+ /** What the gate sentence calls each relic the lift wants. */
33
+ const RELIC_LABELS = {
34
+ gatesealkey: 'the Gate Seal Key',
35
+ prisonchainhook: 'the Prison Chain Hook',
36
+ frostsigil: 'the Frost Sigil',
37
+ crystalphial: 'the Crystal Phial',
38
+ };
26
39
  /**
27
40
  * The gates, in the order the guide lists them. The five that were hand-coded in world.ts before 2026-10-12 keep their
28
41
  * levels and meaning; only their wording moved to the standard sentence.
@@ -35,6 +48,8 @@ export const AREA_GATES = [
35
48
  at: { kind: 'caveentrance', stylePrefixes: ['basecamp-', 'farside'] },
36
49
  requires: [{ combat: CAVE_ENTRANCE_COMBAT_LEVEL }, { explorer: CAVE_ENTRANCE_EXPLORER_LEVEL }],
37
50
  where: "the Rat Tunnel, through the Suspicious hole at Base Camp or the far side's door back in",
51
+ // The paper map's padlock on the Suspicious hole (area-gates-smoke checks it stands on a placed gate).
52
+ mapAt: { x: 717, z: 826 },
38
53
  badgeY: 3.4,
39
54
  },
40
55
  {
@@ -44,6 +59,7 @@ export const AREA_GATES = [
44
59
  at: { kind: 'caveentrance', styles: [SPIDER_CAVE_MOUTH_STYLE, SPIDER_DEN_STYLE] },
45
60
  requires: [{ explorer: SPIDER_CAVE_EXPLORER_LEVEL }],
46
61
  where: 'the Spider Cave, through the den in Spider Hollow or the old burrow on its east rim',
62
+ mapAt: { x: 659, z: 701 },
47
63
  badgeY: 3.2,
48
64
  },
49
65
  {
@@ -58,13 +74,42 @@ export const AREA_GATES = [
58
74
  {
59
75
  id: 'frozen-hallway',
60
76
  name: 'The Frozen Hallway',
61
- flavour: 'The sigil holds the stone shut; it wants a key cut from ice, and the Frozen Lake gives one up to the auger now and then.',
77
+ // No key since D1; Combat 40 since James, 2026-10-12 ("frozen dungeon is an end game area, there should absolutely be
78
+ // no one entering it below level 40"), reversing D1's Combat 20. Behind it is the Ice Prison (frost wolves 21-23 to
79
+ // glacial lurkers 38, to be rebalanced very hard for 40-49); every boss past it is behind the Depths gates at 50.
80
+ flavour: 'The sigil reads whoever touches it, and it will not part for anyone who could not fight their way back out.',
62
81
  at: { kind: 'runearch', styles: [FROZEN_HALLWAY_SEAL_STYLE] },
63
- requires: [{ item: FROZEN_KEY_KIND, label: 'a Frozen Key' }],
82
+ requires: [{ combat: FROZEN_HALLWAY_COMBAT_LEVEL }],
64
83
  outside: 'south',
84
+ where: 'the Frozen Hallway and the Ice Prison beyond it, behind the sealed rune arch on the Frozen Plateau',
85
+ mapAt: { x: 21, z: 169 },
86
+ badgeY: 4.4,
87
+ },
88
+ {
89
+ // D1 (2026-10-12): the Frozen Key moved here from the Hallway, paired with Combat (keys trade, F5). Each arch leads to
90
+ // a warden, a boss, so since James's boss rule the same day it asks the boss placeholder (50), not 41. The Ice Troll
91
+ // (45, not a boss) stands in the Shattered Hollow behind one of these arches, so it is behind 50 too.
92
+ id: 'frozen-depths',
93
+ name: 'The Frozen Depths',
94
+ flavour: 'The arch drinks the warmth out of your hand and gives nothing back.',
95
+ at: { kind: 'runearch', styles: FROZEN_DEPTHS_WING_ARCHES },
96
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }, { item: FROZEN_KEY_KIND, label: 'a Frozen Key' }],
97
+ guards: 62,
98
+ where: "the Frozen Depths' four wing rooms, through the rune arches in the Frozen Shrine's walls",
99
+ badgeY: 4.4,
100
+ },
101
+ {
102
+ id: 'frozen-depths-lift',
103
+ name: "The Warden's Lift",
104
+ flavour: "Four relics wake it, one from each of the Depths' wardens.",
105
+ at: { kind: 'runearch', styles: [iceDepthsPortalStyle('n', 'core', true)] },
106
+ requires: [
107
+ { combat: GATE_PLACEHOLDER_BOSS },
108
+ ...Object.keys(RELIC_LABELS).map((relic) => ({ item: relic, label: RELIC_LABELS[relic] })),
109
+ { item: FROZEN_KEY_KIND, label: 'a Frozen Key' },
110
+ ],
65
111
  guards: 70,
66
- openItem: 'A5: behind it are the Ice Prison (21-38), the Ice Troll (45) and the Frozen Depths portals (52-70), so a Frozen Key alone (keys trade) lets anyone at 41+ content. A5 opens the Hallway at Combat 20 with no key (D1) and moves the key and Combat 41+ onto the Depths portals and lift.',
67
- where: 'the Frozen Hallway, behind the sealed rune arch on the Frozen Plateau',
112
+ where: "the Final Core, down the Warden's lift at the Frozen Shrine's north end",
68
113
  badgeY: 4.4,
69
114
  },
70
115
  {
@@ -77,7 +122,120 @@ export const AREA_GATES = [
77
122
  where: 'the Great Stair at the east end of the Dwarf Hold, on the Western Line',
78
123
  badgeY: 4.6,
79
124
  },
125
+ // Slice A2 (decision D2, agreed by James 2026-10-12): the three 41+ fights that were reachable on foot with no gate.
126
+ {
127
+ id: 'blood-lake',
128
+ name: 'The Blood Lake',
129
+ flavour: "The ward cut into the ring's old pillars turns back anyone the dragons could burn in a breath.",
130
+ // Both openings in the crag ring's south arc: the pillared gap the path comes in by, and the banks where the lake's
131
+ // branch runs out to the river (the ring skips water, so its banks were a second way in). No terrain work.
132
+ walk: {
133
+ bands: [
134
+ {
135
+ minX: DRAGON_GATE_MIN_X - 1,
136
+ maxX: DRAGON_GATE_MAX_X,
137
+ minZ: dragonRingSouthZ(DRAGON_GATE_PATH_X) - 1,
138
+ maxZ: dragonRingSouthZ(DRAGON_GATE_PATH_X) + 1,
139
+ },
140
+ {
141
+ minX: DRAGON_RIVER_GAP_MIN_X - 1,
142
+ maxX: DRAGON_RIVER_GAP_MAX_X + 4,
143
+ minZ: dragonRingSouthZ(DRAGON_RIVER_GAP_MAX_X) - 2,
144
+ maxZ: dragonRingSouthZ(DRAGON_RIVER_GAP_MAX_X) + 2,
145
+ },
146
+ ],
147
+ inside: { x: DRAGON_GATE_PATH_X, z: dragonRingSouthZ(DRAGON_GATE_PATH_X) - 8 },
148
+ outside: { x: DRAGON_GATE_PATH_X, z: dragonRingSouthZ(DRAGON_GATE_PATH_X) + 4 },
149
+ },
150
+ // Every dragon is a boss (James, 2026-10-12: no boss below the boss placeholder), and the ring holds only dragons.
151
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
152
+ // The dragons roll 50-54 (backend npcs.ts DRAGON_LEVEL).
153
+ guards: 54,
154
+ where: "the Blood Lake, through the pillared gap in the dragons' crag ring",
155
+ badgeY: 3.2,
156
+ },
157
+ {
158
+ id: 'ogre-fortress',
159
+ name: 'The Ogre Fortress',
160
+ flavour: 'The Ironjaw ogres have dragged their gate shut, and they open it only to someone fit to face their chief.',
161
+ walk: {
162
+ bands: [OGRE_GATE_BAND],
163
+ inside: { x: OGRE_CHIEF.x, z: OGRE_CHIEF.z + 2 },
164
+ outside: { x: OGRE_FORTRESS_CX, z: OGRE_GATE_Z + 5 },
165
+ },
166
+ // The yard is the Ironjaw Chief's, a boss: the boss placeholder (James, 2026-10-12); his two guards are 38.
167
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
168
+ // The Ironjaw Chief is level 48 (backend npcs.ts OGRE_PROFILES); his two yard guards are 38.
169
+ guards: 48,
170
+ where: 'the Ogre Fortress, through its palisade gate (the ogres at the two outposts outside the logs are open to all)',
171
+ badgeY: 3.4,
172
+ },
173
+ {
174
+ id: 'bear-floes-pen',
175
+ name: "The hunters' pen",
176
+ 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.',
177
+ walk: {
178
+ bands: [BEAR_FLOES_PEN_GATE],
179
+ inside: { x: BEAR_FLOES_PEN.gateX, z: BEAR_FLOES_PEN.southZ - 6 },
180
+ outside: { x: BEAR_FLOES_PEN.gateX, z: BEAR_FLOES_PEN.southZ + 3 },
181
+ },
182
+ requires: [{ combat: GATE_PLACEHOLDER_41 }],
183
+ // The Elder Polar Bears are 44 and the Alpha 52 (backend npcs.ts POLAR_BEAR_PROFILES).
184
+ guards: 52,
185
+ where: "the hunters' pen at the east end of the Bear Floes, where the Elder Polar Bears and the Alpha come ashore",
186
+ badgeY: 3,
187
+ },
188
+ // The boss fight gates (James, 2026-10-12: Combat 40-49 must "definitely not be able to attack bosses"): every 41+ boss
189
+ // at the boss placeholder, on the fight itself as well as on the door in front of its ground. Non-boss 41+ fights (the
190
+ // Elder Polar Bears, the Ice Troll) stay at 41 or behind a boss door.
191
+ {
192
+ id: 'boss-dragons',
193
+ name: 'The fight with a dragon',
194
+ flavour: 'One breath would burn you where you stand.',
195
+ fight: { npcKinds: ['dragon'] },
196
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
197
+ guards: 54,
198
+ where: 'the four dragons of the Blood Lake',
199
+ badge: false,
200
+ },
201
+ {
202
+ id: 'boss-ironjaw-chief',
203
+ name: 'The fight with the Ironjaw Chief',
204
+ flavour: 'He does not lower his club to anyone untested.',
205
+ fight: { npcKinds: ['ironjawchief'] },
206
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
207
+ guards: 48,
208
+ where: 'the Ironjaw Chief in the Ogre Fortress',
209
+ badge: false,
210
+ },
211
+ {
212
+ id: 'boss-polar-bear-alpha',
213
+ name: 'The fight with the Polar Bear Alpha',
214
+ flavour: 'It would tear through you before you landed a blow.',
215
+ fight: { npcKinds: ['polarbearalpha'] },
216
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
217
+ guards: 52,
218
+ where: "the Polar Bear Alpha in the Bear Floes' hunters' pen",
219
+ badge: false,
220
+ },
221
+ {
222
+ id: 'boss-depths-wardens',
223
+ name: "The fight with the Frozen Depths' wardens",
224
+ flavour: 'The cold around them would stop your heart before your blade arrived.',
225
+ fight: { npcKinds: ['frostalchemist', 'frostwarden', 'bonechillyeti', 'icelich', 'glacialbehemoth'] },
226
+ requires: [{ combat: GATE_PLACEHOLDER_BOSS }],
227
+ guards: 70,
228
+ where: "the Frozen Depths' wardens (the Frost Alchemist, the Frost Warden, the Bonechill Yeti, the Ice Lich and the Glacial Behemoth)",
229
+ badge: false,
230
+ },
80
231
  ];
232
+ /** The boss fight gate on an NPC kind (`fight`), or null for an ordinary creature. */
233
+ export function bossGateForKind(kind) {
234
+ for (const gate of AREA_GATES)
235
+ if (gate.fight?.npcKinds.includes(kind))
236
+ return gate;
237
+ return null;
238
+ }
81
239
  export const AREA_GATE_BY_ID = Object.fromEntries(AREA_GATES.map((g) => [g.id, g]));
82
240
  /** The order requirements are checked and worded in (D3). */
83
241
  export const GATE_REQUIREMENT_ORDER = ['combat', 'quest', 'explorer', 'skill', 'member', 'item'];
@@ -171,9 +329,51 @@ export function gateSealedLabel(missing) {
171
329
  export function gateRequirementsShort(gate) {
172
330
  return [...gate.requires].sort((a, b) => rank(a) - rank(b)).map(gateRequirementShort).join(', ');
173
331
  }
332
+ /**
333
+ * Every requirement with whether it is met, in the D3 order: the examine list ("Combat level 41" with a tick or a
334
+ * cross). A coming quest is never met.
335
+ */
336
+ export function gateRequirementChecks(gate, player) {
337
+ return [...gate.requires]
338
+ .sort((a, b) => rank(a) - rank(b))
339
+ .map((req) => ({ text: gateRequirementText(req).replace(/, which is not in the game yet$/, ' (not in the game yet)'), met: gateRequirementMet(req, player) }));
340
+ }
341
+ // ---------------------------------------------------------------------------------------------------------------------
342
+ // Walk gates (slice A2)
343
+ export const WALK_GATES = AREA_GATES.filter((g) => !!g.walk);
344
+ const inBox = (box, x, z) => x >= box.minX && x <= box.maxX && z >= box.minZ && z <= box.maxZ;
345
+ /** Whether a tile is on one of a walk gate's bands. */
346
+ export function onWalkGateBand(gate, x, z) {
347
+ return !!gate.walk?.bands.some((b) => inBox(b, x, z));
348
+ }
349
+ /** The walk gate whose band holds a tile, or null. */
350
+ export function walkGateAt(x, z) {
351
+ for (const gate of WALK_GATES)
352
+ if (onWalkGateBand(gate, x, z))
353
+ return gate;
354
+ return null;
355
+ }
356
+ /** Every band tile of a walk gate. */
357
+ export function walkGateBandTiles(gate) {
358
+ const out = [];
359
+ for (const b of gate.walk?.bands ?? []) {
360
+ for (let z = b.minZ; z <= b.maxZ; z++)
361
+ for (let x = b.minX; x <= b.maxX; x++)
362
+ out.push({ x, z });
363
+ }
364
+ return out;
365
+ }
366
+ /** Where a walk gate's padlocks hang over the path: the middle of each band. */
367
+ export function walkGateBadgeTiles(gate) {
368
+ return (gate.walk?.bands ?? []).map((b) => ({ x: Math.round((b.minX + b.maxX) / 2), z: Math.round((b.minZ + b.maxZ) / 2) }));
369
+ }
370
+ /** Where the paper map draws a gate's padlock, or null for none. */
371
+ export function areaGateMapTile(gate) {
372
+ return gate.mapAt ?? walkGateBadgeTiles(gate)[0] ?? null;
373
+ }
174
374
  /** Whether a style matches a gate's `at`. */
175
375
  function atMatches(at, kind, style) {
176
- if (kind !== at.kind)
376
+ if (!at || kind !== at.kind)
177
377
  return false;
178
378
  const s = style ?? '';
179
379
  if (at.styles?.includes(s))
@@ -220,8 +420,31 @@ export function areaGateProblems(gates = AREA_GATES) {
220
420
  const ranks = gate.requires.map(rank);
221
421
  if (ranks.some((r, i) => i > 0 && r < ranks[i - 1]))
222
422
  problems.push(`${gate.id}: requirements out of the D3 order (Combat, quest, Explorer, skill, membership, key)`);
223
- if (!gate.at.styles?.length && !gate.at.stylePrefixes?.length)
423
+ if (!gate.at && !gate.walk && !gate.fight?.npcKinds.length)
424
+ problems.push(`${gate.id}: a gate stands on a door or prop (at), on a path (walk) or on a boss fight (fight)`);
425
+ if (gate.fight && !gate.requires.some((r) => 'combat' in r && r.combat >= GATE_PLACEHOLDER_BOSS))
426
+ problems.push(`${gate.id}: a boss fight asks for Combat ${GATE_PLACEHOLDER_BOSS}+`);
427
+ if (gate.at && !gate.at.styles?.length && !gate.at.stylePrefixes?.length)
224
428
  problems.push(`${gate.id}: no styles to stand on`);
429
+ if (gate.walk) {
430
+ if (!gate.walk.bands.length)
431
+ problems.push(`${gate.id}: a walk gate has a band`);
432
+ for (const b of gate.walk.bands) {
433
+ if (b.minX > b.maxX || b.minZ > b.maxZ)
434
+ problems.push(`${gate.id}: an empty band ${JSON.stringify(b)}`);
435
+ if ((b.maxX - b.minX + 1) * (b.maxZ - b.minZ + 1) > 160)
436
+ problems.push(`${gate.id}: a band over 160 tiles (a gate, not a wall)`);
437
+ }
438
+ const { inside, outside } = gate.walk;
439
+ if (onWalkGateBand(gate, inside.x, inside.z) || onWalkGateBand(gate, outside.x, outside.z))
440
+ problems.push(`${gate.id}: inside and outside stand off the bands`);
441
+ for (const other of gates) {
442
+ if (other === gate || !other.walk)
443
+ continue;
444
+ if (walkGateBandTiles(gate).some((t) => onWalkGateBand(other, t.x, t.z)))
445
+ problems.push(`${gate.id}: its band overlaps ${other.id}'s`);
446
+ }
447
+ }
225
448
  const combat = gate.requires.find((r) => 'combat' in r)?.combat ?? 0;
226
449
  const keyOnly = gate.requires.every((r) => 'item' in r);
227
450
  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":"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"}
1
+ {"version":3,"file":"areaGates.js","sourceRoot":"","sources":["../src/areaGates.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"bearFloes.d.ts","sourceRoot":"","sources":["../src/bearFloes.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAkBtD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKrG,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;CAA2C,CAAC;AAE7E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,iEAAiE;AACjE,eAAO,MAAM,eAAe;;;CAA6B,CAAC;AAC1D,8FAA8F;AAC9F,eAAO,MAAM,eAAe;;;CAA6B,CAAC;AAC1D,mEAAmE;AACnE,eAAO,MAAM,eAAe;;;CAA0C,CAAC;AACvE,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AAEpE,uFAAuF;AACvF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CASnE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAQ/H,CAAC;AAKF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOnG;AAED,oEAAoE;AACpE,eAAO,MAAM,eAAe;;;;;CAAgF,CAAC;AAE7G,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"bearFloes.d.ts","sourceRoot":"","sources":["../src/bearFloes.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAkBtD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKrG,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;CAA2C,CAAC;AAE7E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,iEAAiE;AACjE,eAAO,MAAM,eAAe;;;CAA6B,CAAC;AAC1D,8FAA8F;AAC9F,eAAO,MAAM,eAAe;;;CAA6B,CAAC;AAC1D,mEAAmE;AACnE,eAAO,MAAM,eAAe;;;CAA0C,CAAC;AACvE,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AAEpE,uFAAuF;AACvF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CASnE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;;;;;;CAA4E,CAAC;AACxG,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED,kDAAkD;AAClD,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAIX;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAWtF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAQ/H,CAAC;AAKF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOnG;AAED,oEAAoE;AACpE,eAAO,MAAM,eAAe;;;;;CAAgF,CAAC;AAE7G,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,OAAO,CAAC"}
package/dist/bearFloes.js CHANGED
@@ -86,19 +86,71 @@ export const BEAR_FLOES_PATH = [
86
86
  { x: 224, z: NORTH_SHIFT + 27 },
87
87
  { x: 231, z: NORTH_SHIFT + 30 },
88
88
  ];
89
+ /**
90
+ * The hunters' pen (slice A2, decision D2 agreed by James 2026-10-12): the far
91
+ * landing at the east end of the coast (landing 3), staked off from the rest
92
+ * of the headland. The Elders (44) and the Alpha (52) come ashore only there,
93
+ * so a level-36 hunter on the near beaches never meets them; the pen's gate is
94
+ * a standard walk gate (areaGates.ts 'bear-floes-pen', Combat 41 placeholder).
95
+ *
96
+ * The stakes run south from the coast down column `westX`, then east along row
97
+ * `southZ` to the sea, leaving the gate's three tiles open (blocked for anyone
98
+ * the gate refuses, and for every bear).
99
+ */
100
+ export const BEAR_FLOES_PEN = { westX: 188, southZ: 43, eastX: 205, gateX: 196, gateHalfW: 1 };
101
+ /** The landing the pen keeps (BEAR_FLOES_LANDINGS index). */
102
+ export const BEAR_FLOES_PEN_LANDING = 3;
103
+ /** Inside the stakes: east of the west line, north of the south line, on land. */
104
+ export function inBearFloesPen(x, z) {
105
+ const pen = BEAR_FLOES_PEN;
106
+ return x > pen.westX && x <= BEAR_FLOES_MAX_X && z < pen.southZ && z >= bearFloesCoastZ(x);
107
+ }
108
+ /** The pen gate's tiles, the walk gate's band. */
109
+ export const BEAR_FLOES_PEN_GATE = {
110
+ minX: BEAR_FLOES_PEN.gateX - BEAR_FLOES_PEN.gateHalfW,
111
+ maxX: BEAR_FLOES_PEN.gateX + BEAR_FLOES_PEN.gateHalfW,
112
+ minZ: BEAR_FLOES_PEN.southZ,
113
+ maxZ: BEAR_FLOES_PEN.southZ,
114
+ };
115
+ let penStakes = null;
116
+ /**
117
+ * Every stake of the pen, with its face in degrees (the camp palisade's `palisadesnow-face<deg>`: 180 on a line south of
118
+ * 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
119
+ * gate left open.
120
+ */
121
+ export function bearFloesPenStakes() {
122
+ if (penStakes)
123
+ return penStakes;
124
+ const pen = BEAR_FLOES_PEN;
125
+ const out = [];
126
+ for (let z = bearFloesCoastZ(pen.westX); z < pen.southZ; z++)
127
+ out.push({ x: pen.westX, z, face: 90 });
128
+ for (let x = pen.westX; x <= pen.eastX; x++) {
129
+ if (Math.abs(x - pen.gateX) <= pen.gateHalfW)
130
+ continue;
131
+ out.push({ x, z: pen.southZ, face: 180 });
132
+ }
133
+ penStakes = out;
134
+ return out;
135
+ }
89
136
  /**
90
137
  * The bears, each with its home ground (where it roams once ashore) and the
91
138
  * beach its floe brings it in to. Two of the Standards are still out on the
92
139
  * ice when the world starts, so a bear is always coming in.
140
+ *
141
+ * Since slice A2 (2026-10-12) the Elders and the Alpha land only at the far
142
+ * landing inside the hunters' pen (BEAR_FLOES_PEN_LANDING) and keep to it; the
143
+ * Standards (36) have the open beaches. The Standard that came in at the far
144
+ * landing rides in at the west beach instead, where the west Elder was.
93
145
  */
94
146
  export const BEAR_FLOES_BEARS = [
95
147
  { kind: 'polarbear', x: 151, z: 37, landing: 0 },
96
148
  { kind: 'polarbear', x: 165, z: 35, landing: 1, atSea: true },
97
149
  { kind: 'polarbear', x: 184, z: 33, landing: 2 },
98
- { kind: 'polarbear', x: 196, z: 37, landing: 3, atSea: true },
99
- { kind: 'polarbearelder', x: 141, z: 45, landing: 0 },
100
- { kind: 'polarbearelder', x: 203, z: 46, landing: 3 },
101
- { kind: 'polarbearalpha', x: 176, z: 57, landing: 2 },
150
+ { kind: 'polarbear', x: 141, z: 45, landing: 0, atSea: true },
151
+ { kind: 'polarbearelder', x: 191, z: 38, landing: BEAR_FLOES_PEN_LANDING },
152
+ { kind: 'polarbearelder', x: 200, z: 40, landing: BEAR_FLOES_PEN_LANDING },
153
+ { kind: 'polarbearalpha', x: 196, z: 36, landing: BEAR_FLOES_PEN_LANDING },
102
154
  ];
103
155
  /** Tiles between the lanes of two bears that come in to the same beach. */
104
156
  const LANE_SPACING = 5;