@maka/maka-cli 5.123.0 → 5.124.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 (73) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.d.ts +0 -8
  3. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js +6 -50
  4. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +3 -3
  6. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +0 -4
  8. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +0 -1342
  9. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +5 -6
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +2 -2
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +0 -38
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +11 -45
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -1
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +5 -4
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +10 -7
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +5 -6
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js +2 -2
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +14 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +11 -12
  33. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
  34. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +3 -3
  35. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/game.js +5 -9
  37. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/metamagics.d.ts +32 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/metamagics.js +12 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/metamagics.js.map +1 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/metatypes.d.ts +6 -4
  42. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js +3 -83
  43. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +5 -5
  45. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +10 -14
  46. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +3 -7
  48. package/bundle/typescript/src/commands/game/sideQuest/qualities.js +15 -715
  49. package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/spells.d.ts +5 -7
  51. package/bundle/typescript/src/commands/game/sideQuest/spells.js +5 -63
  52. package/bundle/typescript/src/commands/game/sideQuest/spells.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/ui.js +22 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +36 -20
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +24 -658
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +100 -20
  59. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +314 -57
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +3 -2
  62. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +26 -0
  64. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  65. package/bundle/typescript/src/error.js +1 -1
  66. package/bundle/typescript/src/error.js.map +1 -1
  67. package/bundle/typescript/src/tool.d.ts +2 -0
  68. package/bundle/typescript/src/tool.js +5 -2
  69. package/bundle/typescript/src/tool.js.map +1 -1
  70. package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
  71. package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
  72. package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,32 @@
1
+ /**
2
+ * A METAMAGIC (SR5e p.325-326) or a technomancer's ECHO (p.257-258), as
3
+ * the engine holds one. Types only: the rows themselves are catalog rows
4
+ * of kind 'metamagic' on maka-cli.com, and utilities/catalog.ts's
5
+ * metamagicFor()/catalogMetamagics() rebuild this shape from them.
6
+ *
7
+ * Lived inside commands/initiate.ts until 2026-09-05, beside the array
8
+ * that is now gone; moved out so models/player.ts and the catalog client
9
+ * can name the type without importing a command.
10
+ */
11
+ import type { ICatalogEffect } from './utilities/effects.js';
12
+ export interface IMetamagic {
13
+ key: string;
14
+ name: string;
15
+ /** Who can take it: casters (magic, not adept), adepts, or technomancers. */
16
+ path: 'caster' | 'adept' | 'techno';
17
+ effect: string;
18
+ page: string;
19
+ /**
20
+ * WHAT IT DOES, in the shared effects vocabulary (2026-09-04). A
21
+ * metamagic applies once 'initiated', and `scaleBy: 'grade'` multiplies
22
+ * by the initiation or submersion grade -- which is what Centering's
23
+ * "+grade dice" means.
24
+ *
25
+ * ONLY THE FLAT ONES CARRY EFFECTS, and the rest are rules of their own
26
+ * shape in models/player.ts: Quickening changes whether a sustained
27
+ * spell BILLS you, Overclocking adds a die only in hot-sim, and the two
28
+ * Matrix upgrades move a persona attribute that is computed rather than
29
+ * summed. Writing those as dice would be a stat block that lies.
30
+ */
31
+ effects?: ICatalogEffect[];
32
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A METAMAGIC (SR5e p.325-326) or a technomancer's ECHO (p.257-258), as
3
+ * the engine holds one. Types only: the rows themselves are catalog rows
4
+ * of kind 'metamagic' on maka-cli.com, and utilities/catalog.ts's
5
+ * metamagicFor()/catalogMetamagics() rebuild this shape from them.
6
+ *
7
+ * Lived inside commands/initiate.ts until 2026-09-05, beside the array
8
+ * that is now gone; moved out so models/player.ts and the catalog client
9
+ * can name the type without importing a command.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=metamagics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metamagics.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/metamagics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -43,11 +43,13 @@ export interface IMetatype {
43
43
  lifestyleCostMult?: number;
44
44
  /** Racial abilities, in the shared effects vocabulary. */
45
45
  effects?: ICatalogEffect[];
46
+ /**
47
+ * The Priority Table's metatype column (p.65): special attribute
48
+ * points per priority letter; a letter absent = not offered at that
49
+ * priority. The web chargen prices its metatype pick from this.
50
+ */
51
+ priority?: Partial<Record<'A' | 'B' | 'C' | 'D' | 'E', number>>;
46
52
  page: string;
47
53
  }
48
54
  /** Every metatype's Essence starts at 6 (p.66); none of them varies. */
49
55
  export declare const STARTING_ESSENCE = 6;
50
- export declare const METATYPES: IMetatype[];
51
- /** Keyed lookup, the shape every other source file here exposes. */
52
- export declare const METATYPES_BY_KEY: Record<string, IMetatype>;
53
- export declare function getMetatype(key: string): IMetatype | undefined;
@@ -1,86 +1,6 @@
1
1
  /** Every metatype's Essence starts at 6 (p.66); none of them varies. */
2
2
  export const STARTING_ESSENCE = 6;
3
- export const METATYPES = [
4
- {
5
- key: 'human', name: 'Human',
6
- description: 'The baseline the rest of the table is measured against -- and the one with luck to spare.',
7
- attributes: {
8
- body: { min: 1, max: 6 }, agility: { min: 1, max: 6 }, reaction: { min: 1, max: 6 },
9
- strength: { min: 1, max: 6 }, willpower: { min: 1, max: 6 }, logic: { min: 1, max: 6 },
10
- intuition: { min: 1, max: 6 }, charisma: { min: 1, max: 6 },
11
- // The one place humans are ahead of everyone: Edge 2/7, where every
12
- // other metatype starts at 1 and stops at 6.
13
- edge: { min: 2, max: 7 },
14
- },
15
- sprintMetersPerHit: 2,
16
- page: 'p.66',
17
- },
18
- {
19
- key: 'elf', name: 'Elf',
20
- description: 'Quick and easy to like, and never quite allowed to forget either.',
21
- attributes: {
22
- body: { min: 1, max: 6 }, agility: { min: 2, max: 7 }, reaction: { min: 1, max: 6 },
23
- strength: { min: 1, max: 6 }, willpower: { min: 1, max: 6 }, logic: { min: 1, max: 6 },
24
- intuition: { min: 1, max: 6 }, charisma: { min: 3, max: 8 }, edge: { min: 1, max: 6 },
25
- },
26
- sprintMetersPerHit: 2,
27
- effects: [{ type: 'flag', category: 'capability', property: 'low-light', value: 1 }],
28
- page: 'p.66',
29
- },
30
- {
31
- key: 'dwarf', name: 'Dwarf',
32
- description: 'Built low and built to last: harder to poison, harder to move, and paying more for a door that fits.',
33
- attributes: {
34
- body: { min: 3, max: 8 }, agility: { min: 1, max: 6 }, reaction: { min: 1, max: 5 },
35
- strength: { min: 3, max: 8 }, willpower: { min: 2, max: 7 }, logic: { min: 1, max: 6 },
36
- intuition: { min: 1, max: 6 }, charisma: { min: 1, max: 6 }, edge: { min: 1, max: 6 },
37
- },
38
- sprintMetersPerHit: 1,
39
- lifestyleCostMult: 1.2,
40
- effects: [
41
- { type: 'flag', category: 'capability', property: 'thermographic', value: 1 },
42
- // Canon reads "+2 dice for pathogen and toxin resistance". The
43
- // engine has a toxin pool and no pathogen track at all, so the
44
- // toxin half is declared and the pathogen half is simply absent --
45
- // named here rather than folded in, because a die granted against
46
- // something nothing rolls would be a stat block that lies.
47
- { type: 'dice', category: 'pools', property: 'toxin', value: 2 },
48
- ],
49
- page: 'p.66',
50
- },
51
- {
52
- key: 'ork', name: 'Ork',
53
- description: 'Strong, fast to mature, and written off by everyone who has never needed one.',
54
- attributes: {
55
- body: { min: 4, max: 9 }, agility: { min: 1, max: 6 }, reaction: { min: 1, max: 6 },
56
- strength: { min: 3, max: 8 }, willpower: { min: 1, max: 6 }, logic: { min: 1, max: 5 },
57
- intuition: { min: 1, max: 6 }, charisma: { min: 1, max: 5 }, edge: { min: 1, max: 6 },
58
- },
59
- sprintMetersPerHit: 2,
60
- effects: [{ type: 'flag', category: 'capability', property: 'low-light', value: 1 }],
61
- page: 'p.66',
62
- },
63
- {
64
- key: 'troll', name: 'Troll',
65
- description: 'Armoured at birth, longer in the arm than anything else on the street, and charged double for everything.',
66
- attributes: {
67
- body: { min: 5, max: 10 }, agility: { min: 1, max: 5 }, reaction: { min: 1, max: 6 },
68
- strength: { min: 5, max: 10 }, willpower: { min: 1, max: 6 }, logic: { min: 1, max: 5 },
69
- intuition: { min: 1, max: 5 }, charisma: { min: 1, max: 4 }, edge: { min: 1, max: 6 },
70
- },
71
- sprintMetersPerHit: 1,
72
- lifestyleCostMult: 2,
73
- effects: [
74
- { type: 'flag', category: 'capability', property: 'thermographic', value: 1 },
75
- { type: 'attribute', category: 'attributes', property: 'reach', value: 1 },
76
- { type: 'attribute', category: 'attributes', property: 'armor-bonus', value: 1 },
77
- ],
78
- page: 'p.66',
79
- },
80
- ];
81
- /** Keyed lookup, the shape every other source file here exposes. */
82
- export const METATYPES_BY_KEY = Object.fromEntries(METATYPES.map(m => [m.key, m]));
83
- export function getMetatype(key) {
84
- return METATYPES_BY_KEY[key];
85
- }
3
+ // THE ROWS ARE NOT HERE. The five metatypes are catalog rows of kind
4
+ // 'metatype' on maka-cli.com; utilities/catalog.ts's metatypeFor() and
5
+ // catalogMetatypes() rebuild IMetatype from a row.
86
6
  //# sourceMappingURL=metatypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metatypes.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/metatypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metatypes.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/metatypes.ts"],"names":[],"mappings":"AAoDA,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,qEAAqE;AACrE,uEAAuE;AACvE,mDAAmD"}
@@ -261,7 +261,7 @@ export interface ICombatAttributes {
261
261
  aspect?: string;
262
262
  /**
263
263
  * The spells a magician/mystic adept CHOSE at creation (SR5 p.300, up to
264
- * Magic x 2). Keys into spells.ts's SPELL_CATALOG. ABSENT means "knows
264
+ * Magic x 2). Keys into the catalog's spell rows. ABSENT means "knows
265
265
  * every spell", the pre-selection behaviour -- so an existing save with
266
266
  * no spellbook keeps casting anything, and only a chargen that sends a
267
267
  * list is narrowed to it. An empty list would mean a magician who chose
@@ -270,7 +270,7 @@ export interface ICombatAttributes {
270
270
  knownSpells?: string[];
271
271
  /**
272
272
  * The adept powers CHOSEN at creation (SR5 p.308-310): key -> level, keys
273
- * into adept-powers.ts's ADEPT_POWER_CATALOG, total cost within
273
+ * into the catalog's adept-power rows, total cost within
274
274
  * effectivePowerPoints. ABSENT means the COMPRESSED model -- Power Points
275
275
  * grant floor(pp/2) on every meat-plane pool, the pre-selection behaviour
276
276
  * every existing adept keeps. Present means the powers themselves are the
@@ -862,7 +862,7 @@ export declare class Player extends AbstractPlayer {
862
862
  essence: number;
863
863
  baseMagic: number;
864
864
  baseResonance: number;
865
- /** Installed 'ware, by catalog key (see AUGMENTATIONS). */
865
+ /** Installed 'ware, by catalog key (kind 'augmentation'). */
866
866
  augmentations: Set<string>;
867
867
  /**
868
868
  * What GRADE each installed piece was cut at (see WARE_GRADES,
@@ -1030,7 +1030,7 @@ export declare class Player extends AbstractPlayer {
1030
1030
  * and only the chrome lane can answer it.
1031
1031
  */
1032
1032
  augBonus(kind: AugBonusKind): number;
1033
- /** Installed qualities, by catalog key (see QUALITIES). */
1033
+ /** Installed qualities, by catalog key (kind 'quality'). */
1034
1034
  qualities: Set<string>;
1035
1035
  /**
1036
1036
  * IS THIS SKILL OR ATTRIBUTE FORBIDDEN OUTRIGHT to this character?
@@ -1820,7 +1820,7 @@ export declare class Player extends AbstractPlayer {
1820
1820
  /** Static Veil: +2 to matrix defense while sustained. */
1821
1821
  get formDefenseBonus(): number;
1822
1822
  /** The Force each sustained spell was cast at (cast.ts records it) -- Focused Concentration reads it. */
1823
- sustainedForces: Map<"armor" | "reflexes" | "invisibility", number>;
1823
+ sustainedForces: Map<"armor" | "invisibility" | "reflexes", number>;
1824
1824
  noteSustainedForce(kind: 'armor' | 'invisibility' | 'reflexes', force: number): void;
1825
1825
  /** GREMLINS (p.81): the 1s a glitch needs, one fewer per rating, on external equipment -- the deck. */
1826
1826
  get deckGremlins(): number;
@@ -1,17 +1,13 @@
1
1
  import { getSoft, getProgram } from '../utilities/programs.js';
2
2
  import { GEAR_LANES, CHROME_LANES, QUALITY_LANES, ART_LANES, ADEPT_LANES, scaleOf } from '../utilities/effects.js';
3
- import { catalogRowFor } from '../utilities/catalog.js';
3
+ import { catalogRowFor, spellFor, augFor, adeptPowerFor, metamagicFor } from '../utilities/catalog.js';
4
4
  import { getQuality, resolveQualityKey } from '../qualities.js';
5
- import { ADEPT_POWERS } from '../adept-powers.js';
6
5
  import { skillsInGroup } from '../skill-groups.js';
7
- import { spellFor } from '../utilities/catalog.js';
8
- import { METAMAGICS_BY_KEY } from '../commands/initiate.js';
9
6
  import { isAspectKey } from '../aspects.js';
10
7
  import { hint } from '../utilities/hints.js';
11
8
  import { Category } from '../types/shared/item-enum.js';
12
9
  import { Logger } from '../utilities/logger.js';
13
10
  import { CALL_ICON, CALL_COLOR } from '../utilities/comm-style.js';
14
- import { getAug } from '../augmentations.js';
15
11
  // The Physical limit already lives here (subduing, p.195) -- imported
16
12
  // rather than re-derived so meat combat and the grapple cannot drift
17
13
  // into two different formulas for the same canon number.
@@ -1224,7 +1220,7 @@ export class Player extends AbstractPlayer {
1224
1220
  // `magic`/`resonance` above stay the EFFECTIVE values every pool reads.
1225
1221
  baseMagic = 0;
1226
1222
  baseResonance = 0;
1227
- /** Installed 'ware, by catalog key (see AUGMENTATIONS). */
1223
+ /** Installed 'ware, by catalog key (kind 'augmentation'). */
1228
1224
  augmentations = new Set();
1229
1225
  /**
1230
1226
  * What GRADE each installed piece was cut at (see WARE_GRADES,
@@ -1250,7 +1246,7 @@ export class Player extends AbstractPlayer {
1250
1246
  */
1251
1247
  implantWeapon() {
1252
1248
  for (const key of this.augmentations) {
1253
- const w = getAug(key)?.implantWeapon;
1249
+ const w = augFor(key)?.implantWeapon;
1254
1250
  if (!w)
1255
1251
  continue;
1256
1252
  // A shock hand out of charges is a hand (p.458).
@@ -1277,7 +1273,7 @@ export class Player extends AbstractPlayer {
1277
1273
  /** Back to full -- a rest, or the moment the chrome goes in. */
1278
1274
  refillImplantCharges() {
1279
1275
  for (const key of this.augmentations) {
1280
- const w = getAug(key)?.implantWeapon;
1276
+ const w = augFor(key)?.implantWeapon;
1281
1277
  if (w?.charges !== undefined) {
1282
1278
  this.implantCharges = w.charges;
1283
1279
  return;
@@ -1310,7 +1306,7 @@ export class Player extends AbstractPlayer {
1310
1306
  // A HOUSING TAKES THE DECK YOU BROUGHT (Chrome Flesh p.222). Nothing
1311
1307
  // is granted -- the book charges 5,000 PLUS the deck, so this moves
1312
1308
  // the one you own inside your skull and it stops being liftable.
1313
- if (getAug(aug.key)?.implantsCarriedDeck)
1309
+ if (augFor(aug.key)?.implantsCarriedDeck)
1314
1310
  this.getAnyCyberdeck()?.implantIntoBody();
1315
1311
  }
1316
1312
  // ================= THE EFFECTS LANE (one resolver) =================
@@ -1393,7 +1389,7 @@ export class Player extends AbstractPlayer {
1393
1389
  // here, once, so every reader sees the same surviving set -- rather
1394
1390
  // than in a getter, where only that getter would have been right.
1395
1391
  for (const key of this.chromeThatCounts()) {
1396
- const a = getAug(key);
1392
+ const a = augFor(key);
1397
1393
  if (a?.effects)
1398
1394
  take(a.effects, 'installed', 'installed', undefined, 'chrome', key);
1399
1395
  }
@@ -1406,14 +1402,14 @@ export class Player extends AbstractPlayer {
1406
1402
  for (const [key, level] of Object.entries(this.adeptPowers ?? {})) {
1407
1403
  if (level <= 0)
1408
1404
  continue;
1409
- const power = ADEPT_POWERS[key];
1405
+ const power = adeptPowerFor(key);
1410
1406
  if (power?.effects)
1411
1407
  take(power.effects, 'innate', 'innate', level, 'adept', key);
1412
1408
  }
1413
1409
  // ---- The INITIATE lane. A metamagic applies from the moment it is
1414
1410
  // learned, and 'grade' is what Centering multiplies by.
1415
1411
  for (const key of this.metamagics) {
1416
- const m = METAMAGICS_BY_KEY[key];
1412
+ const m = metamagicFor(key);
1417
1413
  if (m?.effects)
1418
1414
  take(m.effects, 'initiated', 'initiated', this.initiationGrade, 'initiate', key);
1419
1415
  }
@@ -1648,7 +1644,7 @@ export class Player extends AbstractPlayer {
1648
1644
  // (outfitArchetype). Every entry in the catalog has a real mechanical
1649
1645
  // hook; the ones that read as flat pool nudges all tap through
1650
1646
  // qualityBonus below, the same single-switch pattern as augBonus.
1651
- /** Installed qualities, by catalog key (see QUALITIES). */
1647
+ /** Installed qualities, by catalog key (kind 'quality'). */
1652
1648
  qualities = new Set();
1653
1649
  /**
1654
1650
  * IS THIS SKILL OR ATTRIBUTE FORBIDDEN OUTRIGHT to this character?
@@ -2938,7 +2934,7 @@ export class Player extends AbstractPlayer {
2938
2934
  // this same punch independently, and both read implantWeapon.
2939
2935
  const implant = this.implantWeapon();
2940
2936
  if (implant) {
2941
- const aug = [...this.augmentations].map(k => getAug(k)).find(a => a?.implantWeapon);
2937
+ const aug = [...this.augmentations].map(k => augFor(k)).find(a => a?.implantWeapon);
2942
2938
  return {
2943
2939
  name: aug?.name?.toLowerCase() ?? 'implanted blades',
2944
2940
  damage: implant.dv + (implant.dvAttribute === 'strength' ? this.strength : 0),