@dreadwood-types/types 0.1.369 → 0.1.371
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attackableNpcs.d.ts.map +1 -1
- package/dist/attackableNpcs.js +2 -0
- package/dist/attackableNpcs.js.map +1 -1
- package/dist/bossSignatures.d.ts +1 -1
- package/dist/bossSignatures.d.ts.map +1 -1
- package/dist/bossSignatures.js +6 -0
- package/dist/bossSignatures.js.map +1 -1
- package/dist/brackenHeath.d.ts +285 -0
- package/dist/brackenHeath.d.ts.map +1 -0
- package/dist/brackenHeath.js +381 -0
- package/dist/brackenHeath.js.map +1 -0
- package/dist/brackenHeathDens.d.ts +124 -0
- package/dist/brackenHeathDens.d.ts.map +1 -0
- package/dist/brackenHeathDens.js +163 -0
- package/dist/brackenHeathDens.js.map +1 -0
- package/dist/brackenHeathQuestDef.d.ts +20 -0
- package/dist/brackenHeathQuestDef.d.ts.map +1 -0
- package/dist/brackenHeathQuestDef.js +116 -0
- package/dist/brackenHeathQuestDef.js.map +1 -0
- package/dist/campKitchens.d.ts.map +1 -1
- package/dist/campKitchens.js +5 -0
- package/dist/campKitchens.js.map +1 -1
- package/dist/campTraders.d.ts.map +1 -1
- package/dist/campTraders.js +13 -0
- package/dist/campTraders.js.map +1 -1
- package/dist/constants.d.ts +7 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +2 -1
- package/dist/expandedContracts.js.map +1 -1
- package/dist/explorerLedger.d.ts +2 -1
- package/dist/explorerLedger.d.ts.map +1 -1
- package/dist/explorerLedger.js +6 -0
- package/dist/explorerLedger.js.map +1 -1
- package/dist/fairContests.d.ts +6 -0
- package/dist/fairContests.d.ts.map +1 -1
- package/dist/fairContests.js +6 -0
- package/dist/fairContests.js.map +1 -1
- package/dist/fairFolk.d.ts +1 -1
- package/dist/fairFolk.d.ts.map +1 -1
- package/dist/fairFolk.js +3 -2
- package/dist/fairFolk.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +4 -0
- package/dist/legacy.d.ts.map +1 -1
- package/dist/legacy.js +4 -0
- package/dist/legacy.js.map +1 -1
- package/dist/messages.d.ts +35 -0
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js.map +1 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +19 -0
- package/dist/quests.js.map +1 -1
- package/dist/steeredRide.d.ts +240 -0
- package/dist/steeredRide.d.ts.map +1 -0
- package/dist/steeredRide.js +431 -0
- package/dist/steeredRide.js.map +1 -0
- package/dist/storyQuests.d.ts +1 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +13 -0
- package/dist/storyQuests.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A STEERED RIDE (2026-10-19, first used by Bracken Heath's Pup Track and Heath Dash, brackenHeath.ts): a cart the SERVER moves along a course
|
|
3
|
+
* while the rider picks one of three lanes. Hask's Sled Run (sledRun.ts) is the pattern: the server sets the rider's `path`, the world's
|
|
4
|
+
* ordinary stepping carries them along it at the ride's pace, and the client only draws it. What is new here is the lanes: a course is a
|
|
5
|
+
* centreline of 8-connected tiles, and each lane is that line pushed sideways, so a lane change is two diagonal steps across the turf
|
|
6
|
+
* stripe between two lanes.
|
|
7
|
+
*
|
|
8
|
+
* Everything in this file is pure data and pure maths, shared by the server (which moves the cart, checks hits and pays) and the client
|
|
9
|
+
* (which draws the course's hazards and crossers and the rider's readout). Nothing here touches health: a hazard slows the cart and knocks
|
|
10
|
+
* coins off the pay, and that is all it can do.
|
|
11
|
+
*
|
|
12
|
+
* Coordinates are world tiles (x east, z south). A direction is a step (dx, dz) with each part -1, 0 or 1. The lane offsets are along the
|
|
13
|
+
* rider's RIGHT-hand normal (-dz, dx): lane 0 is the left lane, 1 the middle, 2 the right.
|
|
14
|
+
*/
|
|
15
|
+
export type RideLane = 0 | 1 | 2;
|
|
16
|
+
export declare const RIDE_LANES: readonly RideLane[];
|
|
17
|
+
/** Tiles sideways from the centreline (along the right-hand normal) for lanes 0, 1 and 2. The tiles between them (offset -1 and 1) are the turf stripes. */
|
|
18
|
+
export declare const RIDE_LANE_OFFSETS: readonly [number, number, number];
|
|
19
|
+
export declare const RIDE_LANE_NAMES: readonly [string, string, string];
|
|
20
|
+
export declare function isRideLane(v: unknown): v is RideLane;
|
|
21
|
+
/** One tile of a course's centreline, with the direction of the segment it is on. */
|
|
22
|
+
export type CentreTile = {
|
|
23
|
+
readonly x: number;
|
|
24
|
+
readonly z: number;
|
|
25
|
+
readonly dx: number;
|
|
26
|
+
readonly dz: number;
|
|
27
|
+
};
|
|
28
|
+
/** One tile a rider can stand on: where it is, the centreline index it belongs to (`p`, the rider's progress) and its sideways offset. */
|
|
29
|
+
export type RideTile = {
|
|
30
|
+
readonly x: number;
|
|
31
|
+
readonly z: number;
|
|
32
|
+
readonly p: number;
|
|
33
|
+
readonly o: number;
|
|
34
|
+
};
|
|
35
|
+
/** A fixed hazard on one lane: the rider who drives over it is knocked (slowed, coins off). Drawn as a course prop. */
|
|
36
|
+
export type RideHazardKind = 'hay' | 'gorse' | 'barrel';
|
|
37
|
+
export type RideHazard = {
|
|
38
|
+
readonly id: string;
|
|
39
|
+
readonly p: number;
|
|
40
|
+
readonly lane: RideLane;
|
|
41
|
+
readonly kind: RideHazardKind;
|
|
42
|
+
};
|
|
43
|
+
/** A straw boost mat on one lane: driven over, the cart goes faster for a stretch. */
|
|
44
|
+
export type RideBoost = {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
readonly p: number;
|
|
47
|
+
readonly lane: RideLane;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Something that runs to and fro across the lanes on the server's clock (a loose sheep, a heath hare): an NPC of an existing harmless kind,
|
|
51
|
+
* moved every tick by the server (never by the generic wander) and never fought. A rider whose tile it is on, or next to, is knocked.
|
|
52
|
+
*/
|
|
53
|
+
export type RideCrosser = {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly kind: 'sheep' | 'brownhare';
|
|
56
|
+
readonly name: string;
|
|
57
|
+
/** The centreline index it crosses at. */
|
|
58
|
+
readonly p: number;
|
|
59
|
+
/** How far either side of the centreline it runs (it turns at +-reach). */
|
|
60
|
+
readonly reach: number;
|
|
61
|
+
/** Milliseconds per tile it moves. */
|
|
62
|
+
readonly msPerTile: number;
|
|
63
|
+
/** Shifts its clock so two crossers are not in step. */
|
|
64
|
+
readonly phaseMs: number;
|
|
65
|
+
};
|
|
66
|
+
export type RideCourse = {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly name: string;
|
|
69
|
+
/** Who lends the cart and where you stand to ask (Chebyshev reach). */
|
|
70
|
+
readonly keeper: string;
|
|
71
|
+
readonly keeperReach: number;
|
|
72
|
+
/** The centreline's corners: each leg is straight or an exact diagonal. The ride runs from the first to the last. */
|
|
73
|
+
readonly waypoints: ReadonlyArray<readonly [number, number]>;
|
|
74
|
+
/** How many times round (the Pup Track is two laps of one loop; the loop must close on its first waypoint). */
|
|
75
|
+
readonly laps: number;
|
|
76
|
+
/** The lane a ride starts in. */
|
|
77
|
+
readonly startLane: RideLane;
|
|
78
|
+
/** Combat level needed (0 = any level). */
|
|
79
|
+
readonly combat: number;
|
|
80
|
+
/** Walking-pace multipliers: the cart's own pace, on a boost, and after a knock. */
|
|
81
|
+
readonly speed: number;
|
|
82
|
+
readonly boostSpeed: number;
|
|
83
|
+
readonly slowSpeed: number;
|
|
84
|
+
/** How many centreline tiles a boost or a knock lasts. */
|
|
85
|
+
readonly boostTiles: number;
|
|
86
|
+
readonly slowTiles: number;
|
|
87
|
+
/** The pay for a finished run, what each knock takes off it and the least it can fall to (PLACEHOLDERS). */
|
|
88
|
+
readonly pay: number;
|
|
89
|
+
readonly knockCoins: number;
|
|
90
|
+
readonly minPay: number;
|
|
91
|
+
/** The centreline indexes of the checkpoint flags (numbered 1..n in order). */
|
|
92
|
+
readonly checkpoints: readonly number[];
|
|
93
|
+
readonly hazards: readonly RideHazard[];
|
|
94
|
+
readonly boosts: readonly RideBoost[];
|
|
95
|
+
readonly crossers: readonly RideCrosser[];
|
|
96
|
+
/** A run that has not finished by now is called off. */
|
|
97
|
+
readonly maxRunMs: number;
|
|
98
|
+
};
|
|
99
|
+
/** The hold at the line between being counted in and the cart rolling. */
|
|
100
|
+
export declare const RIDE_READY_MS = 3000;
|
|
101
|
+
/** After any ending, the next ride waits this long. */
|
|
102
|
+
export declare const RIDE_RETRY_MS = 4000;
|
|
103
|
+
/** A finished run pays at most once in this long per rider (another run is always free to ride, and counts for the board). */
|
|
104
|
+
export declare const RIDE_PAY_WINDOW_MS: number;
|
|
105
|
+
/** A crosser knocks a rider whose tile is within this (Chebyshev) of its own, and whose progress is within this of its crossing. */
|
|
106
|
+
export declare const RIDE_CROSSER_HIT = 1;
|
|
107
|
+
/** The centreline: every tile from the first waypoint to the last, each with its leg's direction. Throws on a leg that is not straight or diagonal. */
|
|
108
|
+
export declare function rideCentreline(course: Pick<RideCourse, 'waypoints' | 'laps'>): CentreTile[];
|
|
109
|
+
/** The right-hand normal of a direction. */
|
|
110
|
+
export declare function rideNormal(dx: number, dz: number): {
|
|
111
|
+
nx: number;
|
|
112
|
+
nz: number;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* One lane (or the centreline at offset 0) as a walkable chain of tiles: every centreline tile pushed `offset` along its normal, with
|
|
116
|
+
* the gaps a corner opens filled by straight steps and the cusps a corner folds dropped, so each step is to a neighbouring tile and no tile
|
|
117
|
+
* is visited twice. Each tile keeps the centreline index it came from (`p`, never decreasing).
|
|
118
|
+
*/
|
|
119
|
+
export declare function rideLaneTiles(centre: readonly CentreTile[], offset: number): RideTile[];
|
|
120
|
+
/** A course built once: its centreline and its three lanes. */
|
|
121
|
+
export type BuiltCourse = {
|
|
122
|
+
readonly course: RideCourse;
|
|
123
|
+
readonly centre: readonly CentreTile[];
|
|
124
|
+
readonly lanes: readonly [readonly RideTile[], readonly RideTile[], readonly RideTile[]];
|
|
125
|
+
/** The index of the finish in centreline terms. */
|
|
126
|
+
readonly finishP: number;
|
|
127
|
+
/** Every tile of the course's ground (the lanes, the stripes and a verge either side): a lane change never leaves it. */
|
|
128
|
+
readonly ground: ReadonlySet<string>;
|
|
129
|
+
/** The ground's tiles with their sideways offsets (rideGroundTiles). */
|
|
130
|
+
readonly groundOffsets: ReadonlyMap<string, number>;
|
|
131
|
+
};
|
|
132
|
+
export declare function buildRideCourse(course: RideCourse): BuiltCourse;
|
|
133
|
+
/** The first tile of a lane at or past centreline index p (the last tile when p is past the end). */
|
|
134
|
+
export declare function rideLaneIndexAt(lane: readonly RideTile[], p: number): number;
|
|
135
|
+
/** The tile a hazard or boost mat stands on: its lane's first tile at its index. */
|
|
136
|
+
export declare function rideMarkTile(b: BuiltCourse, mark: {
|
|
137
|
+
p: number;
|
|
138
|
+
lane: RideLane;
|
|
139
|
+
}): RideTile;
|
|
140
|
+
/**
|
|
141
|
+
* Every tile of a course's ground: a solid band round the centreline, each tile with its sideways offset (rounded toward the centre: -2, 0 and 2
|
|
142
|
+
* are the lanes, -1 and 1 the turf stripes, -3 and 3 the verges). A tile belongs to its nearest centreline tile, so a diagonal leg is as solid as a
|
|
143
|
+
* straight one (no checkerboard of gaps between its lanes for a stone to stand in).
|
|
144
|
+
*/
|
|
145
|
+
export declare function rideGroundTiles(b: BuiltCourse): {
|
|
146
|
+
x: number;
|
|
147
|
+
z: number;
|
|
148
|
+
o: number;
|
|
149
|
+
}[];
|
|
150
|
+
/**
|
|
151
|
+
* A lane change: the steps from the rider's tile across to the new lane, landing two centreline tiles ahead, then on along it. `from` is the
|
|
152
|
+
* rider's tile; returns the steps (each to a neighbouring tile) and the index in the new lane where the rider lands, or null when the course
|
|
153
|
+
* is too near its end to change.
|
|
154
|
+
*/
|
|
155
|
+
export declare function rideLaneChange(b: BuiltCourse, from: RideTile, to: RideLane): {
|
|
156
|
+
steps: RideTile[];
|
|
157
|
+
landIndex: number;
|
|
158
|
+
} | null;
|
|
159
|
+
/** The lanes a tile counts as for hits: its own, or both lanes either side of a stripe. */
|
|
160
|
+
export declare function rideTileLanes(t: Pick<RideTile, 'o'>): RideLane[];
|
|
161
|
+
/** The lane nearest a world tile at the rider's progress (a tap on the course): the lane whose tile a few steps ahead is nearest it. */
|
|
162
|
+
export declare function rideLaneNearest(b: BuiltCourse, p: number, x: number, z: number): RideLane;
|
|
163
|
+
/** A crosser's sideways offset at a moment: it runs from -reach to +reach and back, one tile per msPerTile. */
|
|
164
|
+
export declare function rideCrosserOffset(c: RideCrosser, nowMs: number): number;
|
|
165
|
+
/** A crosser's tile at a moment (the centreline tile at its index, pushed sideways by its offset). */
|
|
166
|
+
export declare function rideCrosserTile(b: BuiltCourse, c: RideCrosser, nowMs: number): {
|
|
167
|
+
x: number;
|
|
168
|
+
z: number;
|
|
169
|
+
o: number;
|
|
170
|
+
};
|
|
171
|
+
/** Is a rider on this tile knocked by this crosser now? */
|
|
172
|
+
export declare function rideCrosserHits(b: BuiltCourse, c: RideCrosser, rider: RideTile, nowMs: number): boolean;
|
|
173
|
+
/** The cart's pace at a progress index: slowed after a knock, boosted after a mat, else its own. */
|
|
174
|
+
export declare function rideSpeedAt(course: Pick<RideCourse, 'speed' | 'boostSpeed' | 'slowSpeed'>, p: number, boostUntil: number, slowUntil: number): number;
|
|
175
|
+
/** What a finished run pays: the course's pay less the knocks, never below its least. */
|
|
176
|
+
export declare function ridePay(course: Pick<RideCourse, 'pay' | 'knockCoins' | 'minPay'>, knocks: number): number;
|
|
177
|
+
/** Seconds with one decimal: 61840 -> "61.8 s". */
|
|
178
|
+
export declare function formatRideTime(ms: number): string;
|
|
179
|
+
export type RideBoardRow = {
|
|
180
|
+
name: string;
|
|
181
|
+
ms: number;
|
|
182
|
+
at: number;
|
|
183
|
+
};
|
|
184
|
+
export type RideBoardSave = {
|
|
185
|
+
week: string;
|
|
186
|
+
courses: Record<string, RideBoardRow[]>;
|
|
187
|
+
};
|
|
188
|
+
export declare const RIDE_BOARD_SIZE = 10;
|
|
189
|
+
/** The ISO week a moment falls in (Monday starts a week), the board's key: "2026-W43". */
|
|
190
|
+
export declare function rideWeekKey(nowMs: number): string;
|
|
191
|
+
export declare function emptyRideBoard(nowMs: number): RideBoardSave;
|
|
192
|
+
/** The board as saved, or a fresh one: last week's board, a broken row, an impossible time or an unknown course is dropped. */
|
|
193
|
+
export declare function parseRideBoard(raw: unknown, nowMs: number, plausible: (courseId: string, ms: number) => boolean): RideBoardSave;
|
|
194
|
+
/** A finished run on the board: one row a name (only a quicker run replaces it); a new week starts afresh. */
|
|
195
|
+
export declare function recordRideTime(save: RideBoardSave, courseId: string, name: string, ms: number, nowMs: number): {
|
|
196
|
+
save: RideBoardSave;
|
|
197
|
+
changed: boolean;
|
|
198
|
+
place: number;
|
|
199
|
+
};
|
|
200
|
+
export declare function ridePlaceOf(rows: readonly RideBoardRow[], name: string): number;
|
|
201
|
+
/** The board as chat lines, quickest first. */
|
|
202
|
+
export declare function rideBoardLines(save: RideBoardSave, course: Pick<RideCourse, 'id' | 'name'>): string[];
|
|
203
|
+
/** ServerMessage 'cart' phases. */
|
|
204
|
+
export type RidePhase = 'ready' | 'go' | 'lane' | 'knock' | 'boost' | 'checkpoint' | 'done' | 'fail';
|
|
205
|
+
/** Messages a rider may still send: nothing that moves, acts, trades, fights, eats or sits. Server and client keep the same list. */
|
|
206
|
+
export declare const RIDE_ALLOWED_MESSAGES: ReadonlySet<string>;
|
|
207
|
+
/** The walking pace the server's multipliers scale (backend config.ts MOVE_SPEED_TILES_PER_SEC; the backend smoke checks they agree). */
|
|
208
|
+
export declare const RIDE_WALK_TILES_PER_SEC = 3.9;
|
|
209
|
+
/** What a step costs the world's stepping (a diagonal is root two, as backend map.ts stepCost). */
|
|
210
|
+
export declare function rideStepCost(a: {
|
|
211
|
+
x: number;
|
|
212
|
+
z: number;
|
|
213
|
+
}, b: {
|
|
214
|
+
x: number;
|
|
215
|
+
z: number;
|
|
216
|
+
}): number;
|
|
217
|
+
/**
|
|
218
|
+
* How much faster a lane's cart rolls than the centreline's, so that every lane takes the same time end to end (an outside lane is longer
|
|
219
|
+
* round a corner): the lane's length over the centreline's. The skill is in the hazards, not in hugging the inside.
|
|
220
|
+
*/
|
|
221
|
+
export declare function rideLaneScale(b: BuiltCourse, lane: RideLane): number;
|
|
222
|
+
/**
|
|
223
|
+
* The time a clean run takes (no knock), riding at the centreline's pace: with `boosts` every mat taken, without them none. The quickest a run
|
|
224
|
+
* can be is about the first; a careful run with no mats about the second. Used to set the paint times and the board's plausible range.
|
|
225
|
+
*/
|
|
226
|
+
export declare function rideCleanTimeMs(b: BuiltCourse, boosts: boolean): number;
|
|
227
|
+
/** `ride:go:<course>` asks for a ride, `ride:board:<course>` reads that course's Fastest Times, `ride:mine` your own times this week. */
|
|
228
|
+
export declare const RIDE_ACTION_PREFIX = "ride:";
|
|
229
|
+
export declare const rideGoAction: (courseId: string) => string;
|
|
230
|
+
export declare const rideBoardAction: (courseId: string) => string;
|
|
231
|
+
export declare const RIDE_MINE_ACTION = "ride:mine";
|
|
232
|
+
export declare function isRideAction(action: string): boolean;
|
|
233
|
+
/** What an action asks for, or null when it is not a ride action. */
|
|
234
|
+
export declare function parseRideAction(action: string): {
|
|
235
|
+
kind: 'go' | 'board';
|
|
236
|
+
course: string;
|
|
237
|
+
} | {
|
|
238
|
+
kind: 'mine';
|
|
239
|
+
} | null;
|
|
240
|
+
//# sourceMappingURL=steeredRide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steeredRide.d.ts","sourceRoot":"","sources":["../src/steeredRide.ts"],"names":[],"mappings":"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"}
|