@maka/maka-cli 5.61.0 → 5.63.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 (147) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +4 -1
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.d.ts +34 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +93 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -0
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +4 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +7 -2
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +7 -2
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +6 -0
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +56 -7
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +9 -0
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +62 -23
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +5 -5
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +41 -2
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/crew.d.ts +7 -14
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js +86 -51
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js +4 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +6 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/follow.d.ts +37 -0
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/follow.js +216 -0
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/follow.js.map +1 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +23 -5
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +30 -3
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +4 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +6 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +3 -3
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js +1 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js.map +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +21 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +165 -59
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +5 -2
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +6 -4
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +9 -3
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js +3 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +1 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js +4 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +4 -1
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js +4 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js.map +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/commands/say.d.ts +21 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +95 -8
  67. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +3 -3
  69. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +8 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +13 -2
  72. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -1
  73. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js +4 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +1 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.js +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.js.map +1 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +11 -1
  78. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +5 -1
  80. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +21 -0
  82. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
  83. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +49 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +181 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +4 -1
  87. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
  88. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +6 -2
  89. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  90. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +13 -1
  91. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +85 -4
  92. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  93. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +43 -1
  94. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  95. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +9 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/game.js +90 -25
  97. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  98. package/bundle/typescript/src/commands/game/sideQuest/headless.js +58 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  100. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +30 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +234 -63
  102. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  103. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +19 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +31 -1
  105. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  106. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +23 -4
  107. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +54 -8
  108. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +1 -1
  110. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  111. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +6 -0
  112. package/bundle/typescript/src/commands/game/sideQuest/ui.js +21 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  114. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +74 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +184 -0
  116. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -0
  117. package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.d.ts +76 -0
  118. package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.js +98 -0
  119. package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.js.map +1 -0
  120. package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js +21 -9
  121. package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js.map +1 -1
  122. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +16 -0
  123. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +34 -1
  124. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  125. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +34 -0
  126. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
  127. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +3 -1
  128. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
  129. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +26 -2
  130. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +92 -7
  131. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
  132. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +19 -0
  133. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +28 -0
  134. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  135. package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.d.ts +33 -0
  136. package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.js +61 -0
  137. package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.js.map +1 -1
  138. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +12 -11
  139. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  140. package/bundle/typescript/src/maka.js +26 -0
  141. package/bundle/typescript/src/maka.js.map +1 -1
  142. package/bundle/typescript/src/tools/sdk-loader/relocate.js +7 -0
  143. package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
  144. package/bundle/typescript/src/tools/self-spawn/self-spawn.d.ts +10 -0
  145. package/bundle/typescript/src/tools/self-spawn/self-spawn.js +68 -0
  146. package/bundle/typescript/src/tools/self-spawn/self-spawn.js.map +1 -0
  147. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.61.0",
3
+ "version": "5.63.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 2.x applications using React.",
@@ -132,7 +132,10 @@ export class AdvanceCommand extends Command {
132
132
  }
133
133
  listAdvancement() {
134
134
  const actor = this.actor;
135
- const lines = [`=== TRAINING (karma: ${actor.karma}) ===`, `Skills${hint(' (new rating x2)')}:`];
135
+ // BANNER RAILS REMOVED (playtest 2026-08-26, on the crew panel:
136
+ // "headers like that are too cluttery"). The heading itself stays --
137
+ // it carries what the panel divider can't say for it.
138
+ const lines = [`TRAINING (karma: ${actor.karma})`, `Skills${hint(' (new rating x2)')}:`];
136
139
  for (const skill of SKILL_NAMES) {
137
140
  const current = actor.skillRating(skill);
138
141
  const incompetent = actor.hasQuality(`incompetent-${skill}`);
@@ -1 +1 @@
1
- {"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/advance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,iJAAiJ,CAAC;IAEzK,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAU,UAAU,GAAG;QACnC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;QACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;KACtD,CAAC;IAEX,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpD,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,uEAAuE,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,+CAA+C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvI,CAAC;QAED,IAAK,cAAc,CAAC,UAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAkD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAmB,CAAC,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,KAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,+CAA+C,KAAK,oDAAoD,IAAI,CAAC,aAAa,CAAC,yCAAyC,CAAC;QAC9K,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,KAAK,kBAAkB,OAAO,iEAAiE,CAAC;QACjH,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,KAAK,OAAO,IAAI,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACzG,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,KAAK,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,aAAa,KAAK,qBAAqB,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;IAClH,CAAC;IAEO,cAAc,CAAC,IAA8C;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;YACtE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACd,OAAO,IAAI,KAAK,OAAO;oBACrB,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,mEAAmE,CAAC;YAC1E,CAAC;YACD,oEAAoE;YACpE,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACpE,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;gBACtB,OAAO,QAAQ,IAAI,kBAAkB,IAAI,kBAAkB,SAAS,UAAU,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,wBAAwB,CAAC;YACvJ,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;gBAC7B,OAAO,0CAA0C,IAAI,qDAAqD,CAAC;YAC7G,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;gBACvB,OAAO,WAAW,IAAI,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;YAC5G,CAAC;YACD,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;YACpB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,YAAY,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,eAAe,SAAS,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;YAC5L,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,uBAAuB,IAAI,IAAI,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;QAC9L,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,IAAI,kBAAkB,OAAO,kDAAkD,CAAC;QACjG,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,sCAAsC,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACxH,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnB,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzI,OAAO,6CAA6C,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,UAAU,SAAS,EAAE,CAAC;IAC5I,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,CAAC,wBAAwB,KAAK,CAAC,KAAK,OAAO,EAAE,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACjG,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1M,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;gBACtE,IAAI,IAAI,IAAI,CAAC;oBAAE,SAAS,CAAC,sCAAsC;gBAC/D,MAAM,MAAM,GAAG,IAAI,IAAI,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;gBACzE,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACvL,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,yGAAyG,CAAC,CAAC;QAC/H,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
1
+ {"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/advance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,iJAAiJ,CAAC;IAEzK,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAU,UAAU,GAAG;QACnC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;QACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;KACtD,CAAC;IAEX,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpD,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,uEAAuE,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,+CAA+C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvI,CAAC;QAED,IAAK,cAAc,CAAC,UAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAkD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAmB,CAAC,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,KAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,+CAA+C,KAAK,oDAAoD,IAAI,CAAC,aAAa,CAAC,yCAAyC,CAAC;QAC9K,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,KAAK,kBAAkB,OAAO,iEAAiE,CAAC;QACjH,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,KAAK,OAAO,IAAI,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACzG,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,KAAK,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,aAAa,KAAK,qBAAqB,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;IAClH,CAAC;IAEO,cAAc,CAAC,IAA8C;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;YACtE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACd,OAAO,IAAI,KAAK,OAAO;oBACrB,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,mEAAmE,CAAC;YAC1E,CAAC;YACD,oEAAoE;YACpE,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACpE,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;gBACtB,OAAO,QAAQ,IAAI,kBAAkB,IAAI,kBAAkB,SAAS,UAAU,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,wBAAwB,CAAC;YACvJ,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;gBAC7B,OAAO,0CAA0C,IAAI,qDAAqD,CAAC;YAC7G,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;gBACvB,OAAO,WAAW,IAAI,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;YAC5G,CAAC;YACD,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;YACpB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,YAAY,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,eAAe,SAAS,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;YAC5L,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,uBAAuB,IAAI,IAAI,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;QAC9L,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,IAAI,kBAAkB,OAAO,kDAAkD,CAAC;QACjG,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,sCAAsC,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACxH,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnB,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzI,OAAO,6CAA6C,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,UAAU,SAAS,EAAE,CAAC;IAC5I,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,gEAAgE;QAChE,qEAAqE;QACrE,sDAAsD;QACtD,MAAM,KAAK,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACzF,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1M,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;gBACtE,IAAI,IAAI,IAAI,CAAC;oBAAE,SAAS,CAAC,sCAAsC;gBAC/D,MAAM,MAAM,GAAG,IAAI,IAAI,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;gBACzE,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACvL,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,yGAAyG,CAAC,CAAC;QAC/H,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Command, ICommand } from './command.js';
2
+ /**
3
+ * THE AR SWITCH (player request 2026-08-26: "there should be a way to
4
+ * toggle AR"). Bare "ar" toggles, "ar on"/"ar off" are explicit, and
5
+ * either way it answers with what the overlay is showing you now.
6
+ *
7
+ * Two different things can put your overlay down and a player is owed
8
+ * the difference, because the cure for each is different:
9
+ * - MUTED (this command): your choice, undone by typing "ar" again.
10
+ * - CUT (arOffline): a hacker did it to you -- "reboot" clears it.
11
+ * Muting is cosmetic on purpose: the link keeps broadcasting, calls
12
+ * still land, and the commlink initiative bonus is untouched. You are
13
+ * turning off the clutter, not the radio.
14
+ *
15
+ * RUNNING SILENT IS NOT A THIRD ONE (canon p.229 / p.235-236): silence
16
+ * is about what you emit, AR about what you receive, so a silent runner
17
+ * still sees the street. It was listed here until 2026-08-27; see
18
+ * utilities/ar.ts arSightUp for the full note.
19
+ */
20
+ export declare class ArCommand extends Command implements ICommand {
21
+ protected static verb: string;
22
+ protected static description: string;
23
+ execute(args?: string[]): Promise<string>;
24
+ }
25
+ /**
26
+ * "aros" -- the read WITHOUT the toggle (a player checking what is
27
+ * online should not have to risk flipping their overlay off to find
28
+ * out). Same list "look" appends; this is it on demand.
29
+ */
30
+ export declare class ArosCommand extends Command implements ICommand {
31
+ protected static verb: string;
32
+ protected static description: string;
33
+ execute(_args?: string[]): Promise<string>;
34
+ }
@@ -0,0 +1,93 @@
1
+ import { Command } from './command.js';
2
+ import { hint } from '../utilities/hints.js';
3
+ import { aroTags, arSightUp } from '../utilities/ar.js';
4
+ /**
5
+ * THE AR SWITCH (player request 2026-08-26: "there should be a way to
6
+ * toggle AR"). Bare "ar" toggles, "ar on"/"ar off" are explicit, and
7
+ * either way it answers with what the overlay is showing you now.
8
+ *
9
+ * Two different things can put your overlay down and a player is owed
10
+ * the difference, because the cure for each is different:
11
+ * - MUTED (this command): your choice, undone by typing "ar" again.
12
+ * - CUT (arOffline): a hacker did it to you -- "reboot" clears it.
13
+ * Muting is cosmetic on purpose: the link keeps broadcasting, calls
14
+ * still land, and the commlink initiative bonus is untouched. You are
15
+ * turning off the clutter, not the radio.
16
+ *
17
+ * RUNNING SILENT IS NOT A THIRD ONE (canon p.229 / p.235-236): silence
18
+ * is about what you emit, AR about what you receive, so a silent runner
19
+ * still sees the street. It was listed here until 2026-08-27; see
20
+ * utilities/ar.ts arSightUp for the full note.
21
+ */
22
+ export class ArCommand extends Command {
23
+ static verb = 'ar';
24
+ static description = 'Toggle your augmented-reality overlay: "ar" flips it, "ar on"/"ar off" are explicit. Off just hides the icon clutter -- your link keeps broadcasting and calls still reach you. Bare "ar" while it is up also reads out what is online around you.';
25
+ async execute(args = []) {
26
+ const actor = this.actor;
27
+ const sub = (args[0] ?? '').toLowerCase();
28
+ if (sub && !['on', 'off'].includes(sub)) {
29
+ return `Try "ar" to flip it, or "ar on" / "ar off".`;
30
+ }
31
+ const wantOn = sub === 'on' ? true : sub === 'off' ? false : actor.arMuted;
32
+ if (wantOn === !actor.arMuted) {
33
+ return wantOn
34
+ ? `Your overlay is already up.`
35
+ : `Your overlay is already down.`;
36
+ }
37
+ actor.arMuted = !wantOn;
38
+ this.logger.write(`${actor.name} turned AR ${wantOn ? 'on' : 'off'}.`);
39
+ // The district map's host markers are AR (see Player.hasMatrixEyes),
40
+ // so the docked overlay has to repaint on the same beat.
41
+ this.game?.updateExits(actor.currentLocation);
42
+ this.scene.updateStatus();
43
+ if (!wantOn) {
44
+ return `{white-fg}You blink the overlay away. The street goes plain -- no tags, no marquees, nothing floating over anybody's shoulder. Your link is still up and still reachable, and the district map drops its host markers with the rest of the icons. Lasts the session -- a fresh one boots with AR up${hint(`, and "ar" brings it back any time`)}.{/white-fg}`;
45
+ }
46
+ // Coming back up: say WHY it is still dark, if it is. A player who
47
+ // types "ar on" and gets a blank street deserves the reason.
48
+ if (actor.plane !== 'meat') {
49
+ return `Overlay back on -- though where you are right now, the icons ARE the world.`;
50
+ }
51
+ if (actor.arOffline) {
52
+ return `Overlay back on -- and still dark. Somebody cut it for you; "reboot" is the cure, not this.`;
53
+ }
54
+ if (!actor.getPanMaster()) {
55
+ return `Overlay back on -- over nothing. No commlink, no deck, no AR: you're reading the street with your eyes like it's 2050.`;
56
+ }
57
+ const tags = aroTags(this.scene, actor, actor.currentLocation);
58
+ const head = `{cyan-fg}The overlay blinks back in.{/cyan-fg}`;
59
+ if (tags.length === 0) {
60
+ return `${head}\n{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
61
+ }
62
+ return `${head}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
63
+ }
64
+ }
65
+ /**
66
+ * "aros" -- the read WITHOUT the toggle (a player checking what is
67
+ * online should not have to risk flipping their overlay off to find
68
+ * out). Same list "look" appends; this is it on demand.
69
+ */
70
+ export class ArosCommand extends Command {
71
+ static verb = 'aros';
72
+ static description = 'Read the augmented-reality objects around you: hosts, broadcasting PANs, camera clusters, powered-up gear in plain sight. Needs your AR overlay up ("ar").';
73
+ async execute(_args = []) {
74
+ const actor = this.actor;
75
+ if (!arSightUp(actor)) {
76
+ if (actor.plane === 'matrix')
77
+ return `You're IN it -- "look" is your overlay out here.`;
78
+ if (actor.plane !== 'meat')
79
+ return `Not with these eyes. Get back in your body first.`;
80
+ if (actor.arMuted)
81
+ return `Your overlay is off${hint(` ("ar" turns it back on)`)}.`;
82
+ if (actor.arOffline)
83
+ return `Your overlay is DOWN -- somebody cut it. "reboot" clears that.`;
84
+ return `No commlink, no deck, no AR. Nothing to read the street with.`;
85
+ }
86
+ const tags = aroTags(this.scene, actor, actor.currentLocation);
87
+ if (tags.length === 0) {
88
+ return `{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
89
+ }
90
+ return `{cyan-fg}AR OVERLAY:{/cyan-fg}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
91
+ }
92
+ }
93
+ //# sourceMappingURL=ar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ar.ts"],"names":[],"mappings":"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"}
@@ -92,7 +92,10 @@ export class BacklogCommand extends Command {
92
92
  ? `Nothing ${status} on the board.`
93
93
  : `The board's empty.${hint(` ("backlog <what you noticed>" files the first one.)`)}`;
94
94
  }
95
- const lines = [`=== BACKLOG === (${items.length}${status ? `, ${status}` : ''})`];
95
+ // BANNER RAILS REMOVED (playtest 2026-08-26, on the crew panel:
96
+ // "headers like that are too cluttery"). The heading itself stays --
97
+ // it carries what the panel divider can't say for it.
98
+ const lines = [`BACKLOG (${items.length}${status ? `, ${status}` : ''})`];
96
99
  for (const item of items)
97
100
  lines.push(...this.row(item));
98
101
  const footer = hint(`"backlog <what you noticed>" files one. Status moves are an admin's call.`);
@@ -1 +1 @@
1
- {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,12 @@ import { PuzzleTarget } from '../models/room.js';
10
10
  * and ends any sneak (onBypassSuccess), where a clean pick stays quiet.
11
11
  * The two verbs share the barrier's one burned flag: a seized mechanism
12
12
  * or a sprung frame spends the shortcut for both -- the findable answer
13
- * remains untouched, as always. (Flavor wart, accepted: a breach-burned
14
- * barrier re-refuses with the snapped-pick line.)
13
+ * remains untouched, as always. The SHARED flag is deliberate; the
14
+ * shared WORDING was not. This used to carry a note calling it an
15
+ * accepted wart that a breach-burned barrier re-refused with the
16
+ * snapped-pick line -- it stopped being acceptable the moment a player
17
+ * noticed being told about a pick they never owned (2026-08-27). Hence
18
+ * burnedFlavor below: same flag, own fiction. Do not reinstate the wart.
15
19
  */
16
20
  export declare class BreachCommand extends BypassCommand {
17
21
  protected static verb: string;
@@ -20,6 +24,7 @@ export declare class BreachCommand extends BypassCommand {
20
24
  protected verbName: string;
21
25
  protected noPuzzleMessage: string;
22
26
  protected failureFlavor: string;
27
+ protected burnedFlavor: string;
23
28
  execute(args: string[]): Promise<string>;
24
29
  protected determineOutcome(): Promise<boolean>;
25
30
  /** Breaching is loud when it WORKS, too -- the defining trade against
@@ -9,8 +9,12 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
9
9
  * and ends any sneak (onBypassSuccess), where a clean pick stays quiet.
10
10
  * The two verbs share the barrier's one burned flag: a seized mechanism
11
11
  * or a sprung frame spends the shortcut for both -- the findable answer
12
- * remains untouched, as always. (Flavor wart, accepted: a breach-burned
13
- * barrier re-refuses with the snapped-pick line.)
12
+ * remains untouched, as always. The SHARED flag is deliberate; the
13
+ * shared WORDING was not. This used to carry a note calling it an
14
+ * accepted wart that a breach-burned barrier re-refused with the
15
+ * snapped-pick line -- it stopped being acceptable the moment a player
16
+ * noticed being told about a pick they never owned (2026-08-27). Hence
17
+ * burnedFlavor below: same flag, own fiction. Do not reinstate the wart.
14
18
  */
15
19
  export class BreachCommand extends BypassCommand {
16
20
  static verb = 'breach';
@@ -19,6 +23,7 @@ export class BreachCommand extends BypassCommand {
19
23
  verbName = 'breach';
20
24
  noPuzzleMessage = "There's nothing here to breach -- no physical barrier holds this room.";
21
25
  failureFlavor = `You slam into it and it HOLDS -- the frame seizes solid, and the boom rolls down every corridor on the floor.`;
26
+ burnedFlavor = `The frame is sprung and jammed hard in its seat -- you've already thrown everything you have at it, and it won't give twice. Only the real code opens it now.`;
22
27
  async execute(args) {
23
28
  // Shoulders are meat -- same plane fiction as pick.ts.
24
29
  if (this.actor.plane === 'matrix') {
@@ -1 +1 @@
1
- {"version":3,"file":"breach.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/breach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,oRAAoR,CAAC;IAC1S,UAAU,GAAqB,UAAU,CAAC;IAC1C,QAAQ,GAAG,QAAQ,CAAC;IACpB,eAAe,GAAG,wEAAwE,CAAC;IAC3F,aAAa,GAAG,+GAA+G,CAAC;IAE1I,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,uDAAuD;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,+DAA+D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,cAAc,uCAAuC,CAAC;QAC3J,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,uGAAuG,CAAC;QACjH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,kEAAkE;QAClE,qEAAqE;QACrE,6BAA6B;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1H,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;gEAE4D;IAClD,KAAK,CAAC,eAAe,CAAC,MAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,wBAAwB,CAAC,CAAC;QAC5I,uEAAuE;QACvE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,uEAAuE,CAAC,CAAC;IACnF,CAAC"}
1
+ {"version":3,"file":"breach.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/breach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,oRAAoR,CAAC;IAC1S,UAAU,GAAqB,UAAU,CAAC;IAC1C,QAAQ,GAAG,QAAQ,CAAC;IACpB,eAAe,GAAG,wEAAwE,CAAC;IAC3F,aAAa,GAAG,+GAA+G,CAAC;IAChI,YAAY,GAAG,+JAA+J,CAAC;IAEzL,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,uDAAuD;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,+DAA+D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,cAAc,uCAAuC,CAAC;QAC3J,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,uGAAuG,CAAC;QACjH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,kEAAkE;QAClE,qEAAqE;QACrE,6BAA6B;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1H,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;gEAE4D;IAClD,KAAK,CAAC,eAAe,CAAC,MAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,wBAAwB,CAAC,CAAC;QAC5I,uEAAuE;QACvE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,uEAAuE,CAAC,CAAC;IACnF,CAAC"}
@@ -23,6 +23,12 @@ export declare abstract class BypassCommand extends Command implements ICommand
23
23
  * verb that shares a bypassType but fails differently (a breach doesn't
24
24
  * snap a pick). */
25
25
  protected failureFlavor?: string;
26
+ /** Optional: same idea one step later. The puzzle stores ONE burned
27
+ * flag per barrier and words it per TYPE, so a barrier burned by a
28
+ * breach used to re-refuse a breach with the snapped-pick line -- a
29
+ * pick the player never owned (playtest 2026-08-27). A verb that
30
+ * shares a bypassType but burns differently says so here. */
31
+ protected burnedFlavor?: string;
26
32
  /** Fallback: a flat coin flip. Every real bypass overrides this with a
27
33
  * skill roll (pick: Agility+locksmith, hack: Logic+hacking, bluff:
28
34
  * Charisma+con, cast: the casting pool). */
@@ -16,6 +16,12 @@ export class BypassCommand extends Command {
16
16
  * verb that shares a bypassType but fails differently (a breach doesn't
17
17
  * snap a pick). */
18
18
  failureFlavor;
19
+ /** Optional: same idea one step later. The puzzle stores ONE burned
20
+ * flag per barrier and words it per TYPE, so a barrier burned by a
21
+ * breach used to re-refuse a breach with the snapped-pick line -- a
22
+ * pick the player never owned (playtest 2026-08-27). A verb that
23
+ * shares a bypassType but burns differently says so here. */
24
+ burnedFlavor;
19
25
  /** Fallback: a flat coin flip. Every real bypass overrides this with a
20
26
  * skill roll (pick: Agility+locksmith, hack: Logic+hacking, bluff:
21
27
  * Charisma+con, cast: the casting pool). */
@@ -87,14 +93,61 @@ export class BypassCommand extends Command {
87
93
  }
88
94
  async execute(args) {
89
95
  const room = this.actor.currentLocation;
90
- const targets = (room?.getPuzzleTargets() ?? []).filter(t => t.puzzle.bypassType === this.bypassType);
91
- if (targets.length === 0) {
96
+ const allTargets = room?.getPuzzleTargets() ?? [];
97
+ // THE ONLY HONEST "nothing here" (blocker 2026-08-27, "the barrier
98
+ // isn't allowing me to hack/pick/breach it"): the room holds no
99
+ // barrier at all. This used to filter by bypassType FIRST, which
100
+ // made a wrong verb indistinguishable from an empty room -- so a
101
+ // ward or a doorman answered ALL FOUR physical verbs with "there's
102
+ // nothing here to pick/breach/hack", denying to the player's face
103
+ // that the door they were staring at existed. checkBypassGate()
104
+ // has always had the right answer for a mismatch; nothing ever
105
+ // reached it. Now the filter only picks a PREFERRED target, and
106
+ // every refusal goes through the gate.
107
+ if (allTargets.length === 0) {
92
108
  return this.noPuzzleMessage;
93
109
  }
94
- const { target, error } = this.resolveTarget(args, targets);
110
+ // WHO PICKS THE TARGET depends on whether the player named one.
111
+ //
112
+ // Bare "pick" in a room holding a maglock and a ward means the
113
+ // maglock -- so with no words to go on, prefer the barriers this
114
+ // verb actually works, exactly as before.
115
+ //
116
+ // But "pick terminal" NAMES a thing, and the name settles which
117
+ // object is meant before the verb gets a say. Resolving that
118
+ // against same-type targets only was quietly wrong: resolveTarget's
119
+ // generic-noun fallback ("lock", "door", "terminal"...) fires
120
+ // whenever the candidate list has exactly one entry, so naming the
121
+ // terminal in a mixed room picked the MAGLOCK instead -- the right
122
+ // verb aimed at the wrong barrier, and it opened. Named targets
123
+ // therefore resolve against every barrier here; the gate below
124
+ // decides whether the verb suits the thing the player pointed at.
125
+ const mine = allTargets.filter(t => t.puzzle.bypassType === this.bypassType);
126
+ const named = args.length > 0;
127
+ const primary = named ? allTargets : (mine.length > 0 ? mine : allTargets);
128
+ const { target: preferred, error } = this.resolveTarget(args, primary);
129
+ let target = preferred;
130
+ if (!target && named && mine.length > 0) {
131
+ // The name matched nothing room-wide. Retry against this verb's
132
+ // own barriers, which keeps the generic-noun convenience alive
133
+ // ("pick door" with one lock and one terminal still means the
134
+ // lock) without letting it hijack a name that DID match.
135
+ target = this.resolveTarget(args, mine).target;
136
+ }
95
137
  if (!target) {
96
138
  return error ?? this.noPuzzleMessage;
97
139
  }
140
+ // GATE BEFORE THE WALK (2026-08-27): the gate is pure and
141
+ // synchronous, so a doomed attempt should cost nothing at all --
142
+ // and marching the player across the room only to tell them the
143
+ // verb was wrong is its own small insult. The class contract
144
+ // already said the gate "always runs first"; now it does.
145
+ const gate = target.puzzle.checkBypassGate(this.bypassType);
146
+ if (!gate.allowed) {
147
+ if (gate.reason === 'burned' && this.burnedFlavor)
148
+ return this.burnedFlavor;
149
+ return gate.message ?? `You can't do that here.`;
150
+ }
98
151
  // "At" spots (user request: "cannot pick a doorlock from across the
99
152
  // room"): a barrier has a PLACE -- a door's is its exit spot, a
100
153
  // room puzzle carries its own atSpot. Out of combat you simply walk
@@ -106,10 +159,6 @@ export class BypassCommand extends Command {
106
159
  if (reach.refusal)
107
160
  return reach.refusal;
108
161
  const crossNote = reach.line ? `${reach.line}\n` : '';
109
- const gate = target.puzzle.checkBypassGate(this.bypassType);
110
- if (!gate.allowed) {
111
- return gate.message ?? `You can't do that here.`;
112
- }
113
162
  const succeeded = await this.determineOutcome();
114
163
  const result = target.puzzle.resolveBypass(this.bypassType, succeeded);
115
164
  if (!result.success && this.failureFlavor) {
@@ -1 +1 @@
1
- {"version":3,"file":"bypass-command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bypass-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bypass-command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bypass-command.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,15 @@ export declare class CallCommand extends Command implements ICommand {
3
3
  protected static verb: string;
4
4
  protected static description: string;
5
5
  execute(args: string[]): Promise<string>;
6
+ /**
7
+ * Who is standing close enough to catch your half of the call that
8
+ * just connected (see utilities/earshot.ts). Said ONCE, on connect,
9
+ * because that is the last moment it can still be acted on -- Deditri
10
+ * went looking for somewhere private to take a call and had no way to
11
+ * tell whether they had found one. Silence means nobody can hear you;
12
+ * "say private" asks the question again at any time.
13
+ */
14
+ private overheardNote;
6
15
  /**
7
16
  * Whether a cab can physically reach this room. The predicate itself
8
17
  * lives in utilities/outdoors.ts, SHARED with the generator: every
@@ -6,6 +6,7 @@ import { CALL_ICON, CALL_COLOR } from '../utilities/comm-style.js';
6
6
  import { FIXER_NAME, isFixerName } from '../factories/scene-seed-generator.js';
7
7
  import { fuzzyPickNameDetailed } from '../utilities/fuzzy-match.js';
8
8
  import { isOutdoorsPlace } from '../utilities/outdoors.js';
9
+ import { readEarshot } from '../utilities/earshot.js';
9
10
  export class CallCommand extends Command {
10
11
  static verb = 'call';
11
12
  static description = 'Call someone remotely over a commlink (no need to be in the same room; commlink must be equipped).';
@@ -51,6 +52,31 @@ export class CallCommand extends Command {
51
52
  if (this.actor.inExchange) {
52
53
  return `Mid-fight is no time to hail a cab.`;
53
54
  }
55
+ // THE FARE COMES FIRST (playtest 2026-08-26: "I was able to call a
56
+ // taxi before calling Mr. Krow. I shouldn't be able to until I get
57
+ // the job."). The cab is the ride TO a job, so at the hub it needs
58
+ // a job to ride to -- and a seed Krow has merely DRAFTED is not
59
+ // one. The gate is pendingRunAccepted, the flag "accept" sets (see
60
+ // job-offer.ts): the same line the jobs board already draws
61
+ // between "call him to hear it" and ACCEPTED. A live seat at
62
+ // someone else's table counts too -- that invite IS the fare, and
63
+ // it is what "call taxi rides back in" rides (see shared-run.ts).
64
+ //
65
+ // Checked BEFORE the curbside gate on purpose: walking a runner
66
+ // out to the street and only THEN telling them there was never a
67
+ // fare is the same sequencing hole, one room further along.
68
+ let hubInvite;
69
+ if (this.scene.isHub && this.game) {
70
+ const { HubLink } = await import('../utilities/shared-run.js');
71
+ hubInvite = HubLink.openInvite(this.game);
72
+ if (!this.game.pendingRunAccepted && !hubInvite) {
73
+ // ACTIONABLE REFUSAL: it names the next move, so it is NOT
74
+ // wrapped in hint() -- it stands with hints on or off.
75
+ return this.game.pendingRun
76
+ ? `The dispatcher's bored voice: "No fare on the books for you, chummer." ${FIXER_NAME} has work on offer, but you never shook on it -- "call ${FIXER_NAME}", then "accept".`
77
+ : `The dispatcher's bored voice: "No fare on the books for you, chummer." Nobody's hired you -- "call ${FIXER_NAME}" first.`;
78
+ }
79
+ }
54
80
  // Curbside pickup only: no cab noses into a bar, a crypt, or your
55
81
  // hideout. Step out to a street-level room first. EXCEPTION: the
56
82
  // ride home off a WRAPPED job hails from anywhere -- the cab is the
@@ -62,7 +88,7 @@ export class CallCommand extends Command {
62
88
  if (!CallCommand.isOutdoors(this.actor.currentLocation) && !homeboundIndoors) {
63
89
  return `The dispatcher grunts: "Curbside pickup only, chummer." Step outside -- a street, an alley, somewhere a cab can actually reach.`;
64
90
  }
65
- if (this.scene.isHub && this.game.pendingRun) {
91
+ if (this.scene.isHub && this.game.pendingRunAccepted) {
66
92
  this.actor.performAction('calls a taxi', 'and steps to the curb');
67
93
  const ride = this.game.pendingRide;
68
94
  const trip = await this.game.launchPendingRun();
@@ -124,27 +150,24 @@ export class CallCommand extends Command {
124
150
  }
125
151
  // A LIVE CREW INVITE (Phase C M4): someone else's job, your seat.
126
152
  // The taxi is the join handshake -- same cab, different table.
127
- if (this.scene.isHub) {
128
- const { HubLink, SharedRunSession } = await import('../utilities/shared-run.js');
129
- const invite = HubLink.openInvite();
130
- if (invite && this.game) {
131
- this.actor.performAction('calls a taxi', 'and steps to the curb');
132
- this.game.requestSave('job-accept');
133
- try {
134
- return await SharedRunSession.joinAsMember(this.game, invite.sessionID);
153
+ if (this.scene.isHub && hubInvite && this.game) {
154
+ const { SharedRunSession } = await import('../utilities/shared-run.js');
155
+ this.actor.performAction('calls a taxi', 'and steps to the curb');
156
+ this.game.requestSave('job-accept');
157
+ try {
158
+ return await SharedRunSession.joinAsMember(this.game, hubInvite.sessionID);
159
+ }
160
+ catch (err) {
161
+ const e = err;
162
+ if (e.error === 'interrupted') {
163
+ return `The cab circles the block and brings you back -- the run dissolved into static before you arrived. Everyone keeps their last save.`;
135
164
  }
136
- catch (err) {
137
- const e = err;
138
- if (e.error === 'interrupted') {
139
- return `The cab circles the block and brings you back -- the run dissolved into static before you arrived. Everyone keeps their last save.`;
140
- }
141
- if (e.error === 'unverified') {
142
- // Krow won't seat unvetted runners (fiction ruling
143
- // 2026-08-24); the OOC line says how to get vouched for.
144
- return `The cab pulls up short of the address and the door stays locked. Your link pings -- ${FIXER_NAME}: "Nothing personal, chummer. No vouch on the street, no seat at my table. Square your paperwork and the next ride's yours."\n{yellow-fg}(Out of character: this account's email isn't verified -- run \`maka register --resend-verification\`, click the link, relaunch.){/yellow-fg}`;
145
- }
146
- return `The dispatcher shrugs: "${e.reason ?? 'No route to that job.'}"`;
165
+ if (e.error === 'unverified') {
166
+ // Krow won't seat unvetted runners (fiction ruling
167
+ // 2026-08-24); the OOC line says how to get vouched for.
168
+ return `The cab pulls up short of the address and the door stays locked. Your link pings -- ${FIXER_NAME}: "Nothing personal, chummer. No vouch on the street, no seat at my table. Square your paperwork and the next ride's yours."\n{yellow-fg}(Out of character: this account's email isn't verified -- run \`maka register --resend-verification\`, click the link, relaunch.){/yellow-fg}`;
147
169
  }
170
+ return `The dispatcher shrugs: "${e.reason ?? 'No route to that job.'}"`;
148
171
  }
149
172
  }
150
173
  return `The dispatcher's bored voice: "No fare on the books for you, chummer." (No job arranged -- "call ${FIXER_NAME}" first.)`;
@@ -335,7 +358,23 @@ export class CallCommand extends Command {
335
358
  && this.game.canDraftNextScene().allowed) {
336
359
  this.game.draftNextSceneInBackground();
337
360
  }
338
- return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${target.name}: "${greeting}"${deliveryNote}{/${CALL_COLOR}-fg}${clientBeat ? `\n${clientBeat}` : ''}`;
361
+ return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${target.name}: "${greeting}"${deliveryNote}{/${CALL_COLOR}-fg}${this.overheardNote()}${clientBeat ? `\n${clientBeat}` : ''}`;
362
+ }
363
+ /**
364
+ * Who is standing close enough to catch your half of the call that
365
+ * just connected (see utilities/earshot.ts). Said ONCE, on connect,
366
+ * because that is the last moment it can still be acted on -- Deditri
367
+ * went looking for somewhere private to take a call and had no way to
368
+ * tell whether they had found one. Silence means nobody can hear you;
369
+ * "say private" asks the question again at any time.
370
+ */
371
+ overheardNote() {
372
+ const reading = readEarshot(this.actor);
373
+ const names = reading.audience.filter(a => this.actor.canPerceive(a)).map(a => a.name);
374
+ if (names.length === 0)
375
+ return '';
376
+ const cure = reading.quiet.length > 0 ? hint(` "move to ${reading.quiet[0]}" for quiet.`) : '';
377
+ return `\n(${names.join(', ')} ${names.length === 1 ? 'is' : 'are'} close enough to hear your side of it.${cure})`;
339
378
  }
340
379
  /**
341
380
  * Whether a cab can physically reach this room. The predicate itself
@@ -416,7 +455,7 @@ export class CallCommand extends Command {
416
455
  this.actor.crewChannel = { playerName: 'the party', handle: '', party: true };
417
456
  this.actor.performAction('opens the party line', `${res.delivered} rider${res.delivered === 1 ? '' : 's'} on`);
418
457
  this.scene.updateStatus();
419
- return `{${CALL_COLOR}-fg}${CALL_ICON} The party line opens -- ${res.delivered} rider${res.delivered === 1 ? '' : 's'} on: "${greeting}"{/${CALL_COLOR}-fg}${hint(`\n("say <message>" talks to everyone, "end-call" drops you off.)`)}`;
458
+ return `{${CALL_COLOR}-fg}${CALL_ICON} The party line opens -- ${res.delivered} rider${res.delivered === 1 ? '' : 's'} on: "${greeting}"{/${CALL_COLOR}-fg}${this.overheardNote()}${hint(`\n("say <message>" talks to everyone, "end-call" drops you off.)`)}`;
420
459
  }
421
460
  catch (err) {
422
461
  const e = err;
@@ -468,7 +507,7 @@ export class CallCommand extends Command {
468
507
  try {
469
508
  const res = await transport.send({ from: this.actor.name, handle: street.handle, text: greeting });
470
509
  const offlineNote = res.online ? '' : `\nThey're off the street right now -- your words wait on their link.`;
471
- return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${res.toRunner} on the crew channel: "${greeting}"{/${CALL_COLOR}-fg}${offlineNote}${hint(`\n("say <message>" talks, "end-call" hangs up.)`)}`;
510
+ return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${res.toRunner} on the crew channel: "${greeting}"{/${CALL_COLOR}-fg}${offlineNote}${this.overheardNote()}${hint(`\n("say <message>" talks, "end-call" hangs up.)`)}`;
472
511
  }
473
512
  catch (err) {
474
513
  this.actor.crewChannel = undefined;