@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,372 @@
1
+ /**
2
+ * Player ranged commands: fire (do_cmd_fire) and throw (do_cmd_throw), the
3
+ * command front-ends of reference/src/player-attack.c (Angband 4.2.6). The hit
4
+ * math is combat/ranged.ts (make_ranged_shot / make_ranged_throw); this is
5
+ * ranged_helper - resolve the target, walk the missile along project_path, land
6
+ * a hit on the first monster in the way, then drop the missile (subject to
7
+ * breakage) where it comes to rest.
8
+ *
9
+ * The missile addresses its object by gear handle (args.handle) and its target
10
+ * by args.dir (keypad 1-9, or DIR_TARGET = 5 to use the current target), which
11
+ * the UI resolves before the command runs, exactly as cmd_get_item /
12
+ * cmd_get_target do upstream.
13
+ *
14
+ * Ported here (player-attack.c ranged_helper): TMD_POWERSHOT piercing
15
+ * (player-attack.c:1092-1095,1198-1201,1217-1219), the ay+ax/2 distance to-hit
16
+ * penalty (cave-view.c:38 via loc.ts distance, gap 2.6), and the full
17
+ * mon_take_hit routing so ranged hits generate fear, "flees in terror", and
18
+ * message_pain (player-attack.c:1191-1195, gap 2.4).
19
+ *
20
+ * DEFERRED (ledgered in parity/ledger/ranged-cmd.yaml): the out-of-range "Fire
21
+ * anyway?" prompt (UI) and the crit-flavour line (the hit verb still varies).
22
+ * The show_damage " (N)" suffix is now wired (player-attack.c:1168-1170), and
23
+ * the invisible-monster "finds a mark" branch is now ported
24
+ * (player-attack.c:1156-1159) - it had been listed here as deferred, which is
25
+ * exactly how a missing player-visible message stays missing.
26
+ * Missile / equipment / brand-slay learn-on-attack is wired below (W2-001/002/
27
+ * 010/011; player-attack.c:1137-1140, 1255-1259, 1296-1299).
28
+ */
29
+ import { MON_MSG, MSG, RF, STAT, TMD } from "../generated/index.js";
30
+ import { distance, loc } from "../loc.js";
31
+ import { adj_str_blow } from "../player/calcs.js";
32
+ import { makeRangedShot, makeRangedThrow, breakageChance } from "../combat/ranged.js";
33
+ import { learnBrandSlayFromLaunch, learnBrandSlayFromThrow, } from "../combat/brand-slay.js";
34
+ import { equipLearnOnRangedAttack, missileLearnOnRangedAttack, } from "../obj/knowledge.js";
35
+ import { objectWeightOne, tvalIsAmmo, tvalIsSharpMissile } from "../obj/object.js";
36
+ import { ODESC } from "../obj/desc.js";
37
+ import { projectPath } from "../world/project.js";
38
+ import { monsterIsObvious, monsterIsDestroyed, monsterIsVisible } from "../mon/predicate.js";
39
+ import { getLore } from "../mon/lore.js";
40
+ import { monTakeHit } from "../mon/take-hit.js";
41
+ import { playerClearTimed } from "../player/timed.js";
42
+ import { gearGet, gearObjectForUse } from "./gear.js";
43
+ import { dropNear, floorPile, floorObjectForUse, itemIsAvailable } from "./floor.js";
44
+ import { invenTakeoff, playerConfuseDir } from "./obj-cmd.js";
45
+ import { squareMonster, deleteMonster, arenaInterceptDeath } from "./context.js";
46
+ import { targetOkay, targetGet, targetSetClosest, TARGET } from "./target.js";
47
+ import { describeObject } from "./describe.js";
48
+ import { formatMonsterMessage, formatPainMessage, monMessageSoundType } from "./mon-message.js";
49
+ /* Keypad direction deltas (ddx/ddy), indexed by keypad digit 1..9. */
50
+ const DDX = [0, -1, 0, 1, -1, 0, 1, -1, 0, 1];
51
+ const DDY = [0, 1, 1, 1, 0, 0, 0, -1, -1, -1];
52
+ /**
53
+ * ranged_helper (player-attack.c L34): fly the missile from the player toward
54
+ * `target`, attacking the first monster along the path. `throwing` selects the
55
+ * thrown vs launcher hit resolver. Returns whether a monster was struck (so the
56
+ * missile's breakage uses the higher hit-chance) and where the missile landed.
57
+ */
58
+ function rangedHelper(state, missile, launcher, dir, range, throwing) {
59
+ const player = state.actor.player;
60
+ const start = state.actor.grid;
61
+ /* Predict the target grid: the current target for DIR_TARGET, else far along
62
+ * the chosen direction. */
63
+ let target;
64
+ if (dir === 5 && targetOkay(state)) {
65
+ target = targetGet(state);
66
+ }
67
+ else {
68
+ /* KNOWN LIMIT, not a fix: an unusable DIR_TARGET arriving here aims at the
69
+ * player's OWN grid, because DDX[5]/DDY[5] are both 0 - a missile spent on a
70
+ * zero-length path. Upstream cannot reach this state: cmd_get_target
71
+ * (cmd-core.c:955-969) re-validates a stored direction and RE-PROMPTS when
72
+ * `*target == DIR_TARGET && !target_okay()`. Core has no prompt to re-open, so
73
+ * closing this properly means the caller re-validating before it queues the
74
+ * command, not clamping here (clamping would fire in a direction the player
75
+ * never chose). The web shell's aimDir does validate, so no live path reaches
76
+ * it today; the agent/borg act seams are what could. */
77
+ const dd = dir >= 1 && dir <= 9 ? dir : 5;
78
+ target = loc(start.x + 99 * DDX[dd], start.y + 99 * DDY[dd]);
79
+ }
80
+ /* sound(MSG_SHOOT): the loose (do_cmd_fire / do_cmd_throw). */
81
+ state.sound?.(MSG.SHOOT);
82
+ const path = projectPath(state.chunk, range, start, target, 0);
83
+ /* Piercing: TMD_POWERSHOT lets a sharp missile pass through ammo_mult
84
+ * monsters (player-attack.c:1092-1095); every other shot stops at one. */
85
+ let pierce = 1;
86
+ if ((player.timed[TMD.POWERSHOT] ?? 0) > 0 && tvalIsSharpMissile(missile.tval)) {
87
+ pierce = state.actor.combat.ammoMult;
88
+ }
89
+ let hit = false;
90
+ let landing = start;
91
+ for (const grid of path) {
92
+ /* Stop before hitting an impassable, non-projectable wall. */
93
+ if (!state.chunk.isPassable(grid) && !state.chunk.isProjectable(grid))
94
+ break;
95
+ landing = grid;
96
+ const mon = squareMonster(state, grid);
97
+ if (!mon) {
98
+ /* Stop if non-projectable but passable (player-attack.c:1204-1206): the
99
+ * missile breaks against terrain it cannot pass through, e.g. rubble. */
100
+ if (!state.chunk.isProjectable(grid))
101
+ break;
102
+ continue;
103
+ }
104
+ const monObvious = monsterIsObvious(mon);
105
+ /* Distance penalty uses the ay + ax/2 metric (cave-view.c:38), not the
106
+ * Chebyshev max, so diagonal shots are penalized faithfully (gap 2.6). */
107
+ const dist = distance(start, grid);
108
+ const percentDamage = state.options?.get("birth_percent_damage") ?? false;
109
+ const result = throwing
110
+ ? makeRangedThrow(state.rng, player, state.actor.combat, missile, mon, state.brands, state.slays, dist, monObvious, percentDamage)
111
+ : makeRangedShot(state.rng, player, state.actor.combat, missile, launcher, mon, state.brands, state.slays, dist, monObvious, percentDamage);
112
+ if (result.success) {
113
+ hit = true;
114
+ /*
115
+ * Learn-on-hit (player-attack.c). All learning is RNG-free; it sits after
116
+ * make_ranged_*'s to-hit/damage/crit draws and before mon_take_hit's fear
117
+ * roll, matching the C draw order:
118
+ * make_ranged_shot: missile_learn(bow) then learn_brand_slay_from_launch
119
+ * make_ranged_throw: learn_brand_slay_from_throw
120
+ * ranged_helper: missile_learn(obj) then equip_learn_on_ranged_attack
121
+ * then object_desc (with up-to-date knowledge) then mon_take_hit
122
+ */
123
+ const monVisible = monsterIsVisible(mon);
124
+ const learnMon = {
125
+ race: mon.race,
126
+ visible: monVisible,
127
+ lore: getLore(state.lore, mon.race),
128
+ };
129
+ if (throwing) {
130
+ learnBrandSlayFromThrow(player, state.runeEnv, missile, learnMon);
131
+ }
132
+ else {
133
+ if (launcher)
134
+ missileLearnOnRangedAttack(player, state.runeEnv, launcher);
135
+ learnBrandSlayFromLaunch(player, state.runeEnv, missile, launcher, learnMon);
136
+ }
137
+ missileLearnOnRangedAttack(player, state.runeEnv, missile);
138
+ equipLearnOnRangedAttack(player, state.runeEnv);
139
+ /* Describe after learning so the message reflects new knowledge
140
+ * (player-attack.c:1137-1147). */
141
+ const oName = describeObject(state, missile, ODESC.FULL | ODESC.SINGULAR);
142
+ const mName = mon.race.flags.has(RF.UNIQUE)
143
+ ? mon.race.name
144
+ : `the ${mon.race.name}`;
145
+ let dmg = result.damage;
146
+ if (dmg <= 0)
147
+ dmg = 0;
148
+ /* OPT(player, show_damage) (player-attack.c:1168-1170): the hit line
149
+ * carries " (N)". Built after the dmg<=0 clamp, as upstream is, so a
150
+ * harmless hit reads " (0)". */
151
+ const dmgText = state.options?.get("show_damage") ? ` (${dmg})` : "";
152
+ /* `visible` in the C is monster_is_obvious (player-attack.c:1120), NOT
153
+ * monster_is_visible: a mimic still camouflaged as an item is "seen" but
154
+ * is not obviously a monster, so upstream will not name it. The learn
155
+ * paths above are the ones that use monster_is_visible (obj-slays.c:568),
156
+ * which is why the two are kept apart here. */
157
+ if (!monsterIsObvious(mon)) {
158
+ /* Invisible monster (player-attack.c:1156-1159). The port had no such
159
+ * branch, so shooting something unseen produced a message naming a
160
+ * monster the player has no business knowing about. */
161
+ state.msg?.(`The ${oName} finds a mark.`, MSG.SHOOT_HIT);
162
+ }
163
+ else if (dmg <= 0) {
164
+ state.msg?.(`Your ${oName} fails to harm ${mName}${dmgText}.`, MSG.SHOOT_HIT);
165
+ }
166
+ else {
167
+ state.msg?.(`Your ${oName} ${result.verb} ${mName}${dmgText}.`, MSG.SHOOT_HIT);
168
+ }
169
+ state.sound?.(MSG.SHOOT_HIT);
170
+ /* health_track (player-attack.c:1183-1187): an OBVIOUS hit - not merely a
171
+ * visible one - makes the victim the tracked monster. Covers fire AND
172
+ * throw, since both route through here. Upstream's order is after the
173
+ * message and before mon_take_hit. */
174
+ if (monObvious)
175
+ state.healthWho = mon;
176
+ /* Route damage through mon_take_hit so a survivor rolls fear and a kill
177
+ * is handled uniformly (player-attack.c:1191). Death messaging stays
178
+ * explicit here (empty note), matching the port's ranged death lines. */
179
+ const res = monTakeHit(state.rng, mon, dmg, "", {
180
+ ...(state.becomeAware ? { becomeAware: state.becomeAware } : {}),
181
+ ...(state.arenaLevel
182
+ ? { onArenaDeath: (m) => void arenaInterceptDeath(state, m) }
183
+ : {}),
184
+ });
185
+ if (res.died) {
186
+ if (!state.arenaLevel) {
187
+ const dieMsg = monsterIsDestroyed(mon) ? MON_MSG.DESTROYED : MON_MSG.DIE;
188
+ const text = formatMonsterMessage(mon, dieMsg);
189
+ /* get_message_type (mon-msg.c:450): a unique's death plays
190
+ * MSG_KILL_UNIQUE (MSG_KILL_KING for Morgoth's base). */
191
+ const type = monMessageSoundType(dieMsg, mon.race);
192
+ if (text)
193
+ state.msg?.(text, type);
194
+ state.sound?.(type);
195
+ state.onPlayerKill?.(mon);
196
+ deleteMonster(state, mon.midx);
197
+ }
198
+ }
199
+ else {
200
+ /* message_pain, then the delayed flee message (player-attack.c:1192). */
201
+ const pain = formatPainMessage(mon, dmg);
202
+ if (pain)
203
+ state.msg?.(pain);
204
+ if (res.fear && monsterIsObvious(mon)) {
205
+ const flee = formatMonsterMessage(mon, MON_MSG.FLEE_IN_TERROR);
206
+ if (flee)
207
+ state.msg?.(flee);
208
+ }
209
+ }
210
+ }
211
+ /* No else: ranged_helper prints nothing on a miss (player-attack.c:1132
212
+ * has an if(result.success) block and no else branch), R3. */
213
+ /* Stop the missile, or reduce its piercing effect (player-attack.c:1198). */
214
+ pierce--;
215
+ if (pierce > 0)
216
+ continue;
217
+ break;
218
+ }
219
+ /* Terminate piercing (player-attack.c:1217): player_clear_timed(p,
220
+ * TMD_POWERSHOT, true, false) - routed through the grade machinery for the
221
+ * on-end message when the world env is wired (RNG-free either way). */
222
+ if ((player.timed[TMD.POWERSHOT] ?? 0) > 0) {
223
+ const eff = state.world?.timedTable?.[TMD.POWERSHOT];
224
+ if (eff) {
225
+ playerClearTimed(player, eff, true, false, state.world?.timedHooks ?? {});
226
+ }
227
+ else {
228
+ player.timed[TMD.POWERSHOT] = 0;
229
+ }
230
+ }
231
+ return { hit, landing };
232
+ }
233
+ /** Install the fire and throw commands over the live action registry. */
234
+ export function installRangedCommands(registry) {
235
+ registry.register("fire", (state, cmd) => {
236
+ const player = state.actor.player;
237
+ const args = cmd.args ?? {};
238
+ /* The equipped launcher. do_cmd_fire duplicates player_can_fire's body
239
+ * inline (player-attack.c:1334-1338 vs player-util.c:1206) rather than
240
+ * calling it; player_can_fire itself is only reached through
241
+ * player_can_fire_prereq (the 'f'/'t' key, ui-game.c:124) and the
242
+ * context-menu row check (ui-context.c:508). */
243
+ const bowSlot = player.body.slots.findIndex((s) => s.type === "BOW");
244
+ const launcher = bowSlot >= 0 ? gearGet(state.gear, player.equipment[bowSlot] ?? 0) : null;
245
+ if (!launcher || !state.actor.combat.ammoTval) {
246
+ state.msg?.("You have nothing to fire with.");
247
+ return 0;
248
+ }
249
+ const handle = typeof args["handle"] === "number" ? args["handle"] : -1;
250
+ const src = handle >= 0 ? gearGet(state.gear, handle) : null;
251
+ if (!src || !tvalIsAmmo(src.tval)) {
252
+ /* player-attack.c:1325 cmd_get_item error string (obj_can_fire filter). */
253
+ state.msg?.("You have no suitable ammunition to fire.");
254
+ return 0;
255
+ }
256
+ /* item_is_available (player-attack.c:1338): the ammo must still be within
257
+ * reach. This is the "two fire commands queued for the same stack" case -
258
+ * the second one names ammo that is already gone, and the port reported it
259
+ * as unsuitable ammunition rather than out of reach. */
260
+ if (!itemIsAvailable(state, src)) {
261
+ state.msg?.("That item is not within your reach.");
262
+ return 0;
263
+ }
264
+ if (src.tval !== state.actor.combat.ammoTval) {
265
+ state.msg?.("That ammo cannot be fired by your current weapon.");
266
+ return 0;
267
+ }
268
+ let dir = typeof args["dir"] === "number" ? args["dir"] : (cmd.dir ?? 5);
269
+ /* do_cmd_fire calls player_confuse_dir immediately after cmd_get_target
270
+ * (player-attack.c:1349-1352), including its confusion RNG draw. */
271
+ dir = playerConfuseDir(state, dir);
272
+ /* Take one missile out of the stack. */
273
+ const { obj: missile } = gearObjectForUse(state.gear, player, handle, 1);
274
+ /* Fire range (player-attack.c:1310): MIN(6 + 2 * ammo_mult, max_range) -
275
+ * the LAUNCHER damage multiplier (state.ammo_mult), not the shots-per-turn
276
+ * rate of fire. */
277
+ const range = Math.min(6 + 2 * state.actor.combat.ammoMult, state.z.maxRange);
278
+ const { hit, landing } = rangedHelper(state, missile, launcher, dir, range, false);
279
+ /* Drop the (surviving) missile where it landed. */
280
+ dropNear(state, missile, breakageChance(missile, hit), landing, true, false, {});
281
+ const shots = Math.max(10, state.actor.combat.numShots);
282
+ return Math.trunc((state.z.moveEnergy * 10) / shots);
283
+ });
284
+ /**
285
+ * do_cmd_fire_at_nearest (player-attack.c:1412): the "fire at nearest visible
286
+ * monster" convenience (h in the original keyset, TAB in roguelike). Requires
287
+ * a usable launcher, picks the first eligible ammo from the quiver, targets
288
+ * the closest valid foe with TARGET_KILL | TARGET_QUIET (no "No Available
289
+ * Target." message on failure), then reuses do_cmd_fire with DIR_TARGET.
290
+ */
291
+ const fireHandler = registry.get("fire");
292
+ registry.register("fire-at-nearest", (state, _cmd) => {
293
+ const player = state.actor.player;
294
+ /* Require a usable launcher (player-attack.c:1417-1421). */
295
+ const bowSlot = player.body.slots.findIndex((s) => s.type === "BOW");
296
+ const launcher = bowSlot >= 0 ? gearGet(state.gear, player.equipment[bowSlot] ?? 0) : null;
297
+ if (!launcher || !state.actor.combat.ammoTval) {
298
+ state.msg?.("You have nothing to fire with.");
299
+ return 0;
300
+ }
301
+ /* Find first eligible ammo in the quiver (player-attack.c:1423-1431). */
302
+ let ammoHandle = -1;
303
+ for (const h of state.gear.quiver ?? []) {
304
+ if (!h)
305
+ continue;
306
+ const o = gearGet(state.gear, h);
307
+ if (!o || o.tval !== state.actor.combat.ammoTval)
308
+ continue;
309
+ ammoHandle = h;
310
+ break;
311
+ }
312
+ if (ammoHandle < 0) {
313
+ state.msg?.("You have no ammunition in the quiver to fire.");
314
+ return 0;
315
+ }
316
+ /* Require a foe (player-attack.c:1440). */
317
+ if (!targetSetClosest(state, TARGET.KILL | TARGET.QUIET))
318
+ return 0;
319
+ /* Fire! dir = DIR_TARGET (player-attack.c:1413,1443-1445). */
320
+ return fireHandler
321
+ ? fireHandler(state, { code: "fire", args: { handle: ammoHandle, dir: 5 } })
322
+ : 0;
323
+ });
324
+ registry.register("throw", (state, cmd) => {
325
+ const player = state.actor.player;
326
+ const args = cmd.args ?? {};
327
+ /* do_cmd_throw resolves the missile from equip | quiver | inven | floor
328
+ * (player-attack.c:1384-1389). A floor index takes USE_FLOOR; otherwise a
329
+ * gear handle covers pack/quiver/equipment. */
330
+ const floorIdx = typeof args["floor"] === "number" ? args["floor"] : -1;
331
+ const handle = typeof args["handle"] === "number" ? args["handle"] : -1;
332
+ let dir = typeof args["dir"] === "number" ? args["dir"] : (cmd.dir ?? 5);
333
+ /* do_cmd_throw calls player_confuse_dir immediately after cmd_get_target
334
+ * (player-attack.c:1392-1395), including its confusion RNG draw. */
335
+ dir = playerConfuseDir(state, dir);
336
+ let missile;
337
+ if (floorIdx >= 0) {
338
+ const src = floorPile(state, state.actor.grid)[floorIdx] ?? null;
339
+ if (!src) {
340
+ state.msg?.("You have nothing to throw.");
341
+ return 0;
342
+ }
343
+ missile = floorObjectForUse(state, src, 1).usable;
344
+ }
345
+ else {
346
+ const src = handle >= 0 ? gearGet(state.gear, handle) : null;
347
+ if (!src) {
348
+ state.msg?.("You have nothing to throw.");
349
+ return 0;
350
+ }
351
+ /* Auto-takeoff a wielded weapon before throwing it (player-attack.c:1397-
352
+ * 1400): obj_can_throw only lets an equipped melee weapon through, so a
353
+ * hit here is exactly that case. */
354
+ if (player.equipment.includes(handle)) {
355
+ invenTakeoff(state, handle);
356
+ }
357
+ missile = gearObjectForUse(state.gear, player, handle, 1).obj;
358
+ }
359
+ /* Throw range (player-attack.c:1366,1402-1403): str = adj_str_blow[
360
+ * stat_ind[STAT_STR]]; weight = MAX(object_weight_one(obj), 10); range =
361
+ * MIN(((str + 20) * 10) / weight, 10). Heavier objects fly less far. The
362
+ * hard cap is 10 (NOT z_info->max_range), and the STR-blow adjustment - not
363
+ * player level - drives it. */
364
+ const str = adj_str_blow[state.statInd?.[STAT.STR] ?? 0] ?? 0;
365
+ const weight = Math.max(objectWeightOne(missile), 10);
366
+ const range = Math.min(Math.trunc(((str + 20) * 10) / weight), 10);
367
+ const { hit, landing } = rangedHelper(state, missile, null, dir, range, true);
368
+ dropNear(state, missile, breakageChance(missile, hit), landing, true, false, {});
369
+ return state.z.moveEnergy;
370
+ });
371
+ }
372
+ //# sourceMappingURL=ranged-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranged-cmd.js","sourceRoot":"","sources":["../../src/game/ranged-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Creature scheduling, ported from process_monsters() and reset_monsters()
3
+ * in reference/src/mon-move.c plus the player-energy / turn-counter steps of
4
+ * run_game_loop() in reference/src/game-world.c (Angband 4.2.6).
5
+ *
6
+ * Each pass, every live monster is energised by its net speed and, once it
7
+ * has reached move_energy, spends a turn (in the upstream backwards scan
8
+ * order, highest slot first). process_monsters(minimum_energy) only touches
9
+ * monsters that already hold at least `minimum_energy`, which is how the loop
10
+ * lets monsters "with even more energy than the player" act before the
11
+ * player: it calls process_monsters(player_energy + 1) first. MFLAG_HANDLED
12
+ * stops a monster acting twice in one game turn; reset_monsters() clears it.
13
+ *
14
+ * The actual monster turn (the AI) is delegated to monster-turn.ts; the
15
+ * energy/regen/active/timed bookkeeping around it is here, exactly as the
16
+ * upstream process_monsters loop nests it.
17
+ */
18
+ import type { Monster } from "../mon/monster.js";
19
+ import type { GameState } from "./context.js";
20
+ /** regen_monster: heal 1/100 of max hp per regeneration (doubled by REGEN). */
21
+ export declare function regenMonster(mon: Monster, num: number): void;
22
+ /**
23
+ * restore_monsters (mon-move.c L2007): let the monsters on a level that was
24
+ * frozen under birth_levels_persist recover over the turns that elapsed while
25
+ * it was out of play. `numTurns = turn - cave->turn` (the game turn now minus
26
+ * the freeze turn stamped on the chunk). Each monster regenerates 1/100-hp per
27
+ * 100 elapsed turns, and its timed effects are reduced by the energy it would
28
+ * have gained over the elapsed turns (num_turns * turn_energy(mspeed) /
29
+ * move_energy). Processed high slot to low, exactly as upstream. Only called
30
+ * on the persist restore path; the numTurns <= 0 guard is defensive (the game
31
+ * turn never runs backwards, and status_red > 0 already gates the timed loop).
32
+ */
33
+ export declare function restoreMonsters(state: GameState, numTurns: number): void;
34
+ /**
35
+ * process_monsters(minimum_energy): energise and run every monster holding at
36
+ * least `minimum_energy`. Monsters are scanned high slot to low so a freshly
37
+ * killed monster (its slot cleared) is simply skipped.
38
+ */
39
+ export declare function processMonsters(state: GameState, minimumEnergy: number): void;
40
+ /** reset_monsters: clear MFLAG_HANDLED so every monster can act again. */
41
+ export declare function resetMonsters(state: GameState): void;
42
+ /**
43
+ * Give the player a game turn's worth of energy
44
+ * (player->energy += turn_energy(player->state.speed)).
45
+ */
46
+ export declare function givePlayerEnergy(state: GameState): void;
47
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/game/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAsBxE;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAwC7E;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAKpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Creature scheduling, ported from process_monsters() and reset_monsters()
3
+ * in reference/src/mon-move.c plus the player-energy / turn-counter steps of
4
+ * run_game_loop() in reference/src/game-world.c (Angband 4.2.6).
5
+ *
6
+ * Each pass, every live monster is energised by its net speed and, once it
7
+ * has reached move_energy, spends a turn (in the upstream backwards scan
8
+ * order, highest slot first). process_monsters(minimum_energy) only touches
9
+ * monsters that already hold at least `minimum_energy`, which is how the loop
10
+ * lets monsters "with even more energy than the player" act before the
11
+ * player: it calls process_monsters(player_energy + 1) first. MFLAG_HANDLED
12
+ * stops a monster acting twice in one game turn; reset_monsters() clears it.
13
+ *
14
+ * The actual monster turn (the AI) is delegated to monster-turn.ts; the
15
+ * energy/regen/active/timed bookkeeping around it is here, exactly as the
16
+ * upstream process_monsters loop nests it.
17
+ */
18
+ import { MFLAG, MON_TMD, RF } from "../generated/index.js";
19
+ import { monsterIsMimicking } from "../mon/predicate.js";
20
+ import { turnEnergy } from "./energy.js";
21
+ import { updateMonsterDistances } from "./context.js";
22
+ import { monDecTimed, monsterEffectLevel } from "../mon/timed.js";
23
+ import { getNonplayerHitDeps, monsterTakeTerrainDamage } from "./mon-death.js";
24
+ import { monsterCheckActive, monsterTurn, processMonsterTimed, } from "./monster-turn.js";
25
+ /** regen_monster: heal 1/100 of max hp per regeneration (doubled by REGEN). */
26
+ export function regenMonster(mon, num) {
27
+ if (mon.hp >= mon.maxhp)
28
+ return;
29
+ let frac = Math.trunc(mon.maxhp / 100);
30
+ if (!frac)
31
+ frac = 1;
32
+ if (mon.race.flags.has(RF.REGENERATE))
33
+ frac *= 2;
34
+ frac *= num;
35
+ mon.hp += frac;
36
+ if (mon.hp > mon.maxhp)
37
+ mon.hp = mon.maxhp;
38
+ }
39
+ /**
40
+ * restore_monsters (mon-move.c L2007): let the monsters on a level that was
41
+ * frozen under birth_levels_persist recover over the turns that elapsed while
42
+ * it was out of play. `numTurns = turn - cave->turn` (the game turn now minus
43
+ * the freeze turn stamped on the chunk). Each monster regenerates 1/100-hp per
44
+ * 100 elapsed turns, and its timed effects are reduced by the energy it would
45
+ * have gained over the elapsed turns (num_turns * turn_energy(mspeed) /
46
+ * move_energy). Processed high slot to low, exactly as upstream. Only called
47
+ * on the persist restore path; the numTurns <= 0 guard is defensive (the game
48
+ * turn never runs backwards, and status_red > 0 already gates the timed loop).
49
+ */
50
+ export function restoreMonsters(state, numTurns) {
51
+ if (numTurns <= 0)
52
+ return;
53
+ const moveEnergy = state.z.moveEnergy;
54
+ for (let i = state.monsters.length - 1; i >= 1; i--) {
55
+ const mon = state.monsters[i];
56
+ if (!mon)
57
+ continue;
58
+ /* Regenerate. */
59
+ regenMonster(mon, Math.trunc(numTurns / 100));
60
+ /* Handle timed effects. */
61
+ const statusRed = Math.trunc((numTurns * turnEnergy(mon.mspeed, moveEnergy)) / moveEnergy);
62
+ if (statusRed > 0) {
63
+ for (let status = 0; status < mon.mTimed.length; status++) {
64
+ if (mon.mTimed[status]) {
65
+ monDecTimed(state.rng, mon, status, statusRed, 0);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ /** The monster's net speed after FAST / SLOW timed effects. */
72
+ function netSpeed(mon) {
73
+ let mspeed = mon.mspeed;
74
+ if (mon.mTimed[MON_TMD.FAST] ?? 0)
75
+ mspeed += 10;
76
+ if (mon.mTimed[MON_TMD.SLOW] ?? 0) {
77
+ mspeed -= 2 * monsterEffectLevel(mon, MON_TMD.SLOW);
78
+ }
79
+ return mspeed;
80
+ }
81
+ /**
82
+ * process_monsters(minimum_energy): energise and run every monster holding at
83
+ * least `minimum_energy`. Monsters are scanned high slot to low so a freshly
84
+ * killed monster (its slot cleared) is simply skipped.
85
+ */
86
+ export function processMonsters(state, minimumEnergy) {
87
+ const regen = state.turn % 100 === 0;
88
+ /* update_mon keeps cdis current upstream; refresh it here before the AI
89
+ * (and the active/range checks) read it. */
90
+ updateMonsterDistances(state);
91
+ for (let i = state.monsters.length - 1; i >= 1; i--) {
92
+ if (state.isDead || state.generateLevel)
93
+ break;
94
+ const mon = state.monsters[i];
95
+ if (!mon)
96
+ continue;
97
+ if (mon.mflag.has(MFLAG.HANDLED))
98
+ continue;
99
+ if (mon.energy < minimumEnergy)
100
+ continue;
101
+ const moving = mon.energy >= state.z.moveEnergy;
102
+ mon.mflag.on(MFLAG.HANDLED);
103
+ if (regen)
104
+ regenMonster(mon, 1);
105
+ mon.energy += turnEnergy(netSpeed(mon), state.z.moveEnergy);
106
+ if (!moving)
107
+ continue;
108
+ /* Use up "some" energy. */
109
+ mon.energy -= state.z.moveEnergy;
110
+ /* Mimics lie in wait (mon-move.c L1947). */
111
+ if (monsterIsMimicking(mon))
112
+ continue;
113
+ if (monsterCheckActive(mon, state)) {
114
+ if (processMonsterTimed(mon, state))
115
+ continue;
116
+ monsterTurn(mon, state);
117
+ /* For symmetry with the player, the monster takes terrain damage
118
+ * after its turn (mon-move.c L1972). Needs the death deps installed
119
+ * by the session (installNonplayerHitDeps); inert otherwise. */
120
+ const deps = getNonplayerHitDeps(state);
121
+ if (deps)
122
+ monsterTakeTerrainDamage(state, mon, deps);
123
+ }
124
+ }
125
+ }
126
+ /** reset_monsters: clear MFLAG_HANDLED so every monster can act again. */
127
+ export function resetMonsters(state) {
128
+ for (let i = state.monsters.length - 1; i >= 1; i--) {
129
+ const mon = state.monsters[i];
130
+ if (mon)
131
+ mon.mflag.off(MFLAG.HANDLED);
132
+ }
133
+ }
134
+ /**
135
+ * Give the player a game turn's worth of energy
136
+ * (player->energy += turn_energy(player->state.speed)).
137
+ */
138
+ export function givePlayerEnergy(state) {
139
+ state.actor.energy += turnEnergy(state.actor.speed, state.z.moveEnergy);
140
+ }
141
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/game/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,GAAW;IACpD,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO;IAChC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,CAAC,CAAC;IACpB,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC;QAAE,IAAI,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,GAAG,CAAC;IACZ,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;IACf,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK;QAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAE,QAAgB;IAChE,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,iBAAiB;QACjB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,UAAU,CAC7D,CAAC;QACF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBAC1D,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvB,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,QAAQ,CAAC,GAAY;IAC5B,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,EAAE,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAE,aAAqB;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;IAErC;gDAC4C;IAC5C,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM;QAE/C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,SAAS;QAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,aAAa;YAAE,SAAS;QAEzC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,KAAK;YAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,2BAA2B;QAC3B,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAEjC,4CAA4C;QAC5C,IAAI,kBAAkB,CAAC,GAAG,CAAC;YAAE,SAAS;QAEtC,IAAI,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,SAAS;YAC9C,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxB;;4EAEgE;YAChE,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI;gBAAE,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC"}