@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,163 @@
1
+ /**
2
+ * Stealing objects from a monster, ported from reference/src/mon-util.c
3
+ * (Angband 4.2.6): get_random_monster_object (L1405) and steal_monster_item
4
+ * (L1430). This is the RNG core of the rogue / PF_STEAL "steal" command
5
+ * (do_cmd_steal, cmd-cave.c L1016) and, upstream, of the EAT_ITEM melee blow
6
+ * when the attacker's target is another monster (mon-blows.c L876).
7
+ *
8
+ * The heavy RNG order is the correctness crux, so it lives here worldless (like
9
+ * combat/mon-melee.ts): stealMonsterItem draws every roll in strict upstream
10
+ * order and mutates the monster's held pile directly, delegating the
11
+ * player-facing world work (gold gain, pack carry, drop_near, ignore checks,
12
+ * the hit-and-run teleport, EF_WAKE aggro) to the injected StealEnv. The game
13
+ * binding (game/steal.ts) supplies that env over the live GameState.
14
+ *
15
+ * RNG draw order (mon-util.c L1430-1539), verified against the C:
16
+ * 1. get_random_monster_object(mon): a reservoir pick over mon->held_obj -
17
+ * one_in_(i) for each non-quest-artifact held object, i counting from 1.
18
+ * 2. (no object) one_in_(3), then monster_wake(mon, false, 100) on success
19
+ * (which draws randint0(100) for awareness).
20
+ * 3. monster_reaction = guard/2 + randint1(MAX(guard, 1)); the item-weight
21
+ * term adds no RNG.
22
+ * 4. success (reaction < skill): pile_excise, then either gold gain, or a
23
+ * drop_near (its own breakage / grid RNG) when the item is ignored or the
24
+ * pack is full, or a plain inven_carry; then mon_dec_timed(SLEEP) (which
25
+ * may draw for its save), then the hit-and-run teleport when TMD_ATT_RUN.
26
+ * 5. decent fail (reaction/2 < skill): monster_wake(mon, true, 50).
27
+ * 6. bungle (else): monster_wake(mon, true, 100), then EF_WAKE aggro.
28
+ *
29
+ * DEFERRED (noted, no RNG impact): the object knowledge bookkeeping upstream
30
+ * threads here - object_grab / object_see / delist_object / object_delete - is
31
+ * the knowledge subsystem (#24), carried by the env's carry/gainGold seams; and
32
+ * react_to_slay blocking the monster-thief path (midx >= 0) is deferred exactly
33
+ * as the EAT_ITEM blow already defers it (game/mon-side.ts / mon-cmd.ts). The
34
+ * mon-vs-mon EAT_ITEM path wires stealMonsterItem from game/mon-cmd.ts.
35
+ */
36
+ import { KF } from "../generated/index.js";
37
+ import { getLore } from "./lore.js";
38
+ import { monsterIsUnique } from "./predicate.js";
39
+ import { monsterWake } from "./take-hit.js";
40
+ import { MON_TMD } from "../generated/index.js";
41
+ import { monDecTimed, MON_TMD_FLG_NOTIFY } from "./timed.js";
42
+ /**
43
+ * get_random_monster_object (mon-util.c L1405): pick one object from the
44
+ * monster's held pile with uniform probability, skipping quest artifacts. The
45
+ * reservoir draw (one_in_(i), i from 1) matches upstream exactly, so the choice
46
+ * is the same for a given RNG stream.
47
+ */
48
+ export function getRandomMonsterObject(rng, mon) {
49
+ let pick = null;
50
+ let i = 1;
51
+ for (const obj of mon.heldObj) {
52
+ /* Check it isn't a quest artifact. */
53
+ if (obj.artifact && obj.kind.kindFlags.has(KF.QUEST_ART))
54
+ continue;
55
+ if (rng.oneIn(i))
56
+ pick = obj;
57
+ i++;
58
+ }
59
+ return pick;
60
+ }
61
+ /** pile_excise(&mon->held_obj, obj): drop the object from the held pile. */
62
+ function pileExcise(mon, obj) {
63
+ const at = mon.heldObj.indexOf(obj);
64
+ if (at >= 0)
65
+ mon.heldObj.splice(at, 1);
66
+ }
67
+ /**
68
+ * steal_monster_item (mon-util.c L1430): the thief with index `midx` steals a
69
+ * random item from `mon`. `midx < 0` is the player (do_cmd_steal); `midx >= 0`
70
+ * is a monster thief (the EAT_ITEM blow against another monster). Every RNG
71
+ * draw is issued in strict upstream order; see the module header.
72
+ */
73
+ export function stealMonsterItem(rng, lore, mon, midx, env) {
74
+ /* Choose the victim item (drawn first, before anything else). */
75
+ const obj = getRandomMonsterObject(rng, mon);
76
+ const mName = env.monName(mon);
77
+ if (midx < 0) {
78
+ /* Base monster protection and player stealing skill. */
79
+ const unique = monsterIsUnique(mon);
80
+ let guard = Math.trunc((mon.race.level * (unique ? 4 : 3)) / 4) +
81
+ mon.mspeed -
82
+ env.playerSpeed;
83
+ let stealSkill = env.stealthSkill + env.dexToHit;
84
+ /* No object. */
85
+ if (!obj) {
86
+ env.msg(`You can find nothing to steal from ${mName}.`);
87
+ if (rng.oneIn(3)) {
88
+ /* Monster notices. */
89
+ monsterWake(rng, mon, false, 100);
90
+ }
91
+ return;
92
+ }
93
+ /* Penalize some status conditions. */
94
+ if (env.statusPenalty) {
95
+ stealSkill = Math.trunc(stealSkill / 4);
96
+ }
97
+ if (mon.mTimed[MON_TMD.SLEEP]) {
98
+ guard = Math.trunc(guard / 2);
99
+ }
100
+ /* Monster base reaction, plus allowance for item weight. */
101
+ let monsterReaction = Math.trunc(guard / 2) + rng.randint1(Math.max(guard, 1));
102
+ monsterReaction += Math.trunc((obj.number * env.objectWeight(obj)) / 20);
103
+ /* Try and steal. */
104
+ if (monsterReaction < stealSkill) {
105
+ const wake = 35 - env.stealthSkill;
106
+ /* Success! */
107
+ obj.heldMIdx = 0;
108
+ pileExcise(mon, obj);
109
+ if (env.isMoney(obj)) {
110
+ env.msg(`You steal ${obj.pval} gold pieces worth of treasure.`);
111
+ env.gainGold(obj);
112
+ }
113
+ else {
114
+ /* Drop immediately if ignored, or if inventory already full to
115
+ * prevent pack overflow. */
116
+ if (env.isIgnored(obj) || !env.canCarry(obj)) {
117
+ env.dropStolen(obj);
118
+ }
119
+ else {
120
+ env.carry(obj);
121
+ }
122
+ }
123
+ /* Track thefts. */
124
+ getLore(lore, mon.race).thefts++;
125
+ /* Monster wakes a little. */
126
+ monDecTimed(rng, mon, MON_TMD.SLEEP, wake, MON_TMD_FLG_NOTIFY);
127
+ }
128
+ else if (Math.trunc(monsterReaction / 2) < stealSkill) {
129
+ /* Decent attempt, at least. */
130
+ const oName = env.isMoney(obj) ? "treasure" : env.objectName(obj);
131
+ env.msg(`You fail to steal ${oName} from ${mName}.`);
132
+ /* Monster wakes, may notice. */
133
+ monsterWake(rng, mon, true, 50);
134
+ }
135
+ else {
136
+ /* Bungled it. */
137
+ monsterWake(rng, mon, true, 100);
138
+ env.msg(`${(env.monNameStandard ?? env.monName)(mon)} cries out in anger!`);
139
+ env.wakeAll?.(mon);
140
+ }
141
+ /* Player hit and run. */
142
+ if (env.attRun) {
143
+ env.hitAndRun?.();
144
+ }
145
+ }
146
+ else {
147
+ /* Monster thief (midx >= 0): mon-vs-mon EAT_ITEM (mon-cmd.ts). react_to_slay
148
+ * blocking the theft is DEFERRED (no RNG), as the player EAT_ITEM path. */
149
+ const tName = env.thiefName?.(midx) ?? "It";
150
+ if (!obj /* || react_to_slay(obj, thief) -- DEFERRED */) {
151
+ /* Fail to steal. */
152
+ env.msg(`${tName} tries to steal something from ${mName}, but fails.`);
153
+ }
154
+ else {
155
+ env.msg(`${tName} steals something from ${mName}!`);
156
+ /* Steal and carry. */
157
+ obj.heldMIdx = 0;
158
+ pileExcise(mon, obj);
159
+ env.thiefCarry?.(midx, obj);
160
+ }
161
+ }
162
+ }
163
+ //# sourceMappingURL=steal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steal.js","sourceRoot":"","sources":["../../src/mon/steal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAQ,EACR,GAAY;IAEZ,IAAI,IAAI,GAAsB,IAAI,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,sCAAsC;QACtC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YAAE,SAAS;QACnE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,IAAI,GAAG,GAAG,CAAC;QAC7B,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA6DD,4EAA4E;AAC5E,SAAS,UAAU,CAAC,GAAY,EAAE,GAAe;IAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC;QAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,IAAe,EACf,GAAY,EACZ,IAAY,EACZ,GAAa;IAEb,iEAAiE;IACjE,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,wDAAwD;QACxD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,GACP,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,GAAG,CAAC,MAAM;YACV,GAAG,CAAC,WAAW,CAAC;QAClB,IAAI,UAAU,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC;QAEjD,gBAAgB;QAChB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,GAAG,CAAC,sCAAsC,KAAK,GAAG,CAAC,CAAC;YACxD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,sBAAsB;gBACtB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACpC,CAAC;YACD,OAAO;QACT,CAAC;QAED,sCAAsC;QACtC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,4DAA4D;QAC5D,IAAI,eAAe,GACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,eAAe,IAAI,IAAI,CAAC,KAAK,CAC3B,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAC1C,CAAC;QAEF,oBAAoB;QACpB,IAAI,eAAe,GAAG,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC;YAEnC,cAAc;YACd,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,iCAAiC,CAAC,CAAC;gBAChE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN;4CAC4B;gBAC5B,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,mBAAmB;YACnB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAEjC,6BAA6B;YAC7B,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC;YACxD,+BAA+B;YAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClE,GAAG,CAAC,GAAG,CAAC,qBAAqB,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC;YACrD,gCAAgC;YAChC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACjC,GAAG,CAAC,GAAG,CACL,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,sBAAsB,CACnE,CAAC;YACF,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;SAAM,CAAC;QACN;mFAC2E;QAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,8CAA8C,EAAE,CAAC;YACxD,oBAAoB;YACpB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,kCAAkC,KAAK,cAAc,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,0BAA0B,KAAK,GAAG,CAAC,CAAC;YAEpD,sBAAsB;YACtB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Monster summon types, ported from reference/src/mon-summon.c (Angband
3
+ * 4.2.6): the summon table built from summon.txt (here the already-parsed
4
+ * summon.json records bound by bindMonsters) and the race-eligibility
5
+ * predicate summon_specific_okay.
6
+ *
7
+ * This module is the world-free half of mon-summon.c: the table lookups
8
+ * (summon_name_to_idx, summon_message_type, summon_fallback_type,
9
+ * summon_desc) and the "okay" test. The placement half (summon_specific,
10
+ * call_monster, select_shape) needs the live cave and lives in
11
+ * game/mon-place.ts.
12
+ *
13
+ * Divergences by design:
14
+ * - The upstream file-static summon_specific_type / kin_base globals become
15
+ * explicit parameters (type is passed to okay(); the kin base is captured
16
+ * by the caller from the summoner's race), so concurrent interpreters
17
+ * cannot trample each other.
18
+ * - message_type stays the msgt NAME (sound/message channels ride #26/#25);
19
+ * upstream resolves it to a message index at parse time.
20
+ */
21
+ import type { MonsterBase, MonsterRace, SummonType } from "./types.js";
22
+ /** One bound summon type (struct summon, resolved). */
23
+ export interface BoundSummon {
24
+ /** Position in the table (the EF_SUMMON subtype value). */
25
+ index: number;
26
+ name: string;
27
+ /** The message type NAME (msgt:); sound dispatch rides #26. */
28
+ messageType: string;
29
+ /** uniques: whether uniques may answer this summon. */
30
+ uniqueAllowed: boolean;
31
+ /** base: allowed monster bases (empty = no base restriction). */
32
+ bases: readonly MonsterBase[];
33
+ /** race-flag: required RF_ flag (0 = none). */
34
+ raceFlag: number;
35
+ /** fallback: the summon type used when this one fails (-1 = none). */
36
+ fallback: number;
37
+ desc: string;
38
+ }
39
+ /**
40
+ * The bound summon table (finish_parse_summon). Records bind in file order,
41
+ * matching the upstream reversed-linked-list copy, so a record's array
42
+ * position is its upstream summon index.
43
+ */
44
+ export declare class SummonTable {
45
+ readonly kinds: BoundSummon[];
46
+ constructor(records: readonly SummonType[], bases: ReadonlyMap<string, MonsterBase>);
47
+ /** summon_name_to_idx: the index for a summon name, or -1. */
48
+ nameToIdx(name: string): number;
49
+ /** summon_message_type: the msgt name for a summon type. */
50
+ messageType(type: number): string;
51
+ /** summon_fallback_type: the fallback index for a summon type (-1 none). */
52
+ fallbackType(type: number): number;
53
+ /** summon_desc: the description for a summon type. */
54
+ desc(type: number): string;
55
+ }
56
+ /**
57
+ * summon_specific_okay: whether a race may answer a summon of the given
58
+ * type. `kinBase` is the summoner's race base, read only by the KIN type
59
+ * (upstream's kin_base global, made a parameter).
60
+ */
61
+ export declare function summonSpecificOkay(table: SummonTable, type: number, race: MonsterRace, kinBase: MonsterBase | null): boolean;
62
+ //# sourceMappingURL=summon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summon.d.ts","sourceRoot":"","sources":["../../src/mon/summon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvE,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;gBAG5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC;IAmCzC,8DAA8D;IAC9D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO/B,4DAA4D;IAC5D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIjC,4EAA4E;IAC5E,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlC,sDAAsD;IACtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAG3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAuBT"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Monster summon types, ported from reference/src/mon-summon.c (Angband
3
+ * 4.2.6): the summon table built from summon.txt (here the already-parsed
4
+ * summon.json records bound by bindMonsters) and the race-eligibility
5
+ * predicate summon_specific_okay.
6
+ *
7
+ * This module is the world-free half of mon-summon.c: the table lookups
8
+ * (summon_name_to_idx, summon_message_type, summon_fallback_type,
9
+ * summon_desc) and the "okay" test. The placement half (summon_specific,
10
+ * call_monster, select_shape) needs the live cave and lives in
11
+ * game/mon-place.ts.
12
+ *
13
+ * Divergences by design:
14
+ * - The upstream file-static summon_specific_type / kin_base globals become
15
+ * explicit parameters (type is passed to okay(); the kin base is captured
16
+ * by the caller from the summoner's race), so concurrent interpreters
17
+ * cannot trample each other.
18
+ * - message_type stays the msgt NAME (sound/message channels ride #26/#25);
19
+ * upstream resolves it to a message index at parse time.
20
+ */
21
+ import { RF } from "../generated/index.js";
22
+ /**
23
+ * The bound summon table (finish_parse_summon). Records bind in file order,
24
+ * matching the upstream reversed-linked-list copy, so a record's array
25
+ * position is its upstream summon index.
26
+ */
27
+ export class SummonTable {
28
+ kinds;
29
+ constructor(records, bases) {
30
+ this.kinds = records.map((rec, index) => {
31
+ const bound = [];
32
+ for (const name of rec.baseNames) {
33
+ const base = bases.get(name);
34
+ if (!base)
35
+ throw new Error(`summon: unknown monster base ${name}`);
36
+ bound.push(base);
37
+ }
38
+ let raceFlag = 0;
39
+ if (rec.raceFlag) {
40
+ const value = RF[rec.raceFlag];
41
+ if (value === undefined || value === 0) {
42
+ throw new Error(`summon: bad race flag ${rec.raceFlag}`);
43
+ }
44
+ raceFlag = value;
45
+ }
46
+ return {
47
+ index,
48
+ name: rec.name,
49
+ messageType: rec.msgt,
50
+ uniqueAllowed: rec.uniquesAllowed,
51
+ bases: bound,
52
+ raceFlag,
53
+ fallback: -1,
54
+ desc: rec.desc,
55
+ };
56
+ });
57
+ /* Add indices of fallback summons (finish_parse_summon). */
58
+ for (let i = 0; i < this.kinds.length; i++) {
59
+ const name = records[i].fallbackName;
60
+ this.kinds[i].fallback = name ? this.nameToIdx(name) : -1;
61
+ }
62
+ }
63
+ /** summon_name_to_idx: the index for a summon name, or -1. */
64
+ nameToIdx(name) {
65
+ for (const kind of this.kinds) {
66
+ if (kind.name === name)
67
+ return kind.index;
68
+ }
69
+ return -1;
70
+ }
71
+ /** summon_message_type: the msgt name for a summon type. */
72
+ messageType(type) {
73
+ return this.kinds[type]?.messageType ?? "";
74
+ }
75
+ /** summon_fallback_type: the fallback index for a summon type (-1 none). */
76
+ fallbackType(type) {
77
+ return this.kinds[type]?.fallback ?? -1;
78
+ }
79
+ /** summon_desc: the description for a summon type. */
80
+ desc(type) {
81
+ return this.kinds[type]?.desc ?? "";
82
+ }
83
+ }
84
+ /**
85
+ * summon_specific_okay: whether a race may answer a summon of the given
86
+ * type. `kinBase` is the summoner's race base, read only by the KIN type
87
+ * (upstream's kin_base global, made a parameter).
88
+ */
89
+ export function summonSpecificOkay(table, type, race, kinBase) {
90
+ const summon = table.kinds[type];
91
+ if (!summon)
92
+ return false;
93
+ const unique = race.flags.has(RF.UNIQUE);
94
+ /* Forbid uniques? */
95
+ if (!summon.uniqueAllowed && unique)
96
+ return false;
97
+ /* A valid base and no match means disallowed. */
98
+ if (summon.bases.length > 0 && !summon.bases.some((b) => b === race.base)) {
99
+ return false;
100
+ }
101
+ /* A valid race flag and no match means disallowed. */
102
+ if (summon.raceFlag && !race.flags.has(summon.raceFlag))
103
+ return false;
104
+ /* Special case - summon kin. */
105
+ if (type === table.nameToIdx("KIN")) {
106
+ return !unique && race.base === kinBase;
107
+ }
108
+ /* If we made it here, we're fine. */
109
+ return true;
110
+ }
111
+ //# sourceMappingURL=summon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summon.js","sourceRoot":"","sources":["../../src/mon/summon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Applying damage to a monster, ported from reference/src/mon-util.c (Angband
3
+ * 4.2.6): mon_take_hit (L1264) and its helpers monster_wake (L686) and
4
+ * monster_scared_by_damage (L1137). This is the shared "a monster is hurt"
5
+ * primitive that projections (project_m), melee, ranged attacks, and the effect
6
+ * handlers all funnel damage through, so death, fear, and waking behave
7
+ * identically no matter what dealt the blow.
8
+ *
9
+ * The heavy player-facing consequences are injected as hooks so the damage /
10
+ * fear / wake logic ships and is tested independently of them:
11
+ * - onKill (player_kill_monster): experience, drops, death messages,
12
+ * uniqueness, quest completion - a large routine ported with the effect /
13
+ * command layer.
14
+ * - becomeAware (become_aware): revealing a camouflaged mimic - knowledge/UI.
15
+ * - coverTracksBroken: clearing the player's TMD_COVERTRACKS - player state.
16
+ *
17
+ * Deferred: the arena-level branch (arena mode is not modelled) and the
18
+ * PR_HEALTH redraw (a UI concern) are omitted; both are unreached by the ported
19
+ * callers.
20
+ */
21
+ import type { Rng } from "../rng.js";
22
+ import type { Monster } from "./monster.js";
23
+ /**
24
+ * monster_wake (mon-util.c L686): clear a monster's sleep timer and, with the
25
+ * given percentage chance, mark it aware of the player. `notify` selects
26
+ * whether the sleep clear emits a waking-up message.
27
+ */
28
+ export declare function monsterWake(rng: Rng, mon: Monster, notify: boolean, awareChance: number): void;
29
+ /**
30
+ * monster_scared_by_damage (mon-util.c L1137): pain can reduce, cancel, or
31
+ * newly cause fear. Returns true only when the hit newly frightens the monster.
32
+ * Called after the monster's hp has already been reduced by `dam`.
33
+ * `primaryGroupSize` is monster_primary_group_size(cave, mon), threaded into
34
+ * monster_can_be_scared's per-member group fear save; game callers pass the
35
+ * live group size (game/mon-group.ts), worldless callers default to 1 (lone).
36
+ */
37
+ export declare function monsterScaredByDamage(rng: Rng, mon: Monster, dam: number, primaryGroupSize?: number): boolean;
38
+ /** The player-facing consequences of a hit, supplied by the caller. */
39
+ export interface MonTakeHitHooks {
40
+ /** player_kill_monster: experience, drops, death messages, uniqueness. */
41
+ onKill?: (mon: Monster, note: string | null) => void;
42
+ /** become_aware: reveal a camouflaged mimic. */
43
+ becomeAware?: (mon: Monster) => void;
44
+ /** Clear the player's TMD_COVERTRACKS (a hit ends stealthy movement). */
45
+ coverTracksBroken?: () => void;
46
+ /**
47
+ * The arena branch (mon-util.c L1290): a lethal blow in single combat
48
+ * signals the level change instead of killing - the monster stays (at
49
+ * negative hp) until the arena exit finishes it. Passed by game
50
+ * callers while state.arenaLevel is set.
51
+ */
52
+ onArenaDeath?: (mon: Monster) => void;
53
+ /**
54
+ * monster_primary_group_size(cave, mon) for the fear roll's per-member
55
+ * group save (mon-predicate.c L296). Game callers pass the live size
56
+ * (game/mon-group.ts monsterPrimaryGroupSize); absent, 1 (a lone monster).
57
+ */
58
+ primaryGroupSize?: () => number;
59
+ }
60
+ /** The outcome of a hit: whether the monster died and whether it took fright. */
61
+ export interface MonTakeHitResult {
62
+ /** The monster's hp reached below zero and it was killed. */
63
+ died: boolean;
64
+ /** The monster was newly frightened by the blow (meaningless if it died). */
65
+ fear: boolean;
66
+ }
67
+ /**
68
+ * mon_take_hit (mon-util.c L1264): inflict `dam` damage on a monster from the
69
+ * player. Wakes the monster and clears any Hold when the blow is non-fatal,
70
+ * reveals camouflaged mimics, then applies the damage - killing the monster (via
71
+ * the onKill hook) if its hp drops below zero, or rolling fear otherwise.
72
+ * Returns whether the monster died and whether it was newly frightened.
73
+ */
74
+ export declare function monTakeHit(rng: Rng, mon: Monster, dam: number, note: string | null, hooks?: MonTakeHitHooks): MonTakeHitResult;
75
+ //# sourceMappingURL=take-hit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-hit.d.ts","sourceRoot":"","sources":["../../src/mon/take-hit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAW5C;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAClB,IAAI,CAMN;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,gBAAgB,SAAI,GACnB,OAAO,CA8CT;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,gDAAgD;IAChD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,GAAE,eAAoB,GAC1B,gBAAgB,CAoClB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Applying damage to a monster, ported from reference/src/mon-util.c (Angband
3
+ * 4.2.6): mon_take_hit (L1264) and its helpers monster_wake (L686) and
4
+ * monster_scared_by_damage (L1137). This is the shared "a monster is hurt"
5
+ * primitive that projections (project_m), melee, ranged attacks, and the effect
6
+ * handlers all funnel damage through, so death, fear, and waking behave
7
+ * identically no matter what dealt the blow.
8
+ *
9
+ * The heavy player-facing consequences are injected as hooks so the damage /
10
+ * fear / wake logic ships and is tested independently of them:
11
+ * - onKill (player_kill_monster): experience, drops, death messages,
12
+ * uniqueness, quest completion - a large routine ported with the effect /
13
+ * command layer.
14
+ * - becomeAware (become_aware): revealing a camouflaged mimic - knowledge/UI.
15
+ * - coverTracksBroken: clearing the player's TMD_COVERTRACKS - player state.
16
+ *
17
+ * Deferred: the arena-level branch (arena mode is not modelled) and the
18
+ * PR_HEALTH redraw (a UI concern) are omitted; both are unreached by the ported
19
+ * callers.
20
+ */
21
+ import { MON_TMD } from "../generated/index.js";
22
+ import { MFLAG } from "../generated/index.js";
23
+ import { monsterCanBeScared, monsterIsCamouflaged } from "./predicate.js";
24
+ import { MON_TMD_FLG_NOFAIL, MON_TMD_FLG_NOMESSAGE, MON_TMD_FLG_NOTIFY, monClearTimed, monDecTimed, monIncTimed, } from "./timed.js";
25
+ /**
26
+ * monster_wake (mon-util.c L686): clear a monster's sleep timer and, with the
27
+ * given percentage chance, mark it aware of the player. `notify` selects
28
+ * whether the sleep clear emits a waking-up message.
29
+ */
30
+ export function monsterWake(rng, mon, notify, awareChance) {
31
+ const flag = notify ? MON_TMD_FLG_NOTIFY : MON_TMD_FLG_NOMESSAGE;
32
+ monClearTimed(rng, mon, MON_TMD.SLEEP, flag);
33
+ if (rng.randint0(100) < awareChance) {
34
+ mon.mflag.on(MFLAG.AWARE);
35
+ }
36
+ }
37
+ /**
38
+ * monster_scared_by_damage (mon-util.c L1137): pain can reduce, cancel, or
39
+ * newly cause fear. Returns true only when the hit newly frightens the monster.
40
+ * Called after the monster's hp has already been reduced by `dam`.
41
+ * `primaryGroupSize` is monster_primary_group_size(cave, mon), threaded into
42
+ * monster_can_be_scared's per-member group fear save; game callers pass the
43
+ * live group size (game/mon-group.ts), worldless callers default to 1 (lone).
44
+ */
45
+ export function monsterScaredByDamage(rng, mon, dam, primaryGroupSize = 1) {
46
+ const currentFear = mon.mTimed[MON_TMD.FEAR];
47
+ /* Pain can reduce or cancel existing fear, or cause fear. */
48
+ if (currentFear) {
49
+ const tmp = rng.randint1(dam);
50
+ if (tmp < currentFear) {
51
+ /* Reduce fear. */
52
+ monDecTimed(rng, mon, MON_TMD.FEAR, tmp, MON_TMD_FLG_NOMESSAGE);
53
+ }
54
+ else {
55
+ /* Cure fear. */
56
+ monClearTimed(rng, mon, MON_TMD.FEAR, MON_TMD_FLG_NOMESSAGE);
57
+ return false;
58
+ }
59
+ }
60
+ else if (monsterCanBeScared(rng, mon, primaryGroupSize)) {
61
+ /* Percentage of fully healthy. */
62
+ const percentage = Math.floor((100 * mon.hp) / mon.maxhp);
63
+ /* Run (sometimes) at 10% or less of max hp... */
64
+ const lowHp = rng.randint1(10) >= percentage;
65
+ /* ...or (usually) when hit for half its current hit points. */
66
+ const bigHit = dam >= mon.hp && rng.randint0(100) < 80;
67
+ if (lowHp || bigHit) {
68
+ let time = rng.randint1(10);
69
+ if (dam >= mon.hp && percentage > 7) {
70
+ time += 20;
71
+ }
72
+ else {
73
+ time += (11 - percentage) * 5;
74
+ }
75
+ /* Note fear. */
76
+ monIncTimed(rng, mon, MON_TMD.FEAR, time, MON_TMD_FLG_NOMESSAGE | MON_TMD_FLG_NOFAIL);
77
+ return true;
78
+ }
79
+ }
80
+ return false;
81
+ }
82
+ /**
83
+ * mon_take_hit (mon-util.c L1264): inflict `dam` damage on a monster from the
84
+ * player. Wakes the monster and clears any Hold when the blow is non-fatal,
85
+ * reveals camouflaged mimics, then applies the damage - killing the monster (via
86
+ * the onKill hook) if its hp drops below zero, or rolling fear otherwise.
87
+ * Returns whether the monster died and whether it was newly frightened.
88
+ */
89
+ export function monTakeHit(rng, mon, dam, note, hooks = {}) {
90
+ /* If the hit doesn't kill, wake it up and make it aware of the player. */
91
+ if (dam <= mon.hp) {
92
+ monsterWake(rng, mon, false, 100);
93
+ monClearTimed(rng, mon, MON_TMD.HOLD, MON_TMD_FLG_NOTIFY);
94
+ }
95
+ /* Become aware of its presence. */
96
+ if (monsterIsCamouflaged(mon)) {
97
+ hooks.becomeAware?.(mon);
98
+ }
99
+ /* No damage, we're done. */
100
+ if (dam === 0)
101
+ return { died: false, fear: false };
102
+ /* Covering tracks is no longer possible. */
103
+ hooks.coverTracksBroken?.();
104
+ /* Hurt it. */
105
+ mon.hp -= dam;
106
+ if (mon.hp < 0) {
107
+ /* Deal with arena monsters: the kill waits for the arena exit. */
108
+ if (hooks.onArenaDeath) {
109
+ hooks.onArenaDeath(mon);
110
+ return { died: true, fear: false };
111
+ }
112
+ /* It is dead now. */
113
+ hooks.onKill?.(mon, note);
114
+ return { died: true, fear: false };
115
+ }
116
+ /* Not dead yet; did it get frightened? */
117
+ return {
118
+ died: false,
119
+ fear: monsterScaredByDamage(rng, mon, dam, hooks.primaryGroupSize?.() ?? 1),
120
+ };
121
+ }
122
+ //# sourceMappingURL=take-hit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-hit.js","sourceRoot":"","sources":["../../src/mon/take-hit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Monster timed effects, ported from reference/src/mon-timed.c (Angband
3
+ * 4.2.6): the resist roll, mon_set_timed, and the inc/dec/clear wrappers that
4
+ * drive a monster's m_timed[] array (sleep, stun, confusion, fear, slow,
5
+ * haste, hold, disenchant, command, shapechange).
6
+ *
7
+ * The effect table (gets_save / stacking / resist flag / max timer / begin-
8
+ * end-increase messages) is the generated MON_TIMED_ENTRIES (from
9
+ * list-mon-timed.h). Two upstream couplings are handled as follows, both
10
+ * faithful in reachable states:
11
+ * - Messages: the monster-message queue (mon-msg.c add_monster_message) is not
12
+ * ported, so mon_set_timed emits through an optional MonTimedMessageSink
13
+ * instead. The decision of WHICH message fires (and its NOTIFY/NOMESSAGE/
14
+ * visibility gate) is preserved exactly; callers that have a sink pass one.
15
+ * - MON_TMD_CHANGED shapechange (monster_change_shape / _revert_shape,
16
+ * mon-util.c) is DEFERRED: the timer is still set, but the form is not
17
+ * swapped. CHANGED is only set by an effect that is not ported yet, so this
18
+ * path is currently unreachable.
19
+ *
20
+ * The lore learn on a flag-resist (lore_learn_flag_if_visible) and the
21
+ * health-bar / monster-list redraw (upkeep masks) are UI/lore concerns and are
22
+ * DEFERRED.
23
+ */
24
+ import type { Rng } from "../rng.js";
25
+ import type { Monster } from "./monster.js";
26
+ import type { LoreStore } from "./lore.js";
27
+ /** mon-timed.h flags. */
28
+ export declare const MON_TMD_FLG_NOTIFY = 1;
29
+ export declare const MON_TMD_FLG_NOMESSAGE = 4;
30
+ export declare const MON_TMD_FLG_NOFAIL = 8;
31
+ /**
32
+ * A sink for the monster message that mon_set_timed would queue. `note` is the
33
+ * MON_MSG_* name (or the synthetic "MON_MSG_UNAFFECTED" / "MON_MSG_SHAPE_FAIL")
34
+ * upstream would pass to add_monster_message; `add` mirrors its 3rd argument.
35
+ */
36
+ /**
37
+ * monster_change_shape / monster_revert_shape (game/mon-shape.ts), passed
38
+ * by the game-layer timed calls for MON_TMD_CHANGED.
39
+ */
40
+ export interface MonShapeHooks {
41
+ change: (mon: Monster) => boolean;
42
+ revert: (mon: Monster) => boolean;
43
+ }
44
+ export type MonTimedMessageSink = (mon: Monster, note: string, add: boolean) => void;
45
+ /**
46
+ * mon_timed_name_to_idx: the MON_TMD_ index for an effect name, or -1.
47
+ */
48
+ export declare function monTimedNameToIdx(name: string): number;
49
+ /** Register the lore store learning timed-resist flags for this rng/session. */
50
+ export declare function installMonTimedLore(rng: Rng, lore: LoreStore): void;
51
+ /**
52
+ * mon_set_timed: set effect `effectType`'s timer to `timer`, honouring
53
+ * resistance, the begin/end/increase message selection, and the COMMAND-expiry
54
+ * and CHANGED special cases. Returns true if the monster was affected.
55
+ */
56
+ export declare function monSetTimed(rng: Rng, mon: Monster, effectType: number, timer: number, flag?: number, onMessage?: MonTimedMessageSink, shape?: MonShapeHooks): boolean;
57
+ /**
58
+ * mon_inc_timed: raise effect `effectType` by `timer` (min 2 turns for a new
59
+ * effect), stacking per the effect's rule, then mon_set_timed.
60
+ */
61
+ export declare function monIncTimed(rng: Rng, mon: Monster, effectType: number, timer: number, flag?: number, onMessage?: MonTimedMessageSink, shape?: MonShapeHooks): boolean;
62
+ /**
63
+ * mon_dec_timed: lower effect `effectType` by `timer` (never below 0). A
64
+ * decrease never fails.
65
+ */
66
+ export declare function monDecTimed(rng: Rng, mon: Monster, effectType: number, timer: number, flag?: number, onMessage?: MonTimedMessageSink, shape?: MonShapeHooks): boolean;
67
+ /** mon_clear_timed: clear effect `effectType` (no-op if already 0). */
68
+ export declare function monClearTimed(rng: Rng, mon: Monster, effectType: number, flag?: number, onMessage?: MonTimedMessageSink, shape?: MonShapeHooks): boolean;
69
+ /**
70
+ * monster_effect_level: the 0 (unaffected) .. 5 (max) intensity band an effect
71
+ * is currently at for the monster.
72
+ */
73
+ export declare function monsterEffectLevel(mon: Monster, effectType: number): number;
74
+ //# sourceMappingURL=timed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timed.d.ts","sourceRoot":"","sources":["../../src/mon/timed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,IAAO,CAAC;AACvC,eAAO,MAAM,qBAAqB,IAAO,CAAC;AAC1C,eAAO,MAAM,kBAAkB,IAAO,CAAC;AAKvC;;;;GAIG;AACH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IAClC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,KACT,IAAI,CAAC;AAUV;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAuBD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAEnE;AA+BD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,SAAS,CAAC,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CA0ET;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,SAAS,CAAC,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAsBT;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,SAAS,CAAC,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAGT;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,SAAI,EACR,SAAS,CAAC,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAO3E"}