@dreadwood-types/types 0.1.235 → 0.1.237
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.
- package/dist/attackableNpcs.d.ts.map +1 -1
- package/dist/attackableNpcs.js +5 -0
- package/dist/attackableNpcs.js.map +1 -1
- package/dist/bossSignatures.d.ts +1 -1
- package/dist/bossSignatures.d.ts.map +1 -1
- package/dist/bossSignatures.js +7 -0
- package/dist/bossSignatures.js.map +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/dailyHooks.d.ts +1 -1
- package/dist/dailyHooks.d.ts.map +1 -1
- package/dist/dailyHooks.js +3 -1
- package/dist/dailyHooks.js.map +1 -1
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +2 -1
- package/dist/expandedContracts.js.map +1 -1
- package/dist/explorerLedger.d.ts +7 -1
- package/dist/explorerLedger.d.ts.map +1 -1
- package/dist/explorerLedger.js +19 -0
- package/dist/explorerLedger.js.map +1 -1
- package/dist/fishingDerby.d.ts +168 -0
- package/dist/fishingDerby.d.ts.map +1 -0
- package/dist/fishingDerby.js +411 -0
- package/dist/fishingDerby.js.map +1 -0
- package/dist/gallowmere.d.ts +171 -0
- package/dist/gallowmere.d.ts.map +1 -0
- package/dist/gallowmere.js +173 -0
- package/dist/gallowmere.js.map +1 -0
- package/dist/gallowmereCreatures.d.ts +69 -0
- package/dist/gallowmereCreatures.d.ts.map +1 -0
- package/dist/gallowmereCreatures.js +105 -0
- package/dist/gallowmereCreatures.js.map +1 -0
- package/dist/gallowmereFolk.d.ts +32 -0
- package/dist/gallowmereFolk.d.ts.map +1 -0
- package/dist/gallowmereFolk.js +30 -0
- package/dist/gallowmereFolk.js.map +1 -0
- package/dist/gallowmereQuest.d.ts +79 -0
- package/dist/gallowmereQuest.d.ts.map +1 -0
- package/dist/gallowmereQuest.js +86 -0
- package/dist/gallowmereQuest.js.map +1 -0
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +4 -0
- package/dist/groundItems.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +7 -0
- package/dist/quests.js.map +1 -1
- package/dist/storyQuests.d.ts +11 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +131 -0
- package/dist/storyQuests.js.map +1 -1
- package/dist/zones.d.ts +4 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +8 -1
- package/dist/zones.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GALLOWMERE (slice C12 of PLAN_1_TO_40.md, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t22-gallowmere.md`; design sheets
|
|
3
|
+
* `gallowmere-1` village, `gallowmere-2` the cast, `gallowmere-3` the Hollowed and the Gallows Crows, `gallowmere-4` the
|
|
4
|
+
* Bell-Ringer, `gallowmere-5` the bell puzzle): a cursed woodsmen's and miners' village on the ashen plain south of the blood
|
|
5
|
+
* river, in the Dreadwoods south-west. "The bell stopped. They didn't." Levels 14-22.
|
|
6
|
+
*
|
|
7
|
+
* Decision D4 (PLAN_1_TO_40.md, 2026-10-12): the village's palisade is a SAFE POCKET inside the PvP Dreadwoods. Inside the
|
|
8
|
+
* palisade nobody can attack anybody (`isPvpZone` is false there, zones.ts); the outer half, the chapel ruin and the mine stay
|
|
9
|
+
* PvP ground like the rest of the woods, so the village is the place to eat, trade and breathe. Nothing hostile spawns inside
|
|
10
|
+
* the palisade either (the Hollowed walk the outer half, the crows keep to the chapel and the hanging tree).
|
|
11
|
+
*
|
|
12
|
+
* The box is x 342-437, z 553-640 (claimed in the early-game program file): the blood river runs along its north edge, the Red
|
|
13
|
+
* Waste (x 440-589, z 560-649) lies east of it, the Dreadwoods south road (x 463) is joined by the link road along z 651.
|
|
14
|
+
*
|
|
15
|
+
* z 556-582 the chapel ruin (north-west): the Bell-Ringer's yard, the bell tower, the four bell ropes, the altar
|
|
16
|
+
* z 592-626 the palisade (centre-south): the green with the gallows, four lived-in cottages, the well, the shrine, the gate south
|
|
17
|
+
* z 586-632 the abandoned outer half: ruined cottages west and east, the hanging tree, graves
|
|
18
|
+
* x 420-436 the mine mouth and its short rail (east edge)
|
|
19
|
+
*
|
|
20
|
+
* Every number is a WORLD tile. The sheets are proposals: only their names and places are used, never their pixels. Every piece
|
|
21
|
+
* is a stand-in built from the kit and the old Dreadwoods props until Blender pieces replace them (listed in NEXT_STEPS):
|
|
22
|
+
* the palisade is the Redcap hold's `redcappalisade`, the gallows the spider hollow's `cocoongallows`, the cottages the
|
|
23
|
+
* Mill's two, the shrine the Brindle shrine, the chapel's ruin the Broken Road's `ruin` props and the Brindle Ruin wall pieces.
|
|
24
|
+
*/
|
|
25
|
+
import type { LanternWakeBox, LanternWakePoint } from './lanternWake.js';
|
|
26
|
+
export declare const GALLOWMERE_NAME = "Gallowmere";
|
|
27
|
+
export declare const GALLOWMERE_ID = "gallowmere";
|
|
28
|
+
/** The village's whole box (its discovery zone and ground box). */
|
|
29
|
+
export declare const GALLOWMERE_BOX: LanternWakeBox;
|
|
30
|
+
/** The tiles the link road may lay (it runs on east and south past the box to the Dreadwoods south road). */
|
|
31
|
+
export declare const GALLOWMERE_ROAD_BOX: LanternWakeBox;
|
|
32
|
+
/**
|
|
33
|
+
* The palisade's ring box (the ring's own tiles are its edge) and the SAFE POCKET: every tile of it, the ring and the gate
|
|
34
|
+
* included, is outside the PvP rule. Pure data, so zones.ts can read it without importing the rest.
|
|
35
|
+
*/
|
|
36
|
+
export declare const GALLOWMERE_PALISADE: LanternWakeBox;
|
|
37
|
+
export declare const GALLOWMERE_SAFE_POCKET: LanternWakeBox;
|
|
38
|
+
export declare function inGallowmereSafePocket(x: number, z: number): boolean;
|
|
39
|
+
/** The chapel ruin's yard (the Bell-Ringer's arena) and the mine at the east edge. */
|
|
40
|
+
export declare const GALLOWMERE_CHAPEL: LanternWakeBox;
|
|
41
|
+
export declare const GALLOWMERE_MINE: LanternWakeBox;
|
|
42
|
+
/** The green inside the palisade (grass, the gallows at its middle). */
|
|
43
|
+
export declare const GALLOWMERE_GREEN: LanternWakeBox;
|
|
44
|
+
/** The roads (world polylines, width in tiles), laid as Path. */
|
|
45
|
+
export declare const GALLOWMERE_PATHS: ReadonlyArray<{
|
|
46
|
+
id: string;
|
|
47
|
+
w: number;
|
|
48
|
+
pts: readonly LanternWakePoint[];
|
|
49
|
+
}>;
|
|
50
|
+
/** What a placed prop is: a kit model (dreadmodel, style `<model>-<facing>`) or an entity of one of the old kinds. */
|
|
51
|
+
export type GallowmereProp = {
|
|
52
|
+
id: string;
|
|
53
|
+
kind: 'dreadmodel' | 'dreadprop' | 'rock' | 'tree' | 'campfire' | 'barrel' | 'logpile';
|
|
54
|
+
style: string;
|
|
55
|
+
x: number;
|
|
56
|
+
z: number;
|
|
57
|
+
scale?: number;
|
|
58
|
+
};
|
|
59
|
+
/** The palisade's gate (south wall, facing the link road) and its four towers: two at the corners, two flanking the gate. */
|
|
60
|
+
export declare const GALLOWMERE_GATE: {
|
|
61
|
+
readonly x: 388;
|
|
62
|
+
readonly z: 626;
|
|
63
|
+
readonly style: "redcapgate-s";
|
|
64
|
+
};
|
|
65
|
+
export declare const GALLOWMERE_TOWERS: ReadonlyArray<{
|
|
66
|
+
x: number;
|
|
67
|
+
z: number;
|
|
68
|
+
style: string;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* The village inside the palisade: the green with the gallows, the well, the shrine with its braziers, the four lived-in
|
|
72
|
+
* cottages (the Mill's two models, 7 x 5), the woodpiles, benches, crates, lamps and the gate banners.
|
|
73
|
+
*/
|
|
74
|
+
export declare const GALLOWMERE_VILLAGE_PIECES: readonly GallowmereProp[];
|
|
75
|
+
/**
|
|
76
|
+
* The abandoned outer half, outside the palisade: ruined cottages (the Broken Road's `ruin` props, 3 x 3) west and east, the hanging
|
|
77
|
+
* tree on the chapel lane (the second gallows, where the crows gather), graves, a broken cart, a camp left cold.
|
|
78
|
+
*/
|
|
79
|
+
export declare const GALLOWMERE_OUTER_PIECES: readonly GallowmereProp[];
|
|
80
|
+
/**
|
|
81
|
+
* The mine mouth at the east edge: two pillars for the mouth, a short rail with the cart and the buffers, spoil heaps.
|
|
82
|
+
* Stand-ins: `evmasonrypillar` for the timbers, `evrailtrack` and `dhorecart` for the rail and the cart.
|
|
83
|
+
*/
|
|
84
|
+
export declare const GALLOWMERE_MINE_PIECES: readonly GallowmereProp[];
|
|
85
|
+
/**
|
|
86
|
+
* The chapel ruin (the Bell-Ringer's yard): two broken towers, the altar, the braziers, broken pews, fallen pillars, the banners.
|
|
87
|
+
* The ruin's wall is laid by the backend round GALLOWMERE_CHAPEL with a gap at the entrance, and the bell, the four ropes, the clues,
|
|
88
|
+
* the clapper and the altar cache are quest props (gallowmereQuest.ts).
|
|
89
|
+
*/
|
|
90
|
+
export declare const GALLOWMERE_CHAPEL_ENTRANCE: {
|
|
91
|
+
readonly minX: 358;
|
|
92
|
+
readonly maxX: 360;
|
|
93
|
+
readonly z: 582;
|
|
94
|
+
};
|
|
95
|
+
export declare const GALLOWMERE_CHAPEL_PIECES: readonly GallowmereProp[];
|
|
96
|
+
/** The road signs (the placard signpost). */
|
|
97
|
+
export declare const GALLOWMERE_SIGNS: ReadonlyArray<{
|
|
98
|
+
id: string;
|
|
99
|
+
x: number;
|
|
100
|
+
z: number;
|
|
101
|
+
text: string;
|
|
102
|
+
}>;
|
|
103
|
+
/** Standable tiles (admin teleports, smokes): one for each place. */
|
|
104
|
+
export declare const GALLOWMERE_STANDS: {
|
|
105
|
+
readonly road: {
|
|
106
|
+
readonly x: 388;
|
|
107
|
+
readonly z: 646;
|
|
108
|
+
};
|
|
109
|
+
readonly gate: {
|
|
110
|
+
readonly x: 388;
|
|
111
|
+
readonly z: 632;
|
|
112
|
+
};
|
|
113
|
+
readonly gateInside: {
|
|
114
|
+
readonly x: 388;
|
|
115
|
+
readonly z: 621;
|
|
116
|
+
};
|
|
117
|
+
readonly green: {
|
|
118
|
+
readonly x: 388;
|
|
119
|
+
readonly z: 609;
|
|
120
|
+
};
|
|
121
|
+
readonly well: {
|
|
122
|
+
readonly x: 396;
|
|
123
|
+
readonly z: 613;
|
|
124
|
+
};
|
|
125
|
+
readonly chapelLane: {
|
|
126
|
+
readonly x: 352;
|
|
127
|
+
readonly z: 620;
|
|
128
|
+
};
|
|
129
|
+
readonly chapel: {
|
|
130
|
+
readonly x: 359;
|
|
131
|
+
readonly z: 578;
|
|
132
|
+
};
|
|
133
|
+
readonly chapelEntrance: {
|
|
134
|
+
readonly x: 359;
|
|
135
|
+
readonly z: 585;
|
|
136
|
+
};
|
|
137
|
+
readonly outerWest: {
|
|
138
|
+
readonly x: 360;
|
|
139
|
+
readonly z: 608;
|
|
140
|
+
};
|
|
141
|
+
readonly outerEast: {
|
|
142
|
+
readonly x: 414;
|
|
143
|
+
readonly z: 622;
|
|
144
|
+
};
|
|
145
|
+
readonly mine: {
|
|
146
|
+
readonly x: 425;
|
|
147
|
+
readonly z: 600;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
/** The discovery zone (types expandedContracts.ts INSERTED_DISCOVERY_ZONES). */
|
|
151
|
+
export declare const GALLOWMERE_DISCOVERY_ZONE: {
|
|
152
|
+
minX: number;
|
|
153
|
+
maxX: number;
|
|
154
|
+
minZ: number;
|
|
155
|
+
maxZ: number;
|
|
156
|
+
id: string;
|
|
157
|
+
label: string;
|
|
158
|
+
coordinateFrame: "world";
|
|
159
|
+
};
|
|
160
|
+
export declare function inGallowmereBox(x: number, z: number, pad?: number): boolean;
|
|
161
|
+
/**
|
|
162
|
+
* THE NIGHT (the Saltmark Light's UTC lamp clock, `saltmarkLampPhase` in the client): lit from 18:00 (inclusive) to 06:00
|
|
163
|
+
* (exclusive) UTC, every day, read off the wall clock so every player at the same moment agrees. The Hollowed walk only while
|
|
164
|
+
* the lamps are lit; by day they lie down in the ash.
|
|
165
|
+
*/
|
|
166
|
+
export declare const GALLOWMERE_NIGHT_FROM_UTC_HOUR = 18;
|
|
167
|
+
export declare const GALLOWMERE_NIGHT_UNTIL_UTC_HOUR = 6;
|
|
168
|
+
export declare function isGallowmereNight(epochMs: number): boolean;
|
|
169
|
+
/** The next moment the night begins (18:00 UTC), at or after `epochMs` when it is day; `epochMs` itself when it is already night. */
|
|
170
|
+
export declare function nextGallowmereNightMs(epochMs: number): number;
|
|
171
|
+
//# sourceMappingURL=gallowmere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallowmere.d.ts","sourceRoot":"","sources":["../src/gallowmere.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,mEAAmE;AACnE,eAAO,MAAM,cAAc,EAAE,cAA+D,CAAC;AAC7F,6GAA6G;AAC7G,eAAO,MAAM,mBAAmB,EAAE,cAA+D,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,cAA+D,CAAC;AAClG,eAAO,MAAM,sBAAsB,EAAE,cAAoC,CAAC;AAC1E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,EAAE,cAA+D,CAAC;AAChG,eAAO,MAAM,eAAe,EAAE,cAA+D,CAAC;AAC9F,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,EAAE,cAA+D,CAAC;AAE/F,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAMvG,CAAC;AAEF,sHAAsH;AACtH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,6HAA6H;AAC7H,eAAO,MAAM,eAAe;;;;CAAqD,CAAC;AAClF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKpF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,cAAc,EAsB9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,cAAc,EAiB5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,cAAc,EAO3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;;;CAA4C,CAAC;AACpF,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAgB7D,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK9F,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYpB,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,yBAAyB;;;;;;;;CAAsG,CAAC;AAE7I,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,OAAO,CAGtE;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAGjD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI1D;AACD,qIAAqI;AACrI,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI7D"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
export const GALLOWMERE_NAME = 'Gallowmere';
|
|
2
|
+
export const GALLOWMERE_ID = 'gallowmere';
|
|
3
|
+
/** The village's whole box (its discovery zone and ground box). */
|
|
4
|
+
export const GALLOWMERE_BOX = { minX: 342, maxX: 437, minZ: 553, maxZ: 640 };
|
|
5
|
+
/** The tiles the link road may lay (it runs on east and south past the box to the Dreadwoods south road). */
|
|
6
|
+
export const GALLOWMERE_ROAD_BOX = { minX: 342, maxX: 470, minZ: 553, maxZ: 656 };
|
|
7
|
+
/**
|
|
8
|
+
* The palisade's ring box (the ring's own tiles are its edge) and the SAFE POCKET: every tile of it, the ring and the gate
|
|
9
|
+
* included, is outside the PvP rule. Pure data, so zones.ts can read it without importing the rest.
|
|
10
|
+
*/
|
|
11
|
+
export const GALLOWMERE_PALISADE = { minX: 366, maxX: 409, minZ: 592, maxZ: 626 };
|
|
12
|
+
export const GALLOWMERE_SAFE_POCKET = GALLOWMERE_PALISADE;
|
|
13
|
+
export function inGallowmereSafePocket(x, z) {
|
|
14
|
+
const tx = Math.floor(x);
|
|
15
|
+
const tz = Math.floor(z);
|
|
16
|
+
const b = GALLOWMERE_SAFE_POCKET;
|
|
17
|
+
return tx >= b.minX && tx <= b.maxX && tz >= b.minZ && tz <= b.maxZ;
|
|
18
|
+
}
|
|
19
|
+
/** The chapel ruin's yard (the Bell-Ringer's arena) and the mine at the east edge. */
|
|
20
|
+
export const GALLOWMERE_CHAPEL = { minX: 346, maxX: 372, minZ: 556, maxZ: 582 };
|
|
21
|
+
export const GALLOWMERE_MINE = { minX: 420, maxX: 436, minZ: 588, maxZ: 604 };
|
|
22
|
+
/** The green inside the palisade (grass, the gallows at its middle). */
|
|
23
|
+
export const GALLOWMERE_GREEN = { minX: 378, maxX: 398, minZ: 598, maxZ: 610 };
|
|
24
|
+
/** The roads (world polylines, width in tiles), laid as Path. */
|
|
25
|
+
export const GALLOWMERE_PATHS = [
|
|
26
|
+
{ id: 'link-road', w: 3, pts: [[463, 651], [420, 651], [388, 651], [388, 626]] },
|
|
27
|
+
{ id: 'village-street', w: 3, pts: [[388, 625], [388, 612]] },
|
|
28
|
+
{ id: 'cross-street', w: 3, pts: [[372, 612], [404, 612]] },
|
|
29
|
+
{ id: 'chapel-lane', w: 3, pts: [[388, 640], [352, 640], [352, 592], [359, 584]] },
|
|
30
|
+
{ id: 'mine-track', w: 2, pts: [[420, 651], [420, 625], [424, 612], [424, 598]] },
|
|
31
|
+
];
|
|
32
|
+
/** The palisade's gate (south wall, facing the link road) and its four towers: two at the corners, two flanking the gate. */
|
|
33
|
+
export const GALLOWMERE_GATE = { x: 388, z: 626, style: 'redcapgate-s' };
|
|
34
|
+
export const GALLOWMERE_TOWERS = [
|
|
35
|
+
{ x: 368, z: 595, style: 'redcaptower-s' },
|
|
36
|
+
{ x: 407, z: 595, style: 'redcaptower-s' },
|
|
37
|
+
{ x: 382, z: 623, style: 'redcaptower-s' },
|
|
38
|
+
{ x: 394, z: 623, style: 'redcaptower-s' },
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* The village inside the palisade: the green with the gallows, the well, the shrine with its braziers, the four lived-in
|
|
42
|
+
* cottages (the Mill's two models, 7 x 5), the woodpiles, benches, crates, lamps and the gate banners.
|
|
43
|
+
*/
|
|
44
|
+
export const GALLOWMERE_VILLAGE_PIECES = [
|
|
45
|
+
{ id: 'gal-gallows', kind: 'dreadmodel', style: 'cocoongallows-s', x: 388, z: 604 },
|
|
46
|
+
{ id: 'gal-well', kind: 'dreadmodel', style: 'townwell1x1-s', x: 397, z: 616 },
|
|
47
|
+
{ id: 'gal-shrine', kind: 'dreadmodel', style: 'hbshrine-s', x: 380, z: 601 },
|
|
48
|
+
{ id: 'gal-shrine-brazier-1', kind: 'dreadmodel', style: 'dhbrazier-s', x: 378, z: 601 },
|
|
49
|
+
{ id: 'gal-shrine-brazier-2', kind: 'dreadmodel', style: 'dhbrazier-s', x: 382, z: 601 },
|
|
50
|
+
{ id: 'gal-cottage-nw', kind: 'dreadmodel', style: 'millcottage-s', x: 374, z: 598 },
|
|
51
|
+
{ id: 'gal-cottage-ne', kind: 'dreadmodel', style: 'fredcottage-s', x: 402, z: 598 },
|
|
52
|
+
{ id: 'gal-cottage-sw', kind: 'dreadmodel', style: 'millcottage-n', x: 374, z: 619 },
|
|
53
|
+
{ id: 'gal-cottage-se', kind: 'dreadmodel', style: 'fredcottage-n', x: 402, z: 619 },
|
|
54
|
+
{ id: 'gal-woodpile-1', kind: 'dreadmodel', style: 'woodpile-s', x: 369, z: 608 },
|
|
55
|
+
{ id: 'gal-woodpile-2', kind: 'dreadmodel', style: 'woodpile-s', x: 404, z: 608 },
|
|
56
|
+
{ id: 'gal-bench-green', kind: 'dreadmodel', style: 'hbbench-s', x: 394, z: 603 },
|
|
57
|
+
{ id: 'gal-crates-1', kind: 'dreadmodel', style: 'hbcrates-s', x: 369, z: 624 },
|
|
58
|
+
{ id: 'gal-crates-2', kind: 'dreadmodel', style: 'hbcrates-s', x: 407, z: 614 },
|
|
59
|
+
{ id: 'gal-lamp-1', kind: 'dreadmodel', style: 'townlantern1x1-s', x: 386, z: 622 },
|
|
60
|
+
{ id: 'gal-lamp-2', kind: 'dreadmodel', style: 'townlantern1x1-s', x: 390, z: 622 },
|
|
61
|
+
{ id: 'gal-lamp-3', kind: 'dreadmodel', style: 'townlantern1x1-s', x: 386, z: 614 },
|
|
62
|
+
{ id: 'gal-lamp-4', kind: 'dreadmodel', style: 'townlantern1x1-s', x: 390, z: 614 },
|
|
63
|
+
{ id: 'gal-banner-1', kind: 'dreadmodel', style: 'westbanner-s', x: 385, z: 625 },
|
|
64
|
+
{ id: 'gal-banner-2', kind: 'dreadmodel', style: 'westbanner-s', x: 391, z: 625 },
|
|
65
|
+
{ id: 'gal-cart', kind: 'dreadprop', style: 'cart', x: 398, z: 623 },
|
|
66
|
+
];
|
|
67
|
+
/**
|
|
68
|
+
* The abandoned outer half, outside the palisade: ruined cottages (the Broken Road's `ruin` props, 3 x 3) west and east, the hanging
|
|
69
|
+
* tree on the chapel lane (the second gallows, where the crows gather), graves, a broken cart, a camp left cold.
|
|
70
|
+
*/
|
|
71
|
+
export const GALLOWMERE_OUTER_PIECES = [
|
|
72
|
+
{ id: 'gal-ruin-w1', kind: 'dreadprop', style: 'ruin-face90', x: 357, z: 600 },
|
|
73
|
+
{ id: 'gal-ruin-w2', kind: 'dreadprop', style: 'ruin-face60', x: 348, z: 614 },
|
|
74
|
+
{ id: 'gal-ruin-w3', kind: 'dreadprop', style: 'ruin-face120', x: 357, z: 626 },
|
|
75
|
+
{ id: 'gal-ruin-e1', kind: 'dreadprop', style: 'ruin-face270', x: 418, z: 618 },
|
|
76
|
+
{ id: 'gal-ruin-e2', kind: 'dreadprop', style: 'ruin-face240', x: 424, z: 628 },
|
|
77
|
+
{ id: 'gal-ruin-e3', kind: 'dreadprop', style: 'ruin-face300', x: 414, z: 634 },
|
|
78
|
+
{ id: 'gal-hanging-tree', kind: 'dreadmodel', style: 'cocoongallows-e', x: 346, z: 634 },
|
|
79
|
+
{ id: 'gal-grave-1', kind: 'dreadprop', style: 'grave', x: 347, z: 626 },
|
|
80
|
+
{ id: 'gal-grave-2', kind: 'dreadprop', style: 'grave', x: 349, z: 628 },
|
|
81
|
+
{ id: 'gal-grave-3', kind: 'dreadprop', style: 'grave', x: 347, z: 630 },
|
|
82
|
+
{ id: 'gal-grave-4', kind: 'dreadprop', style: 'grave', x: 349, z: 632 },
|
|
83
|
+
{ id: 'gal-cart-1', kind: 'dreadprop', style: 'cart', x: 414, z: 640 },
|
|
84
|
+
{ id: 'gal-cart-2', kind: 'dreadprop', style: 'cart', x: 362, z: 636 },
|
|
85
|
+
{ id: 'gal-cold-fire', kind: 'campfire', style: 'beach-pit', x: 362, z: 616, scale: 0.9 },
|
|
86
|
+
{ id: 'gal-bones-1', kind: 'dreadprop', style: 'bones', x: 360, z: 618 },
|
|
87
|
+
{ id: 'gal-bones-2', kind: 'dreadprop', style: 'bones', x: 428, z: 640 },
|
|
88
|
+
];
|
|
89
|
+
/**
|
|
90
|
+
* The mine mouth at the east edge: two pillars for the mouth, a short rail with the cart and the buffers, spoil heaps.
|
|
91
|
+
* Stand-ins: `evmasonrypillar` for the timbers, `evrailtrack` and `dhorecart` for the rail and the cart.
|
|
92
|
+
*/
|
|
93
|
+
export const GALLOWMERE_MINE_PIECES = [
|
|
94
|
+
{ id: 'gal-mine-pillar-1', kind: 'dreadmodel', style: 'evmasonrypillar-s', x: 428, z: 593 },
|
|
95
|
+
{ id: 'gal-mine-pillar-2', kind: 'dreadmodel', style: 'evmasonrypillar-s', x: 432, z: 593 },
|
|
96
|
+
...[428, 429, 430, 431, 432].map((x, i) => ({ id: `gal-mine-rail-${i + 1}`, kind: 'dreadmodel', style: 'evrailtrack-s', x, z: 596 })),
|
|
97
|
+
{ id: 'gal-mine-buffer', kind: 'dreadmodel', style: 'evrailbuffer-s', x: 430, z: 599 },
|
|
98
|
+
{ id: 'gal-mine-cart', kind: 'dreadmodel', style: 'dhorecart-s', x: 430, z: 597 },
|
|
99
|
+
{ id: 'gal-mine-brazier', kind: 'dreadmodel', style: 'dhbrazier-s', x: 434, z: 596 },
|
|
100
|
+
];
|
|
101
|
+
/**
|
|
102
|
+
* The chapel ruin (the Bell-Ringer's yard): two broken towers, the altar, the braziers, broken pews, fallen pillars, the banners.
|
|
103
|
+
* The ruin's wall is laid by the backend round GALLOWMERE_CHAPEL with a gap at the entrance, and the bell, the four ropes, the clues,
|
|
104
|
+
* the clapper and the altar cache are quest props (gallowmereQuest.ts).
|
|
105
|
+
*/
|
|
106
|
+
export const GALLOWMERE_CHAPEL_ENTRANCE = { minX: 358, maxX: 360, z: 582 };
|
|
107
|
+
export const GALLOWMERE_CHAPEL_PIECES = [
|
|
108
|
+
{ id: 'gal-chapel-tower-1', kind: 'dreadprop', style: 'ruin-face0', x: 351, z: 560 },
|
|
109
|
+
{ id: 'gal-chapel-tower-2', kind: 'dreadprop', style: 'ruin-face0', x: 367, z: 560 },
|
|
110
|
+
{ id: 'gal-chapel-altar', kind: 'dreadmodel', style: 'evmasonryaltar-s', x: 359, z: 572 },
|
|
111
|
+
{ id: 'gal-chapel-brazier-1', kind: 'dreadmodel', style: 'evwatchbrazier-s', x: 355, z: 573 },
|
|
112
|
+
{ id: 'gal-chapel-brazier-2', kind: 'dreadmodel', style: 'evwatchbrazier-s', x: 363, z: 573 },
|
|
113
|
+
{ id: 'gal-chapel-brazier-3', kind: 'dreadmodel', style: 'evwatchbrazier-s', x: 355, z: 579 },
|
|
114
|
+
{ id: 'gal-chapel-brazier-4', kind: 'dreadmodel', style: 'evwatchbrazier-s', x: 363, z: 579 },
|
|
115
|
+
{ id: 'gal-chapel-pew-1', kind: 'dreadmodel', style: 'hbbench-s', x: 353, z: 577 },
|
|
116
|
+
{ id: 'gal-chapel-pew-2', kind: 'dreadmodel', style: 'hbbench-s', x: 365, z: 577 },
|
|
117
|
+
{ id: 'gal-chapel-pew-3', kind: 'dreadmodel', style: 'hbbench-s', x: 353, z: 566 },
|
|
118
|
+
{ id: 'gal-chapel-pew-4', kind: 'dreadmodel', style: 'hbbench-s', x: 365, z: 566 },
|
|
119
|
+
{ id: 'gal-chapel-pillar-1', kind: 'dreadprop', style: 'archpillar', x: 350, z: 580 },
|
|
120
|
+
{ id: 'gal-chapel-pillar-2', kind: 'dreadprop', style: 'archpillar', x: 369, z: 568 },
|
|
121
|
+
{ id: 'gal-chapel-banner-1', kind: 'dreadmodel', style: 'westbanner-s', x: 357, z: 570 },
|
|
122
|
+
{ id: 'gal-chapel-banner-2', kind: 'dreadmodel', style: 'westbanner-s', x: 361, z: 570 },
|
|
123
|
+
];
|
|
124
|
+
/** The road signs (the placard signpost). */
|
|
125
|
+
export const GALLOWMERE_SIGNS = [
|
|
126
|
+
{ id: 'gal-sign-road', x: 391, z: 649, text: 'Gallowmere. The palisade is a safe pocket: no player may strike another inside it. Outside the wall this is Dreadwoods ground, and after the lamps are lit the Hollowed walk.' },
|
|
127
|
+
{ id: 'gal-sign-gate', x: 391, z: 628, text: 'Gallowmere gate. Warden Osric keeps it. Bell or no bell.' },
|
|
128
|
+
{ id: 'gal-sign-chapel', x: 349, z: 588, text: 'The chapel. The bell stopped. Something still rings it (Combat 20+).' },
|
|
129
|
+
{ id: 'gal-sign-mine', x: 421, z: 607, text: 'The old mine. Closed since the bell stopped.' },
|
|
130
|
+
];
|
|
131
|
+
/** Standable tiles (admin teleports, smokes): one for each place. */
|
|
132
|
+
export const GALLOWMERE_STANDS = {
|
|
133
|
+
road: { x: 388, z: 646 },
|
|
134
|
+
gate: { x: 388, z: 632 },
|
|
135
|
+
gateInside: { x: 388, z: 621 },
|
|
136
|
+
green: { x: 388, z: 609 },
|
|
137
|
+
well: { x: 396, z: 613 },
|
|
138
|
+
chapelLane: { x: 352, z: 620 },
|
|
139
|
+
chapel: { x: 359, z: 578 },
|
|
140
|
+
chapelEntrance: { x: 359, z: 585 },
|
|
141
|
+
outerWest: { x: 360, z: 608 },
|
|
142
|
+
outerEast: { x: 414, z: 622 },
|
|
143
|
+
mine: { x: 425, z: 600 },
|
|
144
|
+
};
|
|
145
|
+
/** The discovery zone (types expandedContracts.ts INSERTED_DISCOVERY_ZONES). */
|
|
146
|
+
export const GALLOWMERE_DISCOVERY_ZONE = { id: GALLOWMERE_ID, label: GALLOWMERE_NAME, coordinateFrame: 'world', ...GALLOWMERE_BOX };
|
|
147
|
+
export function inGallowmereBox(x, z, pad = 0) {
|
|
148
|
+
const b = GALLOWMERE_BOX;
|
|
149
|
+
return x >= b.minX - pad && x <= b.maxX + pad && z >= b.minZ - pad && z <= b.maxZ + pad;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* THE NIGHT (the Saltmark Light's UTC lamp clock, `saltmarkLampPhase` in the client): lit from 18:00 (inclusive) to 06:00
|
|
153
|
+
* (exclusive) UTC, every day, read off the wall clock so every player at the same moment agrees. The Hollowed walk only while
|
|
154
|
+
* the lamps are lit; by day they lie down in the ash.
|
|
155
|
+
*/
|
|
156
|
+
export const GALLOWMERE_NIGHT_FROM_UTC_HOUR = 18;
|
|
157
|
+
export const GALLOWMERE_NIGHT_UNTIL_UTC_HOUR = 6;
|
|
158
|
+
const HOUR_MS = 3_600_000;
|
|
159
|
+
const DAY_MS = 24 * HOUR_MS;
|
|
160
|
+
export function isGallowmereNight(epochMs) {
|
|
161
|
+
if (typeof epochMs !== 'number' || !Number.isFinite(epochMs))
|
|
162
|
+
return false;
|
|
163
|
+
const ofDay = ((epochMs % DAY_MS) + DAY_MS) % DAY_MS;
|
|
164
|
+
return ofDay >= GALLOWMERE_NIGHT_FROM_UTC_HOUR * HOUR_MS || ofDay < GALLOWMERE_NIGHT_UNTIL_UTC_HOUR * HOUR_MS;
|
|
165
|
+
}
|
|
166
|
+
/** The next moment the night begins (18:00 UTC), at or after `epochMs` when it is day; `epochMs` itself when it is already night. */
|
|
167
|
+
export function nextGallowmereNightMs(epochMs) {
|
|
168
|
+
if (isGallowmereNight(epochMs))
|
|
169
|
+
return epochMs;
|
|
170
|
+
const dayStart = Math.floor(epochMs / DAY_MS) * DAY_MS;
|
|
171
|
+
return dayStart + GALLOWMERE_NIGHT_FROM_UTC_HOUR * HOUR_MS;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=gallowmere.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallowmere.js","sourceRoot":"","sources":["../src/gallowmere.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GALLOWMERE'S CREATURES (slice C12-2, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t22-gallowmere.md`; design sheets `gallowmere-3`
|
|
3
|
+
* the Hollowed and the Gallows Crows, `gallowmere-4` the Bell-Ringer):
|
|
4
|
+
*
|
|
5
|
+
* - the Hollowed Villager (level 15) and the Hollowed Miner (level 17), night-only: they walk the abandoned outer half only while the
|
|
6
|
+
* lamps are lit (the UTC lamp clock, gallowmere.ts isGallowmereNight) and lie down by day; the miner works near the mine. Their kinds
|
|
7
|
+
* start with `hollowed`, which is how the undead rule (silver weapons, dragonfire.ts) finds them;
|
|
8
|
+
* - the Gallows Crow (level 14), noisy scavengers at the hanging tree and the chapel, day and night;
|
|
9
|
+
* - the Bell-Ringer (level 22), the chapel's mini-boss: one telegraphed Bell Swing (bossSignatures.ts) with the standing counter of
|
|
10
|
+
* a committed signature (step clear of him before it lands), drops the Cracked Bell Shard every time.
|
|
11
|
+
*
|
|
12
|
+
* Everything hostile hunts players who stand inside the village's outer half, the chapel or the mine, and turns back at its leash;
|
|
13
|
+
* NOTHING hostile stands inside the palisade (the safe pocket, gallowmere.ts), and the hunt never reaches into it. Every number is a
|
|
14
|
+
* WORLD tile.
|
|
15
|
+
*/
|
|
16
|
+
import type { LanternWakeBox } from './lanternWake.js';
|
|
17
|
+
export declare const HOLLOWED_VILLAGER_KIND = "hollowedvillager";
|
|
18
|
+
export declare const HOLLOWED_MINER_KIND = "hollowedminer";
|
|
19
|
+
export declare const GALLOWS_CROW_KIND = "gallowscrow";
|
|
20
|
+
export declare const BELL_RINGER_KIND = "bellringer";
|
|
21
|
+
export declare const BELL_RINGER_NAME = "The Bell-Ringer";
|
|
22
|
+
export type GallowmereHostileKind = typeof HOLLOWED_VILLAGER_KIND | typeof HOLLOWED_MINER_KIND | typeof GALLOWS_CROW_KIND | typeof BELL_RINGER_KIND;
|
|
23
|
+
export declare const GALLOWMERE_HOSTILE_KINDS: readonly GallowmereHostileKind[];
|
|
24
|
+
/** The two kinds that walk only at night. */
|
|
25
|
+
export declare const GALLOWMERE_NIGHT_KINDS: readonly string[];
|
|
26
|
+
export declare function isGallowmereHostileKind(kind: string): kind is GallowmereHostileKind;
|
|
27
|
+
export declare function isGallowmereNightKind(kind: string): boolean;
|
|
28
|
+
export declare const GALLOWMERE_CREATURES: Readonly<Record<GallowmereHostileKind, {
|
|
29
|
+
name: string;
|
|
30
|
+
level: readonly [number, number];
|
|
31
|
+
maxHit: number;
|
|
32
|
+
healthFactor: number;
|
|
33
|
+
respawnMs: number;
|
|
34
|
+
note: string;
|
|
35
|
+
}>>;
|
|
36
|
+
/** Who hunts whom: aggro and leash radii (tiles) and the line a player is told when one locks on. Only players inside the hunt's ground are hunted. */
|
|
37
|
+
export declare const GALLOWMERE_AGGRO: Readonly<Record<GallowmereHostileKind, {
|
|
38
|
+
aggro: number;
|
|
39
|
+
leash: number;
|
|
40
|
+
text: string;
|
|
41
|
+
}>>;
|
|
42
|
+
/**
|
|
43
|
+
* The hunting ground: the box outside the palisade (the outer half, the chapel lane, the chapel and the mine). A hunter never locks on to
|
|
44
|
+
* a player inside the palisade, and a creature spawned outside never walks in (the ring is shut, only the gate is open and the hunt stops
|
|
45
|
+
* at it).
|
|
46
|
+
*/
|
|
47
|
+
export declare function inGallowmereHunt(x: number, z: number): boolean;
|
|
48
|
+
export type GallowmereSpot = {
|
|
49
|
+
readonly kind: GallowmereHostileKind;
|
|
50
|
+
readonly x: number;
|
|
51
|
+
readonly z: number;
|
|
52
|
+
readonly leash: number;
|
|
53
|
+
};
|
|
54
|
+
/** Where they stand: the Hollowed over the outer half and the mine, the crows at the hanging tree and the chapel, the Bell-Ringer under the bell. */
|
|
55
|
+
export declare const GALLOWMERE_SPOTS: readonly GallowmereSpot[];
|
|
56
|
+
/** Movement of the hostile ones when they are not hunting. */
|
|
57
|
+
export declare const GALLOWMERE_PACE: Readonly<Record<GallowmereHostileKind, {
|
|
58
|
+
speed: number;
|
|
59
|
+
idleChance: number;
|
|
60
|
+
pause: readonly [number, number];
|
|
61
|
+
}>>;
|
|
62
|
+
/** A place a hunter may never stand: inside the palisade. Used by the world's hunt and the smokes. */
|
|
63
|
+
export declare const GALLOWMERE_NO_HUNT_BOX: LanternWakeBox;
|
|
64
|
+
/** The chapel and the mine boxes, re-exported for the hunt tests (which part of the hunting ground a spot is in). */
|
|
65
|
+
export declare const GALLOWMERE_HUNT_PARTS: {
|
|
66
|
+
readonly chapel: LanternWakeBox;
|
|
67
|
+
readonly mine: LanternWakeBox;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=gallowmereCreatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallowmereCreatures.d.ts","sourceRoot":"","sources":["../src/gallowmereCreatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,OAAO,sBAAsB,GAAG,OAAO,mBAAmB,GAAG,OAAO,iBAAiB,GAAG,OAAO,gBAAgB,CAAC;AACpJ,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAAuF,CAAC;AAC7J,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAkD,CAAC;AAEvG,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,qBAAqB,CAEnF;AACD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CACzC,MAAM,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkCzJ,CAAC;AAEF,uJAAuJ;AACvJ,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAKpH,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtI,qJAAqJ;AACrJ,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAwBrD,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAK5I,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,sBAAsB,EAAE,cAAoC,CAAC;AAC1E,qHAAqH;AACrH,eAAO,MAAM,qBAAqB,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAyD,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { GALLOWMERE_BOX, GALLOWMERE_CHAPEL, GALLOWMERE_MINE, GALLOWMERE_PALISADE, inGallowmereSafePocket } from './gallowmere.js';
|
|
2
|
+
export const HOLLOWED_VILLAGER_KIND = 'hollowedvillager';
|
|
3
|
+
export const HOLLOWED_MINER_KIND = 'hollowedminer';
|
|
4
|
+
export const GALLOWS_CROW_KIND = 'gallowscrow';
|
|
5
|
+
export const BELL_RINGER_KIND = 'bellringer';
|
|
6
|
+
export const BELL_RINGER_NAME = 'The Bell-Ringer';
|
|
7
|
+
export const GALLOWMERE_HOSTILE_KINDS = [HOLLOWED_VILLAGER_KIND, HOLLOWED_MINER_KIND, GALLOWS_CROW_KIND, BELL_RINGER_KIND];
|
|
8
|
+
/** The two kinds that walk only at night. */
|
|
9
|
+
export const GALLOWMERE_NIGHT_KINDS = [HOLLOWED_VILLAGER_KIND, HOLLOWED_MINER_KIND];
|
|
10
|
+
export function isGallowmereHostileKind(kind) {
|
|
11
|
+
return GALLOWMERE_HOSTILE_KINDS.includes(kind);
|
|
12
|
+
}
|
|
13
|
+
export function isGallowmereNightKind(kind) {
|
|
14
|
+
return GALLOWMERE_NIGHT_KINDS.includes(kind);
|
|
15
|
+
}
|
|
16
|
+
export const GALLOWMERE_CREATURES = {
|
|
17
|
+
hollowedvillager: {
|
|
18
|
+
name: 'Hollowed Villager',
|
|
19
|
+
level: [15, 15],
|
|
20
|
+
maxHit: 8,
|
|
21
|
+
healthFactor: 1,
|
|
22
|
+
respawnMs: 40_000,
|
|
23
|
+
note: 'A shambling villager the bell left behind: slow, common round the cottages, disturbed by firelight. It walks only after the lamps are lit (18:00 to 06:00 UTC) and lies down in the ash by day.',
|
|
24
|
+
},
|
|
25
|
+
hollowedminer: {
|
|
26
|
+
name: 'Hollowed Miner',
|
|
27
|
+
level: [17, 17],
|
|
28
|
+
maxHit: 11,
|
|
29
|
+
healthFactor: 1.15,
|
|
30
|
+
respawnMs: 50_000,
|
|
31
|
+
note: 'A miner the mine kept: tougher and more set on you than the villagers, with a pick or a broken tool, found near the mine. It walks only after the lamps are lit (18:00 to 06:00 UTC).',
|
|
32
|
+
},
|
|
33
|
+
gallowscrow: {
|
|
34
|
+
name: 'Gallows Crow',
|
|
35
|
+
level: [14, 14],
|
|
36
|
+
maxHit: 6,
|
|
37
|
+
healthFactor: 0.8,
|
|
38
|
+
respawnMs: 30_000,
|
|
39
|
+
note: 'A noisy scavenger of the hanging tree and the chapel: quick, harder to hit than it looks, and it harries anyone who comes near. Day or night.',
|
|
40
|
+
},
|
|
41
|
+
bellringer: {
|
|
42
|
+
name: BELL_RINGER_NAME,
|
|
43
|
+
level: [22, 22],
|
|
44
|
+
maxHit: 16,
|
|
45
|
+
healthFactor: 1,
|
|
46
|
+
respawnMs: 240_000,
|
|
47
|
+
note: 'The chapel warden gone wrong, who rings the bell for reasons of his own: every fourth blow is a Bell Swing, announced a full turn ahead, twice an ordinary hit; step out of his reach before it lands and it misses. Drops the Cracked Bell Shard every time.',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
/** Who hunts whom: aggro and leash radii (tiles) and the line a player is told when one locks on. Only players inside the hunt's ground are hunted. */
|
|
51
|
+
export const GALLOWMERE_AGGRO = {
|
|
52
|
+
hollowedvillager: { aggro: 5, leash: 14, text: 'A Hollowed Villager lifts its head and shambles at you, still walking home.' },
|
|
53
|
+
hollowedminer: { aggro: 6, leash: 16, text: 'A Hollowed Miner turns from the dark with its pick raised. The mine keeps what it takes.' },
|
|
54
|
+
gallowscrow: { aggro: 5, leash: 12, text: 'A Gallows Crow screams and dives at you.' },
|
|
55
|
+
bellringer: { aggro: 4, leash: 9, text: 'The Bell-Ringer turns from the bell. "If it rings again, do not answer."' },
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The hunting ground: the box outside the palisade (the outer half, the chapel lane, the chapel and the mine). A hunter never locks on to
|
|
59
|
+
* a player inside the palisade, and a creature spawned outside never walks in (the ring is shut, only the gate is open and the hunt stops
|
|
60
|
+
* at it).
|
|
61
|
+
*/
|
|
62
|
+
export function inGallowmereHunt(x, z) {
|
|
63
|
+
const b = GALLOWMERE_BOX;
|
|
64
|
+
if (x < b.minX || x > b.maxX || z < b.minZ || z > b.maxZ)
|
|
65
|
+
return false;
|
|
66
|
+
return !inGallowmereSafePocket(x, z);
|
|
67
|
+
}
|
|
68
|
+
/** Where they stand: the Hollowed over the outer half and the mine, the crows at the hanging tree and the chapel, the Bell-Ringer under the bell. */
|
|
69
|
+
export const GALLOWMERE_SPOTS = [
|
|
70
|
+
// Hollowed Villagers: the abandoned cottages west and east, the cold camp, the lane's graves.
|
|
71
|
+
{ kind: 'hollowedvillager', x: 355, z: 606, leash: 6 },
|
|
72
|
+
{ kind: 'hollowedvillager', x: 360, z: 620, leash: 6 },
|
|
73
|
+
{ kind: 'hollowedvillager', x: 348, z: 620, leash: 5 },
|
|
74
|
+
{ kind: 'hollowedvillager', x: 356, z: 630, leash: 5 },
|
|
75
|
+
{ kind: 'hollowedvillager', x: 416, z: 624, leash: 6 },
|
|
76
|
+
{ kind: 'hollowedvillager', x: 425, z: 620, leash: 5 },
|
|
77
|
+
{ kind: 'hollowedvillager', x: 412, z: 636, leash: 5 },
|
|
78
|
+
{ kind: 'hollowedvillager', x: 430, z: 634, leash: 5 },
|
|
79
|
+
// Hollowed Miners: round the mine mouth and its track.
|
|
80
|
+
{ kind: 'hollowedminer', x: 427, z: 600, leash: 5 },
|
|
81
|
+
{ kind: 'hollowedminer', x: 431, z: 603, leash: 4 },
|
|
82
|
+
{ kind: 'hollowedminer', x: 424, z: 608, leash: 5 },
|
|
83
|
+
{ kind: 'hollowedminer', x: 428, z: 612, leash: 4 },
|
|
84
|
+
// Gallows Crows: the hanging tree and the lane's graves, the chapel's yard and ruined towers.
|
|
85
|
+
{ kind: 'gallowscrow', x: 348, z: 636, leash: 5 },
|
|
86
|
+
{ kind: 'gallowscrow', x: 352, z: 630, leash: 5 },
|
|
87
|
+
{ kind: 'gallowscrow', x: 349, z: 600, leash: 5 },
|
|
88
|
+
{ kind: 'gallowscrow', x: 354, z: 585, leash: 5 },
|
|
89
|
+
{ kind: 'gallowscrow', x: 350, z: 564, leash: 4 },
|
|
90
|
+
{ kind: 'gallowscrow', x: 368, z: 564, leash: 4 },
|
|
91
|
+
// The Bell-Ringer, under the bell at the north end of the chapel.
|
|
92
|
+
{ kind: 'bellringer', x: 359, z: 561, leash: 2 },
|
|
93
|
+
];
|
|
94
|
+
/** Movement of the hostile ones when they are not hunting. */
|
|
95
|
+
export const GALLOWMERE_PACE = {
|
|
96
|
+
hollowedvillager: { speed: 0.8, idleChance: 0.6, pause: [3, 9] },
|
|
97
|
+
hollowedminer: { speed: 0.9, idleChance: 0.55, pause: [3, 8] },
|
|
98
|
+
gallowscrow: { speed: 1.6, idleChance: 0.4, pause: [2, 5] },
|
|
99
|
+
bellringer: { speed: 0.9, idleChance: 0.85, pause: [5, 12] },
|
|
100
|
+
};
|
|
101
|
+
/** A place a hunter may never stand: inside the palisade. Used by the world's hunt and the smokes. */
|
|
102
|
+
export const GALLOWMERE_NO_HUNT_BOX = GALLOWMERE_PALISADE;
|
|
103
|
+
/** The chapel and the mine boxes, re-exported for the hunt tests (which part of the hunting ground a spot is in). */
|
|
104
|
+
export const GALLOWMERE_HUNT_PARTS = { chapel: GALLOWMERE_CHAPEL, mine: GALLOWMERE_MINE };
|
|
105
|
+
//# sourceMappingURL=gallowmereCreatures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallowmereCreatures.js","sourceRoot":"","sources":["../src/gallowmereCreatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GALLOWMERE'S PEOPLE (slice C12-2, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t22-gallowmere.md`; design sheet `gallowmere-2`,
|
|
3
|
+
* "The Cast"). Three people, each with a kind of their own on the player rig (frontend gallowmereFolk look): Warden Osric, the
|
|
4
|
+
* grizzled gatekeeper with a boar-spear who gives The Cracked Bell; Mother Hesk, the old herb-woman with her basket and lantern, who
|
|
5
|
+
* knows the ash; and Brother Calloway, the thin priest in ash-grey holding the bell rope. None is a fight (none of their kinds is in
|
|
6
|
+
* the attackable list), so a click is a talk. Osric and Hesk stand inside the palisade (the safe pocket); Calloway stays at the chapel.
|
|
7
|
+
*
|
|
8
|
+
* Every number is a WORLD tile. Backend gallowmereFolk.ts spawns them.
|
|
9
|
+
*/
|
|
10
|
+
export declare const GALLOWMERE_OSRIC_KIND = "gwosric";
|
|
11
|
+
export declare const GALLOWMERE_HESK_KIND = "gwhesk";
|
|
12
|
+
export declare const GALLOWMERE_CALLOWAY_KIND = "gwcalloway";
|
|
13
|
+
export declare const GALLOWMERE_OSRIC_NAME = "Warden Osric";
|
|
14
|
+
export declare const GALLOWMERE_HESK_NAME = "Mother Hesk";
|
|
15
|
+
export declare const GALLOWMERE_CALLOWAY_NAME = "Brother Calloway";
|
|
16
|
+
export type GallowmereFolkKind = typeof GALLOWMERE_OSRIC_KIND | typeof GALLOWMERE_HESK_KIND | typeof GALLOWMERE_CALLOWAY_KIND;
|
|
17
|
+
/** Where each stands, facing what they look at: Osric just inside the gate, Hesk at the shrine, Calloway at the chapel's nave. */
|
|
18
|
+
export declare const GALLOWMERE_FOLK: ReadonlyArray<{
|
|
19
|
+
id: string;
|
|
20
|
+
kind: GallowmereFolkKind;
|
|
21
|
+
name: string;
|
|
22
|
+
x: number;
|
|
23
|
+
z: number;
|
|
24
|
+
faceX: number;
|
|
25
|
+
faceZ: number;
|
|
26
|
+
leash: number;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function gallowmereFolkName(kind: string): string | null;
|
|
29
|
+
export declare function isGallowmereFolkKind(kind: string): kind is GallowmereFolkKind;
|
|
30
|
+
/** What a click on Calloway says when it is not a talk (never an attack): he keeps the bell rope and answers nothing he is not asked. */
|
|
31
|
+
export declare const GALLOWMERE_CALLOWAY_LINE = "Brother Calloway turns the bell rope over in his thin hands and does not look up. \"If it rings again, do not answer.\"";
|
|
32
|
+
//# sourceMappingURL=gallowmereFolk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallowmereFolk.d.ts","sourceRoot":"","sources":["../src/gallowmereFolk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG,OAAO,qBAAqB,GAAG,OAAO,oBAAoB,GAAG,OAAO,wBAAwB,CAAC;AAE9H,kIAAkI;AAClI,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;CACvH,CAIA,CAAC;AACF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AACD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAE7E;AAED,yIAAyI;AACzI,eAAO,MAAM,wBAAwB,4HAA0H,CAAC"}
|