@rpgm-tools/neo-angband-core 0.18.0 → 0.20.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 (946) 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/cmd.d.ts +44 -2
  6. package/dist/cmd.d.ts.map +1 -1
  7. package/dist/cmd.js +59 -3
  8. package/dist/cmd.js.map +1 -1
  9. package/dist/combat/blow-vectors.d.ts +78 -0
  10. package/dist/combat/blow-vectors.d.ts.map +1 -0
  11. package/dist/combat/blow-vectors.fixtures.d.ts +19 -0
  12. package/dist/combat/blow-vectors.fixtures.d.ts.map +1 -0
  13. package/dist/combat/blow-vectors.fixtures.js +81 -0
  14. package/dist/combat/blow-vectors.fixtures.js.map +1 -0
  15. package/dist/combat/blow-vectors.js +195 -0
  16. package/dist/combat/blow-vectors.js.map +1 -0
  17. package/dist/combat/brand-slay.d.ts +22 -9
  18. package/dist/combat/brand-slay.d.ts.map +1 -1
  19. package/dist/combat/brand-slay.js +37 -10
  20. package/dist/combat/brand-slay.js.map +1 -1
  21. package/dist/combat/index.d.ts +1 -1
  22. package/dist/combat/index.js +1 -1
  23. package/dist/combat/melee.d.ts +25 -13
  24. package/dist/combat/melee.d.ts.map +1 -1
  25. package/dist/combat/melee.js +23 -19
  26. package/dist/combat/melee.js.map +1 -1
  27. package/dist/combat/mon-melee.d.ts +166 -7
  28. package/dist/combat/mon-melee.d.ts.map +1 -1
  29. package/dist/combat/mon-melee.js +469 -338
  30. package/dist/combat/mon-melee.js.map +1 -1
  31. package/dist/combat/ranged.d.ts +15 -13
  32. package/dist/combat/ranged.d.ts.map +1 -1
  33. package/dist/combat/ranged.js +31 -29
  34. package/dist/combat/ranged.js.map +1 -1
  35. package/dist/constants.d.ts +14 -0
  36. package/dist/constants.d.ts.map +1 -1
  37. package/dist/constants.js +14 -0
  38. package/dist/constants.js.map +1 -1
  39. package/dist/datafile.d.ts +48 -0
  40. package/dist/datafile.d.ts.map +1 -0
  41. package/dist/datafile.js +102 -0
  42. package/dist/datafile.js.map +1 -0
  43. package/dist/effects/effect-info-registry.d.ts +237 -0
  44. package/dist/effects/effect-info-registry.d.ts.map +1 -0
  45. package/dist/effects/effect-info-registry.js +138 -0
  46. package/dist/effects/effect-info-registry.js.map +1 -0
  47. package/dist/effects/effect-info-vectors.d.ts +92 -0
  48. package/dist/effects/effect-info-vectors.d.ts.map +1 -0
  49. package/dist/effects/effect-info-vectors.fixtures.d.ts +18 -0
  50. package/dist/effects/effect-info-vectors.fixtures.d.ts.map +1 -0
  51. package/dist/effects/effect-info-vectors.fixtures.js +51 -0
  52. package/dist/effects/effect-info-vectors.fixtures.js.map +1 -0
  53. package/dist/effects/effect-info-vectors.js +315 -0
  54. package/dist/effects/effect-info-vectors.js.map +1 -0
  55. package/dist/effects/effect-info.d.ts +5 -1
  56. package/dist/effects/effect-info.d.ts.map +1 -1
  57. package/dist/effects/effect-info.js +245 -143
  58. package/dist/effects/effect-info.js.map +1 -1
  59. package/dist/effects/effect.d.ts +4 -3
  60. package/dist/effects/effect.d.ts.map +1 -1
  61. package/dist/effects/effect.js +88 -70
  62. package/dist/effects/effect.js.map +1 -1
  63. package/dist/effects/handlers.d.ts +1 -1
  64. package/dist/effects/handlers.d.ts.map +1 -1
  65. package/dist/effects/handlers.js +5 -2
  66. package/dist/effects/handlers.js.map +1 -1
  67. package/dist/effects/interpreter.d.ts +11 -0
  68. package/dist/effects/interpreter.d.ts.map +1 -1
  69. package/dist/effects/interpreter.js +13 -0
  70. package/dist/effects/interpreter.js.map +1 -1
  71. package/dist/game/cave-cmd.d.ts +9 -5
  72. package/dist/game/cave-cmd.d.ts.map +1 -1
  73. package/dist/game/cave-cmd.js +56 -11
  74. package/dist/game/cave-cmd.js.map +1 -1
  75. package/dist/game/cave-square.d.ts +42 -0
  76. package/dist/game/cave-square.d.ts.map +1 -0
  77. package/dist/game/cave-square.js +73 -0
  78. package/dist/game/cave-square.js.map +1 -0
  79. package/dist/game/char-sheet.d.ts +12 -8
  80. package/dist/game/char-sheet.d.ts.map +1 -1
  81. package/dist/game/char-sheet.js +41 -8
  82. package/dist/game/char-sheet.js.map +1 -1
  83. package/dist/game/chest.d.ts +2 -3
  84. package/dist/game/chest.d.ts.map +1 -1
  85. package/dist/game/chest.js +17 -6
  86. package/dist/game/chest.js.map +1 -1
  87. package/dist/game/context.d.ts +244 -22
  88. package/dist/game/context.d.ts.map +1 -1
  89. package/dist/game/context.js +109 -17
  90. package/dist/game/context.js.map +1 -1
  91. package/dist/game/describe.d.ts +13 -0
  92. package/dist/game/describe.d.ts.map +1 -1
  93. package/dist/game/describe.js +32 -4
  94. package/dist/game/describe.js.map +1 -1
  95. package/dist/game/display.d.ts +123 -8
  96. package/dist/game/display.d.ts.map +1 -1
  97. package/dist/game/display.js +273 -35
  98. package/dist/game/display.js.map +1 -1
  99. package/dist/game/dump-level.d.ts +1 -1
  100. package/dist/game/dump-level.d.ts.map +1 -1
  101. package/dist/game/dump-level.js +4 -3
  102. package/dist/game/dump-level.js.map +1 -1
  103. package/dist/game/effect-attack.d.ts.map +1 -1
  104. package/dist/game/effect-attack.js +37 -30
  105. package/dist/game/effect-attack.js.map +1 -1
  106. package/dist/game/effect-detect.d.ts +4 -4
  107. package/dist/game/effect-detect.d.ts.map +1 -1
  108. package/dist/game/effect-detect.js +42 -9
  109. package/dist/game/effect-detect.js.map +1 -1
  110. package/dist/game/effect-env.d.ts +7 -1
  111. package/dist/game/effect-env.d.ts.map +1 -1
  112. package/dist/game/effect-env.js +1 -0
  113. package/dist/game/effect-env.js.map +1 -1
  114. package/dist/game/effect-general.d.ts +5 -3
  115. package/dist/game/effect-general.d.ts.map +1 -1
  116. package/dist/game/effect-general.js +99 -47
  117. package/dist/game/effect-general.js.map +1 -1
  118. package/dist/game/effect-item.d.ts +2 -1
  119. package/dist/game/effect-item.d.ts.map +1 -1
  120. package/dist/game/effect-item.js +146 -86
  121. package/dist/game/effect-item.js.map +1 -1
  122. package/dist/game/effect-melee.d.ts +10 -4
  123. package/dist/game/effect-melee.d.ts.map +1 -1
  124. package/dist/game/effect-melee.js +44 -19
  125. package/dist/game/effect-melee.js.map +1 -1
  126. package/dist/game/effect-monster.d.ts +26 -4
  127. package/dist/game/effect-monster.d.ts.map +1 -1
  128. package/dist/game/effect-monster.js +52 -9
  129. package/dist/game/effect-monster.js.map +1 -1
  130. package/dist/game/effect-teleport.d.ts +58 -19
  131. package/dist/game/effect-teleport.d.ts.map +1 -1
  132. package/dist/game/effect-teleport.js +153 -28
  133. package/dist/game/effect-teleport.js.map +1 -1
  134. package/dist/game/effect-terrain.d.ts +2 -4
  135. package/dist/game/effect-terrain.d.ts.map +1 -1
  136. package/dist/game/effect-terrain.js +39 -23
  137. package/dist/game/effect-terrain.js.map +1 -1
  138. package/dist/game/equip-cmp.d.ts +17 -6
  139. package/dist/game/equip-cmp.d.ts.map +1 -1
  140. package/dist/game/equip-cmp.js +53 -31
  141. package/dist/game/equip-cmp.js.map +1 -1
  142. package/dist/game/floor.d.ts +48 -4
  143. package/dist/game/floor.d.ts.map +1 -1
  144. package/dist/game/floor.js +64 -4
  145. package/dist/game/floor.js.map +1 -1
  146. package/dist/game/gear.d.ts +118 -16
  147. package/dist/game/gear.d.ts.map +1 -1
  148. package/dist/game/gear.js +185 -26
  149. package/dist/game/gear.js.map +1 -1
  150. package/dist/game/harness.d.ts +2 -1
  151. package/dist/game/harness.d.ts.map +1 -1
  152. package/dist/game/harness.js +12 -1
  153. package/dist/game/harness.js.map +1 -1
  154. package/dist/game/ignore-cmd.d.ts +47 -8
  155. package/dist/game/ignore-cmd.d.ts.map +1 -1
  156. package/dist/game/ignore-cmd.js +76 -8
  157. package/dist/game/ignore-cmd.js.map +1 -1
  158. package/dist/game/inscription-confirm.d.ts +13 -6
  159. package/dist/game/inscription-confirm.d.ts.map +1 -1
  160. package/dist/game/inscription-confirm.js +13 -6
  161. package/dist/game/inscription-confirm.js.map +1 -1
  162. package/dist/game/known.d.ts +254 -40
  163. package/dist/game/known.d.ts.map +1 -1
  164. package/dist/game/known.js +382 -80
  165. package/dist/game/known.js.map +1 -1
  166. package/dist/game/loop.d.ts +4 -3
  167. package/dist/game/loop.d.ts.map +1 -1
  168. package/dist/game/loop.js +49 -29
  169. package/dist/game/loop.js.map +1 -1
  170. package/dist/game/lore-color.d.ts.map +1 -1
  171. package/dist/game/lore-color.js +13 -1
  172. package/dist/game/lore-color.js.map +1 -1
  173. package/dist/game/mon-cast.d.ts +3 -4
  174. package/dist/game/mon-cast.d.ts.map +1 -1
  175. package/dist/game/mon-cast.js +39 -7
  176. package/dist/game/mon-cast.js.map +1 -1
  177. package/dist/game/mon-cmd.d.ts +4 -5
  178. package/dist/game/mon-cmd.d.ts.map +1 -1
  179. package/dist/game/mon-cmd.js +83 -33
  180. package/dist/game/mon-cmd.js.map +1 -1
  181. package/dist/game/mon-death.d.ts +8 -4
  182. package/dist/game/mon-death.d.ts.map +1 -1
  183. package/dist/game/mon-death.js +6 -9
  184. package/dist/game/mon-death.js.map +1 -1
  185. package/dist/game/mon-group.d.ts +9 -5
  186. package/dist/game/mon-group.d.ts.map +1 -1
  187. package/dist/game/mon-group.js +9 -5
  188. package/dist/game/mon-group.js.map +1 -1
  189. package/dist/game/mon-message.d.ts +90 -40
  190. package/dist/game/mon-message.d.ts.map +1 -1
  191. package/dist/game/mon-message.js +266 -59
  192. package/dist/game/mon-message.js.map +1 -1
  193. package/dist/game/mon-place.d.ts +11 -1
  194. package/dist/game/mon-place.d.ts.map +1 -1
  195. package/dist/game/mon-place.js +15 -3
  196. package/dist/game/mon-place.js.map +1 -1
  197. package/dist/game/mon-ranged.d.ts +2 -1
  198. package/dist/game/mon-ranged.d.ts.map +1 -1
  199. package/dist/game/mon-ranged.js +11 -5
  200. package/dist/game/mon-ranged.js.map +1 -1
  201. package/dist/game/mon-side.d.ts +3 -2
  202. package/dist/game/mon-side.d.ts.map +1 -1
  203. package/dist/game/mon-side.js +19 -21
  204. package/dist/game/mon-side.js.map +1 -1
  205. package/dist/game/monster-turn.d.ts +24 -11
  206. package/dist/game/monster-turn.d.ts.map +1 -1
  207. package/dist/game/monster-turn.js +118 -87
  208. package/dist/game/monster-turn.js.map +1 -1
  209. package/dist/game/notice.d.ts +36 -0
  210. package/dist/game/notice.d.ts.map +1 -0
  211. package/dist/game/notice.js +79 -0
  212. package/dist/game/notice.js.map +1 -0
  213. package/dist/game/obj-cmd.d.ts +14 -3
  214. package/dist/game/obj-cmd.d.ts.map +1 -1
  215. package/dist/game/obj-cmd.js +130 -38
  216. package/dist/game/obj-cmd.js.map +1 -1
  217. package/dist/game/obj-list.d.ts +13 -2
  218. package/dist/game/obj-list.d.ts.map +1 -1
  219. package/dist/game/obj-list.js +42 -27
  220. package/dist/game/obj-list.js.map +1 -1
  221. package/dist/game/object-inspect.d.ts +9 -0
  222. package/dist/game/object-inspect.d.ts.map +1 -1
  223. package/dist/game/object-inspect.js +4 -0
  224. package/dist/game/object-inspect.js.map +1 -1
  225. package/dist/game/pickup.d.ts +0 -2
  226. package/dist/game/pickup.d.ts.map +1 -1
  227. package/dist/game/pickup.js +18 -3
  228. package/dist/game/pickup.js.map +1 -1
  229. package/dist/game/player-side-vectors.d.ts +174 -0
  230. package/dist/game/player-side-vectors.d.ts.map +1 -0
  231. package/dist/game/player-side-vectors.fixtures.d.ts +33 -0
  232. package/dist/game/player-side-vectors.fixtures.d.ts.map +1 -0
  233. package/dist/game/player-side-vectors.fixtures.js +191 -0
  234. package/dist/game/player-side-vectors.fixtures.js.map +1 -0
  235. package/dist/game/player-side-vectors.js +292 -0
  236. package/dist/game/player-side-vectors.js.map +1 -0
  237. package/dist/game/player-side.d.ts +129 -1
  238. package/dist/game/player-side.d.ts.map +1 -1
  239. package/dist/game/player-side.js +520 -338
  240. package/dist/game/player-side.js.map +1 -1
  241. package/dist/game/player-turn.d.ts +27 -7
  242. package/dist/game/player-turn.d.ts.map +1 -1
  243. package/dist/game/player-turn.js +181 -34
  244. package/dist/game/player-turn.js.map +1 -1
  245. package/dist/game/poly.d.ts +38 -0
  246. package/dist/game/poly.d.ts.map +1 -0
  247. package/dist/game/poly.js +82 -0
  248. package/dist/game/poly.js.map +1 -0
  249. package/dist/game/project-cast.d.ts +20 -3
  250. package/dist/game/project-cast.d.ts.map +1 -1
  251. package/dist/game/project-cast.js +58 -6
  252. package/dist/game/project-cast.js.map +1 -1
  253. package/dist/game/project-feat-vectors.d.ts +124 -0
  254. package/dist/game/project-feat-vectors.d.ts.map +1 -0
  255. package/dist/game/project-feat-vectors.fixtures.d.ts +13 -0
  256. package/dist/game/project-feat-vectors.fixtures.d.ts.map +1 -0
  257. package/dist/game/project-feat-vectors.fixtures.js +94 -0
  258. package/dist/game/project-feat-vectors.fixtures.js.map +1 -0
  259. package/dist/game/project-feat-vectors.js +229 -0
  260. package/dist/game/project-feat-vectors.js.map +1 -0
  261. package/dist/game/project-feat.d.ts +53 -1
  262. package/dist/game/project-feat.d.ts.map +1 -1
  263. package/dist/game/project-feat.js +374 -247
  264. package/dist/game/project-feat.js.map +1 -1
  265. package/dist/game/project-monster.d.ts +31 -8
  266. package/dist/game/project-monster.d.ts.map +1 -1
  267. package/dist/game/project-monster.js +56 -23
  268. package/dist/game/project-monster.js.map +1 -1
  269. package/dist/game/project-obj.d.ts +62 -0
  270. package/dist/game/project-obj.d.ts.map +1 -1
  271. package/dist/game/project-obj.js +72 -41
  272. package/dist/game/project-obj.js.map +1 -1
  273. package/dist/game/project-player.d.ts +8 -0
  274. package/dist/game/project-player.d.ts.map +1 -1
  275. package/dist/game/project-player.js.map +1 -1
  276. package/dist/game/projection-handlers.d.ts +89 -0
  277. package/dist/game/projection-handlers.d.ts.map +1 -0
  278. package/dist/game/projection-handlers.js +101 -0
  279. package/dist/game/projection-handlers.js.map +1 -0
  280. package/dist/game/quest.d.ts +23 -0
  281. package/dist/game/quest.d.ts.map +1 -1
  282. package/dist/game/quest.js +42 -0
  283. package/dist/game/quest.js.map +1 -1
  284. package/dist/game/ranged-cmd.d.ts +13 -2
  285. package/dist/game/ranged-cmd.d.ts.map +1 -1
  286. package/dist/game/ranged-cmd.js +38 -17
  287. package/dist/game/ranged-cmd.js.map +1 -1
  288. package/dist/game/repeat.d.ts +115 -0
  289. package/dist/game/repeat.d.ts.map +1 -0
  290. package/dist/game/repeat.js +111 -0
  291. package/dist/game/repeat.js.map +1 -0
  292. package/dist/game/shape-inspect.d.ts +74 -0
  293. package/dist/game/shape-inspect.d.ts.map +1 -0
  294. package/dist/game/shape-inspect.js +114 -0
  295. package/dist/game/shape-inspect.js.map +1 -0
  296. package/dist/game/spell-cmd.d.ts +15 -4
  297. package/dist/game/spell-cmd.d.ts.map +1 -1
  298. package/dist/game/spell-cmd.js +35 -6
  299. package/dist/game/spell-cmd.js.map +1 -1
  300. package/dist/game/spoil.d.ts.map +1 -1
  301. package/dist/game/spoil.js +90 -41
  302. package/dist/game/spoil.js.map +1 -1
  303. package/dist/game/steal.d.ts +3 -3
  304. package/dist/game/steal.d.ts.map +1 -1
  305. package/dist/game/steal.js +9 -4
  306. package/dist/game/steal.js.map +1 -1
  307. package/dist/game/take-hit-hooks.d.ts.map +1 -1
  308. package/dist/game/take-hit-hooks.js +4 -12
  309. package/dist/game/take-hit-hooks.js.map +1 -1
  310. package/dist/game/target-loop.d.ts +23 -12
  311. package/dist/game/target-loop.d.ts.map +1 -1
  312. package/dist/game/target-loop.js +55 -20
  313. package/dist/game/target-loop.js.map +1 -1
  314. package/dist/game/target.d.ts +4 -4
  315. package/dist/game/target.d.ts.map +1 -1
  316. package/dist/game/target.js +19 -8
  317. package/dist/game/target.js.map +1 -1
  318. package/dist/game/ui-entry-registry.d.ts +124 -0
  319. package/dist/game/ui-entry-registry.d.ts.map +1 -0
  320. package/dist/game/ui-entry-registry.js +102 -0
  321. package/dist/game/ui-entry-registry.js.map +1 -0
  322. package/dist/game/ui-entry.d.ts +153 -24
  323. package/dist/game/ui-entry.d.ts.map +1 -1
  324. package/dist/game/ui-entry.js +656 -333
  325. package/dist/game/ui-entry.js.map +1 -1
  326. package/dist/game/wizard.d.ts +47 -25
  327. package/dist/game/wizard.d.ts.map +1 -1
  328. package/dist/game/wizard.js +123 -37
  329. package/dist/game/wizard.js.map +1 -1
  330. package/dist/game/world.d.ts.map +1 -1
  331. package/dist/game/world.js +6 -0
  332. package/dist/game/world.js.map +1 -1
  333. package/dist/gen/cave.d.ts +49 -8
  334. package/dist/gen/cave.d.ts.map +1 -1
  335. package/dist/gen/cave.js +200 -28
  336. package/dist/gen/cave.js.map +1 -1
  337. package/dist/gen/gen-monster.d.ts +4 -2
  338. package/dist/gen/gen-monster.d.ts.map +1 -1
  339. package/dist/gen/gen-monster.js +11 -8
  340. package/dist/gen/gen-monster.js.map +1 -1
  341. package/dist/gen/generate.d.ts +54 -9
  342. package/dist/gen/generate.d.ts.map +1 -1
  343. package/dist/gen/generate.js +55 -8
  344. package/dist/gen/generate.js.map +1 -1
  345. package/dist/gen/glyph-vectors.d.ts +109 -0
  346. package/dist/gen/glyph-vectors.d.ts.map +1 -0
  347. package/dist/gen/glyph-vectors.fixtures.d.ts +18 -0
  348. package/dist/gen/glyph-vectors.fixtures.d.ts.map +1 -0
  349. package/dist/gen/glyph-vectors.fixtures.js +94 -0
  350. package/dist/gen/glyph-vectors.fixtures.js.map +1 -0
  351. package/dist/gen/glyph-vectors.js +218 -0
  352. package/dist/gen/glyph-vectors.js.map +1 -0
  353. package/dist/gen/glyph.d.ts +104 -0
  354. package/dist/gen/glyph.d.ts.map +1 -0
  355. package/dist/gen/glyph.js +72 -0
  356. package/dist/gen/glyph.js.map +1 -0
  357. package/dist/gen/room.d.ts +26 -2
  358. package/dist/gen/room.d.ts.map +1 -1
  359. package/dist/gen/room.js +414 -264
  360. package/dist/gen/room.js.map +1 -1
  361. package/dist/gen/util.d.ts +12 -3
  362. package/dist/gen/util.d.ts.map +1 -1
  363. package/dist/gen/util.js +31 -9
  364. package/dist/gen/util.js.map +1 -1
  365. package/dist/i18n/i18n.d.ts +207 -0
  366. package/dist/i18n/i18n.d.ts.map +1 -0
  367. package/dist/i18n/i18n.js +405 -0
  368. package/dist/i18n/i18n.js.map +1 -0
  369. package/dist/i18n/text.d.ts +62 -0
  370. package/dist/i18n/text.d.ts.map +1 -0
  371. package/dist/i18n/text.js +120 -0
  372. package/dist/i18n/text.js.map +1 -0
  373. package/dist/index.d.ts +26 -0
  374. package/dist/index.d.ts.map +1 -1
  375. package/dist/index.js +42 -0
  376. package/dist/index.js.map +1 -1
  377. package/dist/mod/extension.d.ts +135 -0
  378. package/dist/mod/extension.d.ts.map +1 -0
  379. package/dist/mod/extension.js +95 -0
  380. package/dist/mod/extension.js.map +1 -0
  381. package/dist/mod/ids.d.ts +22 -0
  382. package/dist/mod/ids.d.ts.map +1 -1
  383. package/dist/mod/ids.js +196 -22
  384. package/dist/mod/ids.js.map +1 -1
  385. package/dist/mod/message-declarations.d.ts +132 -0
  386. package/dist/mod/message-declarations.d.ts.map +1 -0
  387. package/dist/mod/message-declarations.js +223 -0
  388. package/dist/mod/message-declarations.js.map +1 -0
  389. package/dist/mod/record-keys.d.ts +44 -0
  390. package/dist/mod/record-keys.d.ts.map +1 -0
  391. package/dist/mod/record-keys.js +101 -0
  392. package/dist/mod/record-keys.js.map +1 -0
  393. package/dist/mod/registry-host.d.ts +639 -1
  394. package/dist/mod/registry-host.d.ts.map +1 -1
  395. package/dist/mod/registry-host.js +408 -1
  396. package/dist/mod/registry-host.js.map +1 -1
  397. package/dist/mod/save-blocks.d.ts +8 -3
  398. package/dist/mod/save-blocks.d.ts.map +1 -1
  399. package/dist/mod/save-blocks.js +153 -14
  400. package/dist/mod/save-blocks.js.map +1 -1
  401. package/dist/mon/bind.d.ts +5 -0
  402. package/dist/mon/bind.d.ts.map +1 -1
  403. package/dist/mon/bind.js +18 -13
  404. package/dist/mon/bind.js.map +1 -1
  405. package/dist/mon/knowledge-groups.d.ts +0 -6
  406. package/dist/mon/knowledge-groups.d.ts.map +1 -1
  407. package/dist/mon/knowledge-groups.js +13 -9
  408. package/dist/mon/knowledge-groups.js.map +1 -1
  409. package/dist/mon/lore-describe.d.ts +46 -10
  410. package/dist/mon/lore-describe.d.ts.map +1 -1
  411. package/dist/mon/lore-describe.js +77 -24
  412. package/dist/mon/lore-describe.js.map +1 -1
  413. package/dist/mon/lore-file.d.ts +126 -0
  414. package/dist/mon/lore-file.d.ts.map +1 -0
  415. package/dist/mon/lore-file.js +301 -0
  416. package/dist/mon/lore-file.js.map +1 -0
  417. package/dist/mon/lore.d.ts +15 -3
  418. package/dist/mon/lore.d.ts.map +1 -1
  419. package/dist/mon/lore.js +19 -6
  420. package/dist/mon/lore.js.map +1 -1
  421. package/dist/mon/make.d.ts +4 -2
  422. package/dist/mon/make.d.ts.map +1 -1
  423. package/dist/mon/make.js +4 -2
  424. package/dist/mon/make.js.map +1 -1
  425. package/dist/mon/monster.d.ts +1 -1
  426. package/dist/mon/monster.js +1 -1
  427. package/dist/mon/predicate.d.ts +14 -9
  428. package/dist/mon/predicate.d.ts.map +1 -1
  429. package/dist/mon/predicate.js +17 -11
  430. package/dist/mon/predicate.js.map +1 -1
  431. package/dist/mon/project-mon.d.ts +64 -7
  432. package/dist/mon/project-mon.d.ts.map +1 -1
  433. package/dist/mon/project-mon.js +61 -9
  434. package/dist/mon/project-mon.js.map +1 -1
  435. package/dist/mon/spell-declarations.d.ts +44 -0
  436. package/dist/mon/spell-declarations.d.ts.map +1 -0
  437. package/dist/mon/spell-declarations.js +57 -0
  438. package/dist/mon/spell-declarations.js.map +1 -0
  439. package/dist/mon/spell-registry.d.ts +136 -0
  440. package/dist/mon/spell-registry.d.ts.map +1 -0
  441. package/dist/mon/spell-registry.js +178 -0
  442. package/dist/mon/spell-registry.js.map +1 -0
  443. package/dist/mon/spell.js +2 -2
  444. package/dist/mon/spell.js.map +1 -1
  445. package/dist/mon/steal.d.ts +31 -4
  446. package/dist/mon/steal.d.ts.map +1 -1
  447. package/dist/mon/steal.js +20 -7
  448. package/dist/mon/steal.js.map +1 -1
  449. package/dist/mon/take-hit.d.ts +8 -3
  450. package/dist/mon/take-hit.d.ts.map +1 -1
  451. package/dist/mon/take-hit.js +8 -3
  452. package/dist/mon/take-hit.js.map +1 -1
  453. package/dist/mon/timed.d.ts +15 -9
  454. package/dist/mon/timed.d.ts.map +1 -1
  455. package/dist/mon/timed.js +13 -8
  456. package/dist/mon/timed.js.map +1 -1
  457. package/dist/mon/types.d.ts +23 -5
  458. package/dist/mon/types.d.ts.map +1 -1
  459. package/dist/mon/types.js +18 -1
  460. package/dist/mon/types.js.map +1 -1
  461. package/dist/msg.d.ts +66 -1
  462. package/dist/msg.d.ts.map +1 -1
  463. package/dist/msg.js +69 -1
  464. package/dist/msg.js.map +1 -1
  465. package/dist/obj/artifact-fake.d.ts +47 -15
  466. package/dist/obj/artifact-fake.d.ts.map +1 -1
  467. package/dist/obj/artifact-fake.js +47 -18
  468. package/dist/obj/artifact-fake.js.map +1 -1
  469. package/dist/obj/artifact-known.d.ts +4 -4
  470. package/dist/obj/artifact-known.js +3 -3
  471. package/dist/obj/bind.d.ts +25 -2
  472. package/dist/obj/bind.d.ts.map +1 -1
  473. package/dist/obj/bind.js +54 -13
  474. package/dist/obj/bind.js.map +1 -1
  475. package/dist/obj/desc-vectors.d.ts +68 -0
  476. package/dist/obj/desc-vectors.d.ts.map +1 -0
  477. package/dist/obj/desc-vectors.fixtures.d.ts +12 -0
  478. package/dist/obj/desc-vectors.fixtures.d.ts.map +1 -0
  479. package/dist/obj/desc-vectors.fixtures.js +95 -0
  480. package/dist/obj/desc-vectors.fixtures.js.map +1 -0
  481. package/dist/obj/desc-vectors.js +86 -0
  482. package/dist/obj/desc-vectors.js.map +1 -0
  483. package/dist/obj/desc.d.ts +17 -2
  484. package/dist/obj/desc.d.ts.map +1 -1
  485. package/dist/obj/desc.js +129 -54
  486. package/dist/obj/desc.js.map +1 -1
  487. package/dist/obj/effects-info.d.ts.map +1 -1
  488. package/dist/obj/effects-info.js +87 -58
  489. package/dist/obj/effects-info.js.map +1 -1
  490. package/dist/obj/fake-object.d.ts +70 -0
  491. package/dist/obj/fake-object.d.ts.map +1 -0
  492. package/dist/obj/fake-object.js +104 -0
  493. package/dist/obj/fake-object.js.map +1 -0
  494. package/dist/obj/ignore.d.ts +55 -12
  495. package/dist/obj/ignore.d.ts.map +1 -1
  496. package/dist/obj/ignore.js +68 -31
  497. package/dist/obj/ignore.js.map +1 -1
  498. package/dist/obj/knowledge.d.ts +48 -5
  499. package/dist/obj/knowledge.d.ts.map +1 -1
  500. package/dist/obj/knowledge.js +171 -153
  501. package/dist/obj/knowledge.js.map +1 -1
  502. package/dist/obj/known-object.d.ts +68 -8
  503. package/dist/obj/known-object.d.ts.map +1 -1
  504. package/dist/obj/known-object.js +90 -10
  505. package/dist/obj/known-object.js.map +1 -1
  506. package/dist/obj/make.d.ts +16 -5
  507. package/dist/obj/make.d.ts.map +1 -1
  508. package/dist/obj/make.js +52 -30
  509. package/dist/obj/make.js.map +1 -1
  510. package/dist/obj/object-info.d.ts +11 -1
  511. package/dist/obj/object-info.d.ts.map +1 -1
  512. package/dist/obj/object-info.js +94 -8
  513. package/dist/obj/object-info.js.map +1 -1
  514. package/dist/obj/object.d.ts +50 -5
  515. package/dist/obj/object.d.ts.map +1 -1
  516. package/dist/obj/object.js +373 -149
  517. package/dist/obj/object.js.map +1 -1
  518. package/dist/obj/power.d.ts +23 -4
  519. package/dist/obj/power.d.ts.map +1 -1
  520. package/dist/obj/power.js +232 -66
  521. package/dist/obj/power.js.map +1 -1
  522. package/dist/obj/randart-build.d.ts +27 -22
  523. package/dist/obj/randart-build.d.ts.map +1 -1
  524. package/dist/obj/randart-build.js +457 -403
  525. package/dist/obj/randart-build.js.map +1 -1
  526. package/dist/obj/randart-data.d.ts +62 -24
  527. package/dist/obj/randart-data.d.ts.map +1 -1
  528. package/dist/obj/randart-data.js +348 -221
  529. package/dist/obj/randart-data.js.map +1 -1
  530. package/dist/obj/randart-file.d.ts +21 -0
  531. package/dist/obj/randart-file.d.ts.map +1 -0
  532. package/dist/obj/randart-file.js +119 -0
  533. package/dist/obj/randart-file.js.map +1 -0
  534. package/dist/obj/randart-log.d.ts +63 -0
  535. package/dist/obj/randart-log.d.ts.map +1 -0
  536. package/dist/obj/randart-log.js +72 -0
  537. package/dist/obj/randart-log.js.map +1 -0
  538. package/dist/obj/randart-registry.d.ts +178 -0
  539. package/dist/obj/randart-registry.d.ts.map +1 -0
  540. package/dist/obj/randart-registry.js +140 -0
  541. package/dist/obj/randart-registry.js.map +1 -0
  542. package/dist/obj/randart-vectors.d.ts +97 -0
  543. package/dist/obj/randart-vectors.d.ts.map +1 -0
  544. package/dist/obj/randart-vectors.fixtures.d.ts +18 -0
  545. package/dist/obj/randart-vectors.fixtures.d.ts.map +1 -0
  546. package/dist/obj/randart-vectors.fixtures.js +50 -0
  547. package/dist/obj/randart-vectors.fixtures.js.map +1 -0
  548. package/dist/obj/randart-vectors.js +311 -0
  549. package/dist/obj/randart-vectors.js.map +1 -0
  550. package/dist/obj/randart.d.ts +53 -15
  551. package/dist/obj/randart.d.ts.map +1 -1
  552. package/dist/obj/randart.js +166 -44
  553. package/dist/obj/randart.js.map +1 -1
  554. package/dist/obj/rune-registry.d.ts +180 -0
  555. package/dist/obj/rune-registry.d.ts.map +1 -0
  556. package/dist/obj/rune-registry.js +161 -0
  557. package/dist/obj/rune-registry.js.map +1 -0
  558. package/dist/obj/rune-vectors.d.ts +99 -0
  559. package/dist/obj/rune-vectors.d.ts.map +1 -0
  560. package/dist/obj/rune-vectors.fixtures.d.ts +44 -0
  561. package/dist/obj/rune-vectors.fixtures.d.ts.map +1 -0
  562. package/dist/obj/rune-vectors.fixtures.js +125 -0
  563. package/dist/obj/rune-vectors.fixtures.js.map +1 -0
  564. package/dist/obj/rune-vectors.js +159 -0
  565. package/dist/obj/rune-vectors.js.map +1 -0
  566. package/dist/obj/tval-registry.d.ts +174 -0
  567. package/dist/obj/tval-registry.d.ts.map +1 -0
  568. package/dist/obj/tval-registry.js +151 -0
  569. package/dist/obj/tval-registry.js.map +1 -0
  570. package/dist/obj/tval-vectors.d.ts +85 -0
  571. package/dist/obj/tval-vectors.d.ts.map +1 -0
  572. package/dist/obj/tval-vectors.fixtures.d.ts +24 -0
  573. package/dist/obj/tval-vectors.fixtures.d.ts.map +1 -0
  574. package/dist/obj/tval-vectors.fixtures.js +41 -0
  575. package/dist/obj/tval-vectors.fixtures.js.map +1 -0
  576. package/dist/obj/tval-vectors.js +76 -0
  577. package/dist/obj/tval-vectors.js.map +1 -0
  578. package/dist/obj/types.d.ts +43 -7
  579. package/dist/obj/types.d.ts.map +1 -1
  580. package/dist/obj/types.js.map +1 -1
  581. package/dist/obj/value.d.ts.map +1 -1
  582. package/dist/obj/value.js +23 -20
  583. package/dist/obj/value.js.map +1 -1
  584. package/dist/parser.d.ts +96 -0
  585. package/dist/parser.d.ts.map +1 -0
  586. package/dist/parser.js +116 -0
  587. package/dist/parser.js.map +1 -0
  588. package/dist/player/bind.d.ts.map +1 -1
  589. package/dist/player/bind.js +3 -2
  590. package/dist/player/bind.js.map +1 -1
  591. package/dist/player/birth.d.ts +3 -2
  592. package/dist/player/birth.d.ts.map +1 -1
  593. package/dist/player/birth.js +4 -3
  594. package/dist/player/birth.js.map +1 -1
  595. package/dist/player/calcs.d.ts +58 -23
  596. package/dist/player/calcs.d.ts.map +1 -1
  597. package/dist/player/calcs.js +93 -36
  598. package/dist/player/calcs.js.map +1 -1
  599. package/dist/player/death.d.ts +50 -0
  600. package/dist/player/death.d.ts.map +1 -0
  601. package/dist/player/death.js +46 -0
  602. package/dist/player/death.js.map +1 -0
  603. package/dist/player/options-file.d.ts +155 -0
  604. package/dist/player/options-file.d.ts.map +1 -0
  605. package/dist/player/options-file.js +295 -0
  606. package/dist/player/options-file.js.map +1 -0
  607. package/dist/player/options.d.ts +3 -2
  608. package/dist/player/options.d.ts.map +1 -1
  609. package/dist/player/options.js +3 -2
  610. package/dist/player/options.js.map +1 -1
  611. package/dist/player/player.d.ts +50 -3
  612. package/dist/player/player.d.ts.map +1 -1
  613. package/dist/player/player.js +10 -1
  614. package/dist/player/player.js.map +1 -1
  615. package/dist/player/shape-lore.d.ts +12 -8
  616. package/dist/player/shape-lore.d.ts.map +1 -1
  617. package/dist/player/shape-lore.js +31 -15
  618. package/dist/player/shape-lore.js.map +1 -1
  619. package/dist/player/spell.d.ts.map +1 -1
  620. package/dist/player/spell.js +24 -2
  621. package/dist/player/spell.js.map +1 -1
  622. package/dist/player/timed.d.ts +5 -3
  623. package/dist/player/timed.d.ts.map +1 -1
  624. package/dist/player/timed.js +11 -2
  625. package/dist/player/timed.js.map +1 -1
  626. package/dist/player/types.d.ts +29 -4
  627. package/dist/player/types.d.ts.map +1 -1
  628. package/dist/player/types.js +24 -1
  629. package/dist/player/types.js.map +1 -1
  630. package/dist/score/display.d.ts.map +1 -1
  631. package/dist/score/display.js +39 -18
  632. package/dist/score/display.js.map +1 -1
  633. package/dist/score/score.d.ts +7 -7
  634. package/dist/score/score.js +3 -3
  635. package/dist/score/types.d.ts +51 -0
  636. package/dist/score/types.d.ts.map +1 -1
  637. package/dist/score/types.js.map +1 -1
  638. package/dist/session/boot.d.ts +28 -2
  639. package/dist/session/boot.d.ts.map +1 -1
  640. package/dist/session/boot.js +43 -2
  641. package/dist/session/boot.js.map +1 -1
  642. package/dist/session/game.d.ts +15 -0
  643. package/dist/session/game.d.ts.map +1 -1
  644. package/dist/session/game.js +727 -144
  645. package/dist/session/game.js.map +1 -1
  646. package/dist/session/save-migrate.d.ts +3 -3
  647. package/dist/session/save-migrate.d.ts.map +1 -1
  648. package/dist/session/save-migrate.js +505 -22
  649. package/dist/session/save-migrate.js.map +1 -1
  650. package/dist/session/save.d.ts +513 -36
  651. package/dist/session/save.d.ts.map +1 -1
  652. package/dist/session/save.js +864 -65
  653. package/dist/session/save.js.map +1 -1
  654. package/dist/sound/engine.d.ts +17 -0
  655. package/dist/sound/engine.d.ts.map +1 -1
  656. package/dist/sound/engine.js +55 -6
  657. package/dist/sound/engine.js.map +1 -1
  658. package/dist/sound/index.d.ts +2 -0
  659. package/dist/sound/index.d.ts.map +1 -1
  660. package/dist/sound/index.js +2 -0
  661. package/dist/sound/index.js.map +1 -1
  662. package/dist/sound/message-types.d.ts +89 -0
  663. package/dist/sound/message-types.d.ts.map +1 -0
  664. package/dist/sound/message-types.js +126 -0
  665. package/dist/sound/message-types.js.map +1 -0
  666. package/dist/sound/sound-registry.d.ts +93 -0
  667. package/dist/sound/sound-registry.d.ts.map +1 -0
  668. package/dist/sound/sound-registry.js +117 -0
  669. package/dist/sound/sound-registry.js.map +1 -0
  670. package/dist/store/bind.d.ts +1 -1
  671. package/dist/store/bind.d.ts.map +1 -1
  672. package/dist/store/bind.js +4 -3
  673. package/dist/store/bind.js.map +1 -1
  674. package/dist/store/mass-produce-vectors.d.ts +40 -0
  675. package/dist/store/mass-produce-vectors.d.ts.map +1 -0
  676. package/dist/store/mass-produce-vectors.fixtures.d.ts +13 -0
  677. package/dist/store/mass-produce-vectors.fixtures.d.ts.map +1 -0
  678. package/dist/store/mass-produce-vectors.fixtures.js +52 -0
  679. package/dist/store/mass-produce-vectors.fixtures.js.map +1 -0
  680. package/dist/store/mass-produce-vectors.js +44 -0
  681. package/dist/store/mass-produce-vectors.js.map +1 -0
  682. package/dist/store/store.d.ts +113 -15
  683. package/dist/store/store.d.ts.map +1 -1
  684. package/dist/store/store.js +213 -91
  685. package/dist/store/store.js.map +1 -1
  686. package/dist/store/transact.d.ts +37 -10
  687. package/dist/store/transact.d.ts.map +1 -1
  688. package/dist/store/transact.js +42 -23
  689. package/dist/store/transact.js.map +1 -1
  690. package/dist/store/types.d.ts +3 -2
  691. package/dist/store/types.d.ts.map +1 -1
  692. package/dist/store/types.js +1 -1
  693. package/dist/version.d.ts +1 -1
  694. package/dist/version.js +1 -1
  695. package/dist/visuals/glyph-table.d.ts +2 -2
  696. package/dist/visuals/glyph-table.js +2 -2
  697. package/dist/visuals/hallucination.d.ts +140 -0
  698. package/dist/visuals/hallucination.d.ts.map +1 -0
  699. package/dist/visuals/hallucination.js +122 -0
  700. package/dist/visuals/hallucination.js.map +1 -0
  701. package/dist/visuals/index.d.ts +2 -0
  702. package/dist/visuals/index.d.ts.map +1 -1
  703. package/dist/visuals/index.js +2 -0
  704. package/dist/visuals/index.js.map +1 -1
  705. package/dist/visuals/map-text.d.ts +13 -4
  706. package/dist/visuals/map-text.d.ts.map +1 -1
  707. package/dist/visuals/map-text.js +6 -5
  708. package/dist/visuals/map-text.js.map +1 -1
  709. package/dist/visuals/object-glyph.d.ts +61 -0
  710. package/dist/visuals/object-glyph.d.ts.map +1 -0
  711. package/dist/visuals/object-glyph.js +57 -0
  712. package/dist/visuals/object-glyph.js.map +1 -0
  713. package/dist/visuals/prefs.d.ts +174 -27
  714. package/dist/visuals/prefs.d.ts.map +1 -1
  715. package/dist/visuals/prefs.js +223 -46
  716. package/dist/visuals/prefs.js.map +1 -1
  717. package/dist/visuals/tile-prefs.d.ts +26 -0
  718. package/dist/visuals/tile-prefs.d.ts.map +1 -1
  719. package/dist/visuals/tile-prefs.js +28 -0
  720. package/dist/visuals/tile-prefs.js.map +1 -1
  721. package/dist/world/feature.d.ts +2 -1
  722. package/dist/world/feature.d.ts.map +1 -1
  723. package/dist/world/feature.js +2 -0
  724. package/dist/world/feature.js.map +1 -1
  725. package/dist/world/project.d.ts +10 -2
  726. package/dist/world/project.d.ts.map +1 -1
  727. package/dist/world/project.js +18 -6
  728. package/dist/world/project.js.map +1 -1
  729. package/dist/world/projection.d.ts +37 -3
  730. package/dist/world/projection.d.ts.map +1 -1
  731. package/dist/world/projection.js +69 -7
  732. package/dist/world/projection.js.map +1 -1
  733. package/dist/world/trap.d.ts +3 -2
  734. package/dist/world/trap.d.ts.map +1 -1
  735. package/dist/world/trap.js +2 -1
  736. package/dist/world/trap.js.map +1 -1
  737. package/dist/world/view.d.ts +1 -1
  738. package/dist/world/view.d.ts.map +1 -1
  739. package/dist/world/view.js +11 -3
  740. package/dist/world/view.js.map +1 -1
  741. package/package.json +1 -1
  742. package/src/agent/perceive.ts +2 -3
  743. package/src/cmd.ts +67 -3
  744. package/src/combat/blow-vectors.fixtures.ts +99 -0
  745. package/src/combat/blow-vectors.json +482 -0
  746. package/src/combat/blow-vectors.ts +280 -0
  747. package/src/combat/brand-slay.ts +42 -11
  748. package/src/combat/index.ts +1 -1
  749. package/src/combat/melee.ts +37 -19
  750. package/src/combat/mon-melee.ts +611 -364
  751. package/src/combat/ranged.ts +43 -26
  752. package/src/constants.ts +15 -0
  753. package/src/datafile.ts +148 -0
  754. package/src/effects/effect-info-registry.ts +313 -0
  755. package/src/effects/effect-info-vectors.fixtures.ts +61 -0
  756. package/src/effects/effect-info-vectors.json +11532 -0
  757. package/src/effects/effect-info-vectors.ts +376 -0
  758. package/src/effects/effect-info.ts +313 -167
  759. package/src/effects/effect.ts +96 -62
  760. package/src/effects/handlers.ts +5 -2
  761. package/src/effects/interpreter.ts +14 -0
  762. package/src/game/cave-cmd.ts +54 -11
  763. package/src/game/cave-square.ts +80 -0
  764. package/src/game/char-sheet.ts +59 -16
  765. package/src/game/chest.ts +25 -8
  766. package/src/game/context.ts +324 -27
  767. package/src/game/describe.ts +34 -4
  768. package/src/game/display.ts +359 -41
  769. package/src/game/dump-level.ts +4 -3
  770. package/src/game/effect-attack.ts +42 -30
  771. package/src/game/effect-detect.ts +45 -8
  772. package/src/game/effect-env.ts +8 -0
  773. package/src/game/effect-general.ts +115 -51
  774. package/src/game/effect-item.ts +168 -87
  775. package/src/game/effect-melee.ts +51 -18
  776. package/src/game/effect-monster.ts +55 -9
  777. package/src/game/effect-teleport.ts +183 -39
  778. package/src/game/effect-terrain.ts +39 -23
  779. package/src/game/equip-cmp.ts +513 -480
  780. package/src/game/floor.ts +74 -4
  781. package/src/game/gear.ts +228 -25
  782. package/src/game/harness.ts +12 -1
  783. package/src/game/ignore-cmd.ts +96 -8
  784. package/src/game/inscription-confirm.ts +15 -7
  785. package/src/game/known.ts +475 -85
  786. package/src/game/loop.ts +695 -670
  787. package/src/game/lore-color.ts +13 -1
  788. package/src/game/mon-cast.ts +39 -12
  789. package/src/game/mon-cmd.ts +98 -36
  790. package/src/game/mon-death.ts +14 -12
  791. package/src/game/mon-group.ts +9 -5
  792. package/src/game/mon-message.ts +362 -65
  793. package/src/game/mon-place.ts +15 -3
  794. package/src/game/mon-ranged.ts +14 -5
  795. package/src/game/mon-side.ts +20 -18
  796. package/src/game/monster-turn.ts +128 -91
  797. package/src/game/notice.ts +85 -0
  798. package/src/game/obj-cmd.ts +145 -39
  799. package/src/game/obj-list.ts +44 -26
  800. package/src/game/object-inspect.ts +13 -0
  801. package/src/game/pickup.ts +29 -5
  802. package/src/game/player-side-vectors.fixtures.ts +215 -0
  803. package/src/game/player-side-vectors.json +6914 -0
  804. package/src/game/player-side-vectors.ts +420 -0
  805. package/src/game/player-side.ts +622 -340
  806. package/src/game/player-turn.ts +228 -32
  807. package/src/game/poly.ts +107 -0
  808. package/src/game/project-cast.ts +72 -6
  809. package/src/game/project-feat-vectors.fixtures.ts +106 -0
  810. package/src/game/project-feat-vectors.json +6554 -0
  811. package/src/game/project-feat-vectors.ts +323 -0
  812. package/src/game/project-feat.ts +417 -248
  813. package/src/game/project-monster.ts +93 -33
  814. package/src/game/project-obj-vectors.json +1 -0
  815. package/src/game/project-obj.ts +115 -47
  816. package/src/game/project-player.ts +8 -0
  817. package/src/game/projection-handlers.ts +121 -0
  818. package/src/game/quest.ts +48 -0
  819. package/src/game/ranged-cmd.ts +50 -14
  820. package/src/game/repeat.ts +147 -0
  821. package/src/game/shape-inspect.ts +166 -0
  822. package/src/game/spell-cmd.ts +39 -6
  823. package/src/game/spoil.ts +93 -40
  824. package/src/game/steal.ts +9 -4
  825. package/src/game/take-hit-hooks.ts +4 -11
  826. package/src/game/target-loop.ts +57 -18
  827. package/src/game/target.ts +18 -7
  828. package/src/game/ui-entry-registry.ts +159 -0
  829. package/src/game/ui-entry.ts +2531 -2075
  830. package/src/game/wizard.ts +128 -37
  831. package/src/game/world.ts +6 -0
  832. package/src/gen/cave.ts +3057 -2858
  833. package/src/gen/gen-monster.ts +11 -8
  834. package/src/gen/generate.ts +576 -523
  835. package/src/gen/glyph-vectors.fixtures.ts +122 -0
  836. package/src/gen/glyph-vectors.json +5996 -0
  837. package/src/gen/glyph-vectors.ts +280 -0
  838. package/src/gen/glyph.ts +132 -0
  839. package/src/gen/room.ts +446 -265
  840. package/src/gen/util.ts +33 -10
  841. package/src/i18n/i18n.ts +492 -0
  842. package/src/i18n/text.ts +117 -0
  843. package/src/index.ts +57 -0
  844. package/src/mod/extension.ts +171 -0
  845. package/src/mod/hooks.ts +521 -521
  846. package/src/mod/ids.ts +239 -21
  847. package/src/mod/message-declarations.ts +293 -0
  848. package/src/mod/record-keys.ts +103 -0
  849. package/src/mod/registry-host.ts +1095 -1
  850. package/src/mod/save-blocks.ts +162 -15
  851. package/src/mon/bind.ts +28 -18
  852. package/src/mon/knowledge-groups.ts +13 -13
  853. package/src/mon/lore-describe.ts +96 -28
  854. package/src/mon/lore-file.ts +375 -0
  855. package/src/mon/lore.ts +19 -6
  856. package/src/mon/make.ts +4 -2
  857. package/src/mon/monster.ts +1 -1
  858. package/src/mon/predicate.ts +17 -11
  859. package/src/mon/project-mon.ts +88 -9
  860. package/src/mon/spell-declarations.ts +80 -0
  861. package/src/mon/spell-registry.ts +221 -0
  862. package/src/mon/spell.ts +2 -2
  863. package/src/mon/steal.ts +39 -7
  864. package/src/mon/take-hit.ts +8 -3
  865. package/src/mon/timed.ts +15 -9
  866. package/src/mon/types.ts +38 -5
  867. package/src/msg.ts +83 -1
  868. package/src/obj/artifact-fake.ts +48 -18
  869. package/src/obj/artifact-known.ts +4 -4
  870. package/src/obj/bind.ts +56 -13
  871. package/src/obj/desc-vectors.fixtures.ts +119 -0
  872. package/src/obj/desc-vectors.json +2360 -0
  873. package/src/obj/desc-vectors.ts +128 -0
  874. package/src/obj/desc.ts +159 -55
  875. package/src/obj/effects-info.ts +90 -59
  876. package/src/obj/fake-object.ts +135 -0
  877. package/src/obj/ignore.ts +95 -28
  878. package/src/obj/knowledge.ts +293 -141
  879. package/src/obj/known-object.ts +126 -11
  880. package/src/obj/make.ts +56 -31
  881. package/src/obj/object-info.ts +104 -7
  882. package/src/obj/object.ts +403 -153
  883. package/src/obj/power.ts +298 -60
  884. package/src/obj/randart-build.ts +601 -459
  885. package/src/obj/randart-data.ts +427 -252
  886. package/src/obj/randart-file.ts +130 -0
  887. package/src/obj/randart-log.ts +78 -0
  888. package/src/obj/randart-registry.ts +247 -0
  889. package/src/obj/randart-vectors.fixtures.ts +61 -0
  890. package/src/obj/randart-vectors.json +836 -0
  891. package/src/obj/randart-vectors.ts +369 -0
  892. package/src/obj/randart.ts +214 -44
  893. package/src/obj/rune-registry.ts +270 -0
  894. package/src/obj/rune-vectors.fixtures.ts +164 -0
  895. package/src/obj/rune-vectors.json +121 -0
  896. package/src/obj/rune-vectors.ts +229 -0
  897. package/src/obj/tval-kind-vectors.json +391 -0
  898. package/src/obj/tval-registry.ts +243 -0
  899. package/src/obj/tval-vectors.fixtures.ts +50 -0
  900. package/src/obj/tval-vectors.json +38 -0
  901. package/src/obj/tval-vectors.ts +126 -0
  902. package/src/obj/types.ts +40 -7
  903. package/src/obj/value.ts +26 -20
  904. package/src/parser.ts +125 -0
  905. package/src/player/bind.ts +5 -2
  906. package/src/player/birth.ts +4 -3
  907. package/src/player/calcs.ts +123 -42
  908. package/src/player/death.ts +78 -0
  909. package/src/player/options-file.ts +351 -0
  910. package/src/player/options.ts +3 -2
  911. package/src/player/player.ts +60 -4
  912. package/src/player/shape-lore.ts +40 -18
  913. package/src/player/spell.ts +31 -2
  914. package/src/player/timed.ts +14 -4
  915. package/src/player/types.ts +30 -4
  916. package/src/score/display.ts +38 -17
  917. package/src/score/score.ts +8 -8
  918. package/src/score/types.ts +52 -0
  919. package/src/session/boot.ts +101 -1
  920. package/src/session/game.ts +835 -167
  921. package/src/session/save-migrate.ts +598 -23
  922. package/src/session/save.ts +1177 -92
  923. package/src/sound/engine.ts +59 -4
  924. package/src/sound/index.ts +2 -0
  925. package/src/sound/message-types.ts +164 -0
  926. package/src/sound/sound-registry.ts +149 -0
  927. package/src/store/bind.ts +4 -3
  928. package/src/store/mass-produce-vectors.fixtures.ts +64 -0
  929. package/src/store/mass-produce-vectors.json +1169 -0
  930. package/src/store/mass-produce-vectors.ts +67 -0
  931. package/src/store/store.ts +282 -77
  932. package/src/store/transact.ts +67 -26
  933. package/src/store/types.ts +3 -2
  934. package/src/version.ts +1 -1
  935. package/src/visuals/glyph-table.ts +2 -2
  936. package/src/visuals/hallucination.ts +200 -0
  937. package/src/visuals/index.ts +2 -0
  938. package/src/visuals/map-text.ts +6 -5
  939. package/src/visuals/object-glyph.ts +81 -0
  940. package/src/visuals/prefs.ts +1236 -981
  941. package/src/visuals/tile-prefs.ts +215 -183
  942. package/src/world/feature.ts +4 -1
  943. package/src/world/project.ts +19 -4
  944. package/src/world/projection.ts +79 -8
  945. package/src/world/trap.ts +26 -22
  946. package/src/world/view.ts +11 -1
@@ -1 +1 @@
1
- {"version":3,"file":"project-feat.js","sourceRoot":"","sources":["../../src/game/project-feat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACnB,MAAM,WAAW,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAWtD,kEAAkE;AAClE,SAAS,QAAQ,CAAC,KAAgB,EAAE,IAAS;IAC3C,OAAO,CACL,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;QAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAgB,EAAE,IAAS;IACpD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B;;mFAE+E;IAC/E,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B;;qFAEiF;IACjF,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9C,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAgB,EAAE,IAAS,EAAE,OAAgB;IAChE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAgB,EAAE,IAAS;IAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,OAAO;IAC7C,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAgB,EAChB,EAAU,EACV,IAAS,EACT,GAAW,EACX,GAAW,EACX,MAAsB,EAAE;IAExB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,UAAU,CAAC;QACrB,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,wBAAwB;YACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;gBACrE,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;;0EAE8D;YAC9D,MAAM,MAAM,GACV,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACvD,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAC;gBACf,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,sBAAsB;YACtB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM;YACnD,sBAAsB;YACtB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM;YAE1B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC;oBACxC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,uEAAuE;gBACvE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,iDAAiD;gBACjD,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjD,MAAM,KAAK,GAAG,UAAU,CACtB,KAAK,CAAC,GAAG,EACT,GAAG,CAAC,QAAQ,EACZ,CAAC,CAAC,KAAK,EACP,KAAK,EACL,KAAK,EACL,KAAK,EACL,CAAC,EACD,CAAC,CAAC,KAAK,CACR,CAAC;oBACF,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;wBAC7B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;wBAC5B,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/B,IAAI,IAAI,EAAE,CAAC;4BACT,GAAG,CAAC,GAAG,EAAE,CAAC,2CAA2C,CAAC,CAAC;4BACvD,OAAO,GAAG,IAAI,CAAC;wBACjB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACpD,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,CAAC;oBACtC,GAAG,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC;oBACvC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,sBAAsB;gBACtB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAChE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC5B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC5B,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,4DAA4D;YAC5D,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;gBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACtF,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC1B,GAAG,CAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC,CAAC;oBAC/C,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD;;wFAEwE;gBACxE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,4DAA4D;gBAC5D,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;oBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtF,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,0BAA0B;YAC1B,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBACpC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;YAC5C,CAAC;YACD;;;sEAG0D;YAC1D,IAAI,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC1B,GAAG,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC;oBACjC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E;;;;iEAIiD;gBACjD,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC1B,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,0DAA0D;YAC1D,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,MAAM;YACrE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,MAAM;YAC5B;sEAC0D;YAC1D,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,yDAAyD;YACzD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,MAAM;YACvC,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,MAAM;YACrC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACvC,4EAA4E;gBAC5E,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClD,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,wBAAwB;YACxB,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,GAAG;oBAAE,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;YACD,4CAA4C;YAC5C,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5D,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;oBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtF,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACd,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,kDAAkD;YAClD,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D;mEACmD;gBACnD,MAAM,QAAQ,GACZ,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACrE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;oBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,MAAM;QACR,CAAC;QAED;;yEAEiE;QACjE,KAAK,IAAI,CAAC,WAAW,CAAC;QACtB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,WAAW,CAAC;QACtB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,WAAW,CAAC;QACtB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,WAAW,CAAC;QACtB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,WAAW,CAAC;QACtB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,YAAY,CAAC;QACvB,KAAK,IAAI,CAAC,UAAU,CAAC;QACrB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,QAAQ,CAAC;QACnB,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,SAAS;YACjB,MAAM;QAER;gCACwB;QACxB,OAAO,CAAC,CAAC,CAAC;YACR,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"project-feat.js","sourceRoot":"","sources":["../../src/game/project-feat.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@
24
24
  */
25
25
  import type { Loc } from "../loc.js";
26
26
  import type { Monster } from "../mon/monster.js";
27
+ import type { MonsterRace } from "../mon/types.js";
28
+ import type { MonHandler } from "../mon/project-mon.js";
27
29
  import type { MonTimedMessageSink } from "../mon/timed.js";
28
30
  import type { MonsterHitResult } from "../world/project.js";
29
31
  import type { ProjectionInfo } from "../world/projection.js";
@@ -33,10 +35,12 @@ export interface ProjectMonsterHooks {
33
35
  /**
34
36
  * add_monster_message(mon, msg_code, delay): queue a message about the monster
35
37
  * (by MON_MSG index). `delay` is upstream's third argument (what_delay,
36
- * mon-msg.c:238), not a comma flag. When `damage` is given the caller must use
37
- * add_monster_message_show_damage (mon-msg.c:288) and append " (N)".
38
+ * mon-msg.c:238), not a comma flag, and is REQUIRED - upstream writes it out
39
+ * at every call site, and a default here would silently move a line from the
40
+ * delayed pass into the immediate one. When `damage` is given the caller must
41
+ * use add_monster_message_show_damage (mon-msg.c:288) and append " (N)".
38
42
  */
39
- message?: (mon: Monster, msg: number, delay?: boolean, damage?: number) => void;
43
+ message?: (mon: Monster, msg: number, delay: boolean, damage?: number) => void;
40
44
  /**
41
45
  * message_pain: a graded "it is hurt" message from the damage amount. With
42
46
  * `showDamage` the caller must use message_pain_show_damage (mon-msg.c:132).
@@ -65,18 +69,28 @@ export interface ProjectMonsterHooks {
65
69
  /** multiply_monster (PROJ_MON_CLONE). */
66
70
  multiplyMonster?: (mon: Monster) => boolean;
67
71
  /**
68
- * poly_race + place_new_monster: replace the monster with a polymorphed one.
69
- * Returns the new monster, or null if the polymorph failed / is unmodelled.
72
+ * poly_race (project-mon.c L45): the race to polymorph into. Returns the race
73
+ * it was GIVEN when nothing legal turned up, which is upstream's "no change"
74
+ * signal - so a hook that cannot pick returns its argument, not null.
75
+ *
76
+ * Split from the swap below because upstream queues MON_MSG_CHANGE between
77
+ * the two (L1223-1224), naming the old monster before deleting it. A single
78
+ * combined hook cannot reproduce that order.
70
79
  */
71
- polymorph?: (mon: Monster, power: number, directPoly: boolean) => Monster | null;
80
+ polyRace?: (race: MonsterRace) => MonsterRace;
81
+ /**
82
+ * delete_monster_idx + place_new_monster (project-mon.c L1225-1229): swap the
83
+ * monster for one of `race` on the same grid. Returns whatever now stands
84
+ * there - null when placement failed, since the old monster is gone by then
85
+ * either way and the caller must stop using it.
86
+ */
87
+ replaceMonster?: (mon: Monster, race: MonsterRace) => Monster | null;
72
88
  /** effect_simple EF_TELEPORT: teleport the monster up to `distance` grids. */
73
89
  teleport?: (mon: Monster, distance: number) => void;
74
90
  /** thrust_away(centre, target, gridsAway): knock a monster back (PROJ_FORCE). */
75
91
  thrustAway?: (centre: Loc, target: Loc, gridsAway: number) => void;
76
92
  /** update_mon + square_light_spot + PR_MONSTER: refresh a surviving monster. */
77
93
  onUpdate?: (mon: Monster) => void;
78
- /** clear the player's TMD_COVERTRACKS once player damage lands. */
79
- coverTracksBroken?: () => void;
80
94
  }
81
95
  /** The projection source, resolved for the driver. */
82
96
  export interface ProjectMonsterSource {
@@ -95,6 +109,15 @@ export interface ProjectMonsterCtx {
95
109
  projections: readonly ProjectionInfo[];
96
110
  origin: ProjectMonsterSource;
97
111
  hooks: ProjectMonsterHooks;
112
+ /**
113
+ * project_m's type-handler table, keyed by projection CODE.
114
+ *
115
+ * SUPPLIED BY wireGame, by identity, from `GameState.projectionHandlers` -
116
+ * exactly as `featHandlers`, `objHandlers` and `playerHandlers` are on the
117
+ * other three sides. Absent means core's `MONSTER_HANDLERS`, dispatched by
118
+ * PROJ index as it always was, which is what every parity vector replays.
119
+ */
120
+ monHandlers?: ReadonlyMap<string, MonHandler>;
98
121
  }
99
122
  /**
100
123
  * project_m for one grid: affect the monster (if any) in `grid` with projection
@@ -1 +1 @@
1
- {"version":3,"file":"project-monster.d.ts","sourceRoot":"","sources":["../../src/game/project-monster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-monster.d.ts","sourceRoot":"","sources":["../../src/game/project-monster.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,8 @@ import { newMonProjectContext, runMonsterHandler } from "../mon/project-mon.js";
28
28
  import { monsterWake, monTakeHit } from "../mon/take-hit.js";
29
29
  import { MON_TMD_FLG_NOTIFY, monIncTimed } from "../mon/timed.js";
30
30
  import { PROJECT } from "../world/project.js";
31
- import { arenaInterceptDeath, deleteMonster } from "./context.js";
31
+ import { projectionCodeFor } from "../world/projection.js";
32
+ import { arenaInterceptDeath, deleteMonster, gameTakeHitHooks } from "./context.js";
32
33
  const NO_HIT = { didHit: false, wasObvious: false };
33
34
  /**
34
35
  * project_m for one grid: affect the monster (if any) in `grid` with projection
@@ -68,6 +69,10 @@ export function projectMonster(pctx, dist, grid, dam, typ, flg) {
68
69
  r: dist,
69
70
  grid,
70
71
  charm: origin.charm,
72
+ /* player->upkeep->health_who == mon (project-mon.c:929). PROJ_MON_HEAL's
73
+ * redraw and its "looks healthier" message are an if/ELSE, so a tracked
74
+ * monster - the one you just hit, or your target - is healed silently. */
75
+ healthTracked: state.healthWho === mon,
71
76
  seen,
72
77
  obvious: (flg & PROJECT.AWARE) !== 0,
73
78
  hooks: {
@@ -94,8 +99,16 @@ export function projectMonster(pctx, dist, grid, dam, typ, flg) {
94
99
  const info = pctx.projections[typ];
95
100
  if (info && info.obvious && ctx.seen)
96
101
  ctx.obvious = true;
97
- /* Run the type handler (accumulates damage / timers / poly / teleport). */
98
- runMonsterHandler(ctx);
102
+ /* Run the type handler (accumulates damage / timers / poly / teleport).
103
+ * With a wired registry the dispatch is by projection CODE, so a mod's own
104
+ * projection - appended past the 56 compiled PROJ slots - reaches a handler
105
+ * at all, and a core code can be replaced or wrapped. */
106
+ runMonsterHandler(ctx, pctx.monHandlers
107
+ ? {
108
+ code: projectionCodeFor(typ, pctx.projections),
109
+ monHandlers: pctx.monHandlers,
110
+ }
111
+ : {});
99
112
  /* PROJ_FORCE thrust happens in the handler upstream, before wake / damage. */
100
113
  if (ctx.thrustGridsAway > 0) {
101
114
  hooks.thrustAway?.(origin.grid, grid, ctx.thrustGridsAway);
@@ -110,10 +123,11 @@ export function projectMonster(pctx, dist, grid, dam, typ, flg) {
110
123
  const monDied = origin.monster !== 0
111
124
  ? monsterAttack(pctx, ctx, mIdx, seen)
112
125
  : playerAttack(pctx, ctx, mIdx, seen);
113
- if (!monDied)
114
- applySideEffects(pctx, ctx, typ, flg, seen);
115
- /* The side-effect appliers can change ctx.mon (polymorph) or remove it. */
116
- const finalMon = ctx.mon;
126
+ /* The side-effect appliers can change the monster (polymorph) or leave the
127
+ * grid empty when the replacement could not be placed. */
128
+ const finalMon = monDied
129
+ ? null
130
+ : applySideEffects(pctx, ctx, typ, flg, seen);
117
131
  if (finalMon && !monDied)
118
132
  hooks.onUpdate?.(finalMon);
119
133
  return {
@@ -144,20 +158,18 @@ function playerAttack(pctx, ctx, mIdx, seen) {
144
158
  if (displayDam)
145
159
  hooks.message?.(mon, dieMsg, false, dam);
146
160
  else
147
- hooks.message?.(mon, dieMsg);
161
+ hooks.message?.(mon, dieMsg, false);
148
162
  }
149
163
  let died = false;
150
164
  let fear = false;
151
165
  if (dam) {
152
166
  const res = monTakeHit(state.rng, mon, dam, "", {
167
+ ...gameTakeHitHooks(state, mon),
153
168
  onKill: (m) => {
154
169
  hooks.onKill?.(m);
155
170
  deleteMonster(state, mIdx);
156
171
  },
157
172
  ...(hooks.becomeAware ? { becomeAware: hooks.becomeAware } : {}),
158
- ...(hooks.coverTracksBroken
159
- ? { coverTracksBroken: hooks.coverTracksBroken }
160
- : {}),
161
173
  /* Single combat: the kill waits for the arena exit. */
162
174
  ...(state.arenaLevel
163
175
  ? { onArenaDeath: (m) => void arenaInterceptDeath(state, m) }
@@ -174,7 +186,7 @@ function playerAttack(pctx, ctx, mIdx, seen) {
174
186
  if (displayDam)
175
187
  hooks.message?.(mon, ctx.hurtMsg, false, dam);
176
188
  else
177
- hooks.message?.(mon, ctx.hurtMsg);
189
+ hooks.message?.(mon, ctx.hurtMsg, false);
178
190
  }
179
191
  else if (dam > 0) {
180
192
  hooks.messagePain?.(mon, dam, displayDam);
@@ -201,14 +213,14 @@ function monsterAttack(pctx, ctx, mIdx, seen) {
201
213
  if (mon.hp < 0) {
202
214
  hooks.revertShape?.(mon);
203
215
  const dieMsg = seen ? ctx.dieMsg : MON_MSG.MORIA_DEATH;
204
- hooks.message?.(mon, dieMsg);
216
+ hooks.message?.(mon, dieMsg, false);
205
217
  hooks.onMonsterDeath?.(mon);
206
218
  deleteMonster(state, mIdx);
207
219
  return true;
208
220
  }
209
221
  if (!monsterIsCamouflaged(mon)) {
210
222
  if (ctx.hurtMsg !== MON_MSG.NONE && seen) {
211
- hooks.message?.(mon, ctx.hurtMsg);
223
+ hooks.message?.(mon, ctx.hurtMsg, false);
212
224
  }
213
225
  else if (dam > 0) {
214
226
  hooks.messagePain?.(mon, dam);
@@ -229,8 +241,8 @@ function applySideEffects(pctx, ctx, typ, _flg, seen) {
229
241
  * (project-mon.c L1197: monster_is_unique(mon) || player->arena_level). PR3. */
230
242
  if (monsterIsUnique(mon) || state.arenaLevel) {
231
243
  if (seen)
232
- hooks.message?.(mon, MON_MSG.UNAFFECTED);
233
- return;
244
+ hooks.message?.(mon, MON_MSG.UNAFFECTED, false);
245
+ return mon;
234
246
  }
235
247
  if (seen)
236
248
  ctx.obvious = true;
@@ -240,18 +252,38 @@ function applySideEffects(pctx, ctx, typ, _flg, seen) {
240
252
  : state.rng.randint1(90);
241
253
  if (mon.race.level > savelvl) {
242
254
  if (seen) {
243
- hooks.message?.(mon, typ === PROJ.MON_POLY ? MON_MSG.MAINTAIN_SHAPE : MON_MSG.UNAFFECTED);
255
+ hooks.message?.(mon, typ === PROJ.MON_POLY ? MON_MSG.MAINTAIN_SHAPE : MON_MSG.UNAFFECTED, false);
244
256
  }
245
- return;
257
+ return mon;
246
258
  }
247
- const newMon = hooks.polymorph?.(mon, ctx.doPoly, typ === PROJ.MON_POLY) ?? null;
248
- if (newMon && newMon !== mon) {
259
+ /* `old` is the monster's REAL race: a shapechanged monster polymorphs from
260
+ * what it is underneath, not from the shape it is wearing (L1215). */
261
+ const old = mon.originalRace ?? mon.race;
262
+ const next = hooks.polyRace?.(old) ?? old;
263
+ if (next !== old) {
264
+ /* "Report the polymorph before changing the monster" (L1222-1224): the
265
+ * message names the OLD monster, and must be queued while it still
266
+ * exists so it precedes anything the swap itself queues. */
249
267
  if (seen)
250
- hooks.message?.(mon, MON_MSG.CHANGE);
251
- ctx.mon = newMon;
268
+ hooks.message?.(mon, MON_MSG.CHANGE, false);
269
+ const newMon = hooks.replaceMonster?.(mon, next) ?? null;
270
+ /* ctx.mon stays non-null for the handlers that read it; the REPLACEMENT
271
+ * is returned instead, because upstream's context->mon can be NULL here
272
+ * (square_monster on a failed placement, L1229) and widening the shared
273
+ * context to match would make every handler in project-mon.ts nullable
274
+ * for a case none of them can reach. */
275
+ if (newMon)
276
+ ctx.mon = newMon;
277
+ /* "Note the appearance of the new one if it is visible but the old one
278
+ * wasn't" (L1232-1238). Absent until now, so a polymorph out of an unseen
279
+ * monster into a visible one said nothing at all. */
280
+ if (!seen && newMon && monsterIsVisible(newMon)) {
281
+ hooks.message?.(newMon, MON_MSG.APPEAR, false);
282
+ }
283
+ return newMon;
252
284
  }
253
285
  else if (seen) {
254
- hooks.message?.(mon, MON_MSG.MAINTAIN_SHAPE);
286
+ hooks.message?.(mon, MON_MSG.MAINTAIN_SHAPE, false);
255
287
  }
256
288
  }
257
289
  else if (ctx.teleportDistance > 0) {
@@ -268,5 +300,6 @@ function applySideEffects(pctx, ctx, typ, _flg, seen) {
268
300
  }
269
301
  }
270
302
  }
303
+ return ctx.mon;
271
304
  }
272
305
  //# sourceMappingURL=project-monster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-monster.js","sourceRoot":"","sources":["../../src/game/project-monster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-monster.js","sourceRoot":"","sources":["../../src/game/project-monster.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@
25
25
  */
26
26
  import type { Loc } from "../loc.js";
27
27
  import type { GameObject } from "../obj/object.js";
28
+ import type { ProjectionInfo } from "../world/projection.js";
28
29
  import type { GameState } from "./context.js";
29
30
  import { gearToLabel } from "./gear.js";
30
31
  /**
@@ -36,6 +37,20 @@ export { gearToLabel };
36
37
  /** The world seams project_o/project_f need beyond the GameState. */
37
38
  export interface ProjectWorldEnv {
38
39
  msg?(text: string): void;
40
+ /**
41
+ * The bound projection table, so a `typ` can be resolved to the CODE both
42
+ * handler registries are keyed by. Without it only the compiled-in 56
43
+ * resolve - which is every projection core ships; a mod's projection needs
44
+ * this to reach its own handler. `castProjection` supplies it.
45
+ */
46
+ projections?: readonly ProjectionInfo[];
47
+ /**
48
+ * The object-handler table to dispatch through, defaulting to
49
+ * PROJECT_OBJ_HANDLERS. Supplied by wireGame from
50
+ * `GameState.projectionHandlers`, by identity, exactly as `featHandlers` is -
51
+ * see that field and game/projection-handlers.ts.
52
+ */
53
+ objHandlers?: ReadonlyMap<string, ProjectObjHandler>;
39
54
  /**
40
55
  * protected_obj (project-obj.c L537): the object that created the
41
56
  * projection, which must not destroy itself. Absent when the projection has
@@ -44,6 +59,53 @@ export interface ProjectWorldEnv {
44
59
  */
45
60
  protectedObj?: GameObject;
46
61
  }
62
+ /** One handler outcome (project_object_handler_context_t's out fields). */
63
+ interface ObjHandlerResult {
64
+ doKill: boolean;
65
+ ignore: boolean;
66
+ noteKill: string | null;
67
+ }
68
+ /** What an object handler is handed. Mirrors project_object_handler_context_t. */
69
+ export interface ProjectObjCtx {
70
+ /** The object being affected. */
71
+ readonly obj: GameObject;
72
+ /** The PROJ_ value, for a handler that wants it. */
73
+ readonly typ: number;
74
+ /** The out fields, written in place exactly as upstream's context is. */
75
+ readonly out: ObjHandlerResult;
76
+ }
77
+ /** One projection's effect on an object. Writes `ctx.out`; returns nothing. */
78
+ export type ProjectObjHandler = (ctx: ProjectObjCtx) => void;
79
+ /**
80
+ * project_o's switch, as a table keyed by projection CODE.
81
+ *
82
+ * Same rule as PROJECT_FEAT_HANDLERS and for the same reason: a PROJ_ number is
83
+ * an index into a compiled-in enum and a mod's projection is appended past the
84
+ * end of it, so only the `code` is a stable name. See project-feat.ts.
85
+ *
86
+ * Only the 11 codes with an object effect are here. Every other projection has
87
+ * an empty stub upstream, so absence IS the faithful answer rather than an
88
+ * omission - and `project-obj-vectors.json` records the outcome for all 56
89
+ * codes, so a code that quietly gained or lost an effect fails there.
90
+ *
91
+ * PLASMA and METEOR call two elements IN ORDER, and the order is load-bearing:
92
+ * the second `elemental` overwrites `noteKill` when it also hits, so PLASMA on
93
+ * an object that hates both fire and electricity reports "is destroyed", not
94
+ * "burns up".
95
+ */
96
+ export declare const PROJECT_OBJ_HANDLERS: ReadonlyMap<string, ProjectObjHandler>;
97
+ /**
98
+ * Run the object handler for one projection type.
99
+ *
100
+ * This was an 11-case switch until 2026-08-08. KILL_TRAP's chest unlock is NOT
101
+ * here and never was: it mutates the object and messages instead of destroying
102
+ * it, so projectObject handles it ahead of this dispatch. That exception is
103
+ * asserted rather than left implicit - see project-obj-vectors.test.ts.
104
+ *
105
+ * Exported because it is the entry point the recorded vectors replay through,
106
+ * and because a caller with its own table needs somewhere to pass it.
107
+ */
108
+ export declare function runObjectHandler(typ: number, obj: GameObject, env?: ProjectWorldEnv): ObjHandlerResult;
47
109
  /**
48
110
  * project_o: affect every object in the pile at `grid` (PROJECT_ITEM).
49
111
  * Returns whether anything the player can see happened.
@@ -1 +1 @@
1
- {"version":3,"file":"project-obj.d.ts","sourceRoot":"","sources":["../../src/game/project-obj.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAoB,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAgFD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,eAAoB,GACxB,OAAO,CAyDT;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,eAAoB,GACxB,MAAM,CA+ER"}
1
+ {"version":3,"file":"project-obj.d.ts","sourceRoot":"","sources":["../../src/game/project-obj.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,EAAoB,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAOD,2EAA2E;AAC3E,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAkBD,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;CAChC;AAED,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;AAS7D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAgCpE,CAAC;AAEL;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,UAAU,EACf,GAAG,GAAE,eAAoB,GACxB,gBAAgB,CAMlB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,eAAoB,GACxB,OAAO,CA+DT;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,eAAoB,GACxB,MAAM,CA+ER"}
@@ -23,14 +23,17 @@
23
23
  * stands in for the obj->known visibility half, matching the rest of this
24
24
  * driver (the persistent floor twin is game/known.ts' reduced glyph memory).
25
25
  */
26
+ import { locEq } from "../loc.js";
26
27
  import { ELEM, PROJ } from "../generated/index.js";
27
28
  import { EL_INFO_HATES, EL_INFO_IGNORE } from "../obj/types.js";
28
29
  import { tvalIsAmmo, tvalIsArmor, tvalIsRod, tvalIsWeapon } from "../obj/object.js";
29
30
  import { isLockedChest, unlockChest } from "../obj/chest.js";
30
31
  import { ODESC } from "../obj/desc.js";
31
32
  import { squareIsSeen } from "../world/view.js";
33
+ import { projectionCodeFor } from "../world/projection.js";
32
34
  import { describeObject } from "./describe.js";
33
35
  import { floorExcise, floorPile } from "./floor.js";
36
+ import { cmdDisableRepeatFloorItem } from "./repeat.js";
34
37
  import { gearObjectForUse, gearToLabel } from "./gear.js";
35
38
  /**
36
39
  * gear_to_label (obj-gear.c:443) lives in game/gear.ts, beside the Gear it reads.
@@ -51,53 +54,75 @@ function elemental(obj, out, element, singular, plural) {
51
54
  out.ignore = (info.flags & EL_INFO_IGNORE) !== 0;
52
55
  }
53
56
  }
54
- /** The object handler for one projection type (null = no object effect). */
55
- function runObjectHandler(typ, obj) {
56
- const out = { doKill: false, ignore: false, noteKill: null };
57
- switch (typ) {
58
- case PROJ.ACID:
59
- elemental(obj, out, ELEM.ACID, "melts", "melt");
60
- break;
61
- case PROJ.ELEC:
62
- elemental(obj, out, ELEM.ELEC, "is destroyed", "are destroyed");
63
- break;
64
- case PROJ.FIRE:
65
- elemental(obj, out, ELEM.FIRE, "burns up", "burn up");
66
- break;
67
- case PROJ.COLD:
68
- elemental(obj, out, ELEM.COLD, "shatters", "shatter");
69
- break;
70
- case PROJ.SOUND:
71
- elemental(obj, out, ELEM.SOUND, "shatters", "shatter");
72
- break;
73
- case PROJ.SHARD:
74
- elemental(obj, out, ELEM.SHARD, "shatters", "shatter");
75
- break;
76
- case PROJ.ICE:
77
- elemental(obj, out, ELEM.ICE, "shatters", "shatter");
78
- break;
79
- case PROJ.FORCE:
80
- elemental(obj, out, ELEM.FORCE, "shatters", "shatter");
81
- break;
82
- case PROJ.PLASMA:
57
+ /** An elemental arm: destruction gated by that element's HATES/IGNORE bits. */
58
+ const hates = (element, singular, plural) => ({ obj, out }) => {
59
+ elemental(obj, out, element, singular, plural);
60
+ };
61
+ /**
62
+ * project_o's switch, as a table keyed by projection CODE.
63
+ *
64
+ * Same rule as PROJECT_FEAT_HANDLERS and for the same reason: a PROJ_ number is
65
+ * an index into a compiled-in enum and a mod's projection is appended past the
66
+ * end of it, so only the `code` is a stable name. See project-feat.ts.
67
+ *
68
+ * Only the 11 codes with an object effect are here. Every other projection has
69
+ * an empty stub upstream, so absence IS the faithful answer rather than an
70
+ * omission - and `project-obj-vectors.json` records the outcome for all 56
71
+ * codes, so a code that quietly gained or lost an effect fails there.
72
+ *
73
+ * PLASMA and METEOR call two elements IN ORDER, and the order is load-bearing:
74
+ * the second `elemental` overwrites `noteKill` when it also hits, so PLASMA on
75
+ * an object that hates both fire and electricity reports "is destroyed", not
76
+ * "burns up".
77
+ */
78
+ export const PROJECT_OBJ_HANDLERS = new Map([
79
+ ["ACID", hates(ELEM.ACID, "melts", "melt")],
80
+ ["ELEC", hates(ELEM.ELEC, "is destroyed", "are destroyed")],
81
+ ["FIRE", hates(ELEM.FIRE, "burns up", "burn up")],
82
+ ["COLD", hates(ELEM.COLD, "shatters", "shatter")],
83
+ ["SOUND", hates(ELEM.SOUND, "shatters", "shatter")],
84
+ ["SHARD", hates(ELEM.SHARD, "shatters", "shatter")],
85
+ ["ICE", hates(ELEM.ICE, "shatters", "shatter")],
86
+ ["FORCE", hates(ELEM.FORCE, "shatters", "shatter")],
87
+ [
88
+ "PLASMA",
89
+ ({ obj, out }) => {
83
90
  elemental(obj, out, ELEM.FIRE, "burns up", "burn up");
84
91
  elemental(obj, out, ELEM.ELEC, "is destroyed", "are destroyed");
85
- break;
86
- case PROJ.METEOR:
92
+ },
93
+ ],
94
+ [
95
+ "METEOR",
96
+ ({ obj, out }) => {
87
97
  elemental(obj, out, ELEM.FIRE, "burns up", "burn up");
88
98
  elemental(obj, out, ELEM.COLD, "shatters", "shatter");
89
- break;
90
- case PROJ.MANA:
99
+ },
100
+ ],
101
+ [
102
+ "MANA",
103
+ ({ obj, out }) => {
91
104
  /* Mana -- destroys everything. */
92
105
  out.doKill = true;
93
106
  out.noteKill = verbAgree(obj.number, "is destroyed", "are destroyed");
94
- break;
95
- /* KILL_TRAP's chest unlock is handled in projectObject (it mutates the
96
- * object and messages instead of destroying it). Every other projection
97
- * has no object effect, exactly as the upstream stubs. */
98
- default:
99
- break;
100
- }
107
+ },
108
+ ],
109
+ ]);
110
+ /**
111
+ * Run the object handler for one projection type.
112
+ *
113
+ * This was an 11-case switch until 2026-08-08. KILL_TRAP's chest unlock is NOT
114
+ * here and never was: it mutates the object and messages instead of destroying
115
+ * it, so projectObject handles it ahead of this dispatch. That exception is
116
+ * asserted rather than left implicit - see project-obj-vectors.test.ts.
117
+ *
118
+ * Exported because it is the entry point the recorded vectors replay through,
119
+ * and because a caller with its own table needs somewhere to pass it.
120
+ */
121
+ export function runObjectHandler(typ, obj, env = {}) {
122
+ const out = { doKill: false, ignore: false, noteKill: null };
123
+ const code = projectionCodeFor(typ, env.projections);
124
+ const handler = code === undefined ? undefined : (env.objHandlers ?? PROJECT_OBJ_HANDLERS).get(code);
125
+ handler?.({ obj, typ, out });
101
126
  return out;
102
127
  }
103
128
  /**
@@ -123,7 +148,7 @@ export function projectObject(state, _r, grid, _dam, typ, env = {}) {
123
148
  }
124
149
  continue;
125
150
  }
126
- const { doKill: rawKill, ignore, noteKill } = runObjectHandler(typ, obj);
151
+ const { doKill: rawKill, ignore, noteKill } = runObjectHandler(typ, obj, env);
127
152
  /* protected_obj never destroys itself. */
128
153
  const doKill = rawKill && obj !== env.protectedObj;
129
154
  if (!doKill)
@@ -153,6 +178,12 @@ export function projectObject(state, _r, grid, _dam, typ, env = {}) {
153
178
  if (observed && noteKill) {
154
179
  env.msg?.(`The ${describeObject(state, obj, ODESC.BASE)} ${noteKill}!`);
155
180
  }
181
+ /* "Prevent command repetition, if necessary" (project-obj.c:573-576):
182
+ * gated on the destroyed object being on the PLAYER's own grid, which is
183
+ * the only pile a remembered args.floor can index. */
184
+ if (locEq(grid, state.actor.grid)) {
185
+ cmdDisableRepeatFloorItem(state.actor.player);
186
+ }
156
187
  floorExcise(state, grid, obj);
157
188
  }
158
189
  }