@dreadwood-types/types 0.1.105 → 0.1.107

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,155 @@
1
+ /**
2
+ * THE CAPITAL AQUARIUM, the Great Aquarium's phase 2 (James, 2026-10-03: two concept sheets, "the capital grand
3
+ * aquarium", filed in the backend's design-references as `capital-aquarium`; plan
4
+ * `.cursor/task-plans/2026-10-03-capital-aquarium.md`).
5
+ *
6
+ * It stands in the Sound off the end of the King's Harbour's Royal Pier, on the Royal Way's axis, so the line that runs
7
+ * Great Gate, Way, keep, East Gate, Harbour Road, Royal Pier ends at its dome. A stone bridge runs on from the pier head
8
+ * to the Monumental Entrance Arch on the Grand Quay, an island of laid stone at the quay's height with the harbour's own
9
+ * quay edges. On it, sheet 2's cross turned to face the Capital: the octagonal Main Hall in the middle round the Grand
10
+ * Ocean tank, the Freshwater Gallery to the north, the Seas Gallery to the south, and the Notable Specimens and Full
11
+ * Collection wing to the east, where the Head Curator presents the title.
12
+ *
13
+ * It opens the SAME collection book as the Hope Beach aquarium (aquarium.ts): the five habitats' big tanks swim each
14
+ * player's own donations, and three more tanks and the Grand Ocean hold the Crown's own creatures. World tiles, absolute
15
+ * like the harbour's. Backend builder: capitalAquarium.ts (called from the harbour's build). Blender pieces:
16
+ * quest-workshop/scripts/capitalaquarium_v00N.py.
17
+ */
18
+ import { CAPITAL_AVENUE_Z } from './capital.js';
19
+ export const CAPITAL_AQUARIUM_NAME = 'The Capital Aquarium';
20
+ /** The Head Curator (NpcKind `headcurator`), in the Full Collection wing: the sheet's "Head Curator". */
21
+ export const HEAD_CURATOR_NAME = 'Head Curator Ambrose Kell';
22
+ /** The axis the whole aquarium stands on: the Royal Way's rows, the Harbour Road's and the Royal Pier's. */
23
+ export const CAPITAL_AQUARIUM_Z = CAPITAL_AVENUE_Z;
24
+ const inRect = (r, x, z) => x >= r.minX && x <= r.maxX && z >= r.minZ && z <= r.maxZ;
25
+ /**
26
+ * The bridge from the Royal Pier's head (harbour.ts HARBOUR_ROYAL_PIER.maxX is 853; a test holds the two together),
27
+ * five wide, three 5 x 5 Blender pieces. Its tiles are deck at the quay's height like the pier's.
28
+ */
29
+ export const CAPITAL_AQUARIUM_BRIDGE = {
30
+ minX: 854,
31
+ maxX: 868,
32
+ minZ: CAPITAL_AQUARIUM_Z - 2,
33
+ maxZ: CAPITAL_AQUARIUM_Z + 2,
34
+ };
35
+ export const CAPITAL_AQUARIUM_BRIDGE_MODEL = 'capaqbridge';
36
+ /** Centre tiles of the bridge pieces, the pier end first. */
37
+ export const CAPITAL_AQUARIUM_BRIDGE_PIECES = [856, 861, 866].map((x) => ({ x, z: CAPITAL_AQUARIUM_Z }));
38
+ /** The Grand Quay: the island the buildings stand on, laid stone at the quay's height, the harbour's quay edges round it. */
39
+ export const CAPITAL_AQUARIUM_QUAY = { minX: 869, maxX: 923, minZ: 129, maxZ: 191 };
40
+ /** The Monumental Entrance Arch on the quay's west edge, facing the bridge: its passage is the bridge's five rows. */
41
+ export const CAPITAL_AQUARIUM_ARCH = { id: 'capaq-arch', model: 'capaqarch', x: 871, z: CAPITAL_AQUARIUM_Z, facing: 'w' };
42
+ /**
43
+ * The Main Hall: a 23 x 23 octagon (half 11), its door west onto the Grand Quay and three more openings five wide on its
44
+ * north, south and east faces into the wings.
45
+ */
46
+ export const CAPITAL_AQUARIUM_HALL = { id: 'capaq-hall', model: 'capaqhall', x: 893, z: CAPITAL_AQUARIUM_Z, half: 11, facing: 'w' };
47
+ export const CAPITAL_AQUARIUM_WINGS = [
48
+ { id: 'capaq-north', model: 'capaqgallery', x: 893, z: CAPITAL_AQUARIUM_Z - 20, facing: 's', halfAcross: 5, halfDeep: 8, label: 'The Freshwater Gallery' },
49
+ { id: 'capaq-south', model: 'capaqgallery', x: 893, z: CAPITAL_AQUARIUM_Z + 20, facing: 'n', halfAcross: 5, halfDeep: 8, label: 'The Seas Gallery' },
50
+ { id: 'capaq-east', model: 'capaqgallery', x: 913, z: CAPITAL_AQUARIUM_Z, facing: 'w', halfAcross: 5, halfDeep: 8, label: 'Notable Specimens & the Full Collection' },
51
+ ];
52
+ /** The Grand Ocean tank in the middle of the hall: 7 x 7, solid. The Crown's sharks, ray, turtle and shoal. */
53
+ export const CAPITAL_AQUARIUM_OCEAN_TANK = { id: 'capaq-ocean', model: 'capaqoceantank', x: 893, z: CAPITAL_AQUARIUM_Z, facing: 'w' };
54
+ const N = CAPITAL_AQUARIUM_WINGS[0];
55
+ const S = CAPITAL_AQUARIUM_WINGS[1];
56
+ export const CAPITAL_AQUARIUM_TANKS = [
57
+ // The Freshwater Gallery: Pond Life and Water Plants on the west wall, Lake Fish and the Crown's River Fish on the east.
58
+ { id: 'capaq-tank-pond', model: 'capaqtankpond', habitat: 'pond', x: N.x - 4, z: N.z + 3, facing: 'e' },
59
+ { id: 'capaq-tank-plants', model: 'capaqtankplants', habitat: 'plants', x: N.x - 4, z: N.z - 4, facing: 'e' },
60
+ { id: 'capaq-tank-lake', model: 'capaqtanklake', habitat: 'lake', x: N.x + 4, z: N.z + 3, facing: 'w' },
61
+ { id: 'capaq-tank-river', model: 'capaqtankriver', habitat: null, x: N.x + 4, z: N.z - 4, facing: 'w' },
62
+ // The Seas Gallery: Coastal & Sea and the Crown's Crab & Shoreline on the west wall, Frozen Waters and the Deep Sea east.
63
+ { id: 'capaq-tank-sea', model: 'capaqtanksea', habitat: 'sea', x: S.x - 4, z: S.z - 3, facing: 'e' },
64
+ { id: 'capaq-tank-shore', model: 'capaqtankshore', habitat: null, x: S.x - 4, z: S.z + 4, facing: 'e' },
65
+ { id: 'capaq-tank-frozen', model: 'capaqtankfrozen', habitat: 'frozen', x: S.x + 4, z: S.z - 3, facing: 'w' },
66
+ { id: 'capaq-tank-deep', model: 'capaqtankdeep', habitat: null, x: S.x + 4, z: S.z + 4, facing: 'w' },
67
+ ];
68
+ const E = CAPITAL_AQUARIUM_WINGS[2];
69
+ /** The Notable Specimens display (3 x 3, solid) in the east wing, and the Full Collection display against its back wall. */
70
+ export const CAPITAL_AQUARIUM_SKELETON = { id: 'capaq-skeleton', model: 'capaqskeleton', x: E.x - 3, z: E.z, facing: 'w' };
71
+ export const CAPITAL_AQUARIUM_TITLE = { id: 'capaq-title', model: 'capaqtitle', x: E.x + 7, z: E.z, facing: 'w' };
72
+ /** The Head Curator's desk (the Hope Beach desk, 3 x 1) in front of the title, and where he stands behind it. */
73
+ export const CAPITAL_AQUARIUM_DESK = { id: 'capaq-desk', model: 'aqdesk', x: E.x + 4, z: E.z, facing: 'w' };
74
+ export const HEAD_CURATOR_SPOT = { x: E.x + 5, z: E.z };
75
+ /** The Collection Book on its lectern, inside the hall's door. */
76
+ export const CAPITAL_AQUARIUM_LECTERN = { id: 'capaq-lectern', model: 'aqlectern', x: 885, z: CAPITAL_AQUARIUM_Z - 4, facing: 'w' };
77
+ /** Plaque pedestals along the east wing's walls, and the quay's lamp standards and benches. */
78
+ export const CAPITAL_AQUARIUM_PLAQUES = [
79
+ { id: 'capaq-plaque-1', model: 'capaqplaque', x: E.x - 6, z: E.z - 4, facing: 's' },
80
+ { id: 'capaq-plaque-2', model: 'capaqplaque', x: E.x - 6, z: E.z + 4, facing: 'n' },
81
+ { id: 'capaq-plaque-3', model: 'capaqplaque', x: E.x + 1, z: E.z - 4, facing: 's' },
82
+ { id: 'capaq-plaque-4', model: 'capaqplaque', x: E.x + 1, z: E.z + 4, facing: 'n' },
83
+ ];
84
+ const Q = CAPITAL_AQUARIUM_QUAY;
85
+ export const CAPITAL_AQUARIUM_LAMPS = [
86
+ // Either side of the arch's inner mouth and of the hall's door, then round the quay's edge.
87
+ { id: 'capaq-lamp-arch-n', model: 'capaqlamp', x: 874, z: CAPITAL_AQUARIUM_Z - 3, facing: 'w' },
88
+ { id: 'capaq-lamp-arch-s', model: 'capaqlamp', x: 874, z: CAPITAL_AQUARIUM_Z + 3, facing: 'w' },
89
+ { id: 'capaq-lamp-door-n', model: 'capaqlamp', x: 880, z: CAPITAL_AQUARIUM_Z - 4, facing: 'w' },
90
+ { id: 'capaq-lamp-door-s', model: 'capaqlamp', x: 880, z: CAPITAL_AQUARIUM_Z + 4, facing: 'w' },
91
+ ...[Q.minZ + 2, Q.minZ + 14, Q.maxZ - 14, Q.maxZ - 2].map((z, i) => ({ id: `capaq-lamp-w-${i + 1}`, model: 'capaqlamp', x: Q.minX + 1, z, facing: 'w' })),
92
+ ...[877, 905, 919].map((x, i) => ({ id: `capaq-lamp-n-${i + 1}`, model: 'capaqlamp', x, z: Q.minZ + 1, facing: 'n' })),
93
+ ...[877, 905, 919].map((x, i) => ({ id: `capaq-lamp-s-${i + 1}`, model: 'capaqlamp', x, z: Q.maxZ - 1, facing: 's' })),
94
+ ...[Q.minZ + 12, Q.maxZ - 12].map((z, i) => ({ id: `capaq-lamp-e-${i + 1}`, model: 'capaqlamp', x: Q.maxX - 1, z, facing: 'e' })),
95
+ ];
96
+ export const CAPITAL_AQUARIUM_BENCHES = [
97
+ // On the Grand Quay either side of the walk from the arch to the door, facing it.
98
+ { id: 'capaq-bench-1', model: 'capaqbench', x: 877, z: CAPITAL_AQUARIUM_Z - 6, facing: 's' },
99
+ { id: 'capaq-bench-2', model: 'capaqbench', x: 877, z: CAPITAL_AQUARIUM_Z + 6, facing: 'n' },
100
+ ];
101
+ /** Every Blender model the aquarium places, for the asset tables and their tests. */
102
+ export const CAPITAL_AQUARIUM_MODELS = [
103
+ CAPITAL_AQUARIUM_BRIDGE_MODEL, 'capaqarch', 'capaqhall', 'capaqgallery', 'capaqoceantank',
104
+ 'capaqtankpond', 'capaqtankplants', 'capaqtanklake', 'capaqtanksea', 'capaqtankfrozen',
105
+ 'capaqtankriver', 'capaqtankdeep', 'capaqtankshore', 'capaqskeleton', 'capaqtitle', 'capaqplaque', 'capaqlamp', 'capaqbench',
106
+ ];
107
+ /** The big tank's water, in its own three.js frame (as AQUARIUM_TANK_INTERIOR is the Hope Beach tank's). */
108
+ export const CAPITAL_AQUARIUM_TANK_INTERIOR = { halfX: 2.2, y0: 0.95, y1: 2.55, z0: -0.28, z1: 0.36 };
109
+ export function onCapitalAquariumBridge(x, z) {
110
+ return inRect(CAPITAL_AQUARIUM_BRIDGE, x, z);
111
+ }
112
+ export function onCapitalAquariumQuay(x, z) {
113
+ return inRect(CAPITAL_AQUARIUM_QUAY, x, z);
114
+ }
115
+ /** Every tile the aquarium lays as deck over the Sound: the bridge and the Grand Quay. */
116
+ export function onCapitalAquariumGround(x, z) {
117
+ return onCapitalAquariumBridge(x, z) || onCapitalAquariumQuay(x, z);
118
+ }
119
+ /** The octagon's radius of a tile offset (the hall's walls stand where it is 10.5-11; inside is less). */
120
+ function octagonRadius(dx, dz) {
121
+ return Math.max(Math.abs(dx), Math.abs(dz), (Math.abs(dx) + Math.abs(dz)) / Math.SQRT2);
122
+ }
123
+ /** Inside the Main Hall's walls (the walkable room, not the ring its walls stand on). */
124
+ export function inCapitalAquariumHall(x, z) {
125
+ const H = CAPITAL_AQUARIUM_HALL;
126
+ return octagonRadius(x - H.x, z - H.z) < H.half - 0.5;
127
+ }
128
+ /** Inside one of the wings' walls. */
129
+ export function inCapitalAquariumWing(x, z) {
130
+ return CAPITAL_AQUARIUM_WINGS.some((w) => {
131
+ const alongX = w.facing === 'e' || w.facing === 'w';
132
+ const hx = alongX ? w.halfDeep : w.halfAcross;
133
+ const hz = alongX ? w.halfAcross : w.halfDeep;
134
+ return Math.abs(x - w.x) < hx && Math.abs(z - w.z) < hz;
135
+ });
136
+ }
137
+ /** Anywhere indoors in the Capital Aquarium: the hall or a wing. */
138
+ export function inCapitalAquarium(x, z) {
139
+ return inCapitalAquariumHall(x, z) || inCapitalAquariumWing(x, z);
140
+ }
141
+ /** The habitat whose big tank a model id draws (`capaqtankpond` -> 'pond'); null for the Crown's exhibition tanks. */
142
+ export function capitalAquariumHabitatForModel(model) {
143
+ return CAPITAL_AQUARIUM_TANKS.find((t) => t.model === model)?.habitat ?? null;
144
+ }
145
+ /**
146
+ * The walk-ins whose roofs lift together: standing in a wing, the camera hangs over the Main Hall, whose dome would
147
+ * otherwise stand between the player and the camera (and the same from the hall into a wing). The client hides every
148
+ * roof of the group while the player is inside any of them.
149
+ */
150
+ export const CAPITAL_AQUARIUM_ROOF_GROUP = 'capital-aquarium';
151
+ export function buildingRoofGroup(style) {
152
+ const model = (style ?? '').split('-')[0];
153
+ return model === CAPITAL_AQUARIUM_HALL.model || model === 'capaqgallery' ? CAPITAL_AQUARIUM_ROOF_GROUP : null;
154
+ }
155
+ //# sourceMappingURL=capitalAquarium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capitalAquarium.js","sourceRoot":"","sources":["../src/capitalAquarium.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,12 @@ export declare const MAP_HEIGHT: number;
71
71
  */
72
72
  export declare const UNDERGROUND_CHUNKS_X = 8;
73
73
  export declare const UNDERGROUND_ORIGIN_X: number;
74
+ /**
75
+ * Are two x positions on the same side of the map's east edge (the overworld, or the underground strip past it)?
76
+ * The client draws only the side the player is on: from the King's Harbour's far side (the Capital Aquarium) the
77
+ * strip's caves are inside the loaded chunk ring, and from a cave the Sound is.
78
+ */
79
+ export declare function sameSideOfUndergroundEdge(x: number, viewerX: number): boolean;
74
80
  export declare const GRID_CHUNKS_X: number;
75
81
  export declare const GRID_CHUNKS_Z: number;
76
82
  export declare const GRID_WIDTH: number;
@@ -286,7 +292,9 @@ export type NpcKind = 'seagull' | 'crab'
286
292
  /** The sheet's larger rock crab, green, along the Blood River in the Dreadwoods. */
287
293
  | 'greencrab' | 'seabass' | 'beagle' | 'trader' | 'woody' | 'rabbit' | 'petrabbit' | 'forbes' | 'jobless' | 'driver' | 'duck' | 'angler'
288
294
  /** Curator Elowen Vane, who keeps the Great Aquarium on Hope Beach (aquarium.ts). */
289
- | 'curator' | 'wilson' | 'pig' | 'cow' | 'chicken' | 'sheep'
295
+ | 'curator'
296
+ /** Head Curator Ambrose Kell, of the Capital Aquarium in the King's Harbour (capitalAquarium.ts). */
297
+ | 'headcurator' | 'wilson' | 'pig' | 'cow' | 'chicken' | 'sheep'
290
298
  /**
291
299
  * The farm's sheep gone feral, out in the woodland between the farm gate and
292
300
  * the beach path. A separate kind from `sheep` on purpose: the pen animals at
@@ -588,6 +596,15 @@ export declare function inCastleKeepRoom(dx: number, dz: number): boolean;
588
596
  * doorway is cut in the wrong wall.
589
597
  */
590
598
  export declare function stoneHouseDoorFacing(style: string | undefined): BuildingDoorFacing;
599
+ /**
600
+ * A diagonal facing (the Great Aquarium's tanks on the hall's angled walls, sheet E, 2026-10-03): the style's last
601
+ * token `ne`, `nw`, `se` or `sw` names where the front looks, as a world step (+X east, +Z south). Only a model whose
602
+ * CAPITAL_BUILDING_MODELS entry is `diagonal` takes one (buildingModelDiagonalFront); for anything else that token reads
603
+ * as stoneHouseDoorFacing always has.
604
+ */
605
+ export declare function buildingDiagonalFront(style: string | undefined): readonly [number, number] | null;
606
+ /** The yaw that turns local +Z (the front) to a diagonal front: the same (sin t, cos t) table as stoneHouseDoorFacing. */
607
+ export declare function diagonalFrontYaw(front: readonly [number, number]): number;
591
608
  /** The Capital keep's footprint half-extents: 25 by 19 tiles about its tile. */
592
609
  export declare const CASTLE_KEEP_HALF_X = 12;
593
610
  export declare const CASTLE_KEEP_HALF_Z = 9;
@@ -637,12 +654,39 @@ export type CapitalBuildingModel = {
637
654
  * its open-water neighbours drag it down into the water, the Long Pier's trap).
638
655
  */
639
656
  readonly rawHeight?: boolean;
657
+ /**
658
+ * A regular octagon on its square footprint (the Great Aquarium's hall, sheet E): the walls stand on the tiles whose
659
+ * octagon radius (buildingOctagonRadius) is past the room's and within the wall's, r - 0.5 to r + 0.25 for a footprint
660
+ * r tiles from its centre to its edge, and the cut corners beyond are open ground. The collision, the roof hide and the
661
+ * click snap all read it (the `shape` argument of buildingWallBlocksOffset and isBuildingInteriorOffset).
662
+ */
663
+ readonly octagon?: boolean;
664
+ /** May stand at 45 degrees: a style ending `-ne`, `-nw`, `-se` or `-sw` lays it along that diagonal (buildingDiagonalFront). */
665
+ readonly diagonal?: boolean;
666
+ /**
667
+ * More openings as wide as the door's mouth, on the walk-in's other sides (local: 'back' opposite the door, 'left' on
668
+ * local -X, 'right' on +X): the Capital Aquarium's hall opens into its three wings. The collision and the roof hide both
669
+ * read them (buildingExtraDoorFacings, the `extraDoors` argument of buildingWallBlocksOffset and isBuildingInteriorOffset).
670
+ */
671
+ readonly mouths?: ReadonlyArray<'back' | 'left' | 'right'>;
640
672
  readonly frontProps?: ReadonlyArray<readonly [number, number]>;
641
673
  };
642
674
  export declare const CAPITAL_BUILDING_MODELS: Readonly<Record<string, CapitalBuildingModel>>;
643
675
  /** The model id in a `capitalbuilding` style (its first dash token), when it names one. */
644
676
  export declare function capitalBuildingModelId(style: string | undefined): string | null;
645
677
  export declare function capitalBuildingModel(style: string | undefined): CapitalBuildingModel | null;
678
+ /** A Blender model's diagonal front, when it is a `diagonal` model standing on a diagonal (else null: n/e/s/w as ever). */
679
+ export declare function buildingModelDiagonalFront(style: string | undefined): readonly [number, number] | null;
680
+ /** The outline a walk-in's walls follow: a rectangle ring, or an `octagon` model's eight walls. */
681
+ export type BuildingShape = 'rect' | 'octagon';
682
+ export declare function buildingShapeOf(kind: EntityKind | string, style: string | undefined): BuildingShape;
683
+ /**
684
+ * The world facings of a walk-in's extra openings (CapitalBuildingModel.mouths), turned with the building: a hall whose
685
+ * door faces west with mouths back, left and right opens on all four sides. Empty for everything else.
686
+ */
687
+ export declare function buildingExtraDoorFacings(kind: EntityKind | string, style: string | undefined): BuildingDoorFacing[];
688
+ /** A tile's distance from a regular octagon's centre in the octagon's own measure: max(|dx|, |dz|, (|dx| + |dz|) / sqrt 2). */
689
+ export declare function buildingOctagonRadius(dx: number, dz: number): number;
646
690
  /**
647
691
  * A local-frame offset (door on +Z) turned to the building's facing: the
648
692
  * same turn the assets make (`facingYaw`) and visitFurnitureTiles applies.
@@ -701,14 +745,14 @@ export declare function buildingFootprintRadius(kind: EntityKind, scale: number
701
745
  * five-wide mouth. The corners always stay wall.
702
746
  */
703
747
  export declare function isBuildingDoorOffset(dx: number, dz: number, footprint: number | BuildingFootprint, doorFacing?: BuildingDoorFacing, halfW?: number): boolean;
704
- export declare function buildingWallBlocksOffset(dx: number, dz: number, footprint: number | BuildingFootprint, doorFacing?: BuildingDoorFacing, halfW?: number): boolean;
748
+ export declare function buildingWallBlocksOffset(dx: number, dz: number, footprint: number | BuildingFootprint, doorFacing?: BuildingDoorFacing, halfW?: number, shape?: BuildingShape, extraDoors?: readonly BuildingDoorFacing[]): boolean;
705
749
  /**
706
750
  * Inside the building for the roof hide: any footprint tile that is not a
707
751
  * blocked ring tile (the door, or the whole mouth, counts as inside). Pass
708
752
  * the mouth rule's `halfW` (buildingDoorHalfWidth(kind, style)) so the roof
709
753
  * lifts across a wide mouth exactly where the collision opens it.
710
754
  */
711
- export declare function isBuildingInteriorOffset(dx: number, dz: number, footprint: number | BuildingFootprint, doorFacing?: BuildingDoorFacing, halfW?: number): boolean;
755
+ export declare function isBuildingInteriorOffset(dx: number, dz: number, footprint: number | BuildingFootprint, doorFacing?: BuildingDoorFacing, halfW?: number, shape?: BuildingShape, extraDoors?: readonly BuildingDoorFacing[]): boolean;
712
756
  export declare function boulderFootprintRadius(style: string | undefined, scale: number | undefined): number;
713
757
  export declare function blockingFootprintRadius(kind: EntityKind, style: string | undefined, scale: number | undefined): number;
714
758
  export declare function isCaveTunnelExitStyle(style: string | undefined): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -111,6 +111,14 @@ export const MAP_HEIGHT = WORLD_HEIGHT;
111
111
  */
112
112
  export const UNDERGROUND_CHUNKS_X = 8;
113
113
  export const UNDERGROUND_ORIGIN_X = WORLD_WIDTH;
114
+ /**
115
+ * Are two x positions on the same side of the map's east edge (the overworld, or the underground strip past it)?
116
+ * The client draws only the side the player is on: from the King's Harbour's far side (the Capital Aquarium) the
117
+ * strip's caves are inside the loaded chunk ring, and from a cave the Sound is.
118
+ */
119
+ export function sameSideOfUndergroundEdge(x, viewerX) {
120
+ return (x >= UNDERGROUND_ORIGIN_X) === (viewerX >= UNDERGROUND_ORIGIN_X);
121
+ }
114
122
  export const GRID_CHUNKS_X = DEMO_CHUNKS_X + UNDERGROUND_CHUNKS_X;
115
123
  export const GRID_CHUNKS_Z = DEMO_CHUNKS_Z;
116
124
  export const GRID_WIDTH = CHUNK_SIZE * GRID_CHUNKS_X;
@@ -809,6 +817,30 @@ export function stoneHouseDoorFacing(style) {
809
817
  return 'negX';
810
818
  return 'posZ';
811
819
  }
820
+ /**
821
+ * A diagonal facing (the Great Aquarium's tanks on the hall's angled walls, sheet E, 2026-10-03): the style's last
822
+ * token `ne`, `nw`, `se` or `sw` names where the front looks, as a world step (+X east, +Z south). Only a model whose
823
+ * CAPITAL_BUILDING_MODELS entry is `diagonal` takes one (buildingModelDiagonalFront); for anything else that token reads
824
+ * as stoneHouseDoorFacing always has.
825
+ */
826
+ export function buildingDiagonalFront(style) {
827
+ const raw = style ?? '';
828
+ const dash = raw.lastIndexOf('-');
829
+ const token = dash > 0 ? raw.slice(dash + 1) : '';
830
+ if (token === 'ne')
831
+ return [1, -1];
832
+ if (token === 'nw')
833
+ return [-1, -1];
834
+ if (token === 'se')
835
+ return [1, 1];
836
+ if (token === 'sw')
837
+ return [-1, 1];
838
+ return null;
839
+ }
840
+ /** The yaw that turns local +Z (the front) to a diagonal front: the same (sin t, cos t) table as stoneHouseDoorFacing. */
841
+ export function diagonalFrontYaw(front) {
842
+ return Math.atan2(front[0], front[1]);
843
+ }
812
844
  /** The Capital keep's footprint half-extents: 25 by 19 tiles about its tile. */
813
845
  export const CASTLE_KEEP_HALF_X = 12;
814
846
  export const CASTLE_KEEP_HALF_Z = 9;
@@ -1028,23 +1060,32 @@ export const CAPITAL_BUILDING_MODELS = {
1028
1060
  // and rod rest are low or open enough to walk through.
1029
1061
  hensonfishingpeg: { across: 5, deep: 3, mouth: 0, walkable: true },
1030
1062
  hensonnetpeg: { across: 3, deep: 3, mouth: 0, walkable: true },
1031
- // The Great Aquarium on Hope Beach (aquarium.ts, quest-workshop aquarium_v001). The walkway's 3 x 3 pieces and the
1063
+ // The Great Aquarium on Hope Beach (aquarium.ts, quest-workshop aquarium_v001-v003). The walkway's 3 x 3 pieces and the
1032
1064
  // platform are decks over the sea: walkable and open (nothing blocks, no roof, outdoors) on their own tile height.
1033
1065
  // The start piece's arch posts stand one row landward of it, either side of the walk (frontProps); the platform's
1034
- // crates and barrels stand in the forecourt's corners.
1066
+ // crates and barrels and its two planters stand in the forecourt.
1035
1067
  aqpierstart: { across: 3, deep: 3, mouth: 0, walkable: true, open: true, rawHeight: true, frontProps: [[-2, 2], [2, 2]] },
1036
1068
  aqpiermiddle: { across: 3, deep: 3, mouth: 0, walkable: true, open: true, rawHeight: true },
1037
1069
  aqpierglass: { across: 3, deep: 3, mouth: 0, walkable: true, open: true, rawHeight: true },
1038
- aqplatform: { across: 15, deep: 13, mouth: 0, walkable: true, open: true, rawHeight: true, frontProps: [[-6, 5], [6, 5]] },
1039
- // The glass hall (style aquariumhall-mouth3-n: the double door is three wide), a walk-in on the platform. The ferns
1040
- // either side inside the door, the pump and the specimen table at the back are solid.
1041
- aquariumhall: { across: 11, deep: 9, mouth: 3, rawHeight: true, frontProps: [[-4, 3], [4, 3], [-3, -3], [3, -3]] },
1070
+ aqplatform: { across: 15, deep: 15, mouth: 0, walkable: true, open: true, rawHeight: true, frontProps: [[-6, 6], [6, 6], [-4, 6], [4, 6]] },
1071
+ // The hall (sheet E, v003): a regular octagon of glass with a glass dome, a walk-in on the platform, the double door
1072
+ // three wide (style aquariumhall-mouth3-n). The water system and the trophy display fill the two angled walls by the
1073
+ // door (their three tiles each are solid); the five tanks stand against the other walls as entities of their own.
1074
+ aquariumhall: {
1075
+ across: 11,
1076
+ deep: 11,
1077
+ mouth: 3,
1078
+ rawHeight: true,
1079
+ octagon: true,
1080
+ frontProps: [[-4, 2], [-3, 3], [-2, 4], [4, 2], [3, 3], [2, 4]],
1081
+ },
1042
1082
  // The five habitat tanks (kind aquariumtank), the curator's desk (dreadmodel) and the lectern (kind aquariumlectern).
1043
- aqtankpond: { across: 3, deep: 1, mouth: 0, solid: true },
1044
- aqtankplants: { across: 3, deep: 1, mouth: 0, solid: true },
1045
- aqtanklake: { across: 3, deep: 1, mouth: 0, solid: true },
1046
- aqtanksea: { across: 3, deep: 1, mouth: 0, solid: true },
1047
- aqtankfrozen: { across: 3, deep: 1, mouth: 0, solid: true },
1083
+ // Two tanks stand on the hall's angled walls at 45 degrees (style `<tank>-ne` / `-nw`, `diagonal`).
1084
+ aqtankpond: { across: 3, deep: 1, mouth: 0, solid: true, diagonal: true },
1085
+ aqtankplants: { across: 3, deep: 1, mouth: 0, solid: true, diagonal: true },
1086
+ aqtanklake: { across: 3, deep: 1, mouth: 0, solid: true, diagonal: true },
1087
+ aqtanksea: { across: 3, deep: 1, mouth: 0, solid: true, diagonal: true },
1088
+ aqtankfrozen: { across: 3, deep: 1, mouth: 0, solid: true, diagonal: true },
1048
1089
  aqdesk: { across: 3, deep: 1, mouth: 0, solid: true },
1049
1090
  aqlectern: { across: 1, deep: 1, mouth: 0, solid: true },
1050
1091
  fishingnetrack: { across: 1, deep: 1, mouth: 0, solid: false },
@@ -1053,6 +1094,37 @@ export const CAPITAL_BUILDING_MODELS = {
1053
1094
  catchbasket: { across: 1, deep: 1, mouth: 0, solid: false },
1054
1095
  forkedrodrest: { across: 1, deep: 1, mouth: 0, solid: false },
1055
1096
  frogmarkersign: { across: 1, deep: 1, mouth: 0, solid: true },
1097
+ // The Capital Aquarium in the King's Harbour (capitalAquarium.ts, quest-workshop capitalaquarium_v00N). The bridge
1098
+ // pieces are decks at the quay's height (walkable, open, on their own tile height over the Sound). The arch is walked
1099
+ // under: only its two piers stand on the ground (frontProps, local x +-3 and +-4 across its three rows).
1100
+ capaqbridge: { across: 5, deep: 5, mouth: 0, walkable: true, open: true, rawHeight: true },
1101
+ capaqarch: {
1102
+ across: 1,
1103
+ deep: 1,
1104
+ mouth: 0,
1105
+ open: true,
1106
+ frontProps: [-4, -3, 3, 4].flatMap((x) => [-1, 0, 1].map((z) => [x, z])),
1107
+ },
1108
+ // The Main Hall (style capaqhall-mouth5-w): a 23 x 23 octagon, its door five wide and three more openings as wide on
1109
+ // its back and sides into the wings. The wings (capaqgallery-mouth5-<side>) open on the hall's side.
1110
+ capaqhall: { across: 23, deep: 23, mouth: 5, octagon: true, mouths: ['back', 'left', 'right'] },
1111
+ capaqgallery: { across: 11, deep: 17, mouth: 5 },
1112
+ // The Grand Ocean tank, the big tanks (the book's five are kind aquariumtank, the Crown's three dreadmodels), the
1113
+ // Notable Specimens and Full Collection displays, plaques, lamp standards and benches: all solid.
1114
+ capaqoceantank: { across: 7, deep: 7, mouth: 0, solid: true },
1115
+ capaqtankpond: { across: 5, deep: 1, mouth: 0, solid: true },
1116
+ capaqtankplants: { across: 5, deep: 1, mouth: 0, solid: true },
1117
+ capaqtanklake: { across: 5, deep: 1, mouth: 0, solid: true },
1118
+ capaqtanksea: { across: 5, deep: 1, mouth: 0, solid: true },
1119
+ capaqtankfrozen: { across: 5, deep: 1, mouth: 0, solid: true },
1120
+ capaqtankriver: { across: 5, deep: 1, mouth: 0, solid: true },
1121
+ capaqtankdeep: { across: 5, deep: 1, mouth: 0, solid: true },
1122
+ capaqtankshore: { across: 5, deep: 1, mouth: 0, solid: true },
1123
+ capaqskeleton: { across: 3, deep: 3, mouth: 0, solid: true },
1124
+ capaqtitle: { across: 5, deep: 1, mouth: 0, solid: true },
1125
+ capaqplaque: { across: 1, deep: 1, mouth: 0, solid: true },
1126
+ capaqlamp: { across: 1, deep: 1, mouth: 0, solid: true },
1127
+ capaqbench: { across: 3, deep: 1, mouth: 0, solid: true },
1056
1128
  };
1057
1129
  /** The model id in a `capitalbuilding` style (its first dash token), when it names one. */
1058
1130
  export function capitalBuildingModelId(style) {
@@ -1063,6 +1135,46 @@ export function capitalBuildingModel(style) {
1063
1135
  const id = capitalBuildingModelId(style);
1064
1136
  return id ? CAPITAL_BUILDING_MODELS[id] : null;
1065
1137
  }
1138
+ /** A Blender model's diagonal front, when it is a `diagonal` model standing on a diagonal (else null: n/e/s/w as ever). */
1139
+ export function buildingModelDiagonalFront(style) {
1140
+ return capitalBuildingModel(style)?.diagonal === true ? buildingDiagonalFront(style) : null;
1141
+ }
1142
+ export function buildingShapeOf(kind, style) {
1143
+ if (kind !== 'capitalbuilding' && kind !== 'dreadmodel' && !isModelPropKind(kind))
1144
+ return 'rect';
1145
+ return capitalBuildingModel(style)?.octagon === true ? 'octagon' : 'rect';
1146
+ }
1147
+ /** A facing from a world direction (one of the four unit steps). */
1148
+ function facingOfStep(dx, dz) {
1149
+ if (dz > 0)
1150
+ return 'posZ';
1151
+ if (dz < 0)
1152
+ return 'negZ';
1153
+ return dx > 0 ? 'posX' : 'negX';
1154
+ }
1155
+ /**
1156
+ * The world facings of a walk-in's extra openings (CapitalBuildingModel.mouths), turned with the building: a hall whose
1157
+ * door faces west with mouths back, left and right opens on all four sides. Empty for everything else.
1158
+ */
1159
+ export function buildingExtraDoorFacings(kind, style) {
1160
+ if (kind !== 'capitalbuilding' && kind !== 'dreadmodel')
1161
+ return [];
1162
+ const mouths = capitalBuildingModel(style)?.mouths;
1163
+ if (!mouths || mouths.length === 0)
1164
+ return [];
1165
+ const facing = stoneHouseDoorFacing(style);
1166
+ const local = { back: [0, -1], left: [-1, 0], right: [1, 0] };
1167
+ return mouths.map((m) => {
1168
+ const [dx, dz] = turnBuildingOffset(local[m][0], local[m][1], facing);
1169
+ return facingOfStep(dx, dz);
1170
+ });
1171
+ }
1172
+ /** A tile's distance from a regular octagon's centre in the octagon's own measure: max(|dx|, |dz|, (|dx| + |dz|) / sqrt 2). */
1173
+ export function buildingOctagonRadius(dx, dz) {
1174
+ const ax = Math.abs(dx);
1175
+ const az = Math.abs(dz);
1176
+ return Math.max(ax, az, (ax + az) / Math.SQRT2);
1177
+ }
1066
1178
  /**
1067
1179
  * A local-frame offset (door on +Z) turned to the building's facing: the
1068
1180
  * same turn the assets make (`facingYaw`) and visitFurnitureTiles applies.
@@ -1276,16 +1388,26 @@ export function isBuildingDoorOffset(dx, dz, footprint, doorFacing = 'posZ', hal
1276
1388
  return dx === radiusX && Math.abs(dz) <= w;
1277
1389
  return dx === -radiusX && Math.abs(dz) <= w;
1278
1390
  }
1279
- export function buildingWallBlocksOffset(dx, dz, footprint, doorFacing = 'posZ', halfW = 0) {
1391
+ export function buildingWallBlocksOffset(dx, dz, footprint, doorFacing = 'posZ', halfW = 0, shape = 'rect', extraDoors = []) {
1280
1392
  const { radiusX, radiusZ } = normalizeBuildingFootprint(footprint);
1281
1393
  if (radiusX <= 0 || radiusZ <= 0)
1282
1394
  return false;
1283
1395
  if (Math.abs(dx) > radiusX || Math.abs(dz) > radiusZ)
1284
1396
  return false;
1397
+ const door = () => isBuildingDoorOffset(dx, dz, { radiusX, radiusZ }, doorFacing, halfW) ||
1398
+ extraDoors.some((f) => isBuildingDoorOffset(dx, dz, { radiusX, radiusZ }, f, halfW));
1399
+ if (shape === 'octagon') {
1400
+ // The eight walls (CapitalBuildingModel.octagon): the room inside r - 0.5, the cut corners past r + 0.25 open.
1401
+ const r = Math.min(radiusX, radiusZ);
1402
+ const rho = buildingOctagonRadius(dx, dz);
1403
+ if (rho <= r - 0.5 || rho > r + 0.25)
1404
+ return false;
1405
+ return !door();
1406
+ }
1285
1407
  const onWallRing = Math.abs(dx) === radiusX || Math.abs(dz) === radiusZ;
1286
1408
  if (!onWallRing)
1287
1409
  return false;
1288
- return !isBuildingDoorOffset(dx, dz, { radiusX, radiusZ }, doorFacing, halfW);
1410
+ return !door();
1289
1411
  }
1290
1412
  /**
1291
1413
  * Inside the building for the roof hide: any footprint tile that is not a
@@ -1293,13 +1415,19 @@ export function buildingWallBlocksOffset(dx, dz, footprint, doorFacing = 'posZ',
1293
1415
  * the mouth rule's `halfW` (buildingDoorHalfWidth(kind, style)) so the roof
1294
1416
  * lifts across a wide mouth exactly where the collision opens it.
1295
1417
  */
1296
- export function isBuildingInteriorOffset(dx, dz, footprint, doorFacing = 'posZ', halfW = 0) {
1418
+ export function isBuildingInteriorOffset(dx, dz, footprint, doorFacing = 'posZ', halfW = 0, shape = 'rect', extraDoors = []) {
1297
1419
  const { radiusX, radiusZ } = normalizeBuildingFootprint(footprint);
1298
1420
  if (radiusX <= 0 || radiusZ <= 0)
1299
1421
  return false;
1300
1422
  if (Math.abs(dx) > radiusX || Math.abs(dz) > radiusZ)
1301
1423
  return false;
1302
- return !buildingWallBlocksOffset(dx, dz, { radiusX, radiusZ }, doorFacing, halfW);
1424
+ if (shape === 'octagon') {
1425
+ // The room and the doors; the walls and the open corners outside them are not inside.
1426
+ if (buildingOctagonRadius(dx, dz) <= Math.min(radiusX, radiusZ) - 0.5)
1427
+ return true;
1428
+ return [doorFacing, ...extraDoors].some((f) => isBuildingDoorOffset(dx, dz, { radiusX, radiusZ }, f, halfW));
1429
+ }
1430
+ return !buildingWallBlocksOffset(dx, dz, { radiusX, radiusZ }, doorFacing, halfW, 'rect', extraDoors);
1303
1431
  }
1304
1432
  export function boulderFootprintRadius(style, scale) {
1305
1433
  if (style !== 'boulder')
@@ -1825,12 +1953,23 @@ export function visitBlockedWalkOffsets(kind, style, scale, visit, doorFacing =
1825
1953
  visit(0, 0);
1826
1954
  return;
1827
1955
  }
1956
+ // A diagonal piece (an aquarium tank on the hall's angled wall) covers the tiles along its length on the diagonal,
1957
+ // which runs square to its front: (-fz, fx).
1958
+ const front = model.diagonal ? buildingDiagonalFront(style) : null;
1959
+ if (front) {
1960
+ const half = Math.floor((model.across - 1) / 2);
1961
+ for (let k = -half; k <= half; k++)
1962
+ visit(-front[1] * k, front[0] * k);
1963
+ return;
1964
+ }
1828
1965
  const fp = buildingFootprintExtents(kind, scale, style);
1829
1966
  const facing = stoneHouseDoorFacing(style);
1830
1967
  const halfW = buildingDoorHalfWidth(kind, style);
1968
+ const shape = model.octagon ? 'octagon' : 'rect';
1969
+ const extraDoors = buildingExtraDoorFacings(kind, style);
1831
1970
  for (let dz = -fp.radiusZ; dz <= fp.radiusZ; dz++) {
1832
1971
  for (let dx = -fp.radiusX; dx <= fp.radiusX; dx++) {
1833
- if (!model.walkable && (model.solid || buildingWallBlocksOffset(dx, dz, fp, facing, halfW)))
1972
+ if (!model.walkable && (model.solid || buildingWallBlocksOffset(dx, dz, fp, facing, halfW, shape, extraDoors)))
1834
1973
  visit(dx, dz);
1835
1974
  }
1836
1975
  }