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,32 @@
1
+ /**
2
+ * Weapon Factory - generates weapons with affixes
3
+ */
4
+ import type { Weapon, Rarity } from '../core/types.js';
5
+ interface WeaponGeneratorConfig {
6
+ playerLevel: number;
7
+ maxRarity?: Rarity;
8
+ guaranteedRarity?: Rarity;
9
+ affixCount?: {
10
+ min: number;
11
+ max: number;
12
+ };
13
+ useAI?: boolean;
14
+ }
15
+ /**
16
+ * Generate a random weapon
17
+ */
18
+ export declare function generateWeapon(config: WeaponGeneratorConfig): Promise<Weapon>;
19
+ /**
20
+ * Calculate total weapon stats including affixes
21
+ */
22
+ export declare function calculateWeaponStats(weapon: Weapon): {
23
+ totalAttack: number;
24
+ bonusStats: Record<string, number>;
25
+ effects: string[];
26
+ };
27
+ /**
28
+ * Format weapon for display
29
+ */
30
+ export declare function formatWeapon(weapon: Weapon): string[];
31
+ export {};
32
+ //# sourceMappingURL=WeaponFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeaponFactory.d.ts","sourceRoot":"/","sources":["weapon/WeaponFactory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAgB,MAAM,kBAAkB,CAAC;AAIrE,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA6BD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6EnF;AAkFD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CA8BA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BrD"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Weapon Factory - generates weapons with affixes
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]="cd297e4e-25fa-5559-891b-09ab64efa066")}catch(e){}}();
6
+ import { getAffixRegistry } from '../affix/AffixRegistry.js';
7
+ import { getAIClient } from '../ai/PlayKitClient.js';
8
+ const WEAPON_BASES = [
9
+ { name: 'Sword', baseAttack: 10, type: 'melee' },
10
+ { name: 'Axe', baseAttack: 14, type: 'melee' },
11
+ { name: 'Dagger', baseAttack: 6, type: 'melee' },
12
+ { name: 'Mace', baseAttack: 12, type: 'melee' },
13
+ { name: 'Spear', baseAttack: 11, type: 'melee' },
14
+ { name: 'Staff', baseAttack: 8, type: 'magic' },
15
+ { name: 'Wand', baseAttack: 5, type: 'magic' },
16
+ { name: 'Bow', baseAttack: 9, type: 'ranged' },
17
+ ];
18
+ const RARITY_COLORS = {
19
+ common: 'gray',
20
+ uncommon: 'green',
21
+ rare: 'blue',
22
+ epic: 'purple',
23
+ legendary: 'orange',
24
+ };
25
+ const RARITY_MULTIPLIERS = {
26
+ common: 1,
27
+ uncommon: 1.2,
28
+ rare: 1.5,
29
+ epic: 2,
30
+ legendary: 3,
31
+ };
32
+ /**
33
+ * Generate a random weapon
34
+ */
35
+ export async function generateWeapon(config) {
36
+ const { playerLevel, maxRarity = 'legendary', guaranteedRarity, affixCount = { min: 0, max: 2 }, useAI = true, } = config;
37
+ // Select base weapon
38
+ const base = WEAPON_BASES[Math.floor(Math.random() * WEAPON_BASES.length)];
39
+ // Determine rarity
40
+ const rarity = guaranteedRarity || rollRarity(playerLevel, maxRarity);
41
+ // Calculate base stats
42
+ const levelMultiplier = 1 + (playerLevel - 1) * 0.1;
43
+ const rarityMult = RARITY_MULTIPLIERS[rarity];
44
+ const baseAttack = Math.floor(base.baseAttack * levelMultiplier * rarityMult);
45
+ // Get random affixes
46
+ const registry = getAffixRegistry();
47
+ const numAffixes = Math.floor(Math.random() * (affixCount.max - affixCount.min + 1) + affixCount.min);
48
+ const affixDefs = registry.getRandomAffixes({
49
+ count: numAffixes,
50
+ maxRarity: rarity,
51
+ playerLevel,
52
+ });
53
+ const affixes = affixDefs.map(def => ({
54
+ definitionId: def.id,
55
+ name: def.name,
56
+ type: def.type,
57
+ rarity: def.rarity,
58
+ }));
59
+ // Generate name
60
+ let name;
61
+ let description;
62
+ let lore;
63
+ if (useAI && affixes.length > 0) {
64
+ try {
65
+ const ai = getAIClient();
66
+ const affixNames = affixes.map(a => a.name);
67
+ name = await ai.generateWeaponName(affixNames);
68
+ description = await ai.generateWeaponDescription(name, affixNames);
69
+ if (rarity === 'legendary' || rarity === 'epic') {
70
+ lore = await ai.generateWeaponLore(name);
71
+ }
72
+ }
73
+ catch (error) {
74
+ // Fallback to procedural generation
75
+ name = generateProceduralName(base.name, affixes, rarity);
76
+ description = generateProceduralDescription(base.name, affixes);
77
+ }
78
+ }
79
+ else {
80
+ name = generateProceduralName(base.name, affixes, rarity);
81
+ description = generateProceduralDescription(base.name, affixes);
82
+ }
83
+ return {
84
+ id: `weapon_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
85
+ name,
86
+ description,
87
+ lore,
88
+ baseAttack,
89
+ durability: 100,
90
+ maxDurability: 100,
91
+ affixes,
92
+ rarity,
93
+ generatedByAI: useAI && affixes.length > 0,
94
+ };
95
+ }
96
+ /**
97
+ * Roll for weapon rarity
98
+ */
99
+ function rollRarity(playerLevel, maxRarity) {
100
+ const rarityOrder = ['common', 'uncommon', 'rare', 'epic', 'legendary'];
101
+ const maxIndex = rarityOrder.indexOf(maxRarity);
102
+ // Base chances modified by level
103
+ const levelBonus = Math.min(playerLevel * 0.02, 0.2); // Up to 20% bonus at level 10
104
+ const chances = [
105
+ 0.50 - levelBonus, // common
106
+ 0.30, // uncommon
107
+ 0.12 + levelBonus / 2, // rare
108
+ 0.06 + levelBonus / 3, // epic
109
+ 0.02 + levelBonus / 5, // legendary
110
+ ];
111
+ const roll = Math.random();
112
+ let cumulative = 0;
113
+ for (let i = 0; i <= maxIndex; i++) {
114
+ cumulative += chances[i];
115
+ if (roll < cumulative) {
116
+ return rarityOrder[i];
117
+ }
118
+ }
119
+ return 'common';
120
+ }
121
+ /**
122
+ * Generate a procedural weapon name
123
+ */
124
+ function generateProceduralName(baseName, affixes, rarity) {
125
+ const prefix = affixes.find(a => a.type === 'prefix');
126
+ const suffix = affixes.find(a => a.type === 'suffix');
127
+ let name = '';
128
+ if (prefix) {
129
+ name = prefix.name + ' ';
130
+ }
131
+ name += baseName;
132
+ if (suffix) {
133
+ name += ' ' + suffix.name;
134
+ }
135
+ // Add title for legendary items
136
+ if (rarity === 'legendary') {
137
+ const titles = ['of Destiny', 'of Power', 'of Legends', 'the Mighty'];
138
+ if (!suffix) {
139
+ name += ' ' + titles[Math.floor(Math.random() * titles.length)];
140
+ }
141
+ }
142
+ return name;
143
+ }
144
+ /**
145
+ * Generate a procedural description
146
+ */
147
+ function generateProceduralDescription(baseName, affixes) {
148
+ if (affixes.length === 0) {
149
+ return `A standard ${baseName.toLowerCase()}.`;
150
+ }
151
+ const effects = affixes.map(a => a.name.toLowerCase()).join(' and ');
152
+ return `A ${baseName.toLowerCase()} imbued with ${effects}.`;
153
+ }
154
+ /**
155
+ * Calculate total weapon stats including affixes
156
+ */
157
+ export function calculateWeaponStats(weapon) {
158
+ const registry = getAffixRegistry();
159
+ let totalAttack = weapon.baseAttack;
160
+ const bonusStats = {};
161
+ const effects = [];
162
+ for (const affix of weapon.affixes) {
163
+ const def = registry.get(affix.definitionId);
164
+ if (!def)
165
+ continue;
166
+ // Apply stat modifiers
167
+ if (def.statModifiers) {
168
+ for (const [stat, value] of Object.entries(def.statModifiers)) {
169
+ if (stat === 'attack') {
170
+ totalAttack += value;
171
+ }
172
+ else {
173
+ bonusStats[stat] = (bonusStats[stat] || 0) + value;
174
+ }
175
+ }
176
+ }
177
+ // Collect effects
178
+ if (def.onHitEffects) {
179
+ for (const effect of def.onHitEffects) {
180
+ effects.push(`${effect.element || 'Physical'}: ${effect.value} (${Math.floor(effect.chance * 100)}%)`);
181
+ }
182
+ }
183
+ }
184
+ return { totalAttack, bonusStats, effects };
185
+ }
186
+ /**
187
+ * Format weapon for display
188
+ */
189
+ export function formatWeapon(weapon) {
190
+ const lines = [];
191
+ const stats = calculateWeaponStats(weapon);
192
+ lines.push(`[${weapon.rarity.toUpperCase()}] ${weapon.name}`);
193
+ lines.push(`Attack: ${stats.totalAttack}`);
194
+ lines.push(`Durability: ${weapon.durability}/${weapon.maxDurability}`);
195
+ if (weapon.affixes.length > 0) {
196
+ lines.push('Affixes:');
197
+ for (const affix of weapon.affixes) {
198
+ lines.push(` - ${affix.name} (${affix.rarity})`);
199
+ }
200
+ }
201
+ if (stats.effects.length > 0) {
202
+ lines.push('Effects:');
203
+ for (const effect of stats.effects) {
204
+ lines.push(` - ${effect}`);
205
+ }
206
+ }
207
+ lines.push('');
208
+ lines.push(weapon.description);
209
+ if (weapon.lore) {
210
+ lines.push('');
211
+ lines.push(`"${weapon.lore}"`);
212
+ }
213
+ return lines;
214
+ }
215
+ //# sourceMappingURL=WeaponFactory.js.map
216
+ //# debugId=cd297e4e-25fa-5559-891b-09ab64efa066
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeaponFactory.js","sources":["weapon/WeaponFactory.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Weapon Factory - generates weapons with affixes\r\n */\r\n\r\nimport type { Weapon, Rarity, AppliedAffix } from '../core/types.js';\r\nimport { getAffixRegistry } from '../affix/AffixRegistry.js';\r\nimport { getAIClient } from '../ai/PlayKitClient.js';\r\n\r\ninterface WeaponGeneratorConfig {\r\n playerLevel: number;\r\n maxRarity?: Rarity;\r\n guaranteedRarity?: Rarity;\r\n affixCount?: { min: number; max: number };\r\n useAI?: boolean;\r\n}\r\n\r\nconst WEAPON_BASES = [\r\n { name: 'Sword', baseAttack: 10, type: 'melee' },\r\n { name: 'Axe', baseAttack: 14, type: 'melee' },\r\n { name: 'Dagger', baseAttack: 6, type: 'melee' },\r\n { name: 'Mace', baseAttack: 12, type: 'melee' },\r\n { name: 'Spear', baseAttack: 11, type: 'melee' },\r\n { name: 'Staff', baseAttack: 8, type: 'magic' },\r\n { name: 'Wand', baseAttack: 5, type: 'magic' },\r\n { name: 'Bow', baseAttack: 9, type: 'ranged' },\r\n];\r\n\r\nconst RARITY_COLORS: Record<Rarity, string> = {\r\n common: 'gray',\r\n uncommon: 'green',\r\n rare: 'blue',\r\n epic: 'purple',\r\n legendary: 'orange',\r\n};\r\n\r\nconst RARITY_MULTIPLIERS: Record<Rarity, number> = {\r\n common: 1,\r\n uncommon: 1.2,\r\n rare: 1.5,\r\n epic: 2,\r\n legendary: 3,\r\n};\r\n\r\n/**\r\n * Generate a random weapon\r\n */\r\nexport async function generateWeapon(config: WeaponGeneratorConfig): Promise<Weapon> {\r\n const {\r\n playerLevel,\r\n maxRarity = 'legendary',\r\n guaranteedRarity,\r\n affixCount = { min: 0, max: 2 },\r\n useAI = true,\r\n } = config;\r\n\r\n // Select base weapon\r\n const base = WEAPON_BASES[Math.floor(Math.random() * WEAPON_BASES.length)];\r\n\r\n // Determine rarity\r\n const rarity = guaranteedRarity || rollRarity(playerLevel, maxRarity);\r\n\r\n // Calculate base stats\r\n const levelMultiplier = 1 + (playerLevel - 1) * 0.1;\r\n const rarityMult = RARITY_MULTIPLIERS[rarity];\r\n const baseAttack = Math.floor(base.baseAttack * levelMultiplier * rarityMult);\r\n\r\n // Get random affixes\r\n const registry = getAffixRegistry();\r\n const numAffixes = Math.floor(\r\n Math.random() * (affixCount.max - affixCount.min + 1) + affixCount.min\r\n );\r\n \r\n const affixDefs = registry.getRandomAffixes({\r\n count: numAffixes,\r\n maxRarity: rarity,\r\n playerLevel,\r\n });\r\n\r\n const affixes: AppliedAffix[] = affixDefs.map(def => ({\r\n definitionId: def.id,\r\n name: def.name,\r\n type: def.type,\r\n rarity: def.rarity,\r\n }));\r\n\r\n // Generate name\r\n let name: string;\r\n let description: string;\r\n let lore: string | undefined;\r\n\r\n if (useAI && affixes.length > 0) {\r\n try {\r\n const ai = getAIClient();\r\n const affixNames = affixes.map(a => a.name);\r\n \r\n name = await ai.generateWeaponName(affixNames);\r\n description = await ai.generateWeaponDescription(name, affixNames);\r\n \r\n if (rarity === 'legendary' || rarity === 'epic') {\r\n lore = await ai.generateWeaponLore(name);\r\n }\r\n } catch (error) {\r\n // Fallback to procedural generation\r\n name = generateProceduralName(base.name, affixes, rarity);\r\n description = generateProceduralDescription(base.name, affixes);\r\n }\r\n } else {\r\n name = generateProceduralName(base.name, affixes, rarity);\r\n description = generateProceduralDescription(base.name, affixes);\r\n }\r\n\r\n return {\r\n id: `weapon_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,\r\n name,\r\n description,\r\n lore,\r\n baseAttack,\r\n durability: 100,\r\n maxDurability: 100,\r\n affixes,\r\n rarity,\r\n generatedByAI: useAI && affixes.length > 0,\r\n };\r\n}\r\n\r\n/**\r\n * Roll for weapon rarity\r\n */\r\nfunction rollRarity(playerLevel: number, maxRarity: Rarity): Rarity {\r\n const rarityOrder: Rarity[] = ['common', 'uncommon', 'rare', 'epic', 'legendary'];\r\n const maxIndex = rarityOrder.indexOf(maxRarity);\r\n\r\n // Base chances modified by level\r\n const levelBonus = Math.min(playerLevel * 0.02, 0.2); // Up to 20% bonus at level 10\r\n \r\n const chances = [\r\n 0.50 - levelBonus, // common\r\n 0.30, // uncommon\r\n 0.12 + levelBonus / 2, // rare\r\n 0.06 + levelBonus / 3, // epic\r\n 0.02 + levelBonus / 5, // legendary\r\n ];\r\n\r\n const roll = Math.random();\r\n let cumulative = 0;\r\n\r\n for (let i = 0; i <= maxIndex; i++) {\r\n cumulative += chances[i];\r\n if (roll < cumulative) {\r\n return rarityOrder[i];\r\n }\r\n }\r\n\r\n return 'common';\r\n}\r\n\r\n/**\r\n * Generate a procedural weapon name\r\n */\r\nfunction generateProceduralName(\r\n baseName: string,\r\n affixes: AppliedAffix[],\r\n rarity: Rarity\r\n): string {\r\n const prefix = affixes.find(a => a.type === 'prefix');\r\n const suffix = affixes.find(a => a.type === 'suffix');\r\n\r\n let name = '';\r\n\r\n if (prefix) {\r\n name = prefix.name + ' ';\r\n }\r\n\r\n name += baseName;\r\n\r\n if (suffix) {\r\n name += ' ' + suffix.name;\r\n }\r\n\r\n // Add title for legendary items\r\n if (rarity === 'legendary') {\r\n const titles = ['of Destiny', 'of Power', 'of Legends', 'the Mighty'];\r\n if (!suffix) {\r\n name += ' ' + titles[Math.floor(Math.random() * titles.length)];\r\n }\r\n }\r\n\r\n return name;\r\n}\r\n\r\n/**\r\n * Generate a procedural description\r\n */\r\nfunction generateProceduralDescription(\r\n baseName: string,\r\n affixes: AppliedAffix[]\r\n): string {\r\n if (affixes.length === 0) {\r\n return `A standard ${baseName.toLowerCase()}.`;\r\n }\r\n\r\n const effects = affixes.map(a => a.name.toLowerCase()).join(' and ');\r\n return `A ${baseName.toLowerCase()} imbued with ${effects}.`;\r\n}\r\n\r\n/**\r\n * Calculate total weapon stats including affixes\r\n */\r\nexport function calculateWeaponStats(weapon: Weapon): {\r\n totalAttack: number;\r\n bonusStats: Record<string, number>;\r\n effects: string[];\r\n} {\r\n const registry = getAffixRegistry();\r\n let totalAttack = weapon.baseAttack;\r\n const bonusStats: Record<string, number> = {};\r\n const effects: string[] = [];\r\n\r\n for (const affix of weapon.affixes) {\r\n const def = registry.get(affix.definitionId);\r\n if (!def) continue;\r\n\r\n // Apply stat modifiers\r\n if (def.statModifiers) {\r\n for (const [stat, value] of Object.entries(def.statModifiers)) {\r\n if (stat === 'attack') {\r\n totalAttack += value as number;\r\n } else {\r\n bonusStats[stat] = (bonusStats[stat] || 0) + (value as number);\r\n }\r\n }\r\n }\r\n\r\n // Collect effects\r\n if (def.onHitEffects) {\r\n for (const effect of def.onHitEffects) {\r\n effects.push(`${effect.element || 'Physical'}: ${effect.value} (${Math.floor(effect.chance * 100)}%)`);\r\n }\r\n }\r\n }\r\n\r\n return { totalAttack, bonusStats, effects };\r\n}\r\n\r\n/**\r\n * Format weapon for display\r\n */\r\nexport function formatWeapon(weapon: Weapon): string[] {\r\n const lines: string[] = [];\r\n const stats = calculateWeaponStats(weapon);\r\n\r\n lines.push(`[${weapon.rarity.toUpperCase()}] ${weapon.name}`);\r\n lines.push(`Attack: ${stats.totalAttack}`);\r\n lines.push(`Durability: ${weapon.durability}/${weapon.maxDurability}`);\r\n \r\n if (weapon.affixes.length > 0) {\r\n lines.push('Affixes:');\r\n for (const affix of weapon.affixes) {\r\n lines.push(` - ${affix.name} (${affix.rarity})`);\r\n }\r\n }\r\n\r\n if (stats.effects.length > 0) {\r\n lines.push('Effects:');\r\n for (const effect of stats.effects) {\r\n lines.push(` - ${effect}`);\r\n }\r\n }\r\n\r\n lines.push('');\r\n lines.push(weapon.description);\r\n\r\n if (weapon.lore) {\r\n lines.push('');\r\n lines.push(`\"${weapon.lore}\"`);\r\n }\r\n\r\n return lines;\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"cd297e4e-25fa-5559-891b-09ab64efa066"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Weapon module exports
3
+ */
4
+ export { generateWeapon, calculateWeaponStats, formatWeapon } from './WeaponFactory.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["weapon/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Weapon module exports
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]="5da0ddc1-3ac4-5f75-8c6c-aad8deb16e54")}catch(e){}}();
6
+ export { generateWeapon, calculateWeaponStats, formatWeapon } from './WeaponFactory.js';
7
+ //# sourceMappingURL=index.js.map
8
+ //# debugId=5da0ddc1-3ac4-5f75-8c6c-aad8deb16e54
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["weapon/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Weapon module exports\r\n */\r\n\r\nexport { generateWeapon, calculateWeaponStats, formatWeapon } from './WeaponFactory.js';\r\n"],"names":[],"mappings":"AAAA;;GAEG;;;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC","debug_id":"5da0ddc1-3ac4-5f75-8c6c-aad8deb16e54"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "idlerpg.sh",
3
+ "version": "0.1.0",
4
+ "description": "An AI-native terminal idle rpg game with more creative ai gameplay",
5
+ "type": "module",
6
+ "main": "dist/main.js",
7
+ "bin": {
8
+ "idlerpg": "./dist/main.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc && pnpm sentry:sourcemaps",
15
+ "start": "node dist/main.js",
16
+ "dev": "tsx src/main.ts",
17
+ "watch": "tsc --watch",
18
+ "sentry:sourcemaps": "sentry-cli sourcemaps inject --org capsuleer --project idlerpg-sh ./dist && sentry-cli sourcemaps upload --org capsuleer --project idlerpg-sh ./dist"
19
+ },
20
+ "keywords": [
21
+ "idlerpg",
22
+ "terminal",
23
+ "game",
24
+ "ai",
25
+ "idle-rpg",
26
+ "tui"
27
+ ],
28
+ "author": "",
29
+ "license": "MIT",
30
+ "devDependencies": {
31
+ "@types/node": "^20.10.0",
32
+ "tsx": "^4.7.0",
33
+ "typescript": "^5.3.0"
34
+ },
35
+ "dependencies": {
36
+ "@sentry/cli": "^2.58.4",
37
+ "@sentry/node": "^10.35.0",
38
+ "@sentry/profiling-node": "^10.35.0",
39
+ "open": "^11.0.0",
40
+ "playkit-sdk": "1.2.8-beta.5",
41
+ "qrcode-terminal": "^0.12.0"
42
+ },
43
+ "engines": {
44
+ "node": ">=20.0.0"
45
+ }
46
+ }