@dreadwood-types/types 0.1.47 → 0.1.51
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/adventure.d.ts +6 -6
- package/dist/adventure.d.ts.map +1 -1
- package/dist/appearance.d.ts +16 -6
- package/dist/appearance.d.ts.map +1 -1
- package/dist/appearance.js +43 -31
- package/dist/appearance.js.map +1 -1
- package/dist/areaTransitions.d.ts +1 -1
- package/dist/areaTransitions.d.ts.map +1 -1
- package/dist/areaTransitions.js +13 -0
- package/dist/areaTransitions.js.map +1 -1
- package/dist/bank.d.ts.map +1 -1
- package/dist/bearFloes.d.ts +83 -0
- package/dist/bearFloes.d.ts.map +1 -0
- package/dist/bearFloes.js +126 -0
- package/dist/bearFloes.js.map +1 -0
- package/dist/blacksmithing.d.ts +3 -0
- package/dist/blacksmithing.d.ts.map +1 -1
- package/dist/blacksmithing.js +81 -1
- package/dist/blacksmithing.js.map +1 -1
- package/dist/bloodRiver.d.ts +9 -6
- package/dist/bloodRiver.d.ts.map +1 -1
- package/dist/bloodRiver.js +19 -17
- package/dist/bloodRiver.js.map +1 -1
- package/dist/brokenRoad.d.ts.map +1 -1
- package/dist/capital.d.ts +541 -165
- package/dist/capital.d.ts.map +1 -1
- package/dist/capital.js +934 -163
- package/dist/capital.js.map +1 -1
- package/dist/charcoal.d.ts +43 -0
- package/dist/charcoal.d.ts.map +1 -0
- package/dist/charcoal.js +78 -0
- package/dist/charcoal.js.map +1 -0
- package/dist/clientConfig.d.ts +7 -2
- package/dist/clientConfig.d.ts.map +1 -1
- package/dist/clientConfig.js +14 -5
- package/dist/clientConfig.js.map +1 -1
- package/dist/constants.d.ts +196 -11
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +372 -21
- package/dist/constants.js.map +1 -1
- package/dist/cooking.d.ts.map +1 -1
- package/dist/cooking.js +2 -0
- package/dist/cooking.js.map +1 -1
- package/dist/dragonfire.d.ts +75 -0
- package/dist/dragonfire.d.ts.map +1 -0
- package/dist/dragonfire.js +73 -0
- package/dist/dragonfire.js.map +1 -0
- package/dist/dungeonCharts.d.ts +18 -0
- package/dist/dungeonCharts.d.ts.map +1 -0
- package/dist/dungeonCharts.js +67 -0
- package/dist/dungeonCharts.js.map +1 -0
- package/dist/equipment.d.ts +2 -0
- package/dist/equipment.d.ts.map +1 -1
- package/dist/equipment.js +37 -1
- package/dist/equipment.js.map +1 -1
- package/dist/frozenSet.d.ts +36 -0
- package/dist/frozenSet.d.ts.map +1 -0
- package/dist/frozenSet.js +58 -0
- package/dist/frozenSet.js.map +1 -0
- package/dist/goblinCave.d.ts +4 -4
- package/dist/goblinCave.d.ts.map +1 -1
- package/dist/goblinCave.js +1 -1
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +27 -0
- package/dist/groundItems.js.map +1 -1
- package/dist/harbour.d.ts +223 -0
- package/dist/harbour.d.ts.map +1 -0
- package/dist/harbour.js +264 -0
- package/dist/harbour.js.map +1 -0
- package/dist/iceDepths.d.ts +150 -0
- package/dist/iceDepths.d.ts.map +1 -0
- package/dist/iceDepths.js +132 -0
- package/dist/iceDepths.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/interiorFurniture.d.ts +57 -0
- package/dist/interiorFurniture.d.ts.map +1 -0
- package/dist/interiorFurniture.js +159 -0
- package/dist/interiorFurniture.js.map +1 -0
- package/dist/landmarks.d.ts +83 -59
- package/dist/landmarks.d.ts.map +1 -1
- package/dist/landmarks.js +194 -134
- package/dist/landmarks.js.map +1 -1
- package/dist/messages.d.ts +77 -5
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js.map +1 -1
- package/dist/mineCave.d.ts +7 -7
- package/dist/mineCave.d.ts.map +1 -1
- package/dist/mining.d.ts +8 -0
- package/dist/mining.d.ts.map +1 -1
- package/dist/mining.js +8 -0
- package/dist/mining.js.map +1 -1
- package/dist/questGuide.d.ts +30 -0
- package/dist/questGuide.d.ts.map +1 -0
- package/dist/questGuide.js +3 -0
- package/dist/questGuide.js.map +1 -0
- package/dist/quests.d.ts +29 -0
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +70 -0
- package/dist/quests.js.map +1 -1
- package/dist/snow.d.ts +2 -2
- package/dist/snow.d.ts.map +1 -1
- package/dist/snow.js +8 -5
- package/dist/snow.js.map +1 -1
- package/dist/spiderCave.d.ts.map +1 -1
- package/dist/travel.d.ts +7 -4
- package/dist/travel.d.ts.map +1 -1
- package/dist/travel.js +20 -4
- package/dist/travel.js.map +1 -1
- package/dist/woodwork.d.ts +8 -2
- package/dist/woodwork.d.ts.map +1 -1
- package/dist/woodwork.js +13 -3
- package/dist/woodwork.js.map +1 -1
- package/dist/xp.d.ts +18 -7
- package/dist/xp.d.ts.map +1 -1
- package/dist/xp.js +20 -9
- package/dist/xp.js.map +1 -1
- package/dist/zones.d.ts +5 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +8 -3
- package/dist/zones.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Furniture footprints inside walk-in buildings (2026-09-22, James: "npcs
|
|
3
|
+
* are still colliding with objects, e.g. Victoria is walking over a
|
|
4
|
+
* table").
|
|
5
|
+
*
|
|
6
|
+
* The interiors are meshes built on the client, so the server knew nothing
|
|
7
|
+
* about them: a shopkeeper's wander and a player's click-to-walk both ran
|
|
8
|
+
* straight through a counter. These are the pieces big enough to walk into,
|
|
9
|
+
* in the SAME local space the interior builders use: the door is at +z, the
|
|
10
|
+
* back wall at -z, x across the room, one unit to the tile. The builder
|
|
11
|
+
* that places the building turns them by its facing and stamps them into
|
|
12
|
+
* `blocked` (map.ts's stampInterior, capitalCity.ts's stampFurniture).
|
|
13
|
+
*
|
|
14
|
+
* Rectangles are deliberately a touch SMALLER than the mesh where it is
|
|
15
|
+
* close: over-stamping a doorway or a shopkeeper's own tile is worse than a
|
|
16
|
+
* shoulder clipping a counter's end.
|
|
17
|
+
*/
|
|
18
|
+
export type FurnitureRect = {
|
|
19
|
+
x0: number;
|
|
20
|
+
x1: number;
|
|
21
|
+
z0: number;
|
|
22
|
+
z1: number;
|
|
23
|
+
};
|
|
24
|
+
/** Calverton's stone houses, by variant (stoneHouse.ts rooms). */
|
|
25
|
+
export declare const STONE_HOUSE_FURNITURE: Record<string, FurnitureRect[]>;
|
|
26
|
+
/**
|
|
27
|
+
* The Capital's walk-in buildings, by the style the builder places them
|
|
28
|
+
* with (capitalInteriors.ts rooms). Same local space; `hx`/`hz` there are
|
|
29
|
+
* half-extents, so these are measured off the middle.
|
|
30
|
+
*/
|
|
31
|
+
export declare const CAPITAL_ROOM_FURNITURE: Record<string, FurnitureRect[]>;
|
|
32
|
+
export declare function stoneHouseFurniture(variant: string): FurnitureRect[];
|
|
33
|
+
export declare function capitalRoomFurniture(style: string | undefined): FurnitureRect[];
|
|
34
|
+
/**
|
|
35
|
+
* The furniture of a placed building, keyed by what it is rather than by
|
|
36
|
+
* its whole style (2026-09-25). A manor is styled by its roof (`blue-s`),
|
|
37
|
+
* so the style lookup never found the `manor` key and the long table was
|
|
38
|
+
* walk-through (finding F2); a style with look tokens in the middle
|
|
39
|
+
* (`<variant>-<tokens>-<facing>`) would have missed too. So: stonehouses by
|
|
40
|
+
* their variant (the style's FIRST token), the Capital's own kinds by kind,
|
|
41
|
+
* the Blender buildings by model id (the first token).
|
|
42
|
+
*
|
|
43
|
+
* Stamping: turn each rect by the building's facing (buildingStyleFacing)
|
|
44
|
+
* with visitFurnitureTiles. The room is built about the centre of the
|
|
45
|
+
* building's tile, so pass the tile's centre, `cx + 0.5, cz + 0.5`, to land
|
|
46
|
+
* each rect on the tiles its mesh covers; passing the tile index shifts the
|
|
47
|
+
* stamp half a tile toward -x/-z (what Calverton's map.ts does today).
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildingRoomFurniture(kind: string, style: string | undefined): FurnitureRect[];
|
|
50
|
+
/** The facing letter a building style ends with (its door side), or null when it has none (the keep). */
|
|
51
|
+
export declare function buildingStyleFacing(style: string | undefined): 'n' | 's' | 'e' | 'w' | null;
|
|
52
|
+
/**
|
|
53
|
+
* Every world tile a rectangle covers once the building's facing is applied.
|
|
54
|
+
* `facing` is the direction the door looks, as the builders record it.
|
|
55
|
+
*/
|
|
56
|
+
export declare function visitFurnitureTiles(cx: number, cz: number, facing: 'n' | 's' | 'e' | 'w', rect: FurnitureRect, visit: (x: number, z: number) => void): void;
|
|
57
|
+
//# sourceMappingURL=interiorFurniture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interiorFurniture.d.ts","sourceRoot":"","sources":["../src/interiorFurniture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAqCjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAmClE,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,EAAE,CAM/E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,EAAE,CAkB9F;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAI3F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAC7B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,GACpC,IAAI,CAmBN"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/** Calverton's stone houses, by variant (stoneHouse.ts rooms). */
|
|
2
|
+
export const STONE_HOUSE_FURNITURE = {
|
|
3
|
+
// The cutting table in the middle; the floor behind it is Victoria's beat.
|
|
4
|
+
clothes: [{ x0: -1, x1: 1, z0: -0.1, z1: 0.9 }],
|
|
5
|
+
// The potion counter across the back, and the cauldron in its corner.
|
|
6
|
+
potion: [
|
|
7
|
+
{ x0: -2.5, x1: 2.5, z0: -1.7, z1: -1 },
|
|
8
|
+
{ x0: -3.2, x1: -2.5, z0: -2.2, z1: -1.4 },
|
|
9
|
+
],
|
|
10
|
+
// The bank counter and the clerk's chest behind it.
|
|
11
|
+
bank: [{ x0: -3.5, x1: 2.3, z0: -0.775, z1: -0.025 }],
|
|
12
|
+
// The bar down the left, the hearth on the back wall, the common table
|
|
13
|
+
// and its benches in the middle (the door lane at x -0.6..0.6 stays open
|
|
14
|
+
// only as far as the table's end).
|
|
15
|
+
pub: [
|
|
16
|
+
{ x0: -3.25, x1: -2.55, z0: -3, z1: 2 },
|
|
17
|
+
{ x0: -0.6, x1: 1.2, z0: -1.9, z1: 0.9 },
|
|
18
|
+
{ x0: 2.3, x1: 3.5, z0: -2.6, z1: -1.4 },
|
|
19
|
+
],
|
|
20
|
+
// The kitchen's hearth breast on the back wall, the work table right of
|
|
21
|
+
// the door line, the dresser on the right wall.
|
|
22
|
+
kitchen: [
|
|
23
|
+
{ x0: 0.85, x1: 3.05, z0: -1.05, z1: -0.15 },
|
|
24
|
+
{ x0: 3.1, x1: 3.6, z0: -1.2, z1: 0.4 },
|
|
25
|
+
],
|
|
26
|
+
// The general shop's counter across the room.
|
|
27
|
+
shop: [{ x0: -1.8, x1: 2.6, z0: -1.9, z1: -1.2 }],
|
|
28
|
+
// The council table down the middle, its chairs either side, and the dais
|
|
29
|
+
// with the great chair across the back wall.
|
|
30
|
+
hall: [
|
|
31
|
+
{ x0: -1.5, x1: 1.5, z0: -1.9, z1: 2.5 },
|
|
32
|
+
{ x0: -2.6, x1: 2.6, z0: -3.4, z1: -2.4 },
|
|
33
|
+
],
|
|
34
|
+
// The inn's beds down the sides and the table between them.
|
|
35
|
+
inn: [
|
|
36
|
+
{ x0: -3.4, x1: -1.6, z0: -2.6, z1: 0.4 },
|
|
37
|
+
{ x0: 1.6, x1: 3.4, z0: -2.6, z1: 0.4 },
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The Capital's walk-in buildings, by the style the builder places them
|
|
42
|
+
* with (capitalInteriors.ts rooms). Same local space; `hx`/`hz` there are
|
|
43
|
+
* half-extents, so these are measured off the middle.
|
|
44
|
+
*/
|
|
45
|
+
export const CAPITAL_ROOM_FURNITURE = {
|
|
46
|
+
// The temple's altar on its step, across the back.
|
|
47
|
+
temple: [{ x0: -1.6, x1: 1.6, z0: -3.4, z1: -2.2 }],
|
|
48
|
+
// The forge hall: the hearth on the back wall and the two anvils before it.
|
|
49
|
+
forge: [
|
|
50
|
+
{ x0: -2.6, x1: 2.6, z0: -3.6, z1: -2.4 },
|
|
51
|
+
{ x0: -1.9, x1: -0.9, z0: -1.6, z1: -0.6 },
|
|
52
|
+
{ x0: 0.9, x1: 1.9, z0: -1.6, z1: -0.6 },
|
|
53
|
+
],
|
|
54
|
+
// The warehouse's stacks down both sides (its style token is `store`).
|
|
55
|
+
store: [
|
|
56
|
+
{ x0: -3.6, x1: -1.8, z0: -3, z1: 2 },
|
|
57
|
+
{ x0: 1.8, x1: 3.6, z0: -3, z1: 2 },
|
|
58
|
+
],
|
|
59
|
+
// The manor's long table in the middle of the hall.
|
|
60
|
+
manor: [{ x0: -1.3, x1: 1.3, z0: -1.8, z1: 1.8 }],
|
|
61
|
+
// The Grand Exchange hall (capitalbuilding `grandexchange`, measured from
|
|
62
|
+
// backend capital-workshop/scripts/grandexchange_v003.py; Blender's +y is
|
|
63
|
+
// toward the back, so its y is this frame's -z and x is x): the clerks'
|
|
64
|
+
// counter across the back third in two halves (x +-3.7, y 1.9, 5.4 x 0.8)
|
|
65
|
+
// with the clerk's gap in the middle, the three clerks' desks behind it
|
|
66
|
+
// (x -4.5 / 0 / 4.5, y 4.2, 1.6 x 0.8), and the benches along the side
|
|
67
|
+
// walls (x +-8.25, y -3.6 and -0.8, 0.5 x 1.9). The runner, the price board
|
|
68
|
+
// on the back wall and the chandeliers are not in the way.
|
|
69
|
+
grandexchange: [
|
|
70
|
+
{ x0: -6.35, x1: -1.05, z0: -2.25, z1: -1.55 },
|
|
71
|
+
{ x0: 1.05, x1: 6.35, z0: -2.25, z1: -1.55 },
|
|
72
|
+
{ x0: -5.25, x1: -3.75, z0: -4.55, z1: -3.85 },
|
|
73
|
+
{ x0: -0.75, x1: 0.75, z0: -4.55, z1: -3.85 },
|
|
74
|
+
{ x0: 3.75, x1: 5.25, z0: -4.55, z1: -3.85 },
|
|
75
|
+
{ x0: -8.45, x1: -8.05, z0: 2.7, z1: 4.5 },
|
|
76
|
+
{ x0: -8.45, x1: -8.05, z0: 0, z1: 1.5 },
|
|
77
|
+
{ x0: 8.05, x1: 8.45, z0: 2.7, z1: 4.5 },
|
|
78
|
+
{ x0: 8.05, x1: 8.45, z0: 0, z1: 1.5 },
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
export function stoneHouseFurniture(variant) {
|
|
82
|
+
return STONE_HOUSE_FURNITURE[variant] ?? [];
|
|
83
|
+
}
|
|
84
|
+
export function capitalRoomFurniture(style) {
|
|
85
|
+
if (!style)
|
|
86
|
+
return [];
|
|
87
|
+
for (const key of Object.keys(CAPITAL_ROOM_FURNITURE)) {
|
|
88
|
+
if (style === key || style.startsWith(`${key}-`))
|
|
89
|
+
return CAPITAL_ROOM_FURNITURE[key];
|
|
90
|
+
}
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The furniture of a placed building, keyed by what it is rather than by
|
|
95
|
+
* its whole style (2026-09-25). A manor is styled by its roof (`blue-s`),
|
|
96
|
+
* so the style lookup never found the `manor` key and the long table was
|
|
97
|
+
* walk-through (finding F2); a style with look tokens in the middle
|
|
98
|
+
* (`<variant>-<tokens>-<facing>`) would have missed too. So: stonehouses by
|
|
99
|
+
* their variant (the style's FIRST token), the Capital's own kinds by kind,
|
|
100
|
+
* the Blender buildings by model id (the first token).
|
|
101
|
+
*
|
|
102
|
+
* Stamping: turn each rect by the building's facing (buildingStyleFacing)
|
|
103
|
+
* with visitFurnitureTiles. The room is built about the centre of the
|
|
104
|
+
* building's tile, so pass the tile's centre, `cx + 0.5, cz + 0.5`, to land
|
|
105
|
+
* each rect on the tiles its mesh covers; passing the tile index shifts the
|
|
106
|
+
* stamp half a tile toward -x/-z (what Calverton's map.ts does today).
|
|
107
|
+
*/
|
|
108
|
+
export function buildingRoomFurniture(kind, style) {
|
|
109
|
+
const first = (style ?? '').split('-')[0] ?? '';
|
|
110
|
+
switch (kind) {
|
|
111
|
+
case 'stonehouse':
|
|
112
|
+
return stoneHouseFurniture(first);
|
|
113
|
+
case 'manor':
|
|
114
|
+
return CAPITAL_ROOM_FURNITURE.manor ?? [];
|
|
115
|
+
case 'temple':
|
|
116
|
+
return CAPITAL_ROOM_FURNITURE.temple ?? [];
|
|
117
|
+
case 'forgehall':
|
|
118
|
+
return CAPITAL_ROOM_FURNITURE.forge ?? [];
|
|
119
|
+
case 'warehouse':
|
|
120
|
+
return CAPITAL_ROOM_FURNITURE.store ?? [];
|
|
121
|
+
case 'capitalbuilding':
|
|
122
|
+
return Object.prototype.hasOwnProperty.call(CAPITAL_ROOM_FURNITURE, first) ? CAPITAL_ROOM_FURNITURE[first] : [];
|
|
123
|
+
default:
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/** The facing letter a building style ends with (its door side), or null when it has none (the keep). */
|
|
128
|
+
export function buildingStyleFacing(style) {
|
|
129
|
+
const parts = (style ?? '').split('-');
|
|
130
|
+
const last = parts[parts.length - 1];
|
|
131
|
+
return last === 'n' || last === 's' || last === 'e' || last === 'w' ? last : null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Every world tile a rectangle covers once the building's facing is applied.
|
|
135
|
+
* `facing` is the direction the door looks, as the builders record it.
|
|
136
|
+
*/
|
|
137
|
+
export function visitFurnitureTiles(cx, cz, facing, rect, visit) {
|
|
138
|
+
const step = 0.2;
|
|
139
|
+
for (let lx = rect.x0 + step * 0.5; lx < rect.x1; lx += step) {
|
|
140
|
+
for (let lz = rect.z0 + step * 0.5; lz < rect.z1; lz += step) {
|
|
141
|
+
let dx = lx;
|
|
142
|
+
let dz = lz;
|
|
143
|
+
if (facing === 'n') {
|
|
144
|
+
dx = -lx;
|
|
145
|
+
dz = -lz;
|
|
146
|
+
}
|
|
147
|
+
else if (facing === 'e') {
|
|
148
|
+
dx = lz;
|
|
149
|
+
dz = -lx;
|
|
150
|
+
}
|
|
151
|
+
else if (facing === 'w') {
|
|
152
|
+
dx = -lz;
|
|
153
|
+
dz = lx;
|
|
154
|
+
}
|
|
155
|
+
visit(Math.floor(cx + dx), Math.floor(cz + dz));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=interiorFurniture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interiorFurniture.js","sourceRoot":"","sources":["../src/interiorFurniture.ts"],"names":[],"mappings":"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"}
|
package/dist/landmarks.d.ts
CHANGED
|
@@ -69,19 +69,19 @@ export declare const HOPE_BEACH_LANDING: {
|
|
|
69
69
|
* FROZEN_LAKE_CENTER is declared further down; its z is 236.
|
|
70
70
|
*/
|
|
71
71
|
/** The two rows of the pier walk, and the columns it runs over. */
|
|
72
|
-
export declare const BRANSONS_LANDING_PIER_MIN_Z =
|
|
73
|
-
export declare const BRANSONS_LANDING_PIER_MAX_Z =
|
|
72
|
+
export declare const BRANSONS_LANDING_PIER_MIN_Z = 300;
|
|
73
|
+
export declare const BRANSONS_LANDING_PIER_MAX_Z = 301;
|
|
74
74
|
/** The seaward end of the walk (the head's west column) and its foot on the shore. */
|
|
75
75
|
export declare const BRANSONS_LANDING_PIER_MIN_X = 3;
|
|
76
76
|
export declare const BRANSONS_LANDING_PIER_FOOT_X = 21;
|
|
77
77
|
/** The 4x4 landing head at the seaward end, a row wider than the walk each side. */
|
|
78
78
|
export declare const BRANSONS_LANDING_HEAD_MAX_X = 6;
|
|
79
|
-
export declare const BRANSONS_LANDING_HEAD_MIN_Z =
|
|
80
|
-
export declare const BRANSONS_LANDING_HEAD_MAX_Z =
|
|
79
|
+
export declare const BRANSONS_LANDING_HEAD_MIN_Z = 299;
|
|
80
|
+
export declare const BRANSONS_LANDING_HEAD_MAX_Z = 302;
|
|
81
81
|
/** Where the gangplank leaves the head for the ship: the head's south row. */
|
|
82
82
|
export declare const BRANSONS_LANDING_GANGPLANK: {
|
|
83
83
|
readonly x: 4;
|
|
84
|
-
readonly z:
|
|
84
|
+
readonly z: 302;
|
|
85
85
|
};
|
|
86
86
|
/**
|
|
87
87
|
* The ship, lying east-west along the head's south side with its bow to the
|
|
@@ -90,7 +90,7 @@ export declare const BRANSONS_LANDING_GANGPLANK: {
|
|
|
90
90
|
*/
|
|
91
91
|
export declare const BRANSONS_LANDING_SHIP: {
|
|
92
92
|
readonly x: 6;
|
|
93
|
-
readonly z:
|
|
93
|
+
readonly z: 305;
|
|
94
94
|
};
|
|
95
95
|
export declare const BRANSONS_LANDING_SHIP_STYLE = "landingship-face270";
|
|
96
96
|
/**
|
|
@@ -101,8 +101,8 @@ export declare const BRANSONS_LANDING_SHIP_STYLE = "landingship-face270";
|
|
|
101
101
|
export declare const BRANSONS_LANDING_SHIP_HULL: {
|
|
102
102
|
readonly minX: 1;
|
|
103
103
|
readonly maxX: 11;
|
|
104
|
-
readonly minZ:
|
|
105
|
-
readonly maxZ:
|
|
104
|
+
readonly minZ: 303;
|
|
105
|
+
readonly maxZ: 307;
|
|
106
106
|
};
|
|
107
107
|
/**
|
|
108
108
|
* Bay water by row: the columns from the rim water (x 0-1) east that the
|
|
@@ -113,57 +113,63 @@ export declare const BRANSONS_LANDING_COVE_ROWS: ReadonlyArray<{
|
|
|
113
113
|
maxX: number;
|
|
114
114
|
}>;
|
|
115
115
|
/** The rim rows the bay replaces: the west rim loop places no crag on these. */
|
|
116
|
-
export declare const BRANSONS_LANDING_COVE_MIN_Z =
|
|
117
|
-
export declare const BRANSONS_LANDING_COVE_MAX_Z =
|
|
116
|
+
export declare const BRANSONS_LANDING_COVE_MIN_Z = 288;
|
|
117
|
+
export declare const BRANSONS_LANDING_COVE_MAX_Z = 315;
|
|
118
118
|
/** Everything the landing owns, for the scenery sweep and the discovery zone. */
|
|
119
119
|
export declare const BRANSONS_LANDING_WORKS: {
|
|
120
120
|
readonly minX: 0;
|
|
121
121
|
readonly maxX: 34;
|
|
122
|
-
readonly minZ:
|
|
123
|
-
readonly maxZ:
|
|
122
|
+
readonly minZ: 284;
|
|
123
|
+
readonly maxZ: 319;
|
|
124
124
|
};
|
|
125
125
|
/** Oskar, Branson's mate, on the shore a step off the pier foot, facing the boards. */
|
|
126
|
+
/**
|
|
127
|
+
* Oskar stands on the landing head, on the ship's side of it, where the
|
|
128
|
+
* gangway comes ashore: a boat man belongs beside his boat (James,
|
|
129
|
+
* 2026-09-22), not sixteen tiles up the pier on the sand. Passengers land
|
|
130
|
+
* on the head beside him and walk the planks in past the board.
|
|
131
|
+
*/
|
|
126
132
|
export declare const BRANSONS_LANDING_OSKAR: {
|
|
127
|
-
readonly x:
|
|
128
|
-
readonly z:
|
|
129
|
-
readonly faceX:
|
|
130
|
-
readonly faceZ:
|
|
133
|
+
readonly x: 5;
|
|
134
|
+
readonly z: 302;
|
|
135
|
+
readonly faceX: 9;
|
|
136
|
+
readonly faceZ: 301;
|
|
131
137
|
};
|
|
132
138
|
/** The sailings board, up the apron from Oskar with room to walk round it. */
|
|
133
139
|
export declare const BRANSONS_LANDING_BOARD: {
|
|
134
140
|
readonly x: 26;
|
|
135
|
-
readonly z:
|
|
141
|
+
readonly z: 297;
|
|
136
142
|
};
|
|
137
143
|
/** The hut on the shelf north of the pier foot, its door to the south, and the steps down. */
|
|
138
144
|
export declare const BRANSONS_LANDING_HUT: {
|
|
139
145
|
readonly x: 27;
|
|
140
|
-
readonly z:
|
|
146
|
+
readonly z: 292;
|
|
141
147
|
};
|
|
142
148
|
export declare const BRANSONS_LANDING_HUT_LANTERN: {
|
|
143
149
|
readonly x: 28;
|
|
144
|
-
readonly z:
|
|
150
|
+
readonly z: 294;
|
|
145
151
|
};
|
|
146
152
|
export declare const BRANSONS_LANDING_STEPS: readonly [{
|
|
147
153
|
readonly x: 27;
|
|
148
|
-
readonly z:
|
|
154
|
+
readonly z: 294;
|
|
149
155
|
}, {
|
|
150
156
|
readonly x: 27;
|
|
151
|
-
readonly z:
|
|
157
|
+
readonly z: 295;
|
|
152
158
|
}];
|
|
153
159
|
/** The shelf the hut stands on, its ledge row, and the apron the pier leaves from. */
|
|
154
160
|
export declare const BRANSONS_LANDING_SHELF_HEIGHT = 3;
|
|
155
|
-
export declare const BRANSONS_LANDING_LEDGE_Z =
|
|
161
|
+
export declare const BRANSONS_LANDING_LEDGE_Z = 294;
|
|
156
162
|
export declare const BRANSONS_LANDING_APRON: {
|
|
157
163
|
readonly minX: 21;
|
|
158
164
|
readonly maxX: 33;
|
|
159
|
-
readonly minZ:
|
|
160
|
-
readonly maxZ:
|
|
165
|
+
readonly minZ: 295;
|
|
166
|
+
readonly maxZ: 307;
|
|
161
167
|
};
|
|
162
168
|
export declare const BRANSONS_LANDING_APRON_HEIGHT = 1;
|
|
163
169
|
/** A lantern post on the apron, south of the walk, and the stores stacked by the board. */
|
|
164
170
|
export declare const BRANSONS_LANDING_APRON_LANTERN: {
|
|
165
171
|
readonly x: 24;
|
|
166
|
-
readonly z:
|
|
172
|
+
readonly z: 304;
|
|
167
173
|
};
|
|
168
174
|
/** Ice floes on the bay water, clear of the ship and the pier. */
|
|
169
175
|
export declare const BRANSONS_LANDING_FLOES: ReadonlyArray<{
|
|
@@ -178,12 +184,12 @@ export declare function isBransonsLandingDeckTile(x: number, z: number): boolean
|
|
|
178
184
|
/** Kept for the rim loop and older callers: the crag line the bay now cuts through. */
|
|
179
185
|
export declare const FROZEN_SHORE_JETTY: {
|
|
180
186
|
readonly x: 2;
|
|
181
|
-
readonly z:
|
|
187
|
+
readonly z: 301;
|
|
182
188
|
};
|
|
183
|
-
/** Where a voyage puts you ashore: the
|
|
189
|
+
/** Where a voyage puts you ashore: the landing head, off the ship's gangway. */
|
|
184
190
|
export declare const FROZEN_SHORE_LANDING: {
|
|
185
|
-
readonly x:
|
|
186
|
-
readonly z:
|
|
191
|
+
readonly x: 4;
|
|
192
|
+
readonly z: 301;
|
|
187
193
|
};
|
|
188
194
|
/**
|
|
189
195
|
* First smashed span, about a third of the way out - far enough that the walk
|
|
@@ -278,6 +284,8 @@ export declare const PIER_CAST_MAX_TILES = 10;
|
|
|
278
284
|
* timer and after every catch.
|
|
279
285
|
*/
|
|
280
286
|
export declare const HOPE_PIER_SMELT_SPOT_COUNT = 5;
|
|
287
|
+
/** Crab cage spots along the side of the Long Pier at once, redrawn like the smelt. */
|
|
288
|
+
export declare const HOPE_BEACH_CRAB_SPOT_COUNT = 4;
|
|
281
289
|
/**
|
|
282
290
|
* Chebyshev tiles around HOPE_PIER_SHIP_X/Z no pier fish may sit in. The
|
|
283
291
|
* moored ship has a one-tile footprint but its hull mesh covers a few tiles
|
|
@@ -685,20 +693,20 @@ export declare const ANNES_ZONE_NORTH = 16;
|
|
|
685
693
|
export declare const ANNES_ZONE_SOUTH = 40;
|
|
686
694
|
/** Neighbours around Anne's green. Z stays local until world expansion. */
|
|
687
695
|
export declare const ANNES_NEIGHBOUR_HOMES: readonly [{
|
|
688
|
-
readonly name:
|
|
696
|
+
readonly name: "Eldric";
|
|
689
697
|
readonly x: number;
|
|
690
698
|
readonly z: number;
|
|
691
|
-
readonly style:
|
|
699
|
+
readonly style: "cottage-slate";
|
|
692
700
|
}, {
|
|
693
|
-
readonly name:
|
|
701
|
+
readonly name: "Rowan";
|
|
694
702
|
readonly x: number;
|
|
695
703
|
readonly z: number;
|
|
696
|
-
readonly style:
|
|
704
|
+
readonly style: "cottage-moss";
|
|
697
705
|
}, {
|
|
698
|
-
readonly name:
|
|
706
|
+
readonly name: "Mara";
|
|
699
707
|
readonly x: number;
|
|
700
708
|
readonly z: number;
|
|
701
|
-
readonly style:
|
|
709
|
+
readonly style: "cottage-russet";
|
|
702
710
|
}];
|
|
703
711
|
export declare const ANNES_GREEN: {
|
|
704
712
|
readonly x: number;
|
|
@@ -1065,7 +1073,7 @@ export declare function inNorthernGarrison(x: number, z: number): boolean;
|
|
|
1065
1073
|
*/
|
|
1066
1074
|
export declare const FROZEN_LAKE_CENTER: {
|
|
1067
1075
|
readonly x: 56;
|
|
1068
|
-
readonly z:
|
|
1076
|
+
readonly z: 300;
|
|
1069
1077
|
};
|
|
1070
1078
|
export declare const FROZEN_LAKE_RX = 14;
|
|
1071
1079
|
export declare const FROZEN_LAKE_RZ = 12;
|
|
@@ -1085,13 +1093,13 @@ export declare const FROZEN_LAKE_HOLES: readonly [{
|
|
|
1085
1093
|
}];
|
|
1086
1094
|
/** Where each fisher sits, and the hole they face. */
|
|
1087
1095
|
export declare const FROZEN_LAKE_FISHERS: readonly [{
|
|
1088
|
-
readonly name:
|
|
1096
|
+
readonly name: "Halvard";
|
|
1089
1097
|
readonly x: number;
|
|
1090
1098
|
readonly z: number;
|
|
1091
1099
|
readonly faceX: number;
|
|
1092
1100
|
readonly faceZ: number;
|
|
1093
1101
|
}, {
|
|
1094
|
-
readonly name:
|
|
1102
|
+
readonly name: "Ingrid";
|
|
1095
1103
|
readonly x: number;
|
|
1096
1104
|
readonly z: number;
|
|
1097
1105
|
readonly faceX: number;
|
|
@@ -1100,7 +1108,7 @@ export declare const FROZEN_LAKE_FISHERS: readonly [{
|
|
|
1100
1108
|
/** Where the jetty leaves the east bank, and how many tiles it reaches west. */
|
|
1101
1109
|
export declare const FROZEN_LAKE_JETTY: {
|
|
1102
1110
|
readonly x: number;
|
|
1103
|
-
readonly z:
|
|
1111
|
+
readonly z: 300;
|
|
1104
1112
|
readonly length: 4;
|
|
1105
1113
|
};
|
|
1106
1114
|
/**
|
|
@@ -1130,12 +1138,12 @@ export declare function onFrozenLakeIce(x: number, z: number): boolean;
|
|
|
1130
1138
|
*/
|
|
1131
1139
|
export declare const FROZEN_PLATEAU_H = 5;
|
|
1132
1140
|
/** Where the lowland starts climbing to the plateau, and where it is level. */
|
|
1133
|
-
export declare const FROZEN_PLATEAU_RISE_Z =
|
|
1134
|
-
export declare const FROZEN_PLATEAU_TOP_Z =
|
|
1141
|
+
export declare const FROZEN_PLATEAU_RISE_Z = 278;
|
|
1142
|
+
export declare const FROZEN_PLATEAU_TOP_Z = 262;
|
|
1135
1143
|
/** The hills east of here are left as they are. */
|
|
1136
1144
|
export declare const FROZEN_PLATEAU_MAX_X = 46;
|
|
1137
|
-
export declare const CRYSTAL_GORGE_MIN_Z =
|
|
1138
|
-
export declare const CRYSTAL_GORGE_MAX_Z =
|
|
1145
|
+
export declare const CRYSTAL_GORGE_MIN_Z = 222;
|
|
1146
|
+
export declare const CRYSTAL_GORGE_MAX_Z = 230;
|
|
1139
1147
|
export declare const CRYSTAL_GORGE_MAX_X = 44;
|
|
1140
1148
|
/** The bridge column and the deck's half-width in tiles. */
|
|
1141
1149
|
export declare const CRYSTAL_BRIDGE_X = 21;
|
|
@@ -1145,9 +1153,9 @@ export declare const FROZEN_HALLWAY_HALF_W = 4;
|
|
|
1145
1153
|
export declare const FROZEN_HALLWAY_WALL_T = 5;
|
|
1146
1154
|
export declare const FROZEN_HALLWAY_WALL_H = 10;
|
|
1147
1155
|
/** The rune arch at the mouth and the iron gate at the far end. */
|
|
1148
|
-
export declare const FROZEN_HALLWAY_MOUTH_Z =
|
|
1149
|
-
export declare const FROZEN_HALLWAY_GATE_Z =
|
|
1150
|
-
export declare const FROZEN_HALLWAY_SEAL_Z =
|
|
1156
|
+
export declare const FROZEN_HALLWAY_MOUTH_Z = 169;
|
|
1157
|
+
export declare const FROZEN_HALLWAY_GATE_Z = 90;
|
|
1158
|
+
export declare const FROZEN_HALLWAY_SEAL_Z = 70;
|
|
1151
1159
|
/**
|
|
1152
1160
|
* The Ice Prison: the rooms behind the hallway's iron gate, carved in the
|
|
1153
1161
|
* off-map strip like the other interiors. You arrive in the Frozen Cells,
|
|
@@ -1225,6 +1233,11 @@ export declare const ICE_PRISON_BOUNDS: {
|
|
|
1225
1233
|
readonly minZ: number;
|
|
1226
1234
|
readonly maxZ: number;
|
|
1227
1235
|
};
|
|
1236
|
+
/**
|
|
1237
|
+
* The prison proper and the Frozen Depths north of it (iceDepths.ts): one
|
|
1238
|
+
* predicate for the frost lighting, the rock palette and the cavern aggro,
|
|
1239
|
+
* so the boss rooms are the same cold as the shrine they open off.
|
|
1240
|
+
*/
|
|
1228
1241
|
export declare function inIcePrison(x: number, z: number): boolean;
|
|
1229
1242
|
/** How far the hallway's centre line swings either side of FROZEN_HALLWAY_X. */
|
|
1230
1243
|
export declare const FROZEN_HALLWAY_SWING = 7;
|
|
@@ -1238,7 +1251,7 @@ export declare const FROZEN_HALLWAY_SWING = 7;
|
|
|
1238
1251
|
export declare function frozenHallwayCenterAt(z: number): number;
|
|
1239
1252
|
export declare function frozenHallwayHalfWidthAt(z: number): number;
|
|
1240
1253
|
export declare function inFrozenHallwayCorridor(x: number, z: number): boolean;
|
|
1241
|
-
export type IceCavernMonsterKind = 'crystalskitter' | 'frostrevenant' | 'glaciallurker' | 'icetroll';
|
|
1254
|
+
export type IceCavernMonsterKind = 'crystalskitter' | 'frostrevenant' | 'glaciallurker' | 'icetroll' | 'frostwarden' | 'bonechillyeti' | 'icelich' | 'frostalchemist' | 'glacialbehemoth';
|
|
1242
1255
|
/**
|
|
1243
1256
|
* The ice cavern roster, INSIDE the Ice Prison behind the iron gate (moved
|
|
1244
1257
|
* off the open Frozen Hallway on 2026-09-21: James wants the monsters in
|
|
@@ -1272,13 +1285,13 @@ export declare const ICE_CAVERN_SPAWNS: ReadonlyArray<{
|
|
|
1272
1285
|
export declare const THAW_GORGE_CX: number;
|
|
1273
1286
|
export declare const THAW_GORGE_MIN_X: number;
|
|
1274
1287
|
export declare const THAW_GORGE_MAX_X: number;
|
|
1275
|
-
export declare const THAW_GORGE_MIN_Z =
|
|
1288
|
+
export declare const THAW_GORGE_MIN_Z = 64;
|
|
1276
1289
|
/** Low river meets the battlefield lake's north bank. */
|
|
1277
1290
|
export declare const THAW_GORGE_MAX_Z: number;
|
|
1278
|
-
export declare const THAW_BRIDGE_Z =
|
|
1279
|
-
export declare const THAW_MID_BRIDGE_Z =
|
|
1291
|
+
export declare const THAW_BRIDGE_Z = 113;
|
|
1292
|
+
export declare const THAW_MID_BRIDGE_Z = 174;
|
|
1280
1293
|
export declare const THAW_WOODS_BRIDGE_Z: number;
|
|
1281
|
-
export declare const THAW_BRIDGE_ZS: readonly [
|
|
1294
|
+
export declare const THAW_BRIDGE_ZS: readonly [113, 174, number];
|
|
1282
1295
|
export declare const THAW_BRIDGE_HALF_W = 1;
|
|
1283
1296
|
/**
|
|
1284
1297
|
* The river floor at the foot of the fall: eight below the sea, the height
|
|
@@ -1300,15 +1313,15 @@ export declare const THAW_FLOOD_EAST_X: number;
|
|
|
1300
1313
|
* then this fall, then the bridges over the low water. Not at Rains' span
|
|
1301
1314
|
* and not south of it.
|
|
1302
1315
|
*/
|
|
1303
|
-
export declare const THAW_FALLS_Z =
|
|
1316
|
+
export declare const THAW_FALLS_Z = 90;
|
|
1304
1317
|
/** @deprecated Same tile as THAW_FALLS_Z; kept for older imports. */
|
|
1305
|
-
export declare const THAW_SIDE_FALLS_Z =
|
|
1318
|
+
export declare const THAW_SIDE_FALLS_Z = 90;
|
|
1306
1319
|
export declare const THAW_ARCH_X: number;
|
|
1307
1320
|
export declare const THAW_ARCH_PILLAR_DZ = 2;
|
|
1308
1321
|
export declare const THAW_MOUTH_STAND_X: number;
|
|
1309
|
-
export declare const THAW_MOUTH_STAND_Z =
|
|
1322
|
+
export declare const THAW_MOUTH_STAND_Z = 70;
|
|
1310
1323
|
export declare const THAW_FALLS_STAND_X: number;
|
|
1311
|
-
export declare const THAW_FALLS_STAND_Z =
|
|
1324
|
+
export declare const THAW_FALLS_STAND_Z = 90;
|
|
1312
1325
|
export type ThawEastBridgeId = 1 | 2 | 3;
|
|
1313
1326
|
export declare function thawEastBridgeIdAtZ(z: number): ThawEastBridgeId | null;
|
|
1314
1327
|
export declare function inThawFlood(x: number, z: number): boolean;
|
|
@@ -1445,7 +1458,7 @@ export declare const BATTLEFIELD_GOBLIN_CAMPS: readonly {
|
|
|
1445
1458
|
/** The goblins' ruined hinterland between their battle line and the first snow. */
|
|
1446
1459
|
export declare const GOBLIN_FRONTIER_MIN_X = 28;
|
|
1447
1460
|
export declare const GOBLIN_FRONTIER_MAX_X = 157;
|
|
1448
|
-
export declare const GOBLIN_FRONTIER_MIN_Z =
|
|
1461
|
+
export declare const GOBLIN_FRONTIER_MIN_Z = 607;
|
|
1449
1462
|
export declare const GOBLIN_FRONTIER_MAX_Z: number;
|
|
1450
1463
|
export declare const GOBLIN_FRONTIER_TOWERS: readonly [{
|
|
1451
1464
|
readonly x: number;
|
|
@@ -1483,10 +1496,10 @@ export declare const GOBLIN_FRONTIER_ROAD: readonly [{
|
|
|
1483
1496
|
/** The two occupied camp loops off the frontier road (built in goblinFrontier.ts). */
|
|
1484
1497
|
export declare const GOBLIN_FRONTIER_CAMPS: readonly [{
|
|
1485
1498
|
readonly x: 113;
|
|
1486
|
-
readonly z:
|
|
1499
|
+
readonly z: 677;
|
|
1487
1500
|
}, {
|
|
1488
1501
|
readonly x: 68;
|
|
1489
|
-
readonly z:
|
|
1502
|
+
readonly z: 635;
|
|
1490
1503
|
}];
|
|
1491
1504
|
/**
|
|
1492
1505
|
* Where the frontier is held. Goblins spawn here the way they do at the
|
|
@@ -1519,7 +1532,12 @@ export type DiscoveryZone = {
|
|
|
1519
1532
|
};
|
|
1520
1533
|
export declare const DISCOVERY_ZONES: readonly DiscoveryZone[];
|
|
1521
1534
|
export declare function discoveryZoneAt(worldX: number, worldZ: number): DiscoveryZone | null;
|
|
1522
|
-
|
|
1535
|
+
/**
|
|
1536
|
+
* 'dungeon' and 'shop' get an icon on the world map instead of a plain
|
|
1537
|
+
* diamond, and both are hoverable and clickable there (James, 2026-09-22:
|
|
1538
|
+
* icons over the actual mouth, and a way to see which places trade).
|
|
1539
|
+
*/
|
|
1540
|
+
export type WorldMapLandmarkKind = 'place' | 'dungeon' | 'shop';
|
|
1523
1541
|
/** Caption seat relative to the marker. Default is above. `on` sits on the mark. */
|
|
1524
1542
|
export type WorldMapLabelSide = 'above' | 'below' | 'right' | 'left' | 'on';
|
|
1525
1543
|
export type WorldMapLandmark = {
|
|
@@ -1528,6 +1546,12 @@ export type WorldMapLandmark = {
|
|
|
1528
1546
|
label: string;
|
|
1529
1547
|
kind?: WorldMapLandmarkKind;
|
|
1530
1548
|
labelSide?: WorldMapLabelSide;
|
|
1549
|
+
/**
|
|
1550
|
+
* For `kind: 'dungeon'`: the matching id in DUNGEON_CHARTS
|
|
1551
|
+
* (dungeonCharts.ts), so a click on the icon can drill down into that
|
|
1552
|
+
* dungeon's own chart instead of just zooming to the mouth.
|
|
1553
|
+
*/
|
|
1554
|
+
dungeonId?: string;
|
|
1531
1555
|
};
|
|
1532
1556
|
/**
|
|
1533
1557
|
* The mine's eastern Zone 2 location, shared by scenery, lighting, and the map.
|