@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,310 @@
1
+ /**
2
+ * Shared to-hit and critical-hit machinery, ported VERBATIM from
3
+ * reference/src/player-attack.c and reference/src/mon-attack.c (Angband
4
+ * 4.2.6), with the critical constant tables from
5
+ * reference/lib/gamedata/constants.txt.
6
+ *
7
+ * This module ports the DEFAULT (non-O) combat path: test_hit / hit_chance,
8
+ * the melee/ranged critical chance-and-power formulas, and the critical-level
9
+ * cutoff tables. It also ports the alternative "O-combat" path
10
+ * (birth_percent_damage): o_critical_melee / o_critical_shot, the o-*-critical
11
+ * constants (constants.txt), and apply_deadliness. The O path is a birth
12
+ * option, off by default; oMeleeDamage / oRangedDamage (melee.ts / ranged.ts)
13
+ * consume these behind that gate.
14
+ *
15
+ * All integer arithmetic reproduces C semantics (Math.trunc for the C `/`).
16
+ */
17
+ import { MON_TMD } from "../generated/index.js";
18
+ /** Adjust BTH per plus-to-hit (player.h BTH_PLUS_ADJ). */
19
+ export const BTH_PLUS_ADJ = 3;
20
+ /** Percentage reduction in accuracy for a stunned combatant (mon-timed.h). */
21
+ export const STUN_HIT_REDUCTION = 25;
22
+ /** Percentage reduction in damage for a stunned combatant (mon-timed.h). */
23
+ export const STUN_DAM_REDUCTION = 25;
24
+ /* ------------------------------------------------------------------ *
25
+ * test_hit / hit_chance (player-attack.c)
26
+ * ------------------------------------------------------------------ */
27
+ const HUNDRED_PCT = 10000;
28
+ const ALWAYS_HIT = 1200;
29
+ const ALWAYS_MISS = 500;
30
+ /**
31
+ * hit_chance: the likelihood of a hit roll succeeding for the given to_hit and
32
+ * ac. Scaled to a denominator of 10,000 to avoid rounding error.
33
+ *
34
+ * Always hit 12% of the time, always miss 5% of the time, floor the to-hit at
35
+ * 9, roll 0..to_hit, and require the roll to reach ac*2/3.
36
+ */
37
+ export function hitChance(toHit, ac) {
38
+ /* Put a floor on the to_hit */
39
+ const th = Math.max(9, toHit);
40
+ /* Calculate the hit percentage */
41
+ let numerator = Math.max(0, th - Math.trunc((ac * 2) / 3));
42
+ const denominator = th;
43
+ /* Convert the ratio to a scaled percentage */
44
+ numerator = Math.trunc((HUNDRED_PCT * numerator) / denominator);
45
+ /* The calculated rate only applies when the guaranteed hit/miss don't */
46
+ numerator = Math.trunc((numerator * (HUNDRED_PCT - ALWAYS_MISS - ALWAYS_HIT)) / HUNDRED_PCT);
47
+ /* Add in the guaranteed hit */
48
+ numerator += ALWAYS_HIT;
49
+ return { numerator, denominator: HUNDRED_PCT };
50
+ }
51
+ /**
52
+ * test_hit: determine if a hit roll succeeds against the target AC. Uses the
53
+ * port's random_chance_check (rng.randomChanceCheck), which is the faithful
54
+ * WELL-stream equivalent of upstream random_chance_check.
55
+ */
56
+ export function testHit(rng, toHit, ac) {
57
+ return rng.randomChanceCheck(hitChance(toHit, ac));
58
+ }
59
+ /**
60
+ * Success percentage (0..100) for the given to_hit and ac, derived from
61
+ * hit_chance. Upstream ui-player.c reports the same ratio (numerator / 100).
62
+ */
63
+ export function getHitChance(toHit, ac) {
64
+ return Math.trunc(hitChance(toHit, ac).numerator / 100);
65
+ }
66
+ /**
67
+ * is_debuffed: whether a monster is confused, held, afraid or stunned - any
68
+ * of which makes a critical hit more likely.
69
+ */
70
+ export function isDebuffed(mon) {
71
+ return ((mon.mTimed[MON_TMD.CONF] ?? 0) > 0 ||
72
+ (mon.mTimed[MON_TMD.HOLD] ?? 0) > 0 ||
73
+ (mon.mTimed[MON_TMD.FEAR] ?? 0) > 0 ||
74
+ (mon.mTimed[MON_TMD.STUN] ?? 0) > 0);
75
+ }
76
+ /** melee-critical chance/power scale factors (constants.txt). */
77
+ export const MELEE_CRIT = {
78
+ debuffToh: 10,
79
+ chanceWeightScl: 1,
80
+ chanceTohScl: 5,
81
+ chanceLevelScl: 0,
82
+ chanceTohSkillScl: 1,
83
+ chanceOffset: -60,
84
+ chanceRange: 5000,
85
+ powerWeightScl: 1,
86
+ powerRandom: 650,
87
+ };
88
+ /** melee-critical-level cutoffs (constants.txt), in file order (head first). */
89
+ export const MELEE_CRIT_LEVELS = [
90
+ { cutoff: 400, mult: 2, add: 5, msg: "HIT_GOOD" },
91
+ { cutoff: 700, mult: 2, add: 10, msg: "HIT_GREAT" },
92
+ { cutoff: 900, mult: 3, add: 15, msg: "HIT_SUPERB" },
93
+ { cutoff: 1300, mult: 3, add: 20, msg: "HIT_HI_GREAT" },
94
+ { cutoff: -1, mult: 4, add: 20, msg: "HIT_HI_SUPERB" },
95
+ ];
96
+ /** ranged-critical chance/power scale factors (constants.txt). */
97
+ export const RANGED_CRIT = {
98
+ debuffToh: 10,
99
+ chanceWeightScl: 1,
100
+ chanceTohScl: 4,
101
+ chanceLevelScl: 2,
102
+ chanceLaunchedTohSkillScl: 0,
103
+ chanceThrownTohSkillScl: 0,
104
+ chanceOffset: 0,
105
+ chanceRange: 5000,
106
+ powerWeightScl: 1,
107
+ powerRandom: 500,
108
+ };
109
+ /** ranged-critical-level cutoffs (constants.txt), in file order. */
110
+ export const RANGED_CRIT_LEVELS = [
111
+ { cutoff: 500, mult: 2, add: 5, msg: "HIT_GOOD" },
112
+ { cutoff: 1000, mult: 2, add: 10, msg: "HIT_GREAT" },
113
+ { cutoff: -1, mult: 3, add: 15, msg: "HIT_SUPERB" },
114
+ ];
115
+ /**
116
+ * Walk the critical-level list for a given power, exactly as the upstream
117
+ * `while (power >= this_l->cutoff && this_l->next) this_l = this_l->next`.
118
+ * The head level is the "below the first cutoff" bucket; each cutoff is the
119
+ * threshold to advance to the next, sharper level; the final entry (cutoff
120
+ * -1) is the catch-all.
121
+ */
122
+ export function selectCritLevel(power, levels) {
123
+ let i = 0;
124
+ const last = levels.length - 1;
125
+ while (i < last && power >= levels[i].cutoff) {
126
+ i++;
127
+ }
128
+ return levels[i];
129
+ }
130
+ /**
131
+ * critical_melee: factor weapon weight, total plusses and player level into a
132
+ * chance of a critical, then a power that selects a severity level.
133
+ *
134
+ * NB: in 4.2.6 the melee critical is critical_melee(); earlier releases named
135
+ * the equivalent routine critical_norm(). criticalMelee is the faithful port.
136
+ */
137
+ export function criticalMelee(rng, actor, mon, weight, plus, dam) {
138
+ let toH = actor.toH + plus;
139
+ if (isDebuffed(mon))
140
+ toH += MELEE_CRIT.debuffToh;
141
+ const chance = MELEE_CRIT.chanceWeightScl * weight +
142
+ MELEE_CRIT.chanceTohScl * toH +
143
+ MELEE_CRIT.chanceLevelScl * actor.lev +
144
+ MELEE_CRIT.chanceTohSkillScl * actor.meleeSkill +
145
+ MELEE_CRIT.chanceOffset;
146
+ if (rng.randint1(MELEE_CRIT.chanceRange) > chance) {
147
+ return { damage: dam, msg: "HIT" };
148
+ }
149
+ const power = MELEE_CRIT.powerWeightScl * weight + rng.randint1(MELEE_CRIT.powerRandom);
150
+ const level = selectCritLevel(power, MELEE_CRIT_LEVELS);
151
+ return { damage: level.add + level.mult * dam, msg: level.msg };
152
+ }
153
+ /**
154
+ * critical_shot: as critical_melee but for shooting/throwing. `launched` is
155
+ * true for a launcher shot, false for a thrown object. The non-critical
156
+ * message is SHOOT_HIT (not HIT).
157
+ */
158
+ export function criticalShot(rng, actor, mon, weight, plus, dam, launched) {
159
+ let toH = actor.toH + plus;
160
+ if (isDebuffed(mon))
161
+ toH += RANGED_CRIT.debuffToh;
162
+ let chance = RANGED_CRIT.chanceWeightScl * weight +
163
+ RANGED_CRIT.chanceTohScl * toH +
164
+ RANGED_CRIT.chanceLevelScl * actor.lev +
165
+ RANGED_CRIT.chanceOffset;
166
+ if (launched) {
167
+ chance += RANGED_CRIT.chanceLaunchedTohSkillScl * actor.bowSkill;
168
+ }
169
+ else {
170
+ chance += RANGED_CRIT.chanceThrownTohSkillScl * actor.throwSkill;
171
+ }
172
+ if (rng.randint1(RANGED_CRIT.chanceRange) > chance) {
173
+ return { damage: dam, msg: "SHOOT_HIT" };
174
+ }
175
+ const power = RANGED_CRIT.powerWeightScl * weight + rng.randint1(RANGED_CRIT.powerRandom);
176
+ const level = selectCritLevel(power, RANGED_CRIT_LEVELS);
177
+ return { damage: level.add + level.mult * dam, msg: level.msg };
178
+ }
179
+ /** o-melee-critical scale factors (constants.txt). */
180
+ export const O_MELEE_CRIT = {
181
+ debuffToh: 10,
182
+ powerTohScaleNum: 1,
183
+ powerTohScaleDen: 3,
184
+ chancePowerScaleNum: 1,
185
+ chancePowerScaleDen: 1,
186
+ chanceAddDen: 240,
187
+ };
188
+ /** o-melee-critical-level rows (constants.txt), head first. */
189
+ export const O_MELEE_CRIT_LEVELS = [
190
+ { chance: 40, dice: 5, msg: "HIT_HI_SUPERB" },
191
+ { chance: 12, dice: 4, msg: "HIT_HI_GREAT" },
192
+ { chance: 3, dice: 3, msg: "HIT_SUPERB" },
193
+ { chance: 2, dice: 2, msg: "HIT_GREAT" },
194
+ { chance: 1, dice: 1, msg: "HIT_GOOD" },
195
+ ];
196
+ /** o-ranged-critical scale factors (constants.txt). */
197
+ export const O_RANGED_CRIT = {
198
+ debuffToh: 10,
199
+ powerLaunchedTohScaleNum: 1,
200
+ powerLaunchedTohScaleDen: 1,
201
+ powerThrownTohScaleNum: 3,
202
+ powerThrownTohScaleDen: 2,
203
+ chancePowerScaleNum: 1,
204
+ chancePowerScaleDen: 1,
205
+ chanceAddDen: 360,
206
+ };
207
+ /** o-ranged-critical-level rows (constants.txt), head first. */
208
+ export const O_RANGED_CRIT_LEVELS = [
209
+ { chance: 50, dice: 3, msg: "HIT_SUPERB" },
210
+ { chance: 10, dice: 2, msg: "HIT_GREAT" },
211
+ { chance: 1, dice: 1, msg: "HIT_GOOD" },
212
+ ];
213
+ /**
214
+ * Walk the O-critical-level list, exactly as upstream
215
+ * `while (this_l->next && !one_in_(this_l->chance)) this_l = this_l->next;`.
216
+ * Draws one_in_ (a randint0) at each non-terminal level until it stops.
217
+ */
218
+ function selectOCritLevel(rng, levels) {
219
+ let i = 0;
220
+ const last = levels.length - 1;
221
+ while (i < last && !rng.oneIn(levels[i].chance)) {
222
+ i++;
223
+ }
224
+ const lvl = levels[i];
225
+ return { addDice: lvl.dice, msg: lvl.msg };
226
+ }
227
+ /**
228
+ * o_critical_melee (player-attack.c L439): the crit-chance is a rational
229
+ * a*power / (b*power + c); on success, walk the level list for the added dice.
230
+ * `powerBase` is chance_of_melee_hit_base(p, obj) (computed by the caller).
231
+ *
232
+ * RNG: one randint1(chance_den) for the crit test, then (on a crit) the
233
+ * one_in_ level walk. Non-crit returns msg SHOOT_HIT, faithful to upstream.
234
+ */
235
+ export function oCriticalMelee(rng, powerBase, mon) {
236
+ let power = powerBase;
237
+ if (isDebuffed(mon))
238
+ power += O_MELEE_CRIT.debuffToh;
239
+ power = Math.trunc((power * O_MELEE_CRIT.powerTohScaleNum) / O_MELEE_CRIT.powerTohScaleDen);
240
+ const chanceNum = power * O_MELEE_CRIT.chancePowerScaleNum;
241
+ const chanceDen = power * O_MELEE_CRIT.chancePowerScaleDen + O_MELEE_CRIT.chanceAddDen;
242
+ if (rng.randint1(chanceDen) <= chanceNum) {
243
+ return selectOCritLevel(rng, O_MELEE_CRIT_LEVELS);
244
+ }
245
+ return { addDice: 0, msg: "SHOOT_HIT" };
246
+ }
247
+ /**
248
+ * o_critical_shot (player-attack.c L351): as oCriticalMelee for shooting
249
+ * (launched) / throwing. `powerBase` is chance_of_missile_hit_base(p, missile,
250
+ * launcher). The power scale factor differs for launched vs thrown.
251
+ */
252
+ export function oCriticalShot(rng, powerBase, mon, launched) {
253
+ let power = powerBase;
254
+ if (isDebuffed(mon))
255
+ power += O_RANGED_CRIT.debuffToh;
256
+ const num = launched
257
+ ? O_RANGED_CRIT.powerLaunchedTohScaleNum
258
+ : O_RANGED_CRIT.powerThrownTohScaleNum;
259
+ const den = launched
260
+ ? O_RANGED_CRIT.powerLaunchedTohScaleDen
261
+ : O_RANGED_CRIT.powerThrownTohScaleDen;
262
+ power = Math.trunc((power * num) / den);
263
+ const chanceNum = power * O_RANGED_CRIT.chancePowerScaleNum;
264
+ const chanceDen = power * O_RANGED_CRIT.chancePowerScaleDen + O_RANGED_CRIT.chanceAddDen;
265
+ if (rng.randint1(chanceDen) <= chanceNum) {
266
+ return selectOCritLevel(rng, O_RANGED_CRIT_LEVELS);
267
+ }
268
+ return { addDice: 0, msg: "SHOOT_HIT" };
269
+ }
270
+ /* ------------------------------------------------------------------ *
271
+ * apply_deadliness (player-attack.c L231/L261)
272
+ *
273
+ * Ported faithfully here (rather than reused) because obj/object-info.ts - the
274
+ * display estimate's home for the same table - imports from this combat module,
275
+ * so combat cannot import back from it without a cycle. Both copies are
276
+ * verified against the constants; keep them in step.
277
+ * ------------------------------------------------------------------ */
278
+ /** deadliness_conversion[151] (player-attack.c L231). */
279
+ export const DEADLINESS_CONVERSION = [
280
+ 0, 5, 10, 14, 18, 22, 26, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66,
281
+ 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 104, 107, 109, 112, 114, 117,
282
+ 119, 122, 124, 127, 129, 132, 134, 137, 139, 142, 144, 147, 149, 152, 154,
283
+ 157, 159, 162, 164, 167, 169, 172, 174, 176, 178, 180, 182, 184, 186, 188,
284
+ 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218,
285
+ 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248,
286
+ 250, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
287
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
288
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
289
+ 255, 255, 255, 255, 255, 255, 255, 255, 255,
290
+ ];
291
+ /**
292
+ * apply_deadliness (player-attack.c L261): scale die_average (x100) by the
293
+ * deadliness bonus. Returns the scaled value (upstream mutates in place).
294
+ */
295
+ export function applyDeadliness(dieAverage, deadliness) {
296
+ let dl = deadliness;
297
+ if (dl > 150)
298
+ dl = 150;
299
+ if (dl < -150)
300
+ dl = -150;
301
+ if (dl >= 0) {
302
+ const i = DEADLINESS_CONVERSION[dl];
303
+ return dieAverage * (100 + i);
304
+ }
305
+ const i = DEADLINESS_CONVERSION[Math.abs(dl)];
306
+ if (i >= 100)
307
+ return 0;
308
+ return dieAverage * (100 - i);
309
+ }
310
+ //# sourceMappingURL=hit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hit.js","sourceRoot":"","sources":["../../src/combat/hit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAiBrC;;wEAEwE;AAExE,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,EAAU;IACjD,+BAA+B;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE9B,kCAAkC;IAClC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,8CAA8C;IAC9C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;IAEhE,yEAAyE;IACzE,SAAS,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,SAAS,GAAG,CAAC,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CACrE,CAAC;IAEF,+BAA+B;IAC/B,SAAS,IAAI,UAAU,CAAC;IAExB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ,EAAE,KAAa,EAAE,EAAU;IACzD,OAAO,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,EAAU;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;AAC1D,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAiB;IAC1C,OAAO,CACL,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACnC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACnC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACnC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CACpC,CAAC;AACJ,CAAC;AAkBD,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC,EAAE;IACjB,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,CAAC;IACjB,WAAW,EAAE,GAAG;CACR,CAAC;AAEX,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IACjD,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IACnD,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;IACpD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE;IACvD,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE;CACvD,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,yBAAyB,EAAE,CAAC;IAC5B,uBAAuB,EAAE,CAAC;IAC1B,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,CAAC;IACjB,WAAW,EAAE,GAAG;CACR,CAAC;AAEX,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IACjD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IACpD,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAgC;IAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,IAAK,MAAM,CAAC,CAAC,CAAmB,CAAC,MAAM,EAAE,CAAC;QAChE,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAkB,CAAC;AACpC,CAAC;AA0BD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAQ,EACR,KAAgB,EAChB,GAAiB,EACjB,MAAc,EACd,IAAY,EACZ,GAAW;IAEX,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAC3B,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC;IAEjD,MAAM,MAAM,GACV,UAAU,CAAC,eAAe,GAAG,MAAM;QACnC,UAAU,CAAC,YAAY,GAAG,GAAG;QAC7B,UAAU,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG;QACrC,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU;QAC/C,UAAU,CAAC,YAAY,CAAC;IAE1B,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GACT,UAAU,CAAC,cAAc,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACxD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAQ,EACR,KAAgB,EAChB,GAAiB,EACjB,MAAc,EACd,IAAY,EACZ,GAAW,EACX,QAAiB;IAEjB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAC3B,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;IAElD,IAAI,MAAM,GACR,WAAW,CAAC,eAAe,GAAG,MAAM;QACpC,WAAW,CAAC,YAAY,GAAG,GAAG;QAC9B,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG;QACtC,WAAW,CAAC,YAAY,CAAC;IAC3B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CAAC,yBAAyB,GAAG,KAAK,CAAC,QAAQ,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,WAAW,CAAC,uBAAuB,GAAG,KAAK,CAAC,UAAU,CAAC;IACnE,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GACT,WAAW,CAAC,cAAc,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAClE,CAAC;AAqBD,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,GAAG;CACT,CAAC;AAEX,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE;IAC7C,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE;IAC5C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE;IACzC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACxC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;CACxC,CAAC;AAEF,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,EAAE;IACb,wBAAwB,EAAE,CAAC;IAC3B,wBAAwB,EAAE,CAAC;IAC3B,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;IACzB,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,GAAG;CACT,CAAC;AAEX,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAA0B;IACzD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE;IAC1C,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACzC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;CACxC,CAAC;AAQF;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,GAAQ,EACR,MAA6B;IAE7B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,MAAM,CAAC,CAAC,CAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,CAAC,EAAE,CAAC;IACN,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAe,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAQ,EACR,SAAiB,EACjB,GAAiB;IAEjB,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,IAAI,YAAY,CAAC,SAAS,CAAC;IACrD,KAAK,GAAG,IAAI,CAAC,KAAK,CAChB,CAAC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAC,gBAAgB,CACxE,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC,mBAAmB,CAAC;IAC3D,MAAM,SAAS,GACb,KAAK,GAAG,YAAY,CAAC,mBAAmB,GAAG,YAAY,CAAC,YAAY,CAAC;IACvE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;QACzC,OAAO,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAQ,EACR,SAAiB,EACjB,GAAiB,EACjB,QAAiB;IAEjB,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,IAAI,aAAa,CAAC,SAAS,CAAC;IACtD,MAAM,GAAG,GAAG,QAAQ;QAClB,CAAC,CAAC,aAAa,CAAC,wBAAwB;QACxC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC;IACzC,MAAM,GAAG,GAAG,QAAQ;QAClB,CAAC,CAAC,aAAa,CAAC,wBAAwB;QACxC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC;IACzC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAC5D,MAAM,SAAS,GACb,KAAK,GAAG,aAAa,CAAC,mBAAmB,GAAG,aAAa,CAAC,YAAY,CAAC;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;QACzC,OAAO,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;wEAOwE;AAExE,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAC5C,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,UAAkB;IACpE,IAAI,EAAE,GAAG,UAAU,CAAC;IACpB,IAAI,EAAE,GAAG,GAAG;QAAE,EAAE,GAAG,GAAG,CAAC;IACvB,IAAI,EAAE,GAAG,CAAC,GAAG;QAAE,EAAE,GAAG,CAAC,GAAG,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAW,CAAC;QAC9C,OAAO,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAW,CAAC;IACxD,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IACvB,OAAO,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The combat domain: shared to-hit / critical math (hit.ts), brand and slay
3
+ * selection (brand-slay.ts), player melee (melee.ts), monster melee against
4
+ * the player (mon-melee.ts), and player ranged attacks (ranged.ts). Ported
5
+ * from Angband 4.2.6 (player-attack.c, mon-attack.c, mon-blows.c, obj-slays.c).
6
+ *
7
+ * Not wired into the package barrel (packages/core/src/index.ts) yet; import
8
+ * directly from "./combat".
9
+ */
10
+ export * from "./hit.js";
11
+ export * from "./brand-slay.js";
12
+ export * from "./melee.js";
13
+ export * from "./mon-melee.js";
14
+ export * from "./ranged.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The combat domain: shared to-hit / critical math (hit.ts), brand and slay
3
+ * selection (brand-slay.ts), player melee (melee.ts), monster melee against
4
+ * the player (mon-melee.ts), and player ranged attacks (ranged.ts). Ported
5
+ * from Angband 4.2.6 (player-attack.c, mon-attack.c, mon-blows.c, obj-slays.c).
6
+ *
7
+ * Not wired into the package barrel (packages/core/src/index.ts) yet; import
8
+ * directly from "./combat".
9
+ */
10
+ export * from "./hit.js";
11
+ export * from "./brand-slay.js";
12
+ export * from "./melee.js";
13
+ export * from "./mon-melee.js";
14
+ export * from "./ranged.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Player melee attacks, ported from reference/src/player-attack.c (Angband
3
+ * 4.2.6): chance_of_melee_hit(_base), melee_damage, py_attack_real and the
4
+ * py_attack blow loop. Standard (non-O) combat only.
5
+ *
6
+ * The upstream `struct player` carries a computed `struct player_state`
7
+ * (calc_bonuses) with to_h/to_d/ac/num_blows/skills/stat_ind; the port's
8
+ * Player does not yet compute that (player/calcs.ts defers it). Combat
9
+ * therefore takes an explicit PlayerCombatState alongside the Player, exactly
10
+ * as upstream separates `p` from `p->state`. num_blows is likewise injected.
11
+ *
12
+ * Knowledge / learning side effects (equip_learn_on_melee_attack,
13
+ * learn_brand_slay_from_melee) are wired at the GAME layer around pyAttack
14
+ * (game/player-turn.ts, game/cave-cmd.ts), keeping this module pure combat
15
+ * math; see obj/knowledge.ts and parity/ledger/obj-knowledge.yaml.
16
+ *
17
+ * Damage now routes through the shared mon_take_hit primitive (mon/take-hit.ts)
18
+ * so a blow generates monster fear (gap 2.4); the full py_attack side-effect
19
+ * suite (gap 2.5) - blow_side_effects (TMD_ATT_CONF), the vampiric drain
20
+ * (TMD_ATT_VAMP), OF_IMPACT earthquakes, bloodlust over-exertion, the
21
+ * shapechange verb, splash, shield bash and the PF_COMBAT_REGEN mana reward -
22
+ * is interleaved at the faithful RNG points via optional MeleeEffectHooks. A
23
+ * caller supplying no hooks (e.g. the effect handlers) still rolls fear but
24
+ * skips the state-mutating side effects, exactly as those simplified paths do.
25
+ *
26
+ * DEFERRED (ledgered in parity/ledger/combat-melee.yaml):
27
+ * - Message text/formatting (the combat code returns the HitType key only).
28
+ *
29
+ * O-combat (birth_percent_damage) IS ported: oMeleeDamage / o_critical_melee,
30
+ * gated in pyAttackReal at the same point upstream branches (player-attack.c
31
+ * L803/L811/L826). With the option off the path is byte-identical to standard.
32
+ */
33
+ import type { Rng } from "../rng.js";
34
+ import type { Brand, Slay } from "../obj/types.js";
35
+ import type { GameObject } from "../obj/object.js";
36
+ import type { Monster } from "../mon/monster.js";
37
+ import type { MonTakeHitHooks } from "../mon/take-hit.js";
38
+ import type { Player } from "../player/player.js";
39
+ import type { HitType } from "./hit.js";
40
+ import type { TempBrandSlay } from "./brand-slay.js";
41
+ /**
42
+ * The subset of upstream `struct player_state` that combat reads. Supplied by
43
+ * the caller (calc_bonuses is deferred in player/calcs.ts).
44
+ */
45
+ export interface PlayerCombatState {
46
+ /** state->to_h. */
47
+ toH: number;
48
+ /** state->to_d. */
49
+ toD: number;
50
+ /** state->ac. */
51
+ ac: number;
52
+ /** state->to_a. */
53
+ toA: number;
54
+ /** state->skills[SKILL_MAX], indexed by SKILL. */
55
+ skills: readonly number[];
56
+ /** state->num_blows, in hundredths of a blow (100 = one blow). */
57
+ numBlows: number;
58
+ /** state->ammo_mult (ranged). */
59
+ ammoMult: number;
60
+ /** state->num_shots, in tenths of a shot (10 = one shot). */
61
+ numShots: number;
62
+ /** state->ammo_tval: the ammo tval the equipped launcher fires (0 = none). */
63
+ ammoTval: number;
64
+ /** state->bless_wield (blessed weapon / holy-wield bonus). */
65
+ blessWield: boolean;
66
+ }
67
+ /**
68
+ * The state-mutating side effects of a melee blow (player-attack.c:669-978),
69
+ * all optional. combat/melee.ts draws every RNG at the faithful point whenever
70
+ * the triggering condition (the boolean flags below) is met, keeping the stream
71
+ * faithful; the callback then applies the game-state change. A caller that
72
+ * omits a callback leaves that effect's state change a no-op while still
73
+ * drawing its RNG, matching the simplified effect-handler melee paths.
74
+ */
75
+ export interface MeleeEffectHooks {
76
+ /** mon_take_hit hooks (kill / become_aware / cover-tracks / arena death). */
77
+ takeHit?: MonTakeHitHooks;
78
+ /** p->timed[TMD_ATT_CONF] > 0: the confusion-brand side effect is armed. */
79
+ attConf?: boolean;
80
+ /** player_clear_timed(p, TMD_ATT_CONF): spend the confusion brand. */
81
+ clearAttConf?: () => void;
82
+ /** mon_inc_timed(mon, MON_TMD_CONF, dur, NOTIFY). */
83
+ confuseMonster?: (mon: Monster, dur: number) => void;
84
+ /** p->timed[TMD_ATT_VAMP] > 0: the vampiric drain is armed. */
85
+ attVamp?: boolean;
86
+ /** effect_simple(EF_HEAL_HP, drain): heal the player by the amount drained. */
87
+ healPlayer?: (amount: number) => void;
88
+ /** p->timed[TMD_BLOODLUST] > 0: bloodlust over-exertion is armed. */
89
+ bloodlust?: boolean;
90
+ /** player_over_exert(p, PY_EXERT_SCRAMBLE, 20, 20) on a missed bloodlust blow. */
91
+ overExertScramble?: () => void;
92
+ /** player_over_exert(p, PY_EXERT_CON, 20, 0) on a landed bloodlust blow. */
93
+ overExertCon?: () => void;
94
+ /** player_of_has(p, OF_IMPACT): earthquake brand present. */
95
+ impact?: boolean;
96
+ /** equip_learn_flag(p, OF_IMPACT), run when the quake condition trips. */
97
+ learnImpact?: () => void;
98
+ /** effect_simple(EF_EARTHQUAKE, rad 10) at the player; draws its own RNG. */
99
+ earthquake?: () => void;
100
+ /** square_monster(cave, grid) == null after the quake (monster gone/moved). */
101
+ monsterGone?: () => boolean;
102
+ /**
103
+ * PF_COMBAT_REGEN: reward the player with 5% of max SP before the blows
104
+ * (player-attack.c L1002); present only when the player has the flag.
105
+ */
106
+ combatRegen?: () => void;
107
+ /**
108
+ * PF_SHIELD_BASH (player-attack.c L1009): present only when the player has
109
+ * the flag; the bash also needs a visible monster.
110
+ */
111
+ shieldBash?: ShieldBashDeps;
112
+ /**
113
+ * player_is_shapechanged: the shape's blow verbs (p->shape->blows). When
114
+ * present a random one replaces the attack verb, drawing randint0(len).
115
+ */
116
+ shapeBlows?: readonly string[];
117
+ /**
118
+ * Temporary brands/slays (improve_attack_modifier(p, NULL, ...)); consulted
119
+ * only on the melee path, exactly as upstream.
120
+ */
121
+ temp?: TempBrandSlay;
122
+ }
123
+ /** Options for a melee attack. */
124
+ export interface MeleeOptions {
125
+ /** monster_is_visible(mon); a non-visible target halves the to-hit. */
126
+ monVisible?: boolean;
127
+ /** player_of_has(p, OF_AFRAID); an afraid player cannot attack. */
128
+ afraid?: boolean;
129
+ /**
130
+ * Off-weapon equipped items (body slots >= 2) carrying brands/slays, in
131
+ * slot order. Upstream iterates these before the weapon.
132
+ */
133
+ offhand?: readonly GameObject[];
134
+ /** p->energy for the blow loop (defaults to moveEnergy: one full turn). */
135
+ energy?: number;
136
+ /** z_info->move_energy (constants.txt; 100 upstream). */
137
+ moveEnergy?: number;
138
+ /**
139
+ * OPT(p, birth_percent_damage): route damage through the O-combat path
140
+ * (oMeleeDamage) instead of the standard melee_damage + critical_melee.
141
+ * Off by default; when off, RNG draws are byte-identical to the standard
142
+ * path (the gate adds/reorders nothing).
143
+ */
144
+ percentDamage?: boolean;
145
+ /** The blow side effects (gap 2.5); omitted by pure-math / effect callers. */
146
+ hooks?: MeleeEffectHooks;
147
+ }
148
+ /** The outcome of a single blow (py_attack_real). */
149
+ export interface MeleeBlow {
150
+ hit: boolean;
151
+ damage: number;
152
+ msg: HitType;
153
+ verb: string;
154
+ /** Brand index used (0 = none). */
155
+ brand: number;
156
+ /** Slay index used (0 = none). */
157
+ slay: number;
158
+ /** The monster was killed by the blow (mon_take_hit died). */
159
+ monsterDied: boolean;
160
+ /**
161
+ * The upstream `stop` value: the monster died, OR the impact quake removed
162
+ * or moved it (blow_after_effects). Ends the blow loop; equals monsterDied
163
+ * whenever no earthquake hook fires.
164
+ */
165
+ stopAttack: boolean;
166
+ /** The blow newly frightened the monster (mon_take_hit's *fear out-param). */
167
+ fear: boolean;
168
+ }
169
+ /** The outcome of a full attack (py_attack). */
170
+ export interface MeleeAttack {
171
+ blows: MeleeBlow[];
172
+ totalDamage: number;
173
+ monsterDied: boolean;
174
+ /**
175
+ * The monster survived and was left frightened and visible: py_attack's
176
+ * end-of-loop add_monster_message(MON_MSG_FLEE_IN_TERROR). The caller emits
177
+ * the "flees in terror" line.
178
+ */
179
+ monsterFled: boolean;
180
+ /**
181
+ * p->upkeep->energy_use as py_attack leaves it: blow_energy per blow landed
182
+ * plus any shield-bash stumble. May be less than a full move_energy (e.g.
183
+ * two 40-energy blows leave 80), exactly as upstream.
184
+ */
185
+ energyUsed: number;
186
+ }
187
+ /**
188
+ * chance_of_melee_hit_base: the player's melee to-hit before the target.
189
+ */
190
+ export declare function chanceOfMeleeHitBase(state: PlayerCombatState, weapon: GameObject | null): number;
191
+ /**
192
+ * chance_of_melee_hit: to-hit against a specific monster (half if unseen).
193
+ */
194
+ export declare function chanceOfMeleeHit(state: PlayerCombatState, weapon: GameObject | null, monVisible: boolean): number;
195
+ /**
196
+ * melee_damage: base weapon dice, times the best slay or brand multiplier,
197
+ * plus the weapon's to-dam. Standard (non-O) combat.
198
+ */
199
+ export declare function meleeDamage(rng: Rng, mon: Monster, weapon: GameObject | null, brand: number, slay: number, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[]): number;
200
+ /** The (possibly critical-boosted) damage of a single blow plus its message. */
201
+ export interface DamageOutcome {
202
+ damage: number;
203
+ msg: HitType;
204
+ }
205
+ /**
206
+ * o_melee_damage (player-attack.c L501): the birth_percent_damage melee path.
207
+ * Deadliness and the slay/brand o_multiplier add extra SIDES to the damage
208
+ * dice; criticals add extra DICE. Unlike the standard path, the player's
209
+ * to-dam (player_damage_bonus) is folded in here via deadliness, so the caller
210
+ * must NOT add state.toD afterwards (upstream skips it under the option gate).
211
+ *
212
+ * RNG order, matching upstream exactly:
213
+ * 1. randint0(10000) - the fractional-sides roll (drawn even when unarmed).
214
+ * 2. (weapon only) o_critical_melee: randint1(chance_den) crit test, then on
215
+ * a crit the one_in_ level walk.
216
+ * 3. damroll(dice, sides).
217
+ */
218
+ export declare function oMeleeDamage(rng: Rng, state: PlayerCombatState, mon: Monster, weapon: GameObject | null, brand: number, slay: number, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[]): DamageOutcome;
219
+ /**
220
+ * py_attack_real: a single melee blow against the monster (player-attack.c
221
+ * L717). Mutates mon.hp on a damaging hit (through mon_take_hit, which also
222
+ * rolls fear), and interleaves the blow side effects via opts.hooks at the
223
+ * faithful RNG points. Returns the blow outcome; blow.monsterDied is the
224
+ * upstream `stop` value and blow.fear is mon_take_hit's *fear out-param.
225
+ */
226
+ export declare function pyAttackReal(rng: Rng, p: Player, state: PlayerCombatState, weapon: GameObject | null, mon: Monster, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[], opts?: MeleeOptions): MeleeBlow;
227
+ /**
228
+ * The player-state / equipment inputs attempt_shield_bash reads beyond the
229
+ * combat state (player-attack.c:897-978). Present on MeleeEffectHooks only when
230
+ * the player has PF_SHIELD_BASH.
231
+ */
232
+ export interface ShieldBashDeps {
233
+ /** slot_object(p, slot_by_name(p, "arm")): the equipped shield, if any. */
234
+ shield: GameObject | null;
235
+ /** state->stat_ind[STAT_DEX] (indexes adj_dex_th). */
236
+ dexInd: number;
237
+ /** state->stat_ind[STAT_STR] (indexes adj_str_td). */
238
+ strInd: number;
239
+ /** p->wt: the player's body weight. */
240
+ playerWt: number;
241
+ /** p->upkeep->total_weight: carried weight. */
242
+ totalWeight: number;
243
+ /** OPT(p, show_damage): append " (N)" to the bash message. */
244
+ showDamage?: boolean;
245
+ /** msg sink for "You get in a shield bash!" / "WHAMM!" / "You stumble!". */
246
+ msg?: (text: string) => void;
247
+ /** mon_inc_timed(mon, MON_TMD_STUN, dur, 0). */
248
+ stunMonster?: (mon: Monster, dur: number) => void;
249
+ /** mon_inc_timed(mon, MON_TMD_CONF, dur, 0). */
250
+ confuseMonster?: (mon: Monster, dur: number) => void;
251
+ }
252
+ /**
253
+ * py_attack (player-attack.c L988): land blows until the next blow would
254
+ * exceed the energy available for a single turn, or the monster dies.
255
+ * blow_energy = 100 * move_energy / num_blows; energy defaults to a full
256
+ * turn's worth. Runs the PF_COMBAT_REGEN mana reward and the shield bash
257
+ * before the blow loop, accumulates the fear flag across blows, and reports
258
+ * the delayed "flees in terror" condition and the energy actually used.
259
+ */
260
+ export declare function pyAttack(rng: Rng, p: Player, state: PlayerCombatState, weapon: GameObject | null, mon: Monster, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[], opts?: MeleeOptions): MeleeAttack;
261
+ //# sourceMappingURL=melee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"melee.d.ts","sourceRoot":"","sources":["../../src/combat/melee.ts"],"names":[],"mappings":"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"}