@maka/maka-cli 5.129.0 → 5.131.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/call.js +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +28 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +18 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +14 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/job-offer.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +17 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +9 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +12 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +16 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +43 -12
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +106 -13
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/drone-prose.js +289 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +33 -6
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +44 -4
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { capitalCase } from 'change-case';
|
|
|
2
2
|
import { Direction } from '../types/shared/direction-enum.js';
|
|
3
3
|
import { OPEN_FLOOR, spotOf, visibleActorsIn, exitSpot, seatingIn, theSpot } from './spots.js';
|
|
4
4
|
import { placeName } from './log-style.js';
|
|
5
|
+
import { DRONE_COLOUR, DRONE_ICON } from './drone-prose.js';
|
|
5
6
|
import { key, levelFootprint, dimsForSize, tallestRoomRows, METERS_PER_LEVEL, } from './room-grid.js';
|
|
6
7
|
/**
|
|
7
8
|
* THE ROOM LAYOUT (spatial-viz follow-up, 2026-08-25): an ASCII top-down
|
|
@@ -83,6 +84,24 @@ const HOSTILE_GLYPH = '⚔';
|
|
|
83
84
|
* A star reads as "yours" without pretending to be a person you can
|
|
84
85
|
* hand the controls to. */
|
|
85
86
|
const CREW_GLYPH = '★';
|
|
87
|
+
/**
|
|
88
|
+
* YOU, JUMPED INTO A DRONE (player ruling 2026-09-06: "when jumped into
|
|
89
|
+
* the drone, I'd like the player icon to change to amber to match the
|
|
90
|
+
* color scheme. Also, the player's neutral color icon (meat body)
|
|
91
|
+
* should remain").
|
|
92
|
+
*
|
|
93
|
+
* While rigged, the viewer's presence is the FRAME, and it drew as the
|
|
94
|
+
* same uncoloured 👤 as their body would -- and the body, slumped in
|
|
95
|
+
* bodyRoom, did not draw at all (seatingIn seats an actor once, at the
|
|
96
|
+
* frame). So a rigger looking at a room holding both saw one figure and
|
|
97
|
+
* could not say which. Now the frame is the drone icon the feed and the
|
|
98
|
+
* HUD already speak (✈, drone-prose.ts), in the rigger's amber -- a
|
|
99
|
+
* BMP dingbat, so unlike the emoji it really takes the colour -- and
|
|
100
|
+
* the body keeps the plain 👤 at the cell it was left in. Shape AND
|
|
101
|
+
* colour differ, as this panel's rulings require. An autopilot frame
|
|
102
|
+
* (a companion shell) is still the crew's ★: it is yours, not you.
|
|
103
|
+
*/
|
|
104
|
+
const RIGGED_GLYPH = DRONE_ICON;
|
|
86
105
|
/** A CORPSE -- a body left where it fell, lootable (Room.bodies). */
|
|
87
106
|
const DEAD_GLYPH = '💀';
|
|
88
107
|
/**
|
|
@@ -203,7 +222,13 @@ function buildRenderMaps(grid, room, viewer) {
|
|
|
203
222
|
const corpses = new Map();
|
|
204
223
|
for (const b of room.bodies)
|
|
205
224
|
corpses.set(key(b.cell), b.name);
|
|
206
|
-
|
|
225
|
+
// The rigger's body, where it slumped (see RIGGED_GLYPH): seatingIn
|
|
226
|
+
// seats the viewer once, at the FRAME, so the body has to be placed
|
|
227
|
+
// from the cell enterDrone set aside.
|
|
228
|
+
const slumpedBody = viewer.plane !== 'meat' && viewer.bodyRoom === room && viewer.bodyCell
|
|
229
|
+
? key(viewer.bodyCell)
|
|
230
|
+
: undefined;
|
|
231
|
+
return { cellToSpot, cellToExit, verticalAt, cellTerrain, occupants, corpses, slumpedBody };
|
|
207
232
|
}
|
|
208
233
|
function paint(g) {
|
|
209
234
|
const body = g.inverse ? `{inverse}${g.ch}{/inverse}` : g.ch;
|
|
@@ -258,8 +283,13 @@ function actorGlyph(a, viewer, isOtherPlayer, isTableAlly) {
|
|
|
258
283
|
return { ch: DOWNED_GLYPH, color: 'yellow' };
|
|
259
284
|
// YOU keep the emoji; a fellow runner is the one who changes. Both
|
|
260
285
|
// branches existed already and returned the identical icon.
|
|
261
|
-
|
|
262
|
-
|
|
286
|
+
// ...unless you are riding a frame: then this cell is the DRONE, in
|
|
287
|
+
// the rigger's amber, and the emoji is your body (see RIGGED_GLYPH).
|
|
288
|
+
if (a === viewer) {
|
|
289
|
+
return viewer.plane === 'drone'
|
|
290
|
+
? { ch: RIGGED_GLYPH, color: DRONE_COLOUR }
|
|
291
|
+
: { ch: PLAYER_GLYPH, wide: true };
|
|
292
|
+
}
|
|
263
293
|
if (isOtherPlayer?.(a))
|
|
264
294
|
return { ch: OTHER_PLAYER_GLYPH, color: OTHER_PLAYER_COLOR };
|
|
265
295
|
// Your own people read as yours even mid-fight -- knowing which of
|
|
@@ -311,7 +341,10 @@ function glyphAt(c, maps, viewer, isOtherPlayer, isTableAlly) {
|
|
|
311
341
|
?? glyphs.find(g => g.ch === NEUTRAL_GLYPH)
|
|
312
342
|
?? glyphs[0];
|
|
313
343
|
}
|
|
314
|
-
// Nobody standing here -- but something may be lying here
|
|
344
|
+
// Nobody standing here -- but something may be lying here: your own
|
|
345
|
+
// slumped body first (it is what you are looking for), then the dead.
|
|
346
|
+
if (maps.slumpedBody === k)
|
|
347
|
+
return { ch: PLAYER_GLYPH, wide: true };
|
|
315
348
|
if (maps.corpses.has(k))
|
|
316
349
|
return { ch: DEAD_GLYPH, wide: true };
|
|
317
350
|
const terrain = maps.cellTerrain.get(k);
|
|
@@ -465,6 +498,13 @@ export function renderRoomLayout(room, viewer, isOtherPlayer, isTableAlly) {
|
|
|
465
498
|
present.has(PLAYER_GLYPH)
|
|
466
499
|
? `${PLAYER_GLYPH} you (${NARROW_SUBSTITUTE[PLAYER_GLYPH]} in the side panel, where cells are one column)`
|
|
467
500
|
: '',
|
|
501
|
+
// Jumped in: the amber frame is you, the plain figure is your body.
|
|
502
|
+
present.has(RIGGED_GLYPH)
|
|
503
|
+
? `{${DRONE_COLOUR}-fg}${RIGGED_GLYPH}{/${DRONE_COLOUR}-fg} you, jumped in (${viewer.riggedDrone?.name ?? 'drone'})`
|
|
504
|
+
: '',
|
|
505
|
+
maps.slumpedBody !== undefined
|
|
506
|
+
? `${PLAYER_GLYPH} your body, slumped (${NARROW_SUBSTITUTE[PLAYER_GLYPH]} in the side panel)`
|
|
507
|
+
: '',
|
|
468
508
|
present.has(OTHER_PLAYER_GLYPH) ? `{${OTHER_PLAYER_COLOR}-fg}${OTHER_PLAYER_GLYPH}{/${OTHER_PLAYER_COLOR}-fg} runner` : '',
|
|
469
509
|
present.has(CREW_GLYPH) ? `{green-fg}${CREW_GLYPH}{/green-fg} yours` : '',
|
|
470
510
|
present.has(NEUTRAL_GLYPH) ? `{white-fg}${NEUTRAL_GLYPH}{/white-fg} local` : '',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.131.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.",
|