@rpgm-tools/neo-angband-core 0.18.0 → 0.19.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 (848) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/perceive.d.ts.map +1 -1
  3. package/dist/agent/perceive.js +2 -2
  4. package/dist/agent/perceive.js.map +1 -1
  5. package/dist/combat/blow-vectors.d.ts +78 -0
  6. package/dist/combat/blow-vectors.d.ts.map +1 -0
  7. package/dist/combat/blow-vectors.fixtures.d.ts +19 -0
  8. package/dist/combat/blow-vectors.fixtures.d.ts.map +1 -0
  9. package/dist/combat/blow-vectors.fixtures.js +81 -0
  10. package/dist/combat/blow-vectors.fixtures.js.map +1 -0
  11. package/dist/combat/blow-vectors.js +195 -0
  12. package/dist/combat/blow-vectors.js.map +1 -0
  13. package/dist/combat/brand-slay.d.ts +22 -9
  14. package/dist/combat/brand-slay.d.ts.map +1 -1
  15. package/dist/combat/brand-slay.js +37 -10
  16. package/dist/combat/brand-slay.js.map +1 -1
  17. package/dist/combat/index.d.ts +1 -1
  18. package/dist/combat/index.js +1 -1
  19. package/dist/combat/melee.d.ts +25 -13
  20. package/dist/combat/melee.d.ts.map +1 -1
  21. package/dist/combat/melee.js +23 -19
  22. package/dist/combat/melee.js.map +1 -1
  23. package/dist/combat/mon-melee.d.ts +166 -7
  24. package/dist/combat/mon-melee.d.ts.map +1 -1
  25. package/dist/combat/mon-melee.js +469 -338
  26. package/dist/combat/mon-melee.js.map +1 -1
  27. package/dist/combat/ranged.d.ts +15 -13
  28. package/dist/combat/ranged.d.ts.map +1 -1
  29. package/dist/combat/ranged.js +31 -29
  30. package/dist/combat/ranged.js.map +1 -1
  31. package/dist/constants.d.ts +14 -0
  32. package/dist/constants.d.ts.map +1 -1
  33. package/dist/constants.js +14 -0
  34. package/dist/constants.js.map +1 -1
  35. package/dist/datafile.d.ts +48 -0
  36. package/dist/datafile.d.ts.map +1 -0
  37. package/dist/datafile.js +102 -0
  38. package/dist/datafile.js.map +1 -0
  39. package/dist/effects/effect-info-registry.d.ts +237 -0
  40. package/dist/effects/effect-info-registry.d.ts.map +1 -0
  41. package/dist/effects/effect-info-registry.js +138 -0
  42. package/dist/effects/effect-info-registry.js.map +1 -0
  43. package/dist/effects/effect-info-vectors.d.ts +92 -0
  44. package/dist/effects/effect-info-vectors.d.ts.map +1 -0
  45. package/dist/effects/effect-info-vectors.fixtures.d.ts +18 -0
  46. package/dist/effects/effect-info-vectors.fixtures.d.ts.map +1 -0
  47. package/dist/effects/effect-info-vectors.fixtures.js +51 -0
  48. package/dist/effects/effect-info-vectors.fixtures.js.map +1 -0
  49. package/dist/effects/effect-info-vectors.js +315 -0
  50. package/dist/effects/effect-info-vectors.js.map +1 -0
  51. package/dist/effects/effect-info.d.ts +5 -1
  52. package/dist/effects/effect-info.d.ts.map +1 -1
  53. package/dist/effects/effect-info.js +245 -143
  54. package/dist/effects/effect-info.js.map +1 -1
  55. package/dist/effects/effect.d.ts +4 -3
  56. package/dist/effects/effect.d.ts.map +1 -1
  57. package/dist/effects/effect.js +88 -70
  58. package/dist/effects/effect.js.map +1 -1
  59. package/dist/effects/handlers.d.ts +1 -1
  60. package/dist/effects/handlers.d.ts.map +1 -1
  61. package/dist/effects/handlers.js +5 -2
  62. package/dist/effects/handlers.js.map +1 -1
  63. package/dist/effects/interpreter.d.ts +11 -0
  64. package/dist/effects/interpreter.d.ts.map +1 -1
  65. package/dist/effects/interpreter.js +13 -0
  66. package/dist/effects/interpreter.js.map +1 -1
  67. package/dist/game/cave-cmd.d.ts +9 -5
  68. package/dist/game/cave-cmd.d.ts.map +1 -1
  69. package/dist/game/cave-cmd.js +56 -11
  70. package/dist/game/cave-cmd.js.map +1 -1
  71. package/dist/game/cave-square.d.ts +42 -0
  72. package/dist/game/cave-square.d.ts.map +1 -0
  73. package/dist/game/cave-square.js +73 -0
  74. package/dist/game/cave-square.js.map +1 -0
  75. package/dist/game/char-sheet.d.ts +12 -8
  76. package/dist/game/char-sheet.d.ts.map +1 -1
  77. package/dist/game/char-sheet.js +41 -8
  78. package/dist/game/char-sheet.js.map +1 -1
  79. package/dist/game/chest.d.ts +2 -3
  80. package/dist/game/chest.d.ts.map +1 -1
  81. package/dist/game/chest.js +17 -6
  82. package/dist/game/chest.js.map +1 -1
  83. package/dist/game/context.d.ts +213 -22
  84. package/dist/game/context.d.ts.map +1 -1
  85. package/dist/game/context.js +109 -17
  86. package/dist/game/context.js.map +1 -1
  87. package/dist/game/describe.d.ts +13 -0
  88. package/dist/game/describe.d.ts.map +1 -1
  89. package/dist/game/describe.js +32 -4
  90. package/dist/game/describe.js.map +1 -1
  91. package/dist/game/display.d.ts +97 -8
  92. package/dist/game/display.d.ts.map +1 -1
  93. package/dist/game/display.js +157 -13
  94. package/dist/game/display.js.map +1 -1
  95. package/dist/game/dump-level.d.ts.map +1 -1
  96. package/dist/game/dump-level.js +3 -2
  97. package/dist/game/dump-level.js.map +1 -1
  98. package/dist/game/effect-attack.d.ts.map +1 -1
  99. package/dist/game/effect-attack.js +36 -27
  100. package/dist/game/effect-attack.js.map +1 -1
  101. package/dist/game/effect-detect.d.ts +4 -4
  102. package/dist/game/effect-detect.d.ts.map +1 -1
  103. package/dist/game/effect-detect.js +42 -9
  104. package/dist/game/effect-detect.js.map +1 -1
  105. package/dist/game/effect-env.d.ts +7 -1
  106. package/dist/game/effect-env.d.ts.map +1 -1
  107. package/dist/game/effect-env.js +1 -0
  108. package/dist/game/effect-env.js.map +1 -1
  109. package/dist/game/effect-general.d.ts +5 -3
  110. package/dist/game/effect-general.d.ts.map +1 -1
  111. package/dist/game/effect-general.js +94 -43
  112. package/dist/game/effect-general.js.map +1 -1
  113. package/dist/game/effect-item.d.ts +2 -1
  114. package/dist/game/effect-item.d.ts.map +1 -1
  115. package/dist/game/effect-item.js +136 -82
  116. package/dist/game/effect-item.js.map +1 -1
  117. package/dist/game/effect-melee.d.ts +10 -4
  118. package/dist/game/effect-melee.d.ts.map +1 -1
  119. package/dist/game/effect-melee.js +44 -19
  120. package/dist/game/effect-melee.js.map +1 -1
  121. package/dist/game/effect-monster.d.ts +26 -4
  122. package/dist/game/effect-monster.d.ts.map +1 -1
  123. package/dist/game/effect-monster.js +52 -9
  124. package/dist/game/effect-monster.js.map +1 -1
  125. package/dist/game/effect-teleport.d.ts +58 -19
  126. package/dist/game/effect-teleport.d.ts.map +1 -1
  127. package/dist/game/effect-teleport.js +143 -27
  128. package/dist/game/effect-teleport.js.map +1 -1
  129. package/dist/game/effect-terrain.d.ts +1 -3
  130. package/dist/game/effect-terrain.d.ts.map +1 -1
  131. package/dist/game/effect-terrain.js +38 -22
  132. package/dist/game/effect-terrain.js.map +1 -1
  133. package/dist/game/equip-cmp.d.ts.map +1 -1
  134. package/dist/game/equip-cmp.js +10 -7
  135. package/dist/game/equip-cmp.js.map +1 -1
  136. package/dist/game/floor.d.ts +16 -4
  137. package/dist/game/floor.d.ts.map +1 -1
  138. package/dist/game/floor.js +22 -4
  139. package/dist/game/floor.js.map +1 -1
  140. package/dist/game/gear.d.ts +101 -13
  141. package/dist/game/gear.d.ts.map +1 -1
  142. package/dist/game/gear.js +183 -24
  143. package/dist/game/gear.js.map +1 -1
  144. package/dist/game/harness.d.ts +2 -1
  145. package/dist/game/harness.d.ts.map +1 -1
  146. package/dist/game/harness.js +12 -1
  147. package/dist/game/harness.js.map +1 -1
  148. package/dist/game/ignore-cmd.d.ts +47 -8
  149. package/dist/game/ignore-cmd.d.ts.map +1 -1
  150. package/dist/game/ignore-cmd.js +76 -8
  151. package/dist/game/ignore-cmd.js.map +1 -1
  152. package/dist/game/known.d.ts +223 -34
  153. package/dist/game/known.d.ts.map +1 -1
  154. package/dist/game/known.js +301 -67
  155. package/dist/game/known.js.map +1 -1
  156. package/dist/game/loop.d.ts +4 -3
  157. package/dist/game/loop.d.ts.map +1 -1
  158. package/dist/game/loop.js +49 -29
  159. package/dist/game/loop.js.map +1 -1
  160. package/dist/game/lore-color.d.ts.map +1 -1
  161. package/dist/game/lore-color.js +13 -1
  162. package/dist/game/lore-color.js.map +1 -1
  163. package/dist/game/mon-cast.d.ts +3 -4
  164. package/dist/game/mon-cast.d.ts.map +1 -1
  165. package/dist/game/mon-cast.js +30 -2
  166. package/dist/game/mon-cast.js.map +1 -1
  167. package/dist/game/mon-cmd.d.ts +4 -5
  168. package/dist/game/mon-cmd.d.ts.map +1 -1
  169. package/dist/game/mon-cmd.js +80 -27
  170. package/dist/game/mon-cmd.js.map +1 -1
  171. package/dist/game/mon-death.d.ts +8 -4
  172. package/dist/game/mon-death.d.ts.map +1 -1
  173. package/dist/game/mon-death.js +6 -9
  174. package/dist/game/mon-death.js.map +1 -1
  175. package/dist/game/mon-group.d.ts +9 -5
  176. package/dist/game/mon-group.d.ts.map +1 -1
  177. package/dist/game/mon-group.js +9 -5
  178. package/dist/game/mon-group.js.map +1 -1
  179. package/dist/game/mon-message.d.ts +90 -40
  180. package/dist/game/mon-message.d.ts.map +1 -1
  181. package/dist/game/mon-message.js +267 -59
  182. package/dist/game/mon-message.js.map +1 -1
  183. package/dist/game/mon-place.d.ts +11 -1
  184. package/dist/game/mon-place.d.ts.map +1 -1
  185. package/dist/game/mon-place.js +15 -3
  186. package/dist/game/mon-place.js.map +1 -1
  187. package/dist/game/mon-ranged.d.ts +2 -1
  188. package/dist/game/mon-ranged.d.ts.map +1 -1
  189. package/dist/game/mon-ranged.js +11 -5
  190. package/dist/game/mon-ranged.js.map +1 -1
  191. package/dist/game/mon-side.d.ts +3 -2
  192. package/dist/game/mon-side.d.ts.map +1 -1
  193. package/dist/game/mon-side.js +15 -14
  194. package/dist/game/mon-side.js.map +1 -1
  195. package/dist/game/monster-turn.d.ts +20 -10
  196. package/dist/game/monster-turn.d.ts.map +1 -1
  197. package/dist/game/monster-turn.js +110 -83
  198. package/dist/game/monster-turn.js.map +1 -1
  199. package/dist/game/notice.d.ts +36 -0
  200. package/dist/game/notice.d.ts.map +1 -0
  201. package/dist/game/notice.js +79 -0
  202. package/dist/game/notice.js.map +1 -0
  203. package/dist/game/obj-cmd.d.ts +14 -3
  204. package/dist/game/obj-cmd.d.ts.map +1 -1
  205. package/dist/game/obj-cmd.js +109 -35
  206. package/dist/game/obj-cmd.js.map +1 -1
  207. package/dist/game/obj-list.d.ts +13 -2
  208. package/dist/game/obj-list.d.ts.map +1 -1
  209. package/dist/game/obj-list.js +42 -27
  210. package/dist/game/obj-list.js.map +1 -1
  211. package/dist/game/object-inspect.d.ts +9 -0
  212. package/dist/game/object-inspect.d.ts.map +1 -1
  213. package/dist/game/object-inspect.js +4 -0
  214. package/dist/game/object-inspect.js.map +1 -1
  215. package/dist/game/pickup.d.ts +0 -2
  216. package/dist/game/pickup.d.ts.map +1 -1
  217. package/dist/game/pickup.js +18 -3
  218. package/dist/game/pickup.js.map +1 -1
  219. package/dist/game/player-side-vectors.d.ts +174 -0
  220. package/dist/game/player-side-vectors.d.ts.map +1 -0
  221. package/dist/game/player-side-vectors.fixtures.d.ts +33 -0
  222. package/dist/game/player-side-vectors.fixtures.d.ts.map +1 -0
  223. package/dist/game/player-side-vectors.fixtures.js +191 -0
  224. package/dist/game/player-side-vectors.fixtures.js.map +1 -0
  225. package/dist/game/player-side-vectors.js +292 -0
  226. package/dist/game/player-side-vectors.js.map +1 -0
  227. package/dist/game/player-side.d.ts +129 -1
  228. package/dist/game/player-side.d.ts.map +1 -1
  229. package/dist/game/player-side.js +520 -338
  230. package/dist/game/player-side.js.map +1 -1
  231. package/dist/game/player-turn.d.ts +26 -7
  232. package/dist/game/player-turn.d.ts.map +1 -1
  233. package/dist/game/player-turn.js +180 -33
  234. package/dist/game/player-turn.js.map +1 -1
  235. package/dist/game/poly.d.ts +38 -0
  236. package/dist/game/poly.d.ts.map +1 -0
  237. package/dist/game/poly.js +82 -0
  238. package/dist/game/poly.js.map +1 -0
  239. package/dist/game/project-cast.d.ts +20 -3
  240. package/dist/game/project-cast.d.ts.map +1 -1
  241. package/dist/game/project-cast.js +49 -6
  242. package/dist/game/project-cast.js.map +1 -1
  243. package/dist/game/project-feat-vectors.d.ts +124 -0
  244. package/dist/game/project-feat-vectors.d.ts.map +1 -0
  245. package/dist/game/project-feat-vectors.fixtures.d.ts +13 -0
  246. package/dist/game/project-feat-vectors.fixtures.d.ts.map +1 -0
  247. package/dist/game/project-feat-vectors.fixtures.js +94 -0
  248. package/dist/game/project-feat-vectors.fixtures.js.map +1 -0
  249. package/dist/game/project-feat-vectors.js +229 -0
  250. package/dist/game/project-feat-vectors.js.map +1 -0
  251. package/dist/game/project-feat.d.ts +53 -1
  252. package/dist/game/project-feat.d.ts.map +1 -1
  253. package/dist/game/project-feat.js +374 -247
  254. package/dist/game/project-feat.js.map +1 -1
  255. package/dist/game/project-monster.d.ts +21 -8
  256. package/dist/game/project-monster.d.ts.map +1 -1
  257. package/dist/game/project-monster.js +45 -21
  258. package/dist/game/project-monster.js.map +1 -1
  259. package/dist/game/project-obj.d.ts +62 -0
  260. package/dist/game/project-obj.d.ts.map +1 -1
  261. package/dist/game/project-obj.js +72 -41
  262. package/dist/game/project-obj.js.map +1 -1
  263. package/dist/game/project-player.d.ts +8 -0
  264. package/dist/game/project-player.d.ts.map +1 -1
  265. package/dist/game/project-player.js.map +1 -1
  266. package/dist/game/projection-handlers.d.ts +81 -0
  267. package/dist/game/projection-handlers.d.ts.map +1 -0
  268. package/dist/game/projection-handlers.js +93 -0
  269. package/dist/game/projection-handlers.js.map +1 -0
  270. package/dist/game/quest.d.ts +23 -0
  271. package/dist/game/quest.d.ts.map +1 -1
  272. package/dist/game/quest.js +42 -0
  273. package/dist/game/quest.js.map +1 -1
  274. package/dist/game/ranged-cmd.d.ts +13 -2
  275. package/dist/game/ranged-cmd.d.ts.map +1 -1
  276. package/dist/game/ranged-cmd.js +32 -15
  277. package/dist/game/ranged-cmd.js.map +1 -1
  278. package/dist/game/repeat.d.ts +78 -0
  279. package/dist/game/repeat.d.ts.map +1 -0
  280. package/dist/game/repeat.js +88 -0
  281. package/dist/game/repeat.js.map +1 -0
  282. package/dist/game/shape-inspect.d.ts +74 -0
  283. package/dist/game/shape-inspect.d.ts.map +1 -0
  284. package/dist/game/shape-inspect.js +114 -0
  285. package/dist/game/shape-inspect.js.map +1 -0
  286. package/dist/game/spell-cmd.d.ts +15 -4
  287. package/dist/game/spell-cmd.d.ts.map +1 -1
  288. package/dist/game/spell-cmd.js +35 -6
  289. package/dist/game/spell-cmd.js.map +1 -1
  290. package/dist/game/spoil.d.ts.map +1 -1
  291. package/dist/game/spoil.js +89 -40
  292. package/dist/game/spoil.js.map +1 -1
  293. package/dist/game/steal.d.ts +3 -3
  294. package/dist/game/steal.d.ts.map +1 -1
  295. package/dist/game/steal.js +9 -4
  296. package/dist/game/steal.js.map +1 -1
  297. package/dist/game/target-loop.d.ts +10 -4
  298. package/dist/game/target-loop.d.ts.map +1 -1
  299. package/dist/game/target-loop.js +14 -8
  300. package/dist/game/target-loop.js.map +1 -1
  301. package/dist/game/target.d.ts +4 -4
  302. package/dist/game/target.d.ts.map +1 -1
  303. package/dist/game/target.js +19 -8
  304. package/dist/game/target.js.map +1 -1
  305. package/dist/game/ui-entry.d.ts +63 -4
  306. package/dist/game/ui-entry.d.ts.map +1 -1
  307. package/dist/game/ui-entry.js +151 -23
  308. package/dist/game/ui-entry.js.map +1 -1
  309. package/dist/game/wizard.d.ts +23 -5
  310. package/dist/game/wizard.d.ts.map +1 -1
  311. package/dist/game/wizard.js +93 -11
  312. package/dist/game/wizard.js.map +1 -1
  313. package/dist/game/world.d.ts.map +1 -1
  314. package/dist/game/world.js +6 -0
  315. package/dist/game/world.js.map +1 -1
  316. package/dist/gen/cave.d.ts +49 -8
  317. package/dist/gen/cave.d.ts.map +1 -1
  318. package/dist/gen/cave.js +200 -28
  319. package/dist/gen/cave.js.map +1 -1
  320. package/dist/gen/generate.d.ts +54 -9
  321. package/dist/gen/generate.d.ts.map +1 -1
  322. package/dist/gen/generate.js +55 -8
  323. package/dist/gen/generate.js.map +1 -1
  324. package/dist/gen/glyph-vectors.d.ts +109 -0
  325. package/dist/gen/glyph-vectors.d.ts.map +1 -0
  326. package/dist/gen/glyph-vectors.fixtures.d.ts +18 -0
  327. package/dist/gen/glyph-vectors.fixtures.d.ts.map +1 -0
  328. package/dist/gen/glyph-vectors.fixtures.js +94 -0
  329. package/dist/gen/glyph-vectors.fixtures.js.map +1 -0
  330. package/dist/gen/glyph-vectors.js +218 -0
  331. package/dist/gen/glyph-vectors.js.map +1 -0
  332. package/dist/gen/glyph.d.ts +104 -0
  333. package/dist/gen/glyph.d.ts.map +1 -0
  334. package/dist/gen/glyph.js +72 -0
  335. package/dist/gen/glyph.js.map +1 -0
  336. package/dist/gen/room.d.ts +26 -2
  337. package/dist/gen/room.d.ts.map +1 -1
  338. package/dist/gen/room.js +414 -264
  339. package/dist/gen/room.js.map +1 -1
  340. package/dist/gen/util.d.ts +11 -2
  341. package/dist/gen/util.d.ts.map +1 -1
  342. package/dist/gen/util.js +31 -9
  343. package/dist/gen/util.js.map +1 -1
  344. package/dist/i18n/i18n.d.ts +207 -0
  345. package/dist/i18n/i18n.d.ts.map +1 -0
  346. package/dist/i18n/i18n.js +405 -0
  347. package/dist/i18n/i18n.js.map +1 -0
  348. package/dist/i18n/text.d.ts +62 -0
  349. package/dist/i18n/text.d.ts.map +1 -0
  350. package/dist/i18n/text.js +120 -0
  351. package/dist/i18n/text.js.map +1 -0
  352. package/dist/index.d.ts +25 -0
  353. package/dist/index.d.ts.map +1 -1
  354. package/dist/index.js +38 -0
  355. package/dist/index.js.map +1 -1
  356. package/dist/mod/extension.d.ts +115 -0
  357. package/dist/mod/extension.d.ts.map +1 -0
  358. package/dist/mod/extension.js +85 -0
  359. package/dist/mod/extension.js.map +1 -0
  360. package/dist/mod/ids.d.ts +10 -0
  361. package/dist/mod/ids.d.ts.map +1 -1
  362. package/dist/mod/ids.js +90 -21
  363. package/dist/mod/ids.js.map +1 -1
  364. package/dist/mod/record-keys.d.ts +43 -0
  365. package/dist/mod/record-keys.d.ts.map +1 -0
  366. package/dist/mod/record-keys.js +100 -0
  367. package/dist/mod/record-keys.js.map +1 -0
  368. package/dist/mod/registry-host.d.ts +472 -0
  369. package/dist/mod/registry-host.d.ts.map +1 -1
  370. package/dist/mod/registry-host.js +313 -0
  371. package/dist/mod/registry-host.js.map +1 -1
  372. package/dist/mod/save-blocks.d.ts +1 -1
  373. package/dist/mon/bind.d.ts.map +1 -1
  374. package/dist/mon/bind.js +6 -3
  375. package/dist/mon/bind.js.map +1 -1
  376. package/dist/mon/knowledge-groups.d.ts +0 -6
  377. package/dist/mon/knowledge-groups.d.ts.map +1 -1
  378. package/dist/mon/knowledge-groups.js +12 -8
  379. package/dist/mon/knowledge-groups.js.map +1 -1
  380. package/dist/mon/lore-describe.d.ts +46 -10
  381. package/dist/mon/lore-describe.d.ts.map +1 -1
  382. package/dist/mon/lore-describe.js +74 -22
  383. package/dist/mon/lore-describe.js.map +1 -1
  384. package/dist/mon/lore-file.d.ts +126 -0
  385. package/dist/mon/lore-file.d.ts.map +1 -0
  386. package/dist/mon/lore-file.js +291 -0
  387. package/dist/mon/lore-file.js.map +1 -0
  388. package/dist/mon/lore.d.ts +9 -3
  389. package/dist/mon/lore.d.ts.map +1 -1
  390. package/dist/mon/lore.js +9 -3
  391. package/dist/mon/lore.js.map +1 -1
  392. package/dist/mon/make.d.ts +4 -2
  393. package/dist/mon/make.d.ts.map +1 -1
  394. package/dist/mon/make.js +4 -2
  395. package/dist/mon/make.js.map +1 -1
  396. package/dist/mon/monster.d.ts +1 -1
  397. package/dist/mon/monster.js +1 -1
  398. package/dist/mon/predicate.d.ts +14 -9
  399. package/dist/mon/predicate.d.ts.map +1 -1
  400. package/dist/mon/predicate.js +14 -9
  401. package/dist/mon/predicate.js.map +1 -1
  402. package/dist/mon/project-mon.d.ts +16 -3
  403. package/dist/mon/project-mon.d.ts.map +1 -1
  404. package/dist/mon/project-mon.js +14 -5
  405. package/dist/mon/project-mon.js.map +1 -1
  406. package/dist/mon/steal.d.ts +31 -4
  407. package/dist/mon/steal.d.ts.map +1 -1
  408. package/dist/mon/steal.js +20 -7
  409. package/dist/mon/steal.js.map +1 -1
  410. package/dist/mon/take-hit.d.ts +8 -3
  411. package/dist/mon/take-hit.d.ts.map +1 -1
  412. package/dist/mon/take-hit.js +8 -3
  413. package/dist/mon/take-hit.js.map +1 -1
  414. package/dist/mon/timed.d.ts +15 -9
  415. package/dist/mon/timed.d.ts.map +1 -1
  416. package/dist/mon/timed.js +13 -8
  417. package/dist/mon/timed.js.map +1 -1
  418. package/dist/mon/types.d.ts +11 -4
  419. package/dist/mon/types.d.ts.map +1 -1
  420. package/dist/mon/types.js.map +1 -1
  421. package/dist/msg.d.ts +40 -1
  422. package/dist/msg.d.ts.map +1 -1
  423. package/dist/msg.js +42 -1
  424. package/dist/msg.js.map +1 -1
  425. package/dist/obj/artifact-fake.d.ts +46 -14
  426. package/dist/obj/artifact-fake.d.ts.map +1 -1
  427. package/dist/obj/artifact-fake.js +46 -17
  428. package/dist/obj/artifact-fake.js.map +1 -1
  429. package/dist/obj/bind.d.ts +23 -0
  430. package/dist/obj/bind.d.ts.map +1 -1
  431. package/dist/obj/bind.js +49 -9
  432. package/dist/obj/bind.js.map +1 -1
  433. package/dist/obj/desc-vectors.d.ts +68 -0
  434. package/dist/obj/desc-vectors.d.ts.map +1 -0
  435. package/dist/obj/desc-vectors.fixtures.d.ts +12 -0
  436. package/dist/obj/desc-vectors.fixtures.d.ts.map +1 -0
  437. package/dist/obj/desc-vectors.fixtures.js +95 -0
  438. package/dist/obj/desc-vectors.fixtures.js.map +1 -0
  439. package/dist/obj/desc-vectors.js +86 -0
  440. package/dist/obj/desc-vectors.js.map +1 -0
  441. package/dist/obj/desc.d.ts +17 -2
  442. package/dist/obj/desc.d.ts.map +1 -1
  443. package/dist/obj/desc.js +129 -54
  444. package/dist/obj/desc.js.map +1 -1
  445. package/dist/obj/effects-info.d.ts.map +1 -1
  446. package/dist/obj/effects-info.js +87 -58
  447. package/dist/obj/effects-info.js.map +1 -1
  448. package/dist/obj/fake-object.d.ts +70 -0
  449. package/dist/obj/fake-object.d.ts.map +1 -0
  450. package/dist/obj/fake-object.js +104 -0
  451. package/dist/obj/fake-object.js.map +1 -0
  452. package/dist/obj/ignore.d.ts +55 -12
  453. package/dist/obj/ignore.d.ts.map +1 -1
  454. package/dist/obj/ignore.js +68 -31
  455. package/dist/obj/ignore.js.map +1 -1
  456. package/dist/obj/knowledge.d.ts +46 -3
  457. package/dist/obj/knowledge.d.ts.map +1 -1
  458. package/dist/obj/knowledge.js +169 -151
  459. package/dist/obj/knowledge.js.map +1 -1
  460. package/dist/obj/known-object.d.ts +68 -8
  461. package/dist/obj/known-object.d.ts.map +1 -1
  462. package/dist/obj/known-object.js +90 -10
  463. package/dist/obj/known-object.js.map +1 -1
  464. package/dist/obj/make.d.ts +15 -4
  465. package/dist/obj/make.d.ts.map +1 -1
  466. package/dist/obj/make.js +49 -27
  467. package/dist/obj/make.js.map +1 -1
  468. package/dist/obj/object-info.d.ts +10 -0
  469. package/dist/obj/object-info.d.ts.map +1 -1
  470. package/dist/obj/object-info.js +93 -7
  471. package/dist/obj/object-info.js.map +1 -1
  472. package/dist/obj/object.d.ts +42 -4
  473. package/dist/obj/object.d.ts.map +1 -1
  474. package/dist/obj/object.js +362 -147
  475. package/dist/obj/object.js.map +1 -1
  476. package/dist/obj/power.d.ts +23 -4
  477. package/dist/obj/power.d.ts.map +1 -1
  478. package/dist/obj/power.js +231 -65
  479. package/dist/obj/power.js.map +1 -1
  480. package/dist/obj/randart-build.d.ts +27 -22
  481. package/dist/obj/randart-build.d.ts.map +1 -1
  482. package/dist/obj/randart-build.js +435 -357
  483. package/dist/obj/randart-build.js.map +1 -1
  484. package/dist/obj/randart-data.d.ts +62 -24
  485. package/dist/obj/randart-data.d.ts.map +1 -1
  486. package/dist/obj/randart-data.js +333 -189
  487. package/dist/obj/randart-data.js.map +1 -1
  488. package/dist/obj/randart-file.d.ts +21 -0
  489. package/dist/obj/randart-file.d.ts.map +1 -0
  490. package/dist/obj/randart-file.js +119 -0
  491. package/dist/obj/randart-file.js.map +1 -0
  492. package/dist/obj/randart-log.d.ts +63 -0
  493. package/dist/obj/randart-log.d.ts.map +1 -0
  494. package/dist/obj/randart-log.js +72 -0
  495. package/dist/obj/randart-log.js.map +1 -0
  496. package/dist/obj/randart-registry.d.ts +178 -0
  497. package/dist/obj/randart-registry.d.ts.map +1 -0
  498. package/dist/obj/randart-registry.js +140 -0
  499. package/dist/obj/randart-registry.js.map +1 -0
  500. package/dist/obj/randart-vectors.d.ts +97 -0
  501. package/dist/obj/randart-vectors.d.ts.map +1 -0
  502. package/dist/obj/randart-vectors.fixtures.d.ts +18 -0
  503. package/dist/obj/randart-vectors.fixtures.d.ts.map +1 -0
  504. package/dist/obj/randart-vectors.fixtures.js +50 -0
  505. package/dist/obj/randart-vectors.fixtures.js.map +1 -0
  506. package/dist/obj/randart-vectors.js +311 -0
  507. package/dist/obj/randart-vectors.js.map +1 -0
  508. package/dist/obj/randart.d.ts +53 -15
  509. package/dist/obj/randart.d.ts.map +1 -1
  510. package/dist/obj/randart.js +166 -44
  511. package/dist/obj/randart.js.map +1 -1
  512. package/dist/obj/rune-registry.d.ts +180 -0
  513. package/dist/obj/rune-registry.d.ts.map +1 -0
  514. package/dist/obj/rune-registry.js +161 -0
  515. package/dist/obj/rune-registry.js.map +1 -0
  516. package/dist/obj/rune-vectors.d.ts +99 -0
  517. package/dist/obj/rune-vectors.d.ts.map +1 -0
  518. package/dist/obj/rune-vectors.fixtures.d.ts +44 -0
  519. package/dist/obj/rune-vectors.fixtures.d.ts.map +1 -0
  520. package/dist/obj/rune-vectors.fixtures.js +125 -0
  521. package/dist/obj/rune-vectors.fixtures.js.map +1 -0
  522. package/dist/obj/rune-vectors.js +159 -0
  523. package/dist/obj/rune-vectors.js.map +1 -0
  524. package/dist/obj/tval-registry.d.ts +174 -0
  525. package/dist/obj/tval-registry.d.ts.map +1 -0
  526. package/dist/obj/tval-registry.js +151 -0
  527. package/dist/obj/tval-registry.js.map +1 -0
  528. package/dist/obj/tval-vectors.d.ts +85 -0
  529. package/dist/obj/tval-vectors.d.ts.map +1 -0
  530. package/dist/obj/tval-vectors.fixtures.d.ts +24 -0
  531. package/dist/obj/tval-vectors.fixtures.d.ts.map +1 -0
  532. package/dist/obj/tval-vectors.fixtures.js +41 -0
  533. package/dist/obj/tval-vectors.fixtures.js.map +1 -0
  534. package/dist/obj/tval-vectors.js +76 -0
  535. package/dist/obj/tval-vectors.js.map +1 -0
  536. package/dist/obj/types.d.ts +18 -7
  537. package/dist/obj/types.d.ts.map +1 -1
  538. package/dist/obj/types.js.map +1 -1
  539. package/dist/obj/value.d.ts.map +1 -1
  540. package/dist/obj/value.js +23 -20
  541. package/dist/obj/value.js.map +1 -1
  542. package/dist/parser.d.ts +116 -0
  543. package/dist/parser.d.ts.map +1 -0
  544. package/dist/parser.js +205 -0
  545. package/dist/parser.js.map +1 -0
  546. package/dist/player/bind.d.ts.map +1 -1
  547. package/dist/player/bind.js +3 -2
  548. package/dist/player/bind.js.map +1 -1
  549. package/dist/player/birth.d.ts +2 -1
  550. package/dist/player/birth.d.ts.map +1 -1
  551. package/dist/player/birth.js +2 -1
  552. package/dist/player/birth.js.map +1 -1
  553. package/dist/player/calcs.d.ts +58 -23
  554. package/dist/player/calcs.d.ts.map +1 -1
  555. package/dist/player/calcs.js +93 -36
  556. package/dist/player/calcs.js.map +1 -1
  557. package/dist/player/death.d.ts +50 -0
  558. package/dist/player/death.d.ts.map +1 -0
  559. package/dist/player/death.js +46 -0
  560. package/dist/player/death.js.map +1 -0
  561. package/dist/player/options-file.d.ts +129 -0
  562. package/dist/player/options-file.d.ts.map +1 -0
  563. package/dist/player/options-file.js +309 -0
  564. package/dist/player/options-file.js.map +1 -0
  565. package/dist/player/options.d.ts +2 -1
  566. package/dist/player/options.d.ts.map +1 -1
  567. package/dist/player/options.js +2 -1
  568. package/dist/player/options.js.map +1 -1
  569. package/dist/player/player.d.ts +50 -3
  570. package/dist/player/player.d.ts.map +1 -1
  571. package/dist/player/player.js +10 -1
  572. package/dist/player/player.js.map +1 -1
  573. package/dist/player/shape-lore.d.ts +11 -7
  574. package/dist/player/shape-lore.d.ts.map +1 -1
  575. package/dist/player/shape-lore.js +24 -11
  576. package/dist/player/shape-lore.js.map +1 -1
  577. package/dist/player/timed.d.ts +5 -3
  578. package/dist/player/timed.d.ts.map +1 -1
  579. package/dist/player/timed.js +11 -2
  580. package/dist/player/timed.js.map +1 -1
  581. package/dist/player/types.d.ts +29 -4
  582. package/dist/player/types.d.ts.map +1 -1
  583. package/dist/player/types.js +24 -1
  584. package/dist/player/types.js.map +1 -1
  585. package/dist/session/boot.d.ts +26 -2
  586. package/dist/session/boot.d.ts.map +1 -1
  587. package/dist/session/boot.js +21 -2
  588. package/dist/session/boot.js.map +1 -1
  589. package/dist/session/game.d.ts +15 -0
  590. package/dist/session/game.d.ts.map +1 -1
  591. package/dist/session/game.js +616 -140
  592. package/dist/session/game.js.map +1 -1
  593. package/dist/session/save-migrate.d.ts.map +1 -1
  594. package/dist/session/save-migrate.js +76 -1
  595. package/dist/session/save-migrate.js.map +1 -1
  596. package/dist/session/save.d.ts +75 -12
  597. package/dist/session/save.d.ts.map +1 -1
  598. package/dist/session/save.js +177 -18
  599. package/dist/session/save.js.map +1 -1
  600. package/dist/store/bind.d.ts +1 -1
  601. package/dist/store/bind.d.ts.map +1 -1
  602. package/dist/store/bind.js +4 -3
  603. package/dist/store/bind.js.map +1 -1
  604. package/dist/store/mass-produce-vectors.d.ts +40 -0
  605. package/dist/store/mass-produce-vectors.d.ts.map +1 -0
  606. package/dist/store/mass-produce-vectors.fixtures.d.ts +13 -0
  607. package/dist/store/mass-produce-vectors.fixtures.d.ts.map +1 -0
  608. package/dist/store/mass-produce-vectors.fixtures.js +52 -0
  609. package/dist/store/mass-produce-vectors.fixtures.js.map +1 -0
  610. package/dist/store/mass-produce-vectors.js +44 -0
  611. package/dist/store/mass-produce-vectors.js.map +1 -0
  612. package/dist/store/store.d.ts +104 -7
  613. package/dist/store/store.d.ts.map +1 -1
  614. package/dist/store/store.js +199 -77
  615. package/dist/store/store.js.map +1 -1
  616. package/dist/store/transact.d.ts +14 -5
  617. package/dist/store/transact.d.ts.map +1 -1
  618. package/dist/store/transact.js +17 -16
  619. package/dist/store/transact.js.map +1 -1
  620. package/dist/store/types.d.ts +3 -2
  621. package/dist/store/types.d.ts.map +1 -1
  622. package/dist/store/types.js +1 -1
  623. package/dist/version.d.ts +1 -1
  624. package/dist/version.js +1 -1
  625. package/dist/visuals/index.d.ts +1 -0
  626. package/dist/visuals/index.d.ts.map +1 -1
  627. package/dist/visuals/index.js +1 -0
  628. package/dist/visuals/index.js.map +1 -1
  629. package/dist/visuals/map-text.d.ts +8 -0
  630. package/dist/visuals/map-text.d.ts.map +1 -1
  631. package/dist/visuals/map-text.js +1 -1
  632. package/dist/visuals/map-text.js.map +1 -1
  633. package/dist/visuals/object-glyph.d.ts +56 -0
  634. package/dist/visuals/object-glyph.d.ts.map +1 -0
  635. package/dist/visuals/object-glyph.js +52 -0
  636. package/dist/visuals/object-glyph.js.map +1 -0
  637. package/dist/visuals/prefs.d.ts +14 -22
  638. package/dist/visuals/prefs.d.ts.map +1 -1
  639. package/dist/visuals/prefs.js +4 -23
  640. package/dist/visuals/prefs.js.map +1 -1
  641. package/dist/visuals/tile-prefs.d.ts +26 -0
  642. package/dist/visuals/tile-prefs.d.ts.map +1 -1
  643. package/dist/visuals/tile-prefs.js +28 -0
  644. package/dist/visuals/tile-prefs.js.map +1 -1
  645. package/dist/world/feature.d.ts +2 -1
  646. package/dist/world/feature.d.ts.map +1 -1
  647. package/dist/world/feature.js +2 -0
  648. package/dist/world/feature.js.map +1 -1
  649. package/dist/world/project.d.ts +10 -2
  650. package/dist/world/project.d.ts.map +1 -1
  651. package/dist/world/project.js +18 -6
  652. package/dist/world/project.js.map +1 -1
  653. package/dist/world/projection.d.ts +37 -3
  654. package/dist/world/projection.d.ts.map +1 -1
  655. package/dist/world/projection.js +69 -7
  656. package/dist/world/projection.js.map +1 -1
  657. package/dist/world/trap.d.ts +2 -1
  658. package/dist/world/trap.d.ts.map +1 -1
  659. package/dist/world/trap.js +2 -1
  660. package/dist/world/trap.js.map +1 -1
  661. package/dist/world/view.d.ts +1 -1
  662. package/dist/world/view.d.ts.map +1 -1
  663. package/dist/world/view.js +11 -3
  664. package/dist/world/view.js.map +1 -1
  665. package/package.json +1 -1
  666. package/src/agent/perceive.ts +2 -3
  667. package/src/combat/blow-vectors.fixtures.ts +99 -0
  668. package/src/combat/blow-vectors.json +482 -0
  669. package/src/combat/blow-vectors.ts +280 -0
  670. package/src/combat/brand-slay.ts +42 -11
  671. package/src/combat/index.ts +1 -1
  672. package/src/combat/melee.ts +37 -19
  673. package/src/combat/mon-melee.ts +611 -364
  674. package/src/combat/ranged.ts +43 -26
  675. package/src/constants.ts +15 -0
  676. package/src/datafile.ts +148 -0
  677. package/src/effects/effect-info-registry.ts +313 -0
  678. package/src/effects/effect-info-vectors.fixtures.ts +61 -0
  679. package/src/effects/effect-info-vectors.json +11532 -0
  680. package/src/effects/effect-info-vectors.ts +376 -0
  681. package/src/effects/effect-info.ts +1005 -859
  682. package/src/effects/effect.ts +96 -62
  683. package/src/effects/handlers.ts +5 -2
  684. package/src/effects/interpreter.ts +14 -0
  685. package/src/game/cave-cmd.ts +54 -11
  686. package/src/game/cave-square.ts +80 -0
  687. package/src/game/char-sheet.ts +59 -16
  688. package/src/game/chest.ts +25 -8
  689. package/src/game/context.ts +293 -27
  690. package/src/game/describe.ts +34 -4
  691. package/src/game/display.ts +215 -19
  692. package/src/game/dump-level.ts +3 -2
  693. package/src/game/effect-attack.ts +41 -28
  694. package/src/game/effect-detect.ts +45 -8
  695. package/src/game/effect-env.ts +8 -0
  696. package/src/game/effect-general.ts +110 -47
  697. package/src/game/effect-item.ts +1075 -999
  698. package/src/game/effect-melee.ts +51 -18
  699. package/src/game/effect-monster.ts +55 -9
  700. package/src/game/effect-teleport.ts +173 -38
  701. package/src/game/effect-terrain.ts +38 -22
  702. package/src/game/equip-cmp.ts +483 -480
  703. package/src/game/floor.ts +22 -4
  704. package/src/game/gear.ts +210 -21
  705. package/src/game/harness.ts +12 -1
  706. package/src/game/ignore-cmd.ts +96 -8
  707. package/src/game/known.ts +392 -73
  708. package/src/game/loop.ts +52 -27
  709. package/src/game/lore-color.ts +13 -1
  710. package/src/game/mon-cast.ts +31 -6
  711. package/src/game/mon-cmd.ts +95 -30
  712. package/src/game/mon-death.ts +14 -12
  713. package/src/game/mon-group.ts +9 -5
  714. package/src/game/mon-message.ts +363 -65
  715. package/src/game/mon-place.ts +15 -3
  716. package/src/game/mon-ranged.ts +14 -5
  717. package/src/game/mon-side.ts +16 -12
  718. package/src/game/monster-turn.ts +120 -87
  719. package/src/game/notice.ts +85 -0
  720. package/src/game/obj-cmd.ts +126 -37
  721. package/src/game/obj-list.ts +44 -26
  722. package/src/game/object-inspect.ts +13 -0
  723. package/src/game/pickup.ts +29 -5
  724. package/src/game/player-side-vectors.fixtures.ts +215 -0
  725. package/src/game/player-side-vectors.json +6914 -0
  726. package/src/game/player-side-vectors.ts +420 -0
  727. package/src/game/player-side.ts +622 -340
  728. package/src/game/player-turn.ts +228 -31
  729. package/src/game/poly.ts +107 -0
  730. package/src/game/project-cast.ts +63 -6
  731. package/src/game/project-feat-vectors.fixtures.ts +106 -0
  732. package/src/game/project-feat-vectors.json +6554 -0
  733. package/src/game/project-feat-vectors.ts +323 -0
  734. package/src/game/project-feat.ts +417 -248
  735. package/src/game/project-monster.ts +69 -30
  736. package/src/game/project-obj-vectors.json +1 -0
  737. package/src/game/project-obj.ts +115 -47
  738. package/src/game/project-player.ts +8 -0
  739. package/src/game/projection-handlers.ts +110 -0
  740. package/src/game/quest.ts +48 -0
  741. package/src/game/ranged-cmd.ts +45 -11
  742. package/src/game/repeat.ts +92 -0
  743. package/src/game/shape-inspect.ts +166 -0
  744. package/src/game/spell-cmd.ts +39 -6
  745. package/src/game/spoil.ts +92 -39
  746. package/src/game/steal.ts +9 -4
  747. package/src/game/target-loop.ts +14 -7
  748. package/src/game/target.ts +18 -7
  749. package/src/game/ui-entry.ts +172 -22
  750. package/src/game/wizard.ts +97 -10
  751. package/src/game/world.ts +6 -0
  752. package/src/gen/cave.ts +225 -26
  753. package/src/gen/generate.ts +62 -9
  754. package/src/gen/glyph-vectors.fixtures.ts +122 -0
  755. package/src/gen/glyph-vectors.json +5996 -0
  756. package/src/gen/glyph-vectors.ts +280 -0
  757. package/src/gen/glyph.ts +132 -0
  758. package/src/gen/room.ts +446 -265
  759. package/src/gen/util.ts +32 -9
  760. package/src/i18n/i18n.ts +492 -0
  761. package/src/i18n/text.ts +117 -0
  762. package/src/index.ts +307 -254
  763. package/src/mod/extension.ts +136 -0
  764. package/src/mod/ids.ts +92 -21
  765. package/src/mod/record-keys.ts +102 -0
  766. package/src/mod/registry-host.ts +1063 -234
  767. package/src/mon/bind.ts +14 -8
  768. package/src/mon/knowledge-groups.ts +12 -12
  769. package/src/mon/lore-describe.ts +93 -26
  770. package/src/mon/lore-file.ts +365 -0
  771. package/src/mon/lore.ts +9 -3
  772. package/src/mon/make.ts +4 -2
  773. package/src/mon/monster.ts +1 -1
  774. package/src/mon/predicate.ts +14 -9
  775. package/src/mon/project-mon.ts +23 -5
  776. package/src/mon/steal.ts +39 -7
  777. package/src/mon/take-hit.ts +8 -3
  778. package/src/mon/timed.ts +15 -9
  779. package/src/mon/types.ts +11 -4
  780. package/src/msg.ts +55 -1
  781. package/src/obj/artifact-fake.ts +47 -17
  782. package/src/obj/bind.ts +52 -9
  783. package/src/obj/desc-vectors.fixtures.ts +119 -0
  784. package/src/obj/desc-vectors.json +2360 -0
  785. package/src/obj/desc-vectors.ts +128 -0
  786. package/src/obj/desc.ts +159 -55
  787. package/src/obj/effects-info.ts +90 -59
  788. package/src/obj/fake-object.ts +135 -0
  789. package/src/obj/ignore.ts +95 -28
  790. package/src/obj/knowledge.ts +291 -139
  791. package/src/obj/known-object.ts +126 -11
  792. package/src/obj/make.ts +53 -29
  793. package/src/obj/object-info.ts +103 -6
  794. package/src/obj/object.ts +392 -151
  795. package/src/obj/power.ts +297 -59
  796. package/src/obj/randart-build.ts +1875 -1705
  797. package/src/obj/randart-data.ts +1547 -1344
  798. package/src/obj/randart-file.ts +130 -0
  799. package/src/obj/randart-log.ts +78 -0
  800. package/src/obj/randart-registry.ts +247 -0
  801. package/src/obj/randart-vectors.fixtures.ts +61 -0
  802. package/src/obj/randart-vectors.json +836 -0
  803. package/src/obj/randart-vectors.ts +369 -0
  804. package/src/obj/randart.ts +722 -552
  805. package/src/obj/rune-registry.ts +270 -0
  806. package/src/obj/rune-vectors.fixtures.ts +164 -0
  807. package/src/obj/rune-vectors.json +121 -0
  808. package/src/obj/rune-vectors.ts +229 -0
  809. package/src/obj/tval-kind-vectors.json +391 -0
  810. package/src/obj/tval-registry.ts +243 -0
  811. package/src/obj/tval-vectors.fixtures.ts +50 -0
  812. package/src/obj/tval-vectors.json +38 -0
  813. package/src/obj/tval-vectors.ts +126 -0
  814. package/src/obj/types.ts +18 -7
  815. package/src/obj/value.ts +26 -20
  816. package/src/parser.ts +214 -0
  817. package/src/player/bind.ts +5 -2
  818. package/src/player/birth.ts +2 -1
  819. package/src/player/calcs.ts +123 -42
  820. package/src/player/death.ts +78 -0
  821. package/src/player/options-file.ts +387 -0
  822. package/src/player/options.ts +2 -1
  823. package/src/player/player.ts +60 -4
  824. package/src/player/shape-lore.ts +33 -14
  825. package/src/player/timed.ts +14 -4
  826. package/src/player/types.ts +30 -4
  827. package/src/session/boot.ts +51 -1
  828. package/src/session/game.ts +720 -163
  829. package/src/session/save-migrate.ts +81 -1
  830. package/src/session/save.ts +264 -22
  831. package/src/store/bind.ts +4 -3
  832. package/src/store/mass-produce-vectors.fixtures.ts +64 -0
  833. package/src/store/mass-produce-vectors.json +1169 -0
  834. package/src/store/mass-produce-vectors.ts +67 -0
  835. package/src/store/store.ts +266 -63
  836. package/src/store/transact.ts +39 -16
  837. package/src/store/types.ts +3 -2
  838. package/src/version.ts +1 -1
  839. package/src/visuals/index.ts +1 -0
  840. package/src/visuals/map-text.ts +1 -1
  841. package/src/visuals/object-glyph.ts +76 -0
  842. package/src/visuals/prefs.ts +22 -32
  843. package/src/visuals/tile-prefs.ts +32 -0
  844. package/src/world/feature.ts +4 -1
  845. package/src/world/project.ts +19 -4
  846. package/src/world/projection.ts +79 -8
  847. package/src/world/trap.ts +25 -21
  848. package/src/world/view.ts +11 -1
@@ -9,6 +9,12 @@
9
9
  * - rooms (RoomRegistry, gen/room.ts): register a room/level builder under
10
10
  * any key, referenced from a (modded) dungeon profile - overriding level
11
11
  * generation. Gated by "registry:room".
12
+ * - profiles (DungeonProfiles, gen/cave.ts): register a whole-cave builder and
13
+ * add dungeon profiles, so a mod decides what KIND of level gets generated at
14
+ * a depth - not just what a room inside it looks like. Gated by
15
+ * "registry:profile". Without this, "registry:room" was a builder a mod could
16
+ * register and nothing could ever select: dun_profile records name a builder,
17
+ * and the profile list was fixed at boot from the gamedata pack.
12
18
  * - commands (ActionRegistry, game/player-turn.ts): register or replace the
13
19
  * action a player command code runs - overriding what "walk", "cast", ... do.
14
20
  * Gated by "registry:command". (This is the live player-command seam; the
@@ -16,6 +22,35 @@
16
22
  * - monsters (GameState.monsterTurnHook, game/monster-turn.ts): install a hook
17
23
  * consulted at the top of every monster's turn; returning true takes the turn
18
24
  * over entirely - overriding monster AI. Gated by "registry:monster".
25
+ * - projections (ProjectionHandlerRegistry, game/projection-handlers.ts): install
26
+ * the handler for one projection CODE on any of the three sides - terrain
27
+ * (project_f), floor objects (project_o) or the player (project_p) - so a
28
+ * mod's own projection actually DOES something, and a core projection can be
29
+ * changed or wrapped. Gated by "registry:projection".
30
+ * - glyphs (GlyphRegistry, gen/glyph.ts): what one character of a room
31
+ * template or a vault means when the level is drawn. A mod can ship a vault
32
+ * with a glyph core never heard of and say what it does. Gated by
33
+ * "registry:glyph".
34
+ * - effectInfo (EffectInfoRegistry, effects/effect-info-registry.ts): what the
35
+ * game SAYS about an effect - the menu row, the recall sentence, the object
36
+ * properties an activation summarises, the named subtypes it accepts, and
37
+ * which item it prompts for. "registry:effect" could always make a mod's
38
+ * effect DO something; this is what lets the game describe it instead of
39
+ * printing a blank row. Gated by "registry:effect-info".
40
+ * - randart (RandartRegistry, obj/randart-registry.ts): random ARTIFACT
41
+ * construction - what an ability does, what an item class starts with, which
42
+ * census bucket it counts toward, and whether an activation is redundant.
43
+ * artifact.json always accepted a new FIXED artifact; this is the GENERATOR.
44
+ * Gated by "registry:randart".
45
+ * - tval (TvalRegistry, obj/tval-registry.ts): every question core asks
46
+ * about an item CLASS - is it a weapon, can it be worn, can it be flavoured,
47
+ * is it good, what is it worth unidentified. object.json always accepted a new
48
+ * ITEM; this is the CLASS. Gated by "registry:tval".
49
+ * - rune (RuneRegistry, obj/rune-registry.ts): every question core asks
50
+ * about a RUNE - what it is called and described as, whether an item carries
51
+ * it, whether the player knows it, how it is learned, and the line a modifier
52
+ * prints on wield. Plus `contribute`, which is how a mod's rune gets into the
53
+ * list every consumer enumerates. Gated by "registry:rune".
19
54
  * - vocab (VocabularyRegistry, mod/vocabulary.ts): declare genuinely NEW
20
55
  * vocabulary terms (flags, stats, any mod-coined kind) and store per-entity
21
56
  * values for them - extending the game's vocabulary, not just recombining it
@@ -46,18 +81,42 @@ import type { AgentCapabilities } from "../agent/types.js";
46
81
  import type { EffectCode } from "../effects/effect.js";
47
82
  import type { EffectDefinition, EffectRegistry } from "../effects/interpreter.js";
48
83
  import type { RoomBuilder, RoomRegistry } from "../gen/room.js";
84
+ import type { GlyphHandler, GlyphKind, GlyphRegistry } from "../gen/glyph.js";
85
+ import type { CaveBuilder, DunProfile, DungeonProfiles } from "../gen/cave.js";
49
86
  import type { ActionRegistry, PlayerAction } from "../game/player-turn.js";
50
87
  import type { GameState } from "../game/context.js";
51
88
  import type { Monster } from "../mon/monster.js";
89
+ import type { BlowEffectHandler, BlowEffectSpec, BlowEffectRegistry } from "../combat/mon-melee.js";
90
+ import type { MassProduceHandler, StoreBehaviourRegistry, WillBuyHandler } from "../store/store.js";
91
+ import { ANY_STORE } from "../store/store.js";
92
+ import type { ProjectionHandlerRegistry } from "../game/projection-handlers.js";
93
+ import type { ProjectFeatHandler } from "../game/project-feat.js";
94
+ import type { ProjectObjHandler } from "../game/project-obj.js";
95
+ import type { PlayerSideHandler } from "../game/player-side.js";
52
96
  import type { JsonValue } from "./save-blocks.js";
53
97
  import type { VocabKind, VocabTerm, VocabularyRegistry } from "./vocabulary.js";
98
+ import type { RandartAbilityHandler, RandartCensusHandler, RandartPrepHandler, RandartRedundancyHandler, RandartRegistry } from "../obj/randart-registry.js";
99
+ import type { TvalBasenameHandler, TvalClassPredicate, TvalGoodHandler, TvalRegistry, TvalValueBaseHandler } from "../obj/tval-registry.js";
100
+ import type { ModMessageHandler, RuneContributor, RuneDescHandler, RuneKnowsHandler, RuneLearnHandler, RuneNameHandler, RuneObjectHasHandler, RuneRegistry, RuneVariety } from "../obj/rune-registry.js";
101
+ import type { ActivationSummaryHandler, EffectInfoRegistry, EffectRequestHandler, EffectSubtypeHandler, EffectTextHandler } from "../effects/effect-info-registry.js";
54
102
  /** The capability each registry facade requires (registry:<domain>). */
55
103
  export declare const REGISTRY_CAPABILITIES: {
56
104
  readonly effect: "registry:effect";
57
105
  readonly room: "registry:room";
106
+ readonly profile: "registry:profile";
107
+ readonly blow: "registry:blow";
108
+ readonly store: "registry:store";
58
109
  readonly command: "registry:command";
59
110
  readonly monster: "registry:monster";
111
+ readonly projection: "registry:projection";
112
+ readonly glyph: "registry:glyph";
113
+ readonly effectInfo: "registry:effect-info";
114
+ readonly randart: "registry:randart";
115
+ readonly tval: "registry:tval";
116
+ readonly rune: "registry:rune";
60
117
  readonly vocab: "registry:vocab";
118
+ /** Web-owned screen rows; kept here so the capability vocabulary has one source. */
119
+ readonly menu: "registry:menu";
61
120
  };
62
121
  export type RegistryDomain = keyof typeof REGISTRY_CAPABILITIES;
63
122
  /**
@@ -73,12 +132,67 @@ export interface RegistryTargets {
73
132
  effects?: EffectRegistry | null;
74
133
  /** The room/level builder registry (CoreRegistries.rooms). */
75
134
  rooms?: RoomRegistry | null;
135
+ /** The dungeon-profile registry (CoreRegistries.profiles). */
136
+ profiles?: DungeonProfiles | null;
137
+ /** The monster blow-effect handler table (GameState.blowEffects). */
138
+ blows?: BlowEffectRegistry | null;
139
+ /** Store behaviour: what a shop buys, and how it stocks (GameState.storeBehaviour). */
140
+ stores?: StoreBehaviourRegistry | null;
76
141
  /** The live player action registry (the decision-13 command seam). */
77
142
  commands?: ActionRegistry | null;
78
143
  /** The game state, for installing the monster-AI turn hook. */
79
144
  state?: GameState | null;
145
+ /** The three projection handler tables (GameState.projectionHandlers). */
146
+ projections?: ProjectionHandlerRegistry | null;
147
+ /** The room-template / vault glyph decoders (RoomRegistry.glyphs). */
148
+ glyphs?: GlyphRegistry | null;
149
+ /** Everything the game says about an effect (the module-level registry). */
150
+ effectInfo?: EffectInfoRegistry | null;
151
+ /** Random artifact construction (the module-level registry). */
152
+ randart?: RandartRegistry | null;
153
+ /** Everything core asks about an item CLASS (the module-level registry). */
154
+ tval?: TvalRegistry | null;
155
+ /** Everything core asks about a RUNE (the module-level registry). */
156
+ rune?: RuneRegistry | null;
80
157
  /** This mod's vocabulary registry (declared terms + per-entity values). */
81
158
  vocab?: VocabularyRegistry | null;
159
+ /** The front end's menu transformer registry (web owns the live implementation). */
160
+ menus?: MenuRegistryTarget | null;
161
+ }
162
+ /**
163
+ * A menu row's stable, presentation-independent meaning. `kind` identifies
164
+ * the broad interaction (command, item, category, toggle, ...); `ref` names
165
+ * the concrete target when there is one. Extra scalar data lets a front end
166
+ * carry upstream details without inventing a type dependency on its renderer.
167
+ */
168
+ export interface MenuSemantics {
169
+ readonly kind: string;
170
+ readonly ref?: string | number;
171
+ readonly data?: Readonly<Record<string, string | number | boolean | null>>;
172
+ }
173
+ /** The declarative part of a selectable front-end row, safe for a plugin to rewrite. */
174
+ export interface MenuTransformRow {
175
+ /** Stable per-row identity, never a localized display string. */
176
+ readonly id: string;
177
+ readonly semantic: MenuSemantics;
178
+ readonly label: string;
179
+ readonly color?: string;
180
+ readonly disabled?: boolean;
181
+ readonly tag?: string;
182
+ readonly inscrip?: string | null;
183
+ readonly hint?: string;
184
+ readonly suffix?: {
185
+ readonly text: string;
186
+ readonly color: string;
187
+ readonly col: number;
188
+ };
189
+ }
190
+ /** Transform every row of one stable menu id. */
191
+ export type MenuTransformer = (id: string, rows: readonly MenuTransformRow[]) => readonly MenuTransformRow[];
192
+ /** Structural target implemented by the web front end, not by headless core. */
193
+ export interface MenuRegistryTarget {
194
+ register(id: string, transformer: MenuTransformer, owner?: string): void;
195
+ handlerFor(id: string): MenuTransformer | null;
82
196
  }
83
197
  /** The effect-override facade (gated by registry:effect). */
84
198
  export interface EffectFacade {
@@ -96,6 +210,97 @@ export interface RoomFacade {
96
210
  /** Register (or replace) a room/level builder under a key. */
97
211
  register(name: string, builder: RoomBuilder): void;
98
212
  }
213
+ /**
214
+ * The dungeon-profile facade (gated by registry:profile). A room builder makes a
215
+ * ROOM; a profile decides which whole-cave builder runs at a depth and with what
216
+ * parameters, so this is the seam for "my mod adds a new kind of level".
217
+ *
218
+ * `addProfile` appends, because choose_profile's weighted pass walks the list in
219
+ * order and its running-total randint0 depends on that order (gen/cave.ts) - a
220
+ * mod inserting into the middle would change which profile core itself picks
221
+ * from the same seed, which is a parity break, not a mod.
222
+ */
223
+ export interface ProfileFacade {
224
+ /** Register (or replace) a whole-cave builder under a key. */
225
+ registerBuilder(key: string, builder: CaveBuilder): void;
226
+ /** Whether a cave-builder key is registered. */
227
+ hasBuilder(key: string): boolean;
228
+ /**
229
+ * The builder registered under a key; throws when there is none. Exposed so a
230
+ * mod can WRAP a core builder (generate the classic cave, then add its own
231
+ * feature to it) instead of only replacing it wholesale - decorating is the
232
+ * common case, and without this the only way to reach core's generation from
233
+ * a mod builder would be to reimplement it.
234
+ */
235
+ builder(key: string): CaveBuilder;
236
+ /**
237
+ * Append a dungeon profile. Its `builder` must already be registered - a
238
+ * profile naming an unknown builder would throw from inside generation, one
239
+ * level change after the mistake, so it is refused here instead.
240
+ */
241
+ addProfile(profile: DunProfile): void;
242
+ /** Look a profile up by name, or null. */
243
+ find(name: string): DunProfile | null;
244
+ /** Every profile, in selection order. */
245
+ list(): readonly DunProfile[];
246
+ }
247
+ /**
248
+ * The monster blow-effect facade (gated by registry:blow).
249
+ *
250
+ * `blow_effects.json` has always accepted a 31st record; until this facade
251
+ * existed that record was data with no behaviour, because the behaviour lived in
252
+ * a switch. This is the seam that makes a new blow effect actually hit.
253
+ *
254
+ * `define` is the one to reach for: it takes a single description and derives
255
+ * both of the handlers the engine needs - the worldless recording path and the
256
+ * live one. `register` is the escape hatch for an effect that genuinely differs
257
+ * between the two, and `handlerFor` is what a wrapper calls through to.
258
+ */
259
+ export interface BlowFacade {
260
+ /**
261
+ * Add or replace a blow effect from ONE description. The spec's side effects
262
+ * are recorded as intents by the worldless path and applied through the blow
263
+ * environment by the live one, from the same value - so the two cannot drift.
264
+ */
265
+ define(name: string, spec: BlowEffectSpec): void;
266
+ /** Add or replace a blow effect by supplying both handlers explicitly. */
267
+ register(name: string, handler: BlowEffectHandler): void;
268
+ /**
269
+ * The handler currently installed for an effect name, or null. This is how a
270
+ * mod WRAPS core's behaviour - take POISON's handler, register one that calls
271
+ * it and then does something extra - rather than reimplementing it.
272
+ */
273
+ handlerFor(name: string): BlowEffectHandler | null;
274
+ /** Whether anything answers for this effect name. */
275
+ has(name: string): boolean;
276
+ /** Every registered effect name, in registration order. */
277
+ names(): readonly string[];
278
+ }
279
+ /**
280
+ * The store-behaviour facade (gated by registry:store).
281
+ *
282
+ * Two decisions used to be switches with nothing to register into: what a shop
283
+ * will BUY, and how many of a thing it stocks. A mod could already add a store
284
+ * record and its own object types; it could not make the shop deal in them.
285
+ *
286
+ * The keys follow how each decision is actually made upstream - stack size by
287
+ * TVAL, the buy decision by store FEAT with a wildcard for "every store", which
288
+ * is the single body upstream shares. `willBuyFor(ANY_STORE)` hands back core's
289
+ * own rule so a mod can wrap it rather than reimplement the worthless-item and
290
+ * buy-list logic.
291
+ */
292
+ export interface StoreFacade {
293
+ /** Install (or replace) the stack rule for a tval (mass_produce). */
294
+ setMassProduce(tval: number, handler: MassProduceHandler): void;
295
+ /** The stack rule currently installed for a tval, or null. */
296
+ massProduceFor(tval: number): MassProduceHandler | null;
297
+ /** Every tval that has a stack rule. */
298
+ massProduceTvals(): readonly number[];
299
+ /** Install the buy decision for one store feat, or for every store. */
300
+ setWillBuy(feat: number | typeof ANY_STORE, handler: WillBuyHandler): void;
301
+ /** The buy decision installed for that key, or null. Wrap by re-registering. */
302
+ willBuyFor(feat: number | typeof ANY_STORE): WillBuyHandler | null;
303
+ }
99
304
  /** The player-command facade (gated by registry:command). */
100
305
  export interface CommandFacade {
101
306
  /** Register (or replace) the action a player command code runs. */
@@ -103,6 +308,13 @@ export interface CommandFacade {
103
308
  /** Whether a command code currently has an action. */
104
309
  has(code: string): boolean;
105
310
  }
311
+ /** The front-end menu facade (gated by registry:menu). */
312
+ export interface MenuFacade {
313
+ /** Install (or replace) the transformer for one stable menu id. */
314
+ register(id: string, transformer: MenuTransformer): void;
315
+ /** The currently installed transformer, for layering/wrapping an earlier mod. */
316
+ handlerFor(id: string): MenuTransformer | null;
317
+ }
106
318
  /** The monster-AI facade (gated by registry:monster). */
107
319
  export interface MonsterFacade {
108
320
  /**
@@ -111,6 +323,256 @@ export interface MonsterFacade {
111
323
  */
112
324
  setTurnHook(hook: MonsterTurnHook | null): void;
113
325
  }
326
+ /**
327
+ * One side of the projection family: terrain, floor objects or the player.
328
+ *
329
+ * ONE CODE AT A TIME, deliberately. The engine's override fields are whole
330
+ * tables, and a whole table is not composable - two mods each handing over a
331
+ * complete map means the second discards the first, along with its brand-new
332
+ * projection. Writing per code makes the load order do what it says: the last
333
+ * mod to set a code wins that code, and every other mod's codes survive.
334
+ *
335
+ * `handlerFor` is what makes EXTENDING possible as well as replacing. It hands
336
+ * back whatever is installed at that moment - core's handler, or an earlier
337
+ * mod's - so wrapping another mod's WATER works exactly as wrapping core's does.
338
+ */
339
+ export interface ProjectionSideFacade<H> {
340
+ /** Install (or replace) the handler for one projection code. */
341
+ set(code: string, handler: H): void;
342
+ /** The handler installed for a code right now, or null. Wrap by re-setting. */
343
+ handlerFor(code: string): H | null;
344
+ /** Whether anything answers for this code. */
345
+ has(code: string): boolean;
346
+ /** Every code with a handler, core's first. */
347
+ codes(): readonly string[];
348
+ }
349
+ /**
350
+ * The projection facade (gated by registry:projection).
351
+ *
352
+ * `projection.json` has always accepted a new record, and `registry:effect`
353
+ * could already fire one. What none of that could do was say what the new
354
+ * projection DOES when it reaches a wall, a floor pile or the player - those
355
+ * three were switches, and then registries with no producer. This is the
356
+ * producer.
357
+ */
358
+ export interface ProjectionFacade {
359
+ /** project_f: what a projection does to terrain. */
360
+ readonly feat: ProjectionSideFacade<ProjectFeatHandler>;
361
+ /** project_o: what a projection does to objects on the floor. */
362
+ readonly obj: ProjectionSideFacade<ProjectObjHandler>;
363
+ /** project_p: what a projection does to the player. */
364
+ readonly player: ProjectionSideFacade<PlayerSideHandler>;
365
+ }
366
+ /**
367
+ * The room-template / vault glyph facade (gated by registry:glyph).
368
+ *
369
+ * `room_template.json` and `vault.json` have always accepted a new record, so a
370
+ * mod could always ship a vault - but only one drawn with the glyphs the two
371
+ * decoders already knew, because they were closed switches. A glyph they do not
372
+ * know is silently plain floor: no error, no effect. This is the seam that makes
373
+ * a new glyph mean something.
374
+ *
375
+ * The two alphabets are separate on purpose, because upstream's are: `+` is a
376
+ * closed door in a room template and a SECRET door in a vault.
377
+ */
378
+ export interface GlyphFacade {
379
+ /** Install (or replace) the handler for one glyph of one decoder. */
380
+ set(kind: GlyphKind, glyph: string, handler: GlyphHandler): void;
381
+ /**
382
+ * The handler installed for a glyph right now, or null. Wrap core by keeping
383
+ * this, installing your own, and calling through - `%` places the outer wall
384
+ * AND records an entrance, and reimplementing that from scratch to add one
385
+ * effect is how a mod comes to disagree with the level around it.
386
+ */
387
+ handlerFor(kind: GlyphKind, glyph: string): GlyphHandler | null;
388
+ /** Whether anything decodes this glyph. */
389
+ has(kind: GlyphKind, glyph: string): boolean;
390
+ /** Every glyph a decoder knows, core's first. */
391
+ glyphs(kind: GlyphKind): readonly string[];
392
+ }
393
+ /**
394
+ * One table of the effect-info facade. Written once and applied four times
395
+ * because the four differ only in their key and handler types - four
396
+ * hand-copied blocks would be four places for the capability check to go
397
+ * missing.
398
+ */
399
+ export interface EffectInfoTableFacade<K, H> {
400
+ /** Install (or replace) the handler for one key. */
401
+ set(key: K, handler: H): void;
402
+ /**
403
+ * The handler installed for a key right now, or null. Wrap core by keeping
404
+ * this, installing your own, and calling through - EFINFO_BREATH's
405
+ * description is a projection name, a radius, a dice string AND a
406
+ * device-skill damage tail, and reimplementing that from scratch to change
407
+ * one word is how a mod comes to disagree with the rest of the recall.
408
+ */
409
+ handlerFor(key: K): H | null;
410
+ /** Whether anything handles this key. */
411
+ has(key: K): boolean;
412
+ /** Every key handled, core's first. */
413
+ keys(): readonly K[];
414
+ }
415
+ /**
416
+ * The effect-info facade (gated by registry:effect-info).
417
+ *
418
+ * `registry:effect` has always let a mod register a handler for a new effect
419
+ * code and have it DO something. What it could not do was let the game describe
420
+ * it: four closed switches meant a mod's effect showed a blank menu row, said
421
+ * nothing in object recall, could never be summarised as granting an object
422
+ * property, and accepted no NAMED subtype. This is the seam that gives a mod's
423
+ * effect a voice.
424
+ *
425
+ * Four tables under three keys, kept separate because upstream's keys are:
426
+ * `text` is keyed on the EFINFO_* flag (twenty flags cover a hundred and twelve
427
+ * effects), `summary` on the effect CODE, `subtype` and `request` on the effect
428
+ * INDEX or a mod's string code.
429
+ */
430
+ export interface EffectInfoFacade {
431
+ /** The menu row and the object-recall sentence, keyed on the EFINFO_* flag. */
432
+ readonly text: EffectInfoTableFacade<string, EffectTextHandler>;
433
+ /** effect_summarize_properties' arms, keyed on the effect code. */
434
+ readonly summary: EffectInfoTableFacade<string, ActivationSummaryHandler>;
435
+ /** effect_subtype's arms, keyed on the effect index or a mod code. */
436
+ readonly subtype: EffectInfoTableFacade<EffectCode, EffectSubtypeHandler>;
437
+ /** Which item an effect prompts for, keyed on the effect index or a mod code. */
438
+ readonly request: EffectInfoTableFacade<EffectCode, EffectRequestHandler>;
439
+ }
440
+ /**
441
+ * One table of the randart facade. Same shape as the effect-info tables and for
442
+ * the same reason: four hand-copied blocks would be four places for the
443
+ * capability check to go missing.
444
+ */
445
+ export interface RandartTableFacade<K, H> {
446
+ /** Install (or replace) the handler for one key. */
447
+ set(key: K, handler: H): void;
448
+ /**
449
+ * The handler installed for a key right now, or null. Wrapping matters more
450
+ * here than almost anywhere else: an ability that draws a different NUMBER of
451
+ * random values changes every artifact generated after it, so reimplementing
452
+ * core's from scratch and getting the draw count wrong is a whole-set
453
+ * divergence rather than a local one.
454
+ */
455
+ handlerFor(key: K): H | null;
456
+ /** Whether anything handles this key. */
457
+ has(key: K): boolean;
458
+ /** Every key handled, core's first. */
459
+ keys(): readonly K[];
460
+ }
461
+ /**
462
+ * The random-artifact facade (gated by registry:randart).
463
+ *
464
+ * `artifact.json` has always accepted a new record, so a mod could always ship a
465
+ * FIXED artifact. Reaching the RANDOM artifact generator is a different thing:
466
+ * four closed switches decided every property a randart can have, and a
467
+ * mod-coined ability index took the default arm - which is a bare `break`. The
468
+ * design loop spent power on it and the artifact got nothing, silently.
469
+ */
470
+ export interface RandartFacade {
471
+ /** What an ability does, keyed on the ART_IDX index. */
472
+ readonly abilities: RandartTableFacade<number, RandartAbilityHandler>;
473
+ /** An item class's starting to-hit / to-dam / AC, keyed on tval. */
474
+ readonly prep: RandartTableFacade<number, RandartPrepHandler>;
475
+ /** Which census bucket an item class counts toward, keyed on tval. */
476
+ readonly census: RandartTableFacade<number, RandartCensusHandler>;
477
+ /** Whether an activation is redundant, keyed on the EFPROP kind. */
478
+ readonly redundancy: RandartTableFacade<number, RandartRedundancyHandler>;
479
+ }
480
+ /**
481
+ * One table of the tval facade. Same shape as the effect-info and randart
482
+ * tables and for the same reason: three hand-copied blocks would be three
483
+ * places for the capability check to go missing.
484
+ */
485
+ export interface TvalTableFacade<K, H> {
486
+ /** Install (or replace) the handler for one key. */
487
+ set(key: K, handler: H): void;
488
+ /**
489
+ * The handler installed for a key right now, or null. WRAPPING is the normal
490
+ * case here rather than the advanced one: a mod almost never wants to replace
491
+ * "is this a weapon", it wants to add one tval to the answer.
492
+ */
493
+ handlerFor(key: K): H | null;
494
+ /** Whether anything handles this key. */
495
+ has(key: K): boolean;
496
+ /** Every key handled, core's first. */
497
+ keys(): readonly K[];
498
+ }
499
+ /**
500
+ * The item-CLASS facade (gated by registry:tval).
501
+ *
502
+ * `object.json` has always accepted a new record, so a mod could always ship a
503
+ * new ITEM. Making core recognise a new item CLASS was a different thing: 34
504
+ * predicates and two dispatches decided every property a class has, all closed,
505
+ * all failing by answering no. A mod-coined tval was not a weapon, could not be
506
+ * worn, could not be flavoured, was never "good", and was worth nothing
507
+ * unidentified - across 408 call sites, silently.
508
+ */
509
+ export interface TvalFacade {
510
+ /**
511
+ * Class membership, keyed on the EXPORTED PREDICATE'S OWN NAME -
512
+ * `"tvalIsWeapon"`, `"tvalCanHaveFlavor"` - so there is no translation table
513
+ * between what a mod writes and what core calls. A mod may also coin a class
514
+ * name core has never heard of and ask about it from its own code.
515
+ */
516
+ readonly classes: TvalTableFacade<string, TvalClassPredicate>;
517
+ /** Whether a template is "good" for its class, keyed on tval. */
518
+ readonly good: TvalTableFacade<number, TvalGoodHandler>;
519
+ /** What an UNIDENTIFIED item of this class is worth, keyed on tval. */
520
+ readonly valueBase: TvalTableFacade<number, TvalValueBaseHandler>;
521
+ /**
522
+ * What the item class is CALLED, keyed on tval. Without an entry every
523
+ * message, menu row, shop line and recall header naming the class reads the
524
+ * literal string "(nothing)" - upstream's own default arm. This is the single
525
+ * most visible thing a mod adding an item class has to register.
526
+ */
527
+ readonly basename: TvalTableFacade<number, TvalBasenameHandler>;
528
+ }
529
+ /**
530
+ * One table of the rune facade. Same shape as the tval, effect-info and randart
531
+ * table facades, and gated the same way.
532
+ */
533
+ export interface RuneTableFacade<K, H> {
534
+ /** Install (or replace) the handler for a key. */
535
+ set(key: K, handler: H): void;
536
+ /**
537
+ * What is installed right now, or null - the WRAP idiom. Wrapping matters
538
+ * more here than anywhere else: a mod that wants its own rune understood
539
+ * almost never wants to replace core's answer for `"brand"`.
540
+ */
541
+ handlerFor(key: K): H | null;
542
+ /** Whether anything handles this key. */
543
+ has(key: K): boolean;
544
+ /** Every key handled, core's first. */
545
+ keys(): readonly K[];
546
+ }
547
+ /**
548
+ * The RUNE facade (gated by registry:rune).
549
+ *
550
+ * A rune is the unit of object knowledge. Before this seam, five of the six
551
+ * decisions below dispatched on `rune.variety`, which was a CLOSED TYPESCRIPT
552
+ * UNION - a harder closure than a switch, because a mod could not coin a
553
+ * variety at all and no default arm was ever reached to fail. See
554
+ * `obj/rune-registry.ts` for what each unregistered key costs.
555
+ *
556
+ * `contribute` is not an extra: nothing in core ever asks about a rune that is
557
+ * not in `buildRuneList`, so without it the six tables would be a seam every
558
+ * caller walks past.
559
+ */
560
+ export interface RuneFacade {
561
+ /** The recall description, keyed on variety. */
562
+ readonly desc: RuneTableFacade<RuneVariety, RuneDescHandler>;
563
+ /** Whether the player knows it, keyed on variety. */
564
+ readonly knows: RuneTableFacade<RuneVariety, RuneKnowsHandler>;
565
+ /** Whether an item carries it, keyed on variety. */
566
+ readonly objectHas: RuneTableFacade<RuneVariety, RuneObjectHasHandler>;
567
+ /** Learning it, keyed on variety. */
568
+ readonly learn: RuneTableFacade<RuneVariety, RuneLearnHandler>;
569
+ /** The display decoration, keyed on variety. Absent means the bare name. */
570
+ readonly name: RuneTableFacade<RuneVariety, RuneNameHandler>;
571
+ /** The "You feel stronger!" line, keyed on the OBJ_MOD index. */
572
+ readonly modMessage: RuneTableFacade<number, ModMessageHandler>;
573
+ /** Add runes to the list every consumer enumerates. */
574
+ contribute(source: RuneContributor): void;
575
+ }
114
576
  /**
115
577
  * The vocabulary-extension facade (gated by registry:vocab). Declares NEW terms
116
578
  * (flags / stats / any mod-coined kind) and stores per-entity values for them -
@@ -142,9 +604,19 @@ export interface VocabFacade {
142
604
  export interface ModRegistryHost {
143
605
  readonly effects: EffectFacade;
144
606
  readonly rooms: RoomFacade;
607
+ readonly profiles: ProfileFacade;
608
+ readonly blows: BlowFacade;
609
+ readonly stores: StoreFacade;
145
610
  readonly commands: CommandFacade;
146
611
  readonly monsters: MonsterFacade;
612
+ readonly projections: ProjectionFacade;
613
+ readonly glyphs: GlyphFacade;
614
+ readonly effectInfo: EffectInfoFacade;
615
+ readonly randart: RandartFacade;
616
+ readonly tval: TvalFacade;
617
+ readonly rune: RuneFacade;
147
618
  readonly vocab: VocabFacade;
619
+ readonly menus: MenuFacade;
148
620
  }
149
621
  /**
150
622
  * Build the capability-gated registry host over the live registries. Pass the
@@ -1 +1 @@
1
- {"version":3,"file":"registry-host.d.ts","sourceRoot":"","sources":["../../src/mod/registry-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-host.d.ts","sourceRoot":"","sources":["../../src/mod/registry-host.ts"],"names":[],"mappings":"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"}