@maka/maka-cli 5.389.0 → 5.391.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/engine-version.js +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/verb-index.js +7 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.391.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|
|
@@ -3396,5 +3396,12 @@
|
|
|
3396
3396
|
// residence that is not the runner's home has its street door locked
|
|
3397
3397
|
// (Game.lockForeignResidences; opens from inside), and `rest` counts
|
|
3398
3398
|
// only the runner's own home as a bed.
|
|
3399
|
-
|
|
3399
|
+
// 1.202.0 (2026-10-06): NO "other" ON THE HELP SCREEN. The nine sprite
|
|
3400
|
+
// powers (camouflage, cookie, ... watermark) shelve under resonance;
|
|
3401
|
+
// registered in a loop, they had slipped past the taxonomy test.
|
|
3402
|
+
// 1.203.0 (2026-10-06): A DOOR OR A WINDOW IS NOT FURNITURE. A spot whose
|
|
3403
|
+
// head noun is a door (door, gate, entrance, ...) or a window keeps its
|
|
3404
|
+
// anchor but fills no cell (room-grid wallFixtureKindOf): an exit's door
|
|
3405
|
+
// is already the exit's mark, any other door and every window is prose.
|
|
3406
|
+
export const ENGINE_VERSION = '1.203.0';
|
|
3400
3407
|
//# sourceMappingURL=engine-version.js.map
|
|
@@ -6,6 +6,14 @@ export function doorwayKindOf(spotName) {
|
|
|
6
6
|
return 'lateral';
|
|
7
7
|
return undefined;
|
|
8
8
|
}
|
|
9
|
+
export function wallFixtureKindOf(spotName) {
|
|
10
|
+
const head = spotName.trim().toLowerCase().split(/\s+/).pop() ?? '';
|
|
11
|
+
if (/^(door|doors|doorway|gate|gates|entrance|entry|archway|airlock)$/.test(head))
|
|
12
|
+
return 'door';
|
|
13
|
+
if (/^(window|windows)$/.test(head))
|
|
14
|
+
return 'window';
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
9
17
|
export const METERS_PER_CELL = 2;
|
|
10
18
|
/**
|
|
11
19
|
* How tall one storey is. A CHOICE, not a citation -- SR5 never says how
|
|
@@ -893,6 +901,15 @@ export function synthesizeGrid(input) {
|
|
|
893
901
|
...(input.keepClear ?? []).map(c => key({ x: c.x, y: c.y, z: 0 })),
|
|
894
902
|
]);
|
|
895
903
|
for (const [name, anchor] of grid.spotCells.entries()) {
|
|
904
|
+
// A DOOR OR WINDOW HAS NO FURNITURE (wallFixtureKindOf): an empty
|
|
905
|
+
// footprint, as a camera's perch has. The anchor stays claimed, so
|
|
906
|
+
// nothing grows onto it; it is simply floor. No rng is skipped --
|
|
907
|
+
// growFurniture draws none for a one-cell name -- so nothing else in
|
|
908
|
+
// the room moves.
|
|
909
|
+
if (wallFixtureKindOf(name)) {
|
|
910
|
+
grid.spotFootprints.set(name, []);
|
|
911
|
+
continue;
|
|
912
|
+
}
|
|
896
913
|
if (name === OPEN_FLOOR_NAME || exitKeys.has(key(anchor))) {
|
|
897
914
|
grid.spotFootprints.set(name, [anchor]);
|
|
898
915
|
continue;
|
|
@@ -7,7 +7,7 @@ import { DRONE_COLOUR } from './drone-prose.js';
|
|
|
7
7
|
import { PLAYER_GLYPH, OTHER_PLAYER_GLYPH, OTHER_PLAYER_COLOR, NEUTRAL_GLYPH, HOSTILE_GLYPH, CREW_GLYPH, DEAD_GLYPH, DOWNED_GLYPH, SPOT_GLYPH, RIGGED_GLYPH, UP_GLYPH, CAMERA_GLYPH, CAMERA_COLOR, CAMERA_DEAD_COLOR, BARRIER_GLYPH, BARRIER_COLOR, MANA_BARRIER_COLOR, exitGlyph, GLYPH_RANK, } from './map-glyphs.js';
|
|
8
8
|
import { barriersWire } from './ways-out.js';
|
|
9
9
|
import { xRulerLine, yRulerLabel, yGutterWidth } from './map-rulers.js';
|
|
10
|
-
import { key, levelFootprint, dimsForSize, roomRasterRows, METERS_PER_LEVEL, METERS_PER_CELL, } from './room-grid.js';
|
|
10
|
+
import { key, levelFootprint, dimsForSize, roomRasterRows, METERS_PER_LEVEL, METERS_PER_CELL, wallFixtureKindOf, } from './room-grid.js';
|
|
11
11
|
/**
|
|
12
12
|
* WHO THIS PANEL DRAWS: everyone you can see, plus every ARO your AR is
|
|
13
13
|
* showing you (BJDoj9xwy5GmnHAmj: "I should always be able to spot an
|
|
@@ -209,6 +209,11 @@ function buildRenderMaps(grid, room, viewer) {
|
|
|
209
209
|
cellToSpot.set(key(c), name);
|
|
210
210
|
}
|
|
211
211
|
for (const [name, c] of grid.spotCells.entries()) {
|
|
212
|
+
// A door or window is not furniture (room-grid wallFixtureKindOf):
|
|
213
|
+
// its cell is plain floor, and a door that is an exit wears the
|
|
214
|
+
// exit's own arrow.
|
|
215
|
+
if (wallFixtureKindOf(name))
|
|
216
|
+
continue;
|
|
212
217
|
if (!cellToSpot.has(key(c)))
|
|
213
218
|
cellToSpot.set(key(c), name);
|
|
214
219
|
}
|
|
@@ -541,6 +546,8 @@ function diamondSpots(room, grid) {
|
|
|
541
546
|
return (room.spots ?? [])
|
|
542
547
|
// A perch draws as its lens (CAMERA_GLYPH), with a legend row of its own.
|
|
543
548
|
.filter(s => !isPerchSpot(s))
|
|
549
|
+
// ...and a door or window draws nothing, so it has no row to explain.
|
|
550
|
+
.filter(s => !wallFixtureKindOf(s.name))
|
|
544
551
|
.filter(s => {
|
|
545
552
|
const cell = grid.spotCells.get(s.name);
|
|
546
553
|
return cell !== undefined && !onExit.has(key(cell));
|
|
@@ -6,7 +6,7 @@ import { wayOut } from './ways-out.js';
|
|
|
6
6
|
import { significantWords, wordsAreCloseEnough } from './fuzzy-match.js';
|
|
7
7
|
import { hint } from './hints.js';
|
|
8
8
|
import { placeName } from './log-style.js';
|
|
9
|
-
import { findPath, distanceMeters, coverBetween, blockingRegionFor, pathClearing, pathClimbSteps, levelFootprint, key, isCellBlocked, pathSqueezes, METERS_PER_CELL, doorwayKindOf, cellOnGrid, } from './room-grid.js';
|
|
9
|
+
import { findPath, distanceMeters, coverBetween, blockingRegionFor, pathClearing, pathClimbSteps, levelFootprint, key, isCellBlocked, pathSqueezes, METERS_PER_CELL, doorwayKindOf, wallFixtureKindOf, cellOnGrid, } from './room-grid.js';
|
|
10
10
|
// The doorway vocabulary moved to room-grid.ts (the grid seats exit
|
|
11
11
|
// spots by it); every caller of spots.ts keeps its import.
|
|
12
12
|
export { doorwayKindOf };
|
|
@@ -960,9 +960,13 @@ export function spotForCell(room, cell) {
|
|
|
960
960
|
return OPEN_FLOOR;
|
|
961
961
|
let best;
|
|
962
962
|
let bestDist = Infinity;
|
|
963
|
-
for (const [name,
|
|
963
|
+
for (const [name, footprint] of grid.spotFootprints.entries()) {
|
|
964
964
|
if (name === OPEN_FLOOR)
|
|
965
965
|
continue;
|
|
966
|
+
// A door or window fills no cell (room-grid wallFixtureKindOf), so its
|
|
967
|
+
// anchor stands in for it: step up to the window and you are AT it.
|
|
968
|
+
const anchor = footprint.length === 0 && wallFixtureKindOf(name) ? grid.spotCells.get(name) : undefined;
|
|
969
|
+
const cells = anchor ? [anchor] : footprint;
|
|
966
970
|
for (const c of cells) {
|
|
967
971
|
if (c.z !== cell.z)
|
|
968
972
|
continue;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isPlaytester } from './playtester.js';
|
|
2
|
+
import { SPRITE_POWERS } from '../sprite-powers.js';
|
|
2
3
|
/**
|
|
3
4
|
* THE VERBS A PLAYER MAY TYPE, in one place.
|
|
4
5
|
*
|
|
@@ -35,7 +36,12 @@ export const HELP_CATEGORIES = [
|
|
|
35
36
|
// `sustain` shelves here and not under magic: the command is
|
|
36
37
|
// technomancer-gated (a sprite task, SR5 p.256) and refuses anyone
|
|
37
38
|
// else, so the Emerged shelf is where its audience looks.
|
|
38
|
-
|
|
39
|
+
// The SPRITE POWERS (p.256-257) shelve here too, read off the same
|
|
40
|
+
// table game.ts registers them from. They were the last tenants of
|
|
41
|
+
// "other": registered in a loop, so the taxonomy test's
|
|
42
|
+
// registerCommand('x') sweep never saw them. A player runs them as
|
|
43
|
+
// "order <sprite> <power>"; typed bare they say so.
|
|
44
|
+
{ title: 'resonance', entries: [['compile'], ['decompile'], ['thread'], ['unravel'], ['register'], ['standby'], ['sustain'], ['sprites'], ...SPRITE_POWERS.map(p => [p.key])] },
|
|
39
45
|
{ title: 'social', entries: [['say'], ['shout'], ['emote', 'me'], ['tell', 'to', 'talk-to'], ['call'], ['message'], ['messages'], ['end-call', 'end', 'hangup'], ['accept'], ['decline', 'deny', 'refuse'], ['haggle', 'negotiate'], ['persuade', 'convince'], ['bring', 'escort', 'extract'], ['ask'], ['contacts']] },
|
|
40
46
|
{ title: 'street', entries: [['abandon'], ['browse'], ['buy'], ['sell'], ['catalog'], ['source', 'procure'], ['work', 'gig'], ['jobs'], ['journal'], ['perform'], ['palm'], ['docwagon'], ['treat'], ['eat'], ['drink'], ['lifestyle'], ['garage'], ['travel'], ['pay']] },
|
|
41
47
|
{ title: 'barriers', entries: [['pick'], ['breach'], ['dispel', 'dispell'], ['bluff'], ['unlock'], ['lock']] },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.391.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|