@maka/maka-cli 5.49.0 → 5.50.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.
Files changed (90) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +20 -1
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +9 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +9 -8
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +5 -0
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +27 -6
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +2 -2
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +43 -3
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +6 -24
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.d.ts +21 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js +93 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js.map +1 -0
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +4 -4
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +23 -31
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +32 -3
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +313 -17
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/note.d.ts +25 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +57 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +20 -3
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +9 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +1 -1
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +1 -0
  38. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +13 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +66 -9
  41. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +37 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +2 -2
  45. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +2 -2
  46. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +47 -19
  47. package/bundle/typescript/src/commands/game/sideQuest/game.js +182 -70
  48. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/headless.js +17 -2
  50. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +9 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +62 -3
  53. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +31 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +28 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +5 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +24 -6
  59. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +85 -2
  61. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +182 -2
  62. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +4 -4
  64. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +17 -7
  65. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +17 -13
  67. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +29 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +2 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +5 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +9 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +87 -8
  72. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  73. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +28 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +7 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.d.ts +22 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js +69 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js.map +1 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +186 -0
  82. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +742 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +34 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +524 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +273 -3
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +890 -24
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scene-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-factory.ts"],"names":[],"mappings":"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"}
@@ -142,8 +142,8 @@ export declare class SceneSeedGenerator {
142
142
  /**
143
143
  * THE MEET's structural guarantees (canon p.28, player ruling: every
144
144
  * run has its own client Johnson). The client must exist, be
145
- * physically meetable, and carry a commlink -- the meet pays the
146
- * advance and the wrap-up call pays the remainder, so a missing or
145
+ * physically meetable, and carry a commlink -- the meet sets the
146
+ * terms and the wrap-up pays the lump sum, so a missing or
147
147
  * unreachable client breaks the whole payment loop. This replaced the
148
148
  * old "cannot reach Mr. Johnson" convention (an unreachable fixer NPC
149
149
  * embedded in every run) when the fixer moved out of run scenes.
@@ -570,8 +570,8 @@ export class SceneSeedGenerator {
570
570
  /**
571
571
  * THE MEET's structural guarantees (canon p.28, player ruling: every
572
572
  * run has its own client Johnson). The client must exist, be
573
- * physically meetable, and carry a commlink -- the meet pays the
574
- * advance and the wrap-up call pays the remainder, so a missing or
573
+ * physically meetable, and carry a commlink -- the meet sets the
574
+ * terms and the wrap-up pays the lump sum, so a missing or
575
575
  * unreachable client breaks the whole payment loop. This replaced the
576
576
  * old "cannot reach Mr. Johnson" convention (an unreachable fixer NPC
577
577
  * embedded in every run) when the fixer moved out of run scenes.
@@ -53,6 +53,9 @@ export default class Game {
53
53
  /** The floating icon-minimap (map-overlay wave 2026-08-24). Optional:
54
54
  * headless sessions never build widgets. */
55
55
  private _mapBox?;
56
+ /** Its twin, docked to its right: the current room's own layout
57
+ * (spatial-viz follow-up 2026-08-25). See utilities/room-view.ts. */
58
+ private _roomMapBox?;
56
59
  private _useAi;
57
60
  private _aiRefusalAnnounced;
58
61
  private _owner?;
@@ -317,7 +320,10 @@ export default class Game {
317
320
  * Returns a player-facing line when something changed, else null.
318
321
  */
319
322
  /** A hub-cast member by name, for roster displays that need the live
320
- * actor (contacts.ts reads their commlink to show reachability). */
323
+ * actor (contacts.ts reads their commlink to show reachability).
324
+ * ROOM GRIDS wave (2026-08-25): falls back to the CURRENT run scene
325
+ * so a live client (not yet a hub contact -- see onClientInteraction)
326
+ * resolves too; call.ts already reaches them the same way. */
321
327
  hubActor(name: string): Player | NPC | undefined;
322
328
  /** The whole hub cast -- call.ts merges these into its candidates so
323
329
  * a linked contact answers from ANYWHERE (a real mid-run session:
@@ -489,7 +495,6 @@ export default class Game {
489
495
  currentClient?: {
490
496
  name: string;
491
497
  met: boolean;
492
- advancePaid: number;
493
498
  reported: boolean;
494
499
  dead?: boolean;
495
500
  };
@@ -497,10 +502,12 @@ export default class Game {
497
502
  /**
498
503
  * The meet and the wrap-up, triggered by the player's first/next real
499
504
  * interaction with the client (talk-to, a connected call, a give).
500
- * Returns the beat's text (advance/remainder lines) or null when this
501
- * NPC isn't the client / nothing new happens. Canon p.28-29: half up
502
- * front at the meet, the remainder on delivering proof. Completing the
503
- * objective BEFORE ever meeting them collapses both beats into one.
505
+ * Returns the beat's text or null when this NPC isn't the client /
506
+ * nothing new happens. LUMP SUM (player ruling 2026-08-25, replacing
507
+ * canon p.28's half-up-front: the advance beat kept misfiring in
508
+ * play): the meet sets the terms, the wrap-up pays the WHOLE number.
509
+ * Completing the objective before ever meeting them still collapses
510
+ * cleanly -- the wrap-up is the only beat that moves money.
504
511
  */
505
512
  onClientInteraction(npcName: string): string | null;
506
513
  /**
@@ -708,27 +715,48 @@ export default class Game {
708
715
  */
709
716
  private initStatusBox;
710
717
  /**
711
- * THE MINIMAP (map-overlay wave 2026-08-24): a small icon viewport
712
- * DOCKED at the top of the Mechanics column -- not floated over the
713
- * log (a float occluded log text and, being numerically anchored,
714
- * drifted on terminal resize; percentage geometry re-solves both).
715
- * The Mechanics pane shifts down while the map is shown and takes the
716
- * space back when it hides. keys:false -- a keyable box appended
717
- * after the input steals focus (the "eexxiitt" bug, see initInputBox).
718
- * Hidden until the first setMapOverlay with content.
718
+ * THE MINIMAP (map-overlay wave 2026-08-24; split into a pair
719
+ * 2026-08-25 -- player ask: "ample space to split the existing map in
720
+ * two, one for the area, one for the room"): two small icon
721
+ * viewports DOCKED side by side at the top of the Mechanics column --
722
+ * not floated over the log (a float occluded log text and, being
723
+ * numerically anchored, drifted on terminal resize; percentage
724
+ * geometry re-solves both). The Mechanics pane shifts down while
725
+ * EITHER is shown and takes the space back only once both hide.
726
+ * keys:false -- a keyable box appended after the input steals focus
727
+ * (the "eexxiitt" bug, see initInputBox). Hidden until the first
728
+ * setMapOverlay/setRoomOverlay with content.
719
729
  */
720
730
  private static readonly MAP_DOCK_ROWS;
731
+ /** Must track the roomMapBox's `width` below -- updateExits derives
732
+ * the inner width from it to right-justify the elevation bar. */
733
+ private static readonly ROOM_DOCK_PCT;
734
+ /** Must track the mapBox's `width` below -- used to trim its caption. */
735
+ private static readonly MAP_DOCK_PCT;
721
736
  private initMapBox;
722
- /** Shifts the Mechanics pane down (map shown) or back up (hidden). */
737
+ /** Shifts the Mechanics pane down (a map box is shown) or back up
738
+ * (neither is). Driven by syncMapDock, never called directly. */
723
739
  private dockMap;
740
+ /** Keeps the Mechanics pane's dock offset in sync with whichever
741
+ * docked box(es) -- district, room, or both -- are currently shown. */
742
+ private syncMapDock;
724
743
  /**
725
- * Paints (or hides) the docked minimap. Solo: updateExits feeds it
726
- * from the local scene; shared runs: SharedRunSession.route feeds it
727
- * from the server's per-player kind:'map' events. The preference
728
- * gates both paths in one place.
744
+ * Paints (or hides) the docked DISTRICT minimap. Solo: updateExits
745
+ * feeds it from the local scene; shared runs: SharedRunSession.route
746
+ * feeds it from the server's per-player kind:'map' events. The
747
+ * preference gates both this and setRoomOverlay in one place.
729
748
  */
730
749
  setMapOverlay(lines: string[]): void;
731
750
  hideMapOverlay(): void;
751
+ /**
752
+ * Paints (or hides) the docked ROOM minimap -- the district box's
753
+ * twin, fed by updateExits from utilities/room-view.ts. Empty
754
+ * whenever the current room has no synthesized grid (spotless --
755
+ * THE COMPAT RULE) or the player is circulating in it (nothing fixed
756
+ * to center on): both read as "hide", same as an empty district.
757
+ */
758
+ setRoomOverlay(lines: string[]): void;
759
+ hideRoomOverlay(): void;
732
760
  /**
733
761
  * Refreshes the status box from current player state. Called after any
734
762
  * command that can change what belongs there (currently "call"/"end-call")
@@ -12,6 +12,7 @@ import { DOCWAGON_TIERS, RESUSC_FEE, DEATH_COMP } from './utilities/docwagon.js'
12
12
  import { isFence, LIFESTYLE_TIERS } from './utilities/commerce.js';
13
13
  import { bestFakeSin, wandRead, processArrest } from './utilities/sin.js';
14
14
  import { renderMapViewport } from './utilities/map-view.js';
15
+ import { renderRoomLayoutCompact } from './utilities/room-view.js';
15
16
  import { getPref } from './utilities/prefs.js';
16
17
  import { rollPool, formatRoll } from './utilities/dice.js';
17
18
  import { Direction } from './types/shared/direction-enum.js';
@@ -21,6 +22,8 @@ import { currentSession } from './utilities/session-context.js';
21
22
  import { PlayersCommand } from './commands/players.js';
22
23
  import { LookCommand } from './commands/look.js';
23
24
  import { TakeCommand } from './commands/take.js';
25
+ import { LootCommand } from './commands/loot.js';
26
+ import { NoteCommand } from './commands/note.js';
24
27
  import { GoCommand } from './commands/go.js';
25
28
  import { UseCommand } from './commands/use.js';
26
29
  import { EquipCommand } from './commands/equip.js';
@@ -146,6 +149,9 @@ export default class Game {
146
149
  /** The floating icon-minimap (map-overlay wave 2026-08-24). Optional:
147
150
  * headless sessions never build widgets. */
148
151
  _mapBox;
152
+ /** Its twin, docked to its right: the current room's own layout
153
+ * (spatial-viz follow-up 2026-08-25). See utilities/room-view.ts. */
154
+ _roomMapBox;
149
155
  _useAi = false;
150
156
  _aiRefusalAnnounced = false;
151
157
  // ACCOUNT BINDING (ruling 2026-08-23): who this runner belongs to,
@@ -1081,9 +1087,13 @@ export default class Game {
1081
1087
  * Returns a player-facing line when something changed, else null.
1082
1088
  */
1083
1089
  /** A hub-cast member by name, for roster displays that need the live
1084
- * actor (contacts.ts reads their commlink to show reachability). */
1090
+ * actor (contacts.ts reads their commlink to show reachability).
1091
+ * ROOM GRIDS wave (2026-08-25): falls back to the CURRENT run scene
1092
+ * so a live client (not yet a hub contact -- see onClientInteraction)
1093
+ * resolves too; call.ts already reaches them the same way. */
1085
1094
  hubActor(name) {
1086
- return this._hubScene?.allActors?.find(a => a.name === name && a !== this.player);
1095
+ return this._hubScene?.allActors?.find(a => a.name === name && a !== this.player)
1096
+ ?? (this.scene !== this._hubScene ? this.scene?.allActors?.find(a => a.name === name && a !== this.player) : undefined);
1087
1097
  }
1088
1098
  /** The whole hub cast -- call.ts merges these into its candidates so
1089
1099
  * a linked contact answers from ANYWHERE (a real mid-run session:
@@ -1415,16 +1425,18 @@ export default class Game {
1415
1425
  // state never is (runs are disposable); reconstructed fresh by
1416
1426
  // activateRunScene, settled into the roster by returnToHub.
1417
1427
  currentClient;
1418
- // Taxi warn-once (player ruling): leaving with the remainder unclaimed
1428
+ // Taxi warn-once (player ruling): leaving with the pay unclaimed
1419
1429
  // arms this; the second "call taxi" forfeits. Mirrors _quitArmed.
1420
1430
  forfeitArmed = false;
1421
1431
  /**
1422
1432
  * The meet and the wrap-up, triggered by the player's first/next real
1423
1433
  * interaction with the client (talk-to, a connected call, a give).
1424
- * Returns the beat's text (advance/remainder lines) or null when this
1425
- * NPC isn't the client / nothing new happens. Canon p.28-29: half up
1426
- * front at the meet, the remainder on delivering proof. Completing the
1427
- * objective BEFORE ever meeting them collapses both beats into one.
1434
+ * Returns the beat's text or null when this NPC isn't the client /
1435
+ * nothing new happens. LUMP SUM (player ruling 2026-08-25, replacing
1436
+ * canon p.28's half-up-front: the advance beat kept misfiring in
1437
+ * play): the meet sets the terms, the wrap-up pays the WHOLE number.
1438
+ * Completing the objective before ever meeting them still collapses
1439
+ * cleanly -- the wrap-up is the only beat that moves money.
1428
1440
  */
1429
1441
  onClientInteraction(npcName) {
1430
1442
  const client = this.currentClient;
@@ -1438,30 +1450,22 @@ export default class Game {
1438
1450
  const lines = [];
1439
1451
  if (!client.met) {
1440
1452
  client.met = true;
1441
- const advance = Math.floor(payout / 2);
1442
- // The team's split comes off the top of every payment (canon: the
1443
- // crew shares the take) -- the player banks their share only.
1444
- const split = this.applyCrewCut(advance);
1445
- const paid = this.scene.payRunner(split.share, 'meet advance');
1446
- client.advancePaid = advance;
1447
- if (paid) {
1448
- lines.push(`THE MEET: ${client.name} slides half across up front -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. The other half on delivery.${hint(` (Canon terms, p.28 -- and the rate is negotiable exactly once: "haggle" while you have them.)`)}`);
1449
- if (split.line)
1450
- lines.push(` ${split.line}`);
1451
- }
1452
- Logger.getInstance().write(`Client meet: ${this.player.name} met ${client.name}, advance ${advance} (gross, crew took ${advance - split.share}).`);
1453
+ lines.push(`THE MEET: ${client.name} lays out the terms -- ${payout}¥ certified, in full, on delivery.${hint(` (The rate is negotiable exactly once: "haggle" while you have them.)`)}`);
1454
+ Logger.getInstance().write(`Client meet: ${this.player.name} met ${client.name}, terms ${payout} lump sum on delivery.`);
1453
1455
  }
1454
1456
  if (this.scene.isCompleted() && !client.reported) {
1455
1457
  client.reported = true;
1456
- const remainder = payout - client.advancePaid;
1457
- const split = this.applyCrewCut(remainder);
1458
- const paid = this.scene.payRunner(split.share, 'wrap-up remainder');
1458
+ // The team's split comes off the top (canon: the crew shares the
1459
+ // take) -- the player banks their share only. Payout read LIVE so
1460
+ // a haggle at any point before delivery moves the real number.
1461
+ const split = this.applyCrewCut(payout);
1462
+ const paid = this.scene.payRunner(split.share, 'wrap-up settlement');
1459
1463
  if (paid) {
1460
- lines.push(`WRAP-UP: ${client.name} settles the balance -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. Clean work; the name will remember yours.`);
1464
+ lines.push(`WRAP-UP: ${client.name} pays out in full -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. Clean work; the name will remember yours.`);
1461
1465
  if (split.line)
1462
1466
  lines.push(` ${split.line}`);
1463
1467
  }
1464
- Logger.getInstance().write(`Client wrap-up: ${this.player.name} reported to ${client.name}, remainder ${remainder} (gross, crew took ${remainder - split.share}).`);
1468
+ Logger.getInstance().write(`Client wrap-up: ${this.player.name} reported to ${client.name}, settlement ${payout} (gross, crew took ${payout - split.share}).`);
1465
1469
  // JOHNSONS DON'T LINGER (real session: a settled Ms. Slate paced
1466
1470
  // in and out of rooms and tailed the runner around the scene).
1467
1471
  // After the settlement beat lands, the client walks -- their AI
@@ -1611,6 +1615,8 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
1611
1615
  CommandFactory.registerCommand('look', LookCommand);
1612
1616
  CommandFactory.registerCommand('go', GoCommand);
1613
1617
  CommandFactory.registerCommand('take', TakeCommand);
1618
+ CommandFactory.registerCommand('loot', LootCommand);
1619
+ CommandFactory.registerCommand('note', NoteCommand);
1614
1620
  CommandFactory.registerCommand('use', UseCommand);
1615
1621
  CommandFactory.registerCommand('equip', EquipCommand);
1616
1622
  CommandFactory.registerCommand('unequip', UnequipCommand);
@@ -2717,7 +2723,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2717
2723
  // THE MEET opens the job (canon p.28): the seed's client is this
2718
2724
  // run's Johnson -- track them, and point the arrival at the meet.
2719
2725
  this.currentClient = seed.client
2720
- ? { name: seed.client, met: false, advancePaid: 0, reported: false }
2726
+ ? { name: seed.client, met: false, reported: false }
2721
2727
  : undefined;
2722
2728
  this.forfeitArmed = false;
2723
2729
  // THE CLIENT REACHES OUT (ruling 2026-08-24, friction pass): the
@@ -2729,7 +2735,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2729
2735
  const clientRoom = clientActor?.currentLocation?.name;
2730
2736
  const clientSpot = clientActor ? spotOf(clientActor) : undefined;
2731
2737
  const meetLine = seed.client
2732
- ? `\n📞 Your link chirps -- {bold}{underline}${seed.client}{/underline}{/bold}: "${clientRoom ? `I'm at ${clientRoom}${clientSpot ? `, the ${clientSpot}` : ''}` : `I'm on-site`} -- waiting on you. Come sit down before somebody else does." Half up front at the table; the rest on delivery.${hint(` (Find them and talk, or "call ${seed.client}" -- the rate is negotiable at the meet, once.)`)}`
2738
+ ? `\n📞 Your link chirps -- {bold}{underline}${seed.client}{/underline}{/bold}: "${clientRoom ? `I'm at ${clientRoom}${clientSpot ? `, the ${clientSpot}` : ''}` : `I'm on-site`} -- waiting on you. Come sit down before somebody else does." Payment in full on delivery.${hint(` (Find them and talk, or "call ${seed.client}" -- the rate is negotiable at the meet, once.)`)}`
2733
2739
  : '';
2734
2740
  // No "=== JOB #n ===" banner on entry (player request) -- the Game
2735
2741
  // Log window's own title carries the job name now.
@@ -3159,22 +3165,32 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3159
3165
  screen.append(statusBox);
3160
3166
  }
3161
3167
  /**
3162
- * THE MINIMAP (map-overlay wave 2026-08-24): a small icon viewport
3163
- * DOCKED at the top of the Mechanics column -- not floated over the
3164
- * log (a float occluded log text and, being numerically anchored,
3165
- * drifted on terminal resize; percentage geometry re-solves both).
3166
- * The Mechanics pane shifts down while the map is shown and takes the
3167
- * space back when it hides. keys:false -- a keyable box appended
3168
- * after the input steals focus (the "eexxiitt" bug, see initInputBox).
3169
- * Hidden until the first setMapOverlay with content.
3168
+ * THE MINIMAP (map-overlay wave 2026-08-24; split into a pair
3169
+ * 2026-08-25 -- player ask: "ample space to split the existing map in
3170
+ * two, one for the area, one for the room"): two small icon
3171
+ * viewports DOCKED side by side at the top of the Mechanics column --
3172
+ * not floated over the log (a float occluded log text and, being
3173
+ * numerically anchored, drifted on terminal resize; percentage
3174
+ * geometry re-solves both). The Mechanics pane shifts down while
3175
+ * EITHER is shown and takes the space back only once both hide.
3176
+ * keys:false -- a keyable box appended after the input steals focus
3177
+ * (the "eexxiitt" bug, see initInputBox). Hidden until the first
3178
+ * setMapOverlay/setRoomOverlay with content.
3170
3179
  */
3171
- static MAP_DOCK_ROWS = 11; // 9 viewport rows + border
3180
+ // 9 viewport rows + a caption row (the room name / "@ spot", moved off
3181
+ // the HUD 2026-08-25) + border.
3182
+ static MAP_DOCK_ROWS = 12;
3183
+ /** Must track the roomMapBox's `width` below -- updateExits derives
3184
+ * the inner width from it to right-justify the elevation bar. */
3185
+ static ROOM_DOCK_PCT = 0.23;
3186
+ /** Must track the mapBox's `width` below -- used to trim its caption. */
3187
+ static MAP_DOCK_PCT = 0.12;
3172
3188
  initMapBox(screen) {
3173
3189
  const mapBox = blessed.box({
3174
3190
  id: 'mapBox',
3175
3191
  top: 0,
3176
3192
  left: '65%',
3177
- width: '35%',
3193
+ width: '12%',
3178
3194
  height: Game.MAP_DOCK_ROWS,
3179
3195
  border: { type: 'line' },
3180
3196
  style: { border: { fg: 'blue' } },
@@ -3186,19 +3202,48 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3186
3202
  });
3187
3203
  this._mapBox = mapBox;
3188
3204
  screen.append(mapBox);
3205
+ const roomMapBox = blessed.box({
3206
+ id: 'roomMapBox',
3207
+ top: 0,
3208
+ // Much wider than its district twin: this box carries the grid,
3209
+ // the elevation bar down its right side, AND (since the
3210
+ // 2026-08-25 room resize) a `large` room's full 12 cells at two
3211
+ // columns each -- the district view needs only its fixed 15-wide
3212
+ // viewport, so the space is better spent here.
3213
+ left: '77%',
3214
+ width: '23%',
3215
+ height: Game.MAP_DOCK_ROWS,
3216
+ border: { type: 'line' },
3217
+ style: { border: { fg: 'blue' } },
3218
+ label: ' Room ',
3219
+ tags: true,
3220
+ keys: false,
3221
+ content: '',
3222
+ hidden: true,
3223
+ });
3224
+ this._roomMapBox = roomMapBox;
3225
+ screen.append(roomMapBox);
3189
3226
  }
3190
- /** Shifts the Mechanics pane down (map shown) or back up (hidden). */
3227
+ /** Shifts the Mechanics pane down (a map box is shown) or back up
3228
+ * (neither is). Driven by syncMapDock, never called directly. */
3191
3229
  dockMap(shown) {
3192
3230
  if (!this._metaBox)
3193
3231
  return;
3194
3232
  this._metaBox.top = shown ? Game.MAP_DOCK_ROWS : 0;
3195
3233
  this._metaBox.height = shown ? `100%-${11 + Game.MAP_DOCK_ROWS}` : '100%-11';
3196
3234
  }
3235
+ /** Keeps the Mechanics pane's dock offset in sync with whichever
3236
+ * docked box(es) -- district, room, or both -- are currently shown. */
3237
+ syncMapDock() {
3238
+ const anyShown = (this._mapBox !== undefined && !this._mapBox.hidden)
3239
+ || (this._roomMapBox !== undefined && !this._roomMapBox.hidden);
3240
+ this.dockMap(anyShown);
3241
+ }
3197
3242
  /**
3198
- * Paints (or hides) the docked minimap. Solo: updateExits feeds it
3199
- * from the local scene; shared runs: SharedRunSession.route feeds it
3200
- * from the server's per-player kind:'map' events. The preference
3201
- * gates both paths in one place.
3243
+ * Paints (or hides) the docked DISTRICT minimap. Solo: updateExits
3244
+ * feeds it from the local scene; shared runs: SharedRunSession.route
3245
+ * feeds it from the server's per-player kind:'map' events. The
3246
+ * preference gates both this and setRoomOverlay in one place.
3202
3247
  */
3203
3248
  setMapOverlay(lines) {
3204
3249
  if (!this._mapBox)
@@ -3208,15 +3253,41 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3208
3253
  return;
3209
3254
  }
3210
3255
  this._mapBox.setContent(lines.join('\n'));
3211
- this.dockMap(true);
3212
3256
  this._mapBox.show();
3257
+ this.syncMapDock();
3213
3258
  this._screen?.render();
3214
3259
  }
3215
3260
  hideMapOverlay() {
3216
3261
  if (!this._mapBox)
3217
3262
  return;
3218
3263
  this._mapBox.hide();
3219
- this.dockMap(false);
3264
+ this.syncMapDock();
3265
+ this._screen?.render();
3266
+ }
3267
+ /**
3268
+ * Paints (or hides) the docked ROOM minimap -- the district box's
3269
+ * twin, fed by updateExits from utilities/room-view.ts. Empty
3270
+ * whenever the current room has no synthesized grid (spotless --
3271
+ * THE COMPAT RULE) or the player is circulating in it (nothing fixed
3272
+ * to center on): both read as "hide", same as an empty district.
3273
+ */
3274
+ setRoomOverlay(lines) {
3275
+ if (!this._roomMapBox)
3276
+ return;
3277
+ if (lines.length === 0 || !getPref('mapOverlay', true)) {
3278
+ this.hideRoomOverlay();
3279
+ return;
3280
+ }
3281
+ this._roomMapBox.setContent(lines.join('\n'));
3282
+ this._roomMapBox.show();
3283
+ this.syncMapDock();
3284
+ this._screen?.render();
3285
+ }
3286
+ hideRoomOverlay() {
3287
+ if (!this._roomMapBox)
3288
+ return;
3289
+ this._roomMapBox.hide();
3290
+ this.syncMapDock();
3220
3291
  this._screen?.render();
3221
3292
  }
3222
3293
  /**
@@ -3250,30 +3321,22 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3250
3321
  */
3251
3322
  statusLinesFor(player) {
3252
3323
  const lines = [];
3253
- // Line 1: where you are, and the fight autopilot mode. The stance
3254
- // lives HERE -- the shortest HUD line -- because appended to the long
3255
- // readiness line it wrapped out of the box on narrower terminals and
3256
- // effectively only ever showed in the Tab announcement. Always shown,
3257
- // even MANUAL: the HUD is how players discover Tab cycles it at all
3258
- // (see utilities/auto-fight.ts). MANUAL is white, not gray -- blessed's
3324
+ // Line 1: the fight autopilot mode. The stance lives HERE -- the
3325
+ // shortest HUD line -- because appended to the long readiness line it
3326
+ // wrapped out of the box on narrower terminals and effectively only
3327
+ // ever showed in the Tab announcement. Always shown, even MANUAL: the
3328
+ // HUD is how players discover Tab cycles it at all (see
3329
+ // utilities/auto-fight.ts). MANUAL is white, not gray -- blessed's
3259
3330
  // gray is ANSI "bright black", which on a stock dark terminal palette
3260
3331
  // is illegible enough that the stance looked absent entirely.
3332
+ //
3333
+ // WHERE YOU ARE MOVED OUT (player ruling 2026-08-25): the room name
3334
+ // now captions the Map box and the "@ spot" captions the Room box,
3335
+ // each under the picture it belongs to, so the HUD stops repeating
3336
+ // what two panels already show. The breadcrumb went with it -- the
3337
+ // district map draws the way you came far better than a text trail.
3261
3338
  const stanceColor = player.autoStance === 'aggressive' ? 'red' : player.autoStance === 'guarded' ? 'yellow' : 'white';
3262
- const stance = `{${stanceColor}-fg}⚔ ${player.autoStance.toUpperCase()}{/${stanceColor}-fg}`;
3263
- // The breadcrumb, reading chronologically into the current location:
3264
- // "Neon Strip (west) > Night Market" -- origin first, the direction
3265
- // BACK to it in parens. An 18-room hub made "which way did I come in"
3266
- // a real question.
3267
- const crumb = player.cameFrom ? `${player.cameFrom.room} (${player.cameFrom.back}) > ` : '';
3268
- if (player.currentLocation) {
3269
- // "At" spots: where you stand WITHIN the room, when it has places
3270
- // to stand (see utilities/spots.ts).
3271
- const atNote = spotOf(player) ? ` @ ${player.atSpot}` : '';
3272
- lines.push(`${crumb}{bold}📍 ${player.currentLocation.name}${atNote}{/bold} | ${stance}`);
3273
- }
3274
- else {
3275
- lines.push(stance);
3276
- }
3339
+ lines.push(`{${stanceColor}-fg}⚔ ${player.autoStance.toUpperCase()}{/${stanceColor}-fg}`);
3277
3340
  // Line 2: both condition monitors -- in a game where a fight can kill
3278
3341
  // you and casting can knock you out, current damage on either track is
3279
3342
  // never something a player should have to ask for. Colors shift as
@@ -3414,22 +3477,71 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3414
3477
  this.notePresenceAffectingChange();
3415
3478
  }
3416
3479
  updateExits(_room) {
3417
- // THE ICON OVERLAY (map-overlay wave 2026-08-24): this hook was
3418
- // kept as a no-op for exactly this -- it already fires on movement
3419
- // (go/lock/unlock, ui.ts), scene transitions, and barrier changes.
3480
+ // THE ICON OVERLAYS (map-overlay wave 2026-08-24, split 2026-08-25):
3481
+ // this hook was kept as a no-op for exactly this -- it already
3482
+ // fires on movement (go/lock/unlock, move.ts, ui.ts), scene
3483
+ // transitions, and barrier changes (solve/bypass/lock/unlock).
3420
3484
  // Session mode: the server's per-player kind:'map' events feed the
3421
- // overlay instead (SharedRunSession.route).
3485
+ // district overlay instead (SharedRunSession.route); the room box
3486
+ // has no server-pushed path yet, so it just stays hidden in a
3487
+ // shared run, same as the district box did before that wiring.
3422
3488
  if (!this._mapBox || this.remoteSession)
3423
3489
  return;
3424
3490
  const here = this.player.currentLocation;
3425
3491
  if (!here || this.player.plane === 'matrix') {
3426
3492
  this.hideMapOverlay();
3493
+ this.hideRoomOverlay();
3427
3494
  return;
3428
3495
  }
3429
- this.setMapOverlay(renderMapViewport(this.scene.getRooms(), here, (r, d) => this.scene.barrierSealing(r, d), {
3496
+ const screenW = Number(this._screen?.width) || 0;
3497
+ // Each box's inner width. Derived from the screen rather than read
3498
+ // off the widget: blessed resolves percentage geometry at render
3499
+ // time, so `.width` is still the raw '23%' here. Used to right-
3500
+ // justify the elevation bar and to trim the caption rows.
3501
+ const boxWidth = screenW > 0 ? Math.floor(screenW * Game.ROOM_DOCK_PCT) - 2 : undefined;
3502
+ const mapWidth = screenW > 0 ? Math.floor(screenW * Game.MAP_DOCK_PCT) - 2 : undefined;
3503
+ const caption = (text, width) => {
3504
+ const w = width ?? text.length;
3505
+ return `{bold}${text.length > w ? `${text.slice(0, Math.max(1, w - 1))}…` : text}{/bold}`;
3506
+ };
3507
+ // The district viewport must FIT ITS BOX. It was a hardcoded 15
3508
+ // columns, which was fine while the Map box was 35% wide and
3509
+ // silently overflowed into the Room box once it shrank to 12% --
3510
+ // on a narrower terminal the spill landed inside the neighbouring
3511
+ // border and smartCSR's partial redraws smeared it into stray
3512
+ // characters (playtest 2026-08-25: "getting some artifacting 'g'";
3513
+ // ui.ts documents this same smear from column drift). Odd widths
3514
+ // keep the player marker exactly centred.
3515
+ const mapInner = mapWidth ?? 15;
3516
+ const mapView = Math.max(7, mapInner % 2 === 0 ? mapInner - 1 : mapInner);
3517
+ const mapLines = renderMapViewport(this.scene.getRooms(), here, (r, d) => this.scene.barrierSealing(r, d), {
3430
3518
  visited: this.player.visitedRooms,
3431
3519
  arEyes: this.player.hasMatrixEyes(),
3432
- }));
3520
+ }, mapView);
3521
+ // The captions the HUD used to carry: where you are under the
3522
+ // district, where you stand under the room.
3523
+ if (mapLines.length > 0)
3524
+ mapLines.push(caption(here.name, mapWidth));
3525
+ this.setMapOverlay(mapLines);
3526
+ // A DECORATION MUST NEVER KILL THE RUN. This panel is pure derived
3527
+ // geometry -- if synthesis or rendering ever throws (a malformed
3528
+ // seed, a room shape no one anticipated), the right outcome is a
3529
+ // blank box and a log line, not a dead session mid-job.
3530
+ try {
3531
+ const roomLines = renderRoomLayoutCompact(here, this.player, {
3532
+ boxWidth,
3533
+ isOtherPlayer: a => this.scene.isHumanControlled(a),
3534
+ });
3535
+ if (roomLines.length > 0) {
3536
+ const spot = spotOf(this.player);
3537
+ roomLines.push(caption(spot ? `@ ${spot}` : '(moving through)', boxWidth));
3538
+ }
3539
+ this.setRoomOverlay(roomLines);
3540
+ }
3541
+ catch (err) {
3542
+ Logger.getInstance().write(`Room overlay render failed in ${here.name}: ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
3543
+ this.hideRoomOverlay();
3544
+ }
3433
3545
  }
3434
3546
  updateInventory(_playerInventory, _currencyName = 'currency') {
3435
3547
  this.updateStatus();