@maka/maka-cli 5.122.0 → 5.123.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 (119) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +12 -8
  3. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.d.ts +15 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js +12 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +10 -0
  8. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +40 -14
  9. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +33 -10
  11. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +155 -72
  12. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +15 -6
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +33 -33
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js +5 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +6 -6
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +4 -4
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/hop.js +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/hop.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +20 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +9 -0
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js +7 -3
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +3 -3
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +3 -3
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +10 -10
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +24 -0
  49. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +95 -0
  50. package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +45 -1
  52. package/bundle/typescript/src/commands/game/sideQuest/game.js +119 -8
  53. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/metatypes.d.ts +53 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js +86 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/metatypes.js.map +1 -0
  57. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +8 -2
  58. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +215 -18
  60. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +548 -117
  61. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  62. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +2 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +3 -2
  64. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +96 -4
  66. package/bundle/typescript/src/commands/game/sideQuest/qualities.js +290 -11
  67. package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/skill-groups.d.ts +11 -1
  69. package/bundle/typescript/src/commands/game/sideQuest/skill-groups.js +13 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/skill-groups.js.map +1 -1
  71. package/bundle/typescript/src/commands/game/sideQuest/skills.d.ts +17 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/skills.js +23 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/skills.js.map +1 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/spells.d.ts +76 -3
  75. package/bundle/typescript/src/commands/game/sideQuest/spells.js +48 -21
  76. package/bundle/typescript/src/commands/game/sideQuest/spells.js.map +1 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +8 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +90 -82
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +277 -10
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +121 -2
  82. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +342 -18
  83. package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
  84. package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.d.ts +65 -2
  85. package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js +74 -7
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js.map +1 -1
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +1 -1
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/effects.d.ts +248 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/utilities/effects.js +38 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/utilities/effects.js.map +1 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js +1 -2
  93. package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js.map +1 -1
  94. package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js +1 -2
  95. package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js.map +1 -1
  96. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +5 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  98. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +5 -1
  99. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  100. package/bundle/typescript/src/commands/game/sideQuest/utilities/pregen-worksheet.js +22 -12
  101. package/bundle/typescript/src/commands/game/sideQuest/utilities/pregen-worksheet.js.map +1 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +1 -2
  103. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.d.ts +1 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js +20 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +1 -1
  107. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +31 -0
  108. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  109. package/bundle/typescript/src/commands/login.js +19 -1
  110. package/bundle/typescript/src/commands/login.js.map +1 -1
  111. package/bundle/typescript/src/commands/logout.js +16 -1
  112. package/bundle/typescript/src/commands/logout.js.map +1 -1
  113. package/bundle/typescript/src/tools/guarded-file/guarded-file.class.d.ts +59 -0
  114. package/bundle/typescript/src/tools/guarded-file/guarded-file.class.js +120 -0
  115. package/bundle/typescript/src/tools/guarded-file/guarded-file.class.js.map +1 -0
  116. package/bundle/typescript/src/tools/mpi/mpi.class.d.ts +16 -0
  117. package/bundle/typescript/src/tools/mpi/mpi.class.js +25 -7
  118. package/bundle/typescript/src/tools/mpi/mpi.class.js.map +1 -1
  119. package/package.json +1 -1
@@ -13,6 +13,18 @@
13
13
  * real hook and says so in its comment. Karma values are RAW (p.73-74
14
14
  * summary tables) throughout.
15
15
  */
16
+ import type { ICatalogEffect, ICatalogChoice } from './utilities/effects.js';
17
+ /**
18
+ * A pick a quality requires -- THE SHARED ONE, re-exported under the name
19
+ * this file and the web already use.
20
+ *
21
+ * It moved to utilities/effects.ts on 2026-09-04: a choice is not a
22
+ * quality's idea. A Hardwire is an AUGMENTATION that gives +2 to a
23
+ * chosen skill and asks exactly the same question, and a declaration
24
+ * that lives on IQuality means the picker gets rebuilt for chrome, then
25
+ * again for spells. See ICatalogChoice for the full note.
26
+ */
27
+ export type IQualityChoice = ICatalogChoice;
16
28
  export interface IQuality {
17
29
  key: string;
18
30
  name: string;
@@ -61,6 +73,87 @@ export interface IQuality {
61
73
  * the pick the same way.
62
74
  */
63
75
  requiresQuality?: string;
76
+ /**
77
+ * WHAT THE ENGINE WOULD NEED before this quality does anything
78
+ * (user, 2026-09-04: "tag the ones that have no game engine
79
+ * mechanic, so we can focus on what would work today").
80
+ *
81
+ * ABSENT MEANS IT WORKS TODAY -- either it declares `effects` that a
82
+ * pool reads, or it has bespoke code of its own. Present means the
83
+ * quality is currently sold for karma and delivers nothing, and the
84
+ * string names the missing seat rather than just flagging it, so the
85
+ * list doubles as the backlog. Distinct from `retired`, which is
86
+ * about a quality nobody may BUY any more; an inert quality is on
87
+ * sale and honest about being unfinished.
88
+ *
89
+ * NOT PLAYER-FACING. THE PRESENCE OF THIS FIELD IS; THE STRING IS NOT.
90
+ * It is written for whoever will build the missing seat -- "no craving
91
+ * clock and no withdrawal state", "specializations are not modelled" --
92
+ * and a player reading that learns nothing they can act on. A surface
93
+ * warning a player off an inert quality should say so in its own
94
+ * words and use `name` and `effect`, which ARE written for them.
95
+ *
96
+ * Flagged because it nearly went the other way: the web was about to
97
+ * render this string verbatim under each quality in the picker
98
+ * (2026-09-04). Two audiences, one field, and the engineering half is
99
+ * the one that would have shipped.
100
+ */
101
+ inert?: string;
102
+ /**
103
+ * WHICH KIND OF MECHANIC THIS IS (user, 2026-09-04: "do a pass on
104
+ * all qualities, and put them into like-categories").
105
+ *
106
+ * Required, so a quality cannot be added without someone deciding
107
+ * what shape its rule has. The families are about the MECHANIC, not
108
+ * about whether this engine runs it yet -- which is the point: a
109
+ * `pool` quality carrying no `effects` is a visible gap, where the
110
+ * same quality filed as "narrative" would be a gap nobody could see.
111
+ *
112
+ * 'pool' flat dice on something the engine already rolls
113
+ * 'attribute' moves a stored attribute, once, at install
114
+ * 'ceiling' moves a maximum -- what you MAY buy, not what you have
115
+ * 'limit' moves an Inherent limit (Physical/Mental/Social)
116
+ * 'substitution' a different attribute or skill stands in on a named test
117
+ * 'threshold' changes a threshold, or what counts as a hit or a glitch
118
+ * 'engine-rule' has its own bespoke implementation, not expressible as dice
119
+ * 'condition' needs a persistent state this engine does not keep
120
+ * 'narrative' canon gives it no dice at all -- fiction and GM adjudication
121
+ */
122
+ family: 'pool' | 'attribute' | 'ceiling' | 'limit' | 'substitution' | 'threshold' | 'engine-rule' | 'condition' | 'narrative';
123
+ /**
124
+ * The pick this quality cannot work without (see IQualityChoice).
125
+ * A quality carrying this one is not finished at purchase: chargen
126
+ * must ask, and the answer must be stored, or it does nothing.
127
+ */
128
+ choice?: IQualityChoice;
129
+ /**
130
+ * A quality that cannot be held alongside this one. Canon states the
131
+ * Lucky / Exceptional Attribute pair outright (p.65-66: "either ...
132
+ * not both"), because both spend the same idea on the same sheet.
133
+ */
134
+ excludesQuality?: string;
135
+ /**
136
+ * WHAT IT DOES, as data (2026-09-04, "put real stats into them").
137
+ *
138
+ * The same vocabulary gear and chrome already speak, so a quality
139
+ * that adds +2 to a pool declares it exactly the way a smartlink
140
+ * does, and the catalog can print a quality's mechanics instead of
141
+ * only its prose. Player.qualityBonus reads these, and a rated
142
+ * quality multiplies by the rating held when the effect says
143
+ * `scaleBy: 'rating'`.
144
+ *
145
+ * ABSENT IS A REAL ANSWER, and the common one. Most of SR5's
146
+ * qualities do not resolve to a flat pool modifier -- Home Ground
147
+ * picks a domain, Indomitable picks a limit, Guts resists fear,
148
+ * Sensitive System doubles Essence loss -- and several are already
149
+ * implemented as their own rule rather than as dice (First
150
+ * Impression is consumed once per job, the SINner tax cuts a payout,
151
+ * Gremlins changes what counts as a glitch). Those carry NO entry on
152
+ * purpose: an effect nothing reads is a stat block that lies, and an
153
+ * effect duplicating a rule implemented elsewhere would double it.
154
+ * `effect` above stays the human sentence in every case.
155
+ */
156
+ effects?: ICatalogEffect[];
64
157
  }
65
158
  /** Everyone starts character creation with 25 karma (SR5e p.71). */
66
159
  export declare const CREATION_KARMA = 25;
@@ -71,14 +164,13 @@ export declare const QUALITIES: IQuality[];
71
164
  * here for the day its seat exists.
72
165
  */
73
166
  export declare const RETIRED_QUALITIES: IQuality[];
74
- /**
75
- * A saved or offered key, resolved: the old fixed "<key>-1" entries
76
- * (every rated quality shipped as Rating 1 only) read as key + rating 1.
77
- */
78
167
  export declare function resolveQualityKey(key: string): {
79
168
  key: string;
80
169
  rating: number;
170
+ pick?: string;
81
171
  };
172
+ /** Every legacy slug that resolves to a key plus a pick, for tests and tooling. */
173
+ export declare const LEGACY_CHOICE_SLUGS: string[];
82
174
  export declare function getQuality(key?: string): IQuality | undefined;
83
175
  /** What a quality costs (or refunds) at the rating given: per-rating for rated entries. */
84
176
  export declare function qualityKarma(q: IQuality, rating?: number): number;