@maka/maka-cli 5.5.0 → 5.7.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 (212) hide show
  1. package/bundle/typescript/package.json +2 -2
  2. package/bundle/typescript/src/commands/_index.d.ts +4 -0
  3. package/bundle/typescript/src/commands/_index.js +4 -0
  4. package/bundle/typescript/src/commands/_index.js.map +1 -1
  5. package/bundle/typescript/src/commands/debug.js +1 -7
  6. package/bundle/typescript/src/commands/debug.js.map +1 -1
  7. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +17 -1
  8. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js.map +1 -1
  9. package/bundle/typescript/src/commands/env/_index.d.ts +3 -0
  10. package/bundle/typescript/src/commands/env/_index.js +4 -0
  11. package/bundle/typescript/src/commands/env/_index.js.map +1 -0
  12. package/bundle/typescript/src/commands/env/env.command.d.ts +3 -0
  13. package/bundle/typescript/src/commands/env/env.command.js +22 -0
  14. package/bundle/typescript/src/commands/env/env.command.js.map +1 -0
  15. package/bundle/typescript/src/commands/env/get.sub.cmd.d.ts +1 -0
  16. package/bundle/typescript/src/commands/env/get.sub.cmd.js +46 -0
  17. package/bundle/typescript/src/commands/env/get.sub.cmd.js.map +1 -0
  18. package/bundle/typescript/src/commands/env/prompt-for-env.d.ts +10 -0
  19. package/bundle/typescript/src/commands/env/prompt-for-env.js +27 -0
  20. package/bundle/typescript/src/commands/env/prompt-for-env.js.map +1 -0
  21. package/bundle/typescript/src/commands/env/set.sub.cmd.d.ts +1 -0
  22. package/bundle/typescript/src/commands/env/set.sub.cmd.js +59 -0
  23. package/bundle/typescript/src/commands/env/set.sub.cmd.js.map +1 -0
  24. package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +16 -0
  25. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +79 -0
  26. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +31 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +125 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +17 -7
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +113 -15
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +37 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +193 -0
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +3 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +10 -3
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +3 -2
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +12 -4
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js +7 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +1 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +16 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +97 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -0
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +21 -10
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +41 -27
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +12 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +63 -7
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +35 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +277 -44
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +13 -0
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +37 -0
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -0
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.d.ts +14 -0
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js +15 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js.map +1 -0
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +7 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.d.ts +14 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js +15 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js.map +1 -0
  70. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +10 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -1
  72. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +3 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +101 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +4 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +15 -11
  78. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +3 -3
  80. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +58 -2
  82. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
  83. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +26 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +125 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/commands/install.d.ts +21 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +125 -0
  88. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -0
  89. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.d.ts +16 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +62 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +16 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +76 -0
  94. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +4 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
  97. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.d.ts +13 -0
  98. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js +39 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js.map +1 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +5 -1
  101. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +5 -2
  103. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.d.ts +21 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +121 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +60 -12
  108. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +27 -10
  110. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
  111. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +6 -2
  112. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  113. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.d.ts +17 -0
  114. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js +125 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +1 -0
  116. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +36 -3
  117. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  118. package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +9 -1
  119. package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -1
  120. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +27 -4
  121. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
  122. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +1 -1
  123. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
  124. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +8 -0
  125. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  126. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.d.ts +14 -0
  127. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js +67 -0
  128. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js.map +1 -0
  129. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +7 -0
  130. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  131. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +29 -0
  132. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +118 -11
  133. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  134. package/bundle/typescript/src/commands/game/sideQuest/commands/work.d.ts +15 -0
  135. package/bundle/typescript/src/commands/game/sideQuest/commands/work.js +68 -0
  136. package/bundle/typescript/src/commands/game/sideQuest/commands/work.js.map +1 -0
  137. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
  138. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
  139. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +1 -1
  140. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +131 -4
  141. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  142. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +6 -2
  143. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +10 -6
  144. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  145. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +115 -0
  146. package/bundle/typescript/src/commands/game/sideQuest/game.js +464 -25
  147. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  148. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +28 -0
  149. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +111 -0
  150. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  151. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +70 -7
  152. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  153. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +109 -4
  154. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +423 -39
  155. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  156. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +6 -6
  157. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +38 -14
  158. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  159. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +9 -0
  160. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +41 -8
  161. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  162. package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +44 -0
  163. package/bundle/typescript/src/commands/game/sideQuest/qualities.js +155 -0
  164. package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -0
  165. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +274 -5
  166. package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
  167. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +17 -0
  168. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +2 -0
  169. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +4 -0
  170. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
  171. package/bundle/typescript/src/commands/game/sideQuest/ui.js +50 -3
  172. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  173. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +13 -6
  174. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +25 -14
  175. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -1
  176. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +100 -10
  177. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  178. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +56 -0
  179. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +144 -0
  180. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -0
  181. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +10 -0
  182. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +16 -0
  183. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -0
  184. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +21 -0
  185. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +84 -0
  186. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  187. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.d.ts +17 -0
  188. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js +23 -0
  189. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js.map +1 -0
  190. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +51 -15
  191. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  192. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +27 -1
  193. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js.map +1 -1
  194. package/bundle/typescript/src/commands/run/run.command.js +1 -7
  195. package/bundle/typescript/src/commands/run/run.command.js.map +1 -1
  196. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js +1 -6
  197. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +1 -1
  198. package/bundle/typescript/src/generators/config.js +11 -10
  199. package/bundle/typescript/src/generators/config.js.map +1 -1
  200. package/bundle/typescript/src/templates/meteor/config/pm2.config.js +3 -3
  201. package/bundle/typescript/src/templates/meteor/project/gitignore +2 -1
  202. package/bundle/typescript/src/tool.d.ts +2 -0
  203. package/bundle/typescript/src/tool.js +3 -0
  204. package/bundle/typescript/src/tool.js.map +1 -1
  205. package/bundle/typescript/src/tools/aws/aws.class.js +6 -4
  206. package/bundle/typescript/src/tools/aws/aws.class.js.map +1 -1
  207. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.d.ts +24 -0
  208. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js +66 -0
  209. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js.map +1 -0
  210. package/bundle/typescript/src/tools/ssh/ssh.class.js +1 -1
  211. package/bundle/typescript/src/tools/ssh/ssh.class.js.map +1 -1
  212. package/package.json +2 -2
@@ -5,16 +5,49 @@ import { fuzzyPickName } from '../utilities/fuzzy-match.js';
5
5
  import { describeFledTarget } from '../utilities/pursuit.js';
6
6
  import { crossPlaneRefusal } from '../utilities/planes.js';
7
7
  const SPELLS = {
8
- // Direct combat magic: resisted by Body ALONE -- armor is useless against
9
- // it, which is its whole niche next to a gun (and why its drain is the
10
- // highest).
11
- manabolt: { drain: 3, power: 4 },
12
- // Magical healing: reusable where a medkit is consumed, but every cast
13
- // costs drain -- healing yourself hurts a little.
14
- heal: { drain: 2 },
15
- // Sustained mystic armor: extra soak dice for as long as it's held, at
16
- // -2 dice to everything else while sustaining. Cast again to release.
17
- armor: { drain: 2 },
8
+ // The direct trio (RAW p.283-284, drain F-3): mana spells slide past
9
+ // armor AND body to grip the mind (Willpower resists); powerbolt is
10
+ // the physical twin (Body resists, still no armor); stunbolt is the
11
+ // mercy setting -- same reach, knockout instead of kill. Damage base
12
+ // = Force - 2.
13
+ manabolt: { drainOffset: -3, soak: 'willpower' },
14
+ stunbolt: { drainOffset: -3, soak: 'willpower', stun: true },
15
+ powerbolt: { drainOffset: -3, soak: 'body' },
16
+ // Indirect elemental (p.283): thrown like a gun, soaked like one --
17
+ // full Body + armor minus AP floor(F/3) -- but damage base = FULL
18
+ // Force, and the drain is the worst (RAW F-1, softened to F-2).
19
+ fireball: { drainOffset: -2, soak: 'armor' },
20
+ // Magical healing (RAW p.288, drain F-4): hits restore boxes, capped
21
+ // at the Force -- a cheap low-Force heal can only knit so much.
22
+ heal: { drainOffset: -4 },
23
+ // Sustained mystic armor: +ceil(F/3) + focus soak while held, -2 dice
24
+ // to everything else. Cast again to release. (RAW F-2, softened.)
25
+ armor: { drainOffset: -4 },
26
+ // Sustained utility (RAW p.288/p.291, engine-scaled): invisibility
27
+ // bends light (+3 on sneak contests), increase reflexes runs the
28
+ // nerves hot (+2 initiative). Effects are flat; Force only prices the
29
+ // drain -- cast them low and cheap. (RAW F-2/F-1, softened.)
30
+ invisibility: { drainOffset: -4 },
31
+ reflexes: { drainOffset: -3 },
32
+ };
33
+ /** Per-combat-spell narration: the moment of the cast and the kill line. */
34
+ const COMBAT_SPELL_FLAVOR = {
35
+ manabolt: {
36
+ act: 'hurled a manabolt at',
37
+ fall: 'drops where they stand, eyes empty -- the manabolt left no mark at all.',
38
+ },
39
+ stunbolt: {
40
+ act: 'snapped a stunbolt at',
41
+ fall: 'folds like a cut puppet -- breathing, dreaming, done.',
42
+ },
43
+ powerbolt: {
44
+ act: 'drove a powerbolt into',
45
+ fall: 'is thrown back off their feet and does not get up.',
46
+ },
47
+ fireball: {
48
+ act: 'hurled a fireball at',
49
+ fall: 'goes down burning -- what the flame started, the fall finishes.',
50
+ },
18
51
  };
19
52
  /**
20
53
  * Gear-driven spellcasting (see Player's magic section): you know a spell
@@ -26,15 +59,96 @@ const SPELLS = {
26
59
  */
27
60
  export class CastCommand extends BypassCommand {
28
61
  static verb = 'cast';
29
- static description = 'Cast a spell you know: "cast manabolt at <target>", "cast heal [on <ally>]", "cast armor [on <ally>]" (support spells default to yourself; touch range). Every cast costs YOU drain. Bare "cast" attempts to bypass a warded barrier (fatal on failure).';
62
+ static description = 'Cast a spell you know, at a FORCE you choose: "cast manabolt 8 at <target>" (default Force = your Magic; drain scales with it, and OVERCASTING past your talent makes the drain PHYSICAL). "spells" lists what you know. Bare "cast" tries to unweave a warded barrier.';
30
63
  bypassType = 'spell';
31
64
  noPuzzleMessage = "There's nothing here to cast at.";
65
+ /** Backlash drain when a ward-bypass fails -- resisted with Willpower,
66
+ * like any drain. The nastiest drain in the game: forcing a hostile
67
+ * ward is harder on the caster than any spell of their own. */
68
+ static BACKLASH_DRAIN = 4;
69
+ /**
70
+ * The ward-bypass outcome is a real SPELLCASTING test now, not the
71
+ * legacy coin flip (a real session died to a 50/50 that ignored Magic 6
72
+ * + spellcasting entirely): the full casting pool -- Magic +
73
+ * spellcasting (or the book-caster's base), best focus, wounds,
74
+ * sustaining -- needs 2 hits to unweave the barrier, same threshold as
75
+ * pick/hack/bluff.
76
+ */
77
+ async determineOutcome() {
78
+ const pool = Math.max(1, this.actor.getMagicPool());
79
+ const roll = rollPool(pool);
80
+ if (this.actor === this.scene.getPlayer()) {
81
+ this.logger.log(`Spellwork: ${formatRoll(roll)} (2+ to unweave)`);
82
+ }
83
+ return roll.hits >= 2;
84
+ }
85
+ /**
86
+ * A failed unweaving isn't quiet OR free: the ward's backlash is drain
87
+ * (BACKLASH_DRAIN, resisted with Willpower like any drain), landing on
88
+ * the real stun track with overflow into physical. Enough of it still
89
+ * knocks out or kills -- but through dice and the condition monitors,
90
+ * the same death any spell drain earns, not by fiat.
91
+ */
92
+ async onBypassFailure() {
93
+ const actor = this.actor;
94
+ // Centering (metamagic, p.325): +grade dice on every drain resist --
95
+ // the chant that keeps the backlash outside the skull.
96
+ const resist = rollPool(actor.willpower + (actor.hasMetamagic('centering') ? actor.initiationGrade : 0));
97
+ const taken = Math.max(0, CastCommand.BACKLASH_DRAIN - resist.hits);
98
+ const lines = [
99
+ ` The barrier's backlash arcs up your own weave:`,
100
+ ` Backlash (${CastCommand.BACKLASH_DRAIN}): resist ${formatRoll(resist)}`,
101
+ ];
102
+ if (taken === 0) {
103
+ lines.push(` You ground it out through clenched teeth -- shaken, but standing.`);
104
+ return lines;
105
+ }
106
+ const { stun, overflow } = actor.takeStun(taken);
107
+ this.logger.write(`${actor.name} took ${taken} ward backlash (stun ${actor.stunTaken}/${actor.maxStunBoxes}, overflow ${overflow}).`);
108
+ lines.push(` It burns through you -- ${stun} stun: ${actor.stunSummary()}`);
109
+ if (overflow > 0) {
110
+ lines.push(` More than your mind can hold -- ${overflow} box${overflow === 1 ? '' : 'es'} spill into your body: ${actor.conditionSummary()}`);
111
+ }
112
+ // Backlash can still finish you -- through the tracks, same flows as
113
+ // spell drain (cast.ts drainCollapse) and the stim crash (use.ts).
114
+ if (actor.isIncapacitated()) {
115
+ const isPlayer = actor === this.scene.getPlayer();
116
+ const dead = actor.isDown();
117
+ this.scene.addWorldEvent(dead
118
+ ? `${actor.name} was killed by a ward's backlash in ${actor.currentLocation.name}.`
119
+ : `${actor.name} was knocked cold by a ward's backlash in ${actor.currentLocation.name}.`);
120
+ if (isPlayer) {
121
+ void this.scene.endGame().then(() => {
122
+ this.logger.logWithColor(dead
123
+ ? `💀 GAME OVER: the ward's backlash burned ${actor.name} out from the inside.`
124
+ : `💀 GAME OVER: ${actor.name} dropped cold at the ward's foot -- the street decides what happens to sleeping runners.`, 'red');
125
+ this.logger.logWithColor(`Press ctrl-c to quit.`, 'red');
126
+ });
127
+ lines.push('', dead
128
+ ? `The weave snaps back through every nerve at once. The last thing you feel is the barrier holding.`
129
+ : `The world grays out -- the ward stands over you, humming, as everything goes dark.`);
130
+ }
131
+ else {
132
+ if (dead)
133
+ this.scene.removeActor(actor.name);
134
+ lines.push('', `${actor.name} drops at the barrier's foot, ${dead ? 'dead before they land' : 'out cold'}.`);
135
+ }
136
+ }
137
+ return lines;
138
+ }
32
139
  async execute(args = []) {
33
140
  // Incantations carry -- casting ends a sneak (see sneak.ts).
34
141
  this.actor.sneaking = false;
35
- const spellName = this.resolveSpellName(args?.[0]);
142
+ // "cast increase reflexes ..." -- the natural phrasing for the spell
143
+ // whose key is 'reflexes'; strip the qualifier before resolution or
144
+ // the whole phrase falls through to the ward-bypass path.
145
+ let words = args ?? [];
146
+ if (words[0]?.toLowerCase() === 'increase' && words[1]?.toLowerCase().startsWith('reflex')) {
147
+ words = words.slice(1);
148
+ }
149
+ const spellName = this.resolveSpellName(words?.[0]);
36
150
  if (spellName) {
37
- return this.castSpell(spellName, args.slice(1));
151
+ return this.castSpell(spellName, words.slice(1));
38
152
  }
39
153
  // Ward-bypass path (BypassCommand). Now that casting is a real, gated
40
154
  // ability, throwing magic at a ward requires the talent or the gear.
@@ -70,13 +184,50 @@ export class CastCommand extends BypassCommand {
70
184
  if (this.actor.plane === 'matrix') {
71
185
  return `Magic doesn't work in here -- the Matrix runs on code, not mana. Jack out first.`;
72
186
  }
187
+ // Mana flows through the LIVING -- a rigger's drone is a machine, and
188
+ // the mage riding it left their magic with their body.
189
+ if (this.actor.plane === 'drone') {
190
+ return `Mana doesn't flow through rotors -- your magic is with your body. "jump" back first.`;
191
+ }
73
192
  if (!this.actor.knowsSpell(spellName)) {
74
193
  return `You don't know "${spellName}" -- you'd need its spell formula, or a grimoire.`;
75
194
  }
195
+ // FORCE (RAW p.281): "cast manabolt 8 at ..." (or "... force 8 ...")
196
+ // sets the dial. DEFAULT is the drain-neutral point (player request):
197
+ // the Force that zeroes the spell's drain formula -- F3 for an F-3
198
+ // spell -- so an unhurried cast costs nothing and every point above
199
+ // it is a choice you pay for. Past your talent (Magic; book-taught
200
+ // mundanes work at 4) is OVERCASTING: the drain lands PHYSICAL.
201
+ // Twice the talent is where mages become smears.
202
+ const spellDef = SPELLS[spellName];
203
+ const safeForce = this.actor.magic > 0 ? this.actor.magic : 4;
204
+ let force = Math.max(1, -(spellDef?.drainOffset ?? -3));
205
+ if (rest[0]?.toLowerCase() === 'force' && /^\d+$/.test(rest[1] ?? '')) {
206
+ force = parseInt(rest[1], 10);
207
+ rest = rest.slice(2);
208
+ }
209
+ else if (/^\d+$/.test(rest[0] ?? '')) {
210
+ force = parseInt(rest[0], 10);
211
+ rest = rest.slice(1);
212
+ }
213
+ if (force < 1) {
214
+ return `Force below 1 isn't a spell, it's a wish.`;
215
+ }
216
+ if (force > safeForce * 2) {
217
+ return `Force ${force} would burn you to ash mid-syllable -- twice your talent (${safeForce * 2}) is the hard ceiling (SR5e p.281).`;
218
+ }
219
+ const overcast = force > safeForce;
76
220
  switch (spellName) {
77
- case 'manabolt': return this.castManabolt(rest);
78
- case 'heal': return this.castHeal(rest);
79
- case 'armor': return this.castArmor(rest);
221
+ case 'manabolt':
222
+ case 'stunbolt':
223
+ case 'powerbolt':
224
+ case 'fireball':
225
+ return this.castCombatSpell(spellName, force, overcast, rest);
226
+ case 'heal': return this.castHeal(force, overcast, rest);
227
+ case 'armor': return this.castArmor(force, overcast, rest);
228
+ case 'invisibility':
229
+ case 'reflexes':
230
+ return this.castSustainedUtility(spellName, force, overcast, rest);
80
231
  default: return `You don't know "${spellName}".`;
81
232
  }
82
233
  }
@@ -123,16 +274,30 @@ export class CastCommand extends BypassCommand {
123
274
  * physical track (enough drain doesn't just put you down, it starts
124
275
  * killing you). Callers check drainCollapse() afterward.
125
276
  */
126
- applyDrain(spell) {
127
- // Willpower resists drain (SR-correct; Body stood in before Willpower
128
- // existed on the sheet). Mages want the mental muscle now.
129
- const resist = rollPool(this.actor.willpower);
130
- const taken = Math.max(0, spell.drain - resist.hits);
131
- const lines = [` Drain (${spell.drain}): resist ${formatRoll(resist)}`];
277
+ applyDrain(spell, force, overcast) {
278
+ // The Force dial prices the cast: drain = F + offset (RAW p.281-282;
279
+ // the book floors drain at 2 -- this table floors it at 0 instead so
280
+ // the DEFAULT Force is a free baseline cast, player request).
281
+ // Willpower resists (plus Centering's grade dice for initiates,
282
+ // p.325) -- and an OVERCAST (Force past your talent) lands its drain
283
+ // PHYSICAL: the body pays what the mind couldn't hold.
284
+ const drainValue = Math.max(0, force + spell.drainOffset);
285
+ if (drainValue === 0) {
286
+ return [` Drain (0): at this Force, the weave costs you nothing.`];
287
+ }
288
+ const resist = rollPool(this.actor.willpower + (this.actor.hasMetamagic('centering') ? this.actor.initiationGrade : 0));
289
+ const taken = Math.max(0, drainValue - resist.hits);
290
+ const lines = [` Drain (${drainValue}${overcast ? ', OVERCAST -- physical' : ''}): resist ${formatRoll(resist)}`];
132
291
  if (taken === 0) {
133
292
  lines.push(` You shake the drain off.`);
134
293
  return lines;
135
294
  }
295
+ if (overcast) {
296
+ this.actor.takeDamage(taken);
297
+ this.logger.write(`${this.actor.name} took ${taken} PHYSICAL drain (${this.actor.damageTaken}/${this.actor.maxConditionBoxes}).`);
298
+ lines.push(` The power tears something on the way through -- ${taken} PHYSICAL: ${this.actor.conditionSummary()}`);
299
+ return lines;
300
+ }
136
301
  const { stun, overflow } = this.actor.takeStun(taken);
137
302
  this.logger.write(`${this.actor.name} took ${taken} drain (stun ${this.actor.stunTaken}/${this.actor.maxStunBoxes}, overflow ${overflow}).`);
138
303
  lines.push(` The drain bites -- ${stun} stun: ${this.actor.stunSummary()}`);
@@ -162,11 +327,17 @@ export class CastCommand extends BypassCommand {
162
327
  }
163
328
  return [];
164
329
  }
165
- async castManabolt(targetArgs) {
330
+ /**
331
+ * The shared combat-spell engine (manabolt/stunbolt/powerbolt/
332
+ * fireball): one exchange flow, parameterized by what SOAKS the hit
333
+ * (SPELLS[key].soak -- the direct/indirect distinction, RAW p.283),
334
+ * whether damage is stun, and the spell's narration.
335
+ */
336
+ async castCombatSpell(spellKey, force, overcast, targetArgs) {
166
337
  if (targetArgs[0]?.toLowerCase() === 'at')
167
338
  targetArgs = targetArgs.slice(1);
168
339
  if (targetArgs.length === 0) {
169
- return 'Cast it at whom? Try: `cast manabolt at <name>`';
340
+ return `Cast it at whom? Try: \`cast ${spellKey} at <name>\``;
170
341
  }
171
342
  // Same fuzzy matching "take" and "attack" use -- punctuation, case,
172
343
  // typos, and partial names all resolve (see utilities/fuzzy-match.ts).
@@ -215,15 +386,16 @@ export class CastCommand extends BypassCommand {
215
386
  if (this.actor.isIncapacitated()) {
216
387
  return `You're down. The fight is over.`;
217
388
  }
218
- this.logger.write(`${this.actor.name}'s manabolt waited out an exchange and now retries.`);
219
- return await this.castManabolt(targetArgs);
389
+ this.logger.write(`${this.actor.name}'s ${spellKey} waited out an exchange and now retries.`);
390
+ return await this.castCombatSpell(spellKey, force, overcast, targetArgs);
220
391
  }
221
392
  finally {
222
393
  this.actor.waitingForLull = false;
223
394
  }
224
395
  }
225
396
  const exchange = new CombatExchange(this.scene, this.logger, this.actor);
226
- const spell = SPELLS.manabolt;
397
+ const spell = SPELLS[spellKey];
398
+ const flavor = COMBAT_SPELL_FLAVOR[spellKey];
227
399
  const report = [];
228
400
  // Movement locks while the exchange resolves, same as attack.ts. The
229
401
  // caster's hands are shaping mana, not clearing leather (no
@@ -231,8 +403,8 @@ export class CastCommand extends BypassCommand {
231
403
  // beginExchange still draws for them.
232
404
  const drawLines = exchange.beginExchange(target, { aggressorDraws: false });
233
405
  try {
234
- this.actor.performAction('casts manabolt at', target.name);
235
- this.scene.addWorldEvent(`${this.actor.name} hurled a manabolt at ${target.name} in ${room.name}.`);
406
+ this.actor.performAction(`casts ${spellKey} at`, target.name);
407
+ this.scene.addWorldEvent(`${this.actor.name} ${flavor.act} ${target.name} in ${room.name}.`);
236
408
  if (drawLines.length > 0) {
237
409
  report.push(...drawLines);
238
410
  await exchange.announce(drawLines);
@@ -250,23 +422,36 @@ export class CastCommand extends BypassCommand {
250
422
  if (defender.isIncapacitated())
251
423
  break;
252
424
  if (striker === this.actor) {
253
- // ---- The bolt: casting pool vs defense, resisted by Body ONLY ----
425
+ // ---- The spell: casting pool vs defense, soaked per its type
426
+ // (direct mana = Willpower; direct physical = Body; indirect
427
+ // elemental = the full soak pool minus AP floor(F/3)). The
428
+ // FORCE dial sets the damage: bolts hit at F-2, the elemental
429
+ // hits at full F for letting armor matter. ----
430
+ const spellAp = spell.soak === 'armor' ? Math.floor(force / 3) : 0;
431
+ const armorEaten = spellAp > 0
432
+ ? Math.min(spellAp, target.plane === 'meat' ? target.getArmorValue() : 0)
433
+ : 0;
434
+ const soakPool = spell.soak === 'willpower' ? target.willpower
435
+ : spell.soak === 'body' ? target.body
436
+ : Math.max(0, target.getSoakPool() - armorEaten);
437
+ const damageBase = spell.soak === 'armor' ? force : Math.max(1, force - 2);
254
438
  const strike = exchange.resolveStrike(this.actor, target, {
255
- label: `with a manabolt, ${this.castingLabel()}`,
439
+ label: `with a Force ${force} ${spellKey}${overcast ? ' (OVERCAST)' : ''}, ${this.castingLabel()}${armorEaten > 0 ? ` (AP -${armorEaten})` : ''}`,
256
440
  // An armed edge boost (see edge.ts) supercharges the bolt.
257
441
  pool: this.actor.getMagicPool() + this.actor.consumeEdgeBoost(),
258
- damageBase: spell.power,
259
- soakPool: target.body,
442
+ damageBase,
443
+ soakPool,
444
+ dealStun: spell.stun,
260
445
  });
261
446
  report.push('', ...strike);
262
447
  await exchange.announce(strike);
263
448
  if (target.isDown()) {
264
449
  report.push(...await exchange.resolveDeath(target, this.actor, {
265
- fallLine: `${target.name} drops where they stand, eyes empty -- the manabolt left no mark at all. Their gear scatters across ${room.name}.`,
450
+ fallLine: `${target.name} ${flavor.fall} Their gear scatters across ${room.name}.`,
266
451
  }));
267
452
  }
268
453
  // Drain comes due the moment the bolt flies, kill or not.
269
- const drain = this.applyDrain(spell);
454
+ const drain = this.applyDrain(spell, force, overcast);
270
455
  report.push('', ...drain);
271
456
  await exchange.announce(drain);
272
457
  const collapse = await this.drainCollapse(exchange);
@@ -310,7 +495,7 @@ export class CastCommand extends BypassCommand {
310
495
  exchange.releaseExchange();
311
496
  }
312
497
  }
313
- async castHeal(rest = []) {
498
+ async castHeal(force, overcast, rest = []) {
314
499
  const { target, error } = this.resolveAllyTarget(rest);
315
500
  if (!target)
316
501
  return error ?? `You don't see them here.`;
@@ -323,25 +508,28 @@ export class CastCommand extends BypassCommand {
323
508
  ? `You're not hurt -- no sense courting drain for nothing.`
324
509
  : `${target.name} isn't hurt -- no sense courting drain for nothing.`;
325
510
  }
511
+ // Force caps the healing (RAW p.288): a cheap low-Force heal can
512
+ // only knit so much.
326
513
  const roll = rollPool(this.actor.getMagicPool());
327
- const healed = target.healDamage(roll.hits);
514
+ const healed = target.healDamage(Math.min(roll.hits, force));
515
+ const capped = roll.hits > force;
328
516
  const spell = SPELLS.heal;
329
517
  this.actor.performAction('casts heal', self ? '' : `on ${target.name}`);
330
518
  this.scene.addWorldEvent(`${this.actor.name} cast a healing spell${self ? '' : ` on ${target.name}`} in ${this.actor.currentLocation.name}.`);
331
519
  const subject = self ? 'Your' : `${target.name}'s`;
332
520
  const lines = [
333
- `${this.actor.name} casts heal${self ? '' : ` on ${target.name}`}, ${this.castingLabel()}:`,
521
+ `${this.actor.name} casts heal at Force ${force}${self ? '' : ` on ${target.name}`}, ${this.castingLabel()}:`,
334
522
  ` Casting: ${formatRoll(roll)}`,
335
523
  healed > 0
336
- ? ` ${subject} wounds knit closed -- ${healed} box${healed === 1 ? '' : 'es'} recovered: ${target.conditionSummary()}`
524
+ ? ` ${subject} wounds knit closed -- ${healed} box${healed === 1 ? '' : 'es'} recovered${capped ? ` (capped by Force ${force})` : ''}: ${target.conditionSummary()}`
337
525
  : ` The mana slips away -- nothing heals.`,
338
526
  // The CASTER pays the drain, whoever the healing went to.
339
- ...this.applyDrain(spell),
527
+ ...this.applyDrain(spell, force, overcast),
340
528
  ];
341
529
  lines.push(...await this.drainCollapse(new CombatExchange(this.scene, this.logger, this.actor)));
342
530
  return this.finishSpell(lines);
343
531
  }
344
- async castArmor(rest = []) {
532
+ async castArmor(force, overcast, rest = []) {
345
533
  const { target, error } = this.resolveAllyTarget(rest);
346
534
  if (!target)
347
535
  return error ?? `You don't see them here.`;
@@ -360,8 +548,10 @@ export class CastCommand extends BypassCommand {
360
548
  if (target.isIncapacitated()) {
361
549
  return `${target.name} is down -- armor won't help now.`;
362
550
  }
551
+ // Force scales the weave (RAW: armor = hits; here ceil(F/3), so the
552
+ // classic Force-6 cast is the familiar +2) plus the focus's quality.
363
553
  const focus = this.actor.getBestFocus();
364
- const bonus = 2 + (focus ? focus.qualityBonus : 0);
554
+ const bonus = Math.ceil(force / 3) + (focus ? focus.qualityBonus : 0);
365
555
  const spell = SPELLS.armor;
366
556
  // The weave taxes its BEARER: they get the soak and carry the -2
367
557
  // sustaining burden. The caster pays only the drain.
@@ -370,10 +560,53 @@ export class CastCommand extends BypassCommand {
370
560
  this.scene.addWorldEvent(`${this.actor.name} wrapped ${self ? 'themselves' : target.name} in a shimmering armor spell.`);
371
561
  this.scene.updateStatus();
372
562
  const lines = [
373
- `${this.actor.name} casts armor${self ? '' : ` on ${target.name}`}, ${this.castingLabel()}:`,
563
+ `${this.actor.name} casts armor at Force ${force}${self ? '' : ` on ${target.name}`}, ${this.castingLabel()}:`,
374
564
  ` The air hardens around ${self ? 'you' : target.name} -- +${bonus} soak dice while sustained, -2 dice to everything else ${self ? 'you do' : 'they do'}.`,
375
565
  ` (Cast armor${self ? '' : ` on ${target.name}`} again to release it.)`,
376
- ...this.applyDrain(spell),
566
+ ...this.applyDrain(spell, force, overcast),
567
+ ];
568
+ lines.push(...await this.drainCollapse(new CombatExchange(this.scene, this.logger, this.actor)));
569
+ return this.finishSpell(lines);
570
+ }
571
+ /**
572
+ * The sustained utility pair (invisibility / increase reflexes), same
573
+ * toggle shape as the armor spell: the BEARER carries the effect and
574
+ * its -2 sustaining burden, the caster pays the drain, and casting at
575
+ * the same bearer again releases it for free.
576
+ */
577
+ async castSustainedUtility(spellKey, force, overcast, rest = []) {
578
+ const { target, error } = this.resolveAllyTarget(rest);
579
+ if (!target)
580
+ return error ?? `You don't see them here.`;
581
+ const self = target === this.actor;
582
+ const flag = spellKey === 'invisibility' ? 'sustainedInvisibility' : 'sustainedReflexes';
583
+ const label = spellKey === 'invisibility' ? 'invisibility' : 'increase reflexes';
584
+ if (target[flag]) {
585
+ target[flag] = false;
586
+ this.scene.updateStatus();
587
+ this.actor.performAction(`releases ${label}`, self ? '' : `on ${target.name}`);
588
+ return this.finishSpell([spellKey === 'invisibility'
589
+ ? `${self ? 'You shimmer back into the world' : `${target.name} shimmers back into the world`} -- the light remembers ${self ? 'you' : 'them'}, and the sustaining burden lifts.`
590
+ : `${self ? 'Your' : `${target.name}'s`} nerves cool back to human speed. The sustaining burden lifts.`]);
591
+ }
592
+ if (target.isIncapacitated()) {
593
+ return `${target.name} is down -- ${label} won't help now.`;
594
+ }
595
+ const spell = SPELLS[spellKey];
596
+ target[flag] = true;
597
+ this.actor.performAction(`casts ${label}`, self ? '' : `on ${target.name}`);
598
+ this.scene.addWorldEvent(spellKey === 'invisibility'
599
+ ? `${this.actor.name} wove an invisibility spell${self ? '' : ` over ${target.name}`}.`
600
+ : `${this.actor.name} cast increase reflexes${self ? '' : ` on ${target.name}`}.`);
601
+ this.scene.updateStatus();
602
+ const effectLine = spellKey === 'invisibility'
603
+ ? ` The light slides around ${self ? 'you' : target.name} like water around a stone -- +3 dice on sneak contests while sustained, -2 dice to everything else ${self ? 'you do' : 'they do'}. Loud acts still announce ${self ? 'you' : 'them'}.`
604
+ : ` ${self ? 'Your' : `${target.name}'s`} nerves run HOT -- +2 initiative while sustained, -2 dice to everything else ${self ? 'you do' : 'they do'}.`;
605
+ const lines = [
606
+ `${this.actor.name} casts ${label} at Force ${force}${self ? '' : ` on ${target.name}`}, ${this.castingLabel()}:`,
607
+ effectLine,
608
+ ` (Cast ${label}${self ? '' : ` on ${target.name}`} again to release it.)`,
609
+ ...this.applyDrain(spell, force, overcast),
377
610
  ];
378
611
  lines.push(...await this.drainCollapse(new CombatExchange(this.scene, this.logger, this.actor)));
379
612
  return this.finishSpell(lines);
@@ -1 +1 @@
1
- {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/cast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/cast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command, ICommand } from './command.js';
2
+ /**
3
+ * The roster: who talks to you, how plugged-in they are, and how deep
4
+ * the relationship runs. Contacts are EARNED (see Game.touchContact) --
5
+ * a first real transaction opens one at Loyalty 1, gigs deepen to 6,
6
+ * patronage alone tops out at 3. Viewable anywhere: it's your own
7
+ * memory, not a service.
8
+ */
9
+ export declare class ContactsCommand extends Command implements ICommand {
10
+ protected static verb: string;
11
+ protected static description: string;
12
+ execute(_args?: string[]): Promise<string>;
13
+ }
@@ -0,0 +1,37 @@
1
+ import { Command } from './command.js';
2
+ /**
3
+ * The roster: who talks to you, how plugged-in they are, and how deep
4
+ * the relationship runs. Contacts are EARNED (see Game.touchContact) --
5
+ * a first real transaction opens one at Loyalty 1, gigs deepen to 6,
6
+ * patronage alone tops out at 3. Viewable anywhere: it's your own
7
+ * memory, not a service.
8
+ */
9
+ export class ContactsCommand extends Command {
10
+ static verb = 'contacts';
11
+ static description = 'Your contact roster: Connection (their reach), Loyalty (your standing), and what deepened it. "ask <contact> about <thing>" puts them to work.';
12
+ async execute(_args = []) {
13
+ const roster = this.game?.contacts;
14
+ if (!this.game?.hasHub) {
15
+ return `Contacts are a home-turf thing -- out here there's just the job and whoever's pointing what at you.`;
16
+ }
17
+ if (!roster || roster.size === 0) {
18
+ return `Nobody owes you their attention yet. Relationships on this street start with TRANSACTIONS -- buy a bowl, fence a score, get stitched, deliver a package. Then "contacts" has names in it.`;
19
+ }
20
+ const lines = [`=== CONTACTS ===`];
21
+ for (const [name, c] of roster) {
22
+ const depth = c.loyalty >= 5 ? 'would take a risk for you'
23
+ : c.loyalty >= 3 ? 'genuinely glad to see you'
24
+ : c.loyalty === 2 ? 'knows your usual'
25
+ : 'knows your name';
26
+ const ledger = [
27
+ c.spent > 0 ? `${c.spent} nuyen through the counter` : '',
28
+ c.gigs > 0 ? `${c.gigs} gig${c.gigs === 1 ? '' : 's'} run` : '',
29
+ ].filter(Boolean).join(', ');
30
+ lines.push(` ${name.padEnd(18)} Connection ${c.connection}, Loyalty ${c.loyalty} -- ${depth}${ledger ? ` (${ledger})` : ''}${c.asked ? ' [network tapped -- refreshes at homecoming]' : ''}`);
31
+ }
32
+ lines.push('');
33
+ lines.push(`"ask <contact> about <thing>" taps their network -- Loyalty rides your roll (SR5e p.387). "ask <contact> about work" gets a gig of theirs (Loyalty 2+; 5+ pays the family rate). Gigs deepen loyalty to 6; money alone stops at 3.`);
34
+ return lines.join('\n');
35
+ }
36
+ }
37
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAChC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,gJAAgJ,CAAC;IAEhL,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvB,OAAO,qGAAqG,CAAC;QAC/G,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,2LAA2L,CAAC;QACrM,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,2BAA2B;gBACxD,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,2BAA2B;oBAC5C,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB;wBACpC,CAAC,CAAC,iBAAiB,CAAC;YAC1B,MAAM,MAAM,GAAG;gBACb,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,4BAA4B,CAAC,CAAC,CAAC,EAAE;gBACzD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;aAChE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC,OAAO,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjM,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oOAAoO,CAAC,CAAC;QACjP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { UseCommand } from './use.js';
2
+ import { Category } from '../types/shared/item-enum.js';
3
+ /**
4
+ * "drink" is use with a barstool: it knows it's about Drink items, so
5
+ * "drink kaf"/"drink beer"/bare "drink" find whatever's in your pack.
6
+ * A drink pours liquid courage -- +1 die on the next social roll (see
7
+ * UseCommand.drink).
8
+ */
9
+ export declare class DrinkCommand extends UseCommand {
10
+ protected static verb: string;
11
+ protected static description: string;
12
+ protected preferredCategory: Category;
13
+ protected verbNoun: string;
14
+ }