@maka/maka-cli 5.234.0 → 5.235.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.234.0",
3
+ "version": "5.235.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.",
@@ -1490,5 +1490,20 @@
1490
1490
  // Nothing here is new to this engine: clue-reading has used p.49 and
1491
1491
  // the same -2 since 1.40. It had simply never been pointed at the one
1492
1492
  // test a player can repeat by holding down a key.
1493
- export const ENGINE_VERSION = '1.85.0';
1493
+ // 1.85.1 (2026-09-16): THE GRID WAS ANNOUNCED BUT NEVER CHARGED
1494
+ // Asked while reading a sweep transcript: "is the grid type being
1495
+ // applied?" The banner says it plainly --
1496
+ // "Riding the public grid (-2 on everything you do, p.233)"
1497
+ // -- and the sweep was not paying it. Player.matrixActionPenalty is
1498
+ // ONLY the running-silent -2; the grid modifier is a separate helper
1499
+ // (grids.ts gridActionModifier) that every other Matrix verb calls
1500
+ // and spotHiddenIcons never did. So the -2 was printed on screen and
1501
+ // then left out of the one roll the player was watching, which is the
1502
+ // same class of defect as the Firewall label a version ago: the text
1503
+ // made a claim the dice did not honour.
1504
+ // The sweep now takes it, and the mechanics line shows '[public grid
1505
+ // -2]' where it applied. Inside a host it is correctly nothing -- a
1506
+ // host's interior is not on a grid -- and it stacks with p.49's retry
1507
+ // penalty, so a public-grid decker gets 5, 3, 1, none.
1508
+ export const ENGINE_VERSION = '1.85.1';
1494
1509
  //# sourceMappingURL=engine-version.js.map
@@ -1,6 +1,7 @@
1
1
  import { rollPool, formatRoll } from './dice.js';
2
2
  import { deviceHidePool, wanHidePool } from './matrix-intrusion.js';
3
3
  import { isWatched, cameraMasterHost } from './surveillance.js';
4
+ import { gridActionModifier, gridNote } from './grids.js';
4
5
  function hiddenDevice(device, master) {
5
6
  // p.235-236: the hider rolls LOGIC + SLEAZE. Not Firewall -- that
6
7
  // resists an intrusion (p.238/p.240) and has nothing to do with being
@@ -128,8 +129,17 @@ export function spotHiddenIcons(scene, actor, room) {
128
129
  // because that is what stops the grind: a pool reduced to nothing
129
130
  // cannot be rolled, so after enough failures you are not looking
130
131
  // harder, you are done looking until you take the break p.49 names.
132
+ // THE GRID YOU ARE RIDING (p.233), which the banner has been promising
133
+ // and the dice were not paying: "Riding the public grid (-2 on
134
+ // everything you do)". matrixActionPenalty is ONLY the running-silent
135
+ // -2 -- the grid modifier is a separate helper that every other Matrix
136
+ // verb calls and this sweep never did, so the public grid's -2 was
137
+ // announced on screen and then quietly left out of the one roll the
138
+ // player was watching. Inside a host it is correctly nothing: a host's
139
+ // interior is not on a grid.
140
+ const grid = gridActionModifier(actor.currentGrid, !!actor.hostInside, actor.currentGrid);
131
141
  const base = Math.max(1, actor.intuition + (computer > 0 ? computer : -1)
132
- + actor.matrixActionPenalty + actor.woundModifier - actor.sustainingPenalty);
142
+ + actor.matrixActionPenalty + grid.total + actor.woundModifier - actor.sustainingPenalty);
133
143
  const pool = Math.max(0, base - 2 * retries);
134
144
  const roll = rollPool(pool, actor.matrixAttribute('dataProcessing'), { gremlins: actor.deckGremlins });
135
145
  const found = [];
@@ -159,7 +169,7 @@ export function spotHiddenIcons(scene, actor, room) {
159
169
  actor.sweepAttempts.set(room.name, retries + 1);
160
170
  else
161
171
  actor.sweepAttempts.delete(room.name);
162
- return { found, missed, roll, retries, against };
172
+ return { found, missed, roll, retries, grid: gridNote(grid), against };
163
173
  }
164
174
  /**
165
175
  * The mechanics lines for a sweep.
@@ -181,7 +191,7 @@ export function spotMechanics(outcome) {
181
191
  ? ` -- trying again, -${outcome.retries * 2} (p.49: -2 per failed attempt; a break clears it)`
182
192
  : '';
183
193
  return [
184
- `Matrix Perception, silent icons (Computer + Intuition [Data Processing]): ${formatRoll(outcome.roll)}${again}`,
194
+ `Matrix Perception, silent icons (Computer + Intuition [Data Processing]): ${formatRoll(outcome.roll)}${outcome.grid}${again}`,
185
195
  ...outcome.against.map(a => (a.name
186
196
  ? ` ${a.name} hides (${a.label}): ${formatRoll(a.roll)}`
187
197
  : ` something holds its cover: ${formatRoll(a.roll)}`)),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.234.0",
3
+ "version": "5.235.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.",