@dreadwood-types/types 0.1.347 → 0.1.349
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/areaTransitions.d.ts +1 -1
- package/dist/areaTransitions.d.ts.map +1 -1
- package/dist/areaTransitions.js +5 -0
- package/dist/areaTransitions.js.map +1 -1
- package/dist/bounty.d.ts.map +1 -1
- package/dist/bounty.js +2 -0
- package/dist/bounty.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/darkHeart.d.ts +115 -0
- package/dist/darkHeart.d.ts.map +1 -0
- package/dist/darkHeart.js +162 -0
- package/dist/darkHeart.js.map +1 -0
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +3 -2
- package/dist/expandedContracts.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/potionMaking.js +2 -2
- package/dist/potionMaking.js.map +1 -1
- package/dist/smugglersIsle.d.ts +163 -0
- package/dist/smugglersIsle.d.ts.map +1 -0
- package/dist/smugglersIsle.js +191 -0
- package/dist/smugglersIsle.js.map +1 -0
- package/dist/travel.d.ts +13 -8
- package/dist/travel.d.ts.map +1 -1
- package/dist/travel.js +22 -4
- package/dist/travel.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smugglers' Isle (James, 2026-09-28 "the Strand's next piece"; built from his sheet design-references/smugglersisle, phase 1 2026-10-17):
|
|
3
|
+
* the members' island beyond the Smugglers' Strand, out in the south sea. It is reached only by Branson's ship (a members' port on his
|
|
4
|
+
* chart, travel.ts) to a West Jetty; a free player is refused at the chart and, found on the island anyway (a membership that lapsed
|
|
5
|
+
* while they were on it), is put back at the Long Pier. The plan page: backend members-workshop/plan/isle.html (drawn from these
|
|
6
|
+
* constants by dump-isle.ts, so the page and the build never drift).
|
|
7
|
+
*
|
|
8
|
+
* EVERY tile here is in the PUBLIC (final-world) frame, laid by a final-frame pass (backend smugglersIsle.ts) the way the pirate bay's
|
|
9
|
+
* passes are: nothing here goes through expandedContracts' z shift. (The old plan note "x 360-440, z 945-1020" is the generator frame:
|
|
10
|
+
* +128 rows, 100 tiles east of the Long Pier head, open sea between the ship loop's legs at z 1040 and z 1230.)
|
|
11
|
+
*
|
|
12
|
+
* Levels: the Strand is 8-20 (Captain Brine, 20). The Isle's crew is ISLE_CREW_LEVEL 24-30 and its boss (pending James's character
|
|
13
|
+
* sheet, with Salt Annie and Ferryman Joss) will sit at 34-36: the Isle continues the Strand and stays under 40.
|
|
14
|
+
* The crew is hostile and sells nothing (the pirate rule: cutthroats do not trade); friendly services come from the cast, later.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ISLE_NAME = "Smugglers' Isle";
|
|
17
|
+
export declare const ISLE_ID = "smugglers-isle";
|
|
18
|
+
/** The island's shore, clockwise, in world tiles (an organic outline; the jetty and the sea round it are not inside it). */
|
|
19
|
+
export declare const ISLE_OUTLINE: ReadonlyArray<readonly [number, number]>;
|
|
20
|
+
/** Everything of the Isle: the jetty's west end to the island's east shore, with a margin of sea. Inclusive world tiles. */
|
|
21
|
+
export declare const ISLE_BOX: {
|
|
22
|
+
readonly minX: 346;
|
|
23
|
+
readonly maxX: 497;
|
|
24
|
+
readonly minZ: 1076;
|
|
25
|
+
readonly maxZ: 1155;
|
|
26
|
+
};
|
|
27
|
+
export declare function inSmugglersIsle(x: number, z: number): boolean;
|
|
28
|
+
/** Is this tile the island's land (inside the shore outline)? The jetty is deck over water and is not. */
|
|
29
|
+
export declare function inIsleLand(x: number, z: number): boolean;
|
|
30
|
+
export type IsleRect = {
|
|
31
|
+
readonly minX: number;
|
|
32
|
+
readonly maxX: number;
|
|
33
|
+
readonly minZ: number;
|
|
34
|
+
readonly maxZ: number;
|
|
35
|
+
};
|
|
36
|
+
/** The main walk from the sea to the island's west beach, three planks wide, and the T-junction's cross pier at its middle. */
|
|
37
|
+
export declare const ISLE_JETTY_WALK: IsleRect;
|
|
38
|
+
export declare const ISLE_JETTY_ARM: IsleRect;
|
|
39
|
+
export declare const ISLE_JETTY_RECTS: readonly IsleRect[];
|
|
40
|
+
export declare function onIsleJetty(x: number, z: number): boolean;
|
|
41
|
+
/** Branson's ship puts you ashore here, on the walk just west of the T (the chart's port tile). */
|
|
42
|
+
export declare const ISLE_LANDING: {
|
|
43
|
+
readonly x: 362;
|
|
44
|
+
readonly z: 1118;
|
|
45
|
+
};
|
|
46
|
+
/** The deck's height (the Long Pier's: a step above the sea). */
|
|
47
|
+
export declare const ISLE_DECK_HEIGHT = 1;
|
|
48
|
+
/** The ferryman at the T's north end sells the same chart as Branson (Hope Beach free). His look is Oskar's until the cast sheet lands (frontend assets/index.ts). */
|
|
49
|
+
export declare const ISLE_FERRYMAN: {
|
|
50
|
+
readonly x: 368;
|
|
51
|
+
readonly z: 1111;
|
|
52
|
+
readonly kind: "isleferryman";
|
|
53
|
+
readonly name: "Ferryman Joss";
|
|
54
|
+
};
|
|
55
|
+
export declare const ISLE_FARE = 750;
|
|
56
|
+
export declare const ISLE_PORT_BLURB = "Branson's run out to the smugglers' island: a plank jetty, stilt shacks and a lit watchtower. Members only.";
|
|
57
|
+
export declare const ISLE_MEMBERS_HINT = "Members only";
|
|
58
|
+
/** What a free player is told when the ferryman or Branson refuses them. */
|
|
59
|
+
export declare const ISLE_MEMBERS_LINE = "That run is for members, friend. The Isle's folk don't take just anybody off my ship.";
|
|
60
|
+
/** What a free player found on the island is told as they are put back. */
|
|
61
|
+
export declare const ISLE_PUT_BACK_LINE = "The isle is for members, so the ferry takes you back to the Long Pier. Nothing you carry is lost.";
|
|
62
|
+
/** The Isle's crew (NPC kind `smuggler`, ids isle-smuggler-N): a step above the Strand's, hostile inside their holds. */
|
|
63
|
+
export declare const ISLE_CREW_LEVEL: {
|
|
64
|
+
readonly min: 24;
|
|
65
|
+
readonly max: 30;
|
|
66
|
+
};
|
|
67
|
+
/** The respawn clock is keyed by NPC kind (combat.ts), so the Isle's crew stands up on the Strand crew's clock. */
|
|
68
|
+
export declare const ISLE_CREW_RESPAWN_MS = 75000;
|
|
69
|
+
export declare const ISLE_CREW_ID_PREFIX = "isle-smuggler-";
|
|
70
|
+
export declare function isIsleCrewId(id: string): boolean;
|
|
71
|
+
/** The ground each post holds: a player inside it is rushed, one passing outside it (the jetty, the village, the beach) is not. */
|
|
72
|
+
export declare const ISLE_YARD_HOLD: IsleRect;
|
|
73
|
+
export declare const ISLE_TOWER_HOLD: IsleRect;
|
|
74
|
+
export declare const ISLE_CANNON_HOLD: IsleRect;
|
|
75
|
+
export declare const ISLE_HOLDS: readonly IsleRect[];
|
|
76
|
+
export declare function inIsleHold(x: number, z: number): boolean;
|
|
77
|
+
export declare const ISLE_CREW_SPAWNS: ReadonlyArray<{
|
|
78
|
+
x: number;
|
|
79
|
+
z: number;
|
|
80
|
+
post: 'yard' | 'tower' | 'cannon';
|
|
81
|
+
}>;
|
|
82
|
+
/** The village street: planks between the stilt shacks (the sheet's village). */
|
|
83
|
+
export declare const ISLE_STREET: IsleRect;
|
|
84
|
+
/** The warehouse yard's trodden floor. */
|
|
85
|
+
export declare const ISLE_YARD_FLOOR: IsleRect;
|
|
86
|
+
/** The dig site's turned sand, and the cliffs the sea cave is cut into. */
|
|
87
|
+
export declare const ISLE_DIG_SITE: IsleRect;
|
|
88
|
+
export declare const ISLE_SOUTH_CLIFF: IsleRect;
|
|
89
|
+
/** The rocky north shore behind the watchtower. */
|
|
90
|
+
export declare const ISLE_NORTH_CLIFF: IsleRect;
|
|
91
|
+
/** The watchtower's knoll: the ground rises to the tower. */
|
|
92
|
+
export declare const ISLE_KNOLL: {
|
|
93
|
+
readonly x: 440;
|
|
94
|
+
readonly z: 1090;
|
|
95
|
+
readonly radius: 9;
|
|
96
|
+
readonly rise: 3;
|
|
97
|
+
};
|
|
98
|
+
/** Worn tracks (two wide) between the places, as polylines of world tiles; the builder lays Path along each. */
|
|
99
|
+
export declare const ISLE_TRACKS: ReadonlyArray<{
|
|
100
|
+
id: string;
|
|
101
|
+
points: ReadonlyArray<readonly [number, number]>;
|
|
102
|
+
}>;
|
|
103
|
+
export type IslePiece = {
|
|
104
|
+
id: string;
|
|
105
|
+
/** What the sheet calls it. */
|
|
106
|
+
label: string;
|
|
107
|
+
/** The entity kind pushed (dreadmodel for kit models). */
|
|
108
|
+
kind: string;
|
|
109
|
+
x: number;
|
|
110
|
+
z: number;
|
|
111
|
+
/** For a dreadmodel the model-facing style, e.g. pbwarehouse-s. */
|
|
112
|
+
style: string;
|
|
113
|
+
scale?: number;
|
|
114
|
+
/** A tile a player stands on to use or look at it. Must be reachable on foot. */
|
|
115
|
+
stand: {
|
|
116
|
+
x: number;
|
|
117
|
+
z: number;
|
|
118
|
+
};
|
|
119
|
+
/** The upgrade a stand-in leaves (upgrades.json id), or null when the model is the real thing. */
|
|
120
|
+
standIn: string | null;
|
|
121
|
+
};
|
|
122
|
+
export declare const ISLE_PIECES: readonly IslePiece[];
|
|
123
|
+
/** Crates, casks and lanterns of the yard and the landing (the game's own beach props). x, z are the tile. */
|
|
124
|
+
export declare const ISLE_YARD_PROPS: ReadonlyArray<{
|
|
125
|
+
id: string;
|
|
126
|
+
kind: 'barrel' | 'lantern';
|
|
127
|
+
x: number;
|
|
128
|
+
z: number;
|
|
129
|
+
style: string;
|
|
130
|
+
scale?: number;
|
|
131
|
+
}>;
|
|
132
|
+
/** Rowing boats drawn up on the west beach. */
|
|
133
|
+
export declare const ISLE_ROWBOATS: ReadonlyArray<{
|
|
134
|
+
id: string;
|
|
135
|
+
x: number;
|
|
136
|
+
z: number;
|
|
137
|
+
style: string;
|
|
138
|
+
}>;
|
|
139
|
+
/** The deck's dressing on the jetty (the Long Pier's tokens): a lamp and a bollard at the west end, barrels and a ring at the T. */
|
|
140
|
+
export declare const ISLE_JETTY_DRESSING: ReadonlyArray<{
|
|
141
|
+
x: number;
|
|
142
|
+
z: number;
|
|
143
|
+
token: string;
|
|
144
|
+
}>;
|
|
145
|
+
export declare const SMUGGLERS_ISLE_ZONE: {
|
|
146
|
+
id: string;
|
|
147
|
+
label: string;
|
|
148
|
+
coordinateFrame: "world";
|
|
149
|
+
minX: 346;
|
|
150
|
+
maxX: 497;
|
|
151
|
+
minZ: 1076;
|
|
152
|
+
maxZ: 1155;
|
|
153
|
+
};
|
|
154
|
+
/** The places an admin teleports to (ADMIN_VERIFY_LINKS): a tile you can stand on at each. */
|
|
155
|
+
export declare const ISLE_VERIFY_STANDS: ReadonlyArray<{
|
|
156
|
+
id: string;
|
|
157
|
+
label: string;
|
|
158
|
+
x: number;
|
|
159
|
+
z: number;
|
|
160
|
+
note: string;
|
|
161
|
+
}>;
|
|
162
|
+
export declare function isleGuideText(): string;
|
|
163
|
+
//# sourceMappingURL=smugglersIsle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smugglersIsle.d.ts","sourceRoot":"","sources":["../src/smugglersIsle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smugglers' Isle (James, 2026-09-28 "the Strand's next piece"; built from his sheet design-references/smugglersisle, phase 1 2026-10-17):
|
|
3
|
+
* the members' island beyond the Smugglers' Strand, out in the south sea. It is reached only by Branson's ship (a members' port on his
|
|
4
|
+
* chart, travel.ts) to a West Jetty; a free player is refused at the chart and, found on the island anyway (a membership that lapsed
|
|
5
|
+
* while they were on it), is put back at the Long Pier. The plan page: backend members-workshop/plan/isle.html (drawn from these
|
|
6
|
+
* constants by dump-isle.ts, so the page and the build never drift).
|
|
7
|
+
*
|
|
8
|
+
* EVERY tile here is in the PUBLIC (final-world) frame, laid by a final-frame pass (backend smugglersIsle.ts) the way the pirate bay's
|
|
9
|
+
* passes are: nothing here goes through expandedContracts' z shift. (The old plan note "x 360-440, z 945-1020" is the generator frame:
|
|
10
|
+
* +128 rows, 100 tiles east of the Long Pier head, open sea between the ship loop's legs at z 1040 and z 1230.)
|
|
11
|
+
*
|
|
12
|
+
* Levels: the Strand is 8-20 (Captain Brine, 20). The Isle's crew is ISLE_CREW_LEVEL 24-30 and its boss (pending James's character
|
|
13
|
+
* sheet, with Salt Annie and Ferryman Joss) will sit at 34-36: the Isle continues the Strand and stays under 40.
|
|
14
|
+
* The crew is hostile and sells nothing (the pirate rule: cutthroats do not trade); friendly services come from the cast, later.
|
|
15
|
+
*/
|
|
16
|
+
import { SMUGGLER_RESPAWN_MS } from './smugglersStrand.js';
|
|
17
|
+
export const ISLE_NAME = "Smugglers' Isle";
|
|
18
|
+
export const ISLE_ID = 'smugglers-isle';
|
|
19
|
+
/** The island's shore, clockwise, in world tiles (an organic outline; the jetty and the sea round it are not inside it). */
|
|
20
|
+
export const ISLE_OUTLINE = [
|
|
21
|
+
[404, 1094], [418, 1085], [438, 1080], [460, 1082], [478, 1090], [489, 1104], [493, 1120], [486, 1136],
|
|
22
|
+
[472, 1146], [452, 1151], [432, 1149], [416, 1141], [405, 1130], [399, 1116], [400, 1104],
|
|
23
|
+
];
|
|
24
|
+
/** Everything of the Isle: the jetty's west end to the island's east shore, with a margin of sea. Inclusive world tiles. */
|
|
25
|
+
export const ISLE_BOX = { minX: 346, maxX: 497, minZ: 1076, maxZ: 1155 };
|
|
26
|
+
export function inSmugglersIsle(x, z) {
|
|
27
|
+
return x >= ISLE_BOX.minX && x <= ISLE_BOX.maxX && z >= ISLE_BOX.minZ && z <= ISLE_BOX.maxZ;
|
|
28
|
+
}
|
|
29
|
+
function inPolygon(x, z, poly) {
|
|
30
|
+
let inside = false;
|
|
31
|
+
for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
|
|
32
|
+
const [xi, zi] = poly[i];
|
|
33
|
+
const [xj, zj] = poly[j];
|
|
34
|
+
if (zi > z !== zj > z && x < ((xj - xi) * (z - zi)) / (zj - zi) + xi)
|
|
35
|
+
inside = !inside;
|
|
36
|
+
}
|
|
37
|
+
return inside;
|
|
38
|
+
}
|
|
39
|
+
/** Is this tile the island's land (inside the shore outline)? The jetty is deck over water and is not. */
|
|
40
|
+
export function inIsleLand(x, z) {
|
|
41
|
+
return inPolygon(x + 0.5, z + 0.5, ISLE_OUTLINE);
|
|
42
|
+
}
|
|
43
|
+
const inRect = (r, x, z) => x >= r.minX && x <= r.maxX && z >= r.minZ && z <= r.maxZ;
|
|
44
|
+
// ---- The West Jetty (members' port) ----------------------------------------------------------------------------------------------
|
|
45
|
+
/** The main walk from the sea to the island's west beach, three planks wide, and the T-junction's cross pier at its middle. */
|
|
46
|
+
export const ISLE_JETTY_WALK = { minX: 350, maxX: 401, minZ: 1117, maxZ: 1119 };
|
|
47
|
+
export const ISLE_JETTY_ARM = { minX: 366, maxX: 370, minZ: 1108, maxZ: 1128 };
|
|
48
|
+
export const ISLE_JETTY_RECTS = [ISLE_JETTY_WALK, ISLE_JETTY_ARM];
|
|
49
|
+
export function onIsleJetty(x, z) {
|
|
50
|
+
return ISLE_JETTY_RECTS.some((r) => inRect(r, x, z));
|
|
51
|
+
}
|
|
52
|
+
/** Branson's ship puts you ashore here, on the walk just west of the T (the chart's port tile). */
|
|
53
|
+
export const ISLE_LANDING = { x: 362, z: 1118 };
|
|
54
|
+
/** The deck's height (the Long Pier's: a step above the sea). */
|
|
55
|
+
export const ISLE_DECK_HEIGHT = 1;
|
|
56
|
+
/** The ferryman at the T's north end sells the same chart as Branson (Hope Beach free). His look is Oskar's until the cast sheet lands (frontend assets/index.ts). */
|
|
57
|
+
export const ISLE_FERRYMAN = { x: 368, z: 1111, kind: 'isleferryman', name: 'Ferryman Joss' };
|
|
58
|
+
// ---- The sea chart's entry --------------------------------------------------------------------------------------------------------
|
|
59
|
+
export const ISLE_FARE = 750;
|
|
60
|
+
export const ISLE_PORT_BLURB = "Branson's run out to the smugglers' island: a plank jetty, stilt shacks and a lit watchtower. Members only.";
|
|
61
|
+
export const ISLE_MEMBERS_HINT = 'Members only';
|
|
62
|
+
/** What a free player is told when the ferryman or Branson refuses them. */
|
|
63
|
+
export const ISLE_MEMBERS_LINE = "That run is for members, friend. The Isle's folk don't take just anybody off my ship.";
|
|
64
|
+
/** What a free player found on the island is told as they are put back. */
|
|
65
|
+
export const ISLE_PUT_BACK_LINE = "The isle is for members, so the ferry takes you back to the Long Pier. Nothing you carry is lost.";
|
|
66
|
+
// ---- The crew -------------------------------------------------------------------------------------------------------------------
|
|
67
|
+
/** The Isle's crew (NPC kind `smuggler`, ids isle-smuggler-N): a step above the Strand's, hostile inside their holds. */
|
|
68
|
+
export const ISLE_CREW_LEVEL = { min: 24, max: 30 };
|
|
69
|
+
/** The respawn clock is keyed by NPC kind (combat.ts), so the Isle's crew stands up on the Strand crew's clock. */
|
|
70
|
+
export const ISLE_CREW_RESPAWN_MS = SMUGGLER_RESPAWN_MS;
|
|
71
|
+
export const ISLE_CREW_ID_PREFIX = 'isle-smuggler-';
|
|
72
|
+
export function isIsleCrewId(id) {
|
|
73
|
+
return id.startsWith(ISLE_CREW_ID_PREFIX);
|
|
74
|
+
}
|
|
75
|
+
/** The ground each post holds: a player inside it is rushed, one passing outside it (the jetty, the village, the beach) is not. */
|
|
76
|
+
export const ISLE_YARD_HOLD = { minX: 438, maxX: 470, minZ: 1104, maxZ: 1130 };
|
|
77
|
+
export const ISLE_TOWER_HOLD = { minX: 428, maxX: 452, minZ: 1082, maxZ: 1102 };
|
|
78
|
+
export const ISLE_CANNON_HOLD = { minX: 472, maxX: 492, minZ: 1092, maxZ: 1110 };
|
|
79
|
+
export const ISLE_HOLDS = [ISLE_YARD_HOLD, ISLE_TOWER_HOLD, ISLE_CANNON_HOLD];
|
|
80
|
+
export function inIsleHold(x, z) {
|
|
81
|
+
return ISLE_HOLDS.some((r) => inRect(r, x, z));
|
|
82
|
+
}
|
|
83
|
+
export const ISLE_CREW_SPAWNS = [
|
|
84
|
+
{ x: 450, z: 1118, post: 'yard' },
|
|
85
|
+
{ x: 458, z: 1121, post: 'yard' },
|
|
86
|
+
{ x: 446, z: 1110, post: 'yard' },
|
|
87
|
+
{ x: 466, z: 1118, post: 'yard' },
|
|
88
|
+
{ x: 437, z: 1097, post: 'tower' },
|
|
89
|
+
{ x: 444, z: 1097, post: 'tower' },
|
|
90
|
+
{ x: 480, z: 1102, post: 'cannon' },
|
|
91
|
+
{ x: 484, z: 1106, post: 'cannon' },
|
|
92
|
+
];
|
|
93
|
+
// ---- The ground ------------------------------------------------------------------------------------------------------------------
|
|
94
|
+
/** The village street: planks between the stilt shacks (the sheet's village). */
|
|
95
|
+
export const ISLE_STREET = { minX: 410, maxX: 411, minZ: 1096, maxZ: 1119 };
|
|
96
|
+
/** The warehouse yard's trodden floor. */
|
|
97
|
+
export const ISLE_YARD_FLOOR = { minX: 440, maxX: 468, minZ: 1108, maxZ: 1128 };
|
|
98
|
+
/** The dig site's turned sand, and the cliffs the sea cave is cut into. */
|
|
99
|
+
export const ISLE_DIG_SITE = { minX: 472, maxX: 484, minZ: 1126, maxZ: 1138 };
|
|
100
|
+
export const ISLE_SOUTH_CLIFF = { minX: 416, maxX: 458, minZ: 1139, maxZ: 1151 };
|
|
101
|
+
/** The rocky north shore behind the watchtower. */
|
|
102
|
+
export const ISLE_NORTH_CLIFF = { minX: 424, maxX: 468, minZ: 1080, maxZ: 1084 };
|
|
103
|
+
/** The watchtower's knoll: the ground rises to the tower. */
|
|
104
|
+
export const ISLE_KNOLL = { x: 440, z: 1090, radius: 9, rise: 3 };
|
|
105
|
+
/** Worn tracks (two wide) between the places, as polylines of world tiles; the builder lays Path along each. */
|
|
106
|
+
export const ISLE_TRACKS = [
|
|
107
|
+
{ id: 'landing-to-yard', points: [[402, 1118], [420, 1118], [440, 1118]] },
|
|
108
|
+
{ id: 'yard-to-tower', points: [[440, 1108], [440, 1100], [440, 1094]] },
|
|
109
|
+
{ id: 'yard-to-cannon', points: [[468, 1112], [474, 1106], [482, 1101]] },
|
|
110
|
+
{ id: 'yard-to-dig', points: [[462, 1124], [470, 1129], [476, 1132]] },
|
|
111
|
+
{ id: 'landing-to-cave', points: [[412, 1119], [422, 1128], [432, 1136]] },
|
|
112
|
+
];
|
|
113
|
+
export const ISLE_PIECES = [
|
|
114
|
+
// The village: three stilt shacks on the beach round the plank street.
|
|
115
|
+
{ id: 'isle-shack-1', label: 'Stilt shack', kind: 'dreadmodel', x: 406, z: 1099, style: 'pbstilthouse-e', stand: { x: 410, z: 1099 }, standIn: 'smugglers-isle-shacks' },
|
|
116
|
+
{ id: 'isle-shack-2', label: 'Stilt shack', kind: 'dreadmodel', x: 406, z: 1111, style: 'pbstilthouse-e', stand: { x: 410, z: 1111 }, standIn: 'smugglers-isle-shacks' },
|
|
117
|
+
{ id: 'isle-shack-3', label: 'Stilt shack', kind: 'dreadmodel', x: 416, z: 1105, style: 'pbstilthouse-w', stand: { x: 412, z: 1105 }, standIn: 'smugglers-isle-shacks' },
|
|
118
|
+
// The moored sloop beside the T-junction.
|
|
119
|
+
{ id: 'isle-sloop', label: 'Moored sloop', kind: 'dreadmodel', x: 374, z: 1111, style: 'kittiwake-s', stand: { x: 370, z: 1112 }, standIn: 'smugglers-isle-sloop' },
|
|
120
|
+
// The warehouse yard.
|
|
121
|
+
{ id: 'isle-warehouse', label: 'Warehouse', kind: 'dreadmodel', x: 462, z: 1110, style: 'pbwarehouse-s', stand: { x: 462, z: 1114 }, standIn: 'smugglers-isle-warehouse' },
|
|
122
|
+
{ id: 'isle-market-stall', label: 'Black-market stall', kind: 'dreadmodel', x: 448, z: 1114, style: 'fairstallred-s', stand: { x: 448, z: 1116 }, standIn: 'smugglers-isle-stall' },
|
|
123
|
+
{ id: 'isle-cargo-1', label: 'Contraband stack', kind: 'dreadmodel', x: 454, z: 1124, style: 'blackwakecargo-s', stand: { x: 454, z: 1122 }, standIn: 'smugglers-isle-contraband' },
|
|
124
|
+
{ id: 'isle-cargo-2', label: 'Contraband stack', kind: 'dreadmodel', x: 466, z: 1123, style: 'blackwakecargo-s', stand: { x: 466, z: 1121 }, standIn: 'smugglers-isle-contraband' },
|
|
125
|
+
{ id: 'isle-cargo-3', label: 'Contraband stack', kind: 'dreadmodel', x: 444, z: 1125, style: 'blackwakecargo-s', stand: { x: 444, z: 1123 }, standIn: 'smugglers-isle-contraband' },
|
|
126
|
+
// The watchtower, lit.
|
|
127
|
+
{ id: 'isle-watchtower', label: 'Watchtower and signal fire', kind: 'dreadmodel', x: 440, z: 1090, style: 'lwbeacontowerlit-s', stand: { x: 440, z: 1094 }, standIn: 'smugglers-isle-watchtower' },
|
|
128
|
+
// Cannon Point: three old guns looking out to sea (scenery).
|
|
129
|
+
{ id: 'isle-cannon-1', label: 'Old cannon', kind: 'dreadmodel', x: 483, z: 1099, style: 'cqcannon-e', scale: 1.8, stand: { x: 481, z: 1100 }, standIn: 'smugglers-isle-cannons' },
|
|
130
|
+
{ id: 'isle-cannon-2', label: 'Old cannon', kind: 'dreadmodel', x: 486, z: 1105, style: 'cqcannon-e', scale: 1.8, stand: { x: 483, z: 1105 }, standIn: 'smugglers-isle-cannons' },
|
|
131
|
+
{ id: 'isle-cannon-3', label: 'Old cannon', kind: 'dreadmodel', x: 487, z: 1110, style: 'cqcannon-e', scale: 1.8, stand: { x: 484, z: 1110 }, standIn: 'smugglers-isle-cannons' },
|
|
132
|
+
// The dig site: spades in turned sand (scenery; the map dig is phase 2).
|
|
133
|
+
{ id: 'isle-spade-1', label: 'Spade in the sand', kind: 'dreadmodel', x: 477, z: 1131, style: 'castawaycampspade-s', stand: { x: 476, z: 1132 }, standIn: 'smugglers-isle-dig-site' },
|
|
134
|
+
{ id: 'isle-spade-2', label: 'Spade in the sand', kind: 'dreadmodel', x: 481, z: 1135, style: 'castawaycampspade-s', stand: { x: 480, z: 1134 }, standIn: 'smugglers-isle-dig-site' },
|
|
135
|
+
{ id: 'isle-dig-crates', label: 'Dig crates', kind: 'dreadmodel', x: 474, z: 1135, style: 'hbsupplycrates-s', stand: { x: 475, z: 1133 }, standIn: 'smugglers-isle-dig-site' },
|
|
136
|
+
// The sea cave in the south cliffs (the mouth is scenery in phase 1: it is sealed until the cave is built).
|
|
137
|
+
{ id: 'isle-sea-cave', label: 'Sea cave mouth', kind: 'dreadmodel', x: 432, z: 1141, style: 'seacave-n', stand: { x: 432, z: 1137 }, standIn: 'smugglers-isle-sea-cave' },
|
|
138
|
+
];
|
|
139
|
+
/** Crates, casks and lanterns of the yard and the landing (the game's own beach props). x, z are the tile. */
|
|
140
|
+
export const ISLE_YARD_PROPS = [
|
|
141
|
+
{ id: 'isle-cask-1', kind: 'barrel', x: 452, z: 1110, style: 'barrel', scale: 0.95 },
|
|
142
|
+
{ id: 'isle-cask-2', kind: 'barrel', x: 453, z: 1111, style: 'barrel', scale: 0.9 },
|
|
143
|
+
{ id: 'isle-crate-1', kind: 'barrel', x: 468, z: 1114, style: 'crate', scale: 0.95 },
|
|
144
|
+
{ id: 'isle-crate-2', kind: 'barrel', x: 469, z: 1115, style: 'crate', scale: 0.95 },
|
|
145
|
+
{ id: 'isle-crate-3', kind: 'barrel', x: 443, z: 1119, style: 'crate', scale: 0.9 },
|
|
146
|
+
{ id: 'isle-lantern-yard-w', kind: 'lantern', x: 441, z: 1112, style: 'east' },
|
|
147
|
+
{ id: 'isle-lantern-yard-e', kind: 'lantern', x: 468, z: 1126, style: 'west' },
|
|
148
|
+
{ id: 'isle-lantern-landing', kind: 'lantern', x: 404, z: 1116, style: 'east' },
|
|
149
|
+
{ id: 'isle-lantern-village', kind: 'lantern', x: 413, z: 1100, style: 'east' },
|
|
150
|
+
{ id: 'isle-lantern-cannon', kind: 'lantern', x: 479, z: 1099, style: 'east' },
|
|
151
|
+
];
|
|
152
|
+
/** Rowing boats drawn up on the west beach. */
|
|
153
|
+
export const ISLE_ROWBOATS = [
|
|
154
|
+
{ id: 'isle-rowboat-1', x: 404, z: 1123, style: 'pbrowboat-s' },
|
|
155
|
+
{ id: 'isle-rowboat-2', x: 403, z: 1108, style: 'pbrowboat-s' },
|
|
156
|
+
];
|
|
157
|
+
/** The deck's dressing on the jetty (the Long Pier's tokens): a lamp and a bollard at the west end, barrels and a ring at the T. */
|
|
158
|
+
export const ISLE_JETTY_DRESSING = [
|
|
159
|
+
{ x: 350, z: 1117, token: 'lamp' },
|
|
160
|
+
{ x: 350, z: 1119, token: 'bollard' },
|
|
161
|
+
{ x: 366, z: 1108, token: 'lamp' },
|
|
162
|
+
{ x: 370, z: 1108, token: 'bollard' },
|
|
163
|
+
{ x: 366, z: 1128, token: 'lamp' },
|
|
164
|
+
{ x: 370, z: 1128, token: 'ring' },
|
|
165
|
+
{ x: 380, z: 1117, token: 'lamp' },
|
|
166
|
+
{ x: 392, z: 1119, token: 'lamp' },
|
|
167
|
+
];
|
|
168
|
+
// ---- The discovery zone and where the guide and the admin links point ---------------------------------------------------------------
|
|
169
|
+
export const SMUGGLERS_ISLE_ZONE = {
|
|
170
|
+
id: ISLE_ID,
|
|
171
|
+
label: ISLE_NAME,
|
|
172
|
+
coordinateFrame: 'world',
|
|
173
|
+
minX: ISLE_BOX.minX,
|
|
174
|
+
maxX: ISLE_BOX.maxX,
|
|
175
|
+
minZ: ISLE_BOX.minZ,
|
|
176
|
+
maxZ: ISLE_BOX.maxZ,
|
|
177
|
+
};
|
|
178
|
+
/** The places an admin teleports to (ADMIN_VERIFY_LINKS): a tile you can stand on at each. */
|
|
179
|
+
export const ISLE_VERIFY_STANDS = [
|
|
180
|
+
{ id: 'isle-jetty', label: "Smugglers' Isle: the West Jetty", x: ISLE_LANDING.x, z: ISLE_LANDING.z, note: 'The planks, the T-junction, the moored sloop and the ferryman. Free players cannot sail here.' },
|
|
181
|
+
{ id: 'isle-village', label: "Smugglers' Isle: the village", x: 410, z: 1105, note: 'Three stilt shacks round a plank street. Safe ground.' },
|
|
182
|
+
{ id: 'isle-yard', label: "Smugglers' Isle: the warehouse yard", x: 448, z: 1118, note: 'The black-market stall and the warehouse. The crew rushes anyone in the yard.' },
|
|
183
|
+
{ id: 'isle-tower', label: "Smugglers' Isle: the watchtower", x: 440, z: 1095, note: 'The lit tower on its knoll, two of the crew at its foot.' },
|
|
184
|
+
{ id: 'isle-cannon', label: "Smugglers' Isle: Cannon Point", x: 481, z: 1100, note: 'Three old guns on the headland, the crew keeping them.' },
|
|
185
|
+
{ id: 'isle-dig', label: "Smugglers' Isle: the dig site", x: 476, z: 1132, note: 'Turned sand and spades. The treasure map dig is phase 2.' },
|
|
186
|
+
{ id: 'isle-cave', label: "Smugglers' Isle: the sea cave", x: 432, z: 1137, note: 'The cave mouth in the south cliffs. Sealed until phase 2.' },
|
|
187
|
+
];
|
|
188
|
+
export function isleGuideText() {
|
|
189
|
+
return `${ISLE_NAME} (members): Branson's chart sails you out for ${ISLE_FARE} coins to a West Jetty, with stilt shacks, a warehouse yard, a lit watchtower, Cannon Point, a dig site and a sea cave in the south cliffs. The crew (level ${ISLE_CREW_LEVEL.min}-${ISLE_CREW_LEVEL.max}) rushes anyone in the yard, at the tower and at Cannon Point, and stands up again ${ISLE_CREW_RESPAWN_MS / 1000} seconds after it falls. The jetty and the village are safe. If your membership ends while you are there, the ferry takes you back to the Long Pier.`;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=smugglersIsle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smugglersIsle.js","sourceRoot":"","sources":["../src/smugglersIsle.ts"],"names":[],"mappings":"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"}
|
package/dist/travel.d.ts
CHANGED
|
@@ -20,19 +20,22 @@ export declare const LANDING_MATE_NAME = "Oskar";
|
|
|
20
20
|
export declare const HARBOUR_MASTER_NAME = "Marlow";
|
|
21
21
|
/**
|
|
22
22
|
* The NPC kinds that sell passage: the ship's master on the Long Pier, his
|
|
23
|
-
* mate at Branson's Landing
|
|
23
|
+
* mate at Branson's Landing, the harbour master on the Capital's quay and the
|
|
24
|
+
* ferryman on Smugglers' Isle's jetty (his chart has no freight board).
|
|
24
25
|
* All three open the same chart and the server takes the same fare from
|
|
25
26
|
* any of them, so a port is reachable from every other end.
|
|
26
27
|
*/
|
|
27
28
|
export declare const TRAVEL_MASTER_KINDS: ReadonlySet<string>;
|
|
28
29
|
export declare function isTravelMasterKind(kind: string): boolean;
|
|
29
|
-
export type TravelPortId = 'hope-beach' | 'frozen-shore' | 'capital-harbour';
|
|
30
|
+
export type TravelPortId = 'hope-beach' | 'frozen-shore' | 'capital-harbour' | 'smugglers-isle';
|
|
30
31
|
export type TravelPort = {
|
|
31
32
|
id: TravelPortId;
|
|
32
33
|
label: string;
|
|
33
|
-
/** Where the ship puts you ashore. World tiles. */
|
|
34
|
+
/** Where the ship puts you ashore. World tiles (generator frame, unless `world` is set). */
|
|
34
35
|
x: number;
|
|
35
36
|
z: number;
|
|
37
|
+
/** True when x, z are already final-world tiles: expandedContracts does not shift them (the Isle's, laid by a final-frame pass). */
|
|
38
|
+
world?: true;
|
|
36
39
|
/** Coins to sail here from any other port. */
|
|
37
40
|
fare: number;
|
|
38
41
|
/** One line under the name on Branson's chart. */
|
|
@@ -41,11 +44,13 @@ export type TravelPort = {
|
|
|
41
44
|
transition: AreaTransitionId;
|
|
42
45
|
/**
|
|
43
46
|
* A port Branson will only sail to once the player has opened that part
|
|
44
|
-
* of the world for themselves. The quest must be completed
|
|
45
|
-
* what the chart says instead of the
|
|
47
|
+
* of the world for themselves. The quest must be completed and/or the
|
|
48
|
+
* player must be a member; the hint is what the chart says instead of the
|
|
49
|
+
* fare until then.
|
|
46
50
|
*/
|
|
47
51
|
requires?: {
|
|
48
|
-
quest
|
|
52
|
+
quest?: QuestId;
|
|
53
|
+
member?: true;
|
|
49
54
|
hint: string;
|
|
50
55
|
};
|
|
51
56
|
};
|
|
@@ -71,8 +76,8 @@ export type TravelFare = {
|
|
|
71
76
|
export declare function travelFareFor(port: TravelPort, quests: QuestsSnapshot, tickets?: number): TravelFare;
|
|
72
77
|
/** The ticket item, for callers that count it in the bag. */
|
|
73
78
|
export declare const TRAVEL_TICKET_KIND = "boatticket";
|
|
74
|
-
/** The reason a port is closed to this player, or null when they may sail. */
|
|
75
|
-
export declare function travelPortLockReason(port: TravelPort, quests: QuestsSnapshot, tickets?: number): string | null;
|
|
79
|
+
/** The reason a port is closed to this player, or null when they may sail. `isMember` is true for a member (the server also passes admins). */
|
|
80
|
+
export declare function travelPortLockReason(port: TravelPort, quests: QuestsSnapshot, tickets?: number, isMember?: boolean): string | null;
|
|
76
81
|
export declare function isTravelPortId(value: unknown): value is TravelPortId;
|
|
77
82
|
export declare function travelPortById(id: string): TravelPort | null;
|
|
78
83
|
/** The port this tile is in, if any: the nearest landing within TRAVEL_PORT_RADIUS. */
|
package/dist/travel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"travel.d.ts","sourceRoot":"","sources":["../src/travel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"travel.d.ts","sourceRoot":"","sources":["../src/travel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK3D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAwE,CAAC;AAE7H,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEhG,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,oIAAoI;IACpI,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,UAAU,EAAE,gBAAgB,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAgD7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,YAAgC,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;CAAE,CAAC;AAE5E,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,SAAI,GAAG,UAAU,CAO/F;AAED,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,eAAmB,CAAC;AAEnD,+IAA+I;AAC/I,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,SAAI,EAAE,QAAQ,UAAQ,GAAG,MAAM,GAAG,IAAI,CAM3H;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE5D;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAWpE;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAEjD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAEzD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG5E"}
|
package/dist/travel.js
CHANGED
|
@@ -2,6 +2,7 @@ import { HARBOUR_LANDING, HARBOUR_NAME } from './harbour.js';
|
|
|
2
2
|
import { FROZEN_SHORE_LANDING, HOPE_BEACH_LANDING } from './landmarks.js';
|
|
3
3
|
import { BOAT_TICKET_KIND } from './storyQuests.js';
|
|
4
4
|
import { captainsFriendFare } from './voyages.js';
|
|
5
|
+
import { ISLE_FARE, ISLE_LANDING, ISLE_MEMBERS_HINT, ISLE_PORT_BLURB } from './smugglersIsle.js';
|
|
5
6
|
/**
|
|
6
7
|
* SEA TRAVEL
|
|
7
8
|
*
|
|
@@ -22,11 +23,12 @@ export const LANDING_MATE_NAME = 'Oskar';
|
|
|
22
23
|
export const HARBOUR_MASTER_NAME = 'Marlow';
|
|
23
24
|
/**
|
|
24
25
|
* The NPC kinds that sell passage: the ship's master on the Long Pier, his
|
|
25
|
-
* mate at Branson's Landing
|
|
26
|
+
* mate at Branson's Landing, the harbour master on the Capital's quay and the
|
|
27
|
+
* ferryman on Smugglers' Isle's jetty (his chart has no freight board).
|
|
26
28
|
* All three open the same chart and the server takes the same fare from
|
|
27
29
|
* any of them, so a port is reachable from every other end.
|
|
28
30
|
*/
|
|
29
|
-
export const TRAVEL_MASTER_KINDS = new Set(['branson', 'landingmate', 'harbourmaster']);
|
|
31
|
+
export const TRAVEL_MASTER_KINDS = new Set(['branson', 'landingmate', 'harbourmaster', 'isleferryman']);
|
|
30
32
|
export function isTravelMasterKind(kind) {
|
|
31
33
|
return TRAVEL_MASTER_KINDS.has(kind);
|
|
32
34
|
}
|
|
@@ -72,6 +74,18 @@ export const TRAVEL_PORTS = [
|
|
|
72
74
|
// and the north is walked before it is sailed to.
|
|
73
75
|
requires: { quest: 'battlefieldBridge', hint: 'Repair the battlefield bridge first' },
|
|
74
76
|
},
|
|
77
|
+
{
|
|
78
|
+
id: 'smugglers-isle',
|
|
79
|
+
label: "Smugglers' Isle",
|
|
80
|
+
x: ISLE_LANDING.x,
|
|
81
|
+
z: ISLE_LANDING.z,
|
|
82
|
+
world: true,
|
|
83
|
+
fare: ISLE_FARE,
|
|
84
|
+
blurb: ISLE_PORT_BLURB,
|
|
85
|
+
transition: 'voyage-smugglers-isle',
|
|
86
|
+
// The members' island (James, 2026-09-28): the chart greys it for a free player and the server refuses before any coins move.
|
|
87
|
+
requires: { member: true, hint: ISLE_MEMBERS_HINT },
|
|
88
|
+
},
|
|
75
89
|
];
|
|
76
90
|
/**
|
|
77
91
|
* Fred's Letter (storyQuests.ts): Fred's boat ticket is one free sailing to
|
|
@@ -93,10 +107,14 @@ export function travelFareFor(port, quests, tickets = 0) {
|
|
|
93
107
|
}
|
|
94
108
|
/** The ticket item, for callers that count it in the bag. */
|
|
95
109
|
export const TRAVEL_TICKET_KIND = BOAT_TICKET_KIND;
|
|
96
|
-
/** The reason a port is closed to this player, or null when they may sail. */
|
|
97
|
-
export function travelPortLockReason(port, quests, tickets = 0) {
|
|
110
|
+
/** The reason a port is closed to this player, or null when they may sail. `isMember` is true for a member (the server also passes admins). */
|
|
111
|
+
export function travelPortLockReason(port, quests, tickets = 0, isMember = false) {
|
|
98
112
|
if (!port.requires)
|
|
99
113
|
return null;
|
|
114
|
+
if (port.requires.member && !isMember)
|
|
115
|
+
return port.requires.hint;
|
|
116
|
+
if (!port.requires.quest)
|
|
117
|
+
return null;
|
|
100
118
|
if (travelFareFor(port, quests, tickets).via !== 'coins')
|
|
101
119
|
return null;
|
|
102
120
|
return quests[port.requires.quest] === 'completed' ? null : port.requires.hint;
|
package/dist/travel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"travel.js","sourceRoot":"","sources":["../src/travel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"travel.js","sourceRoot":"","sources":["../src/travel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dreadwood-types/types",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.349",
|
|
4
4
|
"description": "Public wire protocol and client-safe constants for Dreadwoods",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
24
|
"build": "tsc -p tsconfig.json",
|
|
25
|
-
"test": "node --test scripts/pirate-bay-phase6-test.mjs scripts/bay-reaches-test.mjs scripts/pirate-ships-test.mjs scripts/crescent-queen-test.mjs scripts/port-blackwake-test.mjs scripts/pirate-treasure-test.mjs scripts/shop-food-test.mjs scripts/castaway-camp-test.mjs 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/border-kit-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/brackenstone-test.mjs scripts/lair-awakening-test.mjs scripts/spider-hollow-deeper-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/dwarf-road-camp-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/arcane-realms-test.mjs scripts/frozen-dungeons-test.mjs scripts/deep-seam-test.mjs scripts/hollow-delve-test.mjs scripts/mining-quests-test.mjs scripts/long-winter-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/gullhook-head-test.mjs scripts/webfen-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 scripts/heartwood-hunt-test.mjs scripts/ironjaw-watch-test.mjs scripts/beacon-night-test.mjs scripts/calverton-extension-test.mjs scripts/gravewatch-test.mjs scripts/tide-of-blood-test.mjs scripts/north-wilds-test.mjs scripts/toll-road-test.mjs scripts/capital-quests-test.mjs scripts/capital-shops-test.mjs scripts/lean-wanted-test.mjs scripts/delvers-ladder-test.mjs scripts/last-signal-test.mjs scripts/sea-salt-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/field-guide-test.mjs scripts/titles-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/voyages-test.mjs scripts/weekly-hunt-test.mjs scripts/west-branches-test.mjs scripts/skill-fill-test.mjs scripts/early-fill-test.mjs scripts/battlefield-test.mjs scripts/war-camp-drill-test.mjs scripts/camp-kitchens-test.mjs scripts/rangers-rest-test.mjs scripts/fishing-reaches-test.mjs scripts/thaw-crossing-test.mjs scripts/millstream-hamlet-test.mjs scripts/timber-convoy-test.mjs scripts/ashfall-camp-test.mjs scripts/tide-tunnel-test.mjs scripts/server-update-test.mjs scripts/border-jobs-test.mjs scripts/north-quarry-quest-test.mjs scripts/skills-31-40-test.mjs scripts/road-table-test.mjs scripts/woods-gear-ladder-test.mjs",
|
|
25
|
+
"test": "node --test scripts/pirate-bay-phase6-test.mjs scripts/bay-reaches-test.mjs scripts/pirate-ships-test.mjs scripts/crescent-queen-test.mjs scripts/port-blackwake-test.mjs scripts/pirate-treasure-test.mjs scripts/shop-food-test.mjs scripts/castaway-camp-test.mjs 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/border-kit-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/brackenstone-test.mjs scripts/lair-awakening-test.mjs scripts/spider-hollow-deeper-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/dwarf-road-camp-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/arcane-realms-test.mjs scripts/frozen-dungeons-test.mjs scripts/deep-seam-test.mjs scripts/hollow-delve-test.mjs scripts/mining-quests-test.mjs scripts/long-winter-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/gullhook-head-test.mjs scripts/webfen-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 scripts/heartwood-hunt-test.mjs scripts/ironjaw-watch-test.mjs scripts/beacon-night-test.mjs scripts/calverton-extension-test.mjs scripts/gravewatch-test.mjs scripts/tide-of-blood-test.mjs scripts/north-wilds-test.mjs scripts/toll-road-test.mjs scripts/capital-quests-test.mjs scripts/capital-shops-test.mjs scripts/lean-wanted-test.mjs scripts/delvers-ladder-test.mjs scripts/last-signal-test.mjs scripts/sea-salt-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/field-guide-test.mjs scripts/titles-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/voyages-test.mjs scripts/weekly-hunt-test.mjs scripts/west-branches-test.mjs scripts/skill-fill-test.mjs scripts/early-fill-test.mjs scripts/battlefield-test.mjs scripts/war-camp-drill-test.mjs scripts/camp-kitchens-test.mjs scripts/rangers-rest-test.mjs scripts/fishing-reaches-test.mjs scripts/thaw-crossing-test.mjs scripts/millstream-hamlet-test.mjs scripts/timber-convoy-test.mjs scripts/ashfall-camp-test.mjs scripts/tide-tunnel-test.mjs scripts/server-update-test.mjs scripts/border-jobs-test.mjs scripts/north-quarry-quest-test.mjs scripts/skills-31-40-test.mjs scripts/road-table-test.mjs scripts/woods-gear-ladder-test.mjs scripts/dark-heart-test.mjs",
|
|
26
26
|
"dev": "tsc -p tsconfig.json --watch",
|
|
27
27
|
"prepare": "npm run build",
|
|
28
28
|
"prepublishOnly": "npm run build"
|