@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,155 @@
1
+ /**
2
+ * Monster-spell substrate, ported from reference/src/mon-spell.c (Angband
3
+ * 4.2.6): the spell-type classification (the mon_spell_types table built from
4
+ * list-mon-spells.h), the spell-type predicates and masks, the spell-hit
5
+ * chance, and the breath-damage calculation. These are the pure computations
6
+ * over the bound spell / race data that both the spell executor (do_mon_spell,
7
+ * game/ layer) and the spell-selection AI (choose_attack_spell / remove_bad_
8
+ * spells, mon-attack.c) sit on; they do not touch the GameState, so they live
9
+ * here in mon/ below game/.
10
+ *
11
+ * The RST_ classification is generated as a string expression per spell
12
+ * (generated/mon-spells.ts keeps `type` as written, e.g. "RST_BREATH |
13
+ * RST_INNATE"); MON_SPELL_TYPES evaluates each once into a bitmask indexed by
14
+ * RSF value (index 0 is RSF_NONE, matching the enum), so the lookups mirror
15
+ * upstream's mon_spell_types[index] exactly.
16
+ *
17
+ * monSpellNonhpDamage (nonhp_dam, mon-spell.c L571) is the non-breath half of
18
+ * mon_spell_dam: the deterministic MAXIMISE sum of a spell's damaging effect
19
+ * dice, with each effect's SPELL_POWER expression (the only base value
20
+ * monster-spell damage dice reference) rebound to the calling race - upstream
21
+ * sets its global `ref_race` for the same duration. This is the seam the
22
+ * lore/recall layer (mon/lore-describe.ts) needed to wire mon_spell_lore_damage
23
+ * for real; breath damage keeps using breathDam below unchanged.
24
+ */
25
+ import { FlagSet } from "../bitflag.js";
26
+ import type { Rng } from "../rng.js";
27
+ import type { TimedFailLike } from "../obj/object.js";
28
+ import type { MonsterRace, MonsterSpell, MonsterSpellEffect } from "./types.js";
29
+ import type { Monster } from "./monster.js";
30
+ /**
31
+ * RST_ spell-type bitflags (mon-spell.h). RST_DAMAGE is the composite of the
32
+ * four damaging categories.
33
+ */
34
+ export declare const RST: {
35
+ readonly NONE: 0;
36
+ readonly BOLT: 1;
37
+ readonly BALL: 2;
38
+ readonly BREATH: 4;
39
+ readonly DIRECT: 8;
40
+ readonly ANNOY: 16;
41
+ readonly HASTE: 32;
42
+ readonly HEAL: 64;
43
+ readonly HEAL_OTHER: 128;
44
+ readonly TACTIC: 256;
45
+ readonly ESCAPE: 512;
46
+ readonly SUMMON: 1024;
47
+ readonly INNATE: 2048;
48
+ readonly ARCHERY: 4096;
49
+ };
50
+ /** #define RST_DAMAGE (RST_BOLT | RST_BALL | RST_BREATH | RST_DIRECT). */
51
+ export declare const RST_DAMAGE: number;
52
+ /** CONF_HIT_REDUCTION (mon-timed.h): accuracy loss per level of confusion. */
53
+ export declare const CONF_HIT_REDUCTION = 20;
54
+ /**
55
+ * The per-spell type bitmask, indexed by RSF value (mon_spell_types[]). Built
56
+ * once from the generated entries; index 0 (RSF_NONE) and the trailing MAX
57
+ * entry are 0.
58
+ */
59
+ export declare const MON_SPELL_TYPES: readonly number[];
60
+ /** mon_spell_is_valid: a real RSF_ spell index. */
61
+ export declare function monSpellIsValid(index: number): boolean;
62
+ /** monster_spell_is_breath. */
63
+ export declare function monSpellIsBreath(index: number): boolean;
64
+ /** mon_spell_has_damage. */
65
+ export declare function monSpellHasDamage(index: number): boolean;
66
+ /** mon_spell_is_innate. */
67
+ export declare function monSpellIsInnate(index: number): boolean;
68
+ /** test_spells: whether any spell of a wanted type is set in the flagset. */
69
+ export declare function testSpells(f: FlagSet, types: number): boolean;
70
+ /** ignore_spells: clear every spell of the given type(s) from the flagset. */
71
+ export declare function ignoreSpells(f: FlagSet, types: number): void;
72
+ /** create_mon_spell_mask: a fresh flagset of every spell of the given type(s). */
73
+ export declare function createMonSpellMask(...types: number[]): FlagSet;
74
+ /**
75
+ * chance_of_spell_hit_base: MAX(race->level, 1) * 3 + spell->hit. See also the
76
+ * melee analogue chance_of_monster_hit_base.
77
+ */
78
+ export declare function chanceOfSpellHitBase(race: MonsterRace, spell: MonsterSpell): number;
79
+ /** chance_of_spell_hit: the base to-hit reduced for each level of confusion. */
80
+ export declare function chanceOfSpellHit(mon: Monster, spell: MonsterSpell): number;
81
+ /** The projection fields breath_dam reads (a structural view of ProjectionInfo). */
82
+ export interface BreathProjection {
83
+ /** element->divisor: hp is divided by this. */
84
+ divisor: number;
85
+ /** element->damage_cap: the maximum breath damage. */
86
+ damageCap: number;
87
+ }
88
+ /**
89
+ * breath_dam: a monster breath does hp / divisor damage, capped at the
90
+ * element's damage cap.
91
+ */
92
+ export declare function breathDam(proj: BreathProjection, hp: number): number;
93
+ /**
94
+ * unset_spells (mon-spell.c L470): turn off spells with a side effect or
95
+ * projection type resisted by what the monster knows about the player, subject
96
+ * to intelligence and chance. `flags` / `pflags` / `el` are the monster's
97
+ * ai-memorized view of the player (known_pstate copies); `timedFail` resolves a
98
+ * TMD_ name to its fail-condition table (the bound player-timed data).
99
+ *
100
+ * RNG order preserved exactly, including the C short-circuit quirks:
101
+ * - every elemental (BOLT/BALL/BREATH) spell present draws one randint0(100),
102
+ * even when the learn chance is 0;
103
+ * - a non-smart monster draws one_in_(3) per EFFECT LINE of every non-elemental
104
+ * spell (the `(smart || !one_in_(3)) && index == EF_TIMED_INC` gate is
105
+ * evaluated left-to-right for every effect), and one_in_(2) likewise for the
106
+ * drain-mana gate.
107
+ * Upstream indexes el[] by the raw projection subtype; for the handful of
108
+ * non-element breath subtypes (TIME / INERTIA / GRAVITY / PLASMA / MANA /
109
+ * WATER) that read past the element table in C, the port treats the resist
110
+ * level as 0 (an unreproducible out-of-bounds read; the draw still happens).
111
+ */
112
+ export declare function unsetSpells(rng: Rng, spells: FlagSet, flags: FlagSet, pflags: FlagSet, el: Int16Array, mon: Monster, spellTable: ReadonlyMap<number, MonsterSpell>, timedFail: (tmdName: string) => readonly TimedFailLike[] | null): void;
113
+ /** The player-side seams update_smart_learn drives (mon-util.c L788). */
114
+ export interface SmartLearnEnv {
115
+ /** OPT(p, birth_ai_learn). */
116
+ aiLearn: boolean;
117
+ /** equip_learn_flag(p, flag). */
118
+ equipLearnFlag: (of: number) => void;
119
+ /** equip_learn_element(p, element). */
120
+ equipLearnElement: (elem: number) => void;
121
+ /** player_of_has(p, flag). */
122
+ playerOfHas: (of: number) => boolean;
123
+ /** pf_has(p->state.pflags, pflag). */
124
+ playerPfHas: (pf: number) => boolean;
125
+ /** p->state.el_info[element].res_level. */
126
+ playerResLevel: (elem: number) => number;
127
+ }
128
+ /**
129
+ * update_smart_learn (mon-util.c L788): the monster learns an "observed"
130
+ * resistance or other player property (or its absence). The player always
131
+ * learns the corresponding rune (equip_learn_*); the monster's known_pstate is
132
+ * only updated under birth_ai_learn, for non-stupid monsters, with the
133
+ * one_in_(2) non-smart and one_in_(100) failure draws in upstream order.
134
+ * Robust to `element` being an arbitrary PROJ_ index, as upstream.
135
+ */
136
+ export declare function updateSmartLearn(rng: Rng, mon: Monster, env: SmartLearnEnv, flag: number, pflag: number, element: number): void;
137
+ /**
138
+ * FLAGGED ADDITION (#lore-damage): nonhp_dam (mon-spell.c L571), restricted to
139
+ * the MAXIMISE aspect mon_spell_lore_damage needs - deterministic, no RNG.
140
+ *
141
+ * Sums the MAXIMISE damage of every effect line except EF_TIMED_INC ("Timed
142
+ * effects increases don't count as damage in lore", upstream comment).
143
+ * EF_LASH is special-cased exactly as upstream: full damage from the race's
144
+ * first blow plus half from each of the rest (integer division per term,
145
+ * summed - not the total divided by two).
146
+ *
147
+ * Each non-LASH effect's dice is parsed fresh from its raw string and any
148
+ * SPELL_POWER expression rebound to `race` (the only base value monster-spell
149
+ * damage dice reference - see reference/lib/gamedata/monster_spell.txt),
150
+ * mirroring upstream's do_mon_spell / mon-cast.ts buildSpellEffectChain
151
+ * pattern of rebuilding the bound dice per caster rather than mutating the
152
+ * shared MonsterSpell record (which every race with that spell shares).
153
+ */
154
+ export declare function monSpellNonhpDamage(effects: readonly MonsterSpellEffect[], race: MonsterRace): number;
155
+ //# sourceMappingURL=spell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spell.d.ts","sourceRoot":"","sources":["../../src/mon/spell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,355 @@
1
+ /**
2
+ * Monster-spell substrate, ported from reference/src/mon-spell.c (Angband
3
+ * 4.2.6): the spell-type classification (the mon_spell_types table built from
4
+ * list-mon-spells.h), the spell-type predicates and masks, the spell-hit
5
+ * chance, and the breath-damage calculation. These are the pure computations
6
+ * over the bound spell / race data that both the spell executor (do_mon_spell,
7
+ * game/ layer) and the spell-selection AI (choose_attack_spell / remove_bad_
8
+ * spells, mon-attack.c) sit on; they do not touch the GameState, so they live
9
+ * here in mon/ below game/.
10
+ *
11
+ * The RST_ classification is generated as a string expression per spell
12
+ * (generated/mon-spells.ts keeps `type` as written, e.g. "RST_BREATH |
13
+ * RST_INNATE"); MON_SPELL_TYPES evaluates each once into a bitmask indexed by
14
+ * RSF value (index 0 is RSF_NONE, matching the enum), so the lookups mirror
15
+ * upstream's mon_spell_types[index] exactly.
16
+ *
17
+ * monSpellNonhpDamage (nonhp_dam, mon-spell.c L571) is the non-breath half of
18
+ * mon_spell_dam: the deterministic MAXIMISE sum of a spell's damaging effect
19
+ * dice, with each effect's SPELL_POWER expression (the only base value
20
+ * monster-spell damage dice reference) rebound to the calling race - upstream
21
+ * sets its global `ref_race` for the same duration. This is the seam the
22
+ * lore/recall layer (mon/lore-describe.ts) needed to wire mon_spell_lore_damage
23
+ * for real; breath damage keeps using breathDam below unchanged.
24
+ */
25
+ import { Dice } from "../dice.js";
26
+ import { Expression } from "../expression.js";
27
+ import { FlagSet } from "../bitflag.js";
28
+ import { ELEM, MON_SPELL_ENTRIES, MON_TMD, OF, PF, RSF } from "../generated/index.js";
29
+ import { ELEM_MAX } from "../obj/types.js";
30
+ import { RSF_SIZE } from "./types.js";
31
+ import { monsterEffectLevel } from "./timed.js";
32
+ import { monsterIsSmart, monsterIsStupid } from "./predicate.js";
33
+ /**
34
+ * RST_ spell-type bitflags (mon-spell.h). RST_DAMAGE is the composite of the
35
+ * four damaging categories.
36
+ */
37
+ export const RST = {
38
+ NONE: 0x0000,
39
+ BOLT: 0x0001,
40
+ BALL: 0x0002,
41
+ BREATH: 0x0004,
42
+ DIRECT: 0x0008,
43
+ ANNOY: 0x0010,
44
+ HASTE: 0x0020,
45
+ HEAL: 0x0040,
46
+ HEAL_OTHER: 0x0080,
47
+ TACTIC: 0x0100,
48
+ ESCAPE: 0x0200,
49
+ SUMMON: 0x0400,
50
+ INNATE: 0x0800,
51
+ ARCHERY: 0x1000,
52
+ };
53
+ /** #define RST_DAMAGE (RST_BOLT | RST_BALL | RST_BREATH | RST_DIRECT). */
54
+ export const RST_DAMAGE = RST.BOLT | RST.BALL | RST.BREATH | RST.DIRECT;
55
+ /** CONF_HIT_REDUCTION (mon-timed.h): accuracy loss per level of confusion. */
56
+ export const CONF_HIT_REDUCTION = 20;
57
+ /** Evaluate a generated RST_ type expression ("RST_A | RST_B" or 0). */
58
+ function evalTypeExpr(expr) {
59
+ if (typeof expr === "number")
60
+ return expr;
61
+ let mask = 0;
62
+ for (const tok of expr.split("|")) {
63
+ const name = tok.trim().replace(/^RST_/, "");
64
+ const value = RST[name];
65
+ if (value === undefined)
66
+ throw new Error(`unknown RST token: ${tok}`);
67
+ mask |= value;
68
+ }
69
+ return mask;
70
+ }
71
+ /**
72
+ * The per-spell type bitmask, indexed by RSF value (mon_spell_types[]). Built
73
+ * once from the generated entries; index 0 (RSF_NONE) and the trailing MAX
74
+ * entry are 0.
75
+ */
76
+ export const MON_SPELL_TYPES = MON_SPELL_ENTRIES.map((e) => evalTypeExpr(e.type));
77
+ /** mon_spell_is_valid: a real RSF_ spell index. */
78
+ export function monSpellIsValid(index) {
79
+ return index > RSF.NONE && index < RSF.MAX;
80
+ }
81
+ /** monster_spell_is_breath. */
82
+ export function monSpellIsBreath(index) {
83
+ return (MON_SPELL_TYPES[index] & RST.BREATH) !== 0;
84
+ }
85
+ /** mon_spell_has_damage. */
86
+ export function monSpellHasDamage(index) {
87
+ return (MON_SPELL_TYPES[index] & RST_DAMAGE) !== 0;
88
+ }
89
+ /** mon_spell_is_innate. */
90
+ export function monSpellIsInnate(index) {
91
+ return (MON_SPELL_TYPES[index] & RST.INNATE) !== 0;
92
+ }
93
+ /** test_spells: whether any spell of a wanted type is set in the flagset. */
94
+ export function testSpells(f, types) {
95
+ for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
96
+ if (f.has(index) && (MON_SPELL_TYPES[index] & types) !== 0)
97
+ return true;
98
+ }
99
+ return false;
100
+ }
101
+ /** ignore_spells: clear every spell of the given type(s) from the flagset. */
102
+ export function ignoreSpells(f, types) {
103
+ for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
104
+ if (f.has(index) && (MON_SPELL_TYPES[index] & types) !== 0)
105
+ f.off(index);
106
+ }
107
+ }
108
+ /** create_mon_spell_mask: a fresh flagset of every spell of the given type(s). */
109
+ export function createMonSpellMask(...types) {
110
+ const f = new FlagSet(RSF_SIZE);
111
+ const wanted = types.reduce((a, b) => a | b, 0);
112
+ for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
113
+ if ((MON_SPELL_TYPES[index] & wanted) !== 0)
114
+ f.on(index);
115
+ }
116
+ return f;
117
+ }
118
+ /**
119
+ * chance_of_spell_hit_base: MAX(race->level, 1) * 3 + spell->hit. See also the
120
+ * melee analogue chance_of_monster_hit_base.
121
+ */
122
+ export function chanceOfSpellHitBase(race, spell) {
123
+ return Math.max(race.level, 1) * 3 + spell.hit;
124
+ }
125
+ /** chance_of_spell_hit: the base to-hit reduced for each level of confusion. */
126
+ export function chanceOfSpellHit(mon, spell) {
127
+ let toHit = chanceOfSpellHitBase(mon.race, spell);
128
+ const conf = monsterEffectLevel(mon, MON_TMD.CONF);
129
+ for (let i = 0; i < conf; i++) {
130
+ toHit = Math.trunc((toHit * (100 - CONF_HIT_REDUCTION)) / 100);
131
+ }
132
+ return toHit;
133
+ }
134
+ /**
135
+ * breath_dam: a monster breath does hp / divisor damage, capped at the
136
+ * element's damage cap.
137
+ */
138
+ export function breathDam(proj, hp) {
139
+ let dam = Math.trunc(hp / proj.divisor);
140
+ if (dam > proj.damageCap)
141
+ dam = proj.damageCap;
142
+ return dam;
143
+ }
144
+ /** TMD_FAIL_ codes (player-timed.h), for the unset_spells fail-table scan. */
145
+ const TMD_FAIL_FLAG_OBJECT = 1;
146
+ const TMD_FAIL_FLAG_RESIST = 2;
147
+ const TMD_FAIL_FLAG_VULN = 3;
148
+ const TMD_FAIL_FLAG_PLAYER = 4;
149
+ /**
150
+ * unset_spells (mon-spell.c L470): turn off spells with a side effect or
151
+ * projection type resisted by what the monster knows about the player, subject
152
+ * to intelligence and chance. `flags` / `pflags` / `el` are the monster's
153
+ * ai-memorized view of the player (known_pstate copies); `timedFail` resolves a
154
+ * TMD_ name to its fail-condition table (the bound player-timed data).
155
+ *
156
+ * RNG order preserved exactly, including the C short-circuit quirks:
157
+ * - every elemental (BOLT/BALL/BREATH) spell present draws one randint0(100),
158
+ * even when the learn chance is 0;
159
+ * - a non-smart monster draws one_in_(3) per EFFECT LINE of every non-elemental
160
+ * spell (the `(smart || !one_in_(3)) && index == EF_TIMED_INC` gate is
161
+ * evaluated left-to-right for every effect), and one_in_(2) likewise for the
162
+ * drain-mana gate.
163
+ * Upstream indexes el[] by the raw projection subtype; for the handful of
164
+ * non-element breath subtypes (TIME / INERTIA / GRAVITY / PLASMA / MANA /
165
+ * WATER) that read past the element table in C, the port treats the resist
166
+ * level as 0 (an unreproducible out-of-bounds read; the draw still happens).
167
+ */
168
+ export function unsetSpells(rng, spells, flags, pflags, el, mon, spellTable, timedFail) {
169
+ const smart = monsterIsSmart(mon);
170
+ for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
171
+ const spell = spellTable.get(index);
172
+ if (!spell)
173
+ continue;
174
+ if (!spells.has(index))
175
+ continue;
176
+ const types = MON_SPELL_TYPES[index];
177
+ if (types & (RST.BOLT | RST.BALL | RST.BREATH)) {
178
+ /* First we test the elemental spells. */
179
+ const typeName = spell.effects[0]?.type ?? "";
180
+ const element = ELEM[typeName];
181
+ const resLevel = element !== undefined && element < ELEM_MAX ? (el[element] ?? 0) : 0;
182
+ const learnChance = resLevel * (smart ? 50 : 25);
183
+ if (rng.randint0(100) < learnChance) {
184
+ spells.off(index);
185
+ }
186
+ }
187
+ else {
188
+ /* Now others with resisted effects. */
189
+ let stopped = false;
190
+ for (const effect of spell.effects) {
191
+ /* Timed effects: the intelligence/chance gate draws for every
192
+ * effect line of a non-smart monster (C short-circuit order). */
193
+ const timedGate = smart || !rng.oneIn(3);
194
+ if (timedGate && effect.eff === "TIMED_INC") {
195
+ let resisted = false;
196
+ for (const f of timedFail(effect.type ?? "") ?? []) {
197
+ if (resisted)
198
+ break;
199
+ switch (f.code) {
200
+ case TMD_FAIL_FLAG_OBJECT: {
201
+ const of = OF[f.flag];
202
+ if (of !== undefined && flags.has(of))
203
+ resisted = true;
204
+ break;
205
+ }
206
+ case TMD_FAIL_FLAG_RESIST: {
207
+ const e = ELEM[f.flag];
208
+ if (e !== undefined && (el[e] ?? 0) > 0)
209
+ resisted = true;
210
+ break;
211
+ }
212
+ case TMD_FAIL_FLAG_VULN: {
213
+ const e = ELEM[f.flag];
214
+ if (e !== undefined && (el[e] ?? 0) < 0)
215
+ resisted = true;
216
+ break;
217
+ }
218
+ case TMD_FAIL_FLAG_PLAYER: {
219
+ const pf = PF[f.flag];
220
+ if (pf !== undefined && pflags.has(pf))
221
+ resisted = true;
222
+ break;
223
+ }
224
+ /* TMD_FAIL_FLAG_TIMED_EFFECT: the monster does not track the
225
+ * player's timed effects; do nothing. */
226
+ default:
227
+ break;
228
+ }
229
+ }
230
+ if (resisted) {
231
+ stopped = true;
232
+ break;
233
+ }
234
+ }
235
+ /* Mana drain (the chance gate draws per effect for non-smart). */
236
+ const manaGate = smart || rng.oneIn(2);
237
+ if (manaGate &&
238
+ effect.eff === "DRAIN_MANA" &&
239
+ pflags.has(PF.NO_MANA)) {
240
+ stopped = true;
241
+ break;
242
+ }
243
+ }
244
+ if (stopped)
245
+ spells.off(index);
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * update_smart_learn (mon-util.c L788): the monster learns an "observed"
251
+ * resistance or other player property (or its absence). The player always
252
+ * learns the corresponding rune (equip_learn_*); the monster's known_pstate is
253
+ * only updated under birth_ai_learn, for non-stupid monsters, with the
254
+ * one_in_(2) non-smart and one_in_(100) failure draws in upstream order.
255
+ * Robust to `element` being an arbitrary PROJ_ index, as upstream.
256
+ */
257
+ export function updateSmartLearn(rng, mon, env, flag, pflag, element) {
258
+ const elementOk = element >= 0 && element < ELEM_MAX;
259
+ /* Sanity check. */
260
+ if (!flag && !elementOk)
261
+ return;
262
+ /* Anything a monster might learn, the player should learn. */
263
+ if (flag)
264
+ env.equipLearnFlag(flag);
265
+ if (elementOk)
266
+ env.equipLearnElement(element);
267
+ /* Not allowed to learn. */
268
+ if (!env.aiLearn)
269
+ return;
270
+ /* Too stupid to learn anything. */
271
+ if (monsterIsStupid(mon))
272
+ return;
273
+ /* Not intelligent, only learn sometimes. */
274
+ if (!monsterIsSmart(mon) && rng.oneIn(2))
275
+ return;
276
+ /* Analyze the knowledge; fail very rarely. */
277
+ if (rng.oneIn(100))
278
+ return;
279
+ /* Learn the flag. */
280
+ if (flag) {
281
+ if (env.playerOfHas(flag))
282
+ mon.knownPstate.flags.on(flag);
283
+ else
284
+ mon.knownPstate.flags.off(flag);
285
+ }
286
+ /* Learn the pflag (upstream writes it with of_on/of_off; same bit ops). */
287
+ if (pflag) {
288
+ if (env.playerPfHas(pflag))
289
+ mon.knownPstate.pflags.on(pflag);
290
+ else
291
+ mon.knownPstate.pflags.off(pflag);
292
+ }
293
+ /* Learn the element. */
294
+ if (elementOk) {
295
+ mon.knownPstate.elInfo[element] = env.playerResLevel(element);
296
+ }
297
+ }
298
+ /**
299
+ * randcalc(v, 0, MAXIMISE): base + dice*sides + mBonus. Level and RNG never
300
+ * enter the MAXIMISE branch (rng.ts damcalc / mBonusCalc), so this mirrors
301
+ * that arithmetic directly rather than threading an Rng through a display
302
+ * path (the same choice obj/object-info.ts makes for its own rvMax).
303
+ */
304
+ function maximiseRandomValue(rv) {
305
+ return rv.base + rv.dice * rv.sides + rv.mBonus;
306
+ }
307
+ /**
308
+ * FLAGGED ADDITION (#lore-damage): nonhp_dam (mon-spell.c L571), restricted to
309
+ * the MAXIMISE aspect mon_spell_lore_damage needs - deterministic, no RNG.
310
+ *
311
+ * Sums the MAXIMISE damage of every effect line except EF_TIMED_INC ("Timed
312
+ * effects increases don't count as damage in lore", upstream comment).
313
+ * EF_LASH is special-cased exactly as upstream: full damage from the race's
314
+ * first blow plus half from each of the rest (integer division per term,
315
+ * summed - not the total divided by two).
316
+ *
317
+ * Each non-LASH effect's dice is parsed fresh from its raw string and any
318
+ * SPELL_POWER expression rebound to `race` (the only base value monster-spell
319
+ * damage dice reference - see reference/lib/gamedata/monster_spell.txt),
320
+ * mirroring upstream's do_mon_spell / mon-cast.ts buildSpellEffectChain
321
+ * pattern of rebuilding the bound dice per caster rather than mutating the
322
+ * shared MonsterSpell record (which every race with that spell shares).
323
+ */
324
+ export function monSpellNonhpDamage(effects, race) {
325
+ let dam = 0;
326
+ for (const effect of effects) {
327
+ if (effect.eff === "LASH") {
328
+ for (let i = 0; i < race.blows.length; i++) {
329
+ const blowDice = race.blows[i].dice;
330
+ if (!blowDice)
331
+ continue;
332
+ const full = maximiseRandomValue(blowDice.randomValue());
333
+ dam += i === 0 ? full : Math.trunc(full / 2);
334
+ }
335
+ continue;
336
+ }
337
+ if (!effect.dice || effect.eff === "TIMED_INC" || effect.diceRaw === null) {
338
+ continue;
339
+ }
340
+ const dice = new Dice();
341
+ if (!dice.parseString(effect.diceRaw))
342
+ continue;
343
+ for (const x of effect.exprs) {
344
+ if (x.base.toUpperCase() !== "SPELL_POWER")
345
+ continue;
346
+ const expr = new Expression();
347
+ expr.setBaseValue(() => race.spellPower);
348
+ expr.addOperationsString(x.expr);
349
+ dice.bindExpression(x.name, expr);
350
+ }
351
+ dam += maximiseRandomValue(dice.randomValue());
352
+ }
353
+ return dam;
354
+ }
355
+ //# sourceMappingURL=spell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spell.js","sourceRoot":"","sources":["../../src/mon/spell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Stealing objects from a monster, ported from reference/src/mon-util.c
3
+ * (Angband 4.2.6): get_random_monster_object (L1405) and steal_monster_item
4
+ * (L1430). This is the RNG core of the rogue / PF_STEAL "steal" command
5
+ * (do_cmd_steal, cmd-cave.c L1016) and, upstream, of the EAT_ITEM melee blow
6
+ * when the attacker's target is another monster (mon-blows.c L876).
7
+ *
8
+ * The heavy RNG order is the correctness crux, so it lives here worldless (like
9
+ * combat/mon-melee.ts): stealMonsterItem draws every roll in strict upstream
10
+ * order and mutates the monster's held pile directly, delegating the
11
+ * player-facing world work (gold gain, pack carry, drop_near, ignore checks,
12
+ * the hit-and-run teleport, EF_WAKE aggro) to the injected StealEnv. The game
13
+ * binding (game/steal.ts) supplies that env over the live GameState.
14
+ *
15
+ * RNG draw order (mon-util.c L1430-1539), verified against the C:
16
+ * 1. get_random_monster_object(mon): a reservoir pick over mon->held_obj -
17
+ * one_in_(i) for each non-quest-artifact held object, i counting from 1.
18
+ * 2. (no object) one_in_(3), then monster_wake(mon, false, 100) on success
19
+ * (which draws randint0(100) for awareness).
20
+ * 3. monster_reaction = guard/2 + randint1(MAX(guard, 1)); the item-weight
21
+ * term adds no RNG.
22
+ * 4. success (reaction < skill): pile_excise, then either gold gain, or a
23
+ * drop_near (its own breakage / grid RNG) when the item is ignored or the
24
+ * pack is full, or a plain inven_carry; then mon_dec_timed(SLEEP) (which
25
+ * may draw for its save), then the hit-and-run teleport when TMD_ATT_RUN.
26
+ * 5. decent fail (reaction/2 < skill): monster_wake(mon, true, 50).
27
+ * 6. bungle (else): monster_wake(mon, true, 100), then EF_WAKE aggro.
28
+ *
29
+ * DEFERRED (noted, no RNG impact): the object knowledge bookkeeping upstream
30
+ * threads here - object_grab / object_see / delist_object / object_delete - is
31
+ * the knowledge subsystem (#24), carried by the env's carry/gainGold seams; and
32
+ * react_to_slay blocking the monster-thief path (midx >= 0) is deferred exactly
33
+ * as the EAT_ITEM blow already defers it (game/mon-side.ts / mon-cmd.ts). The
34
+ * mon-vs-mon EAT_ITEM path wires stealMonsterItem from game/mon-cmd.ts.
35
+ */
36
+ import type { Rng } from "../rng.js";
37
+ import type { GameObject } from "../obj/object.js";
38
+ import type { Monster } from "./monster.js";
39
+ import type { LoreStore } from "./lore.js";
40
+ /**
41
+ * get_random_monster_object (mon-util.c L1405): pick one object from the
42
+ * monster's held pile with uniform probability, skipping quest artifacts. The
43
+ * reservoir draw (one_in_(i), i from 1) matches upstream exactly, so the choice
44
+ * is the same for a given RNG stream.
45
+ */
46
+ export declare function getRandomMonsterObject(rng: Rng, mon: Monster): GameObject | null;
47
+ /**
48
+ * The world-facing operations steal_monster_item delegates, so the RNG core
49
+ * stays worldless. The game binding (game/steal.ts) supplies these over the
50
+ * live GameState; the RNG-drawing seams (dropStolen, wakeAll, hitAndRun) run at
51
+ * the exact point upstream draws them.
52
+ */
53
+ export interface StealEnv {
54
+ /** msg(): route messages to the game's sink. */
55
+ msg(text: string): void;
56
+ /** monster_desc(mon, MDESC_TARG) (mon-util.c L1438): the victim's name. */
57
+ monName(mon: Monster): string;
58
+ /**
59
+ * monster_desc(mon, MDESC_STANDARD) (mon-util.c L1524): the re-described,
60
+ * capitalised name for the bungle "cries out in anger" line. Defaults to
61
+ * monName when absent.
62
+ */
63
+ monNameStandard?(mon: Monster): string;
64
+ /** player->state.skills[SKILL_STEALTH]. */
65
+ readonly stealthSkill: number;
66
+ /** adj_dex_th[player->state.stat_ind[STAT_DEX]]. */
67
+ readonly dexToHit: number;
68
+ /** player->state.speed. */
69
+ readonly playerSpeed: number;
70
+ /** player->timed[TMD_BLIND] || [TMD_CONFUSED] || [TMD_IMAGE]. */
71
+ readonly statusPenalty: boolean;
72
+ /** player->timed[TMD_ATT_RUN] (the hit-and-run stance is active). */
73
+ readonly attRun: boolean;
74
+ /** object_weight_one(obj), curses folded in. */
75
+ objectWeight(obj: GameObject): number;
76
+ /** tval_is_money(obj). */
77
+ isMoney(obj: GameObject): boolean;
78
+ /** object_desc(obj, PREFIX|FULL): the display name for messages. */
79
+ objectName(obj: GameObject): string;
80
+ /** ignore_item_ok(player, obj). */
81
+ isIgnored(obj: GameObject): boolean;
82
+ /** inven_carry_okay(obj): the pack can accept it. */
83
+ canCarry(obj: GameObject): boolean;
84
+ /** player->au += obj->pval; PR_GOLD redraw; delist / object_delete. */
85
+ gainGold(obj: GameObject): void;
86
+ /** object_grab + inven_carry(player, obj, true, true). */
87
+ carry(obj: GameObject): void;
88
+ /**
89
+ * drop_near(cave, &obj, 0, player->grid, true, true) then "You drop X." -
90
+ * the name is captured before the drop (upstream order); draws drop_near RNG.
91
+ */
92
+ dropStolen(obj: GameObject): void;
93
+ /** effect_simple(EF_WAKE, source_monster(mon)): aggro monsters in LOS. */
94
+ wakeAll?(mon: Monster): void;
95
+ /**
96
+ * The TMD_ATT_RUN hit-and-run: "You vanish into the shadows!", EF_TELEPORT
97
+ * "20", then clear TMD_ATT_RUN. Draws the teleport RNG.
98
+ */
99
+ hitAndRun?(): void;
100
+ /** monster_desc for the thief (midx >= 0 path); the race name (#25). */
101
+ thiefName?(midx: number): string;
102
+ /** monster_carry(cave, thief, obj) (midx >= 0 path). */
103
+ thiefCarry?(midx: number, obj: GameObject): void;
104
+ }
105
+ /**
106
+ * steal_monster_item (mon-util.c L1430): the thief with index `midx` steals a
107
+ * random item from `mon`. `midx < 0` is the player (do_cmd_steal); `midx >= 0`
108
+ * is a monster thief (the EAT_ITEM blow against another monster). Every RNG
109
+ * draw is issued in strict upstream order; see the module header.
110
+ */
111
+ export declare function stealMonsterItem(rng: Rng, lore: LoreStore, mon: Monster, midx: number, env: StealEnv): void;
112
+ //# sourceMappingURL=steal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steal.d.ts","sourceRoot":"","sources":["../../src/mon/steal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM3C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,GACX,UAAU,GAAG,IAAI,CAUnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;IACtC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IAClC,oEAAoE;IACpE,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;IACpC,mCAAmC;IACnC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,0DAA0D;IAC1D,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,wDAAwD;IACxD,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CAClD;AAQD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,GACZ,IAAI,CAoGN"}