@maka/maka-cli 5.50.0 → 5.51.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/game.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +83 -22
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +18 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.js +39 -7
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.d.ts +1 -0
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.class.d.ts +19 -0
- package/bundle/typescript/src/tools/https/https.class.js +36 -0
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.51.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 2.x applications using React.",
|
|
@@ -771,6 +771,25 @@ export default class Game {
|
|
|
771
771
|
* no widgets. updateStatus paints it for the local player; a shared-run
|
|
772
772
|
* server ships it per player as status events (Phase C).
|
|
773
773
|
*/
|
|
774
|
+
/**
|
|
775
|
+
* What's in your hands, in one phrase. Three armed states on the meat
|
|
776
|
+
* plane: drawn, HOLSTERED (carried but riding leather -- "brandish"
|
|
777
|
+
* puts it in hand; combat auto-draws, so this is posture rather than
|
|
778
|
+
* readiness), or nothing at all. Off-plane the profile is attack
|
|
779
|
+
* programs / astral will and reads as Armed. White, not gray, for the
|
|
780
|
+
* same legibility reason as the stance it now sits beside.
|
|
781
|
+
*/
|
|
782
|
+
private armedLine;
|
|
783
|
+
/**
|
|
784
|
+
* THE LOG WEARS THE PLANE (player request 2026-08-25). Jacking in or
|
|
785
|
+
* stepping out of your body changes what every line in that log even
|
|
786
|
+
* MEANS, and the only marker was a HUD row well below it. The border
|
|
787
|
+
* takes the plane's own established colour -- cyan for the Matrix,
|
|
788
|
+
* magenta for astral, yellow for a jumped-in drone, matching the
|
|
789
|
+
* tints those planes already use throughout the prose.
|
|
790
|
+
*/
|
|
791
|
+
private planeBorderColor;
|
|
792
|
+
private paintPlaneBorder;
|
|
774
793
|
statusLinesFor(player: Player): string[];
|
|
775
794
|
updateEquipment(_playerEquipment: PlayerEquipment): void;
|
|
776
795
|
updateExits(_room: Room): void;
|
|
@@ -1836,6 +1836,29 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
1836
1836
|
this.initStatusBox(screen);
|
|
1837
1837
|
this.initMapBox(screen); // docked atop the Mechanics column
|
|
1838
1838
|
this._screen = screen;
|
|
1839
|
+
// Paint the meat-plane border up front rather than leaving blessed's
|
|
1840
|
+
// default until the first status refresh.
|
|
1841
|
+
this.paintPlaneBorder();
|
|
1842
|
+
// RESIZE REDRAWS (player request 2026-08-25). blessed re-solves its
|
|
1843
|
+
// own percentage geometry on a resize, but the docked panels are
|
|
1844
|
+
// drawn CONTENT, not layout: the district viewport's width and the
|
|
1845
|
+
// room box's elevation justification are both computed from
|
|
1846
|
+
// screen.width at paint time (see updateExits), so after a resize
|
|
1847
|
+
// they kept the old terminal's dimensions until the next command
|
|
1848
|
+
// happened to repaint them -- a map sized for a window that no
|
|
1849
|
+
// longer exists, which is exactly how content spills a border.
|
|
1850
|
+
screen.on('resize', () => {
|
|
1851
|
+
try {
|
|
1852
|
+
this.updateStatus();
|
|
1853
|
+
const here = this.player?.currentLocation;
|
|
1854
|
+
if (here)
|
|
1855
|
+
this.updateExits(here);
|
|
1856
|
+
screen.render();
|
|
1857
|
+
}
|
|
1858
|
+
catch (err) {
|
|
1859
|
+
Logger.getInstance().write(`resize redraw failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1860
|
+
}
|
|
1861
|
+
});
|
|
1839
1862
|
}
|
|
1840
1863
|
/** The engine half of startup: scene synthesis, command registration,
|
|
1841
1864
|
* hub seeding, resume overlay -- no widget contact. */
|
|
@@ -3305,6 +3328,9 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3305
3328
|
if (this.remoteSession)
|
|
3306
3329
|
return;
|
|
3307
3330
|
this._statusBox.setContent(this.statusLinesFor(this.player).join('\n'));
|
|
3331
|
+
// The log's border tracks the plane -- updateStatus is the one hook
|
|
3332
|
+
// every plane transition already funnels through.
|
|
3333
|
+
this.paintPlaneBorder();
|
|
3308
3334
|
this._screen.render();
|
|
3309
3335
|
}
|
|
3310
3336
|
/** ui plumbing for session mode (utilities/shared-run.ts). */
|
|
@@ -3319,6 +3345,51 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3319
3345
|
* no widgets. updateStatus paints it for the local player; a shared-run
|
|
3320
3346
|
* server ships it per player as status events (Phase C).
|
|
3321
3347
|
*/
|
|
3348
|
+
/**
|
|
3349
|
+
* What's in your hands, in one phrase. Three armed states on the meat
|
|
3350
|
+
* plane: drawn, HOLSTERED (carried but riding leather -- "brandish"
|
|
3351
|
+
* puts it in hand; combat auto-draws, so this is posture rather than
|
|
3352
|
+
* readiness), or nothing at all. Off-plane the profile is attack
|
|
3353
|
+
* programs / astral will and reads as Armed. White, not gray, for the
|
|
3354
|
+
* same legibility reason as the stance it now sits beside.
|
|
3355
|
+
*/
|
|
3356
|
+
armedLine(player) {
|
|
3357
|
+
const weapon = player.getWeaponProfile();
|
|
3358
|
+
const weaponItem = player.getCarriedWeapon();
|
|
3359
|
+
const ammoNote = weaponItem?.isFirearm()
|
|
3360
|
+
? (weaponItem.jammed
|
|
3361
|
+
? ` {red-fg}[JAMMED -- reboot]{/red-fg}`
|
|
3362
|
+
: weaponItem.ammo === 0 ? ` {red-fg}[DRY]{/red-fg}` : ` [${weaponItem.ammo} rds]`)
|
|
3363
|
+
: '';
|
|
3364
|
+
if (player.plane === 'meat' && weaponItem && !player.weaponDrawn) {
|
|
3365
|
+
return `{white-fg}Holstered: ${weaponItem.name}${ammoNote}${hint(' -- "brandish"')}{/white-fg}`;
|
|
3366
|
+
}
|
|
3367
|
+
if (weapon.name === 'bare fists')
|
|
3368
|
+
return `{gray-fg}Unarmed{/gray-fg}`;
|
|
3369
|
+
return `Armed: ${weapon.name} (DV ${weapon.damage}${weapon.poolBonus > 0 ? `, +${weapon.poolBonus} dice` : ''})${ammoNote}`;
|
|
3370
|
+
}
|
|
3371
|
+
/**
|
|
3372
|
+
* THE LOG WEARS THE PLANE (player request 2026-08-25). Jacking in or
|
|
3373
|
+
* stepping out of your body changes what every line in that log even
|
|
3374
|
+
* MEANS, and the only marker was a HUD row well below it. The border
|
|
3375
|
+
* takes the plane's own established colour -- cyan for the Matrix,
|
|
3376
|
+
* magenta for astral, yellow for a jumped-in drone, matching the
|
|
3377
|
+
* tints those planes already use throughout the prose.
|
|
3378
|
+
*/
|
|
3379
|
+
planeBorderColor(player) {
|
|
3380
|
+
switch (player.plane) {
|
|
3381
|
+
case 'matrix': return 'cyan';
|
|
3382
|
+
case 'astral': return 'magenta';
|
|
3383
|
+
case 'drone': return 'yellow';
|
|
3384
|
+
default: return 'white';
|
|
3385
|
+
}
|
|
3386
|
+
}
|
|
3387
|
+
paintPlaneBorder() {
|
|
3388
|
+
if (!this._logBox)
|
|
3389
|
+
return;
|
|
3390
|
+
const style = this._logBox.style;
|
|
3391
|
+
style.border = { ...(style.border ?? {}), fg: this.planeBorderColor(this.player) };
|
|
3392
|
+
}
|
|
3322
3393
|
statusLinesFor(player) {
|
|
3323
3394
|
const lines = [];
|
|
3324
3395
|
// Line 1: the fight autopilot mode. The stance lives HERE -- the
|
|
@@ -3336,7 +3407,13 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3336
3407
|
// what two panels already show. The breadcrumb went with it -- the
|
|
3337
3408
|
// district map draws the way you came far better than a text trail.
|
|
3338
3409
|
const stanceColor = player.autoStance === 'aggressive' ? 'red' : player.autoStance === 'guarded' ? 'yellow' : 'white';
|
|
3339
|
-
|
|
3410
|
+
// WHAT'S IN YOUR HANDS rides alongside the stance (player ruling
|
|
3411
|
+
// 2026-08-25). The two answer the same question -- how ready are you
|
|
3412
|
+
// -- and the stance line was left short and lonely once the location
|
|
3413
|
+
// moved out to the map captions, while the readiness line below ran
|
|
3414
|
+
// long. armedLine is built further down with the rest of the gear
|
|
3415
|
+
// read; only its placement moved.
|
|
3416
|
+
lines.push(`{${stanceColor}-fg}⚔ ${player.autoStance.toUpperCase()}{/${stanceColor}-fg} ${this.armedLine(player)}`);
|
|
3340
3417
|
// Line 2: both condition monitors -- in a game where a fight can kill
|
|
3341
3418
|
// you and casting can knock you out, current damage on either track is
|
|
3342
3419
|
// never something a player should have to ask for. Colors shift as
|
|
@@ -3355,26 +3432,10 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3355
3432
|
const heat = this.heatBand();
|
|
3356
3433
|
if (heat && player === this.player)
|
|
3357
3434
|
lines.push(heat);
|
|
3358
|
-
// Line 3: readiness --
|
|
3359
|
-
// actually live (equipped), the recurring "why can't I
|
|
3360
|
-
// friction surfaced at a glance.
|
|
3361
|
-
|
|
3362
|
-
const weaponItem = player.getCarriedWeapon();
|
|
3363
|
-
const ammoNote = weaponItem?.isFirearm()
|
|
3364
|
-
? (weaponItem.jammed
|
|
3365
|
-
? ` {red-fg}[JAMMED -- reboot]{/red-fg}`
|
|
3366
|
-
: weaponItem.ammo === 0 ? ` {red-fg}[DRY]{/red-fg}` : ` [${weaponItem.ammo} rds]`)
|
|
3367
|
-
: '';
|
|
3368
|
-
// Three armed states on the meat plane: drawn, holstered (weapon
|
|
3369
|
-
// carried but riding leather -- "brandish" puts it in hand; combat
|
|
3370
|
-
// auto-draws so this is posture, not readiness), or nothing at all.
|
|
3371
|
-
// Off-plane the profile is attack programs / astral will and reads as
|
|
3372
|
-
// Armed. White, not gray, for the same legibility reason as the stance.
|
|
3373
|
-
const armed = player.plane === 'meat' && weaponItem && !player.weaponDrawn
|
|
3374
|
-
? `{white-fg}Holstered: ${weaponItem.name}${ammoNote}${hint(' -- "brandish"')}{/white-fg}`
|
|
3375
|
-
: weapon.name === 'bare fists'
|
|
3376
|
-
? `{gray-fg}Unarmed{/gray-fg}`
|
|
3377
|
-
: `Armed: ${weapon.name} (DV ${weapon.damage}${weapon.poolBonus > 0 ? `, +${weapon.poolBonus} dice` : ''})${ammoNote}`;
|
|
3435
|
+
// Line 3: the rest of the readiness read -- armor, and whether the
|
|
3436
|
+
// commlink is actually live (equipped), the recurring "why can't I
|
|
3437
|
+
// call anyone" friction surfaced at a glance. The armed state used
|
|
3438
|
+
// to lead this line; it now rides with the stance on line 1.
|
|
3378
3439
|
const armorNote = `Armor +${player.getArmorValue()}`;
|
|
3379
3440
|
const hasLink = player.equipment.head?.commlink != null;
|
|
3380
3441
|
const link = !hasLink
|
|
@@ -3384,7 +3445,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
3384
3445
|
: player.arOffline
|
|
3385
3446
|
? `{red-fg}AR CUT -- reboot{/red-fg}`
|
|
3386
3447
|
: `{${CALL_COLOR}-fg}Link online{/${CALL_COLOR}-fg}`;
|
|
3387
|
-
lines.push(`${
|
|
3448
|
+
lines.push(`${armorNote} | ${link}`);
|
|
3388
3449
|
// Lines 4+: transient states, present only while active. Future
|
|
3389
3450
|
// contexts (astral projection, VR hot-sim) join here the same way.
|
|
3390
3451
|
if (player.sustainedArmor > 0) {
|