@maka/maka-cli 5.82.1 → 5.84.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 (92) hide show
  1. package/bundle/typescript/package.json +2 -2
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +7 -0
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.d.ts +53 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js +135 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js.map +1 -0
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +18 -9
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +55 -21
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +39 -9
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/heal.d.ts +53 -0
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/heal.js +158 -0
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/heal.js.map +1 -0
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +26 -11
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +4 -5
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +14 -11
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +5 -3
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +28 -13
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.d.ts +12 -0
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.js +52 -2
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.js.map +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +85 -18
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +8 -5
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +8 -8
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +69 -16
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +17 -11
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +45 -32
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +23 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +34 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +96 -14
  43. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +25 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +51 -4
  46. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +9 -2
  48. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +12 -5
  49. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +26 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/game.js +182 -9
  52. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +38 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +85 -3
  55. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +32 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +48 -3
  58. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +8 -0
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +8 -5
  62. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +6 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.d.ts +124 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js +209 -0
  67. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js.map +1 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +3 -2
  69. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +112 -15
  70. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  71. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.d.ts +8 -3
  72. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.js +70 -8
  73. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.js.map +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.d.ts +50 -0
  75. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.js +44 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.js.map +1 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +9 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +133 -8
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +208 -30
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/utilities/presence-gate.d.ts +21 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/utilities/presence-gate.js +28 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/utilities/presence-gate.js.map +1 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +5 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +33 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js +9 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +1 -1
  90. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +3 -1
  91. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  92. package/package.json +2 -2
@@ -4,6 +4,8 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
4
4
  import { resolveUseTarget } from '../utilities/use-target.js';
5
5
  import { ensureAtSpot, ensureAtExit } from '../utilities/spots.js';
6
6
  import { applyDeviceOpened } from '../utilities/devices.js';
7
+ import { hint } from '../utilities/hints.js';
8
+ import { FIRST_AID_THRESHOLD, firstAidCap, firstAidRefusal, performFirstAid, } from '../utilities/first-aid.js';
7
9
  export class UseCommand extends Command {
8
10
  static verb = 'use';
9
11
  static description = 'Use a thing: an item from your pack (a medkit, a stim patch), or a device in the room -- "use keypad 4471" offers a code, "use safe" tries it with what you are carrying. With one device here, a bare code works too.';
@@ -248,46 +250,57 @@ export class UseCommand extends Command {
248
250
  return [result.message, ...lines].join('\n');
249
251
  }
250
252
  /**
251
- * Healing, matching combat's texture (see commands/attack.ts): a visible
252
- * first-aid dice pool scaled by the item's quality, applied to the
253
- * condition monitor. Pool is 2 * (1 + quality) d6 (a common medkit rolls
254
- * 2d6, a military-grade one 10d6) and the recovery is hits + 1 + quality
255
- * -- the floor guarantees even an all-miss roll isn't a wasted kit, and
256
- * quality dominates, since gear is the game's whole progression system.
257
- * Single-use: the kit is consumed. Healing also restores wound-modifier
258
- * dice, since those derive from current damage.
253
+ * `use <medkit>` and `heal` are THE SAME TEST (SR5 p.205-206) and now
254
+ * literally run the same code -- utilities/first-aid.ts. They used to
255
+ * differ, because this one was written first and grew its own rules:
256
+ * a pool of 2 * (1 + quality) d6, healing of hits + 1 + quality, no
257
+ * threshold, no cap, no limit, and the kit consumed on use.
259
258
  *
260
- * Deliberately refuses BEFORE consuming when there's nothing to heal --
261
- * burning a medkit at full health would just be a trap -- and when the
262
- * user is already down: death is death, not a big wound.
259
+ * Leaving that here while heal.ts spoke canon would have been the worst
260
+ * of the three options -- the same report one layer down, from the
261
+ * player who happens to type `use medkit` instead of `heal`. So this is
262
+ * a thin shim over the shared module and holds no mechanics of its own.
263
+ *
264
+ * TWO PLAYER-VISIBLE CHANGES land here, both canon:
265
+ * - An all-miss roll no longer closes a box. There is a threshold now.
266
+ * - THE KIT IS NO LONGER CONSUMED. p.205 lets you apply First Aid
267
+ * "even if you do not currently have supplies for it", and the
268
+ * catalog already sells 'Medkit Supplies' as the separate
269
+ * consumable. Consumption was the old anti-spam device; the
270
+ * once-per-set-of-wounds lock is canon's own, and does it better.
263
271
  */
264
272
  applyFirstAid(kit) {
265
- if (this.actor.isDown()) {
266
- return `You're past the help of a ${kit.name}.`;
267
- }
268
- if (this.actor.damageTaken === 0) {
269
- return `You're not hurt -- save the ${kit.name} for when you're bleeding.`;
270
- }
271
- // First aid is Logic + FIRST-AID skill now (unskilled: Logic - 1,
272
- // fumbling with the sprays), with the kit's quality still deciding how
273
- // much each hit actually closes (hits + 1 + quality below).
274
- const quality = kit.qualityBonus;
275
- const firstAid = this.actor.skillRating('first-aid');
276
- // Quick Healer (p.77): +2 on every healing test made on or by you.
277
- const roll = rollPool(Math.max(1, this.actor.logic + (firstAid > 0 ? firstAid : -1) + this.actor.qualityBonus('healing') + this.actor.augBonus('healing') + this.actor.woundModifier));
278
- const healed = this.actor.healDamage(roll.hits + 1 + quality);
279
- this.actor.inventory.removeItem(kit.name);
280
- this.logger.write(`UseCommand: ${this.actor.name} used ${kit.name} and healed ${healed} boxes (${this.actor.damageTaken}/${this.actor.maxConditionBoxes}).`);
273
+ const track = this.actor.damageTaken > 0 ? 'physical' : 'stun';
274
+ const refusal = firstAidRefusal(this.actor, this.actor, kit, track);
275
+ if (refusal)
276
+ return refusal;
277
+ const cap = firstAidCap(this.actor, kit);
278
+ const result = performFirstAid(this.actor, this.actor, kit, track);
279
+ const summary = track === 'physical' ? this.actor.conditionSummary() : this.actor.stunSummary();
280
+ this.logger.write(`UseCommand: ${this.actor.name} used ${kit.name} (${track}): ${formatRoll(result.roll)}, cap ${cap}, healed ${result.healed}, worsened ${result.worsened}.`);
281
281
  this.actor.performAction('uses', kit.name);
282
282
  this.scene.addWorldEvent(`${this.actor.name} patched themselves up with ${kit.name}.`);
283
283
  this.scene.updateInventory(this.scene.getPlayer().inventory);
284
284
  this.scene.updateStatus();
285
- return [
285
+ const lines = [
286
286
  `You use the ${kit.name}:`,
287
- ` First aid: ${formatRoll(roll)}`,
288
- ` You recover ${healed} box${healed === 1 ? '' : 'es'}: ${this.actor.conditionSummary()}`,
289
- ` (The ${kit.name} is spent.)`,
290
- ].join('\n');
287
+ ` First aid: ${formatRoll(result.roll)} (threshold ${FIRST_AID_THRESHOLD})`,
288
+ ];
289
+ if (result.worsened > 0) {
290
+ lines.push(` IT GOES WRONG -- ${result.worsened} more box${result.worsened === 1 ? '' : 'es'}: ${summary}`);
291
+ }
292
+ else if (result.healed > 0) {
293
+ lines.push(` You recover ${result.healed} box${result.healed === 1 ? '' : 'es'}: ${summary}`);
294
+ if (result.halvedByArmor)
295
+ lines.push(` (Halved -- you're working through full-body armor.)`);
296
+ if (result.capBound)
297
+ lines.push(` (Capped at ${cap} -- first aid only takes you as far as your training.)`);
298
+ }
299
+ else {
300
+ lines.push(` Nothing closes: ${result.roll.hits} hit${result.roll.hits === 1 ? '' : 's'} against a threshold of ${FIRST_AID_THRESHOLD}. ${summary}`);
301
+ }
302
+ lines.push(hint(` (The ${kit.name} keeps -- but that's your one application for these wounds.)`));
303
+ return lines.join('\n');
291
304
  }
292
305
  /**
293
306
  * Hot food is the slow, cheap, pleasant road to stun recovery -- the
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/use.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,4 @@
16
16
  * No import.meta here (engine-graph law) -- this file is loaded by the
17
17
  * server.
18
18
  */
19
- export declare const ENGINE_VERSION = "1.17.0";
19
+ export declare const ENGINE_VERSION = "1.18.0";
@@ -95,5 +95,27 @@
95
95
  // hostMarksBy). Shared-scene combat semantics change: the host acts on
96
96
  // every player action inside it, so a shared run sees ice lines and
97
97
  // Mechanics rolls that clients on 1.16.0 do not produce.
98
- export const ENGINE_VERSION = '1.17.0';
98
+ // 1.18.0 (2026-08-30): THE HOST BOUNDARY (p.239, p.246) -- a persona is
99
+ // now INSIDE or OUTSIDE a host, and the two see different worlds. Three
100
+ // reports from one play-tester were the same missing state seen from
101
+ // three sides (hhSWvKKMxRC7DGXhh, eJANuz2xqvpNSjuFq, rG8LtMoy5DHQJ2NuG).
102
+ // - NEW VERBS `enter` / `exit-host` (Complex Action, 1 mark, no test).
103
+ // Bare `exit` routes to exit-host while inside one; it still quits
104
+ // the game everywhere else.
105
+ // - VISIBILITY: from outside, a host is ONE sealed icon -- its files,
106
+ // and anyone inside it, are gone from the grid view rather than
107
+ // listed as "right there". From inside, the outside grid is gone.
108
+ // - IC RUNS ONLY AGAINST PERSONAS INSIDE THE HOST, ambient Patrol
109
+ // included. A shared run sees strictly fewer ice lines than 1.17.0
110
+ // produced for the same actions, which is why this is a minor bump
111
+ // and not a patch: clients disagree about whether ice fires at all.
112
+ // - NO MORE AIR-GAPPED HOSTS. `canReachHost` lost its nodeAccess
113
+ // branch; a host is Matrix architecture by definition (p.218). The
114
+ // air gap moved to Room.offlineServer, a device with no Matrix
115
+ // presence whose files open only to a direct connection (p.233).
116
+ // Legacy `nodeAccess: 'wired'` seeds migrate in the Room constructor,
117
+ // so old scenes and saves keep working and no SAVE_VERSION is owed:
118
+ // insideHost is session state, cleared on every route out of the
119
+ // Matrix, and is never written to a save.
120
+ export const ENGINE_VERSION = '1.18.0';
99
121
  //# sourceMappingURL=engine-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-version.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/engine-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,mEAAmE;AACnE,oEAAoE;AACpE,sEAAsE;AACtE,6CAA6C;AAC7C,iEAAiE;AACjE,qCAAqC;AACrC,oEAAoE;AACpE,6DAA6D;AAC7D,uEAAuE;AACvE,kDAAkD;AAClD,iEAAiE;AACjE,mEAAmE;AACnE,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,kDAAkD;AAClD,kEAAkE;AAClE,4DAA4D;AAC5D,qEAAqE;AACrE,yDAAyD;AACzD,sEAAsE;AACtE,2CAA2C;AAC3C,qEAAqE;AACrE,yDAAyD;AACzD,iEAAiE;AACjE,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,6DAA6D;AAC7D,uEAAuE;AACvE,sEAAsE;AACtE,0DAA0D;AAC1D,2BAA2B;AAC3B,uEAAuE;AACvE,8DAA8D;AAC9D,mEAAmE;AACnE,4CAA4C;AAC5C,kEAAkE;AAClE,oEAAoE;AACpE,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,mEAAmE;AACnE,+DAA+D;AAC/D,yCAAyC;AACzC,qEAAqE;AACrE,oEAAoE;AACpE,mEAAmE;AACnE,kEAAkE;AAClE,qEAAqE;AACrE,yBAAyB;AACzB,iEAAiE;AACjE,sEAAsE;AACtE,sEAAsE;AACtE,qEAAqE;AACrE,qEAAqE;AACrE,qEAAqE;AACrE,kCAAkC;AAClC,+DAA+D;AAC/D,qEAAqE;AACrE,oEAAoE;AACpE,uEAAuE;AACvE,oEAAoE;AACpE,sEAAsE;AACtE,2DAA2D;AAC3D,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,sEAAsE;AACtE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"engine-version.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/engine-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,mEAAmE;AACnE,oEAAoE;AACpE,sEAAsE;AACtE,6CAA6C;AAC7C,iEAAiE;AACjE,qCAAqC;AACrC,oEAAoE;AACpE,6DAA6D;AAC7D,uEAAuE;AACvE,kDAAkD;AAClD,iEAAiE;AACjE,mEAAmE;AACnE,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,kDAAkD;AAClD,kEAAkE;AAClE,4DAA4D;AAC5D,qEAAqE;AACrE,yDAAyD;AACzD,sEAAsE;AACtE,2CAA2C;AAC3C,qEAAqE;AACrE,yDAAyD;AACzD,iEAAiE;AACjE,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,6DAA6D;AAC7D,uEAAuE;AACvE,sEAAsE;AACtE,0DAA0D;AAC1D,2BAA2B;AAC3B,uEAAuE;AACvE,8DAA8D;AAC9D,mEAAmE;AACnE,4CAA4C;AAC5C,kEAAkE;AAClE,oEAAoE;AACpE,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,mEAAmE;AACnE,+DAA+D;AAC/D,yCAAyC;AACzC,qEAAqE;AACrE,oEAAoE;AACpE,mEAAmE;AACnE,kEAAkE;AAClE,qEAAqE;AACrE,yBAAyB;AACzB,iEAAiE;AACjE,sEAAsE;AACtE,sEAAsE;AACtE,qEAAqE;AACrE,qEAAqE;AACrE,qEAAqE;AACrE,kCAAkC;AAClC,+DAA+D;AAC/D,qEAAqE;AACrE,oEAAoE;AACpE,uEAAuE;AACvE,oEAAoE;AACpE,sEAAsE;AACtE,2DAA2D;AAC3D,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,sEAAsE;AACtE,2DAA2D;AAC3D,wEAAwE;AACxE,0EAA0E;AAC1E,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,gCAAgC;AAChC,wEAAwE;AACxE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,uEAAuE;AACvE,mEAAmE;AACnE,qEAAqE;AACrE,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC"}
@@ -217,7 +217,7 @@ export interface ICrewDossierEntry {
217
217
  * crew (Game.draftNextScene). So the head count is always crew + 1.
218
218
  */
219
219
  export declare function partyHeadcount(crew?: ICrewDossierEntry[]): number;
220
- export declare function buildSkeletonPrompt(tier: number, player?: Player, previousError?: string, rumor?: string, crew?: ICrewDossierEntry[], canonBlock?: string): string;
220
+ export declare function buildSkeletonPrompt(tier: number, player?: Player, previousError?: string, rumor?: string, crew?: ICrewDossierEntry[], canonBlock?: string, runType?: RunType): string;
221
221
  export declare function buildRoomsPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
222
222
  export declare function buildNpcsPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
223
223
  export declare function buildDevicesPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
@@ -248,6 +248,39 @@ export declare function buildItemsPrompt(skeleton: ISceneSkeleton, devices: IDev
248
248
  * canBypassUnaided would attract the other two cases back.
249
249
  */
250
250
  export declare function partyCanDispel(player: Player | undefined): boolean;
251
+ /**
252
+ * CAN THIS RUNNER WORK THE GRID AT ALL (ruoedrMTA6kCRNmEN, user ruling:
253
+ * data runs are offered to deck-capable runners only)?
254
+ *
255
+ * A working cyberdeck, or the Resonance -- the two ways into a host.
256
+ * getCyberdeck() and not getAnyCyberdeck() on purpose: a BRICKED deck is
257
+ * a deck you cannot run with, and a job whose every objective sits
258
+ * behind a host would strand the runner who accepted it. Offering work
259
+ * that cannot be done is worse than offering none.
260
+ *
261
+ * THE PLAYER ONLY, DELIBERATELY. A crew decker could in fiction carry
262
+ * this run, but ICrewDossierEntry has a name, an archetype label and a
263
+ * skill map -- no gear. "This NPC owns a deck" is not knowable from it,
264
+ * and reading a `hacking` rating as a deck would invent capability the
265
+ * dossier never claimed. Left out rather than guessed; if the crew
266
+ * dossier ever carries gear, this is the one line to revisit.
267
+ */
268
+ export declare function partyCanDeck(player: Player | undefined): boolean;
269
+ /**
270
+ * WHAT KIND OF JOB IS ON THE TABLE.
271
+ *
272
+ * 'data' is the quiet one: get in, pull the file, get out. It is gated,
273
+ * not weighted, for a reason -- a runner who cannot deck must NEVER see
274
+ * one, because every objective on it lives behind a host. The roll only
275
+ * decides how often a qualified runner gets offered one.
276
+ *
277
+ * `roll` is injected so the decision is testable without owning the
278
+ * global RNG: the gate is what matters and it must hold for every
279
+ * possible roll, which is exactly what a test can then prove.
280
+ */
281
+ export declare const DATA_RUN_SHARE = 0.3;
282
+ export type RunType = 'standard' | 'data';
283
+ export declare function pickRunType(player: Player | undefined, roll?: number): RunType;
251
284
  /** Strips accidental markdown fences and parses; throws with a useful message. */
252
285
  export declare function parseJsonReply<T>(reply: string): T;
253
286
  /**
@@ -199,7 +199,7 @@ The opposition must credibly threaten a team of ${crew.length + 1} runners: scal
199
199
  counts and quality up accordingly (one extra capable defender per crew member is a good
200
200
  baseline), and let the fiction acknowledge a crew, not a loner.`;
201
201
  }
202
- export function buildSkeletonPrompt(tier, player, previousError, rumor, crew, canonBlock) {
202
+ export function buildSkeletonPrompt(tier, player, previousError, rumor, crew, canonBlock, runType = 'standard') {
203
203
  // Tier 1 is the only fresh start (the launch menu's "Generate a new
204
204
  // Run"); every Johnson-commissioned draft is tier 2+ and the runner
205
205
  // arrives fully equipped -- authoring "starting" items there was pure
@@ -221,12 +221,51 @@ export function buildSkeletonPrompt(tier, player, previousError, rumor, crew, ca
221
221
  // need a longer map or more locks, it needs the opposition to answer
222
222
  // for more guns. Scaling the map too would just add walking.
223
223
  const heads = partyHeadcount(crew);
224
- const scope = tier <= 1
225
- ? `3 to 4 rooms, exactly ${heads} NPC${heads === 1 ? '' : 's'} besides the client, and exactly 1 device`
226
- : tier === 2
227
- ? `4 to 6 rooms, ${2 * heads} NPCs besides the client, and 1 to 2 devices`
228
- : `6 to 8 rooms, ${3 * heads} to ${4 * heads} NPCs besides the client, and 2 to 3 devices`;
224
+ // A DATA RUN IS SHORTER BY DESIGN (ruoedrMTA6kCRNmEN). It is one
225
+ // building, one host, one file -- the shape of a job a decker takes
226
+ // between the big ones. Scaling it like a full run would just be a
227
+ // full run with the guards renamed, which is the thing this type
228
+ // exists NOT to be. It still scales with the table, because the
229
+ // action economy argument that drove Scope holds on the grid too.
230
+ const scope = runType === 'data'
231
+ ? (tier <= 1
232
+ ? `2 to 3 rooms, exactly ${heads} NPC${heads === 1 ? '' : 's'} besides the client, and exactly 1 device`
233
+ : `3 to 4 rooms, ${2 * heads} NPCs besides the client, and 1 to 2 devices`)
234
+ : tier <= 1
235
+ ? `3 to 4 rooms, exactly ${heads} NPC${heads === 1 ? '' : 's'} besides the client, and exactly 1 device`
236
+ : tier === 2
237
+ ? `4 to 6 rooms, ${2 * heads} NPCs besides the client, and 1 to 2 devices`
238
+ : `6 to 8 rooms, ${3 * heads} to ${4 * heads} NPCs besides the client, and 2 to 3 devices`;
229
239
  const dossier = buildPlayerDossier(player) + buildTeamBlock(crew);
240
+ // THE DATA RUN (ruoedrMTA6kCRNmEN). Offered only to a runner who can
241
+ // actually reach a host -- see pickRunType, which gates before this is
242
+ // ever built.
243
+ //
244
+ // The chip half already shipped: taking a matrix-plane file writes it
245
+ // to physical media (take.ts), which is what makes "hand it to the
246
+ // fixer" possible at all and why the objective below can be a `give`.
247
+ // The two halves have to agree about WHERE the file is, so this block
248
+ // says host-or-offline-server in the same vocabulary room.ts uses.
249
+ const dataRunBlock = runType !== 'data' ? '' : `
250
+ THIS JOB IS A DATA RUN -- a quiet one. The runner is being paid to STEAL A FILE, not to
251
+ take ground. Build it accordingly:
252
+ - The winCondition item is PAYDATA: a "matrix"-plane item, category Document, sitting
253
+ either INSIDE a hasNode host, or on an OFFLINE SERVER device in a room (a box with no
254
+ Matrix presence, whose files open only to a runner whose BODY is in that room). Pick one
255
+ and commit to it -- the offline server is the harder, more interesting shape when the
256
+ fiction wants a vault you must walk into.
257
+ - THE OPPOSITION IS ICE, not muscle. Every NPC besides the client is "matrix"-plane and
258
+ stationed in the host. No guards patrolling meat corridors, no gunfight in the lobby: a
259
+ data run that ends in a firefight is a smash-and-grab wearing the wrong name. A site can
260
+ still be WATCHED (cameras) -- surveillance is pressure without being a gun.
261
+ - Keep it SHORT and tight. One site, one host, one file.
262
+ - It pays LESS than a full run of the same tier -- roughly half. The runner is trading pay
263
+ for a job that never puts a gun in their face, and the fixer prices it that way. Say so
264
+ in the client's own terms if it comes up at the meet.
265
+ - The delivery still matters: the file comes out of the vault written to a chip, and the
266
+ chip is a physical object the runner carries and hands over. A "give" objective is the
267
+ natural shape.
268
+ `;
230
269
  // The hub's active street rumor becomes the job's backdrop -- gossip
231
270
  // the runner heard at the noodle stand pays off as foreshadowing when
232
271
  // the next job turns out to be tangled in exactly that (see
@@ -244,6 +283,7 @@ Prose comes later in separate passes: here, every "concept" is ONE tight sentenc
244
283
  and everything else is structure. Get the STRUCTURE exactly right -- every name is a
245
284
  cross-reference other passes and the game engine will rely on verbatim.
246
285
  ${rumorBlock}
286
+ ${dataRunBlock}
247
287
  ${canonBlock ? `\n${canonBlock}\n` : ''}
248
288
  ${dossier ? `\n${dossier}\n` : ''}
249
289
  ${JSON_ONLY}
@@ -269,14 +309,18 @@ ${JSON_ONLY}
269
309
  // guarded space (a gang cache, a fixer's office, a shop): the room's
270
310
  // goods become THEIRS, and the engine makes them contest theft --
271
311
  // an unowned prize in a guarded vault walks out unchallenged.
272
- "hasNode"?: boolean, // a live Matrix host: hackable from inside the Matrix; releases the
273
- // room's maglocks AND unseals its matrix-plane files (the host is
274
- // the vault). 1-2 rooms in corp/tech locations only. Ice NPCs and
275
- // matrix-plane items belong ONLY in hasNode rooms, and any hasNode
276
- // room holding matrix items MUST have an ice NPC stationed in it.
277
- "nodeAccess"?: "wireless"|"wired", // "wired" = AIR-GAPPED: only hackable by jacking in
278
- // physically inside the room. Use for at most one, most-sensitive
279
- // host; never make its meat-side route impossible.
312
+ "hasNode"?: boolean, // a live Matrix host standing over this room: its own virtual space,
313
+ // ENTERED by a persona that holds a mark on it. Hacking it releases
314
+ // the room's maglocks AND unseals its matrix-plane files, which live
315
+ // INSIDE the host -- from the outside grid it is one sealed icon.
316
+ // 1-2 rooms in corp/tech locations only. Ice NPCs and matrix-plane
317
+ // items belong ONLY in hasNode rooms, and any hasNode room holding
318
+ // matrix items MUST have an ice NPC stationed in it.
319
+ "nodeAccess"?: "wireless", // Hosts are always reachable from the Matrix -- that is what
320
+ // makes them hosts. There is no air-gapped host: for a vault that
321
+ // must be entered in the flesh, put an OFFLINE SERVER device in the
322
+ // room's items instead and leave the host off. Legacy "wired" values
323
+ // are migrated automatically; do not author them.
280
324
  "hostRating"?: number, // 1-12, SR5 p.247. What KIND of host this is, and the only thing
281
325
  // that tells a pawnshop apart from an arcology on the grid map.
282
326
  // 1-2 personal sites, pirate archives. 3-4 low-end commercial,
@@ -661,6 +705,44 @@ export function partyCanDispel(player) {
661
705
  // Adepts are awakened but cannot cast, so they cannot unweave a ward.
662
706
  return !!player && player.isAwakened() && !player.adept;
663
707
  }
708
+ /**
709
+ * CAN THIS RUNNER WORK THE GRID AT ALL (ruoedrMTA6kCRNmEN, user ruling:
710
+ * data runs are offered to deck-capable runners only)?
711
+ *
712
+ * A working cyberdeck, or the Resonance -- the two ways into a host.
713
+ * getCyberdeck() and not getAnyCyberdeck() on purpose: a BRICKED deck is
714
+ * a deck you cannot run with, and a job whose every objective sits
715
+ * behind a host would strand the runner who accepted it. Offering work
716
+ * that cannot be done is worse than offering none.
717
+ *
718
+ * THE PLAYER ONLY, DELIBERATELY. A crew decker could in fiction carry
719
+ * this run, but ICrewDossierEntry has a name, an archetype label and a
720
+ * skill map -- no gear. "This NPC owns a deck" is not knowable from it,
721
+ * and reading a `hacking` rating as a deck would invent capability the
722
+ * dossier never claimed. Left out rather than guessed; if the crew
723
+ * dossier ever carries gear, this is the one line to revisit.
724
+ */
725
+ export function partyCanDeck(player) {
726
+ return !!player && (player.isTechnomancer() || !!player.getCyberdeck());
727
+ }
728
+ /**
729
+ * WHAT KIND OF JOB IS ON THE TABLE.
730
+ *
731
+ * 'data' is the quiet one: get in, pull the file, get out. It is gated,
732
+ * not weighted, for a reason -- a runner who cannot deck must NEVER see
733
+ * one, because every objective on it lives behind a host. The roll only
734
+ * decides how often a qualified runner gets offered one.
735
+ *
736
+ * `roll` is injected so the decision is testable without owning the
737
+ * global RNG: the gate is what matters and it must hold for every
738
+ * possible roll, which is exactly what a test can then prove.
739
+ */
740
+ export const DATA_RUN_SHARE = 0.3;
741
+ export function pickRunType(player, roll = Math.random()) {
742
+ if (!partyCanDeck(player))
743
+ return 'standard';
744
+ return roll < DATA_RUN_SHARE ? 'data' : 'standard';
745
+ }
664
746
  /** Strips accidental markdown fences and parses; throws with a useful message. */
665
747
  export function parseJsonReply(reply) {
666
748
  const cleaned = reply.replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/i, '');