@maka/maka-cli 5.235.0 → 5.236.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.235.0",
3
+ "version": "5.236.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.",
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { gridActionModifier } from '../utilities/grids.js';
2
3
  import { hint } from '../utilities/hints.js';
3
4
  import { rollPool, formatRoll } from '../utilities/dice.js';
4
5
  import { billAction } from '../utilities/action-cost.js';
@@ -111,8 +112,12 @@ export class EditFileCommand extends Command {
111
112
  const computer = actor.skillRating('computer');
112
113
  // Inside a host no grid penalty applies (p.246); silence still taxes
113
114
  // every Matrix action (p.235-236, Player.matrixActionPenalty).
115
+ // The grid tax was NAMED here and never charged -- gridActionModifier
116
+ // is the helper that answers both halves, returning 0 inside a host
117
+ // and the public grid's -2 out on it (p.233).
118
+ const grid = gridActionModifier(actor.currentGrid, !!actor.hostInside, actor.currentGrid);
114
119
  const pool = Math.max(1, actor.logic + (computer > 0 ? computer : -1)
115
- + actor.matrixActionPenalty + actor.woundModifier - actor.sustainingPenalty);
120
+ + actor.matrixActionPenalty + grid.total + actor.woundModifier - actor.sustainingPenalty);
116
121
  const limit = actor.matrixAttribute('dataProcessing');
117
122
  const defence = hostDefensePool(host);
118
123
  const attempt = rollPool(pool, limit, { gremlins: actor.deckGremlins });
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { gridActionModifier } from '../utilities/grids.js';
2
3
  import { hint } from '../utilities/hints.js';
3
4
  import { rollPool, formatRoll } from '../utilities/dice.js';
4
5
  import { billAction } from '../utilities/action-cost.js';
@@ -192,8 +193,12 @@ export class EraseMarkCommand extends Command {
192
193
  if (bill)
193
194
  return bill;
194
195
  const computer = actor.skillRating('computer');
196
+ // The grid you are riding taxes every Matrix action you take from it
197
+ // (p.233); inside a host it is nothing, because a host's interior is
198
+ // not on a grid.
199
+ const grid = gridActionModifier(actor.currentGrid, !!actor.hostInside, actor.currentGrid);
195
200
  const pool = Math.max(1, actor.logic + (computer > 0 ? computer : -1)
196
- + penalty + actor.matrixActionPenalty + actor.woundModifier - actor.sustainingPenalty);
201
+ + penalty + actor.matrixActionPenalty + grid.total + actor.woundModifier - actor.sustainingPenalty);
197
202
  const limit = actor.matrixAttribute('attack');
198
203
  // THE PLACER ROLLS, not the icon the key is written on (p.239, see
199
204
  // IPlacer). `chosen` is the icon whose keys this action is scrubbing.
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { gridActionModifier } from '../utilities/grids.js';
2
3
  import { hint } from '../utilities/hints.js';
3
4
  import { rollPool, formatRoll } from '../utilities/dice.js';
4
5
  import { accrueOverwatch } from '../utilities/overwatch.js';
@@ -63,8 +64,12 @@ export class HideCommand extends Command {
63
64
  if (bill)
64
65
  return bill;
65
66
  const ew = actor.skillRating('electronic-warfare');
67
+ // The grid you are riding taxes every Matrix action you take from it
68
+ // (p.233); inside a host it is nothing, because a host's interior is
69
+ // not on a grid.
70
+ const grid = gridActionModifier(actor.currentGrid, !!actor.hostInside, actor.currentGrid);
66
71
  const pool = Math.max(1, actor.intuition + (ew > 0 ? ew : -1)
67
- + actor.matrixActionPenalty + actor.woundModifier - actor.sustainingPenalty);
72
+ + actor.matrixActionPenalty + grid.total + actor.woundModifier - actor.sustainingPenalty);
68
73
  const limit = actor.matrixAttribute('sleaze');
69
74
  const attempt = rollPool(pool, limit, { gremlins: actor.deckGremlins });
70
75
  const defence = rollPool(room.hostRating + room.hostAttributes().dataProcessing);
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { gridActionModifier } from '../utilities/grids.js';
2
3
  import { rollPool, formatRoll } from '../utilities/dice.js';
3
4
  import { accrueOverwatch, settledScore, CONVERGENCE_AT } from '../utilities/overwatch.js';
4
5
  import { leaveMatrix } from '../utilities/planes.js';
@@ -38,8 +39,10 @@ export class OverwatchCommand extends Command {
38
39
  return burned;
39
40
  const limit = actor.matrixAttribute('sleaze');
40
41
  // The check is itself a Sleaze action, so silence taxes it too
41
- // (canon p.235-236, Player.matrixActionPenalty).
42
- const mine = rollPool(Math.max(1, actor.logic + (skill > 0 ? skill : -1) + actor.matrixActionPenalty + actor.woundModifier - actor.sustainingPenalty), limit);
42
+ // (canon p.235-236, Player.matrixActionPenalty) -- and so does the
43
+ // grid you take it from (p.233), which is nothing inside a host.
44
+ const grid = gridActionModifier(actor.currentGrid, !!actor.hostInside, actor.currentGrid);
45
+ const mine = rollPool(Math.max(1, actor.logic + (skill > 0 ? skill : -1) + actor.matrixActionPenalty + grid.total + actor.woundModifier - actor.sustainingPenalty), limit);
43
46
  const god = rollPool(6);
44
47
  if (showsMechanics(this.scene, actor)) {
45
48
  this.logger.meta(`${mechanicsActorPrefix(this.scene, actor)}Check Overwatch (EW, sleaze): ${formatRoll(mine)}`);
@@ -1505,5 +1505,24 @@
1505
1505
  // -2]' where it applied. Inside a host it is correctly nothing -- a
1506
1506
  // host's interior is not on a grid -- and it stacks with p.49's retry
1507
1507
  // penalty, so a public-grid decker gets 5, 3, 1, none.
1508
- export const ENGINE_VERSION = '1.85.1';
1508
+ // 1.85.2 (2026-09-16): SWEEP THE FAMILY -- the grid tax on every verb
1509
+ // 1.85.1 fixed the grid modifier on the sweep. CLAUDE.md's rule is
1510
+ // that a uniform approximation is still a deviation and partial canon
1511
+ // is worse than either extreme, so the other Matrix verbs were audited
1512
+ // rather than left to be reported one at a time.
1513
+ // FOUR MORE WERE BUILDING A POOL WITHOUT IT: Edit File (p.239), Erase
1514
+ // Mark (p.239), Hide (p.240) and Check Overwatch Score (p.238). All
1515
+ // four read Player.matrixActionPenalty -- which is ONLY the
1516
+ // running-silent -2 -- and none called gridActionModifier. edit-file's
1517
+ // own comment even NAMED the rule it was not applying ("inside a host
1518
+ // no grid penalty applies"), which is the tell: the author knew about
1519
+ // the grid and handled only the exempt case.
1520
+ // Each takes it now, and gridActionModifier answers both halves --
1521
+ // zero inside a host (p.246: its interior is not on a grid), the
1522
+ // public grid's -2 out on it (p.233).
1523
+ // NOT CHANGED: the `tap` verb. It is a direct connection to a lens in the
1524
+ // flesh, and the books do not say whether the grid tax still applies
1525
+ // to an action taken down a cable. Left alone and said so rather than
1526
+ // guessed in either direction.
1527
+ export const ENGINE_VERSION = '1.85.2';
1509
1528
  //# sourceMappingURL=engine-version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.235.0",
3
+ "version": "5.236.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.",