idlerpg.sh 0.1.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 (478) hide show
  1. package/README.md +171 -0
  2. package/dist/affix/AffixRegistry.d.ts +68 -0
  3. package/dist/affix/AffixRegistry.d.ts.map +1 -0
  4. package/dist/affix/AffixRegistry.js +245 -0
  5. package/dist/affix/AffixRegistry.js.map +1 -0
  6. package/dist/affix/PluginLoader.d.ts +66 -0
  7. package/dist/affix/PluginLoader.d.ts.map +1 -0
  8. package/dist/affix/PluginLoader.js +321 -0
  9. package/dist/affix/PluginLoader.js.map +1 -0
  10. package/dist/affix/builtin.d.ts +6 -0
  11. package/dist/affix/builtin.d.ts.map +1 -0
  12. package/dist/affix/builtin.js +311 -0
  13. package/dist/affix/builtin.js.map +1 -0
  14. package/dist/affix/index.d.ts +8 -0
  15. package/dist/affix/index.d.ts.map +1 -0
  16. package/dist/affix/index.js +11 -0
  17. package/dist/affix/index.js.map +1 -0
  18. package/dist/affix/types.d.ts +152 -0
  19. package/dist/affix/types.d.ts.map +1 -0
  20. package/dist/affix/types.js +8 -0
  21. package/dist/affix/types.js.map +1 -0
  22. package/dist/ai/PlayKitClient.d.ts +208 -0
  23. package/dist/ai/PlayKitClient.d.ts.map +1 -0
  24. package/dist/ai/PlayKitClient.js +721 -0
  25. package/dist/ai/PlayKitClient.js.map +1 -0
  26. package/dist/ai/index.d.ts +5 -0
  27. package/dist/ai/index.d.ts.map +1 -0
  28. package/dist/ai/index.js +8 -0
  29. package/dist/ai/index.js.map +1 -0
  30. package/dist/app/App.d.ts +85 -0
  31. package/dist/app/App.d.ts.map +1 -0
  32. package/dist/app/App.js +296 -0
  33. package/dist/app/App.js.map +1 -0
  34. package/dist/app/EventBus.d.ts +222 -0
  35. package/dist/app/EventBus.d.ts.map +1 -0
  36. package/dist/app/EventBus.js +88 -0
  37. package/dist/app/EventBus.js.map +1 -0
  38. package/dist/app/Keybind.d.ts +83 -0
  39. package/dist/app/Keybind.d.ts.map +1 -0
  40. package/dist/app/Keybind.js +184 -0
  41. package/dist/app/Keybind.js.map +1 -0
  42. package/dist/app/Router.d.ts +123 -0
  43. package/dist/app/Router.d.ts.map +1 -0
  44. package/dist/app/Router.js +142 -0
  45. package/dist/app/Router.js.map +1 -0
  46. package/dist/app/ScreenManager.d.ts +97 -0
  47. package/dist/app/ScreenManager.d.ts.map +1 -0
  48. package/dist/app/ScreenManager.js +216 -0
  49. package/dist/app/ScreenManager.js.map +1 -0
  50. package/dist/app/index.d.ts +14 -0
  51. package/dist/app/index.d.ts.map +1 -0
  52. package/dist/app/index.js +19 -0
  53. package/dist/app/index.js.map +1 -0
  54. package/dist/app/screens/BaseScreen.d.ts +101 -0
  55. package/dist/app/screens/BaseScreen.d.ts.map +1 -0
  56. package/dist/app/screens/BaseScreen.js +132 -0
  57. package/dist/app/screens/BaseScreen.js.map +1 -0
  58. package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
  59. package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
  60. package/dist/app/screens/CharacterCreationScreen.js +467 -0
  61. package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
  62. package/dist/app/screens/CombatScreen.d.ts +30 -0
  63. package/dist/app/screens/CombatScreen.d.ts.map +1 -0
  64. package/dist/app/screens/CombatScreen.js +309 -0
  65. package/dist/app/screens/CombatScreen.js.map +1 -0
  66. package/dist/app/screens/DialogScreen.d.ts +29 -0
  67. package/dist/app/screens/DialogScreen.d.ts.map +1 -0
  68. package/dist/app/screens/DialogScreen.js +295 -0
  69. package/dist/app/screens/DialogScreen.js.map +1 -0
  70. package/dist/app/screens/ExploreScreen.d.ts +50 -0
  71. package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
  72. package/dist/app/screens/ExploreScreen.js +308 -0
  73. package/dist/app/screens/ExploreScreen.js.map +1 -0
  74. package/dist/app/screens/HelpScreen.d.ts +12 -0
  75. package/dist/app/screens/HelpScreen.d.ts.map +1 -0
  76. package/dist/app/screens/HelpScreen.js +155 -0
  77. package/dist/app/screens/HelpScreen.js.map +1 -0
  78. package/dist/app/screens/InventoryScreen.d.ts +27 -0
  79. package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
  80. package/dist/app/screens/InventoryScreen.js +326 -0
  81. package/dist/app/screens/InventoryScreen.js.map +1 -0
  82. package/dist/app/screens/PrologueScreen.d.ts +24 -0
  83. package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
  84. package/dist/app/screens/PrologueScreen.js +176 -0
  85. package/dist/app/screens/PrologueScreen.js.map +1 -0
  86. package/dist/app/screens/TitleScreen.d.ts +42 -0
  87. package/dist/app/screens/TitleScreen.d.ts.map +1 -0
  88. package/dist/app/screens/TitleScreen.js +380 -0
  89. package/dist/app/screens/TitleScreen.js.map +1 -0
  90. package/dist/app/screens/TravelScreen.d.ts +22 -0
  91. package/dist/app/screens/TravelScreen.d.ts.map +1 -0
  92. package/dist/app/screens/TravelScreen.js +122 -0
  93. package/dist/app/screens/TravelScreen.js.map +1 -0
  94. package/dist/app/screens/index.d.ts +14 -0
  95. package/dist/app/screens/index.d.ts.map +1 -0
  96. package/dist/app/screens/index.js +17 -0
  97. package/dist/app/screens/index.js.map +1 -0
  98. package/dist/commands/CommandRegistry.d.ts +91 -0
  99. package/dist/commands/CommandRegistry.d.ts.map +1 -0
  100. package/dist/commands/CommandRegistry.js +159 -0
  101. package/dist/commands/CommandRegistry.js.map +1 -0
  102. package/dist/commands/index.d.ts +7 -0
  103. package/dist/commands/index.d.ts.map +1 -0
  104. package/dist/commands/index.js +10 -0
  105. package/dist/commands/index.js.map +1 -0
  106. package/dist/core/Actor.d.ts +103 -0
  107. package/dist/core/Actor.d.ts.map +1 -0
  108. package/dist/core/Actor.js +409 -0
  109. package/dist/core/Actor.js.map +1 -0
  110. package/dist/core/Combat.d.ts +37 -0
  111. package/dist/core/Combat.d.ts.map +1 -0
  112. package/dist/core/Combat.js +294 -0
  113. package/dist/core/Combat.js.map +1 -0
  114. package/dist/core/DungeonRunner.d.ts +169 -0
  115. package/dist/core/DungeonRunner.d.ts.map +1 -0
  116. package/dist/core/DungeonRunner.js +627 -0
  117. package/dist/core/DungeonRunner.js.map +1 -0
  118. package/dist/core/Game.d.ts +133 -0
  119. package/dist/core/Game.d.ts.map +1 -0
  120. package/dist/core/Game.js +644 -0
  121. package/dist/core/Game.js.map +1 -0
  122. package/dist/core/IdleCombat.d.ts +61 -0
  123. package/dist/core/IdleCombat.d.ts.map +1 -0
  124. package/dist/core/IdleCombat.js +461 -0
  125. package/dist/core/IdleCombat.js.map +1 -0
  126. package/dist/core/IdleGameManager.d.ts +198 -0
  127. package/dist/core/IdleGameManager.d.ts.map +1 -0
  128. package/dist/core/IdleGameManager.js +688 -0
  129. package/dist/core/IdleGameManager.js.map +1 -0
  130. package/dist/core/IdleSaveManager.d.ts +109 -0
  131. package/dist/core/IdleSaveManager.d.ts.map +1 -0
  132. package/dist/core/IdleSaveManager.js +296 -0
  133. package/dist/core/IdleSaveManager.js.map +1 -0
  134. package/dist/core/NewGameFlowManager.d.ts +64 -0
  135. package/dist/core/NewGameFlowManager.d.ts.map +1 -0
  136. package/dist/core/NewGameFlowManager.js +153 -0
  137. package/dist/core/NewGameFlowManager.js.map +1 -0
  138. package/dist/core/Player.d.ts +65 -0
  139. package/dist/core/Player.d.ts.map +1 -0
  140. package/dist/core/Player.js +261 -0
  141. package/dist/core/Player.js.map +1 -0
  142. package/dist/core/RoomHandlers.d.ts +75 -0
  143. package/dist/core/RoomHandlers.d.ts.map +1 -0
  144. package/dist/core/RoomHandlers.js +383 -0
  145. package/dist/core/RoomHandlers.js.map +1 -0
  146. package/dist/core/SaveManager.d.ts +84 -0
  147. package/dist/core/SaveManager.d.ts.map +1 -0
  148. package/dist/core/SaveManager.js +281 -0
  149. package/dist/core/SaveManager.js.map +1 -0
  150. package/dist/core/SaveMigration.d.ts +69 -0
  151. package/dist/core/SaveMigration.d.ts.map +1 -0
  152. package/dist/core/SaveMigration.js +408 -0
  153. package/dist/core/SaveMigration.js.map +1 -0
  154. package/dist/core/StateAdapter.d.ts +79 -0
  155. package/dist/core/StateAdapter.d.ts.map +1 -0
  156. package/dist/core/StateAdapter.js +397 -0
  157. package/dist/core/StateAdapter.js.map +1 -0
  158. package/dist/core/Team.d.ts +145 -0
  159. package/dist/core/Team.d.ts.map +1 -0
  160. package/dist/core/Team.js +371 -0
  161. package/dist/core/Team.js.map +1 -0
  162. package/dist/core/TeamCombat.d.ts +88 -0
  163. package/dist/core/TeamCombat.d.ts.map +1 -0
  164. package/dist/core/TeamCombat.js +405 -0
  165. package/dist/core/TeamCombat.js.map +1 -0
  166. package/dist/core/TeamDungeonRunner.d.ts +186 -0
  167. package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
  168. package/dist/core/TeamDungeonRunner.js +758 -0
  169. package/dist/core/TeamDungeonRunner.js.map +1 -0
  170. package/dist/core/TimeManager.d.ts +114 -0
  171. package/dist/core/TimeManager.d.ts.map +1 -0
  172. package/dist/core/TimeManager.js +318 -0
  173. package/dist/core/TimeManager.js.map +1 -0
  174. package/dist/core/index.d.ts +9 -0
  175. package/dist/core/index.d.ts.map +1 -0
  176. package/dist/core/index.js +12 -0
  177. package/dist/core/index.js.map +1 -0
  178. package/dist/core/timeConstants.d.ts +135 -0
  179. package/dist/core/timeConstants.d.ts.map +1 -0
  180. package/dist/core/timeConstants.js +157 -0
  181. package/dist/core/timeConstants.js.map +1 -0
  182. package/dist/core/types.d.ts +780 -0
  183. package/dist/core/types.d.ts.map +1 -0
  184. package/dist/core/types.js +16 -0
  185. package/dist/core/types.js.map +1 -0
  186. package/dist/data/continents/index.d.ts +163 -0
  187. package/dist/data/continents/index.d.ts.map +1 -0
  188. package/dist/data/continents/index.js +31 -0
  189. package/dist/data/continents/index.js.map +1 -0
  190. package/dist/data/continents/verdantia.d.ts +294 -0
  191. package/dist/data/continents/verdantia.d.ts.map +1 -0
  192. package/dist/data/continents/verdantia.js +327 -0
  193. package/dist/data/continents/verdantia.js.map +1 -0
  194. package/dist/handlers/DialogHandler.d.ts +95 -0
  195. package/dist/handlers/DialogHandler.d.ts.map +1 -0
  196. package/dist/handlers/DialogHandler.js +450 -0
  197. package/dist/handlers/DialogHandler.js.map +1 -0
  198. package/dist/handlers/SaveLoadHandler.d.ts +60 -0
  199. package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
  200. package/dist/handlers/SaveLoadHandler.js +187 -0
  201. package/dist/handlers/SaveLoadHandler.js.map +1 -0
  202. package/dist/handlers/TitleScreenHandler.d.ts +43 -0
  203. package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
  204. package/dist/handlers/TitleScreenHandler.js +508 -0
  205. package/dist/handlers/TitleScreenHandler.js.map +1 -0
  206. package/dist/handlers/WorkshopHandler.d.ts +75 -0
  207. package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
  208. package/dist/handlers/WorkshopHandler.js +401 -0
  209. package/dist/handlers/WorkshopHandler.js.map +1 -0
  210. package/dist/handlers/index.d.ts +12 -0
  211. package/dist/handlers/index.d.ts.map +1 -0
  212. package/dist/handlers/index.js +14 -0
  213. package/dist/handlers/index.js.map +1 -0
  214. package/dist/handlers/types.d.ts +34 -0
  215. package/dist/handlers/types.d.ts.map +1 -0
  216. package/dist/handlers/types.js +8 -0
  217. package/dist/handlers/types.js.map +1 -0
  218. package/dist/i18n/en.d.ts +3 -0
  219. package/dist/i18n/en.d.ts.map +1 -0
  220. package/dist/i18n/en.js +130 -0
  221. package/dist/i18n/en.js.map +1 -0
  222. package/dist/i18n/index.d.ts +40 -0
  223. package/dist/i18n/index.d.ts.map +1 -0
  224. package/dist/i18n/index.js +105 -0
  225. package/dist/i18n/index.js.map +1 -0
  226. package/dist/i18n/types.d.ts +133 -0
  227. package/dist/i18n/types.d.ts.map +1 -0
  228. package/dist/i18n/types.js +8 -0
  229. package/dist/i18n/types.js.map +1 -0
  230. package/dist/i18n/zh.d.ts +3 -0
  231. package/dist/i18n/zh.d.ts.map +1 -0
  232. package/dist/i18n/zh.js +130 -0
  233. package/dist/i18n/zh.js.map +1 -0
  234. package/dist/instrument.d.ts +8 -0
  235. package/dist/instrument.d.ts.map +1 -0
  236. package/dist/instrument.js +33 -0
  237. package/dist/instrument.js.map +1 -0
  238. package/dist/main-new.d.ts +12 -0
  239. package/dist/main-new.d.ts.map +1 -0
  240. package/dist/main-new.js +32 -0
  241. package/dist/main-new.js.map +1 -0
  242. package/dist/main.d.ts +7 -0
  243. package/dist/main.d.ts.map +1 -0
  244. package/dist/main.js +2816 -0
  245. package/dist/main.js.map +1 -0
  246. package/dist/map/ContinentManager.d.ts +88 -0
  247. package/dist/map/ContinentManager.d.ts.map +1 -0
  248. package/dist/map/ContinentManager.js +241 -0
  249. package/dist/map/ContinentManager.js.map +1 -0
  250. package/dist/map/DungeonGenerator.d.ts +32 -0
  251. package/dist/map/DungeonGenerator.d.ts.map +1 -0
  252. package/dist/map/DungeonGenerator.js +615 -0
  253. package/dist/map/DungeonGenerator.js.map +1 -0
  254. package/dist/map/MapGenerator.d.ts +27 -0
  255. package/dist/map/MapGenerator.d.ts.map +1 -0
  256. package/dist/map/MapGenerator.js +485 -0
  257. package/dist/map/MapGenerator.js.map +1 -0
  258. package/dist/map/index.d.ts +5 -0
  259. package/dist/map/index.d.ts.map +1 -0
  260. package/dist/map/index.js +8 -0
  261. package/dist/map/index.js.map +1 -0
  262. package/dist/npc/NPCGenerator.d.ts +68 -0
  263. package/dist/npc/NPCGenerator.d.ts.map +1 -0
  264. package/dist/npc/NPCGenerator.js +468 -0
  265. package/dist/npc/NPCGenerator.js.map +1 -0
  266. package/dist/npc/NPCManager.d.ts +86 -0
  267. package/dist/npc/NPCManager.d.ts.map +1 -0
  268. package/dist/npc/NPCManager.js +217 -0
  269. package/dist/npc/NPCManager.js.map +1 -0
  270. package/dist/npc/fixedNPCs.d.ts +7 -0
  271. package/dist/npc/fixedNPCs.d.ts.map +1 -0
  272. package/dist/npc/fixedNPCs.js +196 -0
  273. package/dist/npc/fixedNPCs.js.map +1 -0
  274. package/dist/npc/index.d.ts +9 -0
  275. package/dist/npc/index.d.ts.map +1 -0
  276. package/dist/npc/index.js +12 -0
  277. package/dist/npc/index.js.map +1 -0
  278. package/dist/npc/traits.d.ts +33 -0
  279. package/dist/npc/traits.d.ts.map +1 -0
  280. package/dist/npc/traits.js +795 -0
  281. package/dist/npc/traits.js.map +1 -0
  282. package/dist/npc/types.d.ts +193 -0
  283. package/dist/npc/types.d.ts.map +1 -0
  284. package/dist/npc/types.js +9 -0
  285. package/dist/npc/types.js.map +1 -0
  286. package/dist/quest/QuestManager.d.ts +79 -0
  287. package/dist/quest/QuestManager.d.ts.map +1 -0
  288. package/dist/quest/QuestManager.js +273 -0
  289. package/dist/quest/QuestManager.js.map +1 -0
  290. package/dist/quest/index.d.ts +6 -0
  291. package/dist/quest/index.d.ts.map +1 -0
  292. package/dist/quest/index.js +9 -0
  293. package/dist/quest/index.js.map +1 -0
  294. package/dist/quest/types.d.ts +81 -0
  295. package/dist/quest/types.d.ts.map +1 -0
  296. package/dist/quest/types.js +8 -0
  297. package/dist/quest/types.js.map +1 -0
  298. package/dist/strategy/StrategyExecutor.d.ts +159 -0
  299. package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
  300. package/dist/strategy/StrategyExecutor.js +479 -0
  301. package/dist/strategy/StrategyExecutor.js.map +1 -0
  302. package/dist/strategy/StrategyParser.d.ts +48 -0
  303. package/dist/strategy/StrategyParser.d.ts.map +1 -0
  304. package/dist/strategy/StrategyParser.js +321 -0
  305. package/dist/strategy/StrategyParser.js.map +1 -0
  306. package/dist/strategy/defaultStrategy.d.ts +40 -0
  307. package/dist/strategy/defaultStrategy.d.ts.map +1 -0
  308. package/dist/strategy/defaultStrategy.js +254 -0
  309. package/dist/strategy/defaultStrategy.js.map +1 -0
  310. package/dist/strategy/index.d.ts +8 -0
  311. package/dist/strategy/index.d.ts.map +1 -0
  312. package/dist/strategy/index.js +14 -0
  313. package/dist/strategy/index.js.map +1 -0
  314. package/dist/tui/ExploreMenu.d.ts +106 -0
  315. package/dist/tui/ExploreMenu.d.ts.map +1 -0
  316. package/dist/tui/ExploreMenu.js +282 -0
  317. package/dist/tui/ExploreMenu.js.map +1 -0
  318. package/dist/tui/GameUI.d.ts +313 -0
  319. package/dist/tui/GameUI.d.ts.map +1 -0
  320. package/dist/tui/GameUI.js +2116 -0
  321. package/dist/tui/GameUI.js.map +1 -0
  322. package/dist/tui/GameUIAdapter.d.ts +207 -0
  323. package/dist/tui/GameUIAdapter.d.ts.map +1 -0
  324. package/dist/tui/GameUIAdapter.js +1342 -0
  325. package/dist/tui/GameUIAdapter.js.map +1 -0
  326. package/dist/tui/Input.d.ts +139 -0
  327. package/dist/tui/Input.d.ts.map +1 -0
  328. package/dist/tui/Input.js +278 -0
  329. package/dist/tui/Input.js.map +1 -0
  330. package/dist/tui/Menu.d.ts +110 -0
  331. package/dist/tui/Menu.d.ts.map +1 -0
  332. package/dist/tui/Menu.js +365 -0
  333. package/dist/tui/Menu.js.map +1 -0
  334. package/dist/tui/Screen.d.ts +228 -0
  335. package/dist/tui/Screen.d.ts.map +1 -0
  336. package/dist/tui/Screen.js +502 -0
  337. package/dist/tui/Screen.js.map +1 -0
  338. package/dist/tui/components/Box.d.ts +36 -0
  339. package/dist/tui/components/Box.d.ts.map +1 -0
  340. package/dist/tui/components/Box.js +43 -0
  341. package/dist/tui/components/Box.js.map +1 -0
  342. package/dist/tui/components/List.d.ts +69 -0
  343. package/dist/tui/components/List.d.ts.map +1 -0
  344. package/dist/tui/components/List.js +136 -0
  345. package/dist/tui/components/List.js.map +1 -0
  346. package/dist/tui/components/ProgressBar.d.ts +42 -0
  347. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  348. package/dist/tui/components/ProgressBar.js +75 -0
  349. package/dist/tui/components/ProgressBar.js.map +1 -0
  350. package/dist/tui/components/index.d.ts +8 -0
  351. package/dist/tui/components/index.d.ts.map +1 -0
  352. package/dist/tui/components/index.js +11 -0
  353. package/dist/tui/components/index.js.map +1 -0
  354. package/dist/tui/core/BaseSection.d.ts +98 -0
  355. package/dist/tui/core/BaseSection.d.ts.map +1 -0
  356. package/dist/tui/core/BaseSection.js +174 -0
  357. package/dist/tui/core/BaseSection.js.map +1 -0
  358. package/dist/tui/core/Component.d.ts +61 -0
  359. package/dist/tui/core/Component.d.ts.map +1 -0
  360. package/dist/tui/core/Component.js +32 -0
  361. package/dist/tui/core/Component.js.map +1 -0
  362. package/dist/tui/core/Section.d.ts +101 -0
  363. package/dist/tui/core/Section.d.ts.map +1 -0
  364. package/dist/tui/core/Section.js +24 -0
  365. package/dist/tui/core/Section.js.map +1 -0
  366. package/dist/tui/core/SectionManager.d.ts +108 -0
  367. package/dist/tui/core/SectionManager.d.ts.map +1 -0
  368. package/dist/tui/core/SectionManager.js +258 -0
  369. package/dist/tui/core/SectionManager.js.map +1 -0
  370. package/dist/tui/core/index.d.ts +9 -0
  371. package/dist/tui/core/index.d.ts.map +1 -0
  372. package/dist/tui/core/index.js +12 -0
  373. package/dist/tui/core/index.js.map +1 -0
  374. package/dist/tui/index.d.ts +15 -0
  375. package/dist/tui/index.d.ts.map +1 -0
  376. package/dist/tui/index.js +23 -0
  377. package/dist/tui/index.js.map +1 -0
  378. package/dist/tui/screens/BaseScreen.d.ts +62 -0
  379. package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
  380. package/dist/tui/screens/BaseScreen.js +55 -0
  381. package/dist/tui/screens/BaseScreen.js.map +1 -0
  382. package/dist/tui/screens/CombatScreen.d.ts +43 -0
  383. package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
  384. package/dist/tui/screens/CombatScreen.js +125 -0
  385. package/dist/tui/screens/CombatScreen.js.map +1 -0
  386. package/dist/tui/screens/DialogScreen.d.ts +53 -0
  387. package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
  388. package/dist/tui/screens/DialogScreen.js +90 -0
  389. package/dist/tui/screens/DialogScreen.js.map +1 -0
  390. package/dist/tui/screens/DungeonScreen.d.ts +80 -0
  391. package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
  392. package/dist/tui/screens/DungeonScreen.js +317 -0
  393. package/dist/tui/screens/DungeonScreen.js.map +1 -0
  394. package/dist/tui/screens/ExploreScreen.d.ts +69 -0
  395. package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
  396. package/dist/tui/screens/ExploreScreen.js +224 -0
  397. package/dist/tui/screens/ExploreScreen.js.map +1 -0
  398. package/dist/tui/screens/SectionScreen.d.ts +84 -0
  399. package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
  400. package/dist/tui/screens/SectionScreen.js +156 -0
  401. package/dist/tui/screens/SectionScreen.js.map +1 -0
  402. package/dist/tui/screens/TitleScreen.d.ts +40 -0
  403. package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
  404. package/dist/tui/screens/TitleScreen.js +253 -0
  405. package/dist/tui/screens/TitleScreen.js.map +1 -0
  406. package/dist/tui/screens/TownScreen.d.ts +98 -0
  407. package/dist/tui/screens/TownScreen.d.ts.map +1 -0
  408. package/dist/tui/screens/TownScreen.js +370 -0
  409. package/dist/tui/screens/TownScreen.js.map +1 -0
  410. package/dist/tui/screens/TravelScreen.d.ts +67 -0
  411. package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
  412. package/dist/tui/screens/TravelScreen.js +286 -0
  413. package/dist/tui/screens/TravelScreen.js.map +1 -0
  414. package/dist/tui/screens/index.d.ts +8 -0
  415. package/dist/tui/screens/index.d.ts.map +1 -0
  416. package/dist/tui/screens/index.js +17 -0
  417. package/dist/tui/screens/index.js.map +1 -0
  418. package/dist/tui/sections/ActionsSection.d.ts +71 -0
  419. package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
  420. package/dist/tui/sections/ActionsSection.js +184 -0
  421. package/dist/tui/sections/ActionsSection.js.map +1 -0
  422. package/dist/tui/sections/DungeonSection.d.ts +65 -0
  423. package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
  424. package/dist/tui/sections/DungeonSection.js +144 -0
  425. package/dist/tui/sections/DungeonSection.js.map +1 -0
  426. package/dist/tui/sections/EventsSection.d.ts +50 -0
  427. package/dist/tui/sections/EventsSection.d.ts.map +1 -0
  428. package/dist/tui/sections/EventsSection.js +134 -0
  429. package/dist/tui/sections/EventsSection.js.map +1 -0
  430. package/dist/tui/sections/MapSection.d.ts +66 -0
  431. package/dist/tui/sections/MapSection.d.ts.map +1 -0
  432. package/dist/tui/sections/MapSection.js +669 -0
  433. package/dist/tui/sections/MapSection.js.map +1 -0
  434. package/dist/tui/sections/StatusSection.d.ts +47 -0
  435. package/dist/tui/sections/StatusSection.d.ts.map +1 -0
  436. package/dist/tui/sections/StatusSection.js +133 -0
  437. package/dist/tui/sections/StatusSection.js.map +1 -0
  438. package/dist/tui/sections/TeamSection.d.ts +71 -0
  439. package/dist/tui/sections/TeamSection.d.ts.map +1 -0
  440. package/dist/tui/sections/TeamSection.js +224 -0
  441. package/dist/tui/sections/TeamSection.js.map +1 -0
  442. package/dist/tui/sections/TravelingSection.d.ts +51 -0
  443. package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
  444. package/dist/tui/sections/TravelingSection.js +106 -0
  445. package/dist/tui/sections/TravelingSection.js.map +1 -0
  446. package/dist/tui/sections/index.d.ts +9 -0
  447. package/dist/tui/sections/index.d.ts.map +1 -0
  448. package/dist/tui/sections/index.js +12 -0
  449. package/dist/tui/sections/index.js.map +1 -0
  450. package/dist/ui/Terminal.d.ts +68 -0
  451. package/dist/ui/Terminal.d.ts.map +1 -0
  452. package/dist/ui/Terminal.js +297 -0
  453. package/dist/ui/Terminal.js.map +1 -0
  454. package/dist/ui/index.d.ts +5 -0
  455. package/dist/ui/index.d.ts.map +1 -0
  456. package/dist/ui/index.js +8 -0
  457. package/dist/ui/index.js.map +1 -0
  458. package/dist/utils/configMigration.d.ts +14 -0
  459. package/dist/utils/configMigration.d.ts.map +1 -0
  460. package/dist/utils/configMigration.js +92 -0
  461. package/dist/utils/configMigration.js.map +1 -0
  462. package/dist/utils/errorHandler.d.ts +86 -0
  463. package/dist/utils/errorHandler.d.ts.map +1 -0
  464. package/dist/utils/errorHandler.js +224 -0
  465. package/dist/utils/errorHandler.js.map +1 -0
  466. package/dist/utils/logger.d.ts +14 -0
  467. package/dist/utils/logger.d.ts.map +1 -0
  468. package/dist/utils/logger.js +43 -0
  469. package/dist/utils/logger.js.map +1 -0
  470. package/dist/weapon/WeaponFactory.d.ts +32 -0
  471. package/dist/weapon/WeaponFactory.d.ts.map +1 -0
  472. package/dist/weapon/WeaponFactory.js +216 -0
  473. package/dist/weapon/WeaponFactory.js.map +1 -0
  474. package/dist/weapon/index.d.ts +5 -0
  475. package/dist/weapon/index.d.ts.map +1 -0
  476. package/dist/weapon/index.js +8 -0
  477. package/dist/weapon/index.js.map +1 -0
  478. package/package.json +46 -0
@@ -0,0 +1,130 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8a6506c1-bd17-5f6b-81c8-a79b4489b899")}catch(e){}}();
3
+ export const en = {
4
+ strings: {
5
+ game: {
6
+ title: 'IDLERPG.TERMINAL',
7
+ subtitle: 'An AI-native game that lives in your terminal.',
8
+ version: 'v0.1.0',
9
+ },
10
+ ui: {
11
+ map: 'Map',
12
+ inventory: 'Inventory',
13
+ character: 'Character',
14
+ quests: 'Quests',
15
+ affixWorkshop: 'Affix Workshop',
16
+ npcDialog: 'NPC Dialog',
17
+ help: 'Help',
18
+ back: 'Back',
19
+ confirm: 'Confirm',
20
+ cancel: 'Cancel',
21
+ },
22
+ status: {
23
+ level: 'Lv',
24
+ hp: 'HP',
25
+ mp: 'MP',
26
+ exp: 'EXP',
27
+ gold: 'Gold',
28
+ location: 'Location',
29
+ quest: 'Quest',
30
+ progress: 'Progress',
31
+ remaining: 'Remaining',
32
+ equipment: 'Equipment',
33
+ weapon: 'Weapon',
34
+ affixes: 'Affixes',
35
+ },
36
+ combat: {
37
+ battleStart: 'Battle started!',
38
+ victory: 'Victory!',
39
+ defeat: 'Defeated...',
40
+ damage: 'dealt {amount} damage',
41
+ heal: 'healed {amount} HP',
42
+ miss: 'Attack missed!',
43
+ critical: 'Critical hit!',
44
+ statusEffect: '{target} is now {effect}',
45
+ expGained: 'Gained {amount} EXP',
46
+ goldGained: 'Obtained {amount} gold',
47
+ itemDropped: 'Dropped: {item}',
48
+ },
49
+ quest: {
50
+ newQuest: 'New Quest Available',
51
+ questComplete: 'Quest Complete!',
52
+ questFailed: 'Quest Failed',
53
+ objectives: 'Objectives',
54
+ rewards: 'Rewards',
55
+ timeRemaining: 'Time Remaining',
56
+ },
57
+ npc: {
58
+ talkTo: 'Talking to',
59
+ dialogTime: 'Dialog time',
60
+ waitingForResponse: 'Waiting for response...',
61
+ quickOptions: 'Quick options',
62
+ leaveConversation: 'Leave conversation',
63
+ },
64
+ map: {
65
+ player: 'You',
66
+ town: 'Town',
67
+ dungeon: 'Dungeon',
68
+ shop: 'Shop',
69
+ boss: 'Boss',
70
+ event: 'Event',
71
+ unexplored: 'Unexplored',
72
+ explored: 'Explored',
73
+ special: 'Special',
74
+ },
75
+ affix: {
76
+ prefix: 'Prefix',
77
+ suffix: 'Suffix',
78
+ legendary: 'Legendary',
79
+ rarity: {
80
+ common: 'Common',
81
+ uncommon: 'Uncommon',
82
+ rare: 'Rare',
83
+ epic: 'Epic',
84
+ legendary: 'Legendary',
85
+ },
86
+ workshop: {
87
+ title: 'Affix Workshop',
88
+ research: 'Research',
89
+ craft: 'Craft',
90
+ timeRequired: 'Time Required',
91
+ },
92
+ },
93
+ time: {
94
+ seconds: 's',
95
+ minutes: 'min',
96
+ hours: 'h',
97
+ traveling: 'Traveling...',
98
+ fighting: 'Fighting...',
99
+ exploring: 'Exploring...',
100
+ resting: 'Resting...',
101
+ },
102
+ errors: {
103
+ connectionFailed: 'Connection failed. Please try again.',
104
+ invalidInput: 'Invalid input.',
105
+ insufficientResources: 'Insufficient resources.',
106
+ questNotAvailable: 'Quest not available.',
107
+ },
108
+ },
109
+ prompts: {
110
+ npc: {
111
+ mysteriousMerchant: `You are a mysterious merchant in a dark dungeon. You speak in riddles and hints. You have rare affix fragments for sale, but your prices are steep. You occasionally drop cryptic warnings about dangers ahead. Keep responses concise (2-3 sentences). Speak in an enigmatic, slightly unsettling tone.`,
112
+ wiseSage: `You are a wise sage who has lived in the dungeon for centuries. You possess knowledge of ancient affixes and forgotten lore. You speak calmly and offer guidance to adventurers. Keep responses helpful but mysterious. 2-3 sentences maximum.`,
113
+ dungeonGuard: `You are a gruff dungeon guard who has seen many adventurers come and go. You're skeptical of newcomers but respect strength. You might offer tips about nearby dangers if persuaded. Keep responses short and gruff.`,
114
+ wanderingTraveler: `You are a fellow adventurer exploring the dungeon. You're friendly and willing to share information about areas you've explored. You might trade items or offer to team up temporarily. Keep responses casual and brief.`,
115
+ blacksmith: `You are a master blacksmith who has set up shop in a safe zone. You can forge and enhance weapons, and you know much about affix combinations. You speak directly about your craft. Keep responses practical and to the point.`,
116
+ },
117
+ weapon: {
118
+ generateName: `Generate a unique weapon name for a weapon with these affixes: {affixes}. The name should be evocative and fitting for a fantasy RPG. Return ONLY the weapon name, nothing else. Maximum 4 words.`,
119
+ generateDescription: `Generate a brief weapon description (1-2 sentences) for a weapon named "{name}" with affixes: {affixes}. Focus on how the weapon looks and feels. Keep it atmospheric and mysterious.`,
120
+ generateLore: `Generate a brief lore snippet (2-3 sentences) for a legendary weapon named "{name}". Include a hint about its origins or previous owner. Make it feel ancient and significant.`,
121
+ },
122
+ events: {
123
+ combatNarration: `Narrate a brief combat moment (1 sentence) where {player} attacks {enemy} with {weapon}. Make it dramatic but concise.`,
124
+ discoveryNarration: `Describe a brief moment (1-2 sentences) of discovering {item} in a {location}. Create atmosphere and intrigue.`,
125
+ questNarration: `Briefly introduce a new quest (2-3 sentences): {questType} in {location}. Make it compelling and hint at rewards.`,
126
+ },
127
+ },
128
+ };
129
+ //# sourceMappingURL=en.js.map
130
+ //# debugId=8a6506c1-bd17-5f6b-81c8-a79b4489b899
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sources":["i18n/en.ts"],"sourceRoot":"/","sourcesContent":["import type { LocaleData } from './types.js';\r\n\r\nexport const en: LocaleData = {\r\n strings: {\r\n game: {\r\n title: 'IDLERPG.TERMINAL',\r\n subtitle: 'An AI-native game that lives in your terminal.',\r\n version: 'v0.1.0',\r\n },\r\n\r\n ui: {\r\n map: 'Map',\r\n inventory: 'Inventory',\r\n character: 'Character',\r\n quests: 'Quests',\r\n affixWorkshop: 'Affix Workshop',\r\n npcDialog: 'NPC Dialog',\r\n help: 'Help',\r\n back: 'Back',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel',\r\n },\r\n\r\n status: {\r\n level: 'Lv',\r\n hp: 'HP',\r\n mp: 'MP',\r\n exp: 'EXP',\r\n gold: 'Gold',\r\n location: 'Location',\r\n quest: 'Quest',\r\n progress: 'Progress',\r\n remaining: 'Remaining',\r\n equipment: 'Equipment',\r\n weapon: 'Weapon',\r\n affixes: 'Affixes',\r\n },\r\n\r\n combat: {\r\n battleStart: 'Battle started!',\r\n victory: 'Victory!',\r\n defeat: 'Defeated...',\r\n damage: 'dealt {amount} damage',\r\n heal: 'healed {amount} HP',\r\n miss: 'Attack missed!',\r\n critical: 'Critical hit!',\r\n statusEffect: '{target} is now {effect}',\r\n expGained: 'Gained {amount} EXP',\r\n goldGained: 'Obtained {amount} gold',\r\n itemDropped: 'Dropped: {item}',\r\n },\r\n\r\n quest: {\r\n newQuest: 'New Quest Available',\r\n questComplete: 'Quest Complete!',\r\n questFailed: 'Quest Failed',\r\n objectives: 'Objectives',\r\n rewards: 'Rewards',\r\n timeRemaining: 'Time Remaining',\r\n },\r\n\r\n npc: {\r\n talkTo: 'Talking to',\r\n dialogTime: 'Dialog time',\r\n waitingForResponse: 'Waiting for response...',\r\n quickOptions: 'Quick options',\r\n leaveConversation: 'Leave conversation',\r\n },\r\n\r\n map: {\r\n player: 'You',\r\n town: 'Town',\r\n dungeon: 'Dungeon',\r\n shop: 'Shop',\r\n boss: 'Boss',\r\n event: 'Event',\r\n unexplored: 'Unexplored',\r\n explored: 'Explored',\r\n special: 'Special',\r\n },\r\n\r\n affix: {\r\n prefix: 'Prefix',\r\n suffix: 'Suffix',\r\n legendary: 'Legendary',\r\n rarity: {\r\n common: 'Common',\r\n uncommon: 'Uncommon',\r\n rare: 'Rare',\r\n epic: 'Epic',\r\n legendary: 'Legendary',\r\n },\r\n workshop: {\r\n title: 'Affix Workshop',\r\n research: 'Research',\r\n craft: 'Craft',\r\n timeRequired: 'Time Required',\r\n },\r\n },\r\n\r\n time: {\r\n seconds: 's',\r\n minutes: 'min',\r\n hours: 'h',\r\n traveling: 'Traveling...',\r\n fighting: 'Fighting...',\r\n exploring: 'Exploring...',\r\n resting: 'Resting...',\r\n },\r\n\r\n errors: {\r\n connectionFailed: 'Connection failed. Please try again.',\r\n invalidInput: 'Invalid input.',\r\n insufficientResources: 'Insufficient resources.',\r\n questNotAvailable: 'Quest not available.',\r\n },\r\n },\r\n\r\n prompts: {\r\n npc: {\r\n mysteriousMerchant: `You are a mysterious merchant in a dark dungeon. You speak in riddles and hints. You have rare affix fragments for sale, but your prices are steep. You occasionally drop cryptic warnings about dangers ahead. Keep responses concise (2-3 sentences). Speak in an enigmatic, slightly unsettling tone.`,\r\n\r\n wiseSage: `You are a wise sage who has lived in the dungeon for centuries. You possess knowledge of ancient affixes and forgotten lore. You speak calmly and offer guidance to adventurers. Keep responses helpful but mysterious. 2-3 sentences maximum.`,\r\n\r\n dungeonGuard: `You are a gruff dungeon guard who has seen many adventurers come and go. You're skeptical of newcomers but respect strength. You might offer tips about nearby dangers if persuaded. Keep responses short and gruff.`,\r\n\r\n wanderingTraveler: `You are a fellow adventurer exploring the dungeon. You're friendly and willing to share information about areas you've explored. You might trade items or offer to team up temporarily. Keep responses casual and brief.`,\r\n\r\n blacksmith: `You are a master blacksmith who has set up shop in a safe zone. You can forge and enhance weapons, and you know much about affix combinations. You speak directly about your craft. Keep responses practical and to the point.`,\r\n },\r\n\r\n weapon: {\r\n generateName: `Generate a unique weapon name for a weapon with these affixes: {affixes}. The name should be evocative and fitting for a fantasy RPG. Return ONLY the weapon name, nothing else. Maximum 4 words.`,\r\n\r\n generateDescription: `Generate a brief weapon description (1-2 sentences) for a weapon named \"{name}\" with affixes: {affixes}. Focus on how the weapon looks and feels. Keep it atmospheric and mysterious.`,\r\n\r\n generateLore: `Generate a brief lore snippet (2-3 sentences) for a legendary weapon named \"{name}\". Include a hint about its origins or previous owner. Make it feel ancient and significant.`,\r\n },\r\n\r\n events: {\r\n combatNarration: `Narrate a brief combat moment (1 sentence) where {player} attacks {enemy} with {weapon}. Make it dramatic but concise.`,\r\n\r\n discoveryNarration: `Describe a brief moment (1-2 sentences) of discovering {item} in a {location}. Create atmosphere and intrigue.`,\r\n\r\n questNarration: `Briefly introduce a new quest (2-3 sentences): {questType} in {location}. Make it compelling and hint at rewards.`,\r\n },\r\n },\r\n};\r\n"],"names":[],"mappings":"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","debug_id":"8a6506c1-bd17-5f6b-81c8-a79b4489b899"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Internationalization module
3
+ * Provides global language settings and string/prompt access
4
+ */
5
+ import type { Language, GameStrings, AIPrompts } from './types.js';
6
+ /**
7
+ * Get the current language setting
8
+ */
9
+ export declare function getLanguage(): Language;
10
+ /**
11
+ * Set the global language
12
+ */
13
+ export declare function setLanguage(lang: Language): void;
14
+ /**
15
+ * Get all game strings for the current language
16
+ */
17
+ export declare function getStrings(): GameStrings;
18
+ /**
19
+ * Get all AI prompts for the current language
20
+ */
21
+ export declare function getPrompts(): AIPrompts;
22
+ /**
23
+ * Get a specific string with interpolation support
24
+ * Usage: t('combat.damage', { amount: 25 }) => "dealt 25 damage"
25
+ */
26
+ export declare function t(path: string, params?: Record<string, string | number>): string;
27
+ /**
28
+ * Get a specific AI prompt with interpolation support
29
+ */
30
+ export declare function getPrompt(category: keyof AIPrompts, key: string, params?: Record<string, string>): string;
31
+ /**
32
+ * Check if a language is supported
33
+ */
34
+ export declare function isLanguageSupported(lang: string): lang is Language;
35
+ /**
36
+ * Get list of available languages
37
+ */
38
+ export declare function getAvailableLanguages(): Language[];
39
+ export type { Language, LocaleData, GameStrings, AIPrompts } from './types.js';
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["i18n/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAc,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmB/E;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAOhD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAExC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAEtC;AAED;;;GAGG;AACH,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAwBhF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,SAAS,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAElE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAElD;AAGD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Internationalization module
3
+ * Provides global language settings and string/prompt access
4
+ */
5
+
6
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="86ca6061-bd45-56f0-8902-81a9c58177c8")}catch(e){}}();
7
+ import { en } from './en.js';
8
+ import { zh } from './zh.js';
9
+ // All available locales
10
+ // NOTE: Fallback to English for unsupported languages is intentional.
11
+ // This is a static compile-time fallback, not a runtime retry scenario.
12
+ // Reason: Japanese (ja) and Korean (ko) translations are not yet available.
13
+ // When added, replace `en` with the proper locale import.
14
+ const locales = {
15
+ en,
16
+ zh,
17
+ ja: en, // TODO: Add Japanese translation file
18
+ ko: en, // TODO: Add Korean translation file
19
+ };
20
+ // Global language state
21
+ let currentLanguage = 'en';
22
+ /**
23
+ * Get the current language setting
24
+ */
25
+ export function getLanguage() {
26
+ return currentLanguage;
27
+ }
28
+ /**
29
+ * Set the global language
30
+ */
31
+ export function setLanguage(lang) {
32
+ if (locales[lang]) {
33
+ currentLanguage = lang;
34
+ }
35
+ else {
36
+ console.warn(`Language "${lang}" not supported, falling back to English`);
37
+ currentLanguage = 'en';
38
+ }
39
+ }
40
+ /**
41
+ * Get all game strings for the current language
42
+ */
43
+ export function getStrings() {
44
+ return locales[currentLanguage].strings;
45
+ }
46
+ /**
47
+ * Get all AI prompts for the current language
48
+ */
49
+ export function getPrompts() {
50
+ return locales[currentLanguage].prompts;
51
+ }
52
+ /**
53
+ * Get a specific string with interpolation support
54
+ * Usage: t('combat.damage', { amount: 25 }) => "dealt 25 damage"
55
+ */
56
+ export function t(path, params) {
57
+ const keys = path.split('.');
58
+ let value = locales[currentLanguage].strings;
59
+ for (const key of keys) {
60
+ if (value && typeof value === 'object' && key in value) {
61
+ value = value[key];
62
+ }
63
+ else {
64
+ return path; // Return path if not found
65
+ }
66
+ }
67
+ if (typeof value !== 'string') {
68
+ return path;
69
+ }
70
+ // Interpolate parameters
71
+ if (params) {
72
+ return value.replace(/\{(\w+)\}/g, (_, key) => {
73
+ return params[key]?.toString() ?? `{${key}}`;
74
+ });
75
+ }
76
+ return value;
77
+ }
78
+ /**
79
+ * Get a specific AI prompt with interpolation support
80
+ */
81
+ export function getPrompt(category, key, params) {
82
+ const prompts = locales[currentLanguage].prompts;
83
+ const categoryPrompts = prompts[category];
84
+ let prompt = categoryPrompts[key] || '';
85
+ if (params) {
86
+ prompt = prompt.replace(/\{(\w+)\}/g, (_, k) => {
87
+ return params[k] ?? `{${k}}`;
88
+ });
89
+ }
90
+ return prompt;
91
+ }
92
+ /**
93
+ * Check if a language is supported
94
+ */
95
+ export function isLanguageSupported(lang) {
96
+ return lang in locales;
97
+ }
98
+ /**
99
+ * Get list of available languages
100
+ */
101
+ export function getAvailableLanguages() {
102
+ return Object.keys(locales);
103
+ }
104
+ //# sourceMappingURL=index.js.map
105
+ //# debugId=86ca6061-bd45-56f0-8902-81a9c58177c8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["i18n/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Internationalization module\r\n * Provides global language settings and string/prompt access\r\n */\r\n\r\nimport type { Language, LocaleData, GameStrings, AIPrompts } from './types.js';\r\nimport { en } from './en.js';\r\nimport { zh } from './zh.js';\r\n\r\n// All available locales\r\n// NOTE: Fallback to English for unsupported languages is intentional.\r\n// This is a static compile-time fallback, not a runtime retry scenario.\r\n// Reason: Japanese (ja) and Korean (ko) translations are not yet available.\r\n// When added, replace `en` with the proper locale import.\r\nconst locales: Record<Language, LocaleData> = {\r\n en,\r\n zh,\r\n ja: en, // TODO: Add Japanese translation file\r\n ko: en, // TODO: Add Korean translation file\r\n};\r\n\r\n// Global language state\r\nlet currentLanguage: Language = 'en';\r\n\r\n/**\r\n * Get the current language setting\r\n */\r\nexport function getLanguage(): Language {\r\n return currentLanguage;\r\n}\r\n\r\n/**\r\n * Set the global language\r\n */\r\nexport function setLanguage(lang: Language): void {\r\n if (locales[lang]) {\r\n currentLanguage = lang;\r\n } else {\r\n console.warn(`Language \"${lang}\" not supported, falling back to English`);\r\n currentLanguage = 'en';\r\n }\r\n}\r\n\r\n/**\r\n * Get all game strings for the current language\r\n */\r\nexport function getStrings(): GameStrings {\r\n return locales[currentLanguage].strings;\r\n}\r\n\r\n/**\r\n * Get all AI prompts for the current language\r\n */\r\nexport function getPrompts(): AIPrompts {\r\n return locales[currentLanguage].prompts;\r\n}\r\n\r\n/**\r\n * Get a specific string with interpolation support\r\n * Usage: t('combat.damage', { amount: 25 }) => \"dealt 25 damage\"\r\n */\r\nexport function t(path: string, params?: Record<string, string | number>): string {\r\n const keys = path.split('.');\r\n let value: unknown = locales[currentLanguage].strings;\r\n\r\n for (const key of keys) {\r\n if (value && typeof value === 'object' && key in value) {\r\n value = (value as Record<string, unknown>)[key];\r\n } else {\r\n return path; // Return path if not found\r\n }\r\n }\r\n\r\n if (typeof value !== 'string') {\r\n return path;\r\n }\r\n\r\n // Interpolate parameters\r\n if (params) {\r\n return value.replace(/\\{(\\w+)\\}/g, (_, key) => {\r\n return params[key]?.toString() ?? `{${key}}`;\r\n });\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Get a specific AI prompt with interpolation support\r\n */\r\nexport function getPrompt(\r\n category: keyof AIPrompts,\r\n key: string,\r\n params?: Record<string, string>\r\n): string {\r\n const prompts = locales[currentLanguage].prompts;\r\n const categoryPrompts = prompts[category] as Record<string, string>;\r\n let prompt = categoryPrompts[key] || '';\r\n\r\n if (params) {\r\n prompt = prompt.replace(/\\{(\\w+)\\}/g, (_, k) => {\r\n return params[k] ?? `{${k}}`;\r\n });\r\n }\r\n\r\n return prompt;\r\n}\r\n\r\n/**\r\n * Check if a language is supported\r\n */\r\nexport function isLanguageSupported(lang: string): lang is Language {\r\n return lang in locales;\r\n}\r\n\r\n/**\r\n * Get list of available languages\r\n */\r\nexport function getAvailableLanguages(): Language[] {\r\n return Object.keys(locales) as Language[];\r\n}\r\n\r\n// Re-export types\r\nexport type { Language, LocaleData, GameStrings, AIPrompts } from './types.js';\r\n"],"names":[],"mappings":"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","debug_id":"86ca6061-bd45-56f0-8902-81a9c58177c8"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Internationalization type definitions
3
+ */
4
+ export type Language = 'en' | 'zh' | 'ja' | 'ko';
5
+ export interface GameStrings {
6
+ game: {
7
+ title: string;
8
+ subtitle: string;
9
+ version: string;
10
+ };
11
+ ui: {
12
+ map: string;
13
+ inventory: string;
14
+ character: string;
15
+ quests: string;
16
+ affixWorkshop: string;
17
+ npcDialog: string;
18
+ help: string;
19
+ back: string;
20
+ confirm: string;
21
+ cancel: string;
22
+ };
23
+ status: {
24
+ level: string;
25
+ hp: string;
26
+ mp: string;
27
+ exp: string;
28
+ gold: string;
29
+ location: string;
30
+ quest: string;
31
+ progress: string;
32
+ remaining: string;
33
+ equipment: string;
34
+ weapon: string;
35
+ affixes: string;
36
+ };
37
+ combat: {
38
+ battleStart: string;
39
+ victory: string;
40
+ defeat: string;
41
+ damage: string;
42
+ heal: string;
43
+ miss: string;
44
+ critical: string;
45
+ statusEffect: string;
46
+ expGained: string;
47
+ goldGained: string;
48
+ itemDropped: string;
49
+ };
50
+ quest: {
51
+ newQuest: string;
52
+ questComplete: string;
53
+ questFailed: string;
54
+ objectives: string;
55
+ rewards: string;
56
+ timeRemaining: string;
57
+ };
58
+ npc: {
59
+ talkTo: string;
60
+ dialogTime: string;
61
+ waitingForResponse: string;
62
+ quickOptions: string;
63
+ leaveConversation: string;
64
+ };
65
+ map: {
66
+ player: string;
67
+ town: string;
68
+ dungeon: string;
69
+ shop: string;
70
+ boss: string;
71
+ event: string;
72
+ unexplored: string;
73
+ explored: string;
74
+ special: string;
75
+ };
76
+ affix: {
77
+ prefix: string;
78
+ suffix: string;
79
+ legendary: string;
80
+ rarity: {
81
+ common: string;
82
+ uncommon: string;
83
+ rare: string;
84
+ epic: string;
85
+ legendary: string;
86
+ };
87
+ workshop: {
88
+ title: string;
89
+ research: string;
90
+ craft: string;
91
+ timeRequired: string;
92
+ };
93
+ };
94
+ time: {
95
+ seconds: string;
96
+ minutes: string;
97
+ hours: string;
98
+ traveling: string;
99
+ fighting: string;
100
+ exploring: string;
101
+ resting: string;
102
+ };
103
+ errors: {
104
+ connectionFailed: string;
105
+ invalidInput: string;
106
+ insufficientResources: string;
107
+ questNotAvailable: string;
108
+ };
109
+ }
110
+ export interface AIPrompts {
111
+ npc: {
112
+ mysteriousMerchant: string;
113
+ wiseSage: string;
114
+ dungeonGuard: string;
115
+ wanderingTraveler: string;
116
+ blacksmith: string;
117
+ };
118
+ weapon: {
119
+ generateName: string;
120
+ generateDescription: string;
121
+ generateLore: string;
122
+ };
123
+ events: {
124
+ combatNarration: string;
125
+ discoveryNarration: string;
126
+ questNarration: string;
127
+ };
128
+ }
129
+ export interface LocaleData {
130
+ strings: GameStrings;
131
+ prompts: AIPrompts;
132
+ }
133
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["i18n/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Internationalization type definitions
3
+ */
4
+
5
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2023e0eb-2686-565d-8d42-f8b1be631fd5")}catch(e){}}();
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
8
+ //# debugId=2023e0eb-2686-565d-8d42-f8b1be631fd5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["i18n/types.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Internationalization type definitions\r\n */\r\n\r\nexport type Language = 'en' | 'zh' | 'ja' | 'ko';\r\n\r\nexport interface GameStrings {\r\n // Game title and meta\r\n game: {\r\n title: string;\r\n subtitle: string;\r\n version: string;\r\n };\r\n\r\n // UI labels\r\n ui: {\r\n map: string;\r\n inventory: string;\r\n character: string;\r\n quests: string;\r\n affixWorkshop: string;\r\n npcDialog: string;\r\n help: string;\r\n back: string;\r\n confirm: string;\r\n cancel: string;\r\n };\r\n\r\n // Status display\r\n status: {\r\n level: string;\r\n hp: string;\r\n mp: string;\r\n exp: string;\r\n gold: string;\r\n location: string;\r\n quest: string;\r\n progress: string;\r\n remaining: string;\r\n equipment: string;\r\n weapon: string;\r\n affixes: string;\r\n };\r\n\r\n // Combat messages\r\n combat: {\r\n battleStart: string;\r\n victory: string;\r\n defeat: string;\r\n damage: string;\r\n heal: string;\r\n miss: string;\r\n critical: string;\r\n statusEffect: string;\r\n expGained: string;\r\n goldGained: string;\r\n itemDropped: string;\r\n };\r\n\r\n // Quest messages\r\n quest: {\r\n newQuest: string;\r\n questComplete: string;\r\n questFailed: string;\r\n objectives: string;\r\n rewards: string;\r\n timeRemaining: string;\r\n };\r\n\r\n // NPC dialog\r\n npc: {\r\n talkTo: string;\r\n dialogTime: string;\r\n waitingForResponse: string;\r\n quickOptions: string;\r\n leaveConversation: string;\r\n };\r\n\r\n // Map symbols legend\r\n map: {\r\n player: string;\r\n town: string;\r\n dungeon: string;\r\n shop: string;\r\n boss: string;\r\n event: string;\r\n unexplored: string;\r\n explored: string;\r\n special: string;\r\n };\r\n\r\n // Affix system\r\n affix: {\r\n prefix: string;\r\n suffix: string;\r\n legendary: string;\r\n rarity: {\r\n common: string;\r\n uncommon: string;\r\n rare: string;\r\n epic: string;\r\n legendary: string;\r\n };\r\n workshop: {\r\n title: string;\r\n research: string;\r\n craft: string;\r\n timeRequired: string;\r\n };\r\n };\r\n\r\n // Time and actions\r\n time: {\r\n seconds: string;\r\n minutes: string;\r\n hours: string;\r\n traveling: string;\r\n fighting: string;\r\n exploring: string;\r\n resting: string;\r\n };\r\n\r\n // Errors and warnings\r\n errors: {\r\n connectionFailed: string;\r\n invalidInput: string;\r\n insufficientResources: string;\r\n questNotAvailable: string;\r\n };\r\n}\r\n\r\nexport interface AIPrompts {\r\n // NPC system prompts\r\n npc: {\r\n mysteriousMerchant: string;\r\n wiseSage: string;\r\n dungeonGuard: string;\r\n wanderingTraveler: string;\r\n blacksmith: string;\r\n };\r\n\r\n // Weapon description generation\r\n weapon: {\r\n generateName: string;\r\n generateDescription: string;\r\n generateLore: string;\r\n };\r\n\r\n // Event narration\r\n events: {\r\n combatNarration: string;\r\n discoveryNarration: string;\r\n questNarration: string;\r\n };\r\n}\r\n\r\nexport interface LocaleData {\r\n strings: GameStrings;\r\n prompts: AIPrompts;\r\n}\r\n"],"names":[],"mappings":"AAAA;;GAEG","debug_id":"2023e0eb-2686-565d-8d42-f8b1be631fd5"}
@@ -0,0 +1,3 @@
1
+ import type { LocaleData } from './types.js';
2
+ export declare const zh: LocaleData;
3
+ //# sourceMappingURL=zh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zh.d.ts","sourceRoot":"/","sources":["i18n/zh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,EAAE,EAAE,UAiJhB,CAAC"}
@@ -0,0 +1,130 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1bbae86e-5d26-5a9f-921c-d678538c8ce5")}catch(e){}}();
3
+ export const zh = {
4
+ strings: {
5
+ game: {
6
+ title: 'IDLERPG.TERMINAL',
7
+ subtitle: 'AI驱动的冒险',
8
+ version: 'v0.1.0',
9
+ },
10
+ ui: {
11
+ map: '地图',
12
+ inventory: '背包',
13
+ character: '角色',
14
+ quests: '任务',
15
+ affixWorkshop: '词条工坊',
16
+ npcDialog: 'NPC对话',
17
+ help: '帮助',
18
+ back: '返回',
19
+ confirm: '确认',
20
+ cancel: '取消',
21
+ },
22
+ status: {
23
+ level: '等级',
24
+ hp: '生命',
25
+ mp: '魔力',
26
+ exp: '经验',
27
+ gold: '金币',
28
+ location: '位置',
29
+ quest: '任务',
30
+ progress: '进度',
31
+ remaining: '剩余',
32
+ equipment: '装备',
33
+ weapon: '武器',
34
+ affixes: '词条',
35
+ },
36
+ combat: {
37
+ battleStart: '战斗开始!',
38
+ victory: '胜利!',
39
+ defeat: '战败...',
40
+ damage: '造成了 {amount} 点伤害',
41
+ heal: '恢复了 {amount} 点生命',
42
+ miss: '攻击落空!',
43
+ critical: '暴击!',
44
+ statusEffect: '{target} 陷入了 {effect} 状态',
45
+ expGained: '获得 {amount} 经验',
46
+ goldGained: '获得 {amount} 金币',
47
+ itemDropped: '掉落: {item}',
48
+ },
49
+ quest: {
50
+ newQuest: '新任务可用',
51
+ questComplete: '任务完成!',
52
+ questFailed: '任务失败',
53
+ objectives: '目标',
54
+ rewards: '奖励',
55
+ timeRemaining: '剩余时间',
56
+ },
57
+ npc: {
58
+ talkTo: '正在与...对话',
59
+ dialogTime: '对话时间',
60
+ waitingForResponse: '等待回复中...',
61
+ quickOptions: '快捷选项',
62
+ leaveConversation: '离开对话',
63
+ },
64
+ map: {
65
+ player: '你',
66
+ town: '城镇',
67
+ dungeon: '地牢',
68
+ shop: '商店',
69
+ boss: 'Boss',
70
+ event: '事件',
71
+ unexplored: '未探索',
72
+ explored: '已探索',
73
+ special: '特殊',
74
+ },
75
+ affix: {
76
+ prefix: '前缀',
77
+ suffix: '后缀',
78
+ legendary: '传说',
79
+ rarity: {
80
+ common: '普通',
81
+ uncommon: '罕见',
82
+ rare: '稀有',
83
+ epic: '史诗',
84
+ legendary: '传说',
85
+ },
86
+ workshop: {
87
+ title: '词条工坊',
88
+ research: '研究',
89
+ craft: '锻造',
90
+ timeRequired: '所需时间',
91
+ },
92
+ },
93
+ time: {
94
+ seconds: '秒',
95
+ minutes: '分钟',
96
+ hours: '小时',
97
+ traveling: '旅行中...',
98
+ fighting: '战斗中...',
99
+ exploring: '探索中...',
100
+ resting: '休息中...',
101
+ },
102
+ errors: {
103
+ connectionFailed: '连接失败,请重试。',
104
+ invalidInput: '无效输入。',
105
+ insufficientResources: '资源不足。',
106
+ questNotAvailable: '任务不可用。',
107
+ },
108
+ },
109
+ prompts: {
110
+ npc: {
111
+ mysteriousMerchant: `你是地牢中的神秘商人。你用谜语和暗示说话。你有稀有的词条碎片出售,但价格不菲。你偶尔会透露前方危险的神秘警告。保持简洁(2-3句话)。用神秘、略带不安的语气说话。`,
112
+ wiseSage: `你是一位在地牢中生活了数百年的智者。你拥有关于古老词条和被遗忘传说的知识。你平静地说话,为冒险者提供指导。保持有帮助但神秘。最多2-3句话。`,
113
+ dungeonGuard: `你是一个粗犷的地牢守卫,见过许多冒险者来来往往。你对新来者持怀疑态度,但尊重实力。如果被说服,你可能会提供关于附近危险的提示。保持简短和粗犷。`,
114
+ wanderingTraveler: `你是一个正在探索地牢的冒险者同伴。你很友好,愿意分享你探索过的区域的信息。你可能会交易物品或提议暂时组队。保持随意和简短。`,
115
+ blacksmith: `你是一位在安全区开店的大师铁匠。你可以锻造和强化武器,并且对词条组合了解很多。你直接谈论你的手艺。保持实际和切中要点。`,
116
+ },
117
+ weapon: {
118
+ generateName: `为具有以下词条的武器生成一个独特的武器名称:{affixes}。名称应该令人回味,适合黑暗奇幻肉鸽游戏。只返回武器名称,不要其他内容。最多4个词。`,
119
+ generateDescription: `为名为"{name}"的武器生成简短描述(1-2句话),词条为:{affixes}。专注于武器的外观和感觉。保持氛围感和神秘感。`,
120
+ generateLore: `为名为"{name}"的传说武器生成简短的传说片段(2-3句话)。包含关于其起源或前任主人的暗示。让它感觉古老而重要。`,
121
+ },
122
+ events: {
123
+ combatNarration: `简短叙述(1句话){player}用{weapon}攻击{enemy}的战斗时刻。使其戏剧化但简洁。`,
124
+ discoveryNarration: `简短描述(1-2句话)在{location}发现{item}的时刻。创造氛围和悬念。`,
125
+ questNarration: `简短介绍新任务(2-3句话):{location}的{questType}。使其引人注目并暗示奖励。`,
126
+ },
127
+ },
128
+ };
129
+ //# sourceMappingURL=zh.js.map
130
+ //# debugId=1bbae86e-5d26-5a9f-921c-d678538c8ce5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zh.js","sources":["i18n/zh.ts"],"sourceRoot":"/","sourcesContent":["import type { LocaleData } from './types.js';\r\n\r\nexport const zh: LocaleData = {\r\n strings: {\r\n game: {\r\n title: 'IDLERPG.TERMINAL',\r\n subtitle: 'AI驱动的冒险',\r\n version: 'v0.1.0',\r\n },\r\n\r\n ui: {\r\n map: '地图',\r\n inventory: '背包',\r\n character: '角色',\r\n quests: '任务',\r\n affixWorkshop: '词条工坊',\r\n npcDialog: 'NPC对话',\r\n help: '帮助',\r\n back: '返回',\r\n confirm: '确认',\r\n cancel: '取消',\r\n },\r\n\r\n status: {\r\n level: '等级',\r\n hp: '生命',\r\n mp: '魔力',\r\n exp: '经验',\r\n gold: '金币',\r\n location: '位置',\r\n quest: '任务',\r\n progress: '进度',\r\n remaining: '剩余',\r\n equipment: '装备',\r\n weapon: '武器',\r\n affixes: '词条',\r\n },\r\n\r\n combat: {\r\n battleStart: '战斗开始!',\r\n victory: '胜利!',\r\n defeat: '战败...',\r\n damage: '造成了 {amount} 点伤害',\r\n heal: '恢复了 {amount} 点生命',\r\n miss: '攻击落空!',\r\n critical: '暴击!',\r\n statusEffect: '{target} 陷入了 {effect} 状态',\r\n expGained: '获得 {amount} 经验',\r\n goldGained: '获得 {amount} 金币',\r\n itemDropped: '掉落: {item}',\r\n },\r\n\r\n quest: {\r\n newQuest: '新任务可用',\r\n questComplete: '任务完成!',\r\n questFailed: '任务失败',\r\n objectives: '目标',\r\n rewards: '奖励',\r\n timeRemaining: '剩余时间',\r\n },\r\n\r\n npc: {\r\n talkTo: '正在与...对话',\r\n dialogTime: '对话时间',\r\n waitingForResponse: '等待回复中...',\r\n quickOptions: '快捷选项',\r\n leaveConversation: '离开对话',\r\n },\r\n\r\n map: {\r\n player: '你',\r\n town: '城镇',\r\n dungeon: '地牢',\r\n shop: '商店',\r\n boss: 'Boss',\r\n event: '事件',\r\n unexplored: '未探索',\r\n explored: '已探索',\r\n special: '特殊',\r\n },\r\n\r\n affix: {\r\n prefix: '前缀',\r\n suffix: '后缀',\r\n legendary: '传说',\r\n rarity: {\r\n common: '普通',\r\n uncommon: '罕见',\r\n rare: '稀有',\r\n epic: '史诗',\r\n legendary: '传说',\r\n },\r\n workshop: {\r\n title: '词条工坊',\r\n research: '研究',\r\n craft: '锻造',\r\n timeRequired: '所需时间',\r\n },\r\n },\r\n\r\n time: {\r\n seconds: '秒',\r\n minutes: '分钟',\r\n hours: '小时',\r\n traveling: '旅行中...',\r\n fighting: '战斗中...',\r\n exploring: '探索中...',\r\n resting: '休息中...',\r\n },\r\n\r\n errors: {\r\n connectionFailed: '连接失败,请重试。',\r\n invalidInput: '无效输入。',\r\n insufficientResources: '资源不足。',\r\n questNotAvailable: '任务不可用。',\r\n },\r\n },\r\n\r\n prompts: {\r\n npc: {\r\n mysteriousMerchant: `你是地牢中的神秘商人。你用谜语和暗示说话。你有稀有的词条碎片出售,但价格不菲。你偶尔会透露前方危险的神秘警告。保持简洁(2-3句话)。用神秘、略带不安的语气说话。`,\r\n\r\n wiseSage: `你是一位在地牢中生活了数百年的智者。你拥有关于古老词条和被遗忘传说的知识。你平静地说话,为冒险者提供指导。保持有帮助但神秘。最多2-3句话。`,\r\n\r\n dungeonGuard: `你是一个粗犷的地牢守卫,见过许多冒险者来来往往。你对新来者持怀疑态度,但尊重实力。如果被说服,你可能会提供关于附近危险的提示。保持简短和粗犷。`,\r\n\r\n wanderingTraveler: `你是一个正在探索地牢的冒险者同伴。你很友好,愿意分享你探索过的区域的信息。你可能会交易物品或提议暂时组队。保持随意和简短。`,\r\n\r\n blacksmith: `你是一位在安全区开店的大师铁匠。你可以锻造和强化武器,并且对词条组合了解很多。你直接谈论你的手艺。保持实际和切中要点。`,\r\n },\r\n\r\n weapon: {\r\n generateName: `为具有以下词条的武器生成一个独特的武器名称:{affixes}。名称应该令人回味,适合黑暗奇幻肉鸽游戏。只返回武器名称,不要其他内容。最多4个词。`,\r\n\r\n generateDescription: `为名为\"{name}\"的武器生成简短描述(1-2句话),词条为:{affixes}。专注于武器的外观和感觉。保持氛围感和神秘感。`,\r\n\r\n generateLore: `为名为\"{name}\"的传说武器生成简短的传说片段(2-3句话)。包含关于其起源或前任主人的暗示。让它感觉古老而重要。`,\r\n },\r\n\r\n events: {\r\n combatNarration: `简短叙述(1句话){player}用{weapon}攻击{enemy}的战斗时刻。使其戏剧化但简洁。`,\r\n\r\n discoveryNarration: `简短描述(1-2句话)在{location}发现{item}的时刻。创造氛围和悬念。`,\r\n\r\n questNarration: `简短介绍新任务(2-3句话):{location}的{questType}。使其引人注目并暗示奖励。`,\r\n },\r\n },\r\n};\r\n"],"names":[],"mappings":"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","debug_id":"1bbae86e-5d26-5a9f-921c-d678538c8ce5"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sentry Instrumentation
3
+ * IMPORTANT: This file must be imported at the top of the main entry point
4
+ * before any other imports to ensure proper error tracking and profiling.
5
+ */
6
+ import * as Sentry from "@sentry/node";
7
+ export { Sentry };
8
+ //# sourceMappingURL=instrument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrument.d.ts","sourceRoot":"/","sources":["instrument.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AA2BvC,OAAO,EAAE,MAAM,EAAE,CAAC"}