@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,685 @@
1
+ /**
2
+ * The once-every-ten-game-turns world upkeep helpers, ported statement by
3
+ * statement from reference/src/game-world.c process_world (Angband 4.2.6) plus
4
+ * player_update_light / player_over_exert (player-util.c) and compact_monsters
5
+ * (mon-make.c). The orchestrating processWorld / decreaseTimeouts stay in
6
+ * game/loop.ts (where the turn loop and HP/mana regen live); this module holds
7
+ * the individual steps so loop.ts reads as the upstream statement list.
8
+ *
9
+ * Every RNG-drawing step is reproduced in exact upstream order so the seeded
10
+ * stream is faithful for save determinism:
11
+ * - ambient monster: one_in_(alloc_monster_chance), drawn UNCONDITIONALLY each
12
+ * world tick (spawnAmbientMonster in mon-place.ts draws x-then-y per attempt);
13
+ * - damage over time: poison / cut are RNG-free, but each take_hit can draw the
14
+ * bloodlust death-save randint0(10) (state.rng is always threaded in);
15
+ * - bloodlust over-exert: randint0(100) per set PY_EXERT_* flag in SOURCE order
16
+ * (CON, FAINT, SCRAMBLE, CUT, CONF, HALLU, SLOW, HP), then randint1(amount);
17
+ * - black breath: three one_in_(2) always drawn in order when active;
18
+ * - faint: one_in_(10) then randint0(5); starvation: RNG-free;
19
+ * - exp drain: one_in_(10) then damroll(10,6) only when gated;
20
+ * - recharge / trap timeouts / town clock: RNG-free (randcalc AVERAGE);
21
+ * - compact_monsters(c, 64) on an overcrowded level: randint0(100) per
22
+ * candidate in the vicious-iteration order.
23
+ */
24
+ import { ELEM, MSG, OF, PF, PROJ, RF, STAT, TMD } from "../generated/index.js";
25
+ import { tvalIsLight } from "../obj/object.js";
26
+ import { equipLearnElement, equipLearnFlag } from "../obj/knowledge.js";
27
+ import { adjustDam } from "../world/projection.js";
28
+ import { invenDamage } from "./project-obj.js";
29
+ import { numberCharging, rechargeTimeout, tvalCanHaveTimeout, } from "../obj/recharge.js";
30
+ import { playerDecTimed, playerIncTimed, playerSetTimed, playerTimedGradeEq, } from "../player/timed.js";
31
+ import { playerApplyDamageReduction, takeHit } from "../player/take-hit.js";
32
+ import { playerExpLose, playerStatDec } from "../player/exp.js";
33
+ import { turnEnergy } from "../mon/monster.js";
34
+ import { monsterIsUnique } from "../mon/predicate.js";
35
+ import { gearGet, gearObjectForUse } from "./gear.js";
36
+ import { floorPile } from "./floor.js";
37
+ import { monsterGroupChangeIndex } from "./mon-group.js";
38
+ import { disturb } from "./player-path.js";
39
+ import { DEFAULT_HITPOINT_WARN } from "./project-cast.js";
40
+ import { deleteMonster } from "./context.js";
41
+ /** player-util.h PY_EXERT_* over-exertion bit flags. */
42
+ const PY_EXERT_CON = 0x01;
43
+ const PY_EXERT_FAINT = 0x02;
44
+ const PY_EXERT_SCRAMBLE = 0x04;
45
+ const PY_EXERT_CUT = 0x08;
46
+ const PY_EXERT_CONF = 0x10;
47
+ const PY_EXERT_HALLU = 0x20;
48
+ const PY_EXERT_SLOW = 0x40;
49
+ const PY_EXERT_HP = 0x80;
50
+ /** is_daytime (game-world.c L125): the first half of each day is daylight. */
51
+ export function isDaytime(turn, dayLength) {
52
+ return turn % (10 * dayLength) < (10 * dayLength) / 2;
53
+ }
54
+ /** A standalone world message ("The sun has risen.", "You faint...", ...). */
55
+ function worldMsg(state, text) {
56
+ const sink = state.world?.timedHooks?.onMessage;
57
+ if (sink)
58
+ sink(text, "");
59
+ else
60
+ state.msg?.(text);
61
+ }
62
+ /** player_of_has over the live derived state (racial + worn object flags). */
63
+ export function playerOfHasWorld(state, flag) {
64
+ return state.playerState?.flags.has(flag) ?? false;
65
+ }
66
+ /** player_has over the live derived state (class / race player flags). */
67
+ export function playerHasWorld(state, flag) {
68
+ return state.playerState?.pflags.has(flag) ?? false;
69
+ }
70
+ /** state.dam_red / state.perc_dam_red from the last calc_bonuses (else zero). */
71
+ function worldReduction(state) {
72
+ const ps = state.playerState;
73
+ if (!ps)
74
+ return { damRed: 0, percDamRed: 0 };
75
+ return { damRed: ps.damRed, percDamRed: ps.percDamRed };
76
+ }
77
+ /** A TakeHitTarget view whose chp / is_dead writes back to the state. */
78
+ function worldTakeHitTarget(state) {
79
+ const p = state.actor.player;
80
+ return {
81
+ get chp() {
82
+ return p.chp;
83
+ },
84
+ set chp(v) {
85
+ p.chp = v;
86
+ },
87
+ mhp: p.mhp,
88
+ lev: p.lev,
89
+ get isDead() {
90
+ return state.isDead;
91
+ },
92
+ set isDead(v) {
93
+ state.isDead = v;
94
+ },
95
+ timed: p.timed,
96
+ /* Bug fix (verify t2verify__options-settings-screen): "hitpoint_warn" is
97
+ * not a boolean option name (it is the scalar OptionState.hitpointWarn
98
+ * field), so the old `state.options?.get("hitpoint_warn")` always
99
+ * returned false and the low-hp warning threshold collapsed to 0. */
100
+ hitpointWarn: state.options?.hitpointWarn ?? DEFAULT_HITPOINT_WARN,
101
+ };
102
+ }
103
+ /** player_apply_damage_reduction on the live player. */
104
+ export function applyWorldDamageReduction(state, dam) {
105
+ return playerApplyDamageReduction(worldTakeHitTarget(state), worldReduction(state), dam);
106
+ }
107
+ /**
108
+ * take_hit on the live player, always threading state.rng so the bloodlust
109
+ * death-save randint0(10) (player-util.c L232) is drawn faithfully for every
110
+ * DoT source, not just the bloodlust over-exert block.
111
+ */
112
+ export function worldTakeHit(state, dam, killer) {
113
+ const hooks = {
114
+ rng: state.rng,
115
+ ...(state.world?.takeHitHooks ?? {}),
116
+ };
117
+ takeHit(worldTakeHitTarget(state), dam, killer, hooks);
118
+ }
119
+ /**
120
+ * player_check_terrain_damage (player-util.c:913-935): the fire damage a step
121
+ * onto fiery terrain (lava) would inflict right now. base 100+randint1(100),
122
+ * adjust_dam for the live fire resistance, OF_FEATHER halves. `actual` mirrors
123
+ * C's parameter: when true the mitigating fire-resist rune is learned
124
+ * (equip_learn_element, the actual damage path); when false (move_player's
125
+ * pre-move threshold/confirm check) nothing is learned. The RNG drawn is
126
+ * IDENTICAL either way, so calling this once for the pre-move check and once for
127
+ * the post-turn damage reproduces C's faithful double draw. Zero when the grid
128
+ * is not fiery or without a bound projection table.
129
+ */
130
+ export function playerCheckTerrainDamage(state, grid, actual) {
131
+ if (!state.chunk.isFiery(grid))
132
+ return 0;
133
+ const projections = state.world?.projections;
134
+ if (!projections)
135
+ return 0;
136
+ const res = state.playerState?.elInfo[ELEM.FIRE]?.resLevel ?? 0;
137
+ /* adjust_dam(actual=true): learn the fire-resist rune from the mitigation. */
138
+ if (actual)
139
+ equipLearnElement(state.actor.player, state.runeEnv, PROJ.FIRE);
140
+ let dam = adjustDam(state.rng, projections, PROJ.FIRE, 100 + state.rng.randint1(100), "randomise", res);
141
+ /* Feather fall makes one lightfooted (player-util.c:926). */
142
+ if (playerOfHasWorld(state, OF.FEATHER))
143
+ dam = Math.trunc(dam / 2);
144
+ return dam;
145
+ }
146
+ /**
147
+ * player_take_terrain_damage (player-util.c:913-966): fiery terrain (lava) burns
148
+ * the player once per acted turn while they stand on it (called at the
149
+ * game-world.c:864 seam, after the command uses energy). Draws the actual fire
150
+ * damage via playerCheckTerrainDamage(actual=true), then damage reduction, the
151
+ * feature hurt message, inven_damage(PROJ_FIRE) on the RAW damage, and take_hit
152
+ * with the die message. Returns true if the player died.
153
+ */
154
+ export function playerTakeTerrainDamage(state) {
155
+ const grid = state.actor.grid;
156
+ const dam = playerCheckTerrainDamage(state, grid, true);
157
+ if (dam <= 0)
158
+ return false;
159
+ const feat = state.chunk.feature(grid);
160
+ /* Inventory damage is on the RAW incoming damage; the player takes the
161
+ * reduced amount (player-util.c:954-965). */
162
+ const reduced = applyWorldDamageReduction(state, dam);
163
+ const damText = reduced > 0 && state.options?.get("show_damage") ? ` (${reduced})` : "";
164
+ worldMsg(state, `${feat.hurtMsg}${damText}`);
165
+ invenDamage(state, PROJ.FIRE, dam);
166
+ worldTakeHit(state, reduced, feat.dieMsg);
167
+ return state.isDead;
168
+ }
169
+ /**
170
+ * player_over_exert (player-util.c L820): random bad stuff from over-exertion.
171
+ * Tests each PY_EXERT_* flag in SOURCE if-block order (CON, FAINT, SCRAMBLE,
172
+ * CUT, CONF, HALLU, SLOW, HP), drawing randint0(100) per set flag and, on a
173
+ * hit, randint1(amount) (or the CON perm sub-roll). Returns true if the player
174
+ * died in the HP branch.
175
+ */
176
+ export function playerOverExert(state, flag, chance, amount) {
177
+ if (chance <= 0)
178
+ return false;
179
+ const p = state.actor.player;
180
+ const rng = state.rng;
181
+ const env = state.world;
182
+ const table = env?.timedTable;
183
+ const thooks = env?.timedHooks ?? {};
184
+ const inc = (idx, amt, check) => {
185
+ const eff = table?.[idx];
186
+ if (eff)
187
+ playerIncTimed(p, eff, amt, true, true, check, thooks);
188
+ };
189
+ /* CON damage. */
190
+ if (flag & PY_EXERT_CON) {
191
+ if (rng.randint0(100) < chance) {
192
+ const perm = rng.randint0(100) < Math.trunc(chance / 2) && chance >= 50;
193
+ worldMsg(state, "You have damaged your health!");
194
+ playerStatDec(p, STAT.CON, perm);
195
+ }
196
+ }
197
+ /* Fainting. */
198
+ if (flag & PY_EXERT_FAINT) {
199
+ if (rng.randint0(100) < chance) {
200
+ worldMsg(state, "You faint from the effort!");
201
+ inc(TMD.PARALYZED, rng.randint1(amount), false);
202
+ }
203
+ }
204
+ /* Scrambled stats. */
205
+ if (flag & PY_EXERT_SCRAMBLE) {
206
+ if (rng.randint0(100) < chance)
207
+ inc(TMD.SCRAMBLE, rng.randint1(amount), true);
208
+ }
209
+ /* Cut damage. */
210
+ if (flag & PY_EXERT_CUT) {
211
+ if (rng.randint0(100) < chance) {
212
+ worldMsg(state, "Wounds appear on your body!");
213
+ inc(TMD.CUT, rng.randint1(amount), false);
214
+ }
215
+ }
216
+ /* Confusion. */
217
+ if (flag & PY_EXERT_CONF) {
218
+ if (rng.randint0(100) < chance)
219
+ inc(TMD.CONFUSED, rng.randint1(amount), true);
220
+ }
221
+ /* Hallucination. */
222
+ if (flag & PY_EXERT_HALLU) {
223
+ if (rng.randint0(100) < chance)
224
+ inc(TMD.IMAGE, rng.randint1(amount), true);
225
+ }
226
+ /* Slowing. */
227
+ if (flag & PY_EXERT_SLOW) {
228
+ if (rng.randint0(100) < chance) {
229
+ worldMsg(state, "You feel suddenly lethargic.");
230
+ inc(TMD.SLOW, rng.randint1(amount), false);
231
+ }
232
+ }
233
+ /* HP. */
234
+ if (flag & PY_EXERT_HP) {
235
+ if (rng.randint0(100) < chance) {
236
+ const dam = applyWorldDamageReduction(state, rng.randint1(amount));
237
+ worldMsg(state, "You cry out in sudden pain!");
238
+ worldTakeHit(state, dam, "over-exertion");
239
+ }
240
+ }
241
+ return state.isDead;
242
+ }
243
+ /**
244
+ * Damage (or healing) over time (game-world.c L586-651): poison, cuts,
245
+ * bloodlust over-exert, timed heal and Black Breath, in order. Each take_hit
246
+ * can end the game; returns true when the player died so processWorld
247
+ * early-returns.
248
+ */
249
+ export function processDamageOverTime(state) {
250
+ const p = state.actor.player;
251
+ const table = state.world?.timedTable;
252
+ /* Take damage from poison. */
253
+ if (p.timed[TMD.POISONED]) {
254
+ worldTakeHit(state, applyWorldDamageReduction(state, 1), "poison");
255
+ if (state.isDead)
256
+ return true;
257
+ }
258
+ /* Take damage from cuts, worse from serious cuts. */
259
+ if (p.timed[TMD.CUT]) {
260
+ let i;
261
+ const cut = table?.[TMD.CUT];
262
+ if (playerHasWorld(state, PF.ROCK)) {
263
+ /* Rock players just maintain. */
264
+ i = 0;
265
+ }
266
+ else if (cut &&
267
+ (playerTimedGradeEq(p, cut, "Mortal Wound") ||
268
+ playerTimedGradeEq(p, cut, "Deep Gash"))) {
269
+ i = 3;
270
+ }
271
+ else if (cut && playerTimedGradeEq(p, cut, "Severe Cut")) {
272
+ i = 2;
273
+ }
274
+ else {
275
+ i = 1;
276
+ }
277
+ worldTakeHit(state, applyWorldDamageReduction(state, i), "a fatal wound");
278
+ if (state.isDead)
279
+ return true;
280
+ }
281
+ /* Side effects of diminishing bloodlust. */
282
+ if (p.timed[TMD.BLOODLUST]) {
283
+ playerOverExert(state, PY_EXERT_HP | PY_EXERT_CUT | PY_EXERT_SLOW, Math.max(0, 10 - (p.timed[TMD.BLOODLUST] ?? 0)), Math.trunc(p.chp / 10));
284
+ if (state.isDead)
285
+ return true;
286
+ }
287
+ /* Timed healing (EF_HEAL_HP "30": a clamped 30-HP heal with its message). */
288
+ if (p.timed[TMD.HEAL]) {
289
+ if (p.chp < p.mhp) {
290
+ const num = 30;
291
+ p.chp += num;
292
+ if (p.chp >= p.mhp) {
293
+ p.chp = p.mhp;
294
+ p.chpFrac = 0;
295
+ }
296
+ /* 15 <= 30 < 35 grade bucket (effect-handler-attack.c L243). */
297
+ worldMsg(state, "You feel much better.");
298
+ }
299
+ }
300
+ /* Effects of Black Breath: three separate one_in_(2) rolls in order. */
301
+ if (p.timed[TMD.BLACKBREATH]) {
302
+ if (state.rng.oneIn(2)) {
303
+ worldMsg(state, "The Black Breath sickens you.");
304
+ playerStatDec(p, STAT.CON, false);
305
+ }
306
+ if (state.rng.oneIn(2)) {
307
+ worldMsg(state, "The Black Breath saps your strength.");
308
+ playerStatDec(p, STAT.STR, false);
309
+ }
310
+ if (state.rng.oneIn(2)) {
311
+ /* Life draining. */
312
+ const drain = 100 + Math.trunc(p.exp / 100) * state.z.lifeDrainPercent;
313
+ worldMsg(state, "The Black Breath dims your life force.");
314
+ playerExpLose(p, drain, false, expDepsOf(state));
315
+ }
316
+ }
317
+ return false;
318
+ }
319
+ /** A default ExpDeps ({ rng }) when the world env supplies none. */
320
+ function expDepsOf(state) {
321
+ return state.world?.expDeps ?? { rng: state.rng };
322
+ }
323
+ /**
324
+ * Digest (game-world.c L656-692): the normal turn%100 digestion, the ungated
325
+ * fast-metabolism drain while TMD_HEAL is active, and the gorged branch. All
326
+ * decrements route through player_dec_timed so hunger grade messages fire.
327
+ * Returns true when the gorged branch ran (PU_BONUS).
328
+ */
329
+ export function digestFood(state) {
330
+ const p = state.actor.player;
331
+ const table = state.world?.timedTable;
332
+ const foodEff = table?.[TMD.FOOD];
333
+ if (!foodEff)
334
+ return false;
335
+ const thooks = state.world?.timedHooks ?? {};
336
+ const dec = (v) => {
337
+ playerDecTimed(p, foodEff, v, false, true, thooks);
338
+ };
339
+ if (!playerTimedGradeEq(p, foodEff, "Full")) {
340
+ /* Digest normally. */
341
+ if (state.turn % 100 === 0) {
342
+ /* Basic digestion rate based on speed. */
343
+ let i = turnEnergy(state.actor.speed, state.z.moveEnergy);
344
+ /* Adjust for food value. */
345
+ i = Math.trunc((i * 100) / state.z.foodValue);
346
+ /* Regeneration takes more food. */
347
+ if (playerOfHasWorld(state, OF.REGEN))
348
+ i *= 2;
349
+ /* Slow digestion takes less food. */
350
+ if (playerOfHasWorld(state, OF.SLOW_DIGEST))
351
+ i = Math.trunc(i / 2);
352
+ /* Minimal digestion. */
353
+ if (i < 1)
354
+ i = 1;
355
+ dec(i);
356
+ }
357
+ /* Fast metabolism (ungated - runs every world tick while healing). */
358
+ if (p.timed[TMD.HEAL]) {
359
+ dec(8 * state.z.foodValue);
360
+ if ((p.timed[TMD.FOOD] ?? 0) < state.z.foodHungry) {
361
+ const healEff = table?.[TMD.HEAL];
362
+ if (healEff)
363
+ playerSetTimed(p, healEff, 0, true, true, thooks);
364
+ }
365
+ }
366
+ return false;
367
+ }
368
+ /* Digest quickly when gorged. */
369
+ dec(Math.trunc(5000 / state.z.foodValue));
370
+ return true;
371
+ }
372
+ /**
373
+ * Faint or starving (game-world.c L694-716): a Faint player may pass out
374
+ * (one_in_(10) then randint0(5)); a Starving player takes take_hit. Returns
375
+ * true when the player died.
376
+ */
377
+ export function processFaintOrStarve(state) {
378
+ const p = state.actor.player;
379
+ const table = state.world?.timedTable;
380
+ const foodEff = table?.[TMD.FOOD];
381
+ if (!foodEff)
382
+ return false;
383
+ if (playerTimedGradeEq(p, foodEff, "Faint")) {
384
+ /* Faint occasionally. */
385
+ if (!p.timed[TMD.PARALYZED] && state.rng.oneIn(10)) {
386
+ worldMsg(state, "You faint from the lack of food.");
387
+ disturb(state);
388
+ const paralyzed = table?.[TMD.PARALYZED];
389
+ if (paralyzed) {
390
+ /* Faint (bypass free action). */
391
+ playerIncTimed(p, paralyzed, 1 + state.rng.randint0(5), true, true, false, state.world?.timedHooks ?? {});
392
+ }
393
+ }
394
+ }
395
+ else if (playerTimedGradeEq(p, foodEff, "Starving")) {
396
+ /* Calculate damage. */
397
+ const i = Math.trunc((state.z.foodStarve - (p.timed[TMD.FOOD] ?? 0)) / 10);
398
+ worldTakeHit(state, applyWorldDamageReduction(state, i), "starvation");
399
+ if (state.isDead)
400
+ return true;
401
+ }
402
+ return false;
403
+ }
404
+ /**
405
+ * player_update_light (player-util.c L682): burn one turn of fuel in the
406
+ * wielded light, dim / out messages, and delete a burnt-out torch. Draws no
407
+ * RNG. Returns true when the light state changed enough to want a bonus recalc
408
+ * (the light went out or a torch was consumed).
409
+ */
410
+ export function playerUpdateLight(state) {
411
+ const p = state.actor.player;
412
+ const lightSlot = p.body.slots.findIndex((s) => s.type === "LIGHT");
413
+ if (lightSlot < 0)
414
+ return false;
415
+ const handle = p.equipment[lightSlot] ?? 0;
416
+ const obj = handle ? gearGet(state.gear, handle) : null;
417
+ let changed = false;
418
+ /* Burn some fuel in the current light. */
419
+ if (obj && tvalIsLight(obj.tval)) {
420
+ let burnFuel = true;
421
+ /* No wanton burning of light during the day in the town. */
422
+ if (state.chunk.depth === 0 && isDaytime(state.turn, state.z.dayLength)) {
423
+ burnFuel = false;
424
+ }
425
+ /* The NO_FUEL flag: well... */
426
+ if (obj.flags.has(OF.NO_FUEL))
427
+ burnFuel = false;
428
+ /* Use some fuel (except on artifacts, or during the day). */
429
+ if (burnFuel && obj.timeout > 0) {
430
+ obj.timeout--;
431
+ /* Special treatment when blind. */
432
+ if (p.timed[TMD.BLIND]) {
433
+ /* Save some light for later. */
434
+ if (obj.timeout === 0)
435
+ obj.timeout++;
436
+ }
437
+ else if (obj.timeout === 0) {
438
+ /* The light is now out. */
439
+ disturb(state);
440
+ worldMsg(state, "Your light has gone out!");
441
+ changed = true;
442
+ /* If it's a torch, now is the time to delete it. */
443
+ if (obj.flags.has(OF.BURNS_OUT)) {
444
+ gearObjectForUse(state.gear, p, handle, 1);
445
+ }
446
+ }
447
+ else if (obj.timeout < 50 && obj.timeout % 20 === 0) {
448
+ /* The light is getting dim. */
449
+ disturb(state);
450
+ worldMsg(state, "Your light is growing faint.");
451
+ }
452
+ }
453
+ }
454
+ /* Calculate torch radius (PU_TORCH). */
455
+ return changed;
456
+ }
457
+ /**
458
+ * recharged_notice (game-world.c L147): tell the player when an inscribed ("!!")
459
+ * or (with notify_recharge) any item recharges. Message-only; no RNG.
460
+ */
461
+ function rechargedNotice(state, obj, all) {
462
+ let notify = state.options?.get("notify_recharge") ?? false;
463
+ if (!notify && obj.note && obj.note.includes("!!"))
464
+ notify = true;
465
+ if (!notify)
466
+ return;
467
+ disturb(state);
468
+ const name = obj.kind.name;
469
+ if (obj.number > 1) {
470
+ worldMsg(state, all ? `Your ${name} have recharged.` : `One of your ${name} has recharged.`);
471
+ }
472
+ else if (obj.artifact) {
473
+ worldMsg(state, `The ${name} has recharged.`);
474
+ }
475
+ else {
476
+ worldMsg(state, `Your ${name} has recharged.`);
477
+ }
478
+ }
479
+ /**
480
+ * recharge_objects (game-world.c L197): recharge activatable equipment, rods in
481
+ * the pack and rods on the floor. randcalc AVERAGE is deterministic, so no RNG.
482
+ */
483
+ export function rechargeObjects(state) {
484
+ const rng = state.rng;
485
+ const p = state.actor.player;
486
+ /* Recharge equipment (activatable objects). */
487
+ for (const handle of p.equipment) {
488
+ if (!handle)
489
+ continue;
490
+ const obj = gearGet(state.gear, handle);
491
+ if (!obj)
492
+ continue;
493
+ if (rechargeTimeout(rng, obj))
494
+ rechargedNotice(state, obj, true);
495
+ }
496
+ /* Recharge the pack (rods only). */
497
+ for (const handle of state.gear.pack) {
498
+ const obj = gearGet(state.gear, handle);
499
+ if (!obj)
500
+ continue;
501
+ const dischargedStack = numberCharging(rng, obj) === obj.number;
502
+ if (tvalCanHaveTimeout(obj.tval) && rechargeTimeout(rng, obj)) {
503
+ if (obj.timeout === 0)
504
+ rechargedNotice(state, obj, true);
505
+ else if (dischargedStack)
506
+ rechargedNotice(state, obj, false);
507
+ }
508
+ }
509
+ /* Recharge other level objects (rods on the floor). */
510
+ for (const pile of state.floor.values()) {
511
+ for (const obj of pile) {
512
+ if (tvalCanHaveTimeout(obj.tval))
513
+ rechargeTimeout(rng, obj);
514
+ }
515
+ }
516
+ }
517
+ /** equip_learn_flag(OF_DRAIN_EXP) through the live rune environment. */
518
+ export function processExpDrain(state) {
519
+ const p = state.actor.player;
520
+ if (!playerOfHasWorld(state, OF.DRAIN_EXP))
521
+ return;
522
+ if (p.exp > 0 && state.rng.oneIn(10)) {
523
+ const d = state.rng.damroll(10, 6) +
524
+ Math.trunc(p.exp / 100) * state.z.lifeDrainPercent;
525
+ playerExpLose(p, Math.trunc(d / 10), false, expDepsOf(state));
526
+ }
527
+ equipLearnFlag(p, state.runeEnv, OF.DRAIN_EXP);
528
+ }
529
+ /**
530
+ * play_ambient_sound (game-world.c L257): pick a MSG_AMBIENT_* by depth and
531
+ * day / night and emit it through state.sound.
532
+ */
533
+ export function playAmbientSound(state) {
534
+ const depth = state.chunk.depth;
535
+ const day = isDaytime(state.turn, state.z.dayLength);
536
+ let msgt;
537
+ if (depth === 0)
538
+ msgt = day ? "AMBIENT_DAY" : "AMBIENT_NITE";
539
+ else if (depth <= 20)
540
+ msgt = "AMBIENT_DNG1";
541
+ else if (depth <= 40)
542
+ msgt = "AMBIENT_DNG2";
543
+ else if (depth <= 60)
544
+ msgt = "AMBIENT_DNG3";
545
+ else if (depth <= 80)
546
+ msgt = "AMBIENT_DNG4";
547
+ else
548
+ msgt = "AMBIENT_DNG5";
549
+ const idx = MSG[msgt];
550
+ if (idx !== undefined)
551
+ state.sound?.(idx);
552
+ }
553
+ /**
554
+ * monster_index_move (mon-make.c L418): move the monster in slot i1 into slot
555
+ * i2, repairing every reference that names it by index.
556
+ *
557
+ * Only compact_monsters' excise pass calls this upstream, and the port did not
558
+ * have it at all - see compactMonsters below for why that mattered.
559
+ */
560
+ export function monsterIndexMove(state, i1, i2) {
561
+ /* Do nothing. */
562
+ if (i1 === i2)
563
+ return;
564
+ /* Old monster. */
565
+ const mon = state.monsters[i1];
566
+ if (!mon)
567
+ return;
568
+ /* Update the cave. */
569
+ state.chunk.setMon(mon.grid, i2);
570
+ /* Update midx. */
571
+ mon.midx = i2;
572
+ /* Update group. Upstream quit()s on a miss and the monster_groups_verify()
573
+ * after it is unreachable; throwing is the port's quit. */
574
+ if (!monsterGroupChangeIndex(state, i2, i1)) {
575
+ throw new Error(`mon: bad monster group info moving ${i1} -> ${i2}`);
576
+ }
577
+ /* Repair objects being carried by monster. */
578
+ for (const obj of mon.heldObj)
579
+ obj.heldMIdx = i2;
580
+ /* Move mimicked objects (heh). mon.mimickedObj is the port's presence
581
+ * marker; the live link is the floor object's mimickingMIdx (mon-place.ts
582
+ * createMimickedObject), and it sits on the monster's own grid. */
583
+ if (mon.mimickedObj) {
584
+ for (const obj of floorPile(state, mon.grid)) {
585
+ if (obj.mimickingMIdx === i1)
586
+ obj.mimickingMIdx = i2;
587
+ }
588
+ }
589
+ /* Update the target, and the health bar. Upstream re-points both at
590
+ * cave_monster(c, i2), which after the memcpy below is this same monster; the
591
+ * port moves the object itself, so the Monster reference healthWho holds
592
+ * stays valid and only the numeric target needs rewriting. */
593
+ if (state.target.midx === i1)
594
+ state.target.midx = i2;
595
+ /* Move monster, and wipe the hole. */
596
+ state.monsters[i2] = mon;
597
+ state.monsters[i1] = null;
598
+ }
599
+ /**
600
+ * compact_monsters (mon-make.c L482): when the monster list is overcrowded,
601
+ * delete num_to_compact monsters, getting more vicious each iteration, and then
602
+ * - ALWAYS - excise the holes so the list is dense again. Each candidate that
603
+ * survives the deletion pass draws randint0(100) (the saving throw), a variable
604
+ * number of draws that MUST be reproduced for save determinism on breeder-heavy
605
+ * levels.
606
+ *
607
+ * The excise pass at the bottom is not conditional on num_to_compact, and the
608
+ * port used to return early for num_to_compact == 0 on the reasoning that the
609
+ * "too many holes" call was RNG-free and "handled by slot reuse". Both halves
610
+ * were wrong: nothing reused slots (mon_pop appends below the cap, see
611
+ * context.ts), and so the port never excised a hole at all - under either
612
+ * argument. cave_monster_max therefore grew monotonically for the life of a
613
+ * level, which shifts every midx away from upstream's and, with mon_pop's bound
614
+ * in place, would hit level_monster_max far earlier than the C does.
615
+ */
616
+ export function compactMonsters(state, numToCompact) {
617
+ /* Message, only if compacting (mon-make.c:489-491). */
618
+ if (numToCompact)
619
+ state.msg?.("Compacting monsters...");
620
+ let numCompacted = 0;
621
+ for (let iter = 1; numCompacted < numToCompact; iter++) {
622
+ /* Get more vicious each iteration. */
623
+ const maxLev = 5 * iter;
624
+ /* Get closer each iteration. */
625
+ const minDis = 5 * (20 - iter);
626
+ for (let mIdx = 1; mIdx < state.monsters.length; mIdx++) {
627
+ const mon = state.monsters[mIdx];
628
+ /* Skip dead / empty slots. */
629
+ if (!mon)
630
+ continue;
631
+ /* High level monsters start out immune. */
632
+ if (mon.race.level > maxLev)
633
+ continue;
634
+ /* Ignore nearby monsters. */
635
+ if (minDis > 0 && mon.cdis < minDis)
636
+ continue;
637
+ /* Saving throw chance. */
638
+ let chance = 90;
639
+ /* Only compact Quest monsters in emergencies. */
640
+ if (mon.race.flags.has(RF.QUESTOR) && iter < 1000)
641
+ chance = 100;
642
+ /* Try not to compact unique monsters. */
643
+ if (monsterIsUnique(mon))
644
+ chance = 99;
645
+ /* All monsters get a saving throw. */
646
+ if (state.rng.randint0(100) < chance)
647
+ continue;
648
+ /* Delete the monster. */
649
+ deleteMonster(state, mIdx);
650
+ numCompacted++;
651
+ }
652
+ }
653
+ /* Excise dead monsters (backwards!). monsterMax shrinks as we go, exactly as
654
+ * c->mon_max-- does, so the monster pulled down into a hole always comes from
655
+ * a slot this scan has already passed. */
656
+ for (let mIdx = state.monsters.length - 1; mIdx >= 1; mIdx--) {
657
+ /* Skip real monsters. */
658
+ if (state.monsters[mIdx])
659
+ continue;
660
+ /* Move last monster into open hole, and compress mon_max. */
661
+ monsterIndexMove(state, state.monsters.length - 1, mIdx);
662
+ state.monsters.length--;
663
+ }
664
+ }
665
+ /** cave_monster_count (cave.c): the number of live monsters. */
666
+ export function caveMonsterCount(state) {
667
+ let n = 0;
668
+ for (let i = 1; i < state.monsters.length; i++) {
669
+ if (state.monsters[i])
670
+ n++;
671
+ }
672
+ return n;
673
+ }
674
+ /** The PY_EXERT_* over-exertion flags, exported for callers and tests. */
675
+ export const PY_EXERT = {
676
+ CON: PY_EXERT_CON,
677
+ FAINT: PY_EXERT_FAINT,
678
+ SCRAMBLE: PY_EXERT_SCRAMBLE,
679
+ CUT: PY_EXERT_CUT,
680
+ CONF: PY_EXERT_CONF,
681
+ HALLU: PY_EXERT_HALLU,
682
+ SLOW: PY_EXERT_SLOW,
683
+ HP: PY_EXERT_HP,
684
+ };
685
+ //# sourceMappingURL=world.js.map