@maka/maka-cli 5.3.17 → 5.4.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 (218) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +43 -0
  3. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +131 -0
  4. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/assense.d.ts +14 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +79 -0
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -0
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.d.ts +42 -0
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +224 -0
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -0
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +28 -0
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +101 -0
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -0
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +19 -0
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +149 -0
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -0
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +58 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +378 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -0
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.d.ts +11 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +8 -3
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +6 -0
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +4 -0
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.d.ts +15 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +60 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.d.ts +13 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +31 -0
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -0
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.d.ts +6 -0
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js +27 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js.map +1 -0
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.d.ts +4 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +40 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.d.ts +13 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +43 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +7 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +11 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +115 -4
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +25 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +176 -0
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -0
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/inv.d.ts +12 -0
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +39 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/jack.d.ts +17 -0
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js +64 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js.map +1 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.d.ts +10 -3
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js +11 -33
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js.map +1 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +35 -4
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +12 -0
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +46 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -0
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.d.ts +12 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +55 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +9 -0
  67. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +18 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/commands/project.d.ts +19 -0
  70. package/bundle/typescript/src/commands/game/sideQuest/commands/project.js +54 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +1 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/commands/read.js +6 -5
  73. package/bundle/typescript/src/commands/game/sideQuest/commands/read.js.map +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.d.ts +12 -0
  75. package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js +52 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js.map +1 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/commands/reload.d.ts +14 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js +40 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js.map +1 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.d.ts +15 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +59 -0
  82. package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +23 -2
  84. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
  85. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +20 -3
  86. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  87. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.d.ts +12 -0
  88. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +49 -0
  89. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +13 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +50 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +32 -11
  94. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
  95. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.d.ts +14 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +65 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -0
  98. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.d.ts +12 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +41 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.d.ts +21 -0
  102. package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js +43 -0
  103. package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js.map +1 -0
  104. package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.d.ts +20 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js +45 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js.map +1 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +8 -0
  108. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +80 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  110. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -0
  111. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  112. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +24 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +101 -1
  114. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  115. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
  116. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
  117. package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js +7 -2
  118. package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js.map +1 -1
  119. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +2 -1
  120. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +1 -1
  121. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +2 -0
  122. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
  123. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +8 -1
  124. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +138 -21
  125. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  126. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +119 -0
  127. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +816 -0
  128. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -0
  129. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +70 -9
  130. package/bundle/typescript/src/commands/game/sideQuest/game.js +403 -164
  131. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  132. package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.d.ts +16 -0
  133. package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js +101 -0
  134. package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js.map +1 -0
  135. package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.d.ts +15 -0
  136. package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js +95 -0
  137. package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js.map +1 -0
  138. package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +10 -0
  139. package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -2
  140. package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
  141. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +10 -0
  142. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +54 -4
  143. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
  144. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +41 -0
  145. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +106 -3
  146. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  147. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +25 -0
  148. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +220 -47
  149. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  150. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +213 -0
  151. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +525 -9
  152. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  153. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +75 -1
  154. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +174 -6
  155. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  156. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +20 -0
  157. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +39 -18
  158. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  159. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +69 -0
  160. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +175 -2
  161. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  162. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +80 -1
  163. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +7 -2
  164. package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.d.ts +1 -0
  165. package/bundle/typescript/src/commands/game/sideQuest/types/seed/exit-seed.d.ts +1 -0
  166. package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
  167. package/bundle/typescript/src/commands/game/sideQuest/types/seed/npc-seed.d.ts +1 -0
  168. package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +34 -0
  169. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +15 -1
  170. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +3 -0
  171. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +5 -0
  172. package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.d.ts +15 -0
  173. package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js +2 -0
  174. package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js.map +1 -0
  175. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +1 -0
  176. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +5 -0
  177. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
  178. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +1 -0
  179. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +1 -0
  180. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
  181. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +3 -0
  182. package/bundle/typescript/src/commands/game/sideQuest/ui.js +95 -5
  183. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  184. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +60 -0
  185. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +138 -0
  186. package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -0
  187. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +143 -0
  188. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +328 -0
  189. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -0
  190. package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.d.ts +2 -0
  191. package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js +12 -0
  192. package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js.map +1 -0
  193. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +22 -0
  194. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +34 -0
  195. package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -0
  196. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +36 -0
  197. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +92 -0
  198. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -0
  199. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +44 -0
  200. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +193 -0
  201. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -0
  202. package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.d.ts +16 -0
  203. package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js +36 -0
  204. package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js.map +1 -0
  205. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +54 -7
  206. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  207. package/bundle/typescript/src/commands/set/global.sub.cmd.js +59 -5
  208. package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
  209. package/bundle/typescript/src/tools/ai/ai.class.d.ts +35 -0
  210. package/bundle/typescript/src/tools/ai/ai.class.js +112 -0
  211. package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -0
  212. package/bundle/typescript/src/tools/fsi/fsi.interfaces.d.ts +1 -0
  213. package/bundle/typescript/src/tools/fsi/fsi.interfaces.js.map +1 -1
  214. package/bundle/typescript/src/tools/https/https.class.d.ts +2 -1
  215. package/bundle/typescript/src/tools/https/https.class.js +43 -0
  216. package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
  217. package/bundle/typescript/src/tools/https/https.interface.d.ts +8 -0
  218. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/player.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Logger } from '../utilities/logger.js';
2
2
  import { Item } from './item.js';
3
3
  import { Inventory } from './inventory.js';
4
+ import { PuzzleBypassType } from '../types/seed/puzzle-seed.js';
4
5
  import { AbstractPuzzle } from '../types/shared/abstracts.js';
5
6
  export interface IPuzzleConstructorConfig {
6
7
  name: string;
@@ -11,24 +12,97 @@ export interface IPuzzleConstructorConfig {
11
12
  successMessage?: string;
12
13
  failureMessage?: string;
13
14
  hobbyTags?: string[];
15
+ bypassType?: PuzzleBypassType;
14
16
  }
15
17
  export declare class Puzzle extends AbstractPuzzle {
16
18
  protected logger: Logger;
17
19
  protected solved: boolean;
20
+ private hasAIRiddle;
18
21
  name: string;
19
22
  requiredItem?: Item;
20
23
  requiredPhrase?: string;
21
24
  riddle?: string;
22
- rewardItem: Item;
25
+ rewardItem?: Item;
23
26
  successMessage: string;
24
27
  failureMessage: string;
25
28
  hobbyTags?: string[];
29
+ requiresPuzzle?: Puzzle;
30
+ lockedMessage: string;
31
+ bypassType?: PuzzleBypassType;
32
+ private static readonly BYPASS_SUCCESS_CHANCE;
26
33
  constructor(config: IPuzzleConstructorConfig);
34
+ /**
35
+ * Player-facing hint that a risky bypass exists, without which nothing
36
+ * in the game ever tells the player "pick"/"hack"/"cast" is even an
37
+ * option here -- found via a real session where a player had no idea
38
+ * what they were supposed to "pick".
39
+ */
40
+ getBypassHint(): string | undefined;
41
+ /**
42
+ * Wired in after all puzzles in a scene exist (scene-factory.ts), since
43
+ * a prerequisite may not have been constructed yet at this puzzle's own
44
+ * construction time.
45
+ */
46
+ setRequiresPuzzle(prerequisite: Puzzle, lockedMessage?: string): void;
27
47
  isSolved(): boolean;
48
+ /**
49
+ * Rewrites the riddle's presentation once per scene load, while keeping
50
+ * `requiredPhrase` (the exact-match answer key used by `solve()`) fixed --
51
+ * so the correctness gate never drifts from what the player was actually
52
+ * asked.
53
+ */
54
+ ensureAIRiddle(sceneContext: string, roomName?: string): Promise<void>;
28
55
  hasRequiredItem(playerInventory: Inventory): boolean;
56
+ /**
57
+ * Clue items are only required to CONTAIN the answer somewhere in their
58
+ * text (e.g. "kill the power to bypass security" for a required phrase
59
+ * of "kill the power"), so a player who reasonably quotes the clue back
60
+ * verbatim types more words than the exact answer. Strict equality
61
+ * rejected that. Normalizing punctuation/whitespace and accepting the
62
+ * required phrase as a substring of the input (not just an exact match)
63
+ * fixes it without loosening things enough for a wrong guess to pass.
64
+ */
29
65
  matchesRequiredPhrase(inputPhrase: string): boolean;
30
66
  solve(providedAnswer: string, playerInventory: Inventory): {
31
67
  success: boolean;
32
68
  message: string;
33
69
  };
70
+ /**
71
+ * The risky alternate route never requires knowing requiredPhrase. Split
72
+ * into a gate check (run first, before any outcome is determined -- an
73
+ * already-solved, blocked, or type-mismatched puzzle should never make
74
+ * the player sit through an interactive minigame they were never going
75
+ * to be allowed to attempt) and applying an already-determined outcome.
76
+ * A failed attempt does NOT lock the player out of retrying (nothing
77
+ * here or elsewhere tracks attempt count), and none of this touches the
78
+ * safe solve() path -- finding the actual answer remains deterministic.
79
+ * The consequence for failure is left to the calling command (see
80
+ * commands/bypass-command.ts), expected to broadcast it as a world event
81
+ * so NPCs can react.
82
+ */
83
+ checkBypassGate(type: PuzzleBypassType): {
84
+ allowed: boolean;
85
+ message?: string;
86
+ };
87
+ /**
88
+ * Applies an outcome already determined elsewhere (a coin flip, or a live
89
+ * minigame's win/loss) to this puzzle. Assumes checkBypassGate() already
90
+ * passed -- doesn't re-check it.
91
+ */
92
+ resolveBypass(type: PuzzleBypassType, succeeded: boolean): {
93
+ success: boolean;
94
+ message: string;
95
+ alarmed: boolean;
96
+ };
97
+ /**
98
+ * Convenience wrapper: gate check + a flat coin-flip outcome. Used for
99
+ * any bypass type without its own interactive minigame yet -- see
100
+ * BypassCommand.determineOutcome(), which lockpicking overrides to run a
101
+ * real player-skill challenge instead of this coin flip.
102
+ */
103
+ attemptBypass(type: PuzzleBypassType): {
104
+ success: boolean;
105
+ message: string;
106
+ alarmed: boolean;
107
+ };
34
108
  }
@@ -1,16 +1,52 @@
1
1
  import { Logger } from '../utilities/logger.js';
2
+ import { AI } from '../../../../tools/ai/ai.class.js';
2
3
  import { AbstractPuzzle } from '../types/shared/abstracts.js';
4
+ const BYPASS_FLAVOR = {
5
+ lockpick: {
6
+ verb: 'pick',
7
+ failureMessage: `Your pick snaps in the mechanism -- and the lock's alarm isn't silent anymore.`,
8
+ hint: `This looks pickable -- try "pick" to skip finding the code, but a failed pick is fatal: no second chances.`,
9
+ },
10
+ hack: {
11
+ verb: 'hack',
12
+ failureMessage: `Your intrusion trips a countermeasure -- the system logs the attempt and pings whoever's watching.`,
13
+ hint: `This looks hackable -- try "hack" to skip finding the code, but a failed hack is fatal: no second chances.`,
14
+ },
15
+ spell: {
16
+ verb: 'cast',
17
+ failureMessage: `The weave slips through your fingers -- backlash crackles outward, and something out there felt it.`,
18
+ hint: `This looks like it could be bypassed magically -- try "cast" to skip finding the code, but a failed cast is fatal: no second chances.`,
19
+ },
20
+ };
3
21
  export class Puzzle extends AbstractPuzzle {
4
22
  logger = Logger.getInstance();
5
23
  solved = false;
24
+ hasAIRiddle = false;
6
25
  name;
7
26
  requiredItem;
8
27
  requiredPhrase;
9
28
  riddle;
29
+ // Optional: a room-anchored puzzle typically grants one, but a door-
30
+ // guarding puzzle (see Door.puzzle) usually doesn't need one -- opening
31
+ // the door already IS the reward.
10
32
  rewardItem;
11
33
  successMessage;
12
34
  failureMessage;
13
35
  hobbyTags;
36
+ // Points only at this puzzle's immediate predecessor -- chains of any
37
+ // length fall out of that naturally, since a puzzle can't become solved
38
+ // until its own prerequisite is, which cascades transitively up the
39
+ // chain with no special traversal needed at solve() time.
40
+ requiresPuzzle;
41
+ lockedMessage;
42
+ // The riddle/requiredPhrase path above is the "first layer" -- a lock,
43
+ // code, or passphrase that exists to be found and always works once
44
+ // known. bypassType is a SEPARATE, optional route past that same barrier
45
+ // that never requires knowing the answer, matching the barrier's actual
46
+ // in-fiction nature (a lock, a terminal, a ward) -- but it's a coin flip,
47
+ // and failure isn't quiet. See attemptBypass().
48
+ bypassType;
49
+ static BYPASS_SUCCESS_CHANCE = 0.5;
14
50
  constructor(config) {
15
51
  super();
16
52
  this.name = config.name;
@@ -20,24 +56,95 @@ export class Puzzle extends AbstractPuzzle {
20
56
  this.successMessage = config.successMessage || 'You solved the puzzle!';
21
57
  this.failureMessage = config.failureMessage || `You don't have the necessary item or the correct phrase to solve the puzzle.`;
22
58
  this.hobbyTags = config.hobbyTags ?? [];
23
- if (config.rewardItem) {
24
- this.rewardItem = config.rewardItem;
25
- }
26
- else {
27
- throw new Error(`No reward item defined for puzzle ${this.name}`);
59
+ this.lockedMessage = `Something else needs to happen first.`;
60
+ this.bypassType = config.bypassType;
61
+ this.rewardItem = config.rewardItem;
62
+ }
63
+ /**
64
+ * Player-facing hint that a risky bypass exists, without which nothing
65
+ * in the game ever tells the player "pick"/"hack"/"cast" is even an
66
+ * option here -- found via a real session where a player had no idea
67
+ * what they were supposed to "pick".
68
+ */
69
+ getBypassHint() {
70
+ return this.bypassType ? BYPASS_FLAVOR[this.bypassType].hint : undefined;
71
+ }
72
+ /**
73
+ * Wired in after all puzzles in a scene exist (scene-factory.ts), since
74
+ * a prerequisite may not have been constructed yet at this puzzle's own
75
+ * construction time.
76
+ */
77
+ setRequiresPuzzle(prerequisite, lockedMessage) {
78
+ this.requiresPuzzle = prerequisite;
79
+ if (lockedMessage) {
80
+ this.lockedMessage = lockedMessage;
28
81
  }
29
82
  }
30
83
  isSolved() {
31
84
  return this.solved;
32
85
  }
86
+ /**
87
+ * Rewrites the riddle's presentation once per scene load, while keeping
88
+ * `requiredPhrase` (the exact-match answer key used by `solve()`) fixed --
89
+ * so the correctness gate never drifts from what the player was actually
90
+ * asked.
91
+ */
92
+ async ensureAIRiddle(sceneContext, roomName) {
93
+ if (this.hasAIRiddle)
94
+ return;
95
+ if (!AI.isConfigured())
96
+ return;
97
+ if (!this.riddle || !this.requiredPhrase)
98
+ return;
99
+ const prompt = `
100
+ You are a game narrator rewriting what a player sees when they search a room and find a
101
+ barrier (a lock, scanner, terminal, or ward) -- NOT a riddle or poem.
102
+
103
+ Scene context: ${sceneContext}
104
+ ${roomName ? `This puzzle is found in: ${roomName}` : ''}
105
+ ${this.bypassType ? `This barrier is physically a: ${this.bypassType === 'lockpick' ? 'mechanical lock or maglock' : this.bypassType === 'hack' ? 'electronic terminal, console, or scanner' : 'magical ward or sigil'}` : ''}
106
+
107
+ The exact credential that opens it MUST remain: "${this.requiredPhrase}"
108
+ The existing description is: "${this.riddle}"
109
+
110
+ Write a NEW version, evocative but PLAIN. Start with "You see", "You find", or similar,
111
+ and name the barrier concretely -- e.g. "You see a maglock safe." or "You see a biometric
112
+ scanner beside the door." -- then say what it demands (a code, a passphrase, a name, a
113
+ fingerprint), the way an NPC would actually describe it. Do not phrase it as a riddle,
114
+ wordplay, or puzzle to decode, and do not state the credential itself outright. No more
115
+ than 3 sentences. Respond with ONLY the description text.`;
116
+ try {
117
+ const reply = await AI.ask(prompt);
118
+ this.riddle = reply;
119
+ this.hasAIRiddle = true;
120
+ this.logger.write(`Generated AI riddle for puzzle "${this.name}"`);
121
+ }
122
+ catch (err) {
123
+ this.logger.write(`AI fallback for riddle (${this.name}): ${err}`);
124
+ }
125
+ }
33
126
  hasRequiredItem(playerInventory) {
34
127
  if (this.requiredItem) {
35
128
  return playerInventory.hasItem(this.requiredItem.name);
36
129
  }
37
130
  return false;
38
131
  }
132
+ /**
133
+ * Clue items are only required to CONTAIN the answer somewhere in their
134
+ * text (e.g. "kill the power to bypass security" for a required phrase
135
+ * of "kill the power"), so a player who reasonably quotes the clue back
136
+ * verbatim types more words than the exact answer. Strict equality
137
+ * rejected that. Normalizing punctuation/whitespace and accepting the
138
+ * required phrase as a substring of the input (not just an exact match)
139
+ * fixes it without loosening things enough for a wrong guess to pass.
140
+ */
39
141
  matchesRequiredPhrase(inputPhrase) {
40
- return this.requiredPhrase === inputPhrase;
142
+ if (!this.requiredPhrase)
143
+ return false;
144
+ const normalize = (s) => s.toLowerCase().replace(/[^\w\s]/g, '').replace(/\s+/g, ' ').trim();
145
+ const required = normalize(this.requiredPhrase);
146
+ const input = normalize(inputPhrase);
147
+ return required.length > 0 && input.includes(required);
41
148
  }
42
149
  solve(providedAnswer, playerInventory) {
43
150
  if (this.solved) {
@@ -47,6 +154,13 @@ export class Puzzle extends AbstractPuzzle {
47
154
  message: 'You have already solved this puzzle.',
48
155
  };
49
156
  }
157
+ if (this.requiresPuzzle && !this.requiresPuzzle.isSolved()) {
158
+ this.logger.write(`Puzzle: Attempted "${this.name}" before prerequisite "${this.requiresPuzzle.name}" was solved.`);
159
+ return {
160
+ success: false,
161
+ message: this.lockedMessage,
162
+ };
163
+ }
50
164
  if (this.hasRequiredItem(playerInventory) || this.matchesRequiredPhrase(providedAnswer)) {
51
165
  this.solved = true;
52
166
  this.logger.write('Puzzle: Correct solution provided.');
@@ -63,5 +177,59 @@ export class Puzzle extends AbstractPuzzle {
63
177
  };
64
178
  }
65
179
  }
180
+ /**
181
+ * The risky alternate route never requires knowing requiredPhrase. Split
182
+ * into a gate check (run first, before any outcome is determined -- an
183
+ * already-solved, blocked, or type-mismatched puzzle should never make
184
+ * the player sit through an interactive minigame they were never going
185
+ * to be allowed to attempt) and applying an already-determined outcome.
186
+ * A failed attempt does NOT lock the player out of retrying (nothing
187
+ * here or elsewhere tracks attempt count), and none of this touches the
188
+ * safe solve() path -- finding the actual answer remains deterministic.
189
+ * The consequence for failure is left to the calling command (see
190
+ * commands/bypass-command.ts), expected to broadcast it as a world event
191
+ * so NPCs can react.
192
+ */
193
+ checkBypassGate(type) {
194
+ if (this.solved) {
195
+ this.logger.write('Puzzle: Attempted to bypass an already solved puzzle.');
196
+ return { allowed: false, message: 'You have already solved this puzzle.' };
197
+ }
198
+ if (this.requiresPuzzle && !this.requiresPuzzle.isSolved()) {
199
+ this.logger.write(`Puzzle: Attempted to bypass "${this.name}" before prerequisite "${this.requiresPuzzle.name}" was solved.`);
200
+ return { allowed: false, message: this.lockedMessage };
201
+ }
202
+ if (this.bypassType !== type) {
203
+ return { allowed: false, message: `This doesn't seem like something you can ${BYPASS_FLAVOR[type].verb} your way through.` };
204
+ }
205
+ return { allowed: true };
206
+ }
207
+ /**
208
+ * Applies an outcome already determined elsewhere (a coin flip, or a live
209
+ * minigame's win/loss) to this puzzle. Assumes checkBypassGate() already
210
+ * passed -- doesn't re-check it.
211
+ */
212
+ resolveBypass(type, succeeded) {
213
+ if (succeeded) {
214
+ this.solved = true;
215
+ this.logger.write(`Puzzle: Successful ${type} bypass.`);
216
+ return { success: true, message: this.successMessage, alarmed: false };
217
+ }
218
+ this.logger.write(`Puzzle: Failed ${type} bypass -- alarmed.`);
219
+ return { success: false, message: BYPASS_FLAVOR[type].failureMessage, alarmed: true };
220
+ }
221
+ /**
222
+ * Convenience wrapper: gate check + a flat coin-flip outcome. Used for
223
+ * any bypass type without its own interactive minigame yet -- see
224
+ * BypassCommand.determineOutcome(), which lockpicking overrides to run a
225
+ * real player-skill challenge instead of this coin flip.
226
+ */
227
+ attemptBypass(type) {
228
+ const gate = this.checkBypassGate(type);
229
+ if (!gate.allowed) {
230
+ return { success: false, message: gate.message ?? 'You can\'t do that here.', alarmed: false };
231
+ }
232
+ return this.resolveBypass(type, Math.random() < Puzzle.BYPASS_SUCCESS_CHANCE);
233
+ }
66
234
  }
67
235
  //# sourceMappingURL=puzzle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"puzzle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/puzzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAa9D,MAAM,OAAO,MAAO,SAAQ,cAAc;IAC9B,MAAM,GAAW,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,KAAK,CAAC;IAElB,IAAI,CAAS;IACb,YAAY,CAAQ;IACpB,cAAc,CAAU;IACxB,MAAM,CAAU;IAChB,UAAU,CAAO;IACjB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,SAAS,CAAY;IAE5B,YAAY,MAAgC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,8EAA8E,CAAC;QAC9H,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAGxC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,eAA0B;QACxC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,WAAmB;QACvC,OAAO,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAsB,EAAE,eAA0B;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sCAAsC;aAChD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;YACxF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"puzzle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/puzzle.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ import { Door } from './door.js';
6
6
  import { Inventory } from './inventory.js';
7
7
  import { Player } from './player.js';
8
8
  import { AbstractRoom } from '../types/shared/abstracts.js';
9
+ export interface PuzzleTarget {
10
+ puzzle: Puzzle;
11
+ label: string;
12
+ direction?: Direction;
13
+ door?: Door;
14
+ }
9
15
  export interface IRoomConstructorConfig {
10
16
  name: string;
11
17
  description: string;
@@ -16,6 +22,8 @@ export interface IRoomConstructorConfig {
16
22
  puzzle?: Puzzle;
17
23
  isStartRoom?: boolean;
18
24
  tags?: string[];
25
+ hasNode?: boolean;
26
+ warded?: boolean;
19
27
  supportedLifestyles?: {
20
28
  residenceTypes?: ('Street' | 'Squatter' | 'Low' | 'Middle' | 'High' | 'Luxury')[];
21
29
  employmentRoles?: string[];
@@ -40,7 +48,10 @@ export declare class Room extends AbstractRoom {
40
48
  };
41
49
  governsCurrency: boolean;
42
50
  tags?: string[];
51
+ searchedBy: Set<string>;
43
52
  private _currencyLedger;
53
+ hasNode: boolean;
54
+ warded: boolean;
44
55
  constructor(config: IRoomConstructorConfig);
45
56
  get owner(): string | undefined;
46
57
  set owner(owner: string | undefined);
@@ -53,6 +64,15 @@ export declare class Room extends AbstractRoom {
53
64
  attemptUnlockExit(direction: Direction, itemOrSolution: string): string;
54
65
  getExit(direction: Direction): Door | string | undefined;
55
66
  isExitLocked(direction: Direction): boolean;
67
+ /**
68
+ * Every unsolved barrier a player standing here could currently `solve`,
69
+ * `pick`, `hack`, or `cast` at: this room's own puzzle (if any), plus any
70
+ * still-locked exit whose door carries one (see Door.puzzle). A door
71
+ * target carries its direction and the Door itself, since succeeding
72
+ * against it unlocks the door rather than granting an item -- see
73
+ * solve.ts / bypass-command.ts.
74
+ */
75
+ getPuzzleTargets(): PuzzleTarget[];
56
76
  addItem(item: Item): void;
57
77
  removeItem(item: Item): void;
58
78
  setPuzzle(puzzle: Puzzle): void;
@@ -2,7 +2,7 @@ import { Logger } from '../utilities/logger.js';
2
2
  import { Direction } from '../types/shared/direction-enum.js';
3
3
  import { Door } from './door.js';
4
4
  import { Inventory } from './inventory.js';
5
- import { HTTPS } from '../../../../tools/https/https.class.js';
5
+ import { AI } from '../../../../tools/ai/ai.class.js';
6
6
  import { AbstractRoom } from '../types/shared/abstracts.js';
7
7
  export class Room extends AbstractRoom {
8
8
  logger = Logger.getInstance();
@@ -19,12 +19,22 @@ export class Room extends AbstractRoom {
19
19
  supportedLifestyles;
20
20
  governsCurrency = false;
21
21
  tags;
22
+ // Who has actually cased this room ("search"): gates "take all" -- you
23
+ // can't sweep a room you haven't searched. Per-actor by name, and the
24
+ // designated future hook for perception checks: when those arrive, a
25
+ // search will record WHAT each actor's roll actually revealed here
26
+ // (per-item), not just that they looked.
27
+ searchedBy = new Set();
22
28
  _currencyLedger = new Map(); // playerName → currency carrier items
29
+ hasNode = false;
30
+ warded = false;
23
31
  constructor(config) {
24
32
  super();
25
33
  this.name = config.name;
26
34
  this.description = config.description;
27
35
  this.roomType = config.roomType;
36
+ this.hasNode = config.hasNode ?? false;
37
+ this.warded = config.warded ?? false;
28
38
  this.exits = config.exits || new Map();
29
39
  this.inventory = config.inventory || new Inventory();
30
40
  this.puzzle = config.puzzle;
@@ -40,7 +50,7 @@ export class Room extends AbstractRoom {
40
50
  this._owner = owner;
41
51
  }
42
52
  async ensureAIDescription(sceneContext) {
43
- if (!this.hasAIDescription) {
53
+ if (!this.hasAIDescription && AI.isConfigured()) {
44
54
  const prompt = `
45
55
  You are a game narrator. Based on the following context, generate a rich, immersive description of the current room that enhances but does not repeat the existing description.
46
56
 
@@ -52,23 +62,13 @@ Room description: ${this.description}
52
62
  Include any mood, atmosphere, or inferred meaning from the surroundings.
53
63
  Keep it concise and dramatic.`;
54
64
  try {
55
- const result = await HTTPS.askGPT({
56
- prompt,
57
- openApiKey: process.env.OPENAI_API_KEY || '',
58
- model: 'gpt-4.1'
59
- });
60
- if (JSON.parse(result.data).error) {
61
- throw new Error(JSON.parse(result.data).error.message);
62
- }
63
- const reply = JSON.parse(result.data)?.choices?.[0]?.message?.content?.trim();
64
- if (reply) {
65
- this.details = reply;
66
- this.hasAIDescription = true;
67
- this.logger.write(`Generated AI description for ${this.name}`);
68
- }
65
+ const reply = await AI.ask(prompt);
66
+ this.details = reply;
67
+ this.hasAIDescription = true;
68
+ this.logger.write(`Generated AI description for ${this.name}`);
69
69
  }
70
70
  catch (err) {
71
- this.logger.write(`GPT fallback for AI description: ${err}`);
71
+ this.logger.write(`AI fallback for description: ${err}`);
72
72
  }
73
73
  }
74
74
  }
@@ -130,7 +130,8 @@ Keep it concise and dramatic.`;
130
130
  if (exit instanceof Door) {
131
131
  const result = exit.attemptUnlock(itemOrSolution);
132
132
  this.logger.write(`Attempted to unlock exit in direction ${direction}. Success: ${result}`);
133
- return result ? `The ${exit.roomB.name}!` : `The ${exit.roomB.name} remains locked.`;
133
+ const targetRoomName = exit.getOtherSide(this).name;
134
+ return result ? `You unlock the way to ${targetRoomName}.` : `The door to ${targetRoomName} remains locked.`;
134
135
  }
135
136
  this.logger.write(`No locked exit found in direction ${direction}`);
136
137
  return `There's no locked exit in that direction.`;
@@ -145,6 +146,26 @@ Keep it concise and dramatic.`;
145
146
  this.logger.write(`Checking if exit in direction ${direction} is locked. Result: ${isLocked}`);
146
147
  return isLocked;
147
148
  }
149
+ /**
150
+ * Every unsolved barrier a player standing here could currently `solve`,
151
+ * `pick`, `hack`, or `cast` at: this room's own puzzle (if any), plus any
152
+ * still-locked exit whose door carries one (see Door.puzzle). A door
153
+ * target carries its direction and the Door itself, since succeeding
154
+ * against it unlocks the door rather than granting an item -- see
155
+ * solve.ts / bypass-command.ts.
156
+ */
157
+ getPuzzleTargets() {
158
+ const targets = [];
159
+ if (this.puzzle && !this.puzzle.isSolved()) {
160
+ targets.push({ puzzle: this.puzzle, label: this.puzzle.name });
161
+ }
162
+ for (const [direction, exit] of this.exits.entries()) {
163
+ if (exit instanceof Door && exit.puzzle && exit.checkIfLocked() && !exit.puzzle.isSolved()) {
164
+ targets.push({ puzzle: exit.puzzle, label: exit.puzzle.name, direction, door: exit });
165
+ }
166
+ }
167
+ return targets;
168
+ }
148
169
  addItem(item) {
149
170
  this.inventory.addItem(item);
150
171
  this.logger.write(`Item added to room ${this.name}: ${item.name}`);