@dreadwood-types/types 0.1.259 → 0.1.261

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,92 @@
1
+ /**
2
+ * THE WEST COAST (T68, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t68-west-coast.md`; design sheets `west-expansion` (overview),
3
+ * `west-saltmere-crescent`, `west-redclay-hook`, `west-last-signal` and `west-view-1..9`, ChatGPT proposals of 2026-10-08): a curved coast of three
4
+ * reaches west of the South Fields, levels 8-30, free. Saltmere Crescent 8-13 (saltmereCrescent.ts), then the Redclay Hook 14-22 and the Last Signal
5
+ * 23-30 (not built yet).
6
+ *
7
+ * Where it lives: NOT the 2026-10-08 x insert (it moved ~2000 literals and was a release of its own). The Western Kingdoms' strip of the grid GREW by eight
8
+ * chunk columns (constants.ts WESTERN_CHUNKS_X 22 -> 30): the West Coast is x 2240-2495, so `worldRegionAt` already says 'western' for it and every region
9
+ * rule (open land, safe zone, no Lower Kingdoms blessing, off the paper map) holds. Nothing west of x 2240 moved.
10
+ *
11
+ * How players reach it: a short free ferry. A skiff beached on the South Fields' west beach (WEST_COAST_FERRY_SOUTH) rows across to Saltmere's quay
12
+ * (saltmereCrescent.ts SALTMERE_FERRY), and a skiff on the quay rows back. Both are `caveentrance` entities drawn as the kit's `hbrowboat`; a click is a
13
+ * teleport across regions, with its own loading cover (areaTransitions.ts 'west-coast-ferry' and 'west-coast-ferry-out').
14
+ *
15
+ * Every number is a WORLD tile (the strip is in the final frame, no legacy frame applies).
16
+ */
17
+ import { WESTERN_END_X, WEST_COAST_ORIGIN_X } from './constants.js';
18
+ export const WEST_COAST_NAME = 'The West Coast';
19
+ export const WEST_COAST_CHART_ID = 'west-coast';
20
+ /**
21
+ * The strip's columns that belong to the West Coast (x 2240-2495): the whole height is sea but for the reaches laid on it. Rows 640-980 are kept free of
22
+ * land (the Lantern Wake pass vista draws far cliffs and pier stumps there, types lanternWakeShore.ts LANTERN_WAKE_PASS_VISTA).
23
+ */
24
+ export const WEST_COAST_STRIP = { minX: WEST_COAST_ORIGIN_X, maxX: WESTERN_END_X - 1 };
25
+ export function inWestCoastStrip(x) {
26
+ return x >= WEST_COAST_STRIP.minX && x <= WEST_COAST_STRIP.maxX;
27
+ }
28
+ /**
29
+ * The reaches' boxes (each reach's own layout file defines its own; these are the claims on the program board): Saltmere Crescent x 2284-2484 z 342-625,
30
+ * the Redclay Hook north of it (x 2284-2484, z 70-340, not built), the Last Signal beyond.
31
+ */
32
+ export const WEST_COAST_REACH_BOXES = {
33
+ saltmere: { minX: 2284, maxX: 2484, minZ: 342, maxZ: 625 },
34
+ redclay: { minX: 2284, maxX: 2484, minZ: 70, maxZ: 340 },
35
+ };
36
+ /** The whole coast's chart (types dungeonCharts.ts, served by backend /dungeon-maps): the strip's columns over the reaches' rows plus a margin of sea. */
37
+ export const WEST_COAST_CHART = {
38
+ id: WEST_COAST_CHART_ID,
39
+ title: WEST_COAST_NAME,
40
+ minX: WEST_COAST_ORIGIN_X + 4,
41
+ maxX: WESTERN_END_X - 1,
42
+ minZ: 60,
43
+ maxZ: 635,
44
+ };
45
+ /** The coast's own discovery zone (the title card and Explorer line for any tile on it that no reach's zone claims first). */
46
+ export const WEST_COAST_DISCOVERY_ZONE = {
47
+ id: 'west-coast',
48
+ label: WEST_COAST_NAME,
49
+ coordinateFrame: 'world',
50
+ minX: WEST_COAST_ORIGIN_X,
51
+ maxX: WESTERN_END_X - 1,
52
+ minZ: 0,
53
+ maxZ: 639,
54
+ };
55
+ /* ------------------------------------------------------------------ *
56
+ * The ferry (the way in and out)
57
+ * ------------------------------------------------------------------ */
58
+ /** The model the ferry's two skiffs draw as (a kit piece; `caveentrance` entities with a `hbrowboat-<facing>` style). */
59
+ export const WEST_COAST_FERRY_MODEL = 'hbrowboat';
60
+ /** The skiff on the South Fields' west beach (the sand at z 1064-1090, x 5-14; the cliff x 4-8 ends at z 1062) and where the way back lands. */
61
+ export const WEST_COAST_FERRY_SOUTH = { id: 'wc-ferry-south', x: 8, z: 1070, facing: 'n', style: `${WEST_COAST_FERRY_MODEL}-n` };
62
+ export const WEST_COAST_FERRY_SOUTH_LANDING = { x: 11, z: 1070 };
63
+ /** The sign by the South Fields' skiff. */
64
+ export const WEST_COAST_FERRY_SIGN = {
65
+ id: 'wc-ferry-sign',
66
+ x: 11,
67
+ z: 1068,
68
+ text: 'Saltmere ferry. Row across to Saltmere Crescent, levels 8 to 13: salt crabs on the shore and reavers on the pans. Free.',
69
+ };
70
+ /** The skiff on Saltmere's quay beach (the south-east shore of the crescent, saltmereCrescent.ts frame (182, 258)) and where the way in lands. */
71
+ export const WEST_COAST_FERRY_SALTMERE = { id: 'wc-ferry-saltmere', x: 2466, z: 608, facing: 'n', style: `${WEST_COAST_FERRY_MODEL}-n` };
72
+ export const WEST_COAST_FERRY_SALTMERE_LANDING = { x: 2461, z: 608 };
73
+ const FERRY_ENDS = [
74
+ { style: WEST_COAST_FERRY_SOUTH.style, x: WEST_COAST_FERRY_SOUTH.x, z: WEST_COAST_FERRY_SOUTH.z, end: 'out' },
75
+ { style: WEST_COAST_FERRY_SALTMERE.style, x: WEST_COAST_FERRY_SALTMERE.x, z: WEST_COAST_FERRY_SALTMERE.z, end: 'back' },
76
+ ];
77
+ /** Which end of the ferry an entity is (by style and tile): 'out' the South Fields' skiff, 'back' Saltmere's; null for anything else. */
78
+ export function westCoastFerryEnd(style, x, z) {
79
+ const hit = FERRY_ENDS.find((f) => f.style === style && f.x === x && f.z === z);
80
+ return hit ? hit.end : null;
81
+ }
82
+ /** The model a `caveentrance` of the ferry draws as, or null. */
83
+ export function westCoastFerryModel(style) {
84
+ return typeof style === 'string' && style.startsWith(`${WEST_COAST_FERRY_MODEL}-`) ? WEST_COAST_FERRY_MODEL : null;
85
+ }
86
+ export const WEST_COAST_FERRY_OUT_LABEL = 'Row across to Saltmere Crescent';
87
+ export const WEST_COAST_FERRY_BACK_LABEL = 'Row back to the South Fields';
88
+ export const WEST_COAST_FERRY_OUT_TEXT = 'You push the skiff off the sand and row west. The salt wind finds you before the shore does. Saltmere Crescent: levels 8 to 13.';
89
+ export const WEST_COAST_FERRY_BACK_TEXT = 'You row back east with the tide. The South Fields lie low and green ahead of you.';
90
+ /** The title the covers carry (AREA_TRANSITIONS 'west-coast-ferry' and 'west-coast-ferry-out'). */
91
+ export const WEST_COAST_FERRY_OUT_TITLE = 'The South Fields';
92
+ //# sourceMappingURL=westCoast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"westCoast.js","sourceRoot":"","sources":["../src/westCoast.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "@dreadwood-types/types",
3
- "version": "0.1.259",
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
- "./legacy": {
15
- "types": "./dist/legacy.d.ts",
16
- "import": "./dist/legacy.js",
17
- "default": "./dist/legacy.js"
18
- }
19
- },
20
- "files": [
21
- "dist"
22
- ],
23
- "scripts": {
24
- "build": "tsc -p tsconfig.json",
25
- "test": "node --test scripts/animation-test.mjs scripts/starter-jobs-test.mjs scripts/cooking-nudge-test.mjs scripts/surface-chart-test.mjs scripts/south-expansion-test.mjs scripts/rudd-test.mjs scripts/cave-map-test.mjs scripts/birch-combat-test.mjs scripts/fort-rook-bosses-test.mjs scripts/bounty-first-test.mjs scripts/bounty-high-tiers-test.mjs scripts/running-test.mjs scripts/energy-test.mjs scripts/starter-town-test.mjs scripts/starter-expansion-test.mjs scripts/five-arches-test.mjs scripts/landing-test.mjs scripts/cove-ship-test.mjs scripts/south-fields-quests-test.mjs scripts/south-fields-errands-test.mjs scripts/arcane-lands-test.mjs scripts/fair-folk-test.mjs scripts/fair-contests-test.mjs scripts/missing-shipment-test.mjs scripts/world-boss-ring-test.mjs scripts/ringstone-fight-test.mjs scripts/highstone-test.mjs scripts/fenstone-test.mjs scripts/hopewood-wildlife-test.mjs scripts/hollin-wildlife-test.mjs scripts/hopewood-quests-test.mjs scripts/western-train-test.mjs scripts/moving-train-test.mjs scripts/train-circuit-test.mjs scripts/forge-halt-test.mjs scripts/forge-polish-test.mjs scripts/western-station-test.mjs scripts/hollin-quests-test.mjs scripts/western-lost-supplies-test.mjs scripts/western-herbal-remedies-test.mjs scripts/western-field-shrine-test.mjs scripts/western-kingdoms-test.mjs scripts/lantern-wake-test.mjs scripts/brindlecross-test.mjs scripts/brindlecross-quest-test.mjs scripts/greenwood-wilds-test.mjs scripts/greenwood-wildlife-test.mjs scripts/greenwood-quest-test.mjs scripts/dwarf-road-wildlife-test.mjs scripts/dwarf-road-test.mjs scripts/riversend-test.mjs scripts/riversend-content-test.mjs scripts/gatewarden-rounds-test.mjs scripts/boss-e8-test.mjs scripts/lantern-wake-town-test.mjs scripts/world-regions-test.mjs scripts/copse-wildlife-test.mjs scripts/copse-quests-test.mjs scripts/marches-wildlife-test.mjs scripts/marches-quests-test.mjs scripts/train-seats-test.mjs scripts/lantern-wake-gallery-test.mjs scripts/lantern-wake-wildlife-test.mjs scripts/lantern-wake-quest-test.mjs scripts/dwarf-hold-test.mjs scripts/western-line-texts-test.mjs scripts/xp-test.mjs scripts/bank-test.mjs scripts/timed-access-test.mjs scripts/ground-items-test.mjs scripts/name-filter-test.mjs scripts/woodwork-logs-test.mjs scripts/area-gates-test.mjs scripts/frozen-dungeons-test.mjs scripts/roster-delta-test.mjs scripts/bow-ladder-test.mjs scripts/lantern-wake-ledge-test.mjs scripts/explorer-ledger-test.mjs scripts/ore-smithing-test.mjs scripts/red-waste-test.mjs scripts/red-waste-folk-test.mjs scripts/daily-hooks-test.mjs scripts/sparring-yard-test.mjs scripts/t16-siege-floe-beach-test.mjs scripts/mammoth-road-test.mjs scripts/mammoth-road-test.mjs scripts/gulls-map-test.mjs scripts/gulls-rook-test.mjs scripts/ride-the-line-test.mjs scripts/gallowmere-test.mjs scripts/gallowmere-content-test.mjs scripts/fishing-derby-test.mjs scripts/sled-run-test.mjs scripts/eastern-marches-a-test.mjs scripts/windward-chalkshell-test.mjs scripts/safe-pockets-test.mjs scripts/gallowmere-extras-test.mjs scripts/t53-high-ledge-skill-quests-test.mjs scripts/camp-traders-recommended-test.mjs",
26
- "dev": "tsc -p tsconfig.json --watch",
27
- "prepare": "npm run build",
28
- "prepublishOnly": "npm run build"
29
- },
30
- "devDependencies": {
31
- "typescript": "^5.9.2"
32
- },
33
- "repository": {
34
- "type": "git",
35
- "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
36
- },
37
- "publishConfig": {
38
- "access": "public"
39
- },
40
- "engines": {
41
- "node": ">=22"
42
- }
43
- }
1
+ {
2
+ "name": "@dreadwood-types/types",
3
+ "version": "0.1.261",
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
+ "./legacy": {
15
+ "types": "./dist/legacy.d.ts",
16
+ "import": "./dist/legacy.js",
17
+ "default": "./dist/legacy.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json",
25
+ "test": "node --test scripts/animation-test.mjs scripts/starter-jobs-test.mjs scripts/cooking-nudge-test.mjs scripts/surface-chart-test.mjs scripts/south-expansion-test.mjs scripts/rudd-test.mjs scripts/cave-map-test.mjs scripts/birch-combat-test.mjs scripts/fort-rook-bosses-test.mjs scripts/bounty-first-test.mjs scripts/bounty-high-tiers-test.mjs scripts/running-test.mjs scripts/energy-test.mjs scripts/starter-town-test.mjs scripts/starter-expansion-test.mjs scripts/five-arches-test.mjs scripts/landing-test.mjs scripts/cove-ship-test.mjs scripts/south-fields-quests-test.mjs scripts/south-fields-errands-test.mjs scripts/arcane-lands-test.mjs scripts/fair-folk-test.mjs scripts/fair-contests-test.mjs scripts/missing-shipment-test.mjs scripts/world-boss-ring-test.mjs scripts/ringstone-fight-test.mjs scripts/highstone-test.mjs scripts/fenstone-test.mjs scripts/hopewood-wildlife-test.mjs scripts/hollin-wildlife-test.mjs scripts/hopewood-quests-test.mjs scripts/western-train-test.mjs scripts/moving-train-test.mjs scripts/train-circuit-test.mjs scripts/forge-halt-test.mjs scripts/forge-polish-test.mjs scripts/western-station-test.mjs scripts/hollin-quests-test.mjs scripts/western-lost-supplies-test.mjs scripts/western-herbal-remedies-test.mjs scripts/western-field-shrine-test.mjs scripts/western-kingdoms-test.mjs scripts/lantern-wake-test.mjs scripts/brindlecross-test.mjs scripts/brindlecross-quest-test.mjs scripts/greenwood-wilds-test.mjs scripts/greenwood-wildlife-test.mjs scripts/greenwood-quest-test.mjs scripts/dwarf-road-wildlife-test.mjs scripts/dwarf-road-test.mjs scripts/riversend-test.mjs scripts/riversend-content-test.mjs scripts/gatewarden-rounds-test.mjs scripts/boss-e8-test.mjs scripts/lantern-wake-town-test.mjs scripts/world-regions-test.mjs scripts/copse-wildlife-test.mjs scripts/copse-quests-test.mjs scripts/marches-wildlife-test.mjs scripts/marches-quests-test.mjs scripts/train-seats-test.mjs scripts/lantern-wake-gallery-test.mjs scripts/lantern-wake-wildlife-test.mjs scripts/lantern-wake-quest-test.mjs scripts/dwarf-hold-test.mjs scripts/western-line-texts-test.mjs scripts/xp-test.mjs scripts/bank-test.mjs scripts/timed-access-test.mjs scripts/ground-items-test.mjs scripts/name-filter-test.mjs scripts/woodwork-logs-test.mjs scripts/area-gates-test.mjs scripts/frozen-dungeons-test.mjs scripts/roster-delta-test.mjs scripts/bow-ladder-test.mjs scripts/lantern-wake-ledge-test.mjs scripts/explorer-ledger-test.mjs scripts/ore-smithing-test.mjs scripts/red-waste-test.mjs scripts/red-waste-folk-test.mjs scripts/daily-hooks-test.mjs scripts/sparring-yard-test.mjs scripts/t16-siege-floe-beach-test.mjs scripts/mammoth-road-test.mjs scripts/mammoth-road-test.mjs scripts/gulls-map-test.mjs scripts/gulls-rook-test.mjs scripts/ride-the-line-test.mjs scripts/gallowmere-test.mjs scripts/gallowmere-content-test.mjs scripts/fishing-derby-test.mjs scripts/sled-run-test.mjs scripts/eastern-marches-a-test.mjs scripts/windward-chalkshell-test.mjs scripts/safe-pockets-test.mjs scripts/gallowmere-extras-test.mjs scripts/t53-high-ledge-skill-quests-test.mjs scripts/camp-traders-recommended-test.mjs scripts/west-coast-test.mjs",
26
+ "dev": "tsc -p tsconfig.json --watch",
27
+ "prepare": "npm run build",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "devDependencies": {
31
+ "typescript": "^5.9.2"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "engines": {
41
+ "node": ">=22"
42
+ }
43
+ }