@maka/maka-cli 5.74.0 → 5.75.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 +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +12 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +288 -46
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +20 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +10 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +9 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +83 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +253 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +116 -3
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +85 -14
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless.js +5 -3
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +35 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +158 -3
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js +24 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +33 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +15 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-names.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-names.js +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-names.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +4 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +71 -18
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +109 -21
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +38 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.d.ts +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +34 -8
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +1 -20
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/generator.js +1 -0
- package/bundle/typescript/src/generator.js.map +1 -1
- package/bundle/typescript/src/templates/meteor/collection/tests.js +1 -1
- package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.jsx +31 -29
- package/bundle/typescript/src/templates/react/test/test.js.tsx +31 -29
- package/bundle/typescript/src/tools/browser/open-browser.d.ts +7 -0
- package/bundle/typescript/src/tools/browser/open-browser.js +21 -0
- package/bundle/typescript/src/tools/browser/open-browser.js.map +1 -0
- package/bundle/typescript/src/tools/pkg/pkg.class.js +12 -1
- package/bundle/typescript/src/tools/pkg/pkg.class.js.map +1 -1
- package/package.json +1 -1
|
@@ -129,10 +129,39 @@ export function buildReproScene(fixture) {
|
|
|
129
129
|
if (items.length > MAX_ITEMS) {
|
|
130
130
|
throw new ReproFixtureError(`A repro carries at most ${MAX_ITEMS} items; this one has ${items.length}.`);
|
|
131
131
|
}
|
|
132
|
+
// A CIRCULATING NPC HOLDS NOTHING. Refused rather than resolved:
|
|
133
|
+
// "guarding" and "atDoorway" both mean "stands in the doorway", and
|
|
134
|
+
// "circulating" means "stands nowhere". A fixture asking for both
|
|
135
|
+
// would build, walk, and hold the door open while claiming to guard
|
|
136
|
+
// it -- the same silent-nothing this file exists to prevent.
|
|
137
|
+
const contradictory = npcs.find(n => n.circulating && (n.guarding || n.atDoorway));
|
|
138
|
+
if (contradictory) {
|
|
139
|
+
throw new ReproFixtureError(`"${contradictory.name}" is asked to circulate AND hold the doorway. `
|
|
140
|
+
+ `A circulating NPC stands nowhere, so it can guard nothing -- pick one.`);
|
|
141
|
+
}
|
|
132
142
|
const duplicateNpc = npcs.find((n, i) => npcs.findIndex(o => o.name === n.name) !== i);
|
|
133
143
|
if (duplicateNpc) {
|
|
134
144
|
throw new ReproFixtureError(`Two NPCs are both called "${duplicateNpc.name}" -- a name has to pick one body out.`);
|
|
135
145
|
}
|
|
146
|
+
// ICE NEEDS SOMETHING TO GUARD. Refused rather than promoted to a
|
|
147
|
+
// host: a builder that quietly invented the host would be inventing
|
|
148
|
+
// the very fixture the bench exists to demonstrate.
|
|
149
|
+
const homelessIce = npcs.find(n => n.ice) && !fixture.host;
|
|
150
|
+
if (homelessIce) {
|
|
151
|
+
throw new ReproFixtureError(`This fixture has ice but no host. Intrusion countermeasures guard a node -- `
|
|
152
|
+
+ `add "host": {} (or give it a rating and access) so there is something for it to be inside.`);
|
|
153
|
+
}
|
|
154
|
+
// ICE DOES NOT STAND ANYWHERE, AND CARRIES NOTHING (raised by
|
|
155
|
+
// backlog-session-1). Spots are MEAT positions -- spotOf returns
|
|
156
|
+
// undefined off the meat plane -- so a doorway or a patrol route on
|
|
157
|
+
// ice is silently inert rather than wrong, and silently inert is
|
|
158
|
+
// exactly what these invariants exist to catch. `armed` is a pistol
|
|
159
|
+
// and a commlink, which on a countermeasure is meaningless at best.
|
|
160
|
+
const misplacedIce = npcs.find(n => n.ice && (n.atDoorway || n.guarding || n.circulating || n.armed));
|
|
161
|
+
if (misplacedIce) {
|
|
162
|
+
throw new ReproFixtureError(`"${misplacedIce.name}" is ice, so it cannot also stand in a doorway, guard, circulate or carry a gun. `
|
|
163
|
+
+ `Ice lives in the host, not on the floor -- drop the meat-side flags, or drop "ice".`);
|
|
164
|
+
}
|
|
136
165
|
const barrier = fixture.barrier;
|
|
137
166
|
const direction = barrier?.sealsExit ?? Direction.NORTH;
|
|
138
167
|
const startSide = fixture.start ?? 'barrier';
|
|
@@ -208,7 +237,36 @@ export function buildReproScene(fixture) {
|
|
|
208
237
|
if (level) {
|
|
209
238
|
spots.push({ name: level.name, level: 1 });
|
|
210
239
|
}
|
|
240
|
+
// `climbOnly` is applied AFTER the grid exists, in buildReproScene
|
|
241
|
+
// below -- the seed cannot express "no ladder", because the safe link
|
|
242
|
+
// is synthesised by the grid rather than declared by the room.
|
|
243
|
+
// THE HOST, on whichever side was asked for.
|
|
244
|
+
//
|
|
245
|
+
// INVARIANT 4: a host goes on ONE room, and by default the one the
|
|
246
|
+
// runner is standing in. A bench whose node sits behind the door it
|
|
247
|
+
// is also testing makes the reviewer walk before they can type the
|
|
248
|
+
// verb under review, and the first thing they will report is that
|
|
249
|
+
// `hack` says there is no host here.
|
|
250
|
+
const host = fixture.host;
|
|
251
|
+
const hostSide = host?.side ?? startSide;
|
|
252
|
+
if (host?.rating !== undefined && (host.rating < 1 || host.rating > 12)) {
|
|
253
|
+
throw new ReproFixtureError(`A host rating is 1-12 (SR5 p.247); this one is ${host.rating}.`);
|
|
254
|
+
}
|
|
255
|
+
/** hasNode/nodeAccess/hostRating/watched already mean exactly this on
|
|
256
|
+
* the room seed -- see types/seed/room-seed.ts. Nothing is invented
|
|
257
|
+
* here, so a bench cannot describe a host the engine cannot build. */
|
|
258
|
+
const hostFields = (side) => (host && hostSide === side
|
|
259
|
+
? { hasNode: true, nodeAccess: host.access ?? 'wireless', hostRating: host.rating }
|
|
260
|
+
: {});
|
|
261
|
+
// Cameras WITHOUT a host. Never emitted alongside one: a host is
|
|
262
|
+
// always watched already, and saying it twice invites the next reader
|
|
263
|
+
// to think the two flags are independent.
|
|
264
|
+
const watchedFields = (side) => (fixture.watched && !(host && hostSide === side)
|
|
265
|
+
? { watched: true }
|
|
266
|
+
: {});
|
|
211
267
|
const barrierRoom = {
|
|
268
|
+
...hostFields('barrier'),
|
|
269
|
+
...watchedFields('barrier'),
|
|
212
270
|
name: REPRO_BARRIER_ROOM,
|
|
213
271
|
description: barrier
|
|
214
272
|
? `A short concrete run ending at one door, ${direction} of you. `
|
|
@@ -218,12 +276,14 @@ export function buildReproScene(fixture) {
|
|
|
218
276
|
roomType: 'Street',
|
|
219
277
|
size: level ? 'large' : 'medium',
|
|
220
278
|
spots,
|
|
221
|
-
levels: level ? [{ name: level.name, side: level.side ?? 'north', kind: level.kind ?? 'catwalk' }] : undefined,
|
|
279
|
+
levels: level ? [{ name: level.name, side: level.side ?? 'north', kind: level.kind ?? 'catwalk', climbOnly: level.climbOnly === true }] : undefined,
|
|
222
280
|
isStartRoom: startSide === 'barrier',
|
|
223
281
|
exits: [{ direction, targetRoom: REPRO_FAR_ROOM, atSpot: REPRO_DOORWAY_SPOT }],
|
|
224
282
|
devices: device ? [device] : undefined,
|
|
225
283
|
};
|
|
226
284
|
const farRoom = {
|
|
285
|
+
...hostFields('far'),
|
|
286
|
+
...watchedFields('far'),
|
|
227
287
|
name: REPRO_FAR_ROOM,
|
|
228
288
|
description: `The other side of the door, which lies ${OPPOSITE[direction]} of you`
|
|
229
289
|
+ `${barrier ? ` and is held from the far side by ${device.name}` : ''}. Bare, and no further out.`,
|
|
@@ -240,6 +300,32 @@ export function buildReproScene(fixture) {
|
|
|
240
300
|
const npcSeeds = npcs.map(npc => {
|
|
241
301
|
const side = npc.side ?? 'barrier';
|
|
242
302
|
const inDoorway = standsInDoorway(npc);
|
|
303
|
+
// ICE LIVES IN THE HOST'S ROOM, and takes its side from the host
|
|
304
|
+
// rather than from `side` -- one placement rule, not two. plane
|
|
305
|
+
// 'matrix' is what MAKES it ice (npc-seed.ts), and scene-factory
|
|
306
|
+
// then treats it as opposition by construction, so the fixture
|
|
307
|
+
// never has to declare hostility to get hostile ice.
|
|
308
|
+
//
|
|
309
|
+
// No startSpot, deliberately: a spot is a meat position and would
|
|
310
|
+
// be silently inert on a persona. The refusal above stops a fixture
|
|
311
|
+
// ASKING for one; this is the same rule on the emitting side.
|
|
312
|
+
if (npc.ice) {
|
|
313
|
+
return {
|
|
314
|
+
plane: 'matrix',
|
|
315
|
+
description: npc.concept,
|
|
316
|
+
dialogue: [],
|
|
317
|
+
player: {
|
|
318
|
+
name: npc.name,
|
|
319
|
+
startLocation: roomFor(fixture.host?.side ?? startSide),
|
|
320
|
+
lifestyleChoices: [],
|
|
321
|
+
combat: {
|
|
322
|
+
body: 4, agility: 4, reaction: 4, combatSkill: 3, strength: 4,
|
|
323
|
+
willpower: 3, logic: 3, intuition: 3, charisma: 3, edge: 2,
|
|
324
|
+
skills: { unarmed: 3, perception: 3, negotiation: 3 },
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
};
|
|
328
|
+
}
|
|
243
329
|
return {
|
|
244
330
|
description: npc.concept,
|
|
245
331
|
dialogue: [],
|
|
@@ -250,7 +336,10 @@ export function buildReproScene(fixture) {
|
|
|
250
336
|
// direction the barrier seals, never supplied -- a guarding NPC
|
|
251
337
|
// standing anywhere else holds nothing, silently, and the
|
|
252
338
|
// walkthrough would still pass.
|
|
253
|
-
|
|
339
|
+
// Omitted entirely when circulating -- an undefined startSpot is
|
|
340
|
+
// what "no cell" means to the scene factory. Not the empty
|
|
341
|
+
// string, which would read as a spot whose name is nothing.
|
|
342
|
+
...(npc.circulating ? {} : { startSpot: inDoorway ? REPRO_DOORWAY_SPOT : REPRO_FLOOR_SPOT }),
|
|
254
343
|
guarding: npc.guarding === true,
|
|
255
344
|
lifestyleChoices: [],
|
|
256
345
|
combat: {
|
|
@@ -273,7 +362,7 @@ export function buildReproScene(fixture) {
|
|
|
273
362
|
rating: 'Common',
|
|
274
363
|
weight: 0.1,
|
|
275
364
|
room: roomFor(it.side ?? 'barrier'),
|
|
276
|
-
atSpot: REPRO_FLOOR_SPOT,
|
|
365
|
+
atSpot: it.atDoorway ? REPRO_DOORWAY_SPOT : REPRO_FLOOR_SPOT,
|
|
277
366
|
}));
|
|
278
367
|
// INVARIANT 4: the key is on the side the runner starts on. A key
|
|
279
368
|
// behind the door it opens is a bench nobody can work, and it reads
|
|
@@ -321,6 +410,30 @@ export function buildReproScene(fixture) {
|
|
|
321
410
|
player: {
|
|
322
411
|
name: 'Testbed',
|
|
323
412
|
startLocation: startRoom,
|
|
413
|
+
// THE RUNNER STARTS NOWHERE, and this line does not yet fix it.
|
|
414
|
+
//
|
|
415
|
+
// Stated rather than quietly omitted, because it BLOCKS the climb
|
|
416
|
+
// bench this fixture work exists for. Every bench NPC gets a
|
|
417
|
+
// spot; the runner gets none, so spotOf() returns undefined for
|
|
418
|
+
// the one actor a reviewer controls -- and move.ts derives
|
|
419
|
+
// climbSteps from that spot, so with none there is no path, no
|
|
420
|
+
// climb link, and no climbing test. A level fixture walks you
|
|
421
|
+
// onto the catwalk with no roll at all.
|
|
422
|
+
//
|
|
423
|
+
// `startSpot` IS declared on player-seed.ts and scene-factory
|
|
424
|
+
// never reads it for the player (NPCs get theirs applied a
|
|
425
|
+
// hundred lines earlier). Setting it here alone is therefore
|
|
426
|
+
// inert today -- kept because it is the correct INTENT and the
|
|
427
|
+
// seed is where the intent belongs, and reported rather than
|
|
428
|
+
// half-wired: the remaining piece is that something re-places the
|
|
429
|
+
// runner after synthesis, and the currentLocation setter clears
|
|
430
|
+
// atSpot on every room change.
|
|
431
|
+
//
|
|
432
|
+
// Measured, not assumed: with climbOnly the grid really does emit
|
|
433
|
+
// climb,climb instead of ladder,climb, and pathClimbSteps finds
|
|
434
|
+
// the link -- the bench still says "You cross to the catwalk"
|
|
435
|
+
// because the runner has no spot to path FROM.
|
|
436
|
+
startSpot: REPRO_FLOOR_SPOT,
|
|
324
437
|
// NO RESIDENCE. Copied from paritySeed originally, where it is
|
|
325
438
|
// right -- that fixture models a real run. A bench models nothing
|
|
326
439
|
// and nobody lives in it; declaring a home here only invites the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repro-scene.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/repro-scene.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repro-scene.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/repro-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -812,6 +812,45 @@ export default class Game {
|
|
|
812
812
|
constructor(player: Player, sceneSeed: ISceneSeedJson);
|
|
813
813
|
private registerCommands;
|
|
814
814
|
private determineStartRoom;
|
|
815
|
+
/**
|
|
816
|
+
* WHERE THE RUNNER IS STANDING, when the seed says.
|
|
817
|
+
*
|
|
818
|
+
* `startSpot` has been declared on player-seed.ts all along and
|
|
819
|
+
* nothing read it FOR THE PLAYER -- NPCs get theirs applied inside
|
|
820
|
+
* scene-factory, the runner got nothing. So spotOf() returned
|
|
821
|
+
* undefined for the one actor a person controls, and every
|
|
822
|
+
* SPOT-RELATIVE mechanic quietly did not apply to them: move.ts
|
|
823
|
+
* derives climbSteps from the actor's spot, so with none there is no
|
|
824
|
+
* path, no climb link and no climbing test at all. A repro bench with
|
|
825
|
+
* a catwalk walked you up it with no roll.
|
|
826
|
+
*
|
|
827
|
+
* APPLIED AFTER THE PLACEMENT, and the precise reason is worth
|
|
828
|
+
* stating because I first wrote it down wrong. The currentLocation
|
|
829
|
+
* setter clears atSpot only when the room actually CHANGES
|
|
830
|
+
* (`if (this._currentLocation !== room)`). On a fresh boot the player
|
|
831
|
+
* is already in the start room, so either order would work there --
|
|
832
|
+
* a reordering mutation stays green, and I am saying so rather than
|
|
833
|
+
* letting the comment claim a guarantee its test does not give.
|
|
834
|
+
*
|
|
835
|
+
* It matters on the TRAVEL path below, where the runner really does
|
|
836
|
+
* move from the hub into a new scene and the setter really does fire.
|
|
837
|
+
* Applying after placement is correct in both cases, which is why it
|
|
838
|
+
* is the order used in both -- resumeOpenRun documents the same
|
|
839
|
+
* ordering for the same reason.
|
|
840
|
+
*
|
|
841
|
+
* What IS covered by a red-on-removal test is the call existing at
|
|
842
|
+
* all: nothing read this field before.
|
|
843
|
+
*
|
|
844
|
+
* REFUSES A SPOT THE ROOM DOES NOT HAVE rather than setting a name
|
|
845
|
+
* nothing answers to: an atSpot with no cell behind it is the
|
|
846
|
+
* silently-inert state this codebase keeps finding, and the runner
|
|
847
|
+
* standing nowhere is strictly better than the runner standing
|
|
848
|
+
* somewhere imaginary.
|
|
849
|
+
*
|
|
850
|
+
* No shipped scene sets it -- scene1 and scene2 both leave it
|
|
851
|
+
* undefined -- so this changes nothing that exists today.
|
|
852
|
+
*/
|
|
853
|
+
private applySeedStartSpot;
|
|
815
854
|
/**
|
|
816
855
|
* Wires a fresh, always-unlocked path between the persistent home base
|
|
817
856
|
* and wherever the player is starting the current job from. Clears the
|
|
@@ -15,7 +15,7 @@ import { isFence, LIFESTYLE_TIERS } from './utilities/commerce.js';
|
|
|
15
15
|
import { bestFakeSin, wandRead, processArrest } from './utilities/sin.js';
|
|
16
16
|
import { renderMapViewport, mapCaption } from './utilities/map-view.js';
|
|
17
17
|
import { tallestRoomRows } from './utilities/room-grid.js';
|
|
18
|
-
import { renderRoomLayoutCompact, crewOfTable } from './utilities/room-view.js';
|
|
18
|
+
import { renderRoomLayoutCompact, crewOfTable, roomCaption } from './utilities/room-view.js';
|
|
19
19
|
import { getPref } from './utilities/prefs.js';
|
|
20
20
|
import { rollPool, formatRoll } from './utilities/dice.js';
|
|
21
21
|
import { Direction } from './types/shared/direction-enum.js';
|
|
@@ -71,7 +71,7 @@ import { EdgeCommand } from './commands/edge.js';
|
|
|
71
71
|
import { SheetCommand } from './commands/sheet.js';
|
|
72
72
|
import { CallCommand } from './commands/call.js';
|
|
73
73
|
import { EndCallCommand } from './commands/end-call.js';
|
|
74
|
-
import { fuzzyPickName,
|
|
74
|
+
import { fuzzyPickName, guessVerb } from './utilities/fuzzy-match.js';
|
|
75
75
|
import { PickCommand } from './commands/pick.js';
|
|
76
76
|
import { HackCommand } from './commands/hack.js';
|
|
77
77
|
import { CastCommand } from './commands/cast.js';
|
|
@@ -457,8 +457,29 @@ export default class Game {
|
|
|
457
457
|
heatBand() {
|
|
458
458
|
if (this._runHeat <= 0)
|
|
459
459
|
return undefined;
|
|
460
|
+
// NOBODY IS COMING, AND THAT IS CANON (oPqWB3CqzQmhpq3o2, player:
|
|
461
|
+
// "HTR assembling somewhere close, warning, but it never resulted in
|
|
462
|
+
// anything"). They were right, and the old line was the lie.
|
|
463
|
+
//
|
|
464
|
+
// SR5 p.352 gives HTR response times by the site's security level,
|
|
465
|
+
// and Run Faster p.220 extends it as neighbourhood zones: AA is
|
|
466
|
+
// 1D6+4 MINUTES, B is 1D6x5, and Zone 0 -- the lawless barrens --
|
|
467
|
+
// is 2D6 HOURS. Every shipped scene is a barrens district, so no
|
|
468
|
+
// response team reaches the player mid-run. Nothing arriving is the
|
|
469
|
+
// CORRECT outcome; promising an arrival was the defect.
|
|
470
|
+
//
|
|
471
|
+
// So the band now names what heat this high actually buys, which is
|
|
472
|
+
// not nothing: the ride home runs a Knight Errant checkpoint
|
|
473
|
+
// (checkpointOnRideHome), and at exactly this threshold the verifier
|
|
474
|
+
// there rolls 8 dice against a fake SIN instead of 6. Same number,
|
|
475
|
+
// deliberately -- a test pins the two together so the promise and
|
|
476
|
+
// the mechanic cannot drift apart.
|
|
477
|
+
//
|
|
478
|
+
// Security ratings per site are deferred by player ruling; when they
|
|
479
|
+
// land, a corporate site can honestly warn about a team that really
|
|
480
|
+
// is coming.
|
|
460
481
|
if (this._runHeat >= 12)
|
|
461
|
-
return `{red-fg}🔥 Heat:
|
|
482
|
+
return `{red-fg}🔥 Heat: nobody's coming out here -- they'll be waiting at the checkpoint{/red-fg}`;
|
|
462
483
|
if (this._runHeat >= Game.CHECKPOINT_HEAT)
|
|
463
484
|
return `{red-fg}🔥 Heat: sirens circling closer{/red-fg}`;
|
|
464
485
|
if (this._runHeat >= 3)
|
|
@@ -2202,6 +2223,12 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
2202
2223
|
// Vertical travel by name (commands/climb.ts) -- shortcuts over
|
|
2203
2224
|
// move, which already crosses levels.
|
|
2204
2225
|
CommandFactory.registerCommand('climb', ClimbCommand);
|
|
2226
|
+
// The word a player actually typed (vkDz3cquad25GACpm). mantle is
|
|
2227
|
+
// six edits from climb, so no amount of typo tolerance was ever
|
|
2228
|
+
// going to find it -- a synonym has to be said out loud.
|
|
2229
|
+
CommandFactory.registerCommand('mantle', ClimbCommand);
|
|
2230
|
+
CommandFactory.registerCommand('scale', ClimbCommand);
|
|
2231
|
+
CommandFactory.registerCommand('clamber', ClimbCommand);
|
|
2205
2232
|
CommandFactory.registerCommand('descend', DescendCommand);
|
|
2206
2233
|
CommandFactory.registerCommand('run', RunCommand);
|
|
2207
2234
|
CommandFactory.registerCommand('sprint', SprintCommand);
|
|
@@ -2265,6 +2292,53 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
2265
2292
|
determineStartRoom() {
|
|
2266
2293
|
return this.scene.determineStartRoom();
|
|
2267
2294
|
}
|
|
2295
|
+
/**
|
|
2296
|
+
* WHERE THE RUNNER IS STANDING, when the seed says.
|
|
2297
|
+
*
|
|
2298
|
+
* `startSpot` has been declared on player-seed.ts all along and
|
|
2299
|
+
* nothing read it FOR THE PLAYER -- NPCs get theirs applied inside
|
|
2300
|
+
* scene-factory, the runner got nothing. So spotOf() returned
|
|
2301
|
+
* undefined for the one actor a person controls, and every
|
|
2302
|
+
* SPOT-RELATIVE mechanic quietly did not apply to them: move.ts
|
|
2303
|
+
* derives climbSteps from the actor's spot, so with none there is no
|
|
2304
|
+
* path, no climb link and no climbing test at all. A repro bench with
|
|
2305
|
+
* a catwalk walked you up it with no roll.
|
|
2306
|
+
*
|
|
2307
|
+
* APPLIED AFTER THE PLACEMENT, and the precise reason is worth
|
|
2308
|
+
* stating because I first wrote it down wrong. The currentLocation
|
|
2309
|
+
* setter clears atSpot only when the room actually CHANGES
|
|
2310
|
+
* (`if (this._currentLocation !== room)`). On a fresh boot the player
|
|
2311
|
+
* is already in the start room, so either order would work there --
|
|
2312
|
+
* a reordering mutation stays green, and I am saying so rather than
|
|
2313
|
+
* letting the comment claim a guarantee its test does not give.
|
|
2314
|
+
*
|
|
2315
|
+
* It matters on the TRAVEL path below, where the runner really does
|
|
2316
|
+
* move from the hub into a new scene and the setter really does fire.
|
|
2317
|
+
* Applying after placement is correct in both cases, which is why it
|
|
2318
|
+
* is the order used in both -- resumeOpenRun documents the same
|
|
2319
|
+
* ordering for the same reason.
|
|
2320
|
+
*
|
|
2321
|
+
* What IS covered by a red-on-removal test is the call existing at
|
|
2322
|
+
* all: nothing read this field before.
|
|
2323
|
+
*
|
|
2324
|
+
* REFUSES A SPOT THE ROOM DOES NOT HAVE rather than setting a name
|
|
2325
|
+
* nothing answers to: an atSpot with no cell behind it is the
|
|
2326
|
+
* silently-inert state this codebase keeps finding, and the runner
|
|
2327
|
+
* standing nowhere is strictly better than the runner standing
|
|
2328
|
+
* somewhere imaginary.
|
|
2329
|
+
*
|
|
2330
|
+
* No shipped scene sets it -- scene1 and scene2 both leave it
|
|
2331
|
+
* undefined -- so this changes nothing that exists today.
|
|
2332
|
+
*/
|
|
2333
|
+
applySeedStartSpot(seed) {
|
|
2334
|
+
const wanted = seed?.player?.startSpot;
|
|
2335
|
+
if (!wanted)
|
|
2336
|
+
return;
|
|
2337
|
+
const room = this.player.currentLocation;
|
|
2338
|
+
if (!room?.spots?.some(s => s.name === wanted))
|
|
2339
|
+
return;
|
|
2340
|
+
this.player.atSpot = wanted;
|
|
2341
|
+
}
|
|
2268
2342
|
/**
|
|
2269
2343
|
* Wires a fresh, always-unlocked path between the persistent home base
|
|
2270
2344
|
* and wherever the player is starting the current job from. Clears the
|
|
@@ -2401,6 +2475,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
2401
2475
|
}
|
|
2402
2476
|
this.scene.initialize(this);
|
|
2403
2477
|
this.player.currentLocation = this.determineStartRoom();
|
|
2478
|
+
this.applySeedStartSpot(this.sceneSeed);
|
|
2404
2479
|
this.registerCommands();
|
|
2405
2480
|
// The description follows the rent from day one (see
|
|
2406
2481
|
// syncHomeToLifestyle) -- a fresh session at the default Squatter tier
|
|
@@ -3453,6 +3528,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3453
3528
|
this.scene = await SceneSynthesizer.synthesizeFromJson(seed, this.player, false, false);
|
|
3454
3529
|
this.scene.initialize(this);
|
|
3455
3530
|
this.player.currentLocation = this.determineStartRoom();
|
|
3531
|
+
this.applySeedStartSpot(seed);
|
|
3456
3532
|
// New job -- and the needs come due at the door (see
|
|
3457
3533
|
// applyDepartureNeeds): edge only refills fed-and-slept, and ignored
|
|
3458
3534
|
// needs land as locked fatigue. Lines ride the JOB banner below.
|
|
@@ -4452,8 +4528,9 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
4452
4528
|
isOtherPlayer: a => this.scene.isHumanControlled(a),
|
|
4453
4529
|
});
|
|
4454
4530
|
if (roomLines.length > 0) {
|
|
4455
|
-
|
|
4456
|
-
|
|
4531
|
+
// roomCaption owns BOTH halves now -- where you stand, and that
|
|
4532
|
+
// somebody here has no cell to be drawn in (S6b4TLQWq46RN5kGu).
|
|
4533
|
+
roomLines.push(caption(roomCaption(here, this.player), boxWidth));
|
|
4457
4534
|
}
|
|
4458
4535
|
this.setRoomOverlay(roomLines);
|
|
4459
4536
|
}
|
|
@@ -4613,15 +4690,9 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
4613
4690
|
// a note -- EXCEPT anything that ends the session, which only ever
|
|
4614
4691
|
// gets a suggestion: a typo must never quit the game.
|
|
4615
4692
|
const knownVerbs = [...Object.keys(CommandFactory.getAllRegisteredCommands()), 'help', 'clear', 'quit', 'exit'];
|
|
4616
|
-
|
|
4617
|
-
//
|
|
4618
|
-
|
|
4619
|
-
// distinct, so a unique edit-distance-1 hit is safe ("maop" -> "map").
|
|
4620
|
-
if (!guess && verb.length >= 3) {
|
|
4621
|
-
const close = knownVerbs.filter(v => levenshteinDistance(verb, v) <= 1);
|
|
4622
|
-
if (close.length === 1)
|
|
4623
|
-
guess = close[0];
|
|
4624
|
-
}
|
|
4693
|
+
// A near-miss SPELLING beats a substring for verbs -- see
|
|
4694
|
+
// guessVerb, which owns the ordering and the reason.
|
|
4695
|
+
const guess = guessVerb(verb, knownVerbs);
|
|
4625
4696
|
if (guess && guess !== verb) {
|
|
4626
4697
|
if (guess === 'quit' || guess === 'exit') {
|
|
4627
4698
|
return out(`I don't understand "${verb}" -- did you mean "${guess}"?`);
|