@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
@@ -4,28 +4,73 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
4
4
  export class UseCommand extends Command {
5
5
  static verb = 'use';
6
6
  static description = 'Use an item. A Medical item (medkit, stim patch) heals your wounds and is consumed.';
7
+ /** Set by the eat/drink subclasses: what the verb is FOR. Lets "eat
8
+ * noodles" find the Bowl of Laksa -- a real session ordered noodles,
9
+ * got served the bowl, then couldn't eat it because "noodles" isn't
10
+ * the item's exact name. */
11
+ preferredCategory;
12
+ verbNoun = 'use';
7
13
  async execute(args) {
8
14
  return this.use(args);
9
15
  }
16
+ /**
17
+ * Resolution ladder: exact name -> unique substring of a carried item's
18
+ * name ("laksa" -> Bowl of Laksa) -> for eat/drink, whatever food/drink
19
+ * you're actually carrying (exactly one: that's what you meant; several:
20
+ * ask). Menu-speak ("eat noodles") shouldn't lose to item naming.
21
+ */
22
+ resolveItem(itemName) {
23
+ const carried = this.actor.inventory.getAllItems();
24
+ if (itemName) {
25
+ const exact = this.actor.inventory.getItem(itemName);
26
+ if (exact)
27
+ return { item: exact };
28
+ const partial = carried.filter(i => i.name.toLowerCase().includes(itemName));
29
+ if (partial.length === 1)
30
+ return { item: partial[0] };
31
+ if (partial.length > 1) {
32
+ return { error: `Which one -- ${partial.map(i => i.name).join(', ')}?` };
33
+ }
34
+ }
35
+ if (this.preferredCategory) {
36
+ const ofKind = carried.filter(i => i.category === this.preferredCategory);
37
+ if (ofKind.length === 1)
38
+ return { item: ofKind[0] };
39
+ if (ofKind.length > 1) {
40
+ return { error: `You're carrying ${ofKind.map(i => i.name).join(' and ')} -- which?` };
41
+ }
42
+ return { error: itemName ? `No "${itemName}" in your pack -- and nothing else to ${this.verbNoun}, either.` : `Nothing in your pack to ${this.verbNoun}.` };
43
+ }
44
+ return { error: `You don't have the ${itemName} to use.` };
45
+ }
10
46
  use(args) {
11
- const itemName = args.join(' ').toLowerCase();
12
- // Check if the item exists in the player's inventory
13
- if (!this.actor.inventory.hasItem(itemName)) {
14
- this.logger.write(`UseCommand: ${this.actor.name} attempted to use ${itemName}, which is not in their inventory.`);
15
- return `You don't have the ${itemName} to use.`;
47
+ // Using gear is hands-and-mouth work: the pack, the patches, and the
48
+ // noodles are all wherever the BODY is (a jumped-in drone "eating"
49
+ // would chew food streets away from its own rotors).
50
+ if (this.actor.plane !== 'meat') {
51
+ return this.actor.plane === 'drone'
52
+ ? `The ${this.actor.riggedDrone?.name ?? 'drone'} doesn't have a mouth or hands -- your gear is with your body. "jump" back first.`
53
+ : `Your gear is with your body. Come back to it first.`;
16
54
  }
17
- // Retrieve the item from the inventory
18
- const itemToUse = this.actor.inventory.getItem(itemName);
19
- if (!itemToUse) {
20
- this.logger.write(`UseCommand: ${itemName} not retrieved from ${this.actor.name}'s inventory.`);
21
- return `You don't have the ${itemName} to use.`;
55
+ const itemName = args.join(' ').toLowerCase();
56
+ const resolved = this.resolveItem(itemName);
57
+ if (!resolved.item) {
58
+ this.logger.write(`UseCommand: ${this.actor.name} attempted to ${this.verbNoun} "${itemName}" -- ${resolved.error}`);
59
+ return resolved.error ?? `You don't have the ${itemName} to use.`;
22
60
  }
61
+ const itemToUse = resolved.item;
23
62
  if (itemToUse.category === Category.Medical) {
24
63
  return this.applyFirstAid(itemToUse);
25
64
  }
26
65
  if (itemToUse.category === Category.StimPatch) {
27
66
  return this.applyStim(itemToUse);
28
67
  }
68
+ if (itemToUse.category === Category.Food) {
69
+ return this.eat(itemToUse);
70
+ }
71
+ if (itemToUse.category === Category.Drink) {
72
+ return this.drink(itemToUse);
73
+ }
29
74
  // If the item has a 'use' method, call it and use the return value in the response.
30
75
  if (typeof itemToUse.use === 'function') {
31
76
  const result = itemToUse.use();
@@ -64,7 +109,8 @@ export class UseCommand extends Command {
64
109
  // much each hit actually closes (hits + 1 + quality below).
65
110
  const quality = kit.qualityBonus;
66
111
  const firstAid = this.actor.skillRating('first-aid');
67
- const roll = rollPool(Math.max(1, this.actor.logic + (firstAid > 0 ? firstAid : -1) + this.actor.woundModifier));
112
+ // Quick Healer (p.77): +2 on every healing test made on or by you.
113
+ const roll = rollPool(Math.max(1, this.actor.logic + (firstAid > 0 ? firstAid : -1) + this.actor.qualityBonus('healing') + this.actor.woundModifier));
68
114
  const healed = this.actor.healDamage(roll.hits + 1 + quality);
69
115
  this.actor.inventory.removeItem(kit.name);
70
116
  this.logger.write(`UseCommand: ${this.actor.name} used ${kit.name} and healed ${healed} boxes (${this.actor.damageTaken}/${this.actor.maxConditionBoxes}).`);
@@ -79,6 +125,67 @@ export class UseCommand extends Command {
79
125
  ` (The ${kit.name} is spent.)`,
80
126
  ].join('\n');
81
127
  }
128
+ /**
129
+ * Hot food is the slow, cheap, pleasant road to stun recovery -- the
130
+ * noodle-stand alternative to a stim's crash or a nap's downtime. Flat
131
+ * 2 + quality boxes, no roll, always worth what you paid. Eating while
132
+ * fine isn't refused (a good meal needs no justification); it just
133
+ * doesn't heal what isn't hurt.
134
+ */
135
+ eat(food) {
136
+ if (this.actor.isIncapacitated()) {
137
+ return `You're past the help of a good meal.`;
138
+ }
139
+ // The meal counts (needs system, SR5e p.56/p.172): hunger resets,
140
+ // hunger-locked fatigue unlocks -- BEFORE the healing below, so the
141
+ // meal itself can start clearing the very boxes it just released.
142
+ this.actor.markFed();
143
+ const recovered = this.actor.healStun(2 + food.qualityBonus);
144
+ this.actor.inventory.removeItem(food.name);
145
+ this.actor.performAction('eats', food.name);
146
+ this.scene.addWorldEvent(`${this.actor.name} ate ${food.name}.`);
147
+ this.scene.updateInventory(this.scene.getPlayer().inventory);
148
+ this.scene.updateStatus();
149
+ this.logger.write(`UseCommand: ${this.actor.name} ate ${food.name}: +${recovered} stun (${this.actor.stunTaken}/${this.actor.maxStunBoxes}).`);
150
+ if (recovered > 0) {
151
+ return [
152
+ `You work through the ${food.name}, and the static drains out with the steam.`,
153
+ ` ${recovered} stun recovered: ${this.actor.stunSummary()}`,
154
+ ].join('\n');
155
+ }
156
+ return `You take your time with the ${food.name}. Nothing hurt, nothing healed -- just a good meal in a bad decade.`;
157
+ }
158
+ /**
159
+ * A drink pours LIQUID COURAGE: +1 die on the next social roll
160
+ * (persuade, haggle, bluff -- they call consumeLiquidCourage). It
161
+ * doesn't stack; drinking on top of an unspent drink is just one too
162
+ * many, and costs a stun box.
163
+ */
164
+ drink(drink) {
165
+ if (this.actor.isIncapacitated()) {
166
+ return `You're past drinking.`;
167
+ }
168
+ this.actor.inventory.removeItem(drink.name);
169
+ this.actor.performAction('drinks', drink.name);
170
+ this.scene.addWorldEvent(`${this.actor.name} had a ${drink.name}.`);
171
+ this.scene.updateInventory(this.scene.getPlayer().inventory);
172
+ if (this.actor.liquidCourage) {
173
+ this.actor.takeStun(1);
174
+ this.scene.updateStatus();
175
+ this.logger.write(`UseCommand: ${this.actor.name} drank ${drink.name} on a full tank: 1 stun.`);
176
+ return [
177
+ `The ${drink.name} goes down easier than the last one -- which is the warning sign.`,
178
+ ` One too many: 1 stun: ${this.actor.stunSummary()} (the courage doesn't stack.)`,
179
+ ].join('\n');
180
+ }
181
+ this.actor.liquidCourage = true;
182
+ this.scene.updateStatus();
183
+ this.logger.write(`UseCommand: ${this.actor.name} drank ${drink.name}: liquid courage armed.`);
184
+ return [
185
+ `The ${drink.name} burns pleasantly on the way down. The room's edges soften.`,
186
+ ` Liquid courage: +1 die on your next social play (persuade, haggle, bluff).`,
187
+ ].join('\n');
188
+ }
82
189
  /**
83
190
  * Stim patches are the STUN answer (spell drain fills stun; medkits only
84
191
  * touch physical): same quality-scaled pool and consumable economy as a
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,OAAO,UAAW,SAAQ,OAAO;IAC3B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,WAAW,GAAG,qFAAqF,CAAC;IAErH,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEO,GAAG,CAAC,IAAc;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,qBAAqB,QAAQ,oCAAoC,CAAC,CAAC;YACnH,OAAO,sBAAsB,QAAQ,UAAU,CAAC;QAClD,CAAC;QAED,uCAAuC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,uBAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,CAAC;YAChG,OAAO,sBAAsB,QAAQ,UAAU,CAAC;QAClD,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,oFAAoF;QACpF,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,QAAQ,GAAG,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,6BAA6B,CAAC,CAAC;YACxE,OAAO,qBAAqB,QAAQ,eAAe,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,aAAa,CAAC,GAAS;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,OAAO,6BAA6B,GAAG,CAAC,IAAI,GAAG,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,+BAA+B,GAAG,CAAC,IAAI,4BAA4B,CAAC;QAC7E,CAAC;QAED,kEAAkE;QAClE,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,eAAe,MAAM,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC7J,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,+BAA+B,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO;YACL,eAAe,GAAG,CAAC,IAAI,GAAG;YAC1B,gBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC,iBAAiB,MAAM,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE;YAC1F,UAAU,GAAG,CAAC,IAAI,aAAa;SAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACK,SAAS,CAAC,KAAW;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YACjC,OAAO,6BAA6B,KAAK,CAAC,IAAI,GAAG,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,iCAAiC,KAAK,CAAC,IAAI,2CAA2C,CAAC;QAChG,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG;YACZ,mBAAmB,KAAK,CAAC,IAAI,GAAG;YAChC,WAAW,UAAU,CAAC,IAAI,CAAC,EAAE;YAC7B,0BAA0B,SAAS,oBAAoB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;SAClF,CAAC;QAEF,yDAAyD;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,MAAM,SAAS,4BAA4B,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC1K,KAAK,CAAC,IAAI,CAAC,8CAA8C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,+DAA+D;YAC/D,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,oCAAoC,CAAC,CAAC;YACjF,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBAClC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,yCAAyC,EAAE,KAAK,CAAC,CAAC;oBAC3G,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sEAAsE,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uDAAuD,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/use.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Command, ICommand } from './command.js';
2
+ /**
3
+ * Side gigs -- the small-money faucet between runs: one favor is on offer
4
+ * at a time (rotating each homecoming, like the rumor -- see
5
+ * Game.advanceGig), always a delivery from one hub local to another.
6
+ * "work" with the giver present hands you the package and the terms;
7
+ * delivering it with plain "give <package> to <name>" pays out (the hook
8
+ * lives in give.ts). One gig in hand at a time, no penalty for sitting
9
+ * on it -- the district's patience is long, its pay short.
10
+ */
11
+ export declare class WorkCommand extends Command implements ICommand {
12
+ protected static verb: string;
13
+ protected static description: string;
14
+ execute(_args?: string[]): Promise<string>;
15
+ }
@@ -0,0 +1,68 @@
1
+ import { Command } from './command.js';
2
+ import { Item } from '../models/item.js';
3
+ import { Size, Category, Rating } from '../types/shared/item-enum.js';
4
+ /**
5
+ * Side gigs -- the small-money faucet between runs: one favor is on offer
6
+ * at a time (rotating each homecoming, like the rumor -- see
7
+ * Game.advanceGig), always a delivery from one hub local to another.
8
+ * "work" with the giver present hands you the package and the terms;
9
+ * delivering it with plain "give <package> to <name>" pays out (the hook
10
+ * lives in give.ts). One gig in hand at a time, no penalty for sitting
11
+ * on it -- the district's patience is long, its pay short.
12
+ */
13
+ export class WorkCommand extends Command {
14
+ static verb = 'work';
15
+ static description = 'Ask a local for odd jobs. One small gig is on offer at a time -- take it with "work" in front of the giver, deliver with "give", get paid.';
16
+ async execute(_args = []) {
17
+ const actor = this.actor;
18
+ if (!this.game?.hasHub) {
19
+ return `Out here the only work is the job you're on.`;
20
+ }
21
+ if (actor.plane !== 'meat') {
22
+ return `Odd jobs need hands. Come back to your body.`;
23
+ }
24
+ const gig = this.game.activeGig;
25
+ if (gig) {
26
+ return actor.inventory.hasItem(gig.itemName)
27
+ ? `You've got work: get the ${gig.itemName} to ${gig.to}. ${gig.pay} nuyen on delivery.`
28
+ : `You took ${gig.from}'s gig but the ${gig.itemName} isn't on you anymore -- find it, or that bridge stays burned this cycle.`;
29
+ }
30
+ const offer = this.game.gigAvailable;
31
+ if (!offer) {
32
+ return `Nobody's hiring for odd jobs right now. Finish a run -- the district's needs turn over with the streets.`;
33
+ }
34
+ const giver = this.scene.getActorsInRoom(actor.currentLocation)
35
+ .find(a => a.name === offer.from && !a.isIncapacitated());
36
+ if (!giver) {
37
+ return `Word is ${offer.from} needs a hand with something. Find them if you want the work.`;
38
+ }
39
+ // Hand over the package and the terms.
40
+ const parcel = new Item({
41
+ name: offer.itemName,
42
+ description: offer.itemDescription,
43
+ size: Size.Small, category: Category.Document,
44
+ shape: 'Parcel', color: 'Wrapped', texture: 'Taped',
45
+ rating: Rating.Common, weight: 0.5,
46
+ });
47
+ try {
48
+ actor.addInventory(parcel);
49
+ }
50
+ catch {
51
+ return `${giver.name} sizes up your overloaded pack and shakes their head. "Come back when you can actually carry it."`;
52
+ }
53
+ parcel.owner = actor.name;
54
+ this.game.activeGig = { from: offer.from, to: offer.to, itemName: offer.itemName, pay: offer.pay };
55
+ this.game.gigAvailable = undefined;
56
+ actor.performAction('takes a gig from', giver.name);
57
+ this.logger.write(`WorkCommand: ${actor.name} took gig "${offer.itemName}" (${offer.from} -> ${offer.to}, ${offer.pay}).`);
58
+ this.scene.addWorldEvent(`${actor.name} is running an errand for ${offer.from}.`);
59
+ void Promise.resolve(giver.hear(actor, `I'll take that job. [System note: you just handed ${actor.name} the ${offer.itemName} to deliver to ${offer.to} for ${offer.pay} nuyen. Say a brief in-character word about it.]`)).catch(err => {
60
+ this.logger.error(`${giver.name} failed to hear the gig: ${err}`);
61
+ });
62
+ return [
63
+ `${giver.name}: "${offer.brief}"`,
64
+ ` The ${offer.itemName} changes hands. ${offer.pay} nuyen when it reaches ${offer.to} -- "give ${offer.itemName.toLowerCase()} to ${offer.to.toLowerCase()}".`,
65
+ ].join('\n');
66
+ }
67
+ }
68
+ //# sourceMappingURL=work.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/work.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,8 @@ export class ItemFactory {
15
15
  details: json.details,
16
16
  satisfiesLifestyle: json.satisfiesLifestyle,
17
17
  transferable: json.transferable,
18
- plane: json.plane
18
+ plane: json.plane,
19
+ price: json.price
19
20
  });
20
21
  if (json.currencyAmount && item.isCurrencyCarrier()) {
21
22
  item.addCurrency(json.currencyAmount);
@@ -1 +1 @@
1
- {"version":3,"file":"item-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/item-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,kBAAkB,CAAC,IAAmB;QAC1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"item-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/item-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,kBAAkB,CAAC,IAAmB;QAC1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -129,7 +129,7 @@ export interface ISceneDetails {
129
129
  * Returns '' when no player is available.
130
130
  */
131
131
  export declare function buildPlayerDossier(player?: Player): string;
132
- export declare function buildSkeletonPrompt(tier: number, previousFixerName?: string, player?: Player, previousError?: string): string;
132
+ export declare function buildSkeletonPrompt(tier: number, previousFixerName?: string, player?: Player, previousError?: string, rumor?: string): string;
133
133
  export declare function buildRoomsPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
134
134
  export declare function buildNpcsPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
135
135
  export declare function buildPuzzlesPrompt(skeleton: ISceneSkeleton, previousError?: string): string;
@@ -1,4 +1,6 @@
1
1
  import { SKILL_NAMES } from '../models/player.js';
2
+ import { AUGMENTATIONS } from '../augmentations.js';
3
+ import { isOutdoorsPlace } from '../utilities/outdoors.js';
2
4
  /**
3
5
  * CHUNKED scene generation (see SceneSeedGenerator.generate for the
4
6
  * pipeline that drives this module). One monolithic whole-scene completion
@@ -73,6 +75,20 @@ export function buildPlayerDossier(player) {
73
75
  if (a.logic >= 5 && !deck && !a.isTechnomancer()) {
74
76
  caps.push(`Sharp technical mind (logic ${a.logic})`);
75
77
  }
78
+ if (a.augmentations.size > 0) {
79
+ const ware = AUGMENTATIONS.filter(w => a.hasAug(w.key)).map(w => w.name).join(', ');
80
+ caps.push(`Chromed (essence ${a.essence.toFixed(1)}/6): ${ware} -- already installed, never place these as loot`);
81
+ }
82
+ // Reputation reaches the job before the runner does (SR5e p.367): let
83
+ // NPCs who'd plausibly have heard the name react to it.
84
+ if (a.streetCred > 0 || a.notoriety > 0) {
85
+ const repBits = [
86
+ a.streetCred > 0 ? `street cred ${a.streetCred} (a name that opens doors)` : '',
87
+ a.notoriety > 0 ? `notoriety ${a.notoriety} (stories follow them: ${a.notorietyReasons.length > 0 ? a.notorietyReasons.join('; ') : 'their record speaks for itself'})` : '',
88
+ a.publicAwareness > 0 ? `public awareness ${a.publicAwareness} (recognizable on the street)` : '',
89
+ ].filter(Boolean).join('; ');
90
+ caps.push(`REPUTATION precedes them: ${repBits} -- let word-of-mouth color how NPCs receive this runner`);
91
+ }
76
92
  if (caps.length === 0) {
77
93
  caps.push('No magic, no resonance, no deck, no drone -- a mundane who solves problems with gear, grit, and gunfire');
78
94
  }
@@ -118,7 +134,7 @@ function repairNote(previousError) {
118
134
  ? `\n\nYour previous attempt failed with this error -- fix it specifically and try again: ${previousError}`
119
135
  : '';
120
136
  }
121
- export function buildSkeletonPrompt(tier, previousFixerName, player, previousError) {
137
+ export function buildSkeletonPrompt(tier, previousFixerName, player, previousError, rumor) {
122
138
  // Tier 1 is the only fresh start (the launch menu's "Generate a new
123
139
  // Run"); every Johnson-commissioned draft is tier 2+ and the runner
124
140
  // arrives fully equipped -- authoring "starting" items there was pure
@@ -136,13 +152,23 @@ who commissioned the runner's last job and is lining up this one too. Reuse "${p
136
152
  as this scene's fixer (same voice/personality); do not reintroduce them as a stranger.`
137
153
  : '';
138
154
  const dossier = buildPlayerDossier(player);
155
+ // The hub's active street rumor becomes the job's backdrop -- gossip
156
+ // the runner heard at the noodle stand pays off as foreshadowing when
157
+ // the next job turns out to be tangled in exactly that (see
158
+ // Game.advanceRumor).
159
+ const rumorBlock = rumor
160
+ ? `\nSTREET RUMOR the runner has been hearing around their home district: "${rumor}"
161
+ Let this job CONNECT to the rumor -- as its cause, its consequence, or the truth behind it.
162
+ The connection should be discoverable in play (the fixer's briefing, an NPC's talk, a
163
+ document), not just implied by the title.`
164
+ : '';
139
165
  return `
140
166
  You are generating the STRUCTURE (skeleton) of a self-contained Shadowrun-flavored text
141
167
  adventure "run". This is job #${tier} in an ongoing campaign -- scale stakes accordingly.
142
168
  Prose comes later in separate passes: here, every "concept" is ONE tight sentence of intent,
143
169
  and everything else is structure. Get the STRUCTURE exactly right -- every name is a
144
170
  cross-reference other passes and the game engine will rely on verbatim.
145
- ${continuity}
171
+ ${continuity}${rumorBlock}
146
172
  ${dossier ? `\n${dossier}\n` : ''}
147
173
  ${JSON_ONLY}
148
174
 
@@ -201,7 +227,12 @@ ${JSON_ONLY}
201
227
  // ArmorClothing, Helmet, Hat, LegArmor, ArmArmor, Gloves, Commlink,
202
228
  // Cyberdeck, Drone, Credstick, CurrencyContainer, Key, Trinket,
203
229
  // Document, Datachip, Vice, Book, Tool, Clothing, Glasses, Boots,
204
- // Medical, StimPatch, SpellFormula, Grimoire, Focus, Ammunition
230
+ // Medical, StimPatch, SpellFormula, Grimoire, Focus, Ammunition,
231
+ // Food, Drink (consumables -- hot food heals stun, drink is liquid
232
+ // courage; fine as dressing in bars/kitchens, never as prizes),
233
+ // Cyberware (RARE prize loot -- an uninstalled augmentation part.
234
+ // Its name must be one of: ${AUGMENTATIONS.map(a => a.name).join(', ')};
235
+ // never one the runner already has installed, never role "starting")
205
236
  "room"?: string, "heldBy"?: string, // exactly one of these for roles winCondition/key/
206
237
  // clue/loot; NEITHER for roles reward/starting
207
238
  "plane"?: "meat"|"matrix", // "matrix" = paydata: only in a hasNode room, category
@@ -237,7 +268,10 @@ Hard structural rules (validated mechanically -- a violation is rejected):
237
268
  - Every exits[].targetRoom, npcs[].startLocation, items[].room name a real rooms[].name;
238
269
  every items[].heldBy names a real npcs[].name; every exits[].puzzle names a real
239
270
  puzzles[].name; every keyRequired names a real items[].name with role "key".
240
- - Exactly one room has isStartRoom true. Never lock the start room's only exits behind keys
271
+ - Exactly one room has isStartRoom true, and it must be OUTDOOR street-level ground -- a
272
+ street, alley, plaza, lot, dock, yard -- with a name/roomType that says so. The runner
273
+ arrives by cab at that curb and hails the ride home from the same spot; an indoor start
274
+ room breaks the transport fiction. Never lock the start room's only exits behind keys
241
275
  placed beyond them: every key must be reachable WITHOUT passing through the door it opens.
242
276
  - A "reachable": false room never connects to a reachable one, and nothing the player must
243
277
  retrieve (winCondition item, keys, clues) is ever placed in one.
@@ -534,6 +568,47 @@ export function validateSkeleton(skeleton, player) {
534
568
  */
535
569
  export function normalizeSkeleton(skeleton) {
536
570
  const notes = [];
571
+ // CURBSIDE GUARANTEE: the taxi is the only road home from a run (no
572
+ // hideout door on runs), and it hails from outdoor ground -- so the
573
+ // START room, where the cab drops the runner, must pass the same
574
+ // outdoors test the dispatcher uses (utilities/outdoors.ts; a real
575
+ // session failed its job indoors and had no legal pickup anywhere).
576
+ // The prompt asks for an outdoor start; when the model builds an
577
+ // indoor one anyway, fix it mechanically instead of burning an AI
578
+ // round: inject a curb one door out and move the start flag onto it.
579
+ // Runs BEFORE validateSkeleton, so "exactly one start room" still
580
+ // holds, and before the rooms prose pass, so the curb gets real prose.
581
+ const start = (skeleton.rooms ?? []).find(r => r.isStartRoom);
582
+ if (start && !isOutdoorsPlace(start.name, start.roomType)) {
583
+ const OPPOSITE = { north: 'south', south: 'north', east: 'west', west: 'east', up: 'down', down: 'up' };
584
+ // Directions already spoken for on the start room's side: its own
585
+ // declared exits plus the auto-mirrored side of exits pointing at it.
586
+ const takenOnStart = new Set((start.exits ?? []).map(e => e.direction));
587
+ for (const room of skeleton.rooms) {
588
+ for (const exit of room.exits ?? []) {
589
+ if (exit.targetRoom === start.name)
590
+ takenOnStart.add(OPPOSITE[exit.direction] ?? exit.direction);
591
+ }
592
+ }
593
+ const fromCurb = ['north', 'east', 'west', 'south', 'up', 'down'].find(d => !takenOnStart.has(OPPOSITE[d]));
594
+ if (fromCurb) {
595
+ let curbName = 'Curbside Drop';
596
+ while (skeleton.rooms.some(r => r.name === curbName))
597
+ curbName = `Outer ${curbName}`;
598
+ skeleton.rooms.unshift({
599
+ name: curbName,
600
+ concept: `The rain-slick stretch of open street where the cab drops the runner, one door from ${start.name} -- neon runoff in the puddles, and the only curb a ride home can reach.`,
601
+ roomType: 'Street',
602
+ isStartRoom: true,
603
+ exits: [{ direction: fromCurb, targetRoom: start.name }],
604
+ });
605
+ start.isStartRoom = false;
606
+ notes.push(`normalized: start room "${start.name}" is indoors; injected outdoor "${curbName}" as the start (the cab needs a curb).`);
607
+ }
608
+ else {
609
+ notes.push(`normalized: start room "${start.name}" is indoors but every direction on it is taken -- could not inject a curb.`);
610
+ }
611
+ }
537
612
  const doorRefs = new Map();
538
613
  for (const room of skeleton.rooms ?? []) {
539
614
  for (const exit of room.exits ?? []) {
@@ -547,6 +622,51 @@ export function normalizeSkeleton(skeleton) {
547
622
  delete puzzle.room;
548
623
  }
549
624
  }
625
+ // REWARD-REFERENCE reconciliation. A rewardItem (a puzzle's, or the
626
+ // winCondition's) must point at an UNPLACED role-"reward" item, but
627
+ // models regularly point it at a placed loot/clue item instead -- and
628
+ // that mismatch is unfixable downstream: roles and placement come from
629
+ // the skeleton, so the items-repair pass regenerates the same fault
630
+ // verbatim every round (a real session burned its entire repair AND
631
+ // pipeline budget on exactly this, twice, and the job fell through).
632
+ // The fix is mechanical, so do it here instead of spending AI rounds:
633
+ // a misdeclared LOOT item becomes the reward it was meant to be
634
+ // (unplaced); a load-bearing item (clue/key/winCondition/starting --
635
+ // something the run needs placed) keeps its role and the dangling
636
+ // reward reference is dropped instead (door puzzles don't need one).
637
+ const itemByName = new Map(skeleton.items.map(i => [i.name, i]));
638
+ const loadBearing = new Set(['clue', 'key', 'winCondition', 'starting']);
639
+ for (const puzzle of skeleton.puzzles ?? []) {
640
+ if (!puzzle.rewardItem)
641
+ continue;
642
+ const item = itemByName.get(puzzle.rewardItem);
643
+ if (!item || item.role === 'reward')
644
+ continue;
645
+ if (loadBearing.has(item.role) || item.name === skeleton.winCondition?.item) {
646
+ notes.push(`normalized: puzzle "${puzzle.name}" claimed the ${item.role} item "${item.name}" as its reward; dropped the reward reference (the ${item.role} role is load-bearing).`);
647
+ delete puzzle.rewardItem;
648
+ }
649
+ else {
650
+ notes.push(`normalized: item "${item.name}" was a placed ${item.role} but is puzzle "${puzzle.name}"'s reward; converted to an unplaced reward.`);
651
+ item.role = 'reward';
652
+ delete item.room;
653
+ delete item.heldBy;
654
+ }
655
+ }
656
+ const wc = skeleton.winCondition;
657
+ const wcReward = wc?.rewardItem ? itemByName.get(wc.rewardItem) : undefined;
658
+ if (wc && wcReward && wcReward.role !== 'reward') {
659
+ if (loadBearing.has(wcReward.role) || wcReward.name === wc.item) {
660
+ notes.push(`normalized: winCondition claimed the ${wcReward.role} item "${wcReward.name}" as its reward; dropped the reward reference (the ${wcReward.role} role is load-bearing).`);
661
+ delete wc.rewardItem;
662
+ }
663
+ else {
664
+ notes.push(`normalized: item "${wcReward.name}" was a placed ${wcReward.role} but is the winCondition's reward; converted to an unplaced reward.`);
665
+ wcReward.role = 'reward';
666
+ delete wcReward.room;
667
+ delete wcReward.heldBy;
668
+ }
669
+ }
550
670
  return notes;
551
671
  }
552
672
  /** Merges the skeleton's structure with the detail passes into a full seed. */
@@ -658,6 +778,13 @@ export function assembleScene(skeleton, details, playerName) {
658
778
  * the pipeline with the error as feedback.
659
779
  */
660
780
  export function classifyRepair(message) {
781
+ // Reward-item placement faults are SKELETON-owned: the items chunk only
782
+ // fills in details -- roles and room/heldBy come from the skeleton, so
783
+ // an items repair regenerates the same fault forever (a real session
784
+ // proved it three rounds straight). normalizeSkeleton() auto-fixes the
785
+ // common shapes; anything that still surfaces goes back to the skeleton.
786
+ if (/rewardItem .* already has|rewardItem and "winCondition\.item"/i.test(message))
787
+ return 'skeleton';
661
788
  if (/no discoverable clue/i.test(message))
662
789
  return 'items';
663
790
  if (/startingItems|Win condition (item|rewardItem)|items\[/i.test(message))
@@ -1 +1 @@
1
- {"version":3,"file":"scene-chunks.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-chunks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-chunks.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-chunks.ts"],"names":[],"mappings":"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"}