@rpgm-tools/neo-angband-core 0.10.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 (1183) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +80 -0
  3. package/dist/agent/act.d.ts +22 -0
  4. package/dist/agent/act.d.ts.map +1 -0
  5. package/dist/agent/act.js +88 -0
  6. package/dist/agent/act.js.map +1 -0
  7. package/dist/agent/controller.d.ts +34 -0
  8. package/dist/agent/controller.d.ts.map +1 -0
  9. package/dist/agent/controller.js +90 -0
  10. package/dist/agent/controller.js.map +1 -0
  11. package/dist/agent/events.d.ts +27 -0
  12. package/dist/agent/events.d.ts.map +1 -0
  13. package/dist/agent/events.js +31 -0
  14. package/dist/agent/events.js.map +1 -0
  15. package/dist/agent/index.d.ts +17 -0
  16. package/dist/agent/index.d.ts.map +1 -0
  17. package/dist/agent/index.js +15 -0
  18. package/dist/agent/index.js.map +1 -0
  19. package/dist/agent/perceive.d.ts +21 -0
  20. package/dist/agent/perceive.d.ts.map +1 -0
  21. package/dist/agent/perceive.js +386 -0
  22. package/dist/agent/perceive.js.map +1 -0
  23. package/dist/agent/types.d.ts +436 -0
  24. package/dist/agent/types.d.ts.map +1 -0
  25. package/dist/agent/types.js +63 -0
  26. package/dist/agent/types.js.map +1 -0
  27. package/dist/bitflag.d.ts +199 -0
  28. package/dist/bitflag.d.ts.map +1 -0
  29. package/dist/bitflag.js +478 -0
  30. package/dist/bitflag.js.map +1 -0
  31. package/dist/cmd.d.ts +164 -0
  32. package/dist/cmd.d.ts.map +1 -0
  33. package/dist/cmd.js +350 -0
  34. package/dist/cmd.js.map +1 -0
  35. package/dist/color.d.ts +104 -0
  36. package/dist/color.d.ts.map +1 -0
  37. package/dist/color.js +240 -0
  38. package/dist/color.js.map +1 -0
  39. package/dist/combat/brand-slay.d.ts +119 -0
  40. package/dist/combat/brand-slay.d.ts.map +1 -0
  41. package/dist/combat/brand-slay.js +264 -0
  42. package/dist/combat/brand-slay.js.map +1 -0
  43. package/dist/combat/hit.d.ts +198 -0
  44. package/dist/combat/hit.d.ts.map +1 -0
  45. package/dist/combat/hit.js +310 -0
  46. package/dist/combat/hit.js.map +1 -0
  47. package/dist/combat/index.d.ts +15 -0
  48. package/dist/combat/index.d.ts.map +1 -0
  49. package/dist/combat/index.js +15 -0
  50. package/dist/combat/index.js.map +1 -0
  51. package/dist/combat/melee.d.ts +261 -0
  52. package/dist/combat/melee.d.ts.map +1 -0
  53. package/dist/combat/melee.js +402 -0
  54. package/dist/combat/melee.js.map +1 -0
  55. package/dist/combat/mon-melee.d.ts +233 -0
  56. package/dist/combat/mon-melee.d.ts.map +1 -0
  57. package/dist/combat/mon-melee.js +883 -0
  58. package/dist/combat/mon-melee.js.map +1 -0
  59. package/dist/combat/ranged.d.ts +89 -0
  60. package/dist/combat/ranged.d.ts.map +1 -0
  61. package/dist/combat/ranged.js +253 -0
  62. package/dist/combat/ranged.js.map +1 -0
  63. package/dist/constants.d.ts +134 -0
  64. package/dist/constants.d.ts.map +1 -0
  65. package/dist/constants.js +171 -0
  66. package/dist/constants.js.map +1 -0
  67. package/dist/dice.d.ts +91 -0
  68. package/dist/dice.d.ts.map +1 -0
  69. package/dist/dice.js +424 -0
  70. package/dist/dice.js.map +1 -0
  71. package/dist/effects/effect-choice.d.ts +15 -0
  72. package/dist/effects/effect-choice.d.ts.map +1 -0
  73. package/dist/effects/effect-choice.js +18 -0
  74. package/dist/effects/effect-choice.js.map +1 -0
  75. package/dist/effects/effect-info.d.ts +124 -0
  76. package/dist/effects/effect-info.d.ts.map +1 -0
  77. package/dist/effects/effect-info.js +706 -0
  78. package/dist/effects/effect-info.js.map +1 -0
  79. package/dist/effects/effect.d.ts +165 -0
  80. package/dist/effects/effect.d.ts.map +1 -0
  81. package/dist/effects/effect.js +452 -0
  82. package/dist/effects/effect.js.map +1 -0
  83. package/dist/effects/handlers.d.ts +70 -0
  84. package/dist/effects/handlers.d.ts.map +1 -0
  85. package/dist/effects/handlers.js +394 -0
  86. package/dist/effects/handlers.js.map +1 -0
  87. package/dist/effects/interpreter.d.ts +291 -0
  88. package/dist/effects/interpreter.d.ts.map +1 -0
  89. package/dist/effects/interpreter.js +325 -0
  90. package/dist/effects/interpreter.js.map +1 -0
  91. package/dist/events.d.ts +188 -0
  92. package/dist/events.d.ts.map +1 -0
  93. package/dist/events.js +138 -0
  94. package/dist/events.js.map +1 -0
  95. package/dist/expression.d.ts +83 -0
  96. package/dist/expression.d.ts.map +1 -0
  97. package/dist/expression.js +333 -0
  98. package/dist/expression.js.map +1 -0
  99. package/dist/game/cave-cmd.d.ts +195 -0
  100. package/dist/game/cave-cmd.d.ts.map +1 -0
  101. package/dist/game/cave-cmd.js +968 -0
  102. package/dist/game/cave-cmd.js.map +1 -0
  103. package/dist/game/char-sheet.d.ts +189 -0
  104. package/dist/game/char-sheet.d.ts.map +1 -0
  105. package/dist/game/char-sheet.js +381 -0
  106. package/dist/game/char-sheet.js.map +1 -0
  107. package/dist/game/chest.d.ts +94 -0
  108. package/dist/game/chest.d.ts.map +1 -0
  109. package/dist/game/chest.js +267 -0
  110. package/dist/game/chest.js.map +1 -0
  111. package/dist/game/context.d.ts +970 -0
  112. package/dist/game/context.d.ts.map +1 -0
  113. package/dist/game/context.js +353 -0
  114. package/dist/game/context.js.map +1 -0
  115. package/dist/game/curse-tick.d.ts +35 -0
  116. package/dist/game/curse-tick.d.ts.map +1 -0
  117. package/dist/game/curse-tick.js +100 -0
  118. package/dist/game/curse-tick.js.map +1 -0
  119. package/dist/game/describe.d.ts +20 -0
  120. package/dist/game/describe.d.ts.map +1 -0
  121. package/dist/game/describe.js +45 -0
  122. package/dist/game/describe.js.map +1 -0
  123. package/dist/game/display.d.ts +196 -0
  124. package/dist/game/display.d.ts.map +1 -0
  125. package/dist/game/display.js +684 -0
  126. package/dist/game/display.js.map +1 -0
  127. package/dist/game/dump-level.d.ts +37 -0
  128. package/dist/game/dump-level.d.ts.map +1 -0
  129. package/dist/game/dump-level.js +110 -0
  130. package/dist/game/dump-level.js.map +1 -0
  131. package/dist/game/effect-attack.d.ts +36 -0
  132. package/dist/game/effect-attack.d.ts.map +1 -0
  133. package/dist/game/effect-attack.js +694 -0
  134. package/dist/game/effect-attack.js.map +1 -0
  135. package/dist/game/effect-detect.d.ts +34 -0
  136. package/dist/game/effect-detect.d.ts.map +1 -0
  137. package/dist/game/effect-detect.js +456 -0
  138. package/dist/game/effect-detect.js.map +1 -0
  139. package/dist/game/effect-env.d.ts +77 -0
  140. package/dist/game/effect-env.d.ts.map +1 -0
  141. package/dist/game/effect-env.js +166 -0
  142. package/dist/game/effect-env.js.map +1 -0
  143. package/dist/game/effect-game-env.d.ts +76 -0
  144. package/dist/game/effect-game-env.d.ts.map +1 -0
  145. package/dist/game/effect-game-env.js +23 -0
  146. package/dist/game/effect-game-env.js.map +1 -0
  147. package/dist/game/effect-general.d.ts +98 -0
  148. package/dist/game/effect-general.d.ts.map +1 -0
  149. package/dist/game/effect-general.js +914 -0
  150. package/dist/game/effect-general.js.map +1 -0
  151. package/dist/game/effect-item.d.ts +124 -0
  152. package/dist/game/effect-item.d.ts.map +1 -0
  153. package/dist/game/effect-item.js +789 -0
  154. package/dist/game/effect-item.js.map +1 -0
  155. package/dist/game/effect-melee.d.ts +43 -0
  156. package/dist/game/effect-melee.d.ts.map +1 -0
  157. package/dist/game/effect-melee.js +477 -0
  158. package/dist/game/effect-melee.js.map +1 -0
  159. package/dist/game/effect-mon-origin.d.ts +67 -0
  160. package/dist/game/effect-mon-origin.d.ts.map +1 -0
  161. package/dist/game/effect-mon-origin.js +164 -0
  162. package/dist/game/effect-mon-origin.js.map +1 -0
  163. package/dist/game/effect-monster.d.ts +29 -0
  164. package/dist/game/effect-monster.d.ts.map +1 -0
  165. package/dist/game/effect-monster.js +281 -0
  166. package/dist/game/effect-monster.js.map +1 -0
  167. package/dist/game/effect-summon.d.ts +37 -0
  168. package/dist/game/effect-summon.d.ts.map +1 -0
  169. package/dist/game/effect-summon.js +113 -0
  170. package/dist/game/effect-summon.js.map +1 -0
  171. package/dist/game/effect-teleport.d.ts +130 -0
  172. package/dist/game/effect-teleport.d.ts.map +1 -0
  173. package/dist/game/effect-teleport.js +529 -0
  174. package/dist/game/effect-teleport.js.map +1 -0
  175. package/dist/game/effect-terrain.d.ts +91 -0
  176. package/dist/game/effect-terrain.d.ts.map +1 -0
  177. package/dist/game/effect-terrain.js +812 -0
  178. package/dist/game/effect-terrain.js.map +1 -0
  179. package/dist/game/energy.d.ts +45 -0
  180. package/dist/game/energy.d.ts.map +1 -0
  181. package/dist/game/energy.js +51 -0
  182. package/dist/game/energy.js.map +1 -0
  183. package/dist/game/equip-cmp.d.ts +138 -0
  184. package/dist/game/equip-cmp.d.ts.map +1 -0
  185. package/dist/game/equip-cmp.js +363 -0
  186. package/dist/game/equip-cmp.js.map +1 -0
  187. package/dist/game/floor.d.ts +182 -0
  188. package/dist/game/floor.d.ts.map +1 -0
  189. package/dist/game/floor.js +435 -0
  190. package/dist/game/floor.js.map +1 -0
  191. package/dist/game/gear.d.ts +408 -0
  192. package/dist/game/gear.d.ts.map +1 -0
  193. package/dist/game/gear.js +1037 -0
  194. package/dist/game/gear.js.map +1 -0
  195. package/dist/game/harness.d.ts +61 -0
  196. package/dist/game/harness.d.ts.map +1 -0
  197. package/dist/game/harness.js +198 -0
  198. package/dist/game/harness.js.map +1 -0
  199. package/dist/game/history.d.ts +49 -0
  200. package/dist/game/history.d.ts.map +1 -0
  201. package/dist/game/history.js +55 -0
  202. package/dist/game/history.js.map +1 -0
  203. package/dist/game/ignore-cmd.d.ts +42 -0
  204. package/dist/game/ignore-cmd.d.ts.map +1 -0
  205. package/dist/game/ignore-cmd.js +59 -0
  206. package/dist/game/ignore-cmd.js.map +1 -0
  207. package/dist/game/inscription-confirm.d.ts +80 -0
  208. package/dist/game/inscription-confirm.d.ts.map +1 -0
  209. package/dist/game/inscription-confirm.js +95 -0
  210. package/dist/game/inscription-confirm.js.map +1 -0
  211. package/dist/game/known.d.ts +297 -0
  212. package/dist/game/known.d.ts.map +1 -0
  213. package/dist/game/known.js +849 -0
  214. package/dist/game/known.js.map +1 -0
  215. package/dist/game/loop.d.ts +139 -0
  216. package/dist/game/loop.d.ts.map +1 -0
  217. package/dist/game/loop.js +631 -0
  218. package/dist/game/loop.js.map +1 -0
  219. package/dist/game/lore-color.d.ts +25 -0
  220. package/dist/game/lore-color.d.ts.map +1 -0
  221. package/dist/game/lore-color.js +95 -0
  222. package/dist/game/lore-color.js.map +1 -0
  223. package/dist/game/mon-cast.d.ts +150 -0
  224. package/dist/game/mon-cast.d.ts.map +1 -0
  225. package/dist/game/mon-cast.js +301 -0
  226. package/dist/game/mon-cast.js.map +1 -0
  227. package/dist/game/mon-cmd.d.ts +51 -0
  228. package/dist/game/mon-cmd.d.ts.map +1 -0
  229. package/dist/game/mon-cmd.js +670 -0
  230. package/dist/game/mon-cmd.js.map +1 -0
  231. package/dist/game/mon-death.d.ts +143 -0
  232. package/dist/game/mon-death.d.ts.map +1 -0
  233. package/dist/game/mon-death.js +328 -0
  234. package/dist/game/mon-death.js.map +1 -0
  235. package/dist/game/mon-group.d.ts +81 -0
  236. package/dist/game/mon-group.d.ts.map +1 -0
  237. package/dist/game/mon-group.js +323 -0
  238. package/dist/game/mon-group.js.map +1 -0
  239. package/dist/game/mon-list.d.ts +85 -0
  240. package/dist/game/mon-list.d.ts.map +1 -0
  241. package/dist/game/mon-list.js +154 -0
  242. package/dist/game/mon-list.js.map +1 -0
  243. package/dist/game/mon-message.d.ts +100 -0
  244. package/dist/game/mon-message.d.ts.map +1 -0
  245. package/dist/game/mon-message.js +336 -0
  246. package/dist/game/mon-message.js.map +1 -0
  247. package/dist/game/mon-place.d.ts +226 -0
  248. package/dist/game/mon-place.d.ts.map +1 -0
  249. package/dist/game/mon-place.js +642 -0
  250. package/dist/game/mon-place.js.map +1 -0
  251. package/dist/game/mon-ranged.d.ts +87 -0
  252. package/dist/game/mon-ranged.d.ts.map +1 -0
  253. package/dist/game/mon-ranged.js +353 -0
  254. package/dist/game/mon-ranged.js.map +1 -0
  255. package/dist/game/mon-shape.d.ts +43 -0
  256. package/dist/game/mon-shape.d.ts.map +1 -0
  257. package/dist/game/mon-shape.js +115 -0
  258. package/dist/game/mon-shape.js.map +1 -0
  259. package/dist/game/mon-side.d.ts +63 -0
  260. package/dist/game/mon-side.d.ts.map +1 -0
  261. package/dist/game/mon-side.js +403 -0
  262. package/dist/game/mon-side.js.map +1 -0
  263. package/dist/game/monster-turn.d.ts +195 -0
  264. package/dist/game/monster-turn.d.ts.map +1 -0
  265. package/dist/game/monster-turn.js +1560 -0
  266. package/dist/game/monster-turn.js.map +1 -0
  267. package/dist/game/obj-cmd.d.ts +453 -0
  268. package/dist/game/obj-cmd.d.ts.map +1 -0
  269. package/dist/game/obj-cmd.js +1530 -0
  270. package/dist/game/obj-cmd.js.map +1 -0
  271. package/dist/game/obj-list.d.ts +92 -0
  272. package/dist/game/obj-list.d.ts.map +1 -0
  273. package/dist/game/obj-list.js +251 -0
  274. package/dist/game/obj-list.js.map +1 -0
  275. package/dist/game/object-inspect.d.ts +37 -0
  276. package/dist/game/object-inspect.d.ts.map +1 -0
  277. package/dist/game/object-inspect.js +106 -0
  278. package/dist/game/object-inspect.js.map +1 -0
  279. package/dist/game/pickup.d.ts +126 -0
  280. package/dist/game/pickup.d.ts.map +1 -0
  281. package/dist/game/pickup.js +367 -0
  282. package/dist/game/pickup.js.map +1 -0
  283. package/dist/game/player-path.d.ts +133 -0
  284. package/dist/game/player-path.d.ts.map +1 -0
  285. package/dist/game/player-path.js +1268 -0
  286. package/dist/game/player-path.js.map +1 -0
  287. package/dist/game/player-side.d.ts +59 -0
  288. package/dist/game/player-side.d.ts.map +1 -0
  289. package/dist/game/player-side.js +506 -0
  290. package/dist/game/player-side.js.map +1 -0
  291. package/dist/game/player-turn.d.ts +161 -0
  292. package/dist/game/player-turn.d.ts.map +1 -0
  293. package/dist/game/player-turn.js +739 -0
  294. package/dist/game/player-turn.js.map +1 -0
  295. package/dist/game/project-cast.d.ts +268 -0
  296. package/dist/game/project-cast.d.ts.map +1 -0
  297. package/dist/game/project-cast.js +496 -0
  298. package/dist/game/project-cast.js.map +1 -0
  299. package/dist/game/project-feat.d.ts +47 -0
  300. package/dist/game/project-feat.d.ts.map +1 -0
  301. package/dist/game/project-feat.js +350 -0
  302. package/dist/game/project-feat.js.map +1 -0
  303. package/dist/game/project-monster.d.ts +106 -0
  304. package/dist/game/project-monster.d.ts.map +1 -0
  305. package/dist/game/project-monster.js +272 -0
  306. package/dist/game/project-monster.js.map +1 -0
  307. package/dist/game/project-obj.d.ts +60 -0
  308. package/dist/game/project-obj.d.ts.map +1 -0
  309. package/dist/game/project-obj.js +245 -0
  310. package/dist/game/project-obj.js.map +1 -0
  311. package/dist/game/project-player.d.ts +120 -0
  312. package/dist/game/project-player.d.ts.map +1 -0
  313. package/dist/game/project-player.js +108 -0
  314. package/dist/game/project-player.js.map +1 -0
  315. package/dist/game/quest.d.ts +101 -0
  316. package/dist/game/quest.d.ts.map +1 -0
  317. package/dist/game/quest.js +192 -0
  318. package/dist/game/quest.js.map +1 -0
  319. package/dist/game/ranged-cmd.d.ts +32 -0
  320. package/dist/game/ranged-cmd.d.ts.map +1 -0
  321. package/dist/game/ranged-cmd.js +372 -0
  322. package/dist/game/ranged-cmd.js.map +1 -0
  323. package/dist/game/scheduler.d.ts +47 -0
  324. package/dist/game/scheduler.d.ts.map +1 -0
  325. package/dist/game/scheduler.js +141 -0
  326. package/dist/game/scheduler.js.map +1 -0
  327. package/dist/game/spell-cmd.d.ts +104 -0
  328. package/dist/game/spell-cmd.d.ts.map +1 -0
  329. package/dist/game/spell-cmd.js +320 -0
  330. package/dist/game/spell-cmd.js.map +1 -0
  331. package/dist/game/spoil.d.ts +28 -0
  332. package/dist/game/spoil.d.ts.map +1 -0
  333. package/dist/game/spoil.js +435 -0
  334. package/dist/game/spoil.js.map +1 -0
  335. package/dist/game/steal.d.ts +35 -0
  336. package/dist/game/steal.d.ts.map +1 -0
  337. package/dist/game/steal.js +145 -0
  338. package/dist/game/steal.js.map +1 -0
  339. package/dist/game/take-hit-hooks.d.ts +52 -0
  340. package/dist/game/take-hit-hooks.d.ts.map +1 -0
  341. package/dist/game/take-hit-hooks.js +127 -0
  342. package/dist/game/take-hit-hooks.js.map +1 -0
  343. package/dist/game/target-loop.d.ts +119 -0
  344. package/dist/game/target-loop.d.ts.map +1 -0
  345. package/dist/game/target-loop.js +408 -0
  346. package/dist/game/target-loop.js.map +1 -0
  347. package/dist/game/target.d.ts +133 -0
  348. package/dist/game/target.d.ts.map +1 -0
  349. package/dist/game/target.js +353 -0
  350. package/dist/game/target.js.map +1 -0
  351. package/dist/game/thrust.d.ts +37 -0
  352. package/dist/game/thrust.d.ts.map +1 -0
  353. package/dist/game/thrust.js +155 -0
  354. package/dist/game/thrust.js.map +1 -0
  355. package/dist/game/trap.d.ts +218 -0
  356. package/dist/game/trap.d.ts.map +1 -0
  357. package/dist/game/trap.js +618 -0
  358. package/dist/game/trap.js.map +1 -0
  359. package/dist/game/ui-entry.d.ts +282 -0
  360. package/dist/game/ui-entry.d.ts.map +1 -0
  361. package/dist/game/ui-entry.js +1838 -0
  362. package/dist/game/ui-entry.js.map +1 -0
  363. package/dist/game/wizard.d.ts +654 -0
  364. package/dist/game/wizard.d.ts.map +1 -0
  365. package/dist/game/wizard.js +1323 -0
  366. package/dist/game/wizard.js.map +1 -0
  367. package/dist/game/world.d.ts +183 -0
  368. package/dist/game/world.d.ts.map +1 -0
  369. package/dist/game/world.js +685 -0
  370. package/dist/game/world.js.map +1 -0
  371. package/dist/gen/cave.d.ts +247 -0
  372. package/dist/gen/cave.d.ts.map +1 -0
  373. package/dist/gen/cave.js +2406 -0
  374. package/dist/gen/cave.js.map +1 -0
  375. package/dist/gen/gen-monster.d.ts +151 -0
  376. package/dist/gen/gen-monster.d.ts.map +1 -0
  377. package/dist/gen/gen-monster.js +473 -0
  378. package/dist/gen/gen-monster.js.map +1 -0
  379. package/dist/gen/generate.d.ts +240 -0
  380. package/dist/gen/generate.d.ts.map +1 -0
  381. package/dist/gen/generate.js +358 -0
  382. package/dist/gen/generate.js.map +1 -0
  383. package/dist/gen/room.d.ts +160 -0
  384. package/dist/gen/room.d.ts.map +1 -0
  385. package/dist/gen/room.js +1910 -0
  386. package/dist/gen/room.js.map +1 -0
  387. package/dist/gen/util.d.ts +466 -0
  388. package/dist/gen/util.d.ts.map +1 -0
  389. package/dist/gen/util.js +1553 -0
  390. package/dist/gen/util.js.map +1 -0
  391. package/dist/generated/dun-profiles.d.ts +44 -0
  392. package/dist/generated/dun-profiles.d.ts.map +1 -0
  393. package/dist/generated/dun-profiles.js +28 -0
  394. package/dist/generated/dun-profiles.js.map +1 -0
  395. package/dist/generated/effects.d.ts +1021 -0
  396. package/dist/generated/effects.d.ts.map +1 -0
  397. package/dist/generated/effects.js +239 -0
  398. package/dist/generated/effects.js.map +1 -0
  399. package/dist/generated/elements.d.ts +83 -0
  400. package/dist/generated/elements.d.ts.map +1 -0
  401. package/dist/generated/elements.js +60 -0
  402. package/dist/generated/elements.js.map +1 -0
  403. package/dist/generated/equip-slots.d.ts +104 -0
  404. package/dist/generated/equip-slots.d.ts.map +1 -0
  405. package/dist/generated/equip-slots.js +34 -0
  406. package/dist/generated/equip-slots.js.map +1 -0
  407. package/dist/generated/history-types.d.ts +52 -0
  408. package/dist/generated/history-types.d.ts.map +1 -0
  409. package/dist/generated/history-types.js +32 -0
  410. package/dist/generated/history-types.js.map +1 -0
  411. package/dist/generated/ignore-types.d.ts +116 -0
  412. package/dist/generated/ignore-types.d.ts.map +1 -0
  413. package/dist/generated/ignore-types.js +64 -0
  414. package/dist/generated/ignore-types.js.map +1 -0
  415. package/dist/generated/index.d.ts +32 -0
  416. package/dist/generated/index.d.ts.map +1 -0
  417. package/dist/generated/index.js +33 -0
  418. package/dist/generated/index.js.map +1 -0
  419. package/dist/generated/kind-flags.d.ts +72 -0
  420. package/dist/generated/kind-flags.d.ts.map +1 -0
  421. package/dist/generated/kind-flags.js +42 -0
  422. package/dist/generated/kind-flags.js.map +1 -0
  423. package/dist/generated/message.d.ts +624 -0
  424. package/dist/generated/message.d.ts.map +1 -0
  425. package/dist/generated/message.js +318 -0
  426. package/dist/generated/message.js.map +1 -0
  427. package/dist/generated/mon-message.d.ts +386 -0
  428. package/dist/generated/mon-message.d.ts.map +1 -0
  429. package/dist/generated/mon-message.js +136 -0
  430. package/dist/generated/mon-message.js.map +1 -0
  431. package/dist/generated/mon-race-flags.d.ts +433 -0
  432. package/dist/generated/mon-race-flags.d.ts.map +1 -0
  433. package/dist/generated/mon-race-flags.js +180 -0
  434. package/dist/generated/mon-race-flags.js.map +1 -0
  435. package/dist/generated/mon-spells.d.ts +380 -0
  436. package/dist/generated/mon-spells.d.ts.map +1 -0
  437. package/dist/generated/mon-spells.js +196 -0
  438. package/dist/generated/mon-spells.js.map +1 -0
  439. package/dist/generated/mon-temp-flags.d.ts +52 -0
  440. package/dist/generated/mon-temp-flags.d.ts.map +1 -0
  441. package/dist/generated/mon-temp-flags.js +32 -0
  442. package/dist/generated/mon-temp-flags.js.map +1 -0
  443. package/dist/generated/mon-timed.d.ts +118 -0
  444. package/dist/generated/mon-timed.d.ts.map +1 -0
  445. package/dist/generated/mon-timed.js +32 -0
  446. package/dist/generated/mon-timed.js.map +1 -0
  447. package/dist/generated/object-flags.d.ts +169 -0
  448. package/dist/generated/object-flags.d.ts.map +1 -0
  449. package/dist/generated/object-flags.js +93 -0
  450. package/dist/generated/object-flags.js.map +1 -0
  451. package/dist/generated/object-modifiers.d.ts +50 -0
  452. package/dist/generated/object-modifiers.d.ts.map +1 -0
  453. package/dist/generated/object-modifiers.js +41 -0
  454. package/dist/generated/object-modifiers.js.map +1 -0
  455. package/dist/generated/options.d.ts +284 -0
  456. package/dist/generated/options.d.ts.map +1 -0
  457. package/dist/generated/options.js +102 -0
  458. package/dist/generated/options.js.map +1 -0
  459. package/dist/generated/origins.d.ts +138 -0
  460. package/dist/generated/origins.d.ts.map +1 -0
  461. package/dist/generated/origins.js +62 -0
  462. package/dist/generated/origins.js.map +1 -0
  463. package/dist/generated/parser-errors.d.ts +264 -0
  464. package/dist/generated/parser-errors.d.ts.map +1 -0
  465. package/dist/generated/parser-errors.js +138 -0
  466. package/dist/generated/parser-errors.js.map +1 -0
  467. package/dist/generated/player-flags.d.ts +62 -0
  468. package/dist/generated/player-flags.d.ts.map +1 -0
  469. package/dist/generated/player-flags.js +46 -0
  470. package/dist/generated/player-flags.js.map +1 -0
  471. package/dist/generated/player-timed.d.ts +273 -0
  472. package/dist/generated/player-timed.d.ts.map +1 -0
  473. package/dist/generated/player-timed.js +116 -0
  474. package/dist/generated/player-timed.js.map +1 -0
  475. package/dist/generated/projections.d.ts +130 -0
  476. package/dist/generated/projections.d.ts.map +1 -0
  477. package/dist/generated/projections.js +101 -0
  478. package/dist/generated/projections.js.map +1 -0
  479. package/dist/generated/randart-properties.d.ts +388 -0
  480. package/dist/generated/randart-properties.d.ts.map +1 -0
  481. package/dist/generated/randart-properties.js +200 -0
  482. package/dist/generated/randart-properties.js.map +1 -0
  483. package/dist/generated/room-flags.d.ts +21 -0
  484. package/dist/generated/room-flags.d.ts.map +1 -0
  485. package/dist/generated/room-flags.js +19 -0
  486. package/dist/generated/room-flags.js.map +1 -0
  487. package/dist/generated/rooms.d.ts +122 -0
  488. package/dist/generated/rooms.d.ts.map +1 -0
  489. package/dist/generated/rooms.js +48 -0
  490. package/dist/generated/rooms.js.map +1 -0
  491. package/dist/generated/square-flags.d.ts +96 -0
  492. package/dist/generated/square-flags.d.ts.map +1 -0
  493. package/dist/generated/square-flags.js +54 -0
  494. package/dist/generated/square-flags.js.map +1 -0
  495. package/dist/generated/stats.d.ts +23 -0
  496. package/dist/generated/stats.d.ts.map +1 -0
  497. package/dist/generated/stats.js +20 -0
  498. package/dist/generated/stats.js.map +1 -0
  499. package/dist/generated/terrain-flags.d.ts +136 -0
  500. package/dist/generated/terrain-flags.d.ts.map +1 -0
  501. package/dist/generated/terrain-flags.js +74 -0
  502. package/dist/generated/terrain-flags.js.map +1 -0
  503. package/dist/generated/terrain.d.ts +83 -0
  504. package/dist/generated/terrain.d.ts.map +1 -0
  505. package/dist/generated/terrain.js +60 -0
  506. package/dist/generated/terrain.js.map +1 -0
  507. package/dist/generated/trap-flags.d.ts +68 -0
  508. package/dist/generated/trap-flags.d.ts.map +1 -0
  509. package/dist/generated/trap-flags.js +40 -0
  510. package/dist/generated/trap-flags.js.map +1 -0
  511. package/dist/generated/tvals.d.ts +152 -0
  512. package/dist/generated/tvals.d.ts.map +1 -0
  513. package/dist/generated/tvals.js +82 -0
  514. package/dist/generated/tvals.js.map +1 -0
  515. package/dist/generated/ui-entry-renderers.d.ts +62 -0
  516. package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
  517. package/dist/generated/ui-entry-renderers.js +22 -0
  518. package/dist/generated/ui-entry-renderers.js.map +1 -0
  519. package/dist/guard.d.ts +43 -0
  520. package/dist/guard.d.ts.map +1 -0
  521. package/dist/guard.js +65 -0
  522. package/dist/guard.js.map +1 -0
  523. package/dist/host/args.d.ts +129 -0
  524. package/dist/host/args.d.ts.map +1 -0
  525. package/dist/host/args.js +251 -0
  526. package/dist/host/args.js.map +1 -0
  527. package/dist/host/bridge.d.ts +61 -0
  528. package/dist/host/bridge.d.ts.map +1 -0
  529. package/dist/host/bridge.js +176 -0
  530. package/dist/host/bridge.js.map +1 -0
  531. package/dist/host/index.d.ts +18 -0
  532. package/dist/host/index.d.ts.map +1 -0
  533. package/dist/host/index.js +18 -0
  534. package/dist/host/index.js.map +1 -0
  535. package/dist/host/io.d.ts +169 -0
  536. package/dist/host/io.d.ts.map +1 -0
  537. package/dist/host/io.js +137 -0
  538. package/dist/host/io.js.map +1 -0
  539. package/dist/host/memory.d.ts +56 -0
  540. package/dist/host/memory.d.ts.map +1 -0
  541. package/dist/host/memory.js +105 -0
  542. package/dist/host/memory.js.map +1 -0
  543. package/dist/host/raw.d.ts +114 -0
  544. package/dist/host/raw.d.ts.map +1 -0
  545. package/dist/host/raw.js +107 -0
  546. package/dist/host/raw.js.map +1 -0
  547. package/dist/index.d.ts +180 -0
  548. package/dist/index.d.ts.map +1 -0
  549. package/dist/index.js +222 -0
  550. package/dist/index.js.map +1 -0
  551. package/dist/loc.d.ts +63 -0
  552. package/dist/loc.d.ts.map +1 -0
  553. package/dist/loc.js +128 -0
  554. package/dist/loc.js.map +1 -0
  555. package/dist/mod/hooks.d.ts +204 -0
  556. package/dist/mod/hooks.d.ts.map +1 -0
  557. package/dist/mod/hooks.js +161 -0
  558. package/dist/mod/hooks.js.map +1 -0
  559. package/dist/mod/ids.d.ts +160 -0
  560. package/dist/mod/ids.d.ts.map +1 -0
  561. package/dist/mod/ids.js +343 -0
  562. package/dist/mod/ids.js.map +1 -0
  563. package/dist/mod/registry-host.d.ts +156 -0
  564. package/dist/mod/registry-host.d.ts.map +1 -0
  565. package/dist/mod/registry-host.js +142 -0
  566. package/dist/mod/registry-host.js.map +1 -0
  567. package/dist/mod/save-blocks.d.ts +201 -0
  568. package/dist/mod/save-blocks.d.ts.map +1 -0
  569. package/dist/mod/save-blocks.js +640 -0
  570. package/dist/mod/save-blocks.js.map +1 -0
  571. package/dist/mod/vocabulary.d.ts +104 -0
  572. package/dist/mod/vocabulary.d.ts.map +1 -0
  573. package/dist/mod/vocabulary.js +0 -0
  574. package/dist/mod/vocabulary.js.map +1 -0
  575. package/dist/mon/bind.d.ts +266 -0
  576. package/dist/mon/bind.d.ts.map +1 -0
  577. package/dist/mon/bind.js +610 -0
  578. package/dist/mon/bind.js.map +1 -0
  579. package/dist/mon/desc.d.ts +72 -0
  580. package/dist/mon/desc.d.ts.map +1 -0
  581. package/dist/mon/desc.js +237 -0
  582. package/dist/mon/desc.js.map +1 -0
  583. package/dist/mon/knowledge-groups.d.ts +61 -0
  584. package/dist/mon/knowledge-groups.d.ts.map +1 -0
  585. package/dist/mon/knowledge-groups.js +121 -0
  586. package/dist/mon/knowledge-groups.js.map +1 -0
  587. package/dist/mon/lore-describe.d.ts +216 -0
  588. package/dist/mon/lore-describe.d.ts.map +1 -0
  589. package/dist/mon/lore-describe.js +1105 -0
  590. package/dist/mon/lore-describe.js.map +1 -0
  591. package/dist/mon/lore.d.ts +117 -0
  592. package/dist/mon/lore.d.ts.map +1 -0
  593. package/dist/mon/lore.js +221 -0
  594. package/dist/mon/lore.js.map +1 -0
  595. package/dist/mon/make.d.ts +147 -0
  596. package/dist/mon/make.d.ts.map +1 -0
  597. package/dist/mon/make.js +353 -0
  598. package/dist/mon/make.js.map +1 -0
  599. package/dist/mon/monster.d.ts +94 -0
  600. package/dist/mon/monster.d.ts.map +1 -0
  601. package/dist/mon/monster.js +90 -0
  602. package/dist/mon/monster.js.map +1 -0
  603. package/dist/mon/predicate.d.ts +87 -0
  604. package/dist/mon/predicate.d.ts.map +1 -0
  605. package/dist/mon/predicate.js +190 -0
  606. package/dist/mon/predicate.js.map +1 -0
  607. package/dist/mon/project-mon.d.ts +129 -0
  608. package/dist/mon/project-mon.d.ts.map +1 -0
  609. package/dist/mon/project-mon.js +652 -0
  610. package/dist/mon/project-mon.js.map +1 -0
  611. package/dist/mon/spell.d.ts +155 -0
  612. package/dist/mon/spell.d.ts.map +1 -0
  613. package/dist/mon/spell.js +355 -0
  614. package/dist/mon/spell.js.map +1 -0
  615. package/dist/mon/steal.d.ts +112 -0
  616. package/dist/mon/steal.d.ts.map +1 -0
  617. package/dist/mon/steal.js +163 -0
  618. package/dist/mon/steal.js.map +1 -0
  619. package/dist/mon/summon.d.ts +62 -0
  620. package/dist/mon/summon.d.ts.map +1 -0
  621. package/dist/mon/summon.js +111 -0
  622. package/dist/mon/summon.js.map +1 -0
  623. package/dist/mon/take-hit.d.ts +75 -0
  624. package/dist/mon/take-hit.d.ts.map +1 -0
  625. package/dist/mon/take-hit.js +122 -0
  626. package/dist/mon/take-hit.js.map +1 -0
  627. package/dist/mon/timed.d.ts +74 -0
  628. package/dist/mon/timed.d.ts.map +1 -0
  629. package/dist/mon/timed.js +219 -0
  630. package/dist/mon/timed.js.map +1 -0
  631. package/dist/mon/types.d.ts +252 -0
  632. package/dist/mon/types.d.ts.map +1 -0
  633. package/dist/mon/types.js +46 -0
  634. package/dist/mon/types.js.map +1 -0
  635. package/dist/msg.d.ts +71 -0
  636. package/dist/msg.d.ts.map +1 -0
  637. package/dist/msg.js +126 -0
  638. package/dist/msg.js.map +1 -0
  639. package/dist/obj/artifact-fake.d.ts +39 -0
  640. package/dist/obj/artifact-fake.d.ts.map +1 -0
  641. package/dist/obj/artifact-fake.js +52 -0
  642. package/dist/obj/artifact-fake.js.map +1 -0
  643. package/dist/obj/artifact-known.d.ts +50 -0
  644. package/dist/obj/artifact-known.d.ts.map +1 -0
  645. package/dist/obj/artifact-known.js +55 -0
  646. package/dist/obj/artifact-known.js.map +1 -0
  647. package/dist/obj/bind.d.ts +219 -0
  648. package/dist/obj/bind.d.ts.map +1 -0
  649. package/dist/obj/bind.js +1239 -0
  650. package/dist/obj/bind.js.map +1 -0
  651. package/dist/obj/chest.d.ts +91 -0
  652. package/dist/obj/chest.d.ts.map +1 -0
  653. package/dist/obj/chest.js +220 -0
  654. package/dist/obj/chest.js.map +1 -0
  655. package/dist/obj/desc.d.ts +79 -0
  656. package/dist/obj/desc.d.ts.map +1 -0
  657. package/dist/obj/desc.js +602 -0
  658. package/dist/obj/desc.js.map +1 -0
  659. package/dist/obj/effects-info.d.ts +78 -0
  660. package/dist/obj/effects-info.d.ts.map +1 -0
  661. package/dist/obj/effects-info.js +240 -0
  662. package/dist/obj/effects-info.js.map +1 -0
  663. package/dist/obj/flavor.d.ts +68 -0
  664. package/dist/obj/flavor.d.ts.map +1 -0
  665. package/dist/obj/flavor.js +201 -0
  666. package/dist/obj/flavor.js.map +1 -0
  667. package/dist/obj/ignore.d.ts +143 -0
  668. package/dist/obj/ignore.d.ts.map +1 -0
  669. package/dist/obj/ignore.js +345 -0
  670. package/dist/obj/ignore.js.map +1 -0
  671. package/dist/obj/knowledge.d.ts +520 -0
  672. package/dist/obj/knowledge.d.ts.map +1 -0
  673. package/dist/obj/knowledge.js +1364 -0
  674. package/dist/obj/knowledge.js.map +1 -0
  675. package/dist/obj/known-object.d.ts +293 -0
  676. package/dist/obj/known-object.d.ts.map +1 -0
  677. package/dist/obj/known-object.js +532 -0
  678. package/dist/obj/known-object.js.map +1 -0
  679. package/dist/obj/make.d.ts +292 -0
  680. package/dist/obj/make.d.ts.map +1 -0
  681. package/dist/obj/make.js +1055 -0
  682. package/dist/obj/make.js.map +1 -0
  683. package/dist/obj/object-info.d.ts +188 -0
  684. package/dist/obj/object-info.d.ts.map +1 -0
  685. package/dist/obj/object-info.js +1407 -0
  686. package/dist/obj/object-info.js.map +1 -0
  687. package/dist/obj/object.d.ts +335 -0
  688. package/dist/obj/object.d.ts.map +1 -0
  689. package/dist/obj/object.js +1051 -0
  690. package/dist/obj/object.js.map +1 -0
  691. package/dist/obj/power.d.ts +65 -0
  692. package/dist/obj/power.d.ts.map +1 -0
  693. package/dist/obj/power.js +580 -0
  694. package/dist/obj/power.js.map +1 -0
  695. package/dist/obj/randart-build.d.ts +223 -0
  696. package/dist/obj/randart-build.d.ts.map +1 -0
  697. package/dist/obj/randart-build.js +1444 -0
  698. package/dist/obj/randart-build.js.map +1 -0
  699. package/dist/obj/randart-data.d.ts +179 -0
  700. package/dist/obj/randart-data.d.ts.map +1 -0
  701. package/dist/obj/randart-data.js +1153 -0
  702. package/dist/obj/randart-data.js.map +1 -0
  703. package/dist/obj/randart.d.ts +128 -0
  704. package/dist/obj/randart.d.ts.map +1 -0
  705. package/dist/obj/randart.js +458 -0
  706. package/dist/obj/randart.js.map +1 -0
  707. package/dist/obj/randname.d.ts +33 -0
  708. package/dist/obj/randname.d.ts.map +1 -0
  709. package/dist/obj/randname.js +116 -0
  710. package/dist/obj/randname.js.map +1 -0
  711. package/dist/obj/recharge.d.ts +28 -0
  712. package/dist/obj/recharge.d.ts.map +1 -0
  713. package/dist/obj/recharge.js +52 -0
  714. package/dist/obj/recharge.js.map +1 -0
  715. package/dist/obj/types.d.ts +584 -0
  716. package/dist/obj/types.d.ts.map +1 -0
  717. package/dist/obj/types.js +104 -0
  718. package/dist/obj/types.js.map +1 -0
  719. package/dist/obj/value.d.ts +64 -0
  720. package/dist/obj/value.d.ts.map +1 -0
  721. package/dist/obj/value.js +176 -0
  722. package/dist/obj/value.js.map +1 -0
  723. package/dist/player/abilities.d.ts +57 -0
  724. package/dist/player/abilities.d.ts.map +1 -0
  725. package/dist/player/abilities.js +118 -0
  726. package/dist/player/abilities.js.map +1 -0
  727. package/dist/player/best-digger.d.ts +42 -0
  728. package/dist/player/best-digger.d.ts.map +1 -0
  729. package/dist/player/best-digger.js +89 -0
  730. package/dist/player/best-digger.js.map +1 -0
  731. package/dist/player/bind.d.ts +270 -0
  732. package/dist/player/bind.d.ts.map +1 -0
  733. package/dist/player/bind.js +698 -0
  734. package/dist/player/bind.js.map +1 -0
  735. package/dist/player/birth.d.ts +258 -0
  736. package/dist/player/birth.d.ts.map +1 -0
  737. package/dist/player/birth.js +639 -0
  738. package/dist/player/birth.js.map +1 -0
  739. package/dist/player/calcs.d.ts +403 -0
  740. package/dist/player/calcs.d.ts.map +1 -0
  741. package/dist/player/calcs.js +1189 -0
  742. package/dist/player/calcs.js.map +1 -0
  743. package/dist/player/combat-regen.d.ts +14 -0
  744. package/dist/player/combat-regen.d.ts.map +1 -0
  745. package/dist/player/combat-regen.js +29 -0
  746. package/dist/player/combat-regen.js.map +1 -0
  747. package/dist/player/exp.d.ts +96 -0
  748. package/dist/player/exp.d.ts.map +1 -0
  749. package/dist/player/exp.js +229 -0
  750. package/dist/player/exp.js.map +1 -0
  751. package/dist/player/history.d.ts +91 -0
  752. package/dist/player/history.d.ts.map +1 -0
  753. package/dist/player/history.js +145 -0
  754. package/dist/player/history.js.map +1 -0
  755. package/dist/player/options.d.ts +123 -0
  756. package/dist/player/options.d.ts.map +1 -0
  757. package/dist/player/options.js +199 -0
  758. package/dist/player/options.js.map +1 -0
  759. package/dist/player/player.d.ts +242 -0
  760. package/dist/player/player.d.ts.map +1 -0
  761. package/dist/player/player.js +119 -0
  762. package/dist/player/player.js.map +1 -0
  763. package/dist/player/shape-lore.d.ts +56 -0
  764. package/dist/player/shape-lore.d.ts.map +1 -0
  765. package/dist/player/shape-lore.js +221 -0
  766. package/dist/player/shape-lore.js.map +1 -0
  767. package/dist/player/spell.d.ts +146 -0
  768. package/dist/player/spell.d.ts.map +1 -0
  769. package/dist/player/spell.js +519 -0
  770. package/dist/player/spell.js.map +1 -0
  771. package/dist/player/take-hit.d.ts +87 -0
  772. package/dist/player/take-hit.d.ts.map +1 -0
  773. package/dist/player/take-hit.js +99 -0
  774. package/dist/player/take-hit.js.map +1 -0
  775. package/dist/player/timed.d.ts +205 -0
  776. package/dist/player/timed.d.ts.map +1 -0
  777. package/dist/player/timed.js +310 -0
  778. package/dist/player/timed.js.map +1 -0
  779. package/dist/player/types.d.ts +390 -0
  780. package/dist/player/types.d.ts.map +1 -0
  781. package/dist/player/types.js +51 -0
  782. package/dist/player/types.js.map +1 -0
  783. package/dist/rational.d.ts +99 -0
  784. package/dist/rational.d.ts.map +1 -0
  785. package/dist/rational.js +345 -0
  786. package/dist/rational.js.map +1 -0
  787. package/dist/rng.d.ts +168 -0
  788. package/dist/rng.d.ts.map +1 -0
  789. package/dist/rng.js +404 -0
  790. package/dist/rng.js.map +1 -0
  791. package/dist/save/buffer.d.ts +120 -0
  792. package/dist/save/buffer.d.ts.map +1 -0
  793. package/dist/save/buffer.js +238 -0
  794. package/dist/save/buffer.js.map +1 -0
  795. package/dist/save/compress.d.ts +79 -0
  796. package/dist/save/compress.d.ts.map +1 -0
  797. package/dist/save/compress.js +97 -0
  798. package/dist/save/compress.js.map +1 -0
  799. package/dist/save/description.d.ts +61 -0
  800. package/dist/save/description.d.ts.map +1 -0
  801. package/dist/save/description.js +51 -0
  802. package/dist/save/description.js.map +1 -0
  803. package/dist/save/integrity.d.ts +59 -0
  804. package/dist/save/integrity.d.ts.map +1 -0
  805. package/dist/save/integrity.js +103 -0
  806. package/dist/save/integrity.js.map +1 -0
  807. package/dist/score/display.d.ts +40 -0
  808. package/dist/score/display.d.ts.map +1 -0
  809. package/dist/score/display.js +86 -0
  810. package/dist/score/display.js.map +1 -0
  811. package/dist/score/score.d.ts +166 -0
  812. package/dist/score/score.d.ts.map +1 -0
  813. package/dist/score/score.js +244 -0
  814. package/dist/score/score.js.map +1 -0
  815. package/dist/score/types.d.ts +98 -0
  816. package/dist/score/types.d.ts.map +1 -0
  817. package/dist/score/types.js +27 -0
  818. package/dist/score/types.js.map +1 -0
  819. package/dist/session/boot.d.ts +207 -0
  820. package/dist/session/boot.d.ts.map +1 -0
  821. package/dist/session/boot.js +151 -0
  822. package/dist/session/boot.js.map +1 -0
  823. package/dist/session/game.d.ts +257 -0
  824. package/dist/session/game.d.ts.map +1 -0
  825. package/dist/session/game.js +2880 -0
  826. package/dist/session/game.js.map +1 -0
  827. package/dist/session/save.d.ts +847 -0
  828. package/dist/session/save.d.ts.map +1 -0
  829. package/dist/session/save.js +1306 -0
  830. package/dist/session/save.js.map +1 -0
  831. package/dist/sound/engine.d.ts +146 -0
  832. package/dist/sound/engine.d.ts.map +1 -0
  833. package/dist/sound/engine.js +332 -0
  834. package/dist/sound/engine.js.map +1 -0
  835. package/dist/sound/index.d.ts +13 -0
  836. package/dist/sound/index.d.ts.map +1 -0
  837. package/dist/sound/index.js +13 -0
  838. package/dist/sound/index.js.map +1 -0
  839. package/dist/sound/sound-prefs-data.d.ts +10 -0
  840. package/dist/sound/sound-prefs-data.d.ts.map +1 -0
  841. package/dist/sound/sound-prefs-data.js +165 -0
  842. package/dist/sound/sound-prefs-data.js.map +1 -0
  843. package/dist/sound/types.d.ts +64 -0
  844. package/dist/sound/types.d.ts.map +1 -0
  845. package/dist/sound/types.js +23 -0
  846. package/dist/sound/types.js.map +1 -0
  847. package/dist/store/bind.d.ts +43 -0
  848. package/dist/store/bind.d.ts.map +1 -0
  849. package/dist/store/bind.js +130 -0
  850. package/dist/store/bind.js.map +1 -0
  851. package/dist/store/price.d.ts +27 -0
  852. package/dist/store/price.d.ts.map +1 -0
  853. package/dist/store/price.js +81 -0
  854. package/dist/store/price.js.map +1 -0
  855. package/dist/store/store-cmd.d.ts +51 -0
  856. package/dist/store/store-cmd.d.ts.map +1 -0
  857. package/dist/store/store-cmd.js +73 -0
  858. package/dist/store/store-cmd.js.map +1 -0
  859. package/dist/store/store.d.ts +156 -0
  860. package/dist/store/store.d.ts.map +1 -0
  861. package/dist/store/store.js +616 -0
  862. package/dist/store/store.js.map +1 -0
  863. package/dist/store/transact.d.ts +198 -0
  864. package/dist/store/transact.d.ts.map +1 -0
  865. package/dist/store/transact.js +383 -0
  866. package/dist/store/transact.js.map +1 -0
  867. package/dist/store/types.d.ts +101 -0
  868. package/dist/store/types.d.ts.map +1 -0
  869. package/dist/store/types.js +14 -0
  870. package/dist/store/types.js.map +1 -0
  871. package/dist/version.d.ts +25 -0
  872. package/dist/version.d.ts.map +1 -0
  873. package/dist/version.js +25 -0
  874. package/dist/version.js.map +1 -0
  875. package/dist/visuals/engine.d.ts +223 -0
  876. package/dist/visuals/engine.d.ts.map +1 -0
  877. package/dist/visuals/engine.js +357 -0
  878. package/dist/visuals/engine.js.map +1 -0
  879. package/dist/visuals/glyph-table.d.ts +112 -0
  880. package/dist/visuals/glyph-table.d.ts.map +1 -0
  881. package/dist/visuals/glyph-table.js +156 -0
  882. package/dist/visuals/glyph-table.js.map +1 -0
  883. package/dist/visuals/grafmode-data.d.ts +4 -0
  884. package/dist/visuals/grafmode-data.d.ts.map +1 -0
  885. package/dist/visuals/grafmode-data.js +88 -0
  886. package/dist/visuals/grafmode-data.js.map +1 -0
  887. package/dist/visuals/grafmode.d.ts +83 -0
  888. package/dist/visuals/grafmode.d.ts.map +1 -0
  889. package/dist/visuals/grafmode.js +82 -0
  890. package/dist/visuals/grafmode.js.map +1 -0
  891. package/dist/visuals/index.d.ts +19 -0
  892. package/dist/visuals/index.d.ts.map +1 -0
  893. package/dist/visuals/index.js +19 -0
  894. package/dist/visuals/index.js.map +1 -0
  895. package/dist/visuals/map-text.d.ts +79 -0
  896. package/dist/visuals/map-text.d.ts.map +1 -0
  897. package/dist/visuals/map-text.js +122 -0
  898. package/dist/visuals/map-text.js.map +1 -0
  899. package/dist/visuals/pref-expr.d.ts +56 -0
  900. package/dist/visuals/pref-expr.d.ts.map +1 -0
  901. package/dist/visuals/pref-expr.js +173 -0
  902. package/dist/visuals/pref-expr.js.map +1 -0
  903. package/dist/visuals/prefs.d.ts +280 -0
  904. package/dist/visuals/prefs.d.ts.map +1 -0
  905. package/dist/visuals/prefs.js +835 -0
  906. package/dist/visuals/prefs.js.map +1 -0
  907. package/dist/visuals/tile-prefs.d.ts +132 -0
  908. package/dist/visuals/tile-prefs.d.ts.map +1 -0
  909. package/dist/visuals/tile-prefs.js +105 -0
  910. package/dist/visuals/tile-prefs.js.map +1 -0
  911. package/dist/world/chunk.d.ts +195 -0
  912. package/dist/world/chunk.d.ts.map +1 -0
  913. package/dist/world/chunk.js +422 -0
  914. package/dist/world/chunk.js.map +1 -0
  915. package/dist/world/feature.d.ts +86 -0
  916. package/dist/world/feature.d.ts.map +1 -0
  917. package/dist/world/feature.js +153 -0
  918. package/dist/world/feature.js.map +1 -0
  919. package/dist/world/flow.d.ts +33 -0
  920. package/dist/world/flow.d.ts.map +1 -0
  921. package/dist/world/flow.js +115 -0
  922. package/dist/world/flow.js.map +1 -0
  923. package/dist/world/project.d.ts +176 -0
  924. package/dist/world/project.d.ts.map +1 -0
  925. package/dist/world/project.js +543 -0
  926. package/dist/world/project.js.map +1 -0
  927. package/dist/world/projection.d.ts +100 -0
  928. package/dist/world/projection.d.ts.map +1 -0
  929. package/dist/world/projection.js +152 -0
  930. package/dist/world/projection.js.map +1 -0
  931. package/dist/world/scatter.d.ts +25 -0
  932. package/dist/world/scatter.d.ts.map +1 -0
  933. package/dist/world/scatter.js +54 -0
  934. package/dist/world/scatter.js.map +1 -0
  935. package/dist/world/trap.d.ts +84 -0
  936. package/dist/world/trap.d.ts.map +1 -0
  937. package/dist/world/trap.js +106 -0
  938. package/dist/world/trap.js.map +1 -0
  939. package/dist/world/view.d.ts +60 -0
  940. package/dist/world/view.d.ts.map +1 -0
  941. package/dist/world/view.js +436 -0
  942. package/dist/world/view.js.map +1 -0
  943. package/dist/z-queue.d.ts +133 -0
  944. package/dist/z-queue.d.ts.map +1 -0
  945. package/dist/z-queue.js +283 -0
  946. package/dist/z-queue.js.map +1 -0
  947. package/package.json +75 -0
  948. package/src/agent/act.ts +114 -0
  949. package/src/agent/controller.ts +109 -0
  950. package/src/agent/events.ts +47 -0
  951. package/src/agent/index.ts +36 -0
  952. package/src/agent/perceive.ts +440 -0
  953. package/src/agent/types.ts +464 -0
  954. package/src/bitflag.ts +536 -0
  955. package/src/cmd.ts +547 -0
  956. package/src/color.ts +267 -0
  957. package/src/combat/brand-slay.ts +360 -0
  958. package/src/combat/hit.ts +471 -0
  959. package/src/combat/index.ts +15 -0
  960. package/src/combat/melee.ts +728 -0
  961. package/src/combat/mon-melee.ts +1153 -0
  962. package/src/combat/ranged.ts +397 -0
  963. package/src/constants.ts +324 -0
  964. package/src/dice.ts +467 -0
  965. package/src/effects/effect-choice.ts +32 -0
  966. package/src/effects/effect-info.ts +859 -0
  967. package/src/effects/effect.ts +560 -0
  968. package/src/effects/handlers.ts +452 -0
  969. package/src/effects/interpreter.ts +603 -0
  970. package/src/events.ts +317 -0
  971. package/src/expression.ts +360 -0
  972. package/src/game/cave-cmd.ts +1147 -0
  973. package/src/game/char-sheet.ts +557 -0
  974. package/src/game/chest.ts +348 -0
  975. package/src/game/context.ts +1218 -0
  976. package/src/game/curse-tick.ts +130 -0
  977. package/src/game/describe.ts +62 -0
  978. package/src/game/display.ts +838 -0
  979. package/src/game/dump-level.ts +114 -0
  980. package/src/game/effect-attack.ts +746 -0
  981. package/src/game/effect-detect.ts +542 -0
  982. package/src/game/effect-env.ts +252 -0
  983. package/src/game/effect-game-env.ts +86 -0
  984. package/src/game/effect-general.ts +1122 -0
  985. package/src/game/effect-item.ts +999 -0
  986. package/src/game/effect-melee.ts +557 -0
  987. package/src/game/effect-mon-origin.ts +196 -0
  988. package/src/game/effect-monster.ts +310 -0
  989. package/src/game/effect-summon.ts +161 -0
  990. package/src/game/effect-teleport.ts +645 -0
  991. package/src/game/effect-terrain.ts +881 -0
  992. package/src/game/energy.ts +61 -0
  993. package/src/game/equip-cmp.ts +476 -0
  994. package/src/game/floor.ts +524 -0
  995. package/src/game/gear.ts +1352 -0
  996. package/src/game/harness.ts +270 -0
  997. package/src/game/history.ts +78 -0
  998. package/src/game/ignore-cmd.ts +68 -0
  999. package/src/game/inscription-confirm.ts +115 -0
  1000. package/src/game/known.ts +960 -0
  1001. package/src/game/loop.ts +671 -0
  1002. package/src/game/lore-color.ts +108 -0
  1003. package/src/game/mon-cast.ts +409 -0
  1004. package/src/game/mon-cmd.ts +767 -0
  1005. package/src/game/mon-death.ts +459 -0
  1006. package/src/game/mon-group.ts +368 -0
  1007. package/src/game/mon-list.ts +213 -0
  1008. package/src/game/mon-message.ts +359 -0
  1009. package/src/game/mon-place.ts +1012 -0
  1010. package/src/game/mon-ranged.ts +405 -0
  1011. package/src/game/mon-shape.ts +161 -0
  1012. package/src/game/mon-side.ts +511 -0
  1013. package/src/game/monster-turn.ts +1750 -0
  1014. package/src/game/obj-cmd.ts +1970 -0
  1015. package/src/game/obj-list.ts +302 -0
  1016. package/src/game/object-inspect.ts +162 -0
  1017. package/src/game/pickup.ts +483 -0
  1018. package/src/game/player-path.ts +1434 -0
  1019. package/src/game/player-side.ts +555 -0
  1020. package/src/game/player-turn.ts +852 -0
  1021. package/src/game/project-cast.ts +766 -0
  1022. package/src/game/project-feat.ts +386 -0
  1023. package/src/game/project-monster.ts +407 -0
  1024. package/src/game/project-obj.ts +298 -0
  1025. package/src/game/project-player.ts +236 -0
  1026. package/src/game/quest.ts +248 -0
  1027. package/src/game/ranged-cmd.ts +417 -0
  1028. package/src/game/scheduler.ts +150 -0
  1029. package/src/game/spell-cmd.ts +404 -0
  1030. package/src/game/spoil.ts +562 -0
  1031. package/src/game/steal.ts +169 -0
  1032. package/src/game/take-hit-hooks.ts +152 -0
  1033. package/src/game/target-loop.ts +501 -0
  1034. package/src/game/target.ts +424 -0
  1035. package/src/game/thrust.ts +174 -0
  1036. package/src/game/trap.ts +791 -0
  1037. package/src/game/ui-entry.ts +2075 -0
  1038. package/src/game/wizard.ts +1760 -0
  1039. package/src/game/world.ts +786 -0
  1040. package/src/gen/cave.ts +2858 -0
  1041. package/src/gen/gen-monster.ts +592 -0
  1042. package/src/gen/generate.ts +523 -0
  1043. package/src/gen/room.ts +2213 -0
  1044. package/src/gen/util.ts +1958 -0
  1045. package/src/generated/dun-profiles.ts +30 -0
  1046. package/src/generated/effects.ts +241 -0
  1047. package/src/generated/elements.ts +62 -0
  1048. package/src/generated/equip-slots.ts +36 -0
  1049. package/src/generated/history-types.ts +34 -0
  1050. package/src/generated/ignore-types.ts +66 -0
  1051. package/src/generated/index.ts +33 -0
  1052. package/src/generated/kind-flags.ts +44 -0
  1053. package/src/generated/message.ts +320 -0
  1054. package/src/generated/mon-message.ts +138 -0
  1055. package/src/generated/mon-race-flags.ts +182 -0
  1056. package/src/generated/mon-spells.ts +198 -0
  1057. package/src/generated/mon-temp-flags.ts +34 -0
  1058. package/src/generated/mon-timed.ts +34 -0
  1059. package/src/generated/object-flags.ts +95 -0
  1060. package/src/generated/object-modifiers.ts +43 -0
  1061. package/src/generated/options.ts +104 -0
  1062. package/src/generated/origins.ts +64 -0
  1063. package/src/generated/parser-errors.ts +140 -0
  1064. package/src/generated/player-flags.ts +48 -0
  1065. package/src/generated/player-timed.ts +118 -0
  1066. package/src/generated/projections.ts +103 -0
  1067. package/src/generated/randart-properties.ts +202 -0
  1068. package/src/generated/room-flags.ts +21 -0
  1069. package/src/generated/rooms.ts +50 -0
  1070. package/src/generated/square-flags.ts +56 -0
  1071. package/src/generated/stats.ts +22 -0
  1072. package/src/generated/terrain-flags.ts +76 -0
  1073. package/src/generated/terrain.ts +62 -0
  1074. package/src/generated/trap-flags.ts +42 -0
  1075. package/src/generated/tvals.ts +84 -0
  1076. package/src/generated/ui-entry-renderers.ts +24 -0
  1077. package/src/guard.ts +70 -0
  1078. package/src/host/args.ts +334 -0
  1079. package/src/host/bridge.ts +193 -0
  1080. package/src/host/index.ts +18 -0
  1081. package/src/host/io.ts +239 -0
  1082. package/src/host/memory.ts +134 -0
  1083. package/src/host/raw.ts +190 -0
  1084. package/src/index.ts +250 -0
  1085. package/src/loc.ts +157 -0
  1086. package/src/mod/hooks.ts +278 -0
  1087. package/src/mod/ids.ts +390 -0
  1088. package/src/mod/registry-host.ts +258 -0
  1089. package/src/mod/save-blocks.ts +787 -0
  1090. package/src/mod/vocabulary.ts +0 -0
  1091. package/src/mon/bind.ts +899 -0
  1092. package/src/mon/desc.ts +212 -0
  1093. package/src/mon/knowledge-groups.ts +164 -0
  1094. package/src/mon/lore-describe.ts +1414 -0
  1095. package/src/mon/lore.ts +306 -0
  1096. package/src/mon/make.ts +422 -0
  1097. package/src/mon/monster.ts +161 -0
  1098. package/src/mon/predicate.ts +220 -0
  1099. package/src/mon/project-mon.ts +855 -0
  1100. package/src/mon/spell.ts +418 -0
  1101. package/src/mon/steal.ts +246 -0
  1102. package/src/mon/summon.ts +145 -0
  1103. package/src/mon/take-hit.ts +195 -0
  1104. package/src/mon/timed.ts +300 -0
  1105. package/src/mon/types.ts +286 -0
  1106. package/src/msg.ts +146 -0
  1107. package/src/obj/artifact-fake.ts +63 -0
  1108. package/src/obj/artifact-known.ts +69 -0
  1109. package/src/obj/bind.ts +1345 -0
  1110. package/src/obj/chest.ts +249 -0
  1111. package/src/obj/desc.ts +699 -0
  1112. package/src/obj/effects-info.ts +349 -0
  1113. package/src/obj/flavor.ts +256 -0
  1114. package/src/obj/ignore.ts +387 -0
  1115. package/src/obj/knowledge.ts +1577 -0
  1116. package/src/obj/known-object.ts +718 -0
  1117. package/src/obj/make.ts +1367 -0
  1118. package/src/obj/object-info.ts +1737 -0
  1119. package/src/obj/object.ts +1296 -0
  1120. package/src/obj/power.ts +674 -0
  1121. package/src/obj/randart-build.ts +1705 -0
  1122. package/src/obj/randart-data.ts +1344 -0
  1123. package/src/obj/randart.ts +552 -0
  1124. package/src/obj/randname.ts +128 -0
  1125. package/src/obj/recharge.ts +62 -0
  1126. package/src/obj/types.ts +559 -0
  1127. package/src/obj/value.ts +215 -0
  1128. package/src/player/abilities.ts +142 -0
  1129. package/src/player/best-digger.ts +118 -0
  1130. package/src/player/bind.ts +1021 -0
  1131. package/src/player/birth.ts +794 -0
  1132. package/src/player/calcs.ts +1522 -0
  1133. package/src/player/combat-regen.ts +33 -0
  1134. package/src/player/exp.ts +275 -0
  1135. package/src/player/history.ts +211 -0
  1136. package/src/player/options.ts +244 -0
  1137. package/src/player/player.ts +356 -0
  1138. package/src/player/shape-lore.ts +250 -0
  1139. package/src/player/spell.ts +627 -0
  1140. package/src/player/take-hit.ts +173 -0
  1141. package/src/player/timed.ts +482 -0
  1142. package/src/player/types.ts +415 -0
  1143. package/src/rational.ts +388 -0
  1144. package/src/rng.ts +476 -0
  1145. package/src/save/buffer.ts +287 -0
  1146. package/src/save/compress.ts +132 -0
  1147. package/src/save/description.ts +70 -0
  1148. package/src/save/integrity.ts +133 -0
  1149. package/src/score/display.ts +125 -0
  1150. package/src/score/score.ts +341 -0
  1151. package/src/score/types.ts +104 -0
  1152. package/src/session/boot.ts +338 -0
  1153. package/src/session/game.ts +3712 -0
  1154. package/src/session/save.ts +2074 -0
  1155. package/src/sound/engine.ts +375 -0
  1156. package/src/sound/index.ts +13 -0
  1157. package/src/sound/sound-prefs-data.ts +173 -0
  1158. package/src/sound/types.ts +68 -0
  1159. package/src/store/bind.ts +145 -0
  1160. package/src/store/price.ts +97 -0
  1161. package/src/store/store-cmd.ts +73 -0
  1162. package/src/store/store.ts +723 -0
  1163. package/src/store/transact.ts +644 -0
  1164. package/src/store/types.ts +110 -0
  1165. package/src/version.ts +26 -0
  1166. package/src/visuals/engine.ts +444 -0
  1167. package/src/visuals/glyph-table.ts +191 -0
  1168. package/src/visuals/grafmode-data.ts +90 -0
  1169. package/src/visuals/grafmode.ts +123 -0
  1170. package/src/visuals/index.ts +19 -0
  1171. package/src/visuals/map-text.ts +152 -0
  1172. package/src/visuals/pref-expr.ts +182 -0
  1173. package/src/visuals/prefs.ts +981 -0
  1174. package/src/visuals/tile-prefs.ts +183 -0
  1175. package/src/world/chunk.ts +531 -0
  1176. package/src/world/feature.ts +215 -0
  1177. package/src/world/flow.ts +128 -0
  1178. package/src/world/project.ts +687 -0
  1179. package/src/world/projection.ts +228 -0
  1180. package/src/world/scatter.ts +72 -0
  1181. package/src/world/trap.ts +155 -0
  1182. package/src/world/view.ts +513 -0
  1183. package/src/z-queue.ts +300 -0
@@ -0,0 +1,789 @@
1
+ /**
2
+ * The item-targeting effect handlers, ported from
3
+ * reference/src/effect-handler-general.c (Angband 4.2.6): EF_ENCHANT (L2095
4
+ * with enchant_spell / enchant / enchant_score, L255), EF_RECHARGE (L2127
5
+ * with recharge_failure_chance, effects.c L563), EF_REMOVE_CURSE (L1051 with
6
+ * uncurse_object, L179), EF_BRAND_WEAPON / EF_BRAND_AMMO / EF_BRAND_BOLTS
7
+ * (L3233 with brand_object, L427), EF_CURSE_ARMOR / EF_CURSE_WEAPON (L3103),
8
+ * EF_CREATE_ARROWS (L3315) and EF_TAP_DEVICE (L3370).
9
+ *
10
+ * These effects target an object the player chooses (upstream get_item /
11
+ * cmd_get_item "tgtitem"). The chooser is the injected
12
+ * ItemEffectEnv.getItem seam (the item menu rides presentation, #25); absent,
13
+ * the choosing handlers return false unused - exactly the upstream cancel
14
+ * path, so the scroll or spell is not consumed.
15
+ *
16
+ * Simplifications, ledgered in parity/ledger/game-effect-item.yaml:
17
+ * ODESC descriptions ride the display layer (the kind's base name is used);
18
+ * obj->known sync rides rune-based knowledge; EF_IDENTIFY needs the
19
+ * per-object rune enumeration (object_learn_unknown_rune) and rides the
20
+ * knowledge/detection batch (#24).
21
+ */
22
+ import { EF, OF, ORIGIN, TMD, TV } from "../generated/index.js";
23
+ import { ENCH_TOAC, ENCH_TOBOTH, ENCH_TODAM, ENCH_TOHIT, } from "../effects/effect.js";
24
+ import { effectCalculateValue } from "../effects/interpreter.js";
25
+ import { appendObjectCurse, removeObjectCurse, tvalCanHaveCharges, tvalIsAmmo, tvalIsArmor, tvalIsBolt, tvalIsStaff, tvalIsWand, tvalIsWeapon, } from "../obj/object.js";
26
+ import { buildRuneList, objectLearnUnknownRune, objectRunesKnown, playerLearnFlagRune, } from "../obj/knowledge.js";
27
+ import { ODESC } from "../obj/desc.js";
28
+ import { describeObject } from "./describe.js";
29
+ import { updatePlayerObjectKnowledge } from "./known.js";
30
+ import { egoApplyMagic, makeObject } from "../obj/make.js";
31
+ import { gearObjectForUse } from "./gear.js";
32
+ import { dropNear, floorExcise } from "./floor.js";
33
+ import { gameEnv } from "./effect-game-env.js";
34
+ /**
35
+ * enchant_spell's get_item request (effect-handler-general.c L383): a weapon,
36
+ * or armour when the enchant targets AC only. Shared by the ENCHANT handler
37
+ * (enchantSpell) and the shell probe (requestForEffect) so the tval filter can
38
+ * never drift between them.
39
+ */
40
+ function enchantRequest(numAc) {
41
+ return {
42
+ prompt: "Enchant which item? ",
43
+ reject: "You have nothing to enchant.",
44
+ tester: numAc
45
+ ? (o) => tvalIsArmor(o.tval)
46
+ : (o) => tvalIsWeapon(o.tval),
47
+ mode: { equip: true, inven: true, quiver: true, floor: true },
48
+ };
49
+ }
50
+ /** item_tester_uncursable (obj-util.c): a removable (power in (0,100)) curse. */
51
+ function uncursableTester(o) {
52
+ return !!o.curses?.some((c, i) => i > 0 && c.power > 0 && c.power < 100);
53
+ }
54
+ /**
55
+ * requestForEffect (single source of truth): the ItemRequest a choosing handler
56
+ * uses for a given EF code and decoded subtype. Both each handler and the pure
57
+ * shell probe (itemTargetRequest) read it, so the prompt / reject / tval filter
58
+ * / item modes never drift. Returns null for non-choosing effects and for the
59
+ * auto-target ones (BRAND_WEAPON / CURSE_ARMOR / CURSE_WEAPON / ACQUIRE).
60
+ */
61
+ export function requestForEffect(code, subtype, state) {
62
+ switch (code) {
63
+ case EF.ENCHANT:
64
+ /* enchant_spell L383: filter = num_ac ? armour : weapon. The first
65
+ * getItem targets a weapon unless the effect is AC-only. */
66
+ return enchantRequest((subtype & (ENCH_TOHIT | ENCH_TODAM)) === 0 ? 1 : 0);
67
+ case EF.RECHARGE:
68
+ return {
69
+ prompt: "Recharge which item? ",
70
+ reject: "You have nothing to recharge.",
71
+ tester: (o) => tvalCanHaveCharges(o.tval),
72
+ mode: { inven: true, floor: true },
73
+ };
74
+ case EF.REMOVE_CURSE:
75
+ return {
76
+ prompt: "Uncurse which item? ",
77
+ reject: "You have no curses to remove.",
78
+ tester: uncursableTester,
79
+ mode: { equip: true, inven: true, quiver: true, floor: true },
80
+ curses: true,
81
+ };
82
+ case EF.BRAND_AMMO:
83
+ return {
84
+ prompt: "Brand which kind of ammunition? ",
85
+ reject: "You have nothing to brand.",
86
+ tester: (o) => tvalIsAmmo(o.tval),
87
+ mode: { inven: true, quiver: true, floor: true },
88
+ };
89
+ case EF.BRAND_BOLTS:
90
+ return {
91
+ prompt: "Brand which bolts? ",
92
+ reject: "You have no bolts to brand.",
93
+ tester: (o) => tvalIsBolt(o.tval),
94
+ mode: { inven: true, quiver: true, floor: true },
95
+ };
96
+ case EF.CREATE_ARROWS:
97
+ return {
98
+ prompt: "Make arrows from which staff? ",
99
+ reject: "You have no staff to use.",
100
+ tester: (o) => tvalIsStaff(o.tval),
101
+ mode: { inven: true, floor: true },
102
+ };
103
+ case EF.TAP_DEVICE:
104
+ return {
105
+ prompt: "Drain charges from which item? ",
106
+ reject: "You have nothing to drain charges from.",
107
+ tester: (o) => tvalCanHaveCharges(o.tval),
108
+ mode: { inven: true, floor: true },
109
+ };
110
+ case EF.IDENTIFY: {
111
+ /* item_tester_unknown (L247): not all runes known. */
112
+ const runes = buildRuneList(state.runeEnv);
113
+ const player = state.actor.player;
114
+ return {
115
+ prompt: "Identify which item? ",
116
+ reject: "You have nothing to identify.",
117
+ tester: (o) => !objectRunesKnown(player, state.runeEnv, o, runes),
118
+ mode: { equip: true, inven: true, quiver: true, floor: true },
119
+ };
120
+ }
121
+ default:
122
+ return null;
123
+ }
124
+ }
125
+ /**
126
+ * itemTargetRequest (the RNG-free shell probe): walk a built effect chain and
127
+ * return the ItemRequest the first item-choosing handler will use, decoding
128
+ * subtype exactly as the handler does. The shell calls this before running the
129
+ * effect so it can pre-resolve the target and the effect runs EXACTLY ONCE
130
+ * (preserving the pre-getItem RNG draw order); chain construction draws no RNG.
131
+ * Returns null for objects / spells with no item-target effect.
132
+ */
133
+ export function itemTargetRequest(chain, state) {
134
+ for (let e = chain; e; e = e.next) {
135
+ if (typeof e.index !== "number")
136
+ continue;
137
+ const req = requestForEffect(e.index, e.subtype, state);
138
+ if (req)
139
+ return req;
140
+ }
141
+ return null;
142
+ }
143
+ /**
144
+ * The dice_string format built inline in effect_handler_REMOVE_CURSE
145
+ * (effect-handler-general.c L1071-1085), from the effect's un-rolled dice
146
+ * spec (base/dice/sides). Pure: does not draw the RNG (mirrors
147
+ * Dice.randomValue(), not Dice.roll()).
148
+ */
149
+ function formatUncurseDiceString(v) {
150
+ if (v.dice === 1 && v.base)
151
+ return `${v.base}+d${v.sides}`;
152
+ if (v.dice && v.base)
153
+ return `${v.base}+${v.dice}d${v.sides}`;
154
+ if (v.dice === 1)
155
+ return `d${v.sides}`;
156
+ if (v.dice)
157
+ return `${v.dice}d${v.sides}`;
158
+ return `${v.base}`;
159
+ }
160
+ /**
161
+ * The curse-removal picker's header needs the spell's "strength" dice
162
+ * formula (ui-curse.c curse_menu's `dice_string` parameter) BEFORE the effect
163
+ * runs, so the shell can show "Remove which curse (spell strength <dice>)?"
164
+ * while still pre-resolving the item/curse pick (preserving RNG order). This
165
+ * walks the already-built chain to the REMOVE_CURSE node and formats its raw
166
+ * (un-rolled) dice spec - a pure read, no RNG draw. Returns null when the
167
+ * chain has no REMOVE_CURSE effect.
168
+ */
169
+ export function removeCurseDiceString(chain) {
170
+ for (let e = chain; e; e = e.next) {
171
+ if (e.index !== EF.REMOVE_CURSE)
172
+ continue;
173
+ const rv = e.dice ? e.dice.randomValue() : { base: 0, dice: 0, sides: 0, mBonus: 0 };
174
+ return formatUncurseDiceString(rv);
175
+ }
176
+ return null;
177
+ }
178
+ /** msg() over the effect context's optional message sink. */
179
+ function say(ctx, text) {
180
+ ctx.env.messages?.msg(text);
181
+ }
182
+ /** object_is_carried: the object lives in the player's gear store. */
183
+ function objectIsCarried(state, obj) {
184
+ for (const o of state.gear.store.values()) {
185
+ if (o === obj)
186
+ return true;
187
+ }
188
+ return false;
189
+ }
190
+ /**
191
+ * Destroy one item of the stack, wherever it lives (the recharge backfire /
192
+ * staff consumption path: gear_object_for_use or floor_object_for_use plus
193
+ * object_delete).
194
+ */
195
+ function destroyOneItem(state, obj) {
196
+ for (const [handle, o] of state.gear.store) {
197
+ if (o === obj) {
198
+ gearObjectForUse(state.gear, state.actor.player, handle, 1);
199
+ return;
200
+ }
201
+ }
202
+ /* On the floor: shrink the stack, or excise the last one. */
203
+ for (const [key, pile] of state.floor) {
204
+ if (!pile.includes(obj))
205
+ continue;
206
+ if (obj.number > 1) {
207
+ obj.number--;
208
+ }
209
+ else {
210
+ const grid = {
211
+ x: key % state.chunk.width,
212
+ y: Math.trunc(key / state.chunk.width),
213
+ };
214
+ floorExcise(state, grid, obj);
215
+ }
216
+ return;
217
+ }
218
+ }
219
+ /* ------------------------------------------------------------------ *
220
+ * Enchantment (effect-handler-general.c L255)
221
+ * ------------------------------------------------------------------ */
222
+ /** Used by the enchant() function (chance of failure). */
223
+ const ENCHANT_TABLE = [
224
+ 0, 10, 20, 40, 80, 160, 280, 400, 550, 700, 800, 900, 950, 970, 990, 1000,
225
+ ];
226
+ /** enchant_score: try to increase one bonus score. */
227
+ function enchantScore(state, score, isArtifact) {
228
+ /* Artifacts resist enchantment half the time */
229
+ if (isArtifact && state.rng.randint0(100) < 50)
230
+ return { score, raised: false };
231
+ /* Figure out the chance to enchant */
232
+ let chance;
233
+ if (score < 0)
234
+ chance = 0;
235
+ else if (score > 15)
236
+ chance = 1000;
237
+ else
238
+ chance = ENCHANT_TABLE[score];
239
+ /* If we roll less-than-or-equal to chance, it fails */
240
+ if (state.rng.randint1(1000) <= chance)
241
+ return { score, raised: false };
242
+ return { score: score + 1, raised: true };
243
+ }
244
+ /**
245
+ * enchant (L319): try `n` times to raise the item's to-hit / to-dam / to-ac
246
+ * per `eflag`, with pile resistance (ammo is 20x easier) and the artifact
247
+ * resist. Returns true if any bonus was raised. The obj->known display sync
248
+ * rides rune knowledge.
249
+ */
250
+ export function enchant(state, obj, n, eflag) {
251
+ let res = false;
252
+ const isArtifact = !!obj.artifact;
253
+ /* Large piles resist enchantment */
254
+ let prob = obj.number * 100;
255
+ /* Missiles are easy to enchant */
256
+ if (tvalIsAmmo(obj.tval))
257
+ prob = Math.trunc(prob / 20);
258
+ /* Try "n" times */
259
+ for (let i = 0; i < n; i++) {
260
+ /* Roll for pile resistance */
261
+ if (prob > 100 && state.rng.randint0(prob) >= 100)
262
+ continue;
263
+ /* Try the three kinds of enchantment we can do */
264
+ /* enchant2 (effect-handler-general.c:294) */
265
+ if (eflag & ENCH_TOHIT) {
266
+ const r = enchantScore(state, obj.toH, isArtifact);
267
+ obj.toH = r.score;
268
+ if (r.raised)
269
+ res = true;
270
+ }
271
+ if (eflag & ENCH_TODAM) {
272
+ const r = enchantScore(state, obj.toD, isArtifact);
273
+ obj.toD = r.score;
274
+ if (r.raised)
275
+ res = true;
276
+ }
277
+ if (eflag & ENCH_TOAC) {
278
+ const r = enchantScore(state, obj.toA, isArtifact);
279
+ obj.toA = r.score;
280
+ if (r.raised)
281
+ res = true;
282
+ }
283
+ }
284
+ if (!res)
285
+ return false;
286
+ /* Recalculate bonuses (PU_BONUS | PU_INVEN) */
287
+ state.updateBonuses?.();
288
+ return true;
289
+ }
290
+ /**
291
+ * enchant_spell (L373): choose a weapon (or armour when num_ac) and enchant
292
+ * it. Returns true if attempted, false if cancelled.
293
+ */
294
+ function enchantSpell(ctx, env, numHit, numDam, numAc) {
295
+ const { state } = env;
296
+ const obj = env.item?.getItem?.(enchantRequest(numAc));
297
+ if (!obj)
298
+ return false;
299
+ /* Describe (ODESC_BASE, obj-desc gates the name by knowledge) */
300
+ const name = describeObject(state, obj, ODESC.BASE);
301
+ say(ctx, `${objectIsCarried(state, obj) ? "Your" : "The"} ${name} glow${obj.number > 1 ? "" : "s"} brightly!`);
302
+ /* Enchant */
303
+ let okay = false;
304
+ if (numDam && enchant(state, obj, numHit, ENCH_TOBOTH))
305
+ okay = true;
306
+ else if (enchant(state, obj, numHit, ENCH_TOHIT))
307
+ okay = true;
308
+ else if (enchant(state, obj, numDam, ENCH_TODAM))
309
+ okay = true;
310
+ if (enchant(state, obj, numAc, ENCH_TOAC))
311
+ okay = true;
312
+ /* Failure */
313
+ if (!okay)
314
+ say(ctx, "The enchantment failed.");
315
+ /* Something happened */
316
+ return true;
317
+ }
318
+ /**
319
+ * brand_object (L427): turn a non-magical object into the "of `name`" ego,
320
+ * with its aura message and a 4-6 round hit/dam enchant. Artifacts, egos
321
+ * and worthless items cannot be branded. player_know_object rides rune
322
+ * knowledge.
323
+ */
324
+ export function brandObject(ctx, env, obj, name) {
325
+ const { state } = env;
326
+ const egos = env.item?.reg?.egos;
327
+ if (obj && obj.kind.cost && !obj.artifact && !obj.ego && egos) {
328
+ /* Get the right ego type for the object */
329
+ const brand = `of ${name}`;
330
+ const ego = egos.find((e) => e.name === brand && e.possItems.has(obj.kind.kidx));
331
+ if (!ego) {
332
+ say(ctx, "The branding failed.");
333
+ return;
334
+ }
335
+ /* Describe (ODESC_BASE) */
336
+ say(ctx, `The ${describeObject(state, obj, ODESC.BASE)} ${obj.number > 1 ? "are" : "is"} surrounded with an aura of ${name}.`);
337
+ /* Make it an ego item */
338
+ obj.ego = ego;
339
+ if (env.item?.reg)
340
+ egoApplyMagic(state.rng, env.item.reg, obj, 0);
341
+ state.updateBonuses?.();
342
+ /* Enchant */
343
+ enchant(state, obj, state.rng.randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
344
+ }
345
+ else {
346
+ say(ctx, "The branding failed.");
347
+ }
348
+ }
349
+ /**
350
+ * recharge_failure_chance (effects.c L563): N for the 1-in-N backfire.
351
+ */
352
+ export function rechargeFailureChance(obj, strength) {
353
+ /* Ease of recharge ranges from 9 down to 4 (wands) or 3 (staffs) */
354
+ const easeOfRecharge = Math.trunc((100 - obj.kind.level) / 10);
355
+ const rawChance = strength + easeOfRecharge - 2 * Math.trunc(obj.pval / obj.number);
356
+ return rawChance > 1 ? rawChance : 1;
357
+ }
358
+ /* ------------------------------------------------------------------ *
359
+ * The handlers
360
+ * ------------------------------------------------------------------ */
361
+ /**
362
+ * EF_ENCHANT: enchant an item per the subtype's ENCH_ flags, `value` times.
363
+ */
364
+ const handleENCHANT = (ctx) => {
365
+ const env = gameEnv(ctx);
366
+ if (!env)
367
+ return true;
368
+ const value = env.state.rng.randcalc(ctx.value, env.state.chunk.depth, "randomise");
369
+ let used = false;
370
+ ctx.ident = true;
371
+ if ((ctx.subtype & ENCH_TOBOTH) === ENCH_TOBOTH) {
372
+ if (enchantSpell(ctx, env, value, value, 0))
373
+ used = true;
374
+ }
375
+ else if (ctx.subtype & ENCH_TOHIT) {
376
+ if (enchantSpell(ctx, env, value, 0, 0))
377
+ used = true;
378
+ }
379
+ else if (ctx.subtype & ENCH_TODAM) {
380
+ if (enchantSpell(ctx, env, 0, value, 0))
381
+ used = true;
382
+ }
383
+ if (ctx.subtype & ENCH_TOAC) {
384
+ if (enchantSpell(ctx, env, 0, 0, value))
385
+ used = true;
386
+ }
387
+ return used;
388
+ };
389
+ /**
390
+ * EF_RECHARGE: recharge a wand or staff; strength is value.base + the dice
391
+ * roll. High-level and highly-charged items are harder; a backfire destroys
392
+ * one item of the stack.
393
+ */
394
+ const handleRECHARGE = (ctx) => {
395
+ const env = gameEnv(ctx);
396
+ if (!env)
397
+ return true;
398
+ const { state } = env;
399
+ const strength = ctx.value.base + state.rng.damroll(ctx.value.dice, ctx.value.sides);
400
+ /* Immediately obvious */
401
+ ctx.ident = true;
402
+ /* The recharge_pow failure-rate display rides presentation (#25). */
403
+ /* Get an item */
404
+ const obj = env.item?.getItem?.(requestForEffect(EF.RECHARGE, 0, state));
405
+ if (!obj)
406
+ return false;
407
+ const i = rechargeFailureChance(obj, strength);
408
+ /* Back-fire */
409
+ if (i <= 1 || state.rng.oneIn(i)) {
410
+ say(ctx, "The recharge backfires!");
411
+ say(ctx, "There is a bright flash of light.");
412
+ destroyOneItem(state, obj);
413
+ }
414
+ else {
415
+ /* Extract a "power" */
416
+ const easeOfRecharge = Math.trunc((100 - obj.kind.level) / 10);
417
+ const t = Math.trunc(strength / (10 - easeOfRecharge)) + 1;
418
+ /* Recharge based on the power */
419
+ if (t > 0)
420
+ obj.pval += 2 + state.rng.randint1(t);
421
+ }
422
+ /* Something was done */
423
+ return true;
424
+ };
425
+ /**
426
+ * EF_REMOVE_CURSE: attempt to lift a curse from a chosen item
427
+ * (uncurse_object, L179). Success removes the curse; failure makes the item
428
+ * fragile, and a fragile item explodes one time in four.
429
+ */
430
+ const handleREMOVE_CURSE = (ctx) => {
431
+ const env = gameEnv(ctx);
432
+ if (!env)
433
+ return true;
434
+ const { state } = env;
435
+ const strength = effectCalculateValue(ctx, false);
436
+ ctx.ident = true;
437
+ /* item_tester_uncursable: at least one removable (power < 100) curse.
438
+ * Upstream tests the known twin; knowledge is rune-based here. */
439
+ const obj = env.item?.getItem?.(requestForEffect(EF.REMOVE_CURSE, 0, state));
440
+ if (!obj || !obj.curses)
441
+ return false;
442
+ /* get_curse: pick among the object's active curses. */
443
+ const active = [];
444
+ obj.curses.forEach((c, i) => {
445
+ if (i > 0 && c.power > 0)
446
+ active.push(i);
447
+ });
448
+ const pick = env.item?.chooseCurse
449
+ ? env.item.chooseCurse(obj, active)
450
+ : (active[0] ?? null);
451
+ if (pick === null || pick === undefined)
452
+ return false;
453
+ const curse = obj.curses[pick];
454
+ if (curse.power >= 100) {
455
+ /* Curse is permanent */
456
+ return false;
457
+ }
458
+ else if (strength >= curse.power) {
459
+ /* Successfully removed this curse (effect-handler-general.c:193-196). The
460
+ * SECOND call passes message = true, so success does announce which curse
461
+ * went: obj-curse.c:231 "The %s curse is removed!". The message rides
462
+ * remove_object_curse's own power > 0 branch, so a pick the object does not
463
+ * actually carry announces nothing - which is why the string moved out of
464
+ * this call site. */
465
+ const curseReg = env.item?.reg?.curses;
466
+ removeObjectCurse(obj, pick, true, curseReg ? { curses: curseReg, msg: (text) => say(ctx, text) } : undefined);
467
+ }
468
+ else if (!obj.flags.has(OF.FRAGILE)) {
469
+ /* Failure to remove, object is now fragile */
470
+ say(ctx, `The spell fails; your ${describeObject(state, obj, ODESC.FULL)} is now fragile.`);
471
+ obj.flags.on(OF.FRAGILE);
472
+ playerLearnFlagRune(state.actor.player, state.runeEnv, OF.FRAGILE);
473
+ }
474
+ else if (state.rng.oneIn(4)) {
475
+ /* Failure - unlucky fragile object is destroyed */
476
+ let dam = state.rng.damroll(5, 5);
477
+ const player = ctx.env.player;
478
+ if (player?.applyDamageReduction)
479
+ dam = player.applyDamageReduction(dam);
480
+ /* show_damage " (N)" suffix (effect-handler-general.c L212-216). */
481
+ const damText = dam > 0 && ctx.env.showDamage ? ` (${dam})` : "";
482
+ say(ctx, `There is a bang and a flash!${damText}`);
483
+ /* Artifacts are marked as lost (effect-handler-general.c L220-222). */
484
+ if (obj.artifact)
485
+ state.onArtifactLost?.(obj.artifact);
486
+ destroyOneItem(state, obj);
487
+ player?.takeHit?.(dam, "Failed uncursing");
488
+ }
489
+ else {
490
+ /* Non-destructive failure */
491
+ say(ctx, "The removal fails.");
492
+ }
493
+ /* Recalculate bonuses (PU_BONUS) */
494
+ state.updateBonuses?.();
495
+ return true;
496
+ };
497
+ /**
498
+ * EF_BRAND_WEAPON: brand the wielded weapon Flame or Frost.
499
+ */
500
+ const handleBRAND_WEAPON = (ctx) => {
501
+ const env = gameEnv(ctx);
502
+ if (!env)
503
+ return true;
504
+ const { state } = env;
505
+ const slot = state.actor.player.body.slots.findIndex((s) => s.type === "WEAPON");
506
+ const obj = slot >= 0 ? state.runeEnv.slotObject(slot) : null;
507
+ /* Select the brand */
508
+ const brand = state.rng.oneIn(2) ? "Flame" : "Frost";
509
+ /* Brand the weapon */
510
+ brandObject(ctx, env, obj, brand);
511
+ ctx.ident = true;
512
+ return true;
513
+ };
514
+ /**
515
+ * EF_BRAND_AMMO: brand some non-magical ammo Flame, Frost or Venom.
516
+ */
517
+ const handleBRAND_AMMO = (ctx) => {
518
+ const env = gameEnv(ctx);
519
+ if (!env)
520
+ return true;
521
+ const { state } = env;
522
+ /* Select the brand */
523
+ const brand = state.rng.oneIn(3)
524
+ ? "Flame"
525
+ : state.rng.oneIn(2)
526
+ ? "Frost"
527
+ : "Venom";
528
+ ctx.ident = true;
529
+ /* Get an item */
530
+ const obj = env.item?.getItem?.(requestForEffect(EF.BRAND_AMMO, 0, state));
531
+ if (!obj)
532
+ return false;
533
+ /* Brand the ammo */
534
+ brandObject(ctx, env, obj, brand);
535
+ return true;
536
+ };
537
+ /**
538
+ * EF_BRAND_BOLTS: brand some non-magical bolts Flame.
539
+ */
540
+ const handleBRAND_BOLTS = (ctx) => {
541
+ const env = gameEnv(ctx);
542
+ if (!env)
543
+ return true;
544
+ ctx.ident = true;
545
+ /* Get an item */
546
+ const obj = env.item?.getItem?.(requestForEffect(EF.BRAND_BOLTS, 0, env.state));
547
+ if (!obj)
548
+ return false;
549
+ /* Brand the bolts */
550
+ brandObject(ctx, env, obj, "Flame");
551
+ return true;
552
+ };
553
+ /** The shared CURSE_ARMOR / CURSE_WEAPON body. */
554
+ function curseWorn(ctx, env, slotType, hurt, what) {
555
+ const { state } = env;
556
+ const slot = state.actor.player.body.slots.findIndex((s) => s.type === slotType);
557
+ const obj = slot >= 0 ? state.runeEnv.slotObject(slot) : null;
558
+ /* Nothing to curse */
559
+ if (!obj)
560
+ return true;
561
+ const name = describeObject(state, obj, ODESC.FULL);
562
+ /* Attempt a saving throw for artifacts */
563
+ if (obj.artifact && state.rng.randint0(100) < 50) {
564
+ say(ctx, `A terrible black aura tries to surround your ${what}, but your ${name} resists the effects!`);
565
+ }
566
+ else {
567
+ const curses = env.item?.reg?.curses;
568
+ say(ctx, `A terrible black aura blasts your ${name}!`);
569
+ /* Take down bonus a wee bit */
570
+ hurt(obj);
571
+ /* Try to find enough appropriate curses */
572
+ if (curses) {
573
+ let num = state.rng.randint1(3);
574
+ let maxTries = 20;
575
+ while (num && maxTries) {
576
+ const pick = state.rng.randint1(curses.length - 1);
577
+ const power = 10 * state.rng.mBonus(9, state.chunk.depth);
578
+ if (!curses[pick]?.poss[obj.tval]) {
579
+ maxTries--;
580
+ continue;
581
+ }
582
+ appendObjectCurse(state.rng, obj, pick, power, curses);
583
+ num--;
584
+ }
585
+ }
586
+ /* Recalculate bonuses (PU_BONUS | PU_MANA); weight upkeep rides gear. */
587
+ state.updateBonuses?.();
588
+ }
589
+ ctx.ident = true;
590
+ return true;
591
+ }
592
+ /**
593
+ * EF_CURSE_ARMOR: a terrible black aura blasts the body armour.
594
+ */
595
+ const handleCURSE_ARMOR = (ctx) => {
596
+ const env = gameEnv(ctx);
597
+ if (!env)
598
+ return true;
599
+ return curseWorn(ctx, env, "BODY_ARMOR", (obj) => {
600
+ obj.toA -= env.state.rng.randint1(3);
601
+ }, "armor");
602
+ };
603
+ /**
604
+ * EF_CURSE_WEAPON: a terrible black aura blasts the wielded weapon.
605
+ */
606
+ const handleCURSE_WEAPON = (ctx) => {
607
+ const env = gameEnv(ctx);
608
+ if (!env)
609
+ return true;
610
+ return curseWorn(ctx, env, "WEAPON", (obj) => {
611
+ obj.toH = 0 - env.state.rng.randint1(3);
612
+ obj.toD = 0 - env.state.rng.randint1(3);
613
+ }, "weapon");
614
+ };
615
+ /**
616
+ * EF_CREATE_ARROWS: turn a staff into arrows (better staves make better
617
+ * arrows).
618
+ */
619
+ const handleCREATE_ARROWS = (ctx) => {
620
+ const env = gameEnv(ctx);
621
+ if (!env)
622
+ return true;
623
+ const { state } = env;
624
+ /* Get an item */
625
+ const obj = env.item?.getItem?.(requestForEffect(EF.CREATE_ARROWS, 0, state));
626
+ if (!obj)
627
+ return false;
628
+ /* Extract the object "level" */
629
+ const lev = obj.kind.level;
630
+ /* Roll for good */
631
+ let good = false;
632
+ let great = false;
633
+ if (state.rng.randint1(lev) > 25) {
634
+ good = true;
635
+ /* Roll for great */
636
+ if (state.rng.randint1(lev) > 50)
637
+ great = true;
638
+ }
639
+ /* Destroy the staff */
640
+ destroyOneItem(state, obj);
641
+ /* Make some arrows */
642
+ if (env.item?.makeDeps) {
643
+ const arrows = makeObject(state.rng, env.item.makeDeps, state.actor.player.lev, good, great, false, TV.ARROW, state.chunk.depth);
644
+ if (arrows)
645
+ dropNear(state, arrows, 0, state.actor.grid, true, true);
646
+ }
647
+ return true;
648
+ };
649
+ /**
650
+ * EF_TAP_DEVICE: drain a wand or staff's charges into mana.
651
+ */
652
+ const handleTAP_DEVICE = (ctx) => {
653
+ const env = gameEnv(ctx);
654
+ if (!env)
655
+ return true;
656
+ const { state } = env;
657
+ const p = state.actor.player;
658
+ let used = false;
659
+ /* Get an item */
660
+ const obj = env.item?.getItem?.(requestForEffect(EF.TAP_DEVICE, 0, state));
661
+ if (!obj)
662
+ return false;
663
+ /* Extract the object "level" and its energy. */
664
+ const lev = obj.kind.level;
665
+ let energy = 0;
666
+ let item = "";
667
+ if (tvalIsStaff(obj.tval)) {
668
+ energy = Math.trunc(((5 + lev) * 3 * obj.pval) / 2);
669
+ item = "staff";
670
+ }
671
+ else if (tvalIsWand(obj.tval)) {
672
+ energy = Math.trunc(((5 + lev) * 3 * obj.pval) / 2);
673
+ item = "wand";
674
+ }
675
+ /* Turn energy into mana. */
676
+ if (energy < 36) {
677
+ /* Require a reasonable amount of energy */
678
+ say(ctx, `That ${item} had no useable energy`);
679
+ }
680
+ else if (p.csp < p.msp) {
681
+ /* Drain the object. */
682
+ obj.pval = 0;
683
+ /* Increase mana. */
684
+ p.csp += Math.trunc(energy / 6);
685
+ p.cspFrac = 0;
686
+ if (p.csp > p.msp)
687
+ p.csp = p.msp;
688
+ say(ctx, "You feel your head clear.");
689
+ used = true;
690
+ const stun = state.rng.randint1(2);
691
+ ctx.env.player?.timed?.incTimed(TMD.STUN, stun, true, ctx.origin.what !== "player" || !ctx.aware, true);
692
+ }
693
+ else {
694
+ const cap = item.charAt(0).toUpperCase() + item.slice(1);
695
+ say(ctx, `Your mana was already at its maximum. ${cap} not drained.`);
696
+ }
697
+ return used;
698
+ };
699
+ /**
700
+ * EF_ACQUIRE: conjure `value` great objects out of thin air (acquirement,
701
+ * obj-make.c L1240).
702
+ */
703
+ const handleACQUIRE = (ctx) => {
704
+ const env = gameEnv(ctx);
705
+ if (!env)
706
+ return true;
707
+ const { state } = env;
708
+ let num = effectCalculateValue(ctx, false);
709
+ ctx.ident = true;
710
+ if (!env.item?.makeDeps)
711
+ return true;
712
+ while (num-- > 0) {
713
+ /* Make a good (or great) object (if possible) */
714
+ const nice = makeObject(state.rng, env.item.makeDeps, state.chunk.depth, true, true, true, 0, state.chunk.depth);
715
+ if (!nice)
716
+ continue;
717
+ nice.origin = ORIGIN.ACQUIRE;
718
+ nice.originDepth = state.chunk.depth;
719
+ /* Drop the object */
720
+ dropNear(state, nice, 0, state.actor.grid, true, false);
721
+ }
722
+ return true;
723
+ };
724
+ /**
725
+ * EF_IDENTIFY (effect-handler-general.c L1945): learn one random unknown
726
+ * rune of a chosen not-fully-known item (object_learn_unknown_rune over the
727
+ * rune list). Cancelling (or no chooser wired) leaves the effect unused.
728
+ */
729
+ const handleIDENTIFY = (ctx) => {
730
+ const env = gameEnv(ctx);
731
+ if (!env)
732
+ return true;
733
+ const { state } = env;
734
+ ctx.ident = true;
735
+ const runes = buildRuneList(state.runeEnv);
736
+ const player = state.actor.player;
737
+ /* Get an item (item_tester_unknown: not all runes known). */
738
+ const obj = env.item?.getItem?.(requestForEffect(EF.IDENTIFY, 0, state)) ?? null;
739
+ if (!obj)
740
+ return false;
741
+ /* Identify the object. When flavor knowledge is wired (in-play), learning the
742
+ * rune also fires player_know_object's object_flavor_aware side effect for
743
+ * this object (jewelry with all non-curse runes known / a special artifact). */
744
+ objectLearnUnknownRune(state.rng, player, state.runeEnv, obj, runes, env.flavor, env.flavorDeps);
745
+ /* player_learn_rune's update_player_object_knowledge tail-call (L1373): the
746
+ * learned rune may now complete another carried/floor jewel's runes, so sweep
747
+ * all of them for awareness + the "You have ... (a)." reveal (KN-03/KN-04). */
748
+ updatePlayerObjectKnowledge(state);
749
+ return true;
750
+ };
751
+ /** The item-targeting handlers, keyed by upstream EF code. */
752
+ const ITEM_HANDLERS = new Map([
753
+ [EF.ENCHANT, handleENCHANT],
754
+ /* effect_handler_RECHARGE (effect-handler-general.c:2127) */
755
+ [EF.RECHARGE, handleRECHARGE],
756
+ [EF.REMOVE_CURSE, handleREMOVE_CURSE],
757
+ /* effect_handler_BRAND_WEAPON (effect-handler-general.c:3233) */
758
+ [EF.BRAND_WEAPON, handleBRAND_WEAPON],
759
+ /* effect_handler_BRAND_AMMO (effect-handler-general.c:3251) */
760
+ [EF.BRAND_AMMO, handleBRAND_AMMO],
761
+ /* effect_handler_BRAND_BOLTS (effect-handler-general.c:3284) */
762
+ [EF.BRAND_BOLTS, handleBRAND_BOLTS],
763
+ /* effect_handler_CURSE_ARMOR (effect-handler-general.c:3103) */
764
+ [EF.CURSE_ARMOR, handleCURSE_ARMOR],
765
+ /* effect_handler_CURSE_WEAPON (effect-handler-general.c:3167) */
766
+ [EF.CURSE_WEAPON, handleCURSE_WEAPON],
767
+ /* effect_handler_CREATE_ARROWS (effect-handler-general.c:3315) */
768
+ [EF.CREATE_ARROWS, handleCREATE_ARROWS],
769
+ /* effect_handler_TAP_DEVICE (effect-handler-general.c:3370) */
770
+ [EF.TAP_DEVICE, handleTAP_DEVICE],
771
+ /* effect_handler_ACQUIRE (effect-handler-general.c:2194) */
772
+ [EF.ACQUIRE, handleACQUIRE],
773
+ /* effect_handler_IDENTIFY (effect-handler-general.c:1945) */
774
+ [EF.IDENTIFY, handleIDENTIFY],
775
+ ]);
776
+ /**
777
+ * Register the item-targeting handlers, overriding the stubs
778
+ * registerCoreHandlers installed. Call after registerCoreHandlers. Each
779
+ * handler reads its game environment from context.env.game (attach it with
780
+ * attachGameEnv) and no-ops when it is absent.
781
+ */
782
+ export function registerItemHandlers(registry) {
783
+ for (const [code, handler] of ITEM_HANDLERS) {
784
+ registry.register(code, { handler, status: "implemented" });
785
+ }
786
+ }
787
+ /** The item-targeting EF codes this module registers. */
788
+ export const ITEM_HANDLER_CODES = [...ITEM_HANDLERS.keys()];
789
+ //# sourceMappingURL=effect-item.js.map