@maka/maka-cli 5.68.0 → 5.70.0
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/bundle/typescript/package.json +13 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.js +54 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +12 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +109 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.d.ts +48 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.js +107 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +7 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +22 -18
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +68 -30
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +17 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +12 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +8 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +11 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +107 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js +5 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +14 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +33 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.d.ts +40 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.js +91 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +10 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +12 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +41 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +112 -8
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +85 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +214 -3
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +52 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +101 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +67 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +167 -66
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +161 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +245 -24
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +97 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +134 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +19 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.d.ts +53 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js +106 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +41 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +52 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +45 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +26 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +45 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +90 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +70 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +168 -22
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +33 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +46 -6
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +53 -0
- package/bundle/typescript/src/tools/ai/ai.class.js +152 -7
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.class.d.ts +1 -1
- package/bundle/typescript/src/tools/https/https.class.js +29 -4
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.interface.d.ts +8 -0
- package/package.json +13 -2
|
@@ -33,6 +33,9 @@ export interface IRoomConstructorConfig {
|
|
|
33
33
|
description: string;
|
|
34
34
|
details?: string;
|
|
35
35
|
roomType: string;
|
|
36
|
+
/** Open to the sky (seed `outdoors`). Undefined = not declared, and
|
|
37
|
+
* utilities/outdoors.ts falls back to guessing from the name. */
|
|
38
|
+
outdoors?: boolean;
|
|
36
39
|
exits?: Map<Direction, Door | string>;
|
|
37
40
|
inventory?: Inventory;
|
|
38
41
|
isStartRoom?: boolean;
|
|
@@ -42,6 +45,7 @@ export interface IRoomConstructorConfig {
|
|
|
42
45
|
levels?: IGridSynthesisLevel[];
|
|
43
46
|
hasNode?: boolean;
|
|
44
47
|
nodeAccess?: 'wireless' | 'wired';
|
|
48
|
+
hostRating?: number;
|
|
45
49
|
warded?: boolean;
|
|
46
50
|
watched?: boolean;
|
|
47
51
|
supportedLifestyles?: {
|
|
@@ -60,6 +64,10 @@ export declare class Room extends AbstractRoom {
|
|
|
60
64
|
details?: string;
|
|
61
65
|
exits: Map<Direction, Door | string>;
|
|
62
66
|
roomType: string;
|
|
67
|
+
/** See IRoomConstructorConfig.outdoors -- the ONE consumer is
|
|
68
|
+
* utilities/outdoors.ts (the taxi curb and the generator's
|
|
69
|
+
* start-room guarantee both go through it). */
|
|
70
|
+
outdoors?: boolean;
|
|
63
71
|
isStartRoom: boolean;
|
|
64
72
|
inventory: Inventory;
|
|
65
73
|
supportedLifestyles?: {
|
|
@@ -183,6 +191,59 @@ export declare class Room extends AbstractRoom {
|
|
|
183
191
|
clearTerrainFor(deviceName: string): string | undefined;
|
|
184
192
|
hasNode: boolean;
|
|
185
193
|
nodeAccess: 'wireless' | 'wired';
|
|
194
|
+
/**
|
|
195
|
+
* HOST RATING (SR5 p.247 HOST ATTRIBUTES, RAG-checked 2026-08-28) --
|
|
196
|
+
* 1 to 12, and the one number a host is described BY. The book's
|
|
197
|
+
* sample table: 1-2 personal sites and pirate archives, 3-4 low-end
|
|
198
|
+
* commercial and private business, 5-6 social media and local police,
|
|
199
|
+
* 7-8 local corporate hosts and low-level government, 9-10 regional
|
|
200
|
+
* corporate and secure sites, 11-12 megacorporate HQ, military
|
|
201
|
+
* command, clandestine head office.
|
|
202
|
+
*
|
|
203
|
+
* Reported by Deditri (BTyfgybBnD2hjDmoN): the grid map named every
|
|
204
|
+
* place "host node" or "thin grid" and never said how hard it was, so
|
|
205
|
+
* a pawnshop and an arcology read identically from the outside.
|
|
206
|
+
*
|
|
207
|
+
* DEFAULT_HOST_RATING is a DEFAULT, not a rule -- the book rates
|
|
208
|
+
* hosts, it does not say what an unrated one is. 3 puts an unspecified
|
|
209
|
+
* host in the "low-end commercial, private business" band, which is
|
|
210
|
+
* what most run locations are; a seed that cares should say so.
|
|
211
|
+
*/
|
|
212
|
+
static readonly DEFAULT_HOST_RATING = 3;
|
|
213
|
+
static readonly MIN_HOST_RATING = 1;
|
|
214
|
+
static readonly MAX_HOST_RATING = 12;
|
|
215
|
+
hostRating: number;
|
|
216
|
+
/** A seeded rating held to the book's 1-12 band; anything absent,
|
|
217
|
+
* fractional or out of range falls back to the default rather than
|
|
218
|
+
* producing a host the rules have no shape for. */
|
|
219
|
+
static clampHostRating(rating: number | undefined): number;
|
|
220
|
+
/**
|
|
221
|
+
* THE HOST'S MATRIX ATTRIBUTES, derived from its rating (SR5 p.247):
|
|
222
|
+
* "usually (Host Rating), (Host Rating + 1), (Host Rating + 2), and
|
|
223
|
+
* (Host Rating + 3), in any order."
|
|
224
|
+
*
|
|
225
|
+
* The book leaves the ORDER to the gamemaster and gives one worked
|
|
226
|
+
* example -- a Rating 4 host with Attack 5, Sleaze 4, Data Processing
|
|
227
|
+
* 7, Firewall 6. That ordering is used here rather than one of my own
|
|
228
|
+
* invention, so the default is the book's own illustration. A seed
|
|
229
|
+
* that wants a differently-shaped host should say so explicitly when
|
|
230
|
+
* that field exists; "any order" means no ordering is more canon than
|
|
231
|
+
* another, which is exactly why this one is not presented as a rule.
|
|
232
|
+
*
|
|
233
|
+
* WHAT THESE DO NOT DO YET, so the next reader does not go hunting:
|
|
234
|
+
* nothing. The only mechanical use SR5 gives a Host Rating is IC
|
|
235
|
+
* rolling Host Rating x 2 (p.247-248), and this engine has no IC --
|
|
236
|
+
* `hostAlert` is a flag and "ice hunting" is prose; nothing rolls on
|
|
237
|
+
* the host's side anywhere. Host intrusion is a threshold frame with
|
|
238
|
+
* no opposed roll to put these into. Filed as its own item; see the
|
|
239
|
+
* note on hostRating above.
|
|
240
|
+
*/
|
|
241
|
+
hostAttributes(): {
|
|
242
|
+
attack: number;
|
|
243
|
+
sleaze: number;
|
|
244
|
+
dataProcessing: number;
|
|
245
|
+
firewall: number;
|
|
246
|
+
};
|
|
186
247
|
hostCracked: boolean;
|
|
187
248
|
hostMarksBy: Map<string, number>;
|
|
188
249
|
hostAlert: boolean;
|
|
@@ -195,6 +256,42 @@ export declare class Room extends AbstractRoom {
|
|
|
195
256
|
addActor(actor: Player): void;
|
|
196
257
|
removeActor(actor: Player): void;
|
|
197
258
|
getActors(): (Player | NPC)[];
|
|
259
|
+
/**
|
|
260
|
+
* WHEN A ROOM ANSWERS AS A CROWD (hiRLexr3xJjQM2jP4: "that was funny,
|
|
261
|
+
* but a little silly... Brick and Marla were standing next to
|
|
262
|
+
* eachother").
|
|
263
|
+
*
|
|
264
|
+
* Brick walked to the bar, Marla was already there, and both
|
|
265
|
+
* acknowledged the same handoff. The adjacency the report names is
|
|
266
|
+
* not the fault -- two people at a bar ARE adjacent. The silliness is
|
|
267
|
+
* one event narrated twice.
|
|
268
|
+
*
|
|
269
|
+
* WHY IT HAPPENS, AND WHY THE BRIEF'S OWN RULE CANNOT STOP IT. Room
|
|
270
|
+
* speech fans out in PARALLEL and un-awaited (see say() below): every
|
|
271
|
+
* listener's hear() is launched at once and each NPC calls the AI on
|
|
272
|
+
* its own. The brief already says "Do NOT repeat, rephrase, or re-ask
|
|
273
|
+
* anything you have already said" -- but at the moment each NPC is
|
|
274
|
+
* asked, the other's reply DOES NOT EXIST YET. Cross-NPC duplication
|
|
275
|
+
* is structurally invisible to both of them.
|
|
276
|
+
*
|
|
277
|
+
* SO THE FIX IS TO TELL THEM THEY ARE NOT ALONE, and nothing more.
|
|
278
|
+
* The fan-out stays un-awaited: serialising the calls would buy
|
|
279
|
+
* coordination with latency and a duller room, and a responder
|
|
280
|
+
* throttle would silence people who have something to say.
|
|
281
|
+
*
|
|
282
|
+
* IT DISCOURAGES RESTATING, NOT SPEAKING, and that distinction is the
|
|
283
|
+
* whole risk. say.ts's overheard-CALL note tells a bystander to stay
|
|
284
|
+
* silent unless it concerns them, which is right THERE -- you are
|
|
285
|
+
* hearing half of a private conversation. A bar handoff is the
|
|
286
|
+
* opposite situation, and borrowing that instruction would trade a
|
|
287
|
+
* mild silliness for a dead room. The reporter laughed; a room that
|
|
288
|
+
* stopped talking would not be an improvement on a laugh.
|
|
289
|
+
*
|
|
290
|
+
* NPC recipients only: Player.hear PRINTS what it is given, so a
|
|
291
|
+
* system note appended for a human would land verbatim in their
|
|
292
|
+
* transcript.
|
|
293
|
+
*/
|
|
294
|
+
private crowdNote;
|
|
198
295
|
say(actor: Player, message: string): void;
|
|
199
296
|
addExit(direction: Direction, targetRoom: Room, keyItemOrSolution?: string): void;
|
|
200
297
|
attemptUnlockExit(direction: Direction, itemOrSolution: string): string;
|
|
@@ -17,6 +17,10 @@ export class Room extends AbstractRoom {
|
|
|
17
17
|
details;
|
|
18
18
|
exits = new Map();
|
|
19
19
|
roomType;
|
|
20
|
+
/** See IRoomConstructorConfig.outdoors -- the ONE consumer is
|
|
21
|
+
* utilities/outdoors.ts (the taxi curb and the generator's
|
|
22
|
+
* start-room guarantee both go through it). */
|
|
23
|
+
outdoors;
|
|
20
24
|
isStartRoom;
|
|
21
25
|
inventory = new Inventory();
|
|
22
26
|
supportedLifestyles;
|
|
@@ -291,6 +295,64 @@ export class Room extends AbstractRoom {
|
|
|
291
295
|
hasNode = false;
|
|
292
296
|
// See IRoomConstructorConfig.nodeAccess: 'wired' = air-gapped host.
|
|
293
297
|
nodeAccess = 'wireless';
|
|
298
|
+
/**
|
|
299
|
+
* HOST RATING (SR5 p.247 HOST ATTRIBUTES, RAG-checked 2026-08-28) --
|
|
300
|
+
* 1 to 12, and the one number a host is described BY. The book's
|
|
301
|
+
* sample table: 1-2 personal sites and pirate archives, 3-4 low-end
|
|
302
|
+
* commercial and private business, 5-6 social media and local police,
|
|
303
|
+
* 7-8 local corporate hosts and low-level government, 9-10 regional
|
|
304
|
+
* corporate and secure sites, 11-12 megacorporate HQ, military
|
|
305
|
+
* command, clandestine head office.
|
|
306
|
+
*
|
|
307
|
+
* Reported by Deditri (BTyfgybBnD2hjDmoN): the grid map named every
|
|
308
|
+
* place "host node" or "thin grid" and never said how hard it was, so
|
|
309
|
+
* a pawnshop and an arcology read identically from the outside.
|
|
310
|
+
*
|
|
311
|
+
* DEFAULT_HOST_RATING is a DEFAULT, not a rule -- the book rates
|
|
312
|
+
* hosts, it does not say what an unrated one is. 3 puts an unspecified
|
|
313
|
+
* host in the "low-end commercial, private business" band, which is
|
|
314
|
+
* what most run locations are; a seed that cares should say so.
|
|
315
|
+
*/
|
|
316
|
+
// Declared BEFORE hostRating: an instance field initializer runs
|
|
317
|
+
// against statics that already exist, so ordering them the other way
|
|
318
|
+
// round is a TS2729 at build time.
|
|
319
|
+
static DEFAULT_HOST_RATING = 3;
|
|
320
|
+
static MIN_HOST_RATING = 1;
|
|
321
|
+
static MAX_HOST_RATING = 12;
|
|
322
|
+
hostRating = Room.DEFAULT_HOST_RATING;
|
|
323
|
+
/** A seeded rating held to the book's 1-12 band; anything absent,
|
|
324
|
+
* fractional or out of range falls back to the default rather than
|
|
325
|
+
* producing a host the rules have no shape for. */
|
|
326
|
+
static clampHostRating(rating) {
|
|
327
|
+
if (typeof rating !== 'number' || !Number.isFinite(rating))
|
|
328
|
+
return Room.DEFAULT_HOST_RATING;
|
|
329
|
+
return Math.min(Room.MAX_HOST_RATING, Math.max(Room.MIN_HOST_RATING, Math.round(rating)));
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* THE HOST'S MATRIX ATTRIBUTES, derived from its rating (SR5 p.247):
|
|
333
|
+
* "usually (Host Rating), (Host Rating + 1), (Host Rating + 2), and
|
|
334
|
+
* (Host Rating + 3), in any order."
|
|
335
|
+
*
|
|
336
|
+
* The book leaves the ORDER to the gamemaster and gives one worked
|
|
337
|
+
* example -- a Rating 4 host with Attack 5, Sleaze 4, Data Processing
|
|
338
|
+
* 7, Firewall 6. That ordering is used here rather than one of my own
|
|
339
|
+
* invention, so the default is the book's own illustration. A seed
|
|
340
|
+
* that wants a differently-shaped host should say so explicitly when
|
|
341
|
+
* that field exists; "any order" means no ordering is more canon than
|
|
342
|
+
* another, which is exactly why this one is not presented as a rule.
|
|
343
|
+
*
|
|
344
|
+
* WHAT THESE DO NOT DO YET, so the next reader does not go hunting:
|
|
345
|
+
* nothing. The only mechanical use SR5 gives a Host Rating is IC
|
|
346
|
+
* rolling Host Rating x 2 (p.247-248), and this engine has no IC --
|
|
347
|
+
* `hostAlert` is a flag and "ice hunting" is prose; nothing rolls on
|
|
348
|
+
* the host's side anywhere. Host intrusion is a threshold frame with
|
|
349
|
+
* no opposed roll to put these into. Filed as its own item; see the
|
|
350
|
+
* note on hostRating above.
|
|
351
|
+
*/
|
|
352
|
+
hostAttributes() {
|
|
353
|
+
const hr = this.hostRating;
|
|
354
|
+
return { attack: hr + 1, sleaze: hr, dataProcessing: hr + 3, firewall: hr + 2 };
|
|
355
|
+
}
|
|
294
356
|
// Runtime: set once someone hacks this room's host (see hack.ts). Until
|
|
295
357
|
// then, the host's data vault holds its matrix items sealed (take.ts).
|
|
296
358
|
// Fresh Rooms per scene means it naturally resets between jobs.
|
|
@@ -314,8 +376,10 @@ export class Room extends AbstractRoom {
|
|
|
314
376
|
this.name = config.name;
|
|
315
377
|
this.description = config.description;
|
|
316
378
|
this.roomType = config.roomType;
|
|
379
|
+
this.outdoors = config.outdoors;
|
|
317
380
|
this.hasNode = config.hasNode ?? false;
|
|
318
381
|
this.nodeAccess = config.nodeAccess ?? 'wireless';
|
|
382
|
+
this.hostRating = Room.clampHostRating(config.hostRating);
|
|
319
383
|
this.warded = config.warded ?? false;
|
|
320
384
|
this.watched = config.watched ?? false;
|
|
321
385
|
this.exits = config.exits || new Map();
|
|
@@ -390,6 +454,48 @@ Keep it concise and dramatic.`;
|
|
|
390
454
|
getActors() {
|
|
391
455
|
return Array.from(this.actors);
|
|
392
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* WHEN A ROOM ANSWERS AS A CROWD (hiRLexr3xJjQM2jP4: "that was funny,
|
|
459
|
+
* but a little silly... Brick and Marla were standing next to
|
|
460
|
+
* eachother").
|
|
461
|
+
*
|
|
462
|
+
* Brick walked to the bar, Marla was already there, and both
|
|
463
|
+
* acknowledged the same handoff. The adjacency the report names is
|
|
464
|
+
* not the fault -- two people at a bar ARE adjacent. The silliness is
|
|
465
|
+
* one event narrated twice.
|
|
466
|
+
*
|
|
467
|
+
* WHY IT HAPPENS, AND WHY THE BRIEF'S OWN RULE CANNOT STOP IT. Room
|
|
468
|
+
* speech fans out in PARALLEL and un-awaited (see say() below): every
|
|
469
|
+
* listener's hear() is launched at once and each NPC calls the AI on
|
|
470
|
+
* its own. The brief already says "Do NOT repeat, rephrase, or re-ask
|
|
471
|
+
* anything you have already said" -- but at the moment each NPC is
|
|
472
|
+
* asked, the other's reply DOES NOT EXIST YET. Cross-NPC duplication
|
|
473
|
+
* is structurally invisible to both of them.
|
|
474
|
+
*
|
|
475
|
+
* SO THE FIX IS TO TELL THEM THEY ARE NOT ALONE, and nothing more.
|
|
476
|
+
* The fan-out stays un-awaited: serialising the calls would buy
|
|
477
|
+
* coordination with latency and a duller room, and a responder
|
|
478
|
+
* throttle would silence people who have something to say.
|
|
479
|
+
*
|
|
480
|
+
* IT DISCOURAGES RESTATING, NOT SPEAKING, and that distinction is the
|
|
481
|
+
* whole risk. say.ts's overheard-CALL note tells a bystander to stay
|
|
482
|
+
* silent unless it concerns them, which is right THERE -- you are
|
|
483
|
+
* hearing half of a private conversation. A bar handoff is the
|
|
484
|
+
* opposite situation, and borrowing that instruction would trade a
|
|
485
|
+
* mild silliness for a dead room. The reporter laughed; a room that
|
|
486
|
+
* stopped talking would not be an improvement on a laugh.
|
|
487
|
+
*
|
|
488
|
+
* NPC recipients only: Player.hear PRINTS what it is given, so a
|
|
489
|
+
* system note appended for a human would land verbatim in their
|
|
490
|
+
* transcript.
|
|
491
|
+
*/
|
|
492
|
+
crowdNote(recipients) {
|
|
493
|
+
const mouths = recipients.filter(r => r instanceof NPC).length;
|
|
494
|
+
if (mouths < 2)
|
|
495
|
+
return '';
|
|
496
|
+
const others = mouths - 1;
|
|
497
|
+
return ` [System note: ${others} other ${others === 1 ? 'person' : 'people'} in earshot heard this too, and each is answering in the same moment as you -- none of you can see what the others are about to say. Say YOUR piece, in your own voice, but not the same piece: if the obvious reply is one anyone here would give, make yours specific to you instead. Two people reporting one event reads as a joke.]`;
|
|
498
|
+
}
|
|
393
499
|
say(actor, message) {
|
|
394
500
|
// "At" spots: speech is LOCAL (player decision: speech local, sight
|
|
395
501
|
// room-wide -- walking into the bar had every NPC in the room
|
|
@@ -405,8 +511,21 @@ Keep it concise and dramatic.`;
|
|
|
405
511
|
// companion shell at heel uses that distinction to stay quiet (see
|
|
406
512
|
// NPC.hear); targeted channels (talk/order/ask...) never set it.
|
|
407
513
|
if (speakerSpot === undefined) {
|
|
408
|
-
|
|
409
|
-
|
|
514
|
+
const crowd = this.crowdNote(listeners);
|
|
515
|
+
// CAUGHT, like every other hear() fan-out in the game (say.ts,
|
|
516
|
+
// planes.ts, game.ts heartbeat). These three were the only bare
|
|
517
|
+
// ones left: a bare `void` on a rejecting promise is an
|
|
518
|
+
// unhandledRejection, and ui.ts fatal handler kills the session
|
|
519
|
+
// on one -- which is exactly how a 502 from the AI relay ended a
|
|
520
|
+
// live game twice on 2026-08-29. Belt AND braces: NPC.hear now
|
|
521
|
+
// swallows its own reaction failures too, so this is redundant
|
|
522
|
+
// for NPCs on purpose -- it still guards any other Player
|
|
523
|
+
// subclass that grows an async hear().
|
|
524
|
+
for (const recipient of listeners) {
|
|
525
|
+
void Promise.resolve(recipient.hear(actor, recipient instanceof NPC ? `${message}${crowd}` : message, { broadcast: true })).catch(err => {
|
|
526
|
+
this.logger.error(`${recipient.name} failed to hear ${actor.name}: ${err}`);
|
|
527
|
+
});
|
|
528
|
+
}
|
|
410
529
|
return;
|
|
411
530
|
}
|
|
412
531
|
const local = listeners.filter(r => {
|
|
@@ -414,8 +533,12 @@ Keep it concise and dramatic.`;
|
|
|
414
533
|
return rs === undefined || rs === speakerSpot;
|
|
415
534
|
});
|
|
416
535
|
if (local.length > 0) {
|
|
417
|
-
|
|
418
|
-
|
|
536
|
+
const crowd = this.crowdNote(local);
|
|
537
|
+
for (const recipient of local) {
|
|
538
|
+
void Promise.resolve(recipient.hear(actor, recipient instanceof NPC ? `${message}${crowd}` : message, { broadcast: true })).catch(err => {
|
|
539
|
+
this.logger.error(`${recipient.name} failed to hear ${actor.name}: ${err}`);
|
|
540
|
+
});
|
|
541
|
+
}
|
|
419
542
|
return;
|
|
420
543
|
}
|
|
421
544
|
// VOICE RANGE (spatial pass 2026-08-25): how hard you have to work
|
|
@@ -434,9 +557,15 @@ Keep it concise and dramatic.`;
|
|
|
434
557
|
const shoutTargets = actor instanceof NPC
|
|
435
558
|
? listeners.filter(r => r === player)
|
|
436
559
|
: listeners;
|
|
560
|
+
const shoutCrowd = this.crowdNote(shoutTargets);
|
|
437
561
|
for (const recipient of shoutTargets) {
|
|
438
562
|
const band = voiceBandFor(actorDistanceMeters(this, actor, recipient));
|
|
439
|
-
|
|
563
|
+
// The crowd note goes LAST, after the voice tag: both are system
|
|
564
|
+
// dressing, and the tag describes the words while the note
|
|
565
|
+
// describes the room.
|
|
566
|
+
void Promise.resolve(recipient.hear(actor, `${message}${voiceTag(band)}${recipient instanceof NPC ? shoutCrowd : ''}`, { broadcast: true })).catch(err => {
|
|
567
|
+
this.logger.error(`${recipient.name} failed to hear ${actor.name} shout: ${err}`);
|
|
568
|
+
});
|
|
440
569
|
}
|
|
441
570
|
}
|
|
442
571
|
addExit(direction, targetRoom, keyItemOrSolution) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/room.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"room.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/room.ts"],"names":[],"mappings":"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"}
|
|
@@ -226,6 +226,7 @@
|
|
|
226
226
|
"name": "Grid Vault",
|
|
227
227
|
"description": "A humming server room jury-rigged into the Barrens power grid. Thick cables run from the door into matte-black server racks with no antenna in sight -- whatever lives in there doesn't talk to the wireless world.",
|
|
228
228
|
"hasNode": true,
|
|
229
|
+
"hostRating": 9,
|
|
229
230
|
"nodeAccess": "wired",
|
|
230
231
|
"size": "small",
|
|
231
232
|
"spots": [
|
|
@@ -299,6 +299,7 @@
|
|
|
299
299
|
"roomType": "Shop",
|
|
300
300
|
"owner": "Ratchet",
|
|
301
301
|
"hasNode": true,
|
|
302
|
+
"hostRating": 3,
|
|
302
303
|
"size": "medium",
|
|
303
304
|
"spots": [
|
|
304
305
|
{
|
|
@@ -474,6 +475,7 @@
|
|
|
474
475
|
"description": "Past the door, rows of scavenged sim-couches wired into a matte-black host with no wireless presence at all -- hard lines only, the way the paranoid like it. The couch rows whisper with other people's dreams.",
|
|
475
476
|
"roomType": "Den",
|
|
476
477
|
"hasNode": true,
|
|
478
|
+
"hostRating": 5,
|
|
477
479
|
"nodeAccess": "wired",
|
|
478
480
|
"size": "small",
|
|
479
481
|
"spots": [
|
|
@@ -65,6 +65,26 @@ export interface IReproNpc {
|
|
|
65
65
|
/** Holding it shut: a doorman, a picket. Implies atDoorway, because a
|
|
66
66
|
* guard who is not in the doorway guards nothing. */
|
|
67
67
|
guarding?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* ARMED AND WIRELESS -- a firearm and a commlink.
|
|
70
|
+
*
|
|
71
|
+
* Added because a bench could not express "somebody over there is
|
|
72
|
+
* carrying a gun", which is the whole subject of the p.219 icon item:
|
|
73
|
+
* an interesting or dangerous device should break out as its own icon
|
|
74
|
+
* beside its owner's PAN. The bench's NPC answered "runs no devices at
|
|
75
|
+
* all, nothing to crack", so the fixture could not reach the thing it
|
|
76
|
+
* was built to show.
|
|
77
|
+
*
|
|
78
|
+
* IT ALSO UNLOCKS `hack <name>` ON A BENCH, which is worth saying
|
|
79
|
+
* because it is not what the flag is named for and someone looking
|
|
80
|
+
* for it will not think to read "armed". The commlink is what gives
|
|
81
|
+
* the NPC a PAN at all, so every PAN-side Matrix action -- the
|
|
82
|
+
* intrusion, its brackets, jamming a smartgun, cutting an overlay --
|
|
83
|
+
* became reachable from a repro the day this landed. It is currently
|
|
84
|
+
* the ONLY Matrix action a bench can reach: host intrusion and `tap`
|
|
85
|
+
* both need a host fixture, which the builder cannot make.
|
|
86
|
+
*/
|
|
87
|
+
armed?: boolean;
|
|
68
88
|
}
|
|
69
89
|
export interface IReproItem {
|
|
70
90
|
name: string;
|
|
@@ -86,6 +106,28 @@ export interface IReproFixture {
|
|
|
86
106
|
items?: IReproItem[];
|
|
87
107
|
/** Which side the runner starts on. Defaults to the barrier side. */
|
|
88
108
|
start?: ReproSide;
|
|
109
|
+
/**
|
|
110
|
+
* A SECOND STOREY on the barrier-side room -- a catwalk, balcony or
|
|
111
|
+
* mezzanine, with a spot standing on it.
|
|
112
|
+
*
|
|
113
|
+
* Added because elevation could not be benched at all: the builder
|
|
114
|
+
* made flat rooms, so a bench for "I don't know how to get up there"
|
|
115
|
+
* could only ever confirm the NEGATIVE (that ordinary rooms are
|
|
116
|
+
* unaffected). It also serves climb/descend, which is the next thing
|
|
117
|
+
* that needs to demonstrate going up.
|
|
118
|
+
*
|
|
119
|
+
* The spot is NOT optional and the builder will not let it be. A
|
|
120
|
+
* declared level with nothing standing on it is precisely the
|
|
121
|
+
* generation defect that produced these reports -- a storey the map
|
|
122
|
+
* draws and no string can reach -- so a fixture must not be able to
|
|
123
|
+
* reproduce it by accident while claiming to test the fix for it.
|
|
124
|
+
*/
|
|
125
|
+
level?: {
|
|
126
|
+
/** Reads as the spot's name too: "catwalk" is a fine place to stand. */
|
|
127
|
+
name: string;
|
|
128
|
+
kind?: 'catwalk' | 'balcony' | 'mezzanine';
|
|
129
|
+
side?: 'north' | 'east' | 'south' | 'west';
|
|
130
|
+
};
|
|
89
131
|
}
|
|
90
132
|
export interface IRepro {
|
|
91
133
|
fixture?: IReproFixture;
|
|
@@ -51,6 +51,18 @@ export interface IPlayerSeedJson {
|
|
|
51
51
|
* utilities/spots.ts holdsGround). The way past is social or
|
|
52
52
|
* violent, never a lockpick. */
|
|
53
53
|
guarding?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* This NPC is OPPOSITION: the runner is not supposed to be here, and
|
|
56
|
+
* they know it (JjQdy4A4tzcQdPHno, "none of the NPCs ever seem to get
|
|
57
|
+
* hostile"). See Player.hostile for what it does and, more
|
|
58
|
+
* importantly, what it deliberately does not do.
|
|
59
|
+
*
|
|
60
|
+
* OPT-IN, NEVER INFERRED. The generator's own head-count calls every
|
|
61
|
+
* NPC that is not the client a "hostile", which is a population
|
|
62
|
+
* measure and not a disposition -- a bartender in an enemy building
|
|
63
|
+
* is counted there. Deriving this from that would turn the vendors.
|
|
64
|
+
*/
|
|
65
|
+
hostile?: boolean;
|
|
54
66
|
lifestyleChoices: LifestyleChoice[];
|
|
55
67
|
startingItems?: IItemSeedJson[];
|
|
56
68
|
combat?: ICombatSeedJson;
|
|
@@ -5,6 +5,11 @@ export interface IRoomSeedJson {
|
|
|
5
5
|
name: string;
|
|
6
6
|
description: string;
|
|
7
7
|
roomType: string;
|
|
8
|
+
/** IS THIS ROOM OPEN TO THE SKY? Declared, because no name can be
|
|
9
|
+
* trusted to say it -- see utilities/outdoors.ts. Optional: a seed
|
|
10
|
+
* that omits it falls back to the name heuristic, which is what
|
|
11
|
+
* every seed written before this field does. */
|
|
12
|
+
outdoors?: boolean;
|
|
8
13
|
isStartRoom?: boolean;
|
|
9
14
|
owner?: string;
|
|
10
15
|
tags?: string[];
|
|
@@ -15,6 +20,7 @@ export interface IRoomSeedJson {
|
|
|
15
20
|
reachable?: boolean;
|
|
16
21
|
hasNode?: boolean;
|
|
17
22
|
nodeAccess?: 'wireless' | 'wired';
|
|
23
|
+
hostRating?: number;
|
|
18
24
|
warded?: boolean;
|
|
19
25
|
watched?: boolean;
|
|
20
26
|
spots?: {
|
|
@@ -24,6 +24,13 @@ export interface IStrikeProfile {
|
|
|
24
24
|
/** A SPELL strike (cast.ts): an Awakened defender's COUNTERSPELLING
|
|
25
25
|
* (canon: its own Magic skill) rides their defense against it. */
|
|
26
26
|
isSpell?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* An explicit limit for a strike that is not a weapon attack: a
|
|
29
|
+
* spell's FORCE (p.281, "the Force acts as a limit on the spell";
|
|
30
|
+
* Spellcasting + Magic [Force]). Weapon strikes leave this undefined
|
|
31
|
+
* and take their Accuracy instead -- see Player.getAttackLimit.
|
|
32
|
+
*/
|
|
33
|
+
limit?: number;
|
|
27
34
|
}
|
|
28
35
|
/**
|
|
29
36
|
* The shared combat-exchange engine, extracted from AttackCommand so spell
|
|
@@ -450,7 +450,25 @@ export class CombatExchange {
|
|
|
450
450
|
// p.189 "Defender Prone": -2 to defend -- but NOT against ranged
|
|
451
451
|
// fire unless the shooter is inside five metres.
|
|
452
452
|
const proneDefence = onTheGround(defender) && (isMelee || spatial.meters <= 5) ? -2 : 0;
|
|
453
|
-
|
|
453
|
+
// THE LIMIT RIDES THE WEAPON IN HAND (p.46-47, p.168): a meat
|
|
454
|
+
// attack is capped by its Accuracy, or by the attacker's Physical
|
|
455
|
+
// limit when there is nothing behind the swing. The strike profile
|
|
456
|
+
// is the right thing to ask, because it has ALREADY resolved what
|
|
457
|
+
// is really being swung -- a holstered gun does not count, and a
|
|
458
|
+
// dry or smartlink-locked firearm has degraded to bare fists above,
|
|
459
|
+
// which correctly leaves weaponItem undefined and drops the attack
|
|
460
|
+
// onto the Physical limit.
|
|
461
|
+
//
|
|
462
|
+
// A SPELL IS BRACKETED BY FORCE, NEVER BY THE BODY (p.281). It is
|
|
463
|
+
// cast from the meat plane with no weaponItem, so asking
|
|
464
|
+
// getAttackLimit would hand a manabolt the caster's PHYSICAL limit
|
|
465
|
+
// -- a mage's bolt capped by how strong their arms are. Spells take
|
|
466
|
+
// their own declared limit and nothing else; undefined stays
|
|
467
|
+
// uncapped rather than falling through.
|
|
468
|
+
const attackLimit = strike.isSpell
|
|
469
|
+
? strike.limit
|
|
470
|
+
: attacker.getAttackLimit(strike.weaponItem);
|
|
471
|
+
const attack = rollPool(strike.pool + directed + rangeMod + attackerFloor + targetDown, attackLimit);
|
|
454
472
|
const defense = rollPool(defender.getDefensePool() + inspired + counterspell + coverDice + proneDefence);
|
|
455
473
|
const header = `${attacker.name} attacks ${defender.name} ${strike.label}`;
|
|
456
474
|
meta.push(`${header}:`);
|