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,795 @@
1
+ /**
2
+ * NPC Traits, Races, and Roles Database
3
+ * Western Fantasy / D&D Style
4
+ */
5
+ // ============================================================================
6
+ // RACES
7
+ // ============================================================================
8
+
9
+ !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]="9046dde2-5ea0-5338-b1b3-071c38c58a4f")}catch(e){}}();
10
+ export const RACES = [
11
+ {
12
+ id: 'human',
13
+ name: 'Human',
14
+ weight: 30,
15
+ lifespan: '70-90 years',
16
+ namePrefixes: {
17
+ male: ['Aldric', 'Bran', 'Cedric', 'Dorian', 'Edmund', 'Gareth', 'Hendrick', 'Ivan', 'Jasper', 'Kael'],
18
+ female: ['Aria', 'Brynn', 'Celeste', 'Diana', 'Elena', 'Fiona', 'Gwen', 'Helena', 'Iris', 'Juliet'],
19
+ neutral: ['Morgan', 'Rowan', 'Quinn', 'Sage', 'Avery'],
20
+ },
21
+ nameSuffixes: {
22
+ male: ['ric', 'mund', 'ard', 'bert', 'fred'],
23
+ female: ['ina', 'ella', 'lyn', 'beth', 'anne'],
24
+ neutral: [''],
25
+ },
26
+ traits: ['adaptable', 'ambitious'],
27
+ appearance: ['weathered face', 'calloused hands', 'tired eyes', 'sturdy build', 'sun-darkened skin'],
28
+ },
29
+ {
30
+ id: 'elf',
31
+ name: 'Elf',
32
+ weight: 15,
33
+ lifespan: '700-900 years',
34
+ namePrefixes: {
35
+ male: ['Aelindor', 'Caelum', 'Elendil', 'Faelar', 'Galathil', 'Ilyndor', 'Leorin', 'Mirethil', 'Sylvan', 'Thaelon'],
36
+ female: ['Aelara', 'Caelia', 'Elowen', 'Faelynn', 'Galadria', 'Ilyana', 'Liriel', 'Miriel', 'Sylvara', 'Thaelia'],
37
+ neutral: ['Aerin', 'Cael', 'Elys', 'Fael', 'Gael'],
38
+ },
39
+ nameSuffixes: {
40
+ male: ['ion', 'iel', 'orn', 'il', 'ar'],
41
+ female: ['iel', 'wen', 'ara', 'ith', 'ia'],
42
+ neutral: ['yn', 'ys', 'el'],
43
+ },
44
+ traits: ['ancient_wisdom', 'detached', 'graceful'],
45
+ appearance: ['pointed ears', 'ageless features', 'slender build', 'luminous eyes', 'ethereal grace'],
46
+ floorAffinity: { min: 1, max: 10 },
47
+ },
48
+ {
49
+ id: 'dwarf',
50
+ name: 'Dwarf',
51
+ weight: 12,
52
+ lifespan: '300-400 years',
53
+ namePrefixes: {
54
+ male: ['Thorin', 'Balin', 'Dwalin', 'Gimli', 'Oin', 'Gloin', 'Fili', 'Kili', 'Dain', 'Nain'],
55
+ female: ['Dis', 'Hild', 'Sigrid', 'Thyra', 'Brynja', 'Gerta', 'Magna', 'Olga', 'Runa', 'Vala'],
56
+ neutral: ['Durin', 'Khazad', 'Azag'],
57
+ },
58
+ nameSuffixes: {
59
+ male: ['rim', 'rin', 'din', 'grim', 'bur'],
60
+ female: ['hild', 'run', 'dis', 'va', 'ga'],
61
+ neutral: ['ak', 'ul', 'az'],
62
+ },
63
+ traits: ['stubborn', 'loyal', 'craftsman'],
64
+ appearance: ['thick beard', 'stocky build', 'muscular arms', 'deep-set eyes', 'stone-dust in hair'],
65
+ floorAffinity: { min: 3, max: 15 },
66
+ },
67
+ {
68
+ id: 'halfling',
69
+ name: 'Halfling',
70
+ weight: 8,
71
+ lifespan: '150-200 years',
72
+ namePrefixes: {
73
+ male: ['Bilbo', 'Frodo', 'Sam', 'Merry', 'Pippin', 'Drogo', 'Folco', 'Largo', 'Polo', 'Saradoc'],
74
+ female: ['Belladonna', 'Daisy', 'Elanor', 'Marigold', 'Primula', 'Rosie', 'Bell', 'Esme', 'Ruby', 'Pearl'],
75
+ neutral: ['Robin', 'Finch', 'Wren'],
76
+ },
77
+ nameSuffixes: {
78
+ male: ['o', 'as', 'in', 'oc', 'go'],
79
+ female: ['a', 'ie', 'y', 'ose', 'la'],
80
+ neutral: [''],
81
+ },
82
+ traits: ['cheerful', 'curious', 'lucky'],
83
+ appearance: ['bare hairy feet', 'round face', 'curly hair', 'bright eyes', 'short stature'],
84
+ floorAffinity: { min: 1, max: 5 },
85
+ },
86
+ {
87
+ id: 'gnome',
88
+ name: 'Gnome',
89
+ weight: 6,
90
+ lifespan: '400-500 years',
91
+ namePrefixes: {
92
+ male: ['Fizwick', 'Gimble', 'Namfoodle', 'Roondar', 'Zook', 'Boddynock', 'Dimble', 'Fonkin', 'Gerbo', 'Jebeddo'],
93
+ female: ['Bimpnottin', 'Caramip', 'Donella', 'Ellywick', 'Lilli', 'Nissa', 'Oda', 'Shamil', 'Tana', 'Zanna'],
94
+ neutral: ['Pip', 'Fizz', 'Sprocket'],
95
+ },
96
+ nameSuffixes: {
97
+ male: ['wick', 'bin', 'nock', 'bar', 'dle'],
98
+ female: ['wen', 'tin', 'li', 'na', 'sa'],
99
+ neutral: ['ix', 'oz', 'et'],
100
+ },
101
+ traits: ['inventive', 'eccentric', 'tinkerer'],
102
+ appearance: ['large nose', 'wild hair', 'goggles', 'ink-stained fingers', 'tiny spectacles'],
103
+ floorAffinity: { min: 2, max: 8 },
104
+ },
105
+ {
106
+ id: 'half-elf',
107
+ name: 'Half-Elf',
108
+ weight: 10,
109
+ lifespan: '150-200 years',
110
+ namePrefixes: {
111
+ male: ['Aric', 'Beren', 'Daelan', 'Eryn', 'Finn', 'Galen', 'Haelor', 'Kieran', 'Liam', 'Nolan'],
112
+ female: ['Aeris', 'Briana', 'Celia', 'Elara', 'Fiora', 'Gwynn', 'Isla', 'Kira', 'Lyra', 'Mira'],
113
+ neutral: ['Ash', 'River', 'Sky', 'Storm'],
114
+ },
115
+ nameSuffixes: {
116
+ male: ['an', 'en', 'or', 'el', 'in'],
117
+ female: ['a', 'is', 'ra', 'ia', 'yn'],
118
+ neutral: [''],
119
+ },
120
+ traits: ['adaptable', 'conflicted', 'diplomatic'],
121
+ appearance: ['slightly pointed ears', 'youthful appearance', 'mixed features', 'expressive eyes'],
122
+ },
123
+ {
124
+ id: 'half-orc',
125
+ name: 'Half-Orc',
126
+ weight: 8,
127
+ lifespan: '60-80 years',
128
+ namePrefixes: {
129
+ male: ['Grom', 'Krusk', 'Morg', 'Thok', 'Urog', 'Varg', 'Zug', 'Drok', 'Feng', 'Harg'],
130
+ female: ['Baggi', 'Emen', 'Engong', 'Myev', 'Neega', 'Ovak', 'Shautha', 'Vola', 'Yevelda', 'Zugbu'],
131
+ neutral: ['Grak', 'Mog', 'Thag'],
132
+ },
133
+ nameSuffixes: {
134
+ male: ['ash', 'ug', 'ok', 'ar', 'um'],
135
+ female: ['a', 'gi', 'bu', 'ev', 'tha'],
136
+ neutral: [''],
137
+ },
138
+ traits: ['aggressive', 'honorable', 'survivor'],
139
+ appearance: ['tusks', 'greenish skin', 'muscular build', 'scarred', 'fierce eyes'],
140
+ floorAffinity: { min: 4, max: 15 },
141
+ },
142
+ {
143
+ id: 'tiefling',
144
+ name: 'Tiefling',
145
+ weight: 5,
146
+ lifespan: '100-150 years',
147
+ namePrefixes: {
148
+ male: ['Akmenos', 'Amnon', 'Barakas', 'Damakos', 'Ekemon', 'Iados', 'Kairon', 'Leucis', 'Morthos', 'Therai'],
149
+ female: ['Akta', 'Bryseis', 'Criella', 'Damaia', 'Ea', 'Kallista', 'Lerissa', 'Makaria', 'Nemeia', 'Rieta'],
150
+ neutral: ['Virtue', 'Sin', 'Fate', 'Chaos'],
151
+ },
152
+ nameSuffixes: {
153
+ male: ['os', 'on', 'us', 'ai', 'eon'],
154
+ female: ['a', 'is', 'ia', 'eia', 'sta'],
155
+ neutral: [''],
156
+ },
157
+ traits: ['mistrusted', 'cunning', 'resilient'],
158
+ appearance: ['horns', 'tail', 'unusual skin color', 'solid-colored eyes', 'sharp features'],
159
+ floorAffinity: { min: 5, max: 15 },
160
+ },
161
+ {
162
+ id: 'dragonborn',
163
+ name: 'Dragonborn',
164
+ weight: 4,
165
+ lifespan: '80-100 years',
166
+ namePrefixes: {
167
+ male: ['Arjhan', 'Balasar', 'Bharash', 'Donaar', 'Ghesh', 'Heskan', 'Kriv', 'Medrash', 'Nadarr', 'Shamash'],
168
+ female: ['Akra', 'Biri', 'Daar', 'Harann', 'Kava', 'Korinn', 'Mishann', 'Nala', 'Perra', 'Sora'],
169
+ neutral: ['Rhogar', 'Surina', 'Thava'],
170
+ },
171
+ nameSuffixes: {
172
+ male: ['ar', 'ash', 'an', 'iv', 'rr'],
173
+ female: ['a', 'ann', 'ra', 'va', 'inn'],
174
+ neutral: [''],
175
+ },
176
+ traits: ['proud', 'honorable', 'draconic'],
177
+ appearance: ['scales', 'draconic head', 'clawed hands', 'powerful build', 'no tail'],
178
+ floorAffinity: { min: 6, max: 15 },
179
+ },
180
+ {
181
+ id: 'goblin',
182
+ name: 'Goblin',
183
+ weight: 3,
184
+ lifespan: '40-60 years',
185
+ namePrefixes: {
186
+ male: ['Blix', 'Crink', 'Droop', 'Grik', 'Nix', 'Pox', 'Rix', 'Snig', 'Tix', 'Zix'],
187
+ female: ['Blinka', 'Crinkle', 'Dripa', 'Grika', 'Nixa', 'Poxa', 'Rixa', 'Sniga', 'Tixa', 'Zixa'],
188
+ neutral: ['Squeek', 'Rat', 'Mud'],
189
+ },
190
+ nameSuffixes: {
191
+ male: ['k', 'x', 'g', 'z', 'p'],
192
+ female: ['a', 'ka', 'le', 'la', 'xa'],
193
+ neutral: [''],
194
+ },
195
+ traits: ['cowardly', 'cunning', 'greedy'],
196
+ appearance: ['large ears', 'sharp teeth', 'beady eyes', 'green skin', 'scrawny'],
197
+ floorAffinity: { min: 1, max: 6 },
198
+ },
199
+ {
200
+ id: 'orc',
201
+ name: 'Orc',
202
+ weight: 3,
203
+ lifespan: '50-70 years',
204
+ namePrefixes: {
205
+ male: ['Azog', 'Bolg', 'Gorbag', 'Grishnakh', 'Lugdush', 'Mauhur', 'Shagrat', 'Ugluk', 'Gashnak', 'Muzgash'],
206
+ female: ['Aghra', 'Bashka', 'Grisha', 'Lagduf', 'Moksha', 'Nazgha', 'Orbak', 'Shaga', 'Ulka', 'Zurga'],
207
+ neutral: ['Snarl', 'Gore', 'Fang'],
208
+ },
209
+ nameSuffixes: {
210
+ male: ['og', 'uk', 'ag', 'ash', 'ub'],
211
+ female: ['a', 'sha', 'ka', 'ga', 'ha'],
212
+ neutral: [''],
213
+ },
214
+ traits: ['brutal', 'tribal', 'warrior'],
215
+ appearance: ['large tusks', 'green skin', 'massive build', 'battle scars', 'fierce war paint'],
216
+ floorAffinity: { min: 6, max: 15 },
217
+ },
218
+ {
219
+ id: 'undead',
220
+ name: 'Undead',
221
+ weight: 2,
222
+ lifespan: 'Eternal',
223
+ namePrefixes: {
224
+ male: ['Vecna', 'Strahd', 'Acererak', 'Kas', 'Azalin', 'Manfred', 'Radu', 'Sergei', 'Vlad', 'Yorick'],
225
+ female: ['Ezmerelda', 'Ireena', 'Lydia', 'Patrina', 'Sasha', 'Tatyana', 'Viktoria', 'Wanda', 'Yelena', 'Zora'],
226
+ neutral: ['Bones', 'Shade', 'Whisper', 'Echo'],
227
+ },
228
+ nameSuffixes: {
229
+ male: ['', 'us', 'or', 'on', 'ek'],
230
+ female: ['', 'a', 'ia', 'ina', 'ya'],
231
+ neutral: [''],
232
+ },
233
+ traits: ['undying', 'emotionless', 'ancient_memory'],
234
+ appearance: ['pale skin', 'hollow eyes', 'skeletal', 'ethereal glow', 'decaying'],
235
+ floorAffinity: { min: 8, max: 15 },
236
+ },
237
+ ];
238
+ // ============================================================================
239
+ // ROLES
240
+ // ============================================================================
241
+ export const ROLES = [
242
+ {
243
+ id: 'merchant',
244
+ name: 'Merchant',
245
+ weight: 15,
246
+ description: 'A trader of goods and secrets',
247
+ typicalRaces: ['human', 'halfling', 'gnome', 'dwarf'],
248
+ associatedTraits: ['greedy', 'cunning', 'well_traveled'],
249
+ },
250
+ {
251
+ id: 'sage',
252
+ name: 'Sage',
253
+ weight: 8,
254
+ description: 'A keeper of ancient knowledge',
255
+ typicalRaces: ['elf', 'gnome', 'human', 'tiefling'],
256
+ associatedTraits: ['ancient_wisdom', 'bookish', 'mysterious'],
257
+ floorAffinity: { min: 3, max: 15 },
258
+ },
259
+ {
260
+ id: 'guard',
261
+ name: 'Guard',
262
+ weight: 12,
263
+ description: 'A protector of this place',
264
+ typicalRaces: ['human', 'dwarf', 'half-orc', 'dragonborn'],
265
+ associatedTraits: ['loyal', 'vigilant', 'gruff'],
266
+ },
267
+ {
268
+ id: 'traveler',
269
+ name: 'Traveler',
270
+ weight: 15,
271
+ description: 'A wanderer between worlds',
272
+ typicalRaces: ['human', 'half-elf', 'halfling', 'elf'],
273
+ associatedTraits: ['well_traveled', 'curious', 'storyteller'],
274
+ },
275
+ {
276
+ id: 'blacksmith',
277
+ name: 'Blacksmith',
278
+ weight: 8,
279
+ description: 'A master of metal and fire',
280
+ typicalRaces: ['dwarf', 'human', 'half-orc', 'dragonborn'],
281
+ associatedTraits: ['craftsman', 'patient', 'perfectionist'],
282
+ },
283
+ {
284
+ id: 'quest_giver',
285
+ name: 'Quest Giver',
286
+ weight: 10,
287
+ description: 'One with tasks for brave adventurers',
288
+ typicalRaces: ['human', 'elf', 'dwarf', 'gnome'],
289
+ associatedTraits: ['desperate', 'mysterious', 'wealthy'],
290
+ },
291
+ {
292
+ id: 'hermit',
293
+ name: 'Hermit',
294
+ weight: 5,
295
+ description: 'A recluse who has seen too much',
296
+ typicalRaces: ['human', 'elf', 'gnome', 'tiefling'],
297
+ associatedTraits: ['paranoid', 'prophetic', 'hermit'],
298
+ floorAffinity: { min: 5, max: 15 },
299
+ },
300
+ {
301
+ id: 'refugee',
302
+ name: 'Refugee',
303
+ weight: 10,
304
+ description: 'One fleeing from danger',
305
+ typicalRaces: ['human', 'halfling', 'gnome', 'goblin'],
306
+ associatedTraits: ['fearful', 'desperate', 'survivor'],
307
+ },
308
+ {
309
+ id: 'hunter',
310
+ name: 'Hunter',
311
+ weight: 8,
312
+ description: 'A tracker of beasts and monsters',
313
+ typicalRaces: ['human', 'elf', 'half-elf', 'half-orc'],
314
+ associatedTraits: ['patient', 'observant', 'ruthless'],
315
+ floorAffinity: { min: 3, max: 12 },
316
+ },
317
+ {
318
+ id: 'scholar',
319
+ name: 'Scholar',
320
+ weight: 6,
321
+ description: 'A seeker of forbidden knowledge',
322
+ typicalRaces: ['human', 'elf', 'gnome', 'tiefling'],
323
+ associatedTraits: ['bookish', 'curious', 'obsessive'],
324
+ floorAffinity: { min: 4, max: 15 },
325
+ },
326
+ {
327
+ id: 'healer',
328
+ name: 'Healer',
329
+ weight: 7,
330
+ description: 'One who mends wounds of body and soul',
331
+ typicalRaces: ['human', 'elf', 'halfling', 'half-elf'],
332
+ associatedTraits: ['compassionate', 'patient', 'wise'],
333
+ },
334
+ {
335
+ id: 'thief',
336
+ name: 'Thief',
337
+ weight: 8,
338
+ description: 'A shadow who takes what they need',
339
+ typicalRaces: ['human', 'halfling', 'half-elf', 'tiefling', 'goblin'],
340
+ associatedTraits: ['cunning', 'quick', 'greedy'],
341
+ floorAffinity: { min: 2, max: 10 },
342
+ },
343
+ {
344
+ id: 'knight',
345
+ name: 'Knight',
346
+ weight: 5,
347
+ description: 'A warrior bound by a code',
348
+ typicalRaces: ['human', 'dragonborn', 'half-elf'],
349
+ associatedTraits: ['honorable', 'brave', 'noble'],
350
+ floorAffinity: { min: 1, max: 8 },
351
+ },
352
+ {
353
+ id: 'cultist',
354
+ name: 'Cultist',
355
+ weight: 4,
356
+ description: 'A servant of darker powers',
357
+ typicalRaces: ['human', 'tiefling', 'half-orc', 'undead'],
358
+ associatedTraits: ['fanatical', 'secretive', 'dangerous'],
359
+ floorAffinity: { min: 6, max: 15 },
360
+ },
361
+ {
362
+ id: 'bard',
363
+ name: 'Bard',
364
+ weight: 6,
365
+ description: 'A collector of songs and stories',
366
+ typicalRaces: ['human', 'half-elf', 'halfling', 'tiefling'],
367
+ associatedTraits: ['charismatic', 'storyteller', 'flirtatious'],
368
+ },
369
+ {
370
+ id: 'priest',
371
+ name: 'Priest',
372
+ weight: 5,
373
+ description: 'A servant of the divine',
374
+ typicalRaces: ['human', 'elf', 'dwarf', 'dragonborn'],
375
+ associatedTraits: ['pious', 'judgmental', 'compassionate'],
376
+ },
377
+ {
378
+ id: 'mercenary',
379
+ name: 'Mercenary',
380
+ weight: 10,
381
+ description: 'A sword for hire',
382
+ typicalRaces: ['human', 'half-orc', 'dwarf', 'dragonborn'],
383
+ associatedTraits: ['pragmatic', 'ruthless', 'professional'],
384
+ floorAffinity: { min: 3, max: 15 },
385
+ },
386
+ {
387
+ id: 'noble',
388
+ name: 'Noble',
389
+ weight: 3,
390
+ description: 'Aristocracy fallen on hard times',
391
+ typicalRaces: ['human', 'elf', 'half-elf', 'tiefling'],
392
+ associatedTraits: ['arrogant', 'refined', 'desperate'],
393
+ floorAffinity: { min: 1, max: 6 },
394
+ },
395
+ ];
396
+ // ============================================================================
397
+ // TRAITS (Weighted)
398
+ // ============================================================================
399
+ export const TRAITS = [
400
+ // PERSONALITY
401
+ {
402
+ id: 'kind',
403
+ name: 'Kind',
404
+ weight: 15,
405
+ category: 'personality',
406
+ description: 'Genuinely cares about others',
407
+ promptModifier: 'You are genuinely kind and try to help others when you can.',
408
+ },
409
+ {
410
+ id: 'gruff',
411
+ name: 'Gruff',
412
+ weight: 12,
413
+ category: 'personality',
414
+ description: 'Rough exterior, speaks bluntly',
415
+ promptModifier: 'You speak bluntly and don\'t waste words on pleasantries.',
416
+ incompatibleWith: ['charming', 'flirtatious'],
417
+ },
418
+ {
419
+ id: 'cunning',
420
+ name: 'Cunning',
421
+ weight: 10,
422
+ category: 'personality',
423
+ description: 'Always calculating the angles',
424
+ promptModifier: 'You always look for the advantage in any situation and speak carefully.',
425
+ },
426
+ {
427
+ id: 'paranoid',
428
+ name: 'Paranoid',
429
+ weight: 6,
430
+ category: 'personality',
431
+ description: 'Trusts no one completely',
432
+ promptModifier: 'You are suspicious of everyone and often hint at hidden dangers.',
433
+ incompatibleWith: ['trusting', 'naive'],
434
+ },
435
+ {
436
+ id: 'cheerful',
437
+ name: 'Cheerful',
438
+ weight: 10,
439
+ category: 'personality',
440
+ description: 'Maintains optimism despite circumstances',
441
+ promptModifier: 'You maintain a cheerful demeanor even in dark times.',
442
+ incompatibleWith: ['melancholic', 'bitter'],
443
+ },
444
+ {
445
+ id: 'melancholic',
446
+ name: 'Melancholic',
447
+ weight: 8,
448
+ category: 'personality',
449
+ description: 'Carries a deep sadness',
450
+ promptModifier: 'There is a deep sadness in you that colors your words.',
451
+ incompatibleWith: ['cheerful'],
452
+ },
453
+ {
454
+ id: 'arrogant',
455
+ name: 'Arrogant',
456
+ weight: 7,
457
+ category: 'personality',
458
+ description: 'Believes themselves superior',
459
+ promptModifier: 'You consider yourself superior to most and it shows in your speech.',
460
+ incompatibleWith: ['humble'],
461
+ },
462
+ {
463
+ id: 'humble',
464
+ name: 'Humble',
465
+ weight: 8,
466
+ category: 'personality',
467
+ description: 'Downplays their own abilities',
468
+ promptModifier: 'You are humble and tend to downplay your own knowledge or abilities.',
469
+ incompatibleWith: ['arrogant'],
470
+ },
471
+ {
472
+ id: 'mysterious',
473
+ name: 'Mysterious',
474
+ weight: 10,
475
+ category: 'personality',
476
+ description: 'Speaks in riddles and hints',
477
+ promptModifier: 'You speak cryptically and rarely give direct answers.',
478
+ },
479
+ {
480
+ id: 'direct',
481
+ name: 'Direct',
482
+ weight: 12,
483
+ category: 'personality',
484
+ description: 'Says exactly what they mean',
485
+ promptModifier: 'You are direct and say exactly what you mean without embellishment.',
486
+ incompatibleWith: ['mysterious'],
487
+ },
488
+ {
489
+ id: 'charismatic',
490
+ name: 'Charismatic',
491
+ weight: 8,
492
+ category: 'personality',
493
+ description: 'Naturally draws people in',
494
+ promptModifier: 'You have a magnetic personality and speak with natural charm.',
495
+ },
496
+ {
497
+ id: 'nervous',
498
+ name: 'Nervous',
499
+ weight: 10,
500
+ category: 'personality',
501
+ description: 'Easily startled and anxious',
502
+ promptModifier: 'You are nervous and jumpy, often interrupting yourself.',
503
+ incompatibleWith: ['brave', 'confident'],
504
+ },
505
+ {
506
+ id: 'brave',
507
+ name: 'Brave',
508
+ weight: 8,
509
+ category: 'personality',
510
+ description: 'Faces danger without flinching',
511
+ promptModifier: 'You speak of danger matter-of-factly, without fear.',
512
+ incompatibleWith: ['cowardly', 'nervous'],
513
+ },
514
+ {
515
+ id: 'cowardly',
516
+ name: 'Cowardly',
517
+ weight: 6,
518
+ category: 'personality',
519
+ description: 'Self-preservation above all',
520
+ promptModifier: 'You prioritize your own survival and advise others to do the same.',
521
+ incompatibleWith: ['brave', 'honorable'],
522
+ },
523
+ // BACKGROUND
524
+ {
525
+ id: 'well_traveled',
526
+ name: 'Well-Traveled',
527
+ weight: 12,
528
+ category: 'background',
529
+ description: 'Has seen many lands and dungeons',
530
+ promptModifier: 'You often reference places you\'ve been and things you\'ve seen.',
531
+ },
532
+ {
533
+ id: 'local',
534
+ name: 'Local',
535
+ weight: 15,
536
+ category: 'background',
537
+ description: 'Has lived in this dungeon for years',
538
+ promptModifier: 'You know this area intimately and speak of it possessively.',
539
+ },
540
+ {
541
+ id: 'former_adventurer',
542
+ name: 'Former Adventurer',
543
+ weight: 8,
544
+ category: 'background',
545
+ description: 'Once sought glory, now retired',
546
+ promptModifier: 'You speak of your adventuring days with a mix of nostalgia and regret.',
547
+ minImportance: 'minor',
548
+ },
549
+ {
550
+ id: 'refugee',
551
+ name: 'Refugee',
552
+ weight: 10,
553
+ category: 'background',
554
+ description: 'Fled from something terrible',
555
+ promptModifier: 'You hint at something terrible that drove you here.',
556
+ },
557
+ {
558
+ id: 'noble_blood',
559
+ name: 'Noble Blood',
560
+ weight: 4,
561
+ category: 'background',
562
+ description: 'Of aristocratic lineage',
563
+ promptModifier: 'Your noble upbringing shows in your refined speech patterns.',
564
+ minImportance: 'minor',
565
+ },
566
+ {
567
+ id: 'criminal_past',
568
+ name: 'Criminal Past',
569
+ weight: 8,
570
+ category: 'background',
571
+ description: 'Has a dark history',
572
+ promptModifier: 'You are evasive about your past and know things honest folk shouldn\'t.',
573
+ },
574
+ {
575
+ id: 'scholar',
576
+ name: 'Scholarly',
577
+ weight: 7,
578
+ category: 'background',
579
+ description: 'Formally educated',
580
+ promptModifier: 'You use educated vocabulary and reference historical events.',
581
+ },
582
+ // QUIRKS
583
+ {
584
+ id: 'stutters',
585
+ name: 'Stutters',
586
+ weight: 5,
587
+ category: 'quirk',
588
+ description: 'Has a speech impediment',
589
+ promptModifier: 'You occasionally stutter, especially when nervous or excited.',
590
+ },
591
+ {
592
+ id: 'speaks_formally',
593
+ name: 'Speaks Formally',
594
+ weight: 8,
595
+ category: 'quirk',
596
+ description: 'Uses formal, archaic language',
597
+ promptModifier: 'You use formal, somewhat archaic language patterns.',
598
+ },
599
+ {
600
+ id: 'uses_slang',
601
+ name: 'Uses Slang',
602
+ weight: 10,
603
+ category: 'quirk',
604
+ description: 'Peppers speech with colorful expressions',
605
+ promptModifier: 'You use casual slang and colorful expressions.',
606
+ incompatibleWith: ['speaks_formally'],
607
+ },
608
+ {
609
+ id: 'tells_stories',
610
+ name: 'Storyteller',
611
+ weight: 8,
612
+ category: 'quirk',
613
+ description: 'Can\'t help but tell tales',
614
+ promptModifier: 'You love to tell stories and often go off on tangents.',
615
+ },
616
+ {
617
+ id: 'superstitious',
618
+ name: 'Superstitious',
619
+ weight: 7,
620
+ category: 'quirk',
621
+ description: 'Believes in omens and signs',
622
+ promptModifier: 'You often mention superstitions and interpret events as omens.',
623
+ },
624
+ {
625
+ id: 'forgetful',
626
+ name: 'Forgetful',
627
+ weight: 5,
628
+ category: 'quirk',
629
+ description: 'Has trouble remembering things',
630
+ promptModifier: 'You sometimes forget what you were saying or mix up details.',
631
+ incompatibleWith: ['perfect_memory'],
632
+ },
633
+ {
634
+ id: 'perfect_memory',
635
+ name: 'Perfect Memory',
636
+ weight: 3,
637
+ category: 'quirk',
638
+ description: 'Remembers everything',
639
+ promptModifier: 'You remember every detail and reference past conversations precisely.',
640
+ minImportance: 'minor',
641
+ incompatibleWith: ['forgetful'],
642
+ },
643
+ // MOTIVATIONS
644
+ {
645
+ id: 'seeking_revenge',
646
+ name: 'Seeking Revenge',
647
+ weight: 6,
648
+ category: 'motivation',
649
+ description: 'Driven by a desire for vengeance',
650
+ promptModifier: 'You are driven by revenge and sometimes let your anger show.',
651
+ minImportance: 'minor',
652
+ },
653
+ {
654
+ id: 'seeking_knowledge',
655
+ name: 'Seeking Knowledge',
656
+ weight: 8,
657
+ category: 'motivation',
658
+ description: 'Wants to understand secrets',
659
+ promptModifier: 'You are driven by curiosity and seek knowledge above all.',
660
+ },
661
+ {
662
+ id: 'seeking_wealth',
663
+ name: 'Seeking Wealth',
664
+ weight: 12,
665
+ category: 'motivation',
666
+ description: 'Motivated by gold and treasure',
667
+ promptModifier: 'You are always looking for ways to profit.',
668
+ },
669
+ {
670
+ id: 'seeking_redemption',
671
+ name: 'Seeking Redemption',
672
+ weight: 5,
673
+ category: 'motivation',
674
+ description: 'Trying to atone for past sins',
675
+ promptModifier: 'You seek redemption for past wrongs and sometimes hint at your guilt.',
676
+ minImportance: 'minor',
677
+ },
678
+ {
679
+ id: 'protecting_someone',
680
+ name: 'Protecting Someone',
681
+ weight: 6,
682
+ category: 'motivation',
683
+ description: 'Has someone they must keep safe',
684
+ promptModifier: 'You are protective and often think of someone you must keep safe.',
685
+ minImportance: 'minor',
686
+ },
687
+ {
688
+ id: 'survival',
689
+ name: 'Survival',
690
+ weight: 15,
691
+ category: 'motivation',
692
+ description: 'Just trying to stay alive',
693
+ promptModifier: 'Your primary concern is survival, and it colors all your advice.',
694
+ },
695
+ // SECRETS (Higher importance required)
696
+ {
697
+ id: 'knows_boss_weakness',
698
+ name: 'Knows Boss Weakness',
699
+ weight: 2,
700
+ category: 'secret',
701
+ description: 'Knows how to defeat a powerful enemy',
702
+ promptModifier: 'You know a secret weakness of a powerful creature but rarely share it directly.',
703
+ minImportance: 'major',
704
+ },
705
+ {
706
+ id: 'hidden_treasure',
707
+ name: 'Hidden Treasure',
708
+ weight: 4,
709
+ category: 'secret',
710
+ description: 'Knows location of hidden treasure',
711
+ promptModifier: 'You know of hidden treasure and might share hints if you trust someone.',
712
+ minImportance: 'minor',
713
+ },
714
+ {
715
+ id: 'secret_passage',
716
+ name: 'Secret Passage',
717
+ weight: 5,
718
+ category: 'secret',
719
+ description: 'Knows of hidden paths',
720
+ promptModifier: 'You know of secret passages and might hint at them.',
721
+ },
722
+ {
723
+ id: 'cursed',
724
+ name: 'Cursed',
725
+ weight: 3,
726
+ category: 'secret',
727
+ description: 'Bears a terrible curse',
728
+ promptModifier: 'You bear a curse that occasionally causes you pain or strange behavior.',
729
+ minImportance: 'minor',
730
+ },
731
+ {
732
+ id: 'not_what_they_seem',
733
+ name: 'Not What They Seem',
734
+ weight: 2,
735
+ category: 'secret',
736
+ description: 'Hiding their true identity',
737
+ promptModifier: 'You are not what you appear to be and sometimes slip in your act.',
738
+ minImportance: 'major',
739
+ },
740
+ ];
741
+ // ============================================================================
742
+ // HELPER FUNCTIONS
743
+ // ============================================================================
744
+ /**
745
+ * Get race by ID
746
+ */
747
+ export function getRace(id) {
748
+ return RACES.find(r => r.id === id);
749
+ }
750
+ /**
751
+ * Get role by ID
752
+ */
753
+ export function getRole(id) {
754
+ return ROLES.find(r => r.id === id);
755
+ }
756
+ /**
757
+ * Get trait by ID
758
+ */
759
+ export function getTrait(id) {
760
+ return TRAITS.find(t => t.id === id);
761
+ }
762
+ /**
763
+ * Get all traits for a category
764
+ */
765
+ export function getTraitsByCategory(category) {
766
+ return TRAITS.filter(t => t.category === category);
767
+ }
768
+ /**
769
+ * Get importance weight (for death probability calculation)
770
+ */
771
+ export function getImportanceWeight(importance) {
772
+ const weights = {
773
+ legendary: 0.01, // 1% daily death chance
774
+ major: 0.05, // 5% daily death chance
775
+ minor: 0.15, // 15% daily death chance
776
+ background: 0.30, // 30% daily death chance
777
+ };
778
+ return weights[importance];
779
+ }
780
+ /**
781
+ * Get importance based on weights
782
+ */
783
+ export function rollImportance(weights) {
784
+ const total = Object.values(weights).reduce((a, b) => a + b, 0);
785
+ let roll = Math.random() * total;
786
+ for (const [importance, weight] of Object.entries(weights)) {
787
+ roll -= weight;
788
+ if (roll <= 0) {
789
+ return importance;
790
+ }
791
+ }
792
+ return 'background';
793
+ }
794
+ //# sourceMappingURL=traits.js.map
795
+ //# debugId=9046dde2-5ea0-5338-b1b3-071c38c58a4f