@dreadwood-types/types 0.1.52 → 0.1.54

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.
@@ -0,0 +1,87 @@
1
+ import { DEADLANDS_MIN_X, DEADLANDS_MIN_Z } from './zones.js';
2
+ /**
3
+ * The Crypt Grounds (James's Dreadwoods pack, 2026-09-26: the crypt grounds
4
+ * painting): the Crypt Knight's graveyard in the quiet south-west of the
5
+ * woods, past the crook camp.
6
+ *
7
+ * A rectangle railed in black iron between dark stone piers, the gate a gap
8
+ * in the south side between two green-lantern posts. A path runs up from it
9
+ * to a round plaza of flagstones where the Crypt Knight stands, and on to the
10
+ * steps of the mausoleum set into the north side. Headstones, stone coffins
11
+ * and open graves full of skulls fill the ground either side; the grave hounds
12
+ * prowl it. Geometry here; the backend's cryptGrounds.ts dresses it; the zone
13
+ * is DREADWOODS_NPC_ZONES 'crypt-grounds'.
14
+ */
15
+ export const CRYPT_CX = DEADLANDS_MIN_X + 80;
16
+ export const CRYPT_CZ = DEADLANDS_MIN_Z + 384;
17
+ /**
18
+ * The zone: an ellipse round the whole railed rectangle, corners included
19
+ * (the hounds hunt anyone inside the railings), and a margin of ash.
20
+ */
21
+ export const CRYPT_RX = 26;
22
+ export const CRYPT_RZ = 18;
23
+ /** The railing's rectangle: this far from the centre either way. */
24
+ export const CRYPT_HALF_X = 18;
25
+ export const CRYPT_HALF_Z = 12;
26
+ /** The gate gap in the south railing: this many tiles either side of the centre line. */
27
+ export const CRYPT_GATE_HALF_W = 2;
28
+ export const CRYPT_GATE_Z = CRYPT_CZ + CRYPT_HALF_Z;
29
+ /** The plaza the knight stands on, and its radius. */
30
+ export const CRYPT_PLAZA = { x: CRYPT_CX, z: CRYPT_CZ - 2, r: 4.3 };
31
+ /** The mausoleum (7 x 5) set into the north railing, its steps facing south. */
32
+ export const CRYPT_MAUSOLEUM = { x: CRYPT_CX, z: CRYPT_CZ - CRYPT_HALF_Z + 1 };
33
+ /** Where the Crypt Knight stands: the middle of the plaza, looking down the path to the gate. */
34
+ export const CRYPT_KNIGHT = { x: CRYPT_PLAZA.x, z: CRYPT_PLAZA.z };
35
+ /** The grave hounds' posts round the ground (crypt-grounds-smoke.ts pins them clear and reachable). */
36
+ export const CRYPT_HOUND_SPAWNS = [
37
+ { x: CRYPT_CX - 7, z: CRYPT_CZ + 2 },
38
+ { x: CRYPT_CX + 7, z: CRYPT_CZ + 1 },
39
+ { x: CRYPT_CX - 10, z: CRYPT_CZ - 6 },
40
+ { x: CRYPT_CX + 10, z: CRYPT_CZ - 5 },
41
+ ];
42
+ let fence = null;
43
+ /**
44
+ * The railing: 3-tile sections laid end to end round the rectangle, facing
45
+ * out. The south side leaves the gate gap; the north side stops short of the
46
+ * mausoleum, a lantern post filling each gap beside it and a boulder each
47
+ * north corner (the dresser places those).
48
+ */
49
+ export function cryptFencePieces() {
50
+ if (fence)
51
+ return fence;
52
+ const out = [];
53
+ for (const d of [4, 7, 10, 13, 16]) {
54
+ for (const s of [-1, 1])
55
+ out.push({ x: CRYPT_CX + s * d, z: CRYPT_CZ + CRYPT_HALF_Z, facing: 's' });
56
+ }
57
+ for (const d of [6, 9, 12, 15]) {
58
+ for (const s of [-1, 1])
59
+ out.push({ x: CRYPT_CX + s * d, z: CRYPT_CZ - CRYPT_HALF_Z, facing: 'n' });
60
+ }
61
+ for (const dz of [-10, -7, -4, -1, 2, 5, 8, 11]) {
62
+ out.push({ x: CRYPT_CX - CRYPT_HALF_X, z: CRYPT_CZ + dz, facing: 'w' });
63
+ out.push({ x: CRYPT_CX + CRYPT_HALF_X, z: CRYPT_CZ + dz, facing: 'e' });
64
+ }
65
+ fence = out;
66
+ return out;
67
+ }
68
+ /** The tiles the railing covers (each section three along its run). */
69
+ export function onCryptFence(x, z) {
70
+ return cryptFencePieces().some((p) => p.facing === 's' || p.facing === 'n'
71
+ ? p.z === z && Math.abs(p.x - x) <= 1
72
+ : p.x === x && Math.abs(p.z - z) <= 1);
73
+ }
74
+ /** Inside the railing (the gate gap counts as inside). */
75
+ export function inCryptGrounds(x, z) {
76
+ return Math.abs(x - CRYPT_CX) < CRYPT_HALF_X && Math.abs(z - CRYPT_CZ) < CRYPT_HALF_Z;
77
+ }
78
+ /** The path: from outside the gate up to the plaza and on to the mausoleum's steps, three wide. */
79
+ export function onCryptPath(x, z) {
80
+ return Math.abs(x - CRYPT_CX) <= 1 && z >= CRYPT_MAUSOLEUM.z + 3 && z <= CRYPT_GATE_Z + 4;
81
+ }
82
+ export function onCryptPlaza(x, z) {
83
+ const dx = x - CRYPT_PLAZA.x;
84
+ const dz = z - CRYPT_PLAZA.z;
85
+ return dx * dx + dz * dz <= CRYPT_PLAZA.r * CRYPT_PLAZA.r;
86
+ }
87
+ //# sourceMappingURL=cryptGrounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cryptGrounds.js","sourceRoot":"","sources":["../src/cryptGrounds.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { NpcKind } from './constants.js';
14
14
  * aggro pass read the bounds. Adding a zone is an entry here, a theme in the
15
15
  * dresser, and a den style if it has one.
16
16
  */
17
- export type DreadwoodsNpcZoneId = 'spider-hollow' | 'broken-road' | 'blood-lake';
17
+ export type DreadwoodsNpcZoneId = 'spider-hollow' | 'broken-road' | 'blood-lake' | 'ogre-fortress' | 'crypt-grounds' | 'rotwood-grove' | 'blood-mire';
18
18
  export type DreadwoodsNpcZone = {
19
19
  id: DreadwoodsNpcZoneId;
20
20
  /** Discovery card and guide label. */
@@ -53,6 +53,18 @@ export type DreadwoodsNpcZone = {
53
53
  z: number;
54
54
  facing: DenFacing;
55
55
  };
56
+ /**
57
+ * The one who rules the zone, spawned beside its population (the Ogre
58
+ * Fortress's chief): a kind of its own, where it stands and the tile it
59
+ * looks toward.
60
+ */
61
+ boss?: {
62
+ kind: NpcKind;
63
+ x: number;
64
+ z: number;
65
+ faceX: number;
66
+ faceZ: number;
67
+ };
56
68
  };
57
69
  export type DenFacing = 'north' | 'south' | 'east' | 'west';
58
70
  /** Unit step out of a den mouth in the direction it faces. */
@@ -1 +1 @@
1
- {"version":3,"file":"dreadwoodsZones.d.ts","sourceRoot":"","sources":["../src/dreadwoodsZones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,mBAAmB,CAAC;IACxB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D;;;;;OAKG;IACH,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAK3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK9G;AAsDD,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAuC5D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,mBAAmB,GAAG,iBAAiB,CAI5E;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI1F;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAKlF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,GACtB,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBjD"}
1
+ {"version":3,"file":"dreadwoodsZones.d.ts","sourceRoot":"","sources":["../src/dreadwoodsZones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAsB9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,YAAY,CAAC;AAEtJ,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,mBAAmB,CAAC;IACxB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D;;;;;OAKG;IACH,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IACjE;;;;OAIG;IACH,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAK3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK9G;AAsDD,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAuG5D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,mBAAmB,GAAG,iBAAiB,CAI5E;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI1F;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAKlF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,GACtB,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBjD"}
@@ -1,5 +1,9 @@
1
1
  import { DEADLANDS_MAX_X, DEADLANDS_MAX_Z } from './zones.js';
2
2
  import { DRAGON_RING_CX, DRAGON_RING_CZ, DRAGON_RING_RX, DRAGON_RING_RZ, DRAGON_SPAWNS, } from './bloodRiver.js';
3
+ import { OGRE_CHIEF, OGRE_FORTRESS_CX, OGRE_FORTRESS_CZ, OGRE_FORTRESS_RX, OGRE_FORTRESS_RZ, OGRE_FORTRESS_SPAWNS, OGRE_GATE_Z, } from './ogreFortress.js';
4
+ import { CRYPT_CX, CRYPT_CZ, CRYPT_GATE_Z, CRYPT_HOUND_SPAWNS, CRYPT_KNIGHT, CRYPT_RX, CRYPT_RZ } from './cryptGrounds.js';
5
+ import { GROVE_CX, GROVE_CZ, GROVE_ENT, GROVE_PATH_Z1, GROVE_RX, GROVE_RZ, GROVE_WOLF_SPAWNS } from './rotwoodGrove.js';
6
+ import { MIRE_BOAR_SPAWNS, MIRE_CX, MIRE_CZ, MIRE_ELEMENTAL, MIRE_RX, MIRE_RZ } from './bloodMire.js';
3
7
  /** Unit step out of a den mouth in the direction it faces. */
4
8
  export function denFacingStep(facing) {
5
9
  if (facing === 'north')
@@ -110,6 +114,70 @@ export const DREADWOODS_NPC_ZONES = [
110
114
  npc: { kind: 'dragon', count: DRAGON_SPAWNS.length },
111
115
  spawns: DRAGON_SPAWNS,
112
116
  },
117
+ /**
118
+ * The Ogre Fortress: the Ironjaw ogres' palisaded yard north of the Blood
119
+ * Lake, the chief between the watchtowers at the back. Geometry in
120
+ * ogreFortress.ts; the backend's ogreFortress.ts dresses it.
121
+ */
122
+ {
123
+ id: 'ogre-fortress',
124
+ label: 'The Ogre Fortress',
125
+ cx: OGRE_FORTRESS_CX,
126
+ cz: OGRE_FORTRESS_CZ,
127
+ rx: OGRE_FORTRESS_RX,
128
+ rz: OGRE_FORTRESS_RZ,
129
+ npc: { kind: 'ironjawogre', count: OGRE_FORTRESS_SPAWNS.length },
130
+ spawns: OGRE_FORTRESS_SPAWNS,
131
+ boss: { kind: 'ironjawchief', x: OGRE_CHIEF.x, z: OGRE_CHIEF.z, faceX: OGRE_FORTRESS_CX, faceZ: OGRE_GATE_Z },
132
+ },
133
+ /**
134
+ * The Crypt Grounds: the Crypt Knight's railed graveyard in the south-west,
135
+ * his grave hounds about it. Geometry in cryptGrounds.ts; the backend's
136
+ * cryptGrounds.ts dresses it.
137
+ */
138
+ {
139
+ id: 'crypt-grounds',
140
+ label: 'The Crypt Grounds',
141
+ cx: CRYPT_CX,
142
+ cz: CRYPT_CZ,
143
+ rx: CRYPT_RX,
144
+ rz: CRYPT_RZ,
145
+ npc: { kind: 'gravehound', count: CRYPT_HOUND_SPAWNS.length },
146
+ spawns: CRYPT_HOUND_SPAWNS,
147
+ boss: { kind: 'cryptknight', x: CRYPT_KNIGHT.x, z: CRYPT_KNIGHT.z, faceX: CRYPT_CX, faceZ: CRYPT_GATE_Z },
148
+ },
149
+ /**
150
+ * The Rotwood Grove: the Rotwood Ent's clearing in the north-west, moss
151
+ * wolves about it. Geometry in rotwoodGrove.ts; the backend's
152
+ * rotwoodGrove.ts dresses it.
153
+ */
154
+ {
155
+ id: 'rotwood-grove',
156
+ label: 'The Rotwood Grove',
157
+ cx: GROVE_CX,
158
+ cz: GROVE_CZ,
159
+ rx: GROVE_RX,
160
+ rz: GROVE_RZ,
161
+ npc: { kind: 'mosswolf', count: GROVE_WOLF_SPAWNS.length },
162
+ spawns: GROVE_WOLF_SPAWNS,
163
+ boss: { kind: 'rotwoodent', x: GROVE_ENT.x, z: GROVE_ENT.z, faceX: GROVE_CX, faceZ: GROVE_PATH_Z1 },
164
+ },
165
+ /**
166
+ * The Blood Mire: the Blood Mire Elemental on its hump in the middle of the
167
+ * pools north of the river, bristle boars wallowing round it. Geometry in
168
+ * bloodMire.ts; the backend's bloodMire.ts dresses it.
169
+ */
170
+ {
171
+ id: 'blood-mire',
172
+ label: 'The Blood Mire',
173
+ cx: MIRE_CX,
174
+ cz: MIRE_CZ,
175
+ rx: MIRE_RX,
176
+ rz: MIRE_RZ,
177
+ npc: { kind: 'bristleboar', count: MIRE_BOAR_SPAWNS.length },
178
+ spawns: MIRE_BOAR_SPAWNS,
179
+ boss: { kind: 'bloodmireelemental', x: MIRE_ELEMENTAL.x, z: MIRE_ELEMENTAL.z, faceX: MIRE_CX, faceZ: MIRE_CZ + 12 },
180
+ },
113
181
  ];
114
182
  export function dreadwoodsNpcZone(id) {
115
183
  const zone = DREADWOODS_NPC_ZONES.find((z) => z.id === id);
@@ -1 +1 @@
1
- {"version":3,"file":"dreadwoodsZones.js","sourceRoot":"","sources":["../src/dreadwoodsZones.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dreadwoodsZones.js","sourceRoot":"","sources":["../src/dreadwoodsZones.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,10 @@ export * from './blacksmithing.js';
26
26
  export * from './snow.js';
27
27
  export * from './adventure.js';
28
28
  export * from './brokenRoad.js';
29
+ export * from './ogreFortress.js';
30
+ export * from './cryptGrounds.js';
31
+ export * from './rotwoodGrove.js';
32
+ export * from './bloodMire.js';
29
33
  export * from './bloodRiver.js';
30
34
  export * from './capital.js';
31
35
  export * from './harbour.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -26,6 +26,10 @@ export * from './blacksmithing.js';
26
26
  export * from './snow.js';
27
27
  export * from './adventure.js';
28
28
  export * from './brokenRoad.js';
29
+ export * from './ogreFortress.js';
30
+ export * from './cryptGrounds.js';
31
+ export * from './rotwoodGrove.js';
32
+ export * from './bloodMire.js';
29
33
  export * from './bloodRiver.js';
30
34
  export * from './capital.js';
31
35
  export * from './harbour.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The Ogre Fortress (James's Dreadwoods pack, 2026-09-26: the ogre fortress
3
+ * painting, and "make the ogres too"): the Ironjaw ogres' stronghold north of
4
+ * the Blood Lake, between it and the Capital's gate.
5
+ *
6
+ * A palisade of sharpened logs rings a trodden dirt yard. The way in is a gap
7
+ * on the south side between two banner posts with braziers at their feet,
8
+ * looking down to the lake; a track runs from it up the yard to the chief,
9
+ * who stands between two timber watchtowers built into the north side of the
10
+ * palisade. Round the yard: cages, a cook fire, meat racks, a cart, crates,
11
+ * barrels and what is left of those who came before. Six ogres keep the yard
12
+ * and the chief keeps the ogres.
13
+ *
14
+ * The geometry lives here so the server's dresser (the backend's
15
+ * ogreFortress.ts), the smoke test and the client's discovery all read the
16
+ * same tiles. The zone itself is DREADWOODS_NPC_ZONES 'ogre-fortress'.
17
+ */
18
+ export declare const OGRE_FORTRESS_CX: number;
19
+ export declare const OGRE_FORTRESS_CZ: number;
20
+ /** The zone: the yard and a margin of ash round the logs, where the ogres still come for you. */
21
+ export declare const OGRE_FORTRESS_RX = 24;
22
+ export declare const OGRE_FORTRESS_RZ = 19;
23
+ /** The palisade ellipse. */
24
+ export declare const OGRE_PALISADE_RX = 19;
25
+ export declare const OGRE_PALISADE_RZ = 14;
26
+ /** The gap in the logs on the south side: this many tiles either side of the centre line. */
27
+ export declare const OGRE_GATE_HALF_W = 3;
28
+ /** The palisade row the gap is cut in. */
29
+ export declare const OGRE_GATE_Z: number;
30
+ /** The banner posts either side of the gap, a tile outside the logs. */
31
+ export declare const OGRE_GATE_BANNERS: readonly {
32
+ x: number;
33
+ z: number;
34
+ }[];
35
+ /** The two watchtowers, 3 x 3 each, standing in the north arc of the logs. */
36
+ export declare const OGRE_TOWERS: readonly {
37
+ x: number;
38
+ z: number;
39
+ }[];
40
+ /** Where the chief stands, between the towers, looking down the yard to the gate. */
41
+ export declare const OGRE_CHIEF: {
42
+ x: number;
43
+ z: number;
44
+ };
45
+ /** The six ogres' posts round the yard, off the track and the props (ogre-fortress-smoke.ts pins that). */
46
+ export declare const OGRE_FORTRESS_SPAWNS: readonly {
47
+ x: number;
48
+ z: number;
49
+ }[];
50
+ /** The track from the gap up the yard to the chief: three tiles wide. */
51
+ export declare function onOgreFortressTrack(x: number, z: number): boolean;
52
+ /** Inside the logs (the yard), the gap included. */
53
+ export declare function inOgreFortressYard(x: number, z: number): boolean;
54
+ /**
55
+ * Every log of the palisade: a tile round the ellipse with the yaw that lays
56
+ * the log line along it (the Broken Road's convention, see
57
+ * brokenRoadPalisadeTiles), leaving the gap and the towers' footprints.
58
+ */
59
+ export declare function ogrePalisadeTiles(): readonly {
60
+ x: number;
61
+ z: number;
62
+ yaw: number;
63
+ }[];
64
+ export declare function onOgrePalisade(x: number, z: number): boolean;
65
+ //# sourceMappingURL=ogreFortress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogreFortress.d.ts","sourceRoot":"","sources":["../src/ogreFortress.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AACtD,iGAAiG;AACjG,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,4BAA4B;AAC5B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,0CAA0C;AAC1C,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAGhE,CAAC;AACF,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAG1D,CAAC;AACF,qFAAqF;AACrF,eAAO,MAAM,UAAU;;;CAAmD,CAAC;AAC3E,2GAA2G;AAC3G,eAAO,MAAM,oBAAoB,EAAE,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAOnE,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIhE;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAmBpF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE5D"}
@@ -0,0 +1,99 @@
1
+ import { DEADLANDS_MIN_X, DEADLANDS_MIN_Z } from './zones.js';
2
+ /**
3
+ * The Ogre Fortress (James's Dreadwoods pack, 2026-09-26: the ogre fortress
4
+ * painting, and "make the ogres too"): the Ironjaw ogres' stronghold north of
5
+ * the Blood Lake, between it and the Capital's gate.
6
+ *
7
+ * A palisade of sharpened logs rings a trodden dirt yard. The way in is a gap
8
+ * on the south side between two banner posts with braziers at their feet,
9
+ * looking down to the lake; a track runs from it up the yard to the chief,
10
+ * who stands between two timber watchtowers built into the north side of the
11
+ * palisade. Round the yard: cages, a cook fire, meat racks, a cart, crates,
12
+ * barrels and what is left of those who came before. Six ogres keep the yard
13
+ * and the chief keeps the ogres.
14
+ *
15
+ * The geometry lives here so the server's dresser (the backend's
16
+ * ogreFortress.ts), the smoke test and the client's discovery all read the
17
+ * same tiles. The zone itself is DREADWOODS_NPC_ZONES 'ogre-fortress'.
18
+ */
19
+ export const OGRE_FORTRESS_CX = DEADLANDS_MIN_X + 300;
20
+ export const OGRE_FORTRESS_CZ = DEADLANDS_MIN_Z + 104;
21
+ /** The zone: the yard and a margin of ash round the logs, where the ogres still come for you. */
22
+ export const OGRE_FORTRESS_RX = 24;
23
+ export const OGRE_FORTRESS_RZ = 19;
24
+ /** The palisade ellipse. */
25
+ export const OGRE_PALISADE_RX = 19;
26
+ export const OGRE_PALISADE_RZ = 14;
27
+ /** The gap in the logs on the south side: this many tiles either side of the centre line. */
28
+ export const OGRE_GATE_HALF_W = 3;
29
+ /** The palisade row the gap is cut in. */
30
+ export const OGRE_GATE_Z = OGRE_FORTRESS_CZ + OGRE_PALISADE_RZ;
31
+ /** The banner posts either side of the gap, a tile outside the logs. */
32
+ export const OGRE_GATE_BANNERS = [
33
+ { x: OGRE_FORTRESS_CX - OGRE_GATE_HALF_W - 1, z: OGRE_GATE_Z + 1 },
34
+ { x: OGRE_FORTRESS_CX + OGRE_GATE_HALF_W + 1, z: OGRE_GATE_Z + 1 },
35
+ ];
36
+ /** The two watchtowers, 3 x 3 each, standing in the north arc of the logs. */
37
+ export const OGRE_TOWERS = [
38
+ { x: OGRE_FORTRESS_CX - 8, z: OGRE_FORTRESS_CZ - 12 },
39
+ { x: OGRE_FORTRESS_CX + 8, z: OGRE_FORTRESS_CZ - 12 },
40
+ ];
41
+ /** Where the chief stands, between the towers, looking down the yard to the gate. */
42
+ export const OGRE_CHIEF = { x: OGRE_FORTRESS_CX, z: OGRE_FORTRESS_CZ - 8 };
43
+ /** The six ogres' posts round the yard, off the track and the props (ogre-fortress-smoke.ts pins that). */
44
+ export const OGRE_FORTRESS_SPAWNS = [
45
+ { x: OGRE_FORTRESS_CX - 10, z: OGRE_FORTRESS_CZ + 2 },
46
+ { x: OGRE_FORTRESS_CX + 10, z: OGRE_FORTRESS_CZ + 1 },
47
+ { x: OGRE_FORTRESS_CX - 6, z: OGRE_FORTRESS_CZ - 5 },
48
+ { x: OGRE_FORTRESS_CX + 6, z: OGRE_FORTRESS_CZ - 4 },
49
+ { x: OGRE_FORTRESS_CX - 5, z: OGRE_FORTRESS_CZ + 9 },
50
+ { x: OGRE_FORTRESS_CX + 5, z: OGRE_FORTRESS_CZ + 10 },
51
+ ];
52
+ /** The track from the gap up the yard to the chief: three tiles wide. */
53
+ export function onOgreFortressTrack(x, z) {
54
+ return Math.abs(x - OGRE_FORTRESS_CX) <= 1 && z >= OGRE_CHIEF.z + 1 && z <= OGRE_GATE_Z + 3;
55
+ }
56
+ /** Inside the logs (the yard), the gap included. */
57
+ export function inOgreFortressYard(x, z) {
58
+ const dx = (x - OGRE_FORTRESS_CX) / (OGRE_PALISADE_RX - 0.5);
59
+ const dz = (z - OGRE_FORTRESS_CZ) / (OGRE_PALISADE_RZ - 0.5);
60
+ return dx * dx + dz * dz < 1;
61
+ }
62
+ function inOgreGateGap(x, z) {
63
+ return Math.abs(x - OGRE_FORTRESS_CX) <= OGRE_GATE_HALF_W && z > OGRE_FORTRESS_CZ;
64
+ }
65
+ function inOgreTower(x, z) {
66
+ return OGRE_TOWERS.some((t) => Math.abs(x - t.x) <= 1 && Math.abs(z - t.z) <= 1);
67
+ }
68
+ let palisade = null;
69
+ /**
70
+ * Every log of the palisade: a tile round the ellipse with the yaw that lays
71
+ * the log line along it (the Broken Road's convention, see
72
+ * brokenRoadPalisadeTiles), leaving the gap and the towers' footprints.
73
+ */
74
+ export function ogrePalisadeTiles() {
75
+ if (palisade)
76
+ return palisade;
77
+ const seen = new Set();
78
+ const out = [];
79
+ const steps = 160;
80
+ for (let i = 0; i < steps; i++) {
81
+ const a = (i / steps) * Math.PI * 2;
82
+ const x = Math.round(OGRE_FORTRESS_CX + Math.cos(a) * OGRE_PALISADE_RX);
83
+ const z = Math.round(OGRE_FORTRESS_CZ + Math.sin(a) * OGRE_PALISADE_RZ);
84
+ const key = `${x},${z}`;
85
+ if (seen.has(key) || inOgreGateGap(x, z) || inOgreTower(x, z))
86
+ continue;
87
+ seen.add(key);
88
+ // The ellipse's tangent at a is (-rx sin a, rz cos a).
89
+ const tx = -OGRE_PALISADE_RX * Math.sin(a);
90
+ const tz = OGRE_PALISADE_RZ * Math.cos(a);
91
+ out.push({ x, z, yaw: -Math.atan2(tz, tx) });
92
+ }
93
+ palisade = out;
94
+ return out;
95
+ }
96
+ export function onOgrePalisade(x, z) {
97
+ return ogrePalisadeTiles().some((t) => t.x === x && t.z === z);
98
+ }
99
+ //# sourceMappingURL=ogreFortress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogreFortress.js","sourceRoot":"","sources":["../src/ogreFortress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The Rotwood Grove (James's Dreadwoods pack, 2026-09-26: the rotwood grove
3
+ * painting): the Rotwood Ent's clearing in the north-west of the woods.
4
+ *
5
+ * A clearing of blood-dark earth ringed by the grove's dead giants: fallen
6
+ * trunks and root arches round the rim, rotten stumps burning green wisps
7
+ * round the Ent in the middle, the way in from the south under an arch and
8
+ * between wisp posts. Moss wolves (the forest monsters built ahead of a home)
9
+ * prowl it. Geometry here; the backend's rotwoodGrove.ts dresses it; the zone
10
+ * is DREADWOODS_NPC_ZONES 'rotwood-grove'.
11
+ */
12
+ export declare const GROVE_CX: number;
13
+ export declare const GROVE_CZ: number;
14
+ /** The zone: the clearing and its rim. */
15
+ export declare const GROVE_RX = 22;
16
+ export declare const GROVE_RZ = 17;
17
+ /** The clearing of dark earth, an ellipse. */
18
+ export declare const GROVE_CLEARING_RX = 15;
19
+ export declare const GROVE_CLEARING_RZ = 11;
20
+ /** Where the Ent stands, looking down the way in. */
21
+ export declare const GROVE_ENT: {
22
+ x: number;
23
+ z: number;
24
+ };
25
+ /** The way in: up from the south, three wide, to the Ent. */
26
+ export declare const GROVE_PATH_Z0: number;
27
+ export declare const GROVE_PATH_Z1: number;
28
+ /** The root arch the way in passes under (5 x 1, its feet two either side of the path). */
29
+ export declare const GROVE_ENTRY_ARCH: {
30
+ x: number;
31
+ z: number;
32
+ };
33
+ /** The moss wolves' posts (rotwood-grove-smoke.ts pins them clear and reachable). */
34
+ export declare const GROVE_WOLF_SPAWNS: readonly {
35
+ x: number;
36
+ z: number;
37
+ }[];
38
+ export declare function inGroveClearing(x: number, z: number): boolean;
39
+ export declare function onGrovePath(x: number, z: number): boolean;
40
+ //# sourceMappingURL=rotwoodGrove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotwoodGrove.d.ts","sourceRoot":"","sources":["../src/rotwoodGrove.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,QAAuB,CAAC;AAC7C,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAC9C,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,qDAAqD;AACrD,eAAO,MAAM,SAAS;;;CAAmC,CAAC;AAC1D,6DAA6D;AAC7D,eAAO,MAAM,aAAa,QAAe,CAAC;AAC1C,eAAO,MAAM,aAAa,QAAgB,CAAC;AAC3C,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB;;;CAAuD,CAAC;AACrF,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,EAAE,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAKhE,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -0,0 +1,43 @@
1
+ import { DEADLANDS_MIN_X, DEADLANDS_MIN_Z } from './zones.js';
2
+ /**
3
+ * The Rotwood Grove (James's Dreadwoods pack, 2026-09-26: the rotwood grove
4
+ * painting): the Rotwood Ent's clearing in the north-west of the woods.
5
+ *
6
+ * A clearing of blood-dark earth ringed by the grove's dead giants: fallen
7
+ * trunks and root arches round the rim, rotten stumps burning green wisps
8
+ * round the Ent in the middle, the way in from the south under an arch and
9
+ * between wisp posts. Moss wolves (the forest monsters built ahead of a home)
10
+ * prowl it. Geometry here; the backend's rotwoodGrove.ts dresses it; the zone
11
+ * is DREADWOODS_NPC_ZONES 'rotwood-grove'.
12
+ */
13
+ export const GROVE_CX = DEADLANDS_MIN_X + 90;
14
+ export const GROVE_CZ = DEADLANDS_MIN_Z + 124;
15
+ /** The zone: the clearing and its rim. */
16
+ export const GROVE_RX = 22;
17
+ export const GROVE_RZ = 17;
18
+ /** The clearing of dark earth, an ellipse. */
19
+ export const GROVE_CLEARING_RX = 15;
20
+ export const GROVE_CLEARING_RZ = 11;
21
+ /** Where the Ent stands, looking down the way in. */
22
+ export const GROVE_ENT = { x: GROVE_CX, z: GROVE_CZ - 2 };
23
+ /** The way in: up from the south, three wide, to the Ent. */
24
+ export const GROVE_PATH_Z0 = GROVE_CZ + 1;
25
+ export const GROVE_PATH_Z1 = GROVE_CZ + 20;
26
+ /** The root arch the way in passes under (5 x 1, its feet two either side of the path). */
27
+ export const GROVE_ENTRY_ARCH = { x: GROVE_CX, z: GROVE_CZ + GROVE_CLEARING_RZ + 2 };
28
+ /** The moss wolves' posts (rotwood-grove-smoke.ts pins them clear and reachable). */
29
+ export const GROVE_WOLF_SPAWNS = [
30
+ { x: GROVE_CX - 10, z: GROVE_CZ + 2 },
31
+ { x: GROVE_CX + 10, z: GROVE_CZ + 3 },
32
+ { x: GROVE_CX - 3, z: GROVE_CZ - 8 },
33
+ { x: GROVE_CX + 4, z: GROVE_CZ - 8 },
34
+ ];
35
+ export function inGroveClearing(x, z) {
36
+ const dx = (x - GROVE_CX) / GROVE_CLEARING_RX;
37
+ const dz = (z - GROVE_CZ) / GROVE_CLEARING_RZ;
38
+ return dx * dx + dz * dz <= 1;
39
+ }
40
+ export function onGrovePath(x, z) {
41
+ return Math.abs(x - GROVE_CX) <= 1 && z >= GROVE_PATH_Z0 && z <= GROVE_PATH_Z1;
42
+ }
43
+ //# sourceMappingURL=rotwoodGrove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotwoodGrove.js","sourceRoot":"","sources":["../src/rotwoodGrove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,GAAG,GAAG,CAAC;AAC9C,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,qDAAqD;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;AAC1D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC;AAC3C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,CAAC,EAAE,CAAC;AACrF,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAwC;IACpE,EAAE,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE;IACrC,EAAE,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE;IACrC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE;IACpC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE;CACrC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,iBAAiB,CAAC;IAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,iBAAiB,CAAC;IAC9C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,CAAC;AACjF,CAAC"}
package/package.json CHANGED
@@ -1,37 +1,37 @@
1
- {
2
- "name": "@dreadwood-types/types",
3
- "version": "0.1.52",
4
- "description": "Public wire protocol and client-safe constants for Dreadwoods",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "default": "./dist/index.js"
13
- }
14
- },
15
- "files": [
16
- "dist"
17
- ],
18
- "scripts": {
19
- "build": "tsc -p tsconfig.json",
20
- "dev": "tsc -p tsconfig.json --watch",
21
- "prepare": "npm run build",
22
- "prepublishOnly": "npm run build"
23
- },
24
- "devDependencies": {
25
- "typescript": "^5.9.2"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
30
- },
31
- "publishConfig": {
32
- "access": "public"
33
- },
34
- "engines": {
35
- "node": ">=22"
36
- }
37
- }
1
+ {
2
+ "name": "@dreadwood-types/types",
3
+ "version": "0.1.54",
4
+ "description": "Public wire protocol and client-safe constants for Dreadwoods",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc -p tsconfig.json",
20
+ "dev": "tsc -p tsconfig.json --watch",
21
+ "prepare": "npm run build",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "devDependencies": {
25
+ "typescript": "^5.9.2"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "engines": {
35
+ "node": ">=22"
36
+ }
37
+ }