@maka/maka-cli 5.6.0 → 5.8.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 (243) 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 +33 -32
  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 +81 -2
  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 +197 -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 +21 -11
  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 +13 -5
  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 +6 -7
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +54 -20
  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 +306 -55
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +33 -0
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +137 -0
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -0
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +13 -0
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +37 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -0
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.d.ts +14 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js +15 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js.map +1 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +1 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +7 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.d.ts +14 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js +15 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js.map +1 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +10 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +3 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +101 -1
  78. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +6 -1
  80. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +67 -22
  81. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +15 -7
  83. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  84. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +58 -2
  85. package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
  86. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +26 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +125 -0
  88. package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -0
  89. package/bundle/typescript/src/commands/game/sideQuest/commands/install.d.ts +21 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +125 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.d.ts +16 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +83 -0
  94. package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +16 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +76 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -0
  98. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +4 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
  100. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +7 -6
  101. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/commands/order.d.ts +19 -0
  103. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +151 -0
  104. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.d.ts +13 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js +39 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js.map +1 -0
  108. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +5 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
  110. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +6 -3
  111. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
  112. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.d.ts +21 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +121 -0
  114. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +60 -12
  116. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
  117. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +27 -10
  118. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
  119. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +15 -4
  120. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  121. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.d.ts +17 -0
  122. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js +125 -0
  123. package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +1 -0
  124. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +36 -3
  125. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  126. package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +9 -1
  127. package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -1
  128. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +27 -4
  129. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
  130. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +1 -1
  131. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
  132. package/bundle/typescript/src/commands/game/sideQuest/commands/summon.d.ts +19 -0
  133. package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js +112 -0
  134. package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js.map +1 -0
  135. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +8 -0
  136. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  137. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.d.ts +14 -0
  138. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js +67 -0
  139. package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js.map +1 -0
  140. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +7 -0
  141. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  142. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +29 -0
  143. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +118 -11
  144. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  145. package/bundle/typescript/src/commands/game/sideQuest/commands/work.d.ts +15 -0
  146. package/bundle/typescript/src/commands/game/sideQuest/commands/work.js +68 -0
  147. package/bundle/typescript/src/commands/game/sideQuest/commands/work.js.map +1 -0
  148. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
  149. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
  150. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +1 -1
  151. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +132 -5
  152. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  153. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +6 -2
  154. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +10 -6
  155. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  156. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +196 -0
  157. package/bundle/typescript/src/commands/game/sideQuest/game.js +828 -31
  158. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  159. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +28 -0
  160. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +111 -0
  161. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  162. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +33 -1
  163. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +232 -10
  164. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  165. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +111 -5
  166. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +432 -41
  167. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  168. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +6 -6
  169. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +38 -14
  170. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  171. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +1 -0
  172. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +6 -0
  173. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  174. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +9 -0
  175. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +48 -8
  176. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  177. package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +44 -0
  178. package/bundle/typescript/src/commands/game/sideQuest/qualities.js +155 -0
  179. package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -0
  180. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +274 -5
  181. package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
  182. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +17 -0
  183. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +2 -0
  184. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +4 -0
  185. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
  186. package/bundle/typescript/src/commands/game/sideQuest/ui.js +82 -8
  187. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  188. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +13 -6
  189. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +28 -15
  190. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -1
  191. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +15 -3
  192. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +207 -34
  193. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  194. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +56 -0
  195. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +144 -0
  196. package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -0
  197. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +7 -4
  198. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +8 -5
  199. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -1
  200. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +14 -0
  201. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +15 -0
  202. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -0
  203. package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.d.ts +16 -0
  204. package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js +49 -4
  205. package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js.map +1 -1
  206. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +10 -0
  207. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +16 -0
  208. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -0
  209. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +21 -0
  210. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +107 -0
  211. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  212. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.d.ts +17 -0
  213. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js +23 -0
  214. package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js.map +1 -0
  215. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +51 -15
  216. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  217. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +27 -1
  218. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js.map +1 -1
  219. package/bundle/typescript/src/commands/run/run.command.js +1 -7
  220. package/bundle/typescript/src/commands/run/run.command.js.map +1 -1
  221. package/bundle/typescript/src/commands/ssl.js +10 -15
  222. package/bundle/typescript/src/commands/ssl.js.map +1 -1
  223. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js +1 -6
  224. package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +1 -1
  225. package/bundle/typescript/src/generators/config.js +11 -10
  226. package/bundle/typescript/src/generators/config.js.map +1 -1
  227. package/bundle/typescript/src/templates/meteor/config/pm2.config.js +3 -3
  228. package/bundle/typescript/src/templates/meteor/project/gitignore +2 -1
  229. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +3 -4
  230. package/bundle/typescript/src/tool.d.ts +2 -0
  231. package/bundle/typescript/src/tool.js +3 -0
  232. package/bundle/typescript/src/tool.js.map +1 -1
  233. package/bundle/typescript/src/tools/aws/aws.class.js +6 -4
  234. package/bundle/typescript/src/tools/aws/aws.class.js.map +1 -1
  235. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.d.ts +24 -0
  236. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js +66 -0
  237. package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js.map +1 -0
  238. package/bundle/typescript/src/tools/ssh/ssh.class.js +1 -1
  239. package/bundle/typescript/src/tools/ssh/ssh.class.js.map +1 -1
  240. package/bundle/typescript/src/tools/ssl/ssl.class.d.ts +8 -0
  241. package/bundle/typescript/src/tools/ssl/ssl.class.js +53 -0
  242. package/bundle/typescript/src/tools/ssl/ssl.class.js.map +1 -1
  243. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/commerce.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,12 @@ export interface IDiceRoll {
14
14
  }
15
15
  export declare function rollPool(pool: number): IDiceRoll;
16
16
  /**
17
- * One-line render of a roll for the game log, e.g.:
18
- * "8d6 [6 5 5 3 2 1 4 6] -> 4 hits"
19
- * The raw dice faces are shown on purpose -- watching the pool land is
20
- * most of the fun of dice-pool combat.
17
+ * One-line render of a roll for the game log, e.g.: "8d6 -> 4 hits"
18
+ * Pool and hits only. The individual faces have been through two
19
+ * displays and out again: the numeric dump ("[6 5 5 3 2 1 4 6]") was
20
+ * the bulk of the Mechanics column's noise, and the sparkline that
21
+ * replaced it ("▂█▄▁▇▃▇█", right-justified) read as blobs across a
22
+ * full combat. Playtest verdict: the pool size and the hits tell the
23
+ * story; glitches still announce themselves.
21
24
  */
22
25
  export declare function formatRoll(roll: IDiceRoll): string;
@@ -20,15 +20,18 @@ export function rollPool(pool) {
20
20
  };
21
21
  }
22
22
  /**
23
- * One-line render of a roll for the game log, e.g.:
24
- * "8d6 [6 5 5 3 2 1 4 6] -> 4 hits"
25
- * The raw dice faces are shown on purpose -- watching the pool land is
26
- * most of the fun of dice-pool combat.
23
+ * One-line render of a roll for the game log, e.g.: "8d6 -> 4 hits"
24
+ * Pool and hits only. The individual faces have been through two
25
+ * displays and out again: the numeric dump ("[6 5 5 3 2 1 4 6]") was
26
+ * the bulk of the Mechanics column's noise, and the sparkline that
27
+ * replaced it ("▂█▄▁▇▃▇█", right-justified) read as blobs across a
28
+ * full combat. Playtest verdict: the pool size and the hits tell the
29
+ * story; glitches still announce themselves.
27
30
  */
28
31
  export function formatRoll(roll) {
29
32
  if (roll.pool === 0)
30
33
  return '0d6 -> no dice to roll';
31
34
  const glitchTag = roll.criticalGlitch ? ' -- CRITICAL GLITCH' : roll.glitch ? ' -- glitch' : '';
32
- return `${roll.pool}d6 [${roll.rolls.join(' ')}] -> ${roll.hits} hit${roll.hits === 1 ? '' : 's'}${glitchTag}`;
35
+ return `${roll.pool}d6 -> ${roll.hits} hit${roll.hits === 1 ? '' : 's'}${glitchTag}`;
33
36
  }
34
37
  //# sourceMappingURL=dice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dice.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/dice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK;QACL,IAAI;QACJ,MAAM;QACN,cAAc,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC;KACrC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,OAAO,GAAG,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC;AACjH,CAAC"}
1
+ {"version":3,"file":"dice.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/dice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK;QACL,IAAI;QACJ,MAAM;QACN,cAAc,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,OAAO,GAAG,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC;AACvF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The one shared piece of log typography. Bullets were three dialects
3
+ * ("• " in look, " • " in the panels, "- " in help) -- one form, used
4
+ * everywhere a list lands in the log.
5
+ *
6
+ * On indentation generally: blessed wraps long lines at the box width
7
+ * with ZERO continuation indent, so any leading indent is a first-line
8
+ * cue only -- a wrapped bullet's second line sits flush left. Accepted,
9
+ * not fought: a hanging-indent wrapper would mean re-implementing
10
+ * blessed's wrap, for a cosmetic gain the Mechanics split already
11
+ * mostly delivers (the longest offenders -- dice dumps -- left the
12
+ * world log).
13
+ */
14
+ export declare const BULLET = " \u2022 ";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The one shared piece of log typography. Bullets were three dialects
3
+ * ("• " in look, " • " in the panels, "- " in help) -- one form, used
4
+ * everywhere a list lands in the log.
5
+ *
6
+ * On indentation generally: blessed wraps long lines at the box width
7
+ * with ZERO continuation indent, so any leading indent is a first-line
8
+ * cue only -- a wrapped bullet's second line sits flush left. Accepted,
9
+ * not fought: a hanging-indent wrapper would mean re-implementing
10
+ * blessed's wrap, for a cosmetic gain the Mechanics split already
11
+ * mostly delivers (the longest offenders -- dice dumps -- left the
12
+ * world log).
13
+ */
14
+ export const BULLET = ' • ';
15
+ //# sourceMappingURL=log-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-style.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/log-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC"}
@@ -3,14 +3,30 @@ type BlessedColor = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' |
3
3
  export declare class Logger {
4
4
  private static instance;
5
5
  private filePath;
6
+ private transcriptPath;
6
7
  private screen?;
7
8
  private constructor();
8
9
  static getInstance(filePath?: string, screen?: Widgets.Screen): Logger;
9
10
  private ensureLogFileExists;
11
+ /**
12
+ * Appends one line to the play-session transcript (session.log) --
13
+ * short local-time prefix, render tags stripped. Everything the player
14
+ * SEES belongs here; internals stay in write()/error() (game.log).
15
+ */
16
+ transcript(message: string): void;
10
17
  write(message: string): void;
11
18
  error(message: string): void;
12
19
  log(message: string): void;
13
20
  logWithColor(message: string, color?: BlessedColor): void;
21
+ /**
22
+ * The MECHANICS ticker (readability pass): dice anatomy and resource
23
+ * arithmetic split off the narrative into the small metaBox under the
24
+ * world log, so the story stops reading as a wall of roll lines. The
25
+ * transcript keeps the full interleaved record (" · " prefix marks
26
+ * the mechanics lines). No metaBox on this screen (harness stubs,
27
+ * pre-UI paths) is normal, not a fault -- fall back to the system log.
28
+ */
29
+ meta(message: string, color?: BlessedColor): void;
14
30
  hasScreen(): boolean;
15
31
  }
16
32
  export {};
@@ -5,9 +5,15 @@ const homeDir = os.homedir();
5
5
  export class Logger {
6
6
  static instance;
7
7
  filePath;
8
+ // The play-by-play transcript (player request: split the log in two).
9
+ // game.log keeps the system's [INFO]/[ERROR] internals; session.log
10
+ // beside it reads like the session itself -- what the player typed,
11
+ // what the game answered, what the log box showed.
12
+ transcriptPath;
8
13
  screen; // Ensure this is defined
9
14
  constructor(filePath, screen) {
10
15
  this.filePath = filePath;
16
+ this.transcriptPath = path.join(path.dirname(filePath), 'session.log');
11
17
  this.screen = screen;
12
18
  this.ensureLogFileExists();
13
19
  }
@@ -30,6 +36,22 @@ export class Logger {
30
36
  if (!fs.existsSync(this.filePath)) {
31
37
  fs.writeFileSync(this.filePath, '');
32
38
  }
39
+ if (!fs.existsSync(this.transcriptPath)) {
40
+ fs.writeFileSync(this.transcriptPath, '');
41
+ }
42
+ }
43
+ /**
44
+ * Appends one line to the play-session transcript (session.log) --
45
+ * short local-time prefix, render tags stripped. Everything the player
46
+ * SEES belongs here; internals stay in write()/error() (game.log).
47
+ */
48
+ transcript(message) {
49
+ const t = new Date();
50
+ const hh = String(t.getHours()).padStart(2, '0');
51
+ const mm = String(t.getMinutes()).padStart(2, '0');
52
+ const ss = String(t.getSeconds()).padStart(2, '0');
53
+ const stripped = message.replace(/\{[^}]+\}/g, '');
54
+ fs.appendFileSync(this.transcriptPath, `[${hh}:${mm}:${ss}] ${stripped}\n`);
33
55
  }
34
56
  write(message) {
35
57
  const timestamp = new Date().toISOString();
@@ -46,20 +68,43 @@ export class Logger {
46
68
  const logBox = this.screen?.children.find(child => child.type === 'box' && child.options.id === 'logBox');
47
69
  if (logBox) {
48
70
  logBox.insertBottom(message); // Supports color tags
49
- logBox.scrollTo(logBox.getScrollHeight());
71
+ // Follow the tail only if the player hasn't paged up to read
72
+ // history (see Game.initLogBox / followLog).
73
+ if (logBox.followBottom !== false) {
74
+ logBox.scrollTo(logBox.getScrollHeight());
75
+ }
50
76
  this.screen?.render();
51
77
  }
52
78
  else {
53
79
  this.error(`The logbox ${logBox} could not be found on screen ${this.screen}`);
54
80
  }
55
- // Strip Blessed color tags before writing to file
56
- const strippedMessage = message.replace(/\{[^}]+\}/g, '');
57
- this.write(strippedMessage);
81
+ // Log-box lines are the play-by-play -- they land in the transcript,
82
+ // not the system log (player request: two files).
83
+ this.transcript(message);
58
84
  }
59
85
  logWithColor(message, color = 'white') {
60
86
  const coloredMessage = `{${color}-fg}${message}{/${color}-fg}`;
61
87
  this.log(coloredMessage);
62
88
  }
89
+ /**
90
+ * The MECHANICS ticker (readability pass): dice anatomy and resource
91
+ * arithmetic split off the narrative into the small metaBox under the
92
+ * world log, so the story stops reading as a wall of roll lines. The
93
+ * transcript keeps the full interleaved record (" · " prefix marks
94
+ * the mechanics lines). No metaBox on this screen (harness stubs,
95
+ * pre-UI paths) is normal, not a fault -- fall back to the system log.
96
+ */
97
+ meta(message, color) {
98
+ this.transcript(` · ${message}`);
99
+ const metaBox = this.screen?.children.find(child => child.type === 'box' && child.options.id === 'metaBox');
100
+ if (!metaBox) {
101
+ this.write(`[meta] ${message.replace(/\{[^}]+\}/g, '')}`);
102
+ return;
103
+ }
104
+ metaBox.insertBottom(color ? `{${color}-fg}${message}{/${color}-fg}` : message);
105
+ metaBox.scrollTo(metaBox.getScrollHeight());
106
+ this.screen?.render();
107
+ }
63
108
  hasScreen() {
64
109
  return !!this.screen;
65
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The ONE outdoors test, shared by the taxi's curbside gate (call.ts)
3
+ * and the scene generator's start-room guarantee (scene-chunks.ts:
4
+ * normalizeSkeleton injects a curb when the drafted start room fails
5
+ * this). Name/type heuristic so generated scenes work unmodified:
6
+ * street-level open ground counts, anything underground or interior
7
+ * doesn't. Keeping both callers on the same predicate is the point --
8
+ * a curb the generator guarantees must be a curb the dispatcher accepts.
9
+ */
10
+ export declare function isOutdoorsPlace(name: string, roomType?: string): boolean;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The ONE outdoors test, shared by the taxi's curbside gate (call.ts)
3
+ * and the scene generator's start-room guarantee (scene-chunks.ts:
4
+ * normalizeSkeleton injects a curb when the drafted start room fails
5
+ * this). Name/type heuristic so generated scenes work unmodified:
6
+ * street-level open ground counts, anything underground or interior
7
+ * doesn't. Keeping both callers on the same predicate is the point --
8
+ * a curb the generator guarantees must be a curb the dispatcher accepts.
9
+ */
10
+ export function isOutdoorsPlace(name, roomType) {
11
+ const haystack = `${roomType ?? ''} ${name}`.toLowerCase();
12
+ if (/under|tunnel|crypt|basement|cellar|sewer|vault|sub-|subterran/.test(haystack))
13
+ return false;
14
+ return /street|alley|strip|yard|dock|gate|road|plaza|lot\b|court|bridge|park|curb|waterfront|pier|rooftop|exterior|outside|market/.test(haystack);
15
+ }
16
+ //# sourceMappingURL=outdoors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdoors.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/outdoors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAiB;IAC7D,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,+DAA+D,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACjG,OAAO,2HAA2H,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpJ,CAAC"}
@@ -29,6 +29,27 @@ export declare function leaveMatrix(scene: Scene, actor: Player, opts?: {
29
29
  forced?: boolean;
30
30
  reason?: string;
31
31
  }): string[];
32
+ /**
33
+ * Jumped-in rigging (SR5e p.266): the rigger's presence becomes the
34
+ * DRONE -- full VR through the implanted control rig, body slumped in
35
+ * bodyRoom like any off-plane traveler. The drone flies the meat world:
36
+ * meat NPCs see it, it sees them (Player.canPerceive), and go.ts moves
37
+ * it room to room. Cold-sim is the sane default; hot-sim sharpens the
38
+ * pools (+1 gunnery, +1 initiative die) but makes every bleed-through
39
+ * and the dumpshock PHYSICAL.
40
+ */
41
+ export declare function enterDrone(scene: Scene, actor: Player, drone: Item, mode: SimMode): string[];
42
+ /**
43
+ * Jumping out -- clean when voluntary; a WRECKED airframe is a forced
44
+ * dump: dumpshock (4 boxes resisted with Willpower, stun cold / PHYSICAL
45
+ * hot -- the engine's same softened DV as a Matrix dump) plus the p.229
46
+ * disorientation: -2 on everything for (10 - Willpower) minutes,
47
+ * wall-clock (Player.dumpshockedUntil rides sustainingPenalty).
48
+ */
49
+ export declare function leaveDrone(scene: Scene, actor: Player, opts?: {
50
+ forced?: boolean;
51
+ reason?: string;
52
+ }): string[];
32
53
  export declare function projectAstral(scene: Scene, actor: Player): string[];
33
54
  /**
34
55
  * Whether this actor's jacked-in persona can touch the host in `room`.
@@ -24,6 +24,8 @@ export function planeLabel(actor) {
24
24
  return `MATRIX (${actor.simMode ?? 'cold'}-sim)`;
25
25
  if (actor.plane === 'astral')
26
26
  return 'ASTRAL';
27
+ if (actor.plane === 'drone')
28
+ return `DRONE (${actor.riggedDrone?.name ?? 'jumped in'}, ${actor.simMode ?? 'cold'}-sim)`;
27
29
  return 'MEAT';
28
30
  }
29
31
  /** Every off-plane actor whose empty body lies in this room. */
@@ -90,6 +92,29 @@ export function leaveMatrix(scene, actor, opts) {
90
92
  if (actor.activeDeck?.isBricked) {
91
93
  lines.push(`Your ${actor.activeDeck.name} is BRICKED -- dead boards, burnt trace. It repairs while you rest somewhere safe.`);
92
94
  }
95
+ // THE AGENT AND THE EXIT, per canon (checked hard): Jack Out REBOOTS
96
+ // the deck (p.240 -- "jacks you out of the Matrix and reboots the
97
+ // device you are using"; p.242 -- a rebooting device "ceases
98
+ // electronic functions and disappears from the Matrix"), so a hard
99
+ // exit takes the agent down with it -- and a FORCED dump is always
100
+ // that. But canon has a second door: switching interface mode to AR
101
+ // leaves the deck RUNNING, persona in AR, agent still working. So a
102
+ // VOLUNTARY exit with a TASKED agent narrates as the AR drop -- the
103
+ // deck stays live and the agent keeps its hunt; an idle agent (or any
104
+ // forced dump) is a clean jack-out reboot that folds it.
105
+ const game = scene.ownerGame;
106
+ const agentEntry = game?.companions.find(c => c.kind === 'agent');
107
+ if (agentEntry) {
108
+ if (!opts?.forced && agentEntry.npc.objective) {
109
+ lines.push(`You drop to AR instead of a hard jack-out -- the deck stays live in your bag, your agent stays on the grid working its directive, and its status ghosts across the same AR overlay your link feeds you.`);
110
+ }
111
+ else {
112
+ game.dismissCompanion(agentEntry, opts?.forced ? 'forced dump: the reboot takes the agent down' : 'jack-out reboot: agent folds into the deck');
113
+ lines.push(opts?.forced
114
+ ? `The reboot takes your agent down with you -- its icon shreds as the deck cycles.`
115
+ : `The jack-out reboots the deck -- your agent's icon collapses back into it with you.`);
116
+ }
117
+ }
93
118
  actor.plane = 'meat';
94
119
  actor.simMode = undefined;
95
120
  actor.activeDeck = undefined;
@@ -103,6 +128,88 @@ export function leaveMatrix(scene, actor, opts) {
103
128
  scene.updateStatus();
104
129
  return lines;
105
130
  }
131
+ /**
132
+ * Jumped-in rigging (SR5e p.266): the rigger's presence becomes the
133
+ * DRONE -- full VR through the implanted control rig, body slumped in
134
+ * bodyRoom like any off-plane traveler. The drone flies the meat world:
135
+ * meat NPCs see it, it sees them (Player.canPerceive), and go.ts moves
136
+ * it room to room. Cold-sim is the sane default; hot-sim sharpens the
137
+ * pools (+1 gunnery, +1 initiative die) but makes every bleed-through
138
+ * and the dumpshock PHYSICAL.
139
+ */
140
+ export function enterDrone(scene, actor, drone, mode) {
141
+ actor.bodyRoom = actor.currentLocation;
142
+ actor.plane = 'drone';
143
+ actor.simMode = mode;
144
+ actor.riggedDrone = drone;
145
+ actor.sneaking = false;
146
+ actor.performAction('jumps into', `${drone.name} -- body going slack as the rotors spin up (${mode}-sim)`);
147
+ scene.addWorldEvent(`${actor.name} jumped into ${drone.name} in ${actor.bodyRoom.name}.`);
148
+ Logger.getInstance().write(`${actor.name} jumped into ${drone.name} (${mode}-sim, hull ${drone.droneSummary()}) from ${actor.bodyRoom.name}.`);
149
+ const hullNote = drone.droneDamage > 0 ? ` The airframe is already scarred: ${drone.droneSummary()}.` : '';
150
+ const hotWarning = mode === 'hot'
151
+ ? ` Hot-sim: the machine answers like your own skin -- and every hit it takes bleeds PHYSICAL into yours.`
152
+ : ` Cold-sim: hits on the hull sting through the link as stun, half strength.`;
153
+ return [
154
+ `The rig takes hold and the world snaps to sensor-sight -- you ARE the ${drone.name} now, rotors humming, your body slumped and empty in ${actor.bodyRoom.name}.${hotWarning}${hullNote}`,
155
+ `Move with "go" (you fly the meat world; locked doors still stop an airframe), "look" through the sensors, "jump" again to drop back into your body.`,
156
+ ];
157
+ }
158
+ /**
159
+ * Jumping out -- clean when voluntary; a WRECKED airframe is a forced
160
+ * dump: dumpshock (4 boxes resisted with Willpower, stun cold / PHYSICAL
161
+ * hot -- the engine's same softened DV as a Matrix dump) plus the p.229
162
+ * disorientation: -2 on everything for (10 - Willpower) minutes,
163
+ * wall-clock (Player.dumpshockedUntil rides sustainingPenalty).
164
+ */
165
+ export function leaveDrone(scene, actor, opts) {
166
+ const lines = [];
167
+ const body = actor.bodyRoom;
168
+ const wasHot = actor.simMode === 'hot';
169
+ const drone = actor.riggedDrone;
170
+ if (opts?.forced) {
171
+ const resist = rollPool(actor.willpower);
172
+ const dealt = Math.max(0, 4 - resist.hits);
173
+ lines.push(opts.reason ?? `The link dies with the airframe.`);
174
+ lines.push(` DUMPSHOCK -- resist: ${formatRoll(resist)}`);
175
+ if (dealt > 0) {
176
+ if (wasHot) {
177
+ actor.takeDamage(dealt);
178
+ lines.push(` The crash comes home with you -- ${dealt} box${dealt === 1 ? '' : 'es'} PHYSICAL (hot-sim): ${actor.conditionSummary()}`);
179
+ }
180
+ else {
181
+ actor.takeStun(dealt);
182
+ lines.push(` The feed cuts like a slammed door -- ${dealt} stun: ${actor.stunSummary()}`);
183
+ }
184
+ }
185
+ else {
186
+ lines.push(` You ride it out -- no damage.`);
187
+ }
188
+ const disorientMinutes = Math.max(1, 10 - actor.willpower);
189
+ actor.dumpshockedUntil = Date.now() + disorientMinutes * 60_000;
190
+ lines.push(` The world tastes like static: -2 on everything for ~${disorientMinutes} minute${disorientMinutes === 1 ? '' : 's'}.`);
191
+ }
192
+ else {
193
+ lines.push(`You let go of the machine and drop back down the link.`);
194
+ }
195
+ if (drone?.isWrecked) {
196
+ lines.push(`The ${drone.name} is WRECKED -- bent rotors, dead boards. It repairs while you rest somewhere safe.`);
197
+ }
198
+ actor.plane = 'meat';
199
+ actor.simMode = undefined;
200
+ actor.riggedDrone = undefined;
201
+ if (body) {
202
+ actor.currentLocation = body;
203
+ actor.bodyRoom = undefined;
204
+ lines.push(drone && !drone.isWrecked
205
+ ? `You're back in your body in ${body.name}; the ${drone.name} autopilots home to your hand.`
206
+ : `You're back in your body in ${body.name}.`);
207
+ }
208
+ actor.performAction('jumps out', 'stirring awake as the rig releases');
209
+ scene.addWorldEvent(`${actor.name} jumped out of their drone.`);
210
+ scene.updateStatus();
211
+ return lines;
212
+ }
106
213
  export function projectAstral(scene, actor) {
107
214
  actor.bodyRoom = actor.currentLocation;
108
215
  actor.plane = 'astral';
@@ -1 +1 @@
1
- {"version":3,"file":"planes.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/planes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,WAAW,KAAK,CAAC,OAAO,IAAI,MAAM,OAAO,CAAC;IAC/E,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,IAAU;IACnD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAa,EAAE,IAAa;IACpE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,iEAAiE;IACjE,uEAAuE;IACvE,sCAAsC;IACtC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,+CAA+C,IAAI,OAAO,CAAC,CAAC;IAC5F,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,8BAA8B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACvF,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,wBAAwB,IAAI,SAAS,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAClM,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK;QAC/B,CAAC,CAAC,8HAA8H;QAChI,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE;YACtB,CAAC,CAAC,yFAAyF;YAC3F,CAAC,CAAC,gEAAgE,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC;QAClE,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,CAAC,IAAI,wBAAwB,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG;QACzF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE;QAClC,CAAC,CAAC,gJAAgJ,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU;QAC/K,CAAC,CAAC,QAAQ,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,MAAM,oGAAoG,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;IAC9K,OAAO;QACL,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,EAAE;QAClC,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAa,EAAE,IAA4C;IACnG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;IAEvC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,kEAAkE;QAClE,iDAAiD;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,gDAAgD,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,8BAA8B,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,wBAAwB,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAClI,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,2CAA2C,KAAK,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;IAED,wEAAwE;IACxE,0DAA0D;IAC1D,IAAI,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,oFAAoF,CAAC,CAAC;IAChI,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACnD,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,CAAC,CAAC;IAC/D,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,KAAa;IACvD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACtB,sEAAsE;IACtE,wCAAwC;IACxC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC;IACvF,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACrF,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5F,OAAO;QACL,wKAAwK,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU;QACrM,4JAA4J;QAC5J,6QAA6Q;KAC9Q,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,IAAU;IACpD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU,EAAE,WAAkB;IAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,YAAY,IAAI,CAAC,IAAI,mBAAmB,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,eAAe,IAAI,CAAC,IAAI,wBAAwB,CAAC;IAC1D,CAAC;IACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC,IAAI,kCAAkC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,KAAa,EACb,IAAU,EACV,UAAkB,EAClB,IAAkC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC;IAEpD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACvD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,GAAG,KAAK,CAAC,IAAI,sPAAsP,CAAC;YAC7Q,KAAK,OAAO;gBACV,OAAO,GAAG,KAAK,CAAC,IAAI,6NAA6N,CAAC;YACpP,KAAK,OAAO;gBACV,OAAO,GAAG,KAAK,CAAC,IAAI,uGAAuG,CAAC;QAChI,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,4EAA4E,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,KAAa,EAAE,IAA4C;IACpG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,IAAI,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,gBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACtB,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IACvE,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC7D,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,QAAsB,EAAE,MAAoB;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,sBAAsB,MAAM,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAClH,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,mBAAmB,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,8BAA8B,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,kBAAkB,QAAQ,IAAI,CAAC,CAAC;IAErF,qEAAqE;IACrE,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ;QAChC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"planes.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/planes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The full "give the terminal back" escape string: every xterm mode
3
+ * blessed arms (all mouse-tracking flavors, SGR/urxvt encodings, focus
4
+ * events, bracketed paste, the alternate screen) switched OFF, cursor
5
+ * shown, attributes reset. Safe to emit any number of times, in any
6
+ * state -- switching off a mode that's already off is a no-op.
7
+ *
8
+ * Two writers, belt and suspenders (a real session hit this TWICE):
9
+ * - ui.ts writes it after screen.destroy() on every exit path, in case
10
+ * destroy() throws partway through its own teardown;
11
+ * - sideQuest.sub.cmd.ts (the parent, which now outlives the child)
12
+ * writes it when the child exits FOR ANY REASON -- a SIGKILL'd or
13
+ * natively-aborted child runs no JS at all, and its armed
14
+ * mouse-tracking otherwise floods the shell with coordinate bytes on
15
+ * every cursor move.
16
+ */
17
+ export declare const TERMINAL_RESET_SEQUENCE: string;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The full "give the terminal back" escape string: every xterm mode
3
+ * blessed arms (all mouse-tracking flavors, SGR/urxvt encodings, focus
4
+ * events, bracketed paste, the alternate screen) switched OFF, cursor
5
+ * shown, attributes reset. Safe to emit any number of times, in any
6
+ * state -- switching off a mode that's already off is a no-op.
7
+ *
8
+ * Two writers, belt and suspenders (a real session hit this TWICE):
9
+ * - ui.ts writes it after screen.destroy() on every exit path, in case
10
+ * destroy() throws partway through its own teardown;
11
+ * - sideQuest.sub.cmd.ts (the parent, which now outlives the child)
12
+ * writes it when the child exits FOR ANY REASON -- a SIGKILL'd or
13
+ * natively-aborted child runs no JS at all, and its armed
14
+ * mouse-tracking otherwise floods the shell with coordinate bytes on
15
+ * every cursor move.
16
+ */
17
+ export const TERMINAL_RESET_SEQUENCE = '\x1b[?1003l\x1b[?1002l\x1b[?1000l\x1b[?1005l\x1b[?1006l\x1b[?1015l' + // mouse tracking, every flavor
18
+ '\x1b[?1004l' + // focus-event reports
19
+ '\x1b[?2004l' + // bracketed paste
20
+ '\x1b[?1049l' + // leave the alternate screen
21
+ '\x1b[?25h' + // show the cursor
22
+ '\x1b[0m'; // reset attributes
23
+ //# sourceMappingURL=terminal-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-reset.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/terminal-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,oEAAoE,GAAG,+BAA+B;IACtG,aAAa,GAAK,sBAAsB;IACxC,aAAa,GAAK,kBAAkB;IACpC,aAAa,GAAK,6BAA6B;IAC/C,WAAW,GAAO,kBAAkB;IACpC,SAAS,CAAC,CAAQ,mBAAmB"}
@@ -8,6 +8,7 @@ import { Actions } from '../../tools/actions/actions.class.js';
8
8
  import { Log } from '../../tools/log/log.class.js';
9
9
  import { SceneSeedGenerator } from './sideQuest/factories/scene-seed-generator.js';
10
10
  import { ARCHETYPES, getArchetype, outfitArchetype } from './sideQuest/archetypes.js';
11
+ import { TERMINAL_RESET_SEQUENCE } from './sideQuest/utilities/terminal-reset.js';
11
12
  import { Player } from './sideQuest/models/player.js';
12
13
  import { Room } from './sideQuest/models/room.js';
13
14
  import { Logger } from './sideQuest/utilities/logger.js';
@@ -43,6 +44,9 @@ Command.create({
43
44
  const archetypeName = await Actions.select({
44
45
  message: 'Who are you on the street?',
45
46
  name: 'archetypeName',
47
+ // The quality ledger deliberately does NOT ride the menu (it doubled
48
+ // every line -- player request): "sheet" in-game is where the traits
49
+ // and their karma math live.
46
50
  choices: ARCHETYPES.map(a => ({ name: `${a.name} -- ${a.description}`, value: a.name })),
47
51
  });
48
52
  const gameOptions = {
@@ -110,25 +114,57 @@ Command.create({
110
114
  }
111
115
  }
112
116
  if (playerName && sideQuestAnswer) {
117
+ // The scene rides to the child via a FILE, not argv: Windows caps a
118
+ // command line at ~32KB and the hub seed sailed past it (spawn
119
+ // ENAMETOOLONG) the moment it gained rumors, gigs, and a bigger
120
+ // cast. The launch file lives in the session dir next to the log.
121
+ const { mkdirSync, writeFileSync } = await import('fs');
122
+ mkdirSync(sessionDir, { recursive: true });
123
+ const launchFilePath = path.join(sessionDir, 'launch.json');
124
+ writeFileSync(launchFilePath, JSON.stringify({
125
+ playerName,
126
+ scene: sideQuestAnswer,
127
+ options: gameOptions,
128
+ }), 'utf8');
113
129
  // Spawn a new process to run your main function
114
- const child = spawn('node', [path.resolve(__dirname, './sideQuest/ui.js'), playerName, JSON.stringify(sideQuestAnswer), JSON.stringify(gameOptions)], {
130
+ const child = spawn('node', [path.resolve(__dirname, './sideQuest/ui.js'), launchFilePath], {
115
131
  stdio: 'inherit'
116
132
  });
117
- // Capture error on spawn failure
118
- child.on('error', (err) => {
119
- Log.error(`Failed to start side quest: ${err.message}`);
120
- });
121
- child.on('exit', (code, signal) => {
122
- if (code === 0) {
123
- Log.bright(`Thanks for playing!`);
124
- }
125
- else if (code === 2) {
126
- Log.bright(`You died! Thanks for playing!`);
127
- }
128
- else {
129
- Log.error(`Side quest exited with code ${code} or signal ${signal}`);
130
- }
133
+ // WAIT for the child. This used to fire-and-forget: the parent
134
+ // exited immediately, its exit handler never ran, and when the
135
+ // child died HARD (a signal or native abort runs none of the
136
+ // child's own JS cleanup) nobody was left to give the terminal
137
+ // back -- blessed's armed mouse tracking flooded the shell with
138
+ // coordinate bytes on every cursor move (a real session hit this
139
+ // twice, the second time WITH child-side crash handlers in place).
140
+ // The kernel always tells the parent how the child ended, so the
141
+ // parent is the one guaranteed janitor.
142
+ const { code, signal } = await new Promise((resolve) => {
143
+ child.on('error', (err) => {
144
+ Log.error(`Failed to start side quest: ${err.message}`);
145
+ resolve({ code: null, signal: null });
146
+ });
147
+ child.on('exit', (exitCode, exitSignal) => resolve({ code: exitCode, signal: exitSignal }));
131
148
  });
149
+ // Unconditional terminal rescue: a no-op when the child already
150
+ // restored itself, the only thing standing when it couldn't.
151
+ process.stdout.write(TERMINAL_RESET_SEQUENCE);
152
+ // The child can't log a death it never saw -- record the exit
153
+ // shape parent-side so the next hard crash leaves evidence.
154
+ try {
155
+ const { appendFileSync } = await import('fs');
156
+ appendFileSync(logFilePath, `[INFO] [${new Date().toISOString()}] child exited: code=${code} signal=${signal}\n`);
157
+ }
158
+ catch { /* the log dir may never have been created */ }
159
+ if (code === 0) {
160
+ Log.bright(`Thanks for playing!`);
161
+ }
162
+ else if (code === 2) {
163
+ Log.bright(`You died! Thanks for playing!`);
164
+ }
165
+ else if (code !== null || signal !== null) {
166
+ Log.error(`Side quest exited with code ${code} or signal ${signal} (details in ${logFilePath})`);
167
+ }
132
168
  }
133
169
  }
134
170
  catch (error) {