@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,1051 @@
1
+ /**
2
+ * The live object instance (struct object from reference/src/object.h)
3
+ * plus the pure pile/stacking helpers from obj-pile.c and the slay,
4
+ * brand, and curse copy helpers from obj-slays.c and obj-curse.c
5
+ * (Angband 4.2.6).
6
+ *
7
+ * DEFERRED (ledgered in parity/ledger/obj-model.yaml):
8
+ * - The known/unknown split (obj->known and the whole knowledge system,
9
+ * obj-knowledge.c). GameObject has no `known` twin yet; stacking rules
10
+ * that read player knowledge run as if everything were known:
11
+ * - object_similar's OSTACK_LIST kind-vs-known-kind checks,
12
+ * - the object_fully_known comparison for wearables in list mode,
13
+ * - object_absorb_merge's known-object bookkeeping.
14
+ * - object_is_equipped: there is no player gear yet, so the equipped
15
+ * checks at the top of object_similar are skipped.
16
+ * - origin_race unique-favouring in object_origin_combine takes an
17
+ * isUnique callback (defaults to "not unique") until the monster
18
+ * domain lands.
19
+ * - append_object_curse's "effect foiled by an existing property" check
20
+ * consumes the player-timed failure tables (timed_effects[].fail) when a
21
+ * CurseTimedFoil is supplied (see curseTimedIncFoiled); callers with no
22
+ * timed data fall back to the conflict and conflict-flag checks only.
23
+ *
24
+ * Held/holder references are numeric handles (0 = none), grids are Loc
25
+ * or null; piles are managed by the world layer, so the prev/next
26
+ * doubly-linked pile pointers of upstream are not part of GameObject.
27
+ */
28
+ import { ELEM, OF, TV } from "../generated/index.js";
29
+ import { addGuardi16 } from "../guard.js";
30
+ import { EL_INFO_HATES, EL_INFO_IGNORE, ELEM_MAX, MAX_PVAL, newElemInfo, newOfFlags, OBJ_MOD_MAX, zeroRv, } from "./types.js";
31
+ /* ------------------------------------------------------------------ */
32
+ /* tval predicates (obj-tval.c), on numeric tvals */
33
+ /* ------------------------------------------------------------------ */
34
+ export function tvalIsStaff(tval) {
35
+ return tval === TV.STAFF;
36
+ }
37
+ export function tvalIsWand(tval) {
38
+ return tval === TV.WAND;
39
+ }
40
+ export function tvalIsRod(tval) {
41
+ return tval === TV.ROD;
42
+ }
43
+ export function tvalIsPotion(tval) {
44
+ return tval === TV.POTION;
45
+ }
46
+ export function tvalIsScroll(tval) {
47
+ return tval === TV.SCROLL;
48
+ }
49
+ export function tvalIsFood(tval) {
50
+ return tval === TV.FOOD;
51
+ }
52
+ export function tvalIsMushroom(tval) {
53
+ return tval === TV.MUSHROOM;
54
+ }
55
+ export function tvalIsLight(tval) {
56
+ return tval === TV.LIGHT;
57
+ }
58
+ export function tvalIsRing(tval) {
59
+ return tval === TV.RING;
60
+ }
61
+ export function tvalIsChest(tval) {
62
+ return tval === TV.CHEST;
63
+ }
64
+ export function tvalIsFuel(tval) {
65
+ return tval === TV.FLASK;
66
+ }
67
+ export function tvalIsMoney(tval) {
68
+ return tval === TV.GOLD;
69
+ }
70
+ export function tvalIsDigger(tval) {
71
+ return tval === TV.DIGGING;
72
+ }
73
+ export function tvalCanHaveNourishment(tval) {
74
+ return tval === TV.FOOD || tval === TV.POTION || tval === TV.MUSHROOM;
75
+ }
76
+ export function tvalCanHaveCharges(tval) {
77
+ return tval === TV.STAFF || tval === TV.WAND;
78
+ }
79
+ export function tvalCanHaveTimeout(tval) {
80
+ return tval === TV.ROD;
81
+ }
82
+ export function tvalIsBodyArmor(tval) {
83
+ return (tval === TV.SOFT_ARMOR || tval === TV.HARD_ARMOR || tval === TV.DRAG_ARMOR);
84
+ }
85
+ export function tvalIsHeadArmor(tval) {
86
+ return tval === TV.HELM || tval === TV.CROWN;
87
+ }
88
+ export function tvalIsAmmo(tval) {
89
+ return tval === TV.SHOT || tval === TV.ARROW || tval === TV.BOLT;
90
+ }
91
+ export function tvalIsSharpMissile(tval) {
92
+ return tval === TV.ARROW || tval === TV.BOLT;
93
+ }
94
+ /** tval_is_bolt (obj-tval.c L165): EF_BRAND_BOLTS' item_tester. */
95
+ export function tvalIsBolt(tval) {
96
+ return tval === TV.BOLT;
97
+ }
98
+ export function tvalIsLauncher(tval) {
99
+ return tval === TV.BOW;
100
+ }
101
+ export function tvalIsUseable(tval) {
102
+ switch (tval) {
103
+ case TV.ROD:
104
+ case TV.WAND:
105
+ case TV.STAFF:
106
+ case TV.SCROLL:
107
+ case TV.POTION:
108
+ case TV.FOOD:
109
+ case TV.MUSHROOM:
110
+ return true;
111
+ default:
112
+ return false;
113
+ }
114
+ }
115
+ export function tvalCanHaveFailure(tval) {
116
+ return tval === TV.STAFF || tval === TV.WAND || tval === TV.ROD;
117
+ }
118
+ export function tvalIsJewelry(tval) {
119
+ return tval === TV.RING || tval === TV.AMULET;
120
+ }
121
+ /**
122
+ * tval_has_variable_power (obj-tval.c L256): items whose value/price depends on
123
+ * individual properties (weapons, launchers, ammo, armour, jewelry, lights),
124
+ * so object_value_real prices them by object_power rather than a flat cost.
125
+ */
126
+ export function tvalHasVariablePower(tval) {
127
+ switch (tval) {
128
+ case TV.SHOT:
129
+ case TV.ARROW:
130
+ case TV.BOLT:
131
+ case TV.BOW:
132
+ case TV.DIGGING:
133
+ case TV.HAFTED:
134
+ case TV.POLEARM:
135
+ case TV.SWORD:
136
+ case TV.BOOTS:
137
+ case TV.GLOVES:
138
+ case TV.HELM:
139
+ case TV.CROWN:
140
+ case TV.SHIELD:
141
+ case TV.CLOAK:
142
+ case TV.SOFT_ARMOR:
143
+ case TV.HARD_ARMOR:
144
+ case TV.DRAG_ARMOR:
145
+ case TV.LIGHT:
146
+ case TV.AMULET:
147
+ case TV.RING:
148
+ return true;
149
+ default:
150
+ return false;
151
+ }
152
+ }
153
+ export function tvalIsWeapon(tval) {
154
+ switch (tval) {
155
+ case TV.SWORD:
156
+ case TV.HAFTED:
157
+ case TV.POLEARM:
158
+ case TV.DIGGING:
159
+ case TV.BOW:
160
+ case TV.BOLT:
161
+ case TV.ARROW:
162
+ case TV.SHOT:
163
+ return true;
164
+ default:
165
+ return false;
166
+ }
167
+ }
168
+ export function tvalIsArmor(tval) {
169
+ switch (tval) {
170
+ case TV.DRAG_ARMOR:
171
+ case TV.HARD_ARMOR:
172
+ case TV.SOFT_ARMOR:
173
+ case TV.SHIELD:
174
+ case TV.CLOAK:
175
+ case TV.CROWN:
176
+ case TV.HELM:
177
+ case TV.BOOTS:
178
+ case TV.GLOVES:
179
+ return true;
180
+ default:
181
+ return false;
182
+ }
183
+ }
184
+ export function tvalIsMeleeWeapon(tval) {
185
+ return (tval === TV.SWORD ||
186
+ tval === TV.HAFTED ||
187
+ tval === TV.POLEARM ||
188
+ tval === TV.DIGGING);
189
+ }
190
+ export function tvalIsWearable(tval) {
191
+ switch (tval) {
192
+ case TV.BOW:
193
+ case TV.DIGGING:
194
+ case TV.HAFTED:
195
+ case TV.POLEARM:
196
+ case TV.SWORD:
197
+ case TV.BOOTS:
198
+ case TV.GLOVES:
199
+ case TV.HELM:
200
+ case TV.CROWN:
201
+ case TV.SHIELD:
202
+ case TV.CLOAK:
203
+ case TV.SOFT_ARMOR:
204
+ case TV.HARD_ARMOR:
205
+ case TV.DRAG_ARMOR:
206
+ case TV.LIGHT:
207
+ case TV.AMULET:
208
+ case TV.RING:
209
+ return true;
210
+ default:
211
+ return false;
212
+ }
213
+ }
214
+ export function tvalIsEdible(tval) {
215
+ return tval === TV.FOOD || tval === TV.MUSHROOM;
216
+ }
217
+ export function tvalCanHaveFlavor(tval) {
218
+ switch (tval) {
219
+ case TV.AMULET:
220
+ case TV.RING:
221
+ case TV.STAFF:
222
+ case TV.WAND:
223
+ case TV.ROD:
224
+ case TV.POTION:
225
+ case TV.MUSHROOM:
226
+ case TV.SCROLL:
227
+ return true;
228
+ default:
229
+ return false;
230
+ }
231
+ }
232
+ export function tvalIsBook(tval) {
233
+ switch (tval) {
234
+ case TV.MAGIC_BOOK:
235
+ case TV.PRAYER_BOOK:
236
+ case TV.NATURE_BOOK:
237
+ case TV.SHADOW_BOOK:
238
+ case TV.OTHER_BOOK:
239
+ return true;
240
+ default:
241
+ return false;
242
+ }
243
+ }
244
+ export function tvalIsZapper(tval) {
245
+ return tval === TV.WAND || tval === TV.STAFF;
246
+ }
247
+ /** A blank object (OBJECT_NULL / object_new); kind must be set later. */
248
+ export function objectNew(kind) {
249
+ return {
250
+ kind,
251
+ ego: null,
252
+ artifact: null,
253
+ grid: null,
254
+ tval: 0,
255
+ sval: 0,
256
+ pval: 0,
257
+ weight: 0,
258
+ dd: 0,
259
+ ds: 0,
260
+ ac: 0,
261
+ toA: 0,
262
+ toH: 0,
263
+ toD: 0,
264
+ flags: newOfFlags(),
265
+ modifiers: new Array(OBJ_MOD_MAX).fill(0),
266
+ elInfo: newElemInfo(),
267
+ brands: null,
268
+ slays: null,
269
+ curses: null,
270
+ effect: null,
271
+ effectMsg: "",
272
+ activation: null,
273
+ time: zeroRv(),
274
+ timeout: 0,
275
+ number: 0,
276
+ notice: 0,
277
+ heldMIdx: 0,
278
+ mimickingMIdx: 0,
279
+ origin: 0,
280
+ originDepth: 0,
281
+ originRace: 0,
282
+ note: null,
283
+ };
284
+ }
285
+ /**
286
+ * object_copy (obj-pile.c L713): prepare a fresh object as a copy of `src`.
287
+ * Upstream memcpy's the whole struct, then deep-copies the heap-allocated
288
+ * slay, brand and curse arrays and detaches the pile links (prev/next). This
289
+ * port models a pile as world-layer state (GameObject carries no prev/next),
290
+ * so the "detach" is implicit; every per-instance array C stores inline in
291
+ * struct object (flags, modifiers, el_info) or on the heap (slays, brands,
292
+ * curses) is cloned so the copy shares no mutable state with the source, while
293
+ * the content-registry pointers (kind, ego, artifact, and the kind-owned
294
+ * effect chain and activation) stay shared exactly as the memcpy'd pointers
295
+ * do. Draws no RNG.
296
+ *
297
+ * DEFERRED: the obj->known twin (obj-knowledge.c) is not modelled in this port
298
+ * (see the module docs), so the known-object half of become_aware's copy
299
+ * (mon-util.c L745-750) has nothing to copy here.
300
+ */
301
+ export function objectCopy(src) {
302
+ return {
303
+ kind: src.kind,
304
+ ego: src.ego,
305
+ artifact: src.artifact,
306
+ grid: src.grid ? { ...src.grid } : null,
307
+ tval: src.tval,
308
+ sval: src.sval,
309
+ pval: src.pval,
310
+ ...(src.knownPval !== undefined ? { knownPval: src.knownPval } : {}),
311
+ weight: src.weight,
312
+ dd: src.dd,
313
+ ds: src.ds,
314
+ ac: src.ac,
315
+ toA: src.toA,
316
+ toH: src.toH,
317
+ toD: src.toD,
318
+ flags: src.flags.clone(),
319
+ modifiers: [...src.modifiers],
320
+ elInfo: src.elInfo.map((e) => ({ ...e })),
321
+ brands: src.brands ? [...src.brands] : null,
322
+ slays: src.slays ? [...src.slays] : null,
323
+ curses: src.curses ? src.curses.map((c) => ({ ...c })) : null,
324
+ effect: src.effect,
325
+ effectMsg: src.effectMsg,
326
+ activation: src.activation,
327
+ time: { ...src.time },
328
+ timeout: src.timeout,
329
+ number: src.number,
330
+ notice: src.notice,
331
+ heldMIdx: src.heldMIdx,
332
+ mimickingMIdx: src.mimickingMIdx,
333
+ origin: src.origin,
334
+ originDepth: src.originDepth,
335
+ originRace: src.originRace,
336
+ note: src.note,
337
+ };
338
+ }
339
+ /* ------------------------------------------------------------------ */
340
+ /* obj-slays.c copy helpers */
341
+ /* ------------------------------------------------------------------ */
342
+ /** same_monsters_slain. */
343
+ export function sameMonstersSlain(slays, slay1, slay2) {
344
+ const a = slays[slay1];
345
+ const b = slays[slay2];
346
+ if (a.raceFlag !== b.raceFlag)
347
+ return false;
348
+ if (!a.base && !b.base)
349
+ return true;
350
+ if ((a.base && !b.base) || (!a.base && b.base))
351
+ return false;
352
+ return a.base === b.base;
353
+ }
354
+ /**
355
+ * copy_slays: union source into dest (allocating if needed), then drop
356
+ * the lower-multiplier duplicate of any pair slaying the same monsters.
357
+ */
358
+ export function copySlays(dest, source, slays) {
359
+ if (!source)
360
+ return dest;
361
+ const out = dest ?? new Array(slays.length).fill(false);
362
+ for (let i = 0; i < slays.length; i++) {
363
+ if (source[i])
364
+ out[i] = true;
365
+ }
366
+ for (let i = 1; i < slays.length; i++) {
367
+ for (let j = 1; j < i; j++) {
368
+ if (out[i] && out[j] && sameMonstersSlain(slays, i, j)) {
369
+ if (slays[i].multiplier < slays[j].multiplier) {
370
+ out[i] = false;
371
+ }
372
+ else {
373
+ out[j] = false;
374
+ }
375
+ }
376
+ }
377
+ }
378
+ return out;
379
+ }
380
+ /** copy_brands: as copySlays, deduping on brand name. */
381
+ export function copyBrands(dest, source, brands) {
382
+ if (!source)
383
+ return dest;
384
+ const out = dest ?? new Array(brands.length).fill(false);
385
+ for (let i = 0; i < brands.length; i++) {
386
+ if (source[i])
387
+ out[i] = true;
388
+ }
389
+ for (let i = 1; i < brands.length; i++) {
390
+ for (let j = 1; j < i; j++) {
391
+ if (out[i] &&
392
+ out[j] &&
393
+ brands[i].name === brands[j].name) {
394
+ if (brands[i].multiplier < brands[j].multiplier) {
395
+ out[i] = false;
396
+ }
397
+ else {
398
+ out[j] = false;
399
+ }
400
+ }
401
+ }
402
+ }
403
+ return out;
404
+ }
405
+ /* ------------------------------------------------------------------ */
406
+ /* obj-curse.c */
407
+ /* ------------------------------------------------------------------ */
408
+ /**
409
+ * copy_curses: copy template curse powers onto an object, rolling each
410
+ * new curse's timeout from the curse's time dice.
411
+ */
412
+ export function copyCurses(rng, obj, source, curses) {
413
+ if (!source)
414
+ return;
415
+ if (!obj.curses) {
416
+ obj.curses = newCurseData(curses.length);
417
+ }
418
+ for (let i = 0; i < curses.length; i++) {
419
+ const power = source[i];
420
+ if (!power)
421
+ continue;
422
+ const data = obj.curses[i];
423
+ data.power = power;
424
+ data.timeout = rng.randcalc(curses[i].obj.time, 0, "randomise");
425
+ }
426
+ }
427
+ function newCurseData(n) {
428
+ const out = [];
429
+ for (let i = 0; i < n; i++)
430
+ out.push({ power: 0, timeout: 0 });
431
+ return out;
432
+ }
433
+ /** curses_are_equal. */
434
+ export function cursesAreEqual(obj1, obj2) {
435
+ if (!obj1.curses && !obj2.curses)
436
+ return true;
437
+ if (!obj1.curses || !obj2.curses)
438
+ return false;
439
+ const n = Math.max(obj1.curses.length, obj2.curses.length);
440
+ for (let i = 0; i < n; i++) {
441
+ if ((obj1.curses[i]?.power ?? 0) !== (obj2.curses[i]?.power ?? 0)) {
442
+ return false;
443
+ }
444
+ }
445
+ return true;
446
+ }
447
+ /** curses_conflict: is `second` in the conflict list of `first`? */
448
+ export function cursesConflict(curses, first, second) {
449
+ const c = curses[first];
450
+ if (!c.conflict)
451
+ return false;
452
+ return c.conflict.includes(`|${curses[second].name}|`);
453
+ }
454
+ /** check_object_curses: drop the array when no curse is active. */
455
+ function checkObjectCurses(obj) {
456
+ if (!obj.curses)
457
+ return;
458
+ for (const c of obj.curses) {
459
+ if (c.power)
460
+ return;
461
+ }
462
+ obj.curses = null;
463
+ }
464
+ /** TMD_FAIL_ codes (player-timed.h) checked by the curse foil branch. */
465
+ const TMD_FAIL_FLAG_OBJECT = 1;
466
+ const TMD_FAIL_FLAG_RESIST = 2;
467
+ const TMD_FAIL_FLAG_VULN = 3;
468
+ /**
469
+ * Build the CurseTimedFoil map from the bound player-timed table (upstream
470
+ * timed_effects[]: the curse checks index it by the TIMED_INC subtype). Keyed
471
+ * by effect NAME because the port's curse effect records carry the subtype as
472
+ * its name string ("POISONED"). One-liner for the game wiring; draws no RNG.
473
+ */
474
+ export function buildCurseTimedFoil(timed) {
475
+ const map = new Map();
476
+ for (const t of timed)
477
+ map.set(t.name, t.fail);
478
+ return map;
479
+ }
480
+ /**
481
+ * curse_conflicts helper for the TIMED_INC foil branch of append_object_curse
482
+ * (obj-curse.c L159-188) and artifact_curse_conflicts (L267-296): a curse whose
483
+ * effect is TIMED_INC is rejected when an existing property of the item would
484
+ * foil that timed effect - the item already has the OF flag the effect fails
485
+ * against (TMD_FAIL_FLAG_OBJECT), resists the element it fails against
486
+ * (TMD_FAIL_FLAG_RESIST), or is vulnerable to it (TMD_FAIL_FLAG_VULN). Codes
487
+ * TMD_FAIL_FLAG_PLAYER/TIMED_EFFECT are intentionally not consulted upstream.
488
+ *
489
+ * `flags`/`elInfo` are passed separately so the same check serves a GameObject
490
+ * (append_object_curse) and an Artifact (artifact_curse_conflicts). Draws no RNG.
491
+ */
492
+ export function curseTimedIncFoiled(c, flags, elInfo, foil) {
493
+ /* c->obj->effect && c->obj->effect->index == effect_lookup("TIMED_INC"):
494
+ * upstream inspects only the head effect of the curse's chain. */
495
+ const eff = c.obj.effect?.[0];
496
+ if (!eff || eff.eff !== "TIMED_INC")
497
+ return false;
498
+ const subtype = eff.type;
499
+ if (subtype === undefined)
500
+ return false;
501
+ const fails = foil.get(subtype);
502
+ if (!fails)
503
+ return false;
504
+ for (const f of fails) {
505
+ if (f.code === TMD_FAIL_FLAG_OBJECT) {
506
+ const idx = OF[f.flag];
507
+ if (idx !== undefined && flags.has(idx))
508
+ return true;
509
+ }
510
+ else if (f.code === TMD_FAIL_FLAG_RESIST) {
511
+ const el = ELEM[f.flag];
512
+ if (el !== undefined && (elInfo[el]?.resLevel ?? 0) > 0)
513
+ return true;
514
+ }
515
+ else if (f.code === TMD_FAIL_FLAG_VULN) {
516
+ const el = ELEM[f.flag];
517
+ if (el !== undefined && (elInfo[el]?.resLevel ?? 0) < 0)
518
+ return true;
519
+ }
520
+ }
521
+ return false;
522
+ }
523
+ /**
524
+ * append_object_curse (obj-curse.c L143): attach curse `pick` at `power`,
525
+ * rejecting a curse that conflicts with an existing curse, is foiled by a
526
+ * property of the object (its TIMED_INC effect fails against a flag/resist the
527
+ * item already has - `timedFoil`, obj-curse.c L159-188), or explicitly
528
+ * conflicts with an object flag. When `timedFoil` is omitted the foil branch is
529
+ * skipped (curse conflict + conflict-flag rejections stay live), matching a
530
+ * caller with no player-timed data.
531
+ */
532
+ export function appendObjectCurse(rng, obj, pick, power, curses, timedFoil) {
533
+ const c = curses[pick];
534
+ if (!obj.curses)
535
+ obj.curses = newCurseData(curses.length);
536
+ /* Reject conflicting curses */
537
+ for (let i = 0; i < curses.length; i++) {
538
+ if (obj.curses[i]?.power &&
539
+ cursesConflict(curses, i, pick)) {
540
+ checkObjectCurses(obj);
541
+ return false;
542
+ }
543
+ }
544
+ /* Reject curses with effects foiled by an existing object property
545
+ * (obj-curse.c L159-188). */
546
+ if (timedFoil && curseTimedIncFoiled(c, obj.flags, obj.elInfo, timedFoil)) {
547
+ checkObjectCurses(obj);
548
+ return false;
549
+ }
550
+ /* Reject curses which explicitly conflict with an object property */
551
+ for (const flag of c.conflictFlags) {
552
+ if (obj.flags.has(flag)) {
553
+ checkObjectCurses(obj);
554
+ return false;
555
+ }
556
+ }
557
+ /* Adjust power if our pick is a duplicate */
558
+ const data = obj.curses[pick];
559
+ if (power > data.power) {
560
+ data.power = power;
561
+ data.timeout = rng.randcalc(c.obj.time, 0, "randomise");
562
+ return true;
563
+ }
564
+ checkObjectCurses(obj);
565
+ return false;
566
+ }
567
+ /**
568
+ * remove_object_curse (obj-curse.c L219): clear curse `pick` from the
569
+ * object, dropping the curse array if it was the last one. Returns whether
570
+ * the object had that curse.
571
+ *
572
+ * `message` is upstream's third parameter, and it belongs here rather than at
573
+ * the caller: the message is emitted ONLY on the branch that actually removed a
574
+ * curse, so a caller that announces on its own would announce for a curse the
575
+ * object did not have. uncurse_object (effect-handler-general.c L194-195) calls
576
+ * this twice - once on obj->known with false, once on the object with true - and
577
+ * cmd-wizard.c:1051 passes false.
578
+ *
579
+ * The name comes from the global curses[] registry upstream reads directly;
580
+ * object.ts sits below the registry, so the caller supplies the sink.
581
+ */
582
+ export function removeObjectCurse(obj, pick, message = false, env) {
583
+ const c = obj.curses?.[pick];
584
+ if (!c || !c.power)
585
+ return false;
586
+ c.power = 0;
587
+ c.timeout = 0;
588
+ /* Remove the curses array if that was the last curse. */
589
+ checkObjectCurses(obj);
590
+ if (message && env) {
591
+ env.msg(`The ${env.curses[pick]?.name ?? ""} curse is removed!`);
592
+ }
593
+ return true;
594
+ }
595
+ /**
596
+ * modify_weight_for_curse (obj-curse.c L382): apply curse `i`'s weight
597
+ * adjustment to `weight`. OF_MULTIPLY_WEIGHT curses scale by
598
+ * curse->obj->weight / 100 (rounded to nearest, coercing to at least 1 when
599
+ * the factor exceeds 1); the rest add curse->obj->weight as a flat delta.
600
+ * Result is clamped to [0, 32767] like the int16_t upstream.
601
+ */
602
+ export function modifyWeightForCurse(curses, i, weight) {
603
+ const curseObj = curses[i].obj;
604
+ let result;
605
+ if (curseObj.flags.has(OF.MULTIPLY_WEIGHT)) {
606
+ let scaled = curseObj.weight > 100 ? Math.max(weight, 1) : Math.max(weight, 0);
607
+ scaled *= curseObj.weight;
608
+ const q = Math.trunc(scaled / 100);
609
+ if (q < 32767) {
610
+ result = q;
611
+ if (scaled % 100 >= 50)
612
+ result++;
613
+ }
614
+ else {
615
+ result = 32767;
616
+ }
617
+ }
618
+ else {
619
+ weight = Math.max(0, weight);
620
+ if (curseObj.weight < 0) {
621
+ result = weight + curseObj.weight;
622
+ if (result < 0)
623
+ result = 0;
624
+ }
625
+ else {
626
+ result =
627
+ weight < 32767 - curseObj.weight ? weight + curseObj.weight : 32767;
628
+ }
629
+ }
630
+ return result;
631
+ }
632
+ /**
633
+ * object_weight_one (obj-util.c L276): the weight of a single item, including
634
+ * any active curse's weight adjustment.
635
+ *
636
+ * `curses` is the bound curse table; when it is omitted (combat callers that do
637
+ * not thread it, where objects never carry curses) the curse adjustment is
638
+ * skipped, which is exactly Math.max(weight, 0) for a curse-free object.
639
+ */
640
+ export function objectWeightOne(obj, curses) {
641
+ let result = Math.max(obj.weight, 0);
642
+ if (obj.curses && curses) {
643
+ for (let i = 1; i < curses.length; i++) {
644
+ if (obj.curses[i]?.power) {
645
+ result = modifyWeightForCurse(curses, i, result);
646
+ }
647
+ }
648
+ }
649
+ return result;
650
+ }
651
+ /** Sentinel for "vulnerability + resistance" during curse el_info merging. */
652
+ const RES_VULN_AND_RES = -32768;
653
+ /**
654
+ * apply_curse_attributes (obj-curse.c L450): merge the attributes of every
655
+ * active curse (skipping index `i` when i >= 0) into the base attributes of
656
+ * `obj`, in place. Weight, to_a/to_h/to_d, flags, modifiers and el_info are
657
+ * combined; brands and slays are never merged (the data files cannot give a
658
+ * curse a brand or slay, per upstream). The caller clears obj.curses after,
659
+ * since the curse attributes are now folded directly into the object.
660
+ *
661
+ * The struct field obj.ac would also take curse->obj->ac here, but no curse
662
+ * data directive can set a curse's base AC (it is always 0), so that merge is
663
+ * a guaranteed no-op and CurseObject omits the field.
664
+ */
665
+ export function applyCurseAttributes(curses, i, obj) {
666
+ if (!obj.curses)
667
+ return;
668
+ for (let j = 0; j < curses.length; j++) {
669
+ /* Ignore the requested curse and any that are not active. */
670
+ if (j === i || !obj.curses[j]?.power)
671
+ continue;
672
+ const curse = curses[j];
673
+ if (!curse)
674
+ continue;
675
+ const curseObj = curse.obj;
676
+ /* The curse may modify the object's weight. */
677
+ obj.weight = modifyWeightForCurse(curses, j, obj.weight);
678
+ /* Curses can adjust the AC, hit and to-dam modifiers. */
679
+ obj.toA = addGuardi16(obj.toA, curseObj.toA);
680
+ obj.toH = addGuardi16(obj.toH, curseObj.toH);
681
+ obj.toD = addGuardi16(obj.toD, curseObj.toD);
682
+ /* The curse may extend the object's flags. */
683
+ obj.flags.union(curseObj.flags);
684
+ /* The curse's modifiers combine additively with the object's. */
685
+ for (let k = 0; k < OBJ_MOD_MAX; k++) {
686
+ obj.modifiers[k] = addGuardi16(obj.modifiers[k] ?? 0, curseObj.modifiers[k] ?? 0);
687
+ }
688
+ /* Resistances combine with the standard resistance-merge lattice. */
689
+ for (let k = 0; k < ELEM_MAX; k++) {
690
+ const oe = obj.elInfo[k];
691
+ const ce = curseObj.elInfo[k];
692
+ if (oe.resLevel >= 3) {
693
+ /* Already immune; the curse cannot change that. */
694
+ continue;
695
+ }
696
+ if (oe.resLevel === 1) {
697
+ if (ce.resLevel >= 3)
698
+ oe.resLevel = 3;
699
+ else if (ce.resLevel < 0)
700
+ oe.resLevel = RES_VULN_AND_RES;
701
+ }
702
+ else if (oe.resLevel === RES_VULN_AND_RES) {
703
+ if (ce.resLevel >= 3)
704
+ oe.resLevel = 3;
705
+ }
706
+ else if (oe.resLevel < 0) {
707
+ if (ce.resLevel >= 3)
708
+ oe.resLevel = 3;
709
+ else if (ce.resLevel === 1)
710
+ oe.resLevel = RES_VULN_AND_RES;
711
+ }
712
+ else {
713
+ /* No resistance in the base: take whatever the curse has. */
714
+ oe.resLevel = ce.resLevel;
715
+ }
716
+ }
717
+ }
718
+ /* Vulnerability + resistance nets out to no resistance for the caller. */
719
+ for (let j = 0; j < ELEM_MAX; j++) {
720
+ if (obj.elInfo[j].resLevel === RES_VULN_AND_RES) {
721
+ obj.elInfo[j].resLevel = 0;
722
+ }
723
+ }
724
+ }
725
+ /* ------------------------------------------------------------------ */
726
+ /* obj-pile.c stacking */
727
+ /* ------------------------------------------------------------------ */
728
+ /** object_stack_t modes (obj-pile.h). */
729
+ export const OSTACK_NONE = 0;
730
+ export const OSTACK_STORE = 0x01;
731
+ export const OSTACK_PACK = 0x02;
732
+ export const OSTACK_LIST = 0x04;
733
+ export const OSTACK_MONSTER = 0x08;
734
+ export const OSTACK_FLOOR = 0x10;
735
+ export const OSTACK_QUIVER = 0x20;
736
+ /**
737
+ * object_similar: can one item like obj1 stack with one like obj2,
738
+ * ignoring inscriptions? Player-knowledge inputs are deferred (module
739
+ * docs): the equipped checks are skipped and the OSTACK_LIST known-kind
740
+ * and fully-known comparisons behave as if everything were known.
741
+ */
742
+ export function objectSimilar(obj1, obj2, _mode) {
743
+ /* DEFERRED: object_is_equipped checks (no player gear yet). */
744
+ /* Mimicked items do not stack */
745
+ if (obj1.mimickingMIdx || obj2.mimickingMIdx)
746
+ return false;
747
+ /* DEFERRED: OSTACK_LIST unknown-item checks (knowledge system). */
748
+ /* Identical items cannot be stacked */
749
+ if (obj1 === obj2)
750
+ return false;
751
+ /* Require identical object kinds */
752
+ if (obj1.kind !== obj2.kind)
753
+ return false;
754
+ /* Different flags don't stack */
755
+ if (!obj1.flags.isEqual(obj2.flags))
756
+ return false;
757
+ /* Different elements don't stack */
758
+ for (let i = 0; i < ELEM_MAX; i++) {
759
+ const a = obj1.elInfo[i];
760
+ const b = obj2.elInfo[i];
761
+ if (a.resLevel !== b.resLevel)
762
+ return false;
763
+ if ((a.flags & (EL_INFO_HATES | EL_INFO_IGNORE)) !==
764
+ (b.flags & (EL_INFO_HATES | EL_INFO_IGNORE))) {
765
+ return false;
766
+ }
767
+ }
768
+ /* Artifacts never stack */
769
+ if (obj1.artifact || obj2.artifact)
770
+ return false;
771
+ /* Analyze the items */
772
+ if (tvalIsChest(obj1.tval)) {
773
+ /* Chests never stack */
774
+ return false;
775
+ }
776
+ else if (tvalIsEdible(obj1.tval) ||
777
+ tvalIsPotion(obj1.tval) ||
778
+ tvalIsScroll(obj1.tval) ||
779
+ tvalIsRod(obj1.tval)) {
780
+ /* Food, potions, scrolls and rods all stack nicely. */
781
+ }
782
+ else if (tvalCanHaveCharges(obj1.tval) || tvalIsMoney(obj1.tval)) {
783
+ /* Too much gold or too many charges */
784
+ if (obj1.pval + obj2.pval > MAX_PVAL)
785
+ return false;
786
+ }
787
+ else if (tvalIsWeapon(obj1.tval) ||
788
+ tvalIsArmor(obj1.tval) ||
789
+ tvalIsJewelry(obj1.tval) ||
790
+ tvalIsLight(obj1.tval)) {
791
+ /* Require identical values */
792
+ if (obj1.ac !== obj2.ac)
793
+ return false;
794
+ if (obj1.dd !== obj2.dd)
795
+ return false;
796
+ if (obj1.ds !== obj2.ds)
797
+ return false;
798
+ /* Require identical bonuses */
799
+ if (obj1.toH !== obj2.toH)
800
+ return false;
801
+ if (obj1.toD !== obj2.toD)
802
+ return false;
803
+ if (obj1.toA !== obj2.toA)
804
+ return false;
805
+ /* Require all identical modifiers */
806
+ for (let i = 0; i < OBJ_MOD_MAX; i++) {
807
+ if (obj1.modifiers[i] !== obj2.modifiers[i])
808
+ return false;
809
+ }
810
+ /* Require identical ego-item types */
811
+ if (obj1.ego !== obj2.ego)
812
+ return false;
813
+ /* Require identical curses */
814
+ if (!cursesAreEqual(obj1, obj2))
815
+ return false;
816
+ /* Hack - Never stack recharging wearables ... */
817
+ if ((obj1.timeout || obj2.timeout) && !tvalIsLight(obj1.tval)) {
818
+ return false;
819
+ }
820
+ /* ... and lights must have same amount of fuel */
821
+ else if (obj1.timeout !== obj2.timeout && tvalIsLight(obj1.tval)) {
822
+ return false;
823
+ }
824
+ /* DEFERRED: OSTACK_LIST fully-known mismatch check. */
825
+ }
826
+ else {
827
+ /* Anything else probably okay */
828
+ }
829
+ return true;
830
+ }
831
+ /**
832
+ * object_pack_total (obj-gear.c L189): the total number of items in the
833
+ * player's non-equipped gear that are like `obj`, and the first such stack
834
+ * (quiver digits taking precedence over pack letters, lowest label first).
835
+ * `ignoreInscrip` selects object_similar (inscriptions ignored) over
836
+ * object_stackable. Draws no RNG.
837
+ */
838
+ export function objectPackTotal(view, obj, ignoreInscrip) {
839
+ let total = 0;
840
+ let first = null;
841
+ let firstLabel = "";
842
+ for (const cursor of view.gear) {
843
+ let like;
844
+ if (cursor === obj) {
845
+ /* object_similar() excludes cursor == obj so if obj is not equipped,
846
+ * account for it here (L202-207). */
847
+ like = !view.isEquipped(obj);
848
+ }
849
+ else if (ignoreInscrip) {
850
+ like = objectSimilar(obj, cursor, OSTACK_PACK);
851
+ }
852
+ else {
853
+ like = objectStackable(obj, cursor, OSTACK_PACK);
854
+ }
855
+ if (!like)
856
+ continue;
857
+ total += cursor.number;
858
+ /* Track the first stack (L215-244): quiver digits beat pack letters,
859
+ * then lowest label wins within each class. */
860
+ const testLabel = view.gearToLabel(cursor);
861
+ if (!first) {
862
+ first = cursor;
863
+ firstLabel = testLabel;
864
+ }
865
+ else if (testLabel >= "a" && testLabel <= "z") {
866
+ if (firstLabel === "" ||
867
+ (firstLabel >= "a" && firstLabel <= "z" && testLabel < firstLabel)) {
868
+ first = cursor;
869
+ firstLabel = testLabel;
870
+ }
871
+ }
872
+ else if (testLabel >= "0" && testLabel <= "9") {
873
+ if (firstLabel === "" ||
874
+ (firstLabel >= "a" && firstLabel <= "z") ||
875
+ (firstLabel >= "0" && firstLabel <= "9" && testLabel < firstLabel)) {
876
+ first = cursor;
877
+ firstLabel = testLabel;
878
+ }
879
+ }
880
+ }
881
+ return { total, first };
882
+ }
883
+ /** object_stackable: object_similar plus compatible inscriptions. */
884
+ export function objectStackable(obj1, obj2, mode) {
885
+ if (objectSimilar(obj1, obj2, mode)) {
886
+ return !obj1.note || !obj2.note || obj1.note === obj2.note;
887
+ }
888
+ return false;
889
+ }
890
+ /** object_mergeable: whole stacks can merge into one. */
891
+ export function objectMergeable(obj1, obj2, mode, limits) {
892
+ const total = obj1.number + obj2.number;
893
+ /* Check against stacking limit - except in stores which absorb anyway */
894
+ if (!(mode & OSTACK_STORE)) {
895
+ if (total > obj1.kind.base.maxStack)
896
+ return false;
897
+ /* The quiver can impose stricter limits. */
898
+ if (mode & OSTACK_QUIVER) {
899
+ if (tvalIsAmmo(obj1.tval)) {
900
+ if (total > limits.quiverSlotSize)
901
+ return false;
902
+ }
903
+ else {
904
+ if (total >
905
+ Math.trunc(limits.quiverSlotSize / limits.thrownQuiverMult)) {
906
+ return false;
907
+ }
908
+ }
909
+ }
910
+ }
911
+ return objectStackable(obj1, obj2, mode);
912
+ }
913
+ /**
914
+ * object_origin_combine. The unique-monster favouring needs monster
915
+ * race data; pass isUnique to supply it (defaults to never-unique).
916
+ */
917
+ export function objectOriginCombine(obj1, obj2, originMixed, isUnique = () => false) {
918
+ if (obj1.originRace !== obj2.originRace) {
919
+ const uniq1 = obj1.originRace !== 0 && isUnique(obj1.originRace);
920
+ const uniq2 = obj2.originRace !== 0 && isUnique(obj2.originRace);
921
+ if (uniq1 && !uniq2) {
922
+ /* Favour keeping record for a unique */
923
+ }
924
+ else if (uniq2 && !uniq1) {
925
+ obj1.origin = obj2.origin;
926
+ obj1.originDepth = obj2.originDepth;
927
+ obj1.originRace = obj2.originRace;
928
+ }
929
+ else {
930
+ obj1.origin = originMixed;
931
+ }
932
+ }
933
+ else if (obj1.origin !== obj2.origin ||
934
+ obj1.originDepth !== obj2.originDepth) {
935
+ obj1.origin = originMixed;
936
+ }
937
+ }
938
+ /**
939
+ * object_absorb_merge, minus the known-object bookkeeping (knowledge
940
+ * system deferred).
941
+ */
942
+ function objectAbsorbMerge(obj1, obj2, originMixed, combineChargesTimeouts) {
943
+ /* Merge inscriptions */
944
+ if (obj2.note)
945
+ obj1.note = obj2.note;
946
+ if (combineChargesTimeouts) {
947
+ /* Combine timeouts for rod stacking */
948
+ if (tvalCanHaveTimeout(obj1.tval))
949
+ obj1.timeout += obj2.timeout;
950
+ /* Combine pvals for wands and staves */
951
+ if (tvalCanHaveCharges(obj1.tval) || tvalIsMoney(obj1.tval)) {
952
+ const total = obj1.pval + obj2.pval;
953
+ obj1.pval = total >= MAX_PVAL ? MAX_PVAL : total;
954
+ }
955
+ }
956
+ objectOriginCombine(obj1, obj2, originMixed);
957
+ }
958
+ /**
959
+ * object_absorb: merge two stacks into one, capping at the base's max
960
+ * stack size. The caller deletes obj2 (upstream frees it and its known
961
+ * twin here; pile management is the world layer's job in this port).
962
+ */
963
+ export function objectAbsorb(obj1, obj2, originMixed) {
964
+ const total = obj1.number + obj2.number;
965
+ obj1.number = Math.min(total, obj1.kind.base.maxStack);
966
+ objectAbsorbMerge(obj1, obj2, originMixed, true);
967
+ }
968
+ /**
969
+ * object_absorb_partial: merge a smaller stack into a larger one,
970
+ * leaving two uneven stacks. Charges distribute in proportion to the
971
+ * number moved (distribute_charges).
972
+ */
973
+ export function objectAbsorbPartial(obj1, obj2, mode1, mode2, limits, originMixed) {
974
+ const smallest = Math.min(obj1.number, obj2.number);
975
+ const largest = Math.max(obj1.number, obj2.number);
976
+ let newsz1;
977
+ let newsz2;
978
+ if (mode1 & OSTACK_QUIVER) {
979
+ const limit = Math.trunc(limits.quiverSlotSize /
980
+ (tvalIsAmmo(obj1.tval) ? 1 : limits.thrownQuiverMult));
981
+ if (mode2 & OSTACK_QUIVER) {
982
+ const difference = limit - largest;
983
+ newsz1 = largest + difference;
984
+ newsz2 = smallest - difference;
985
+ }
986
+ else {
987
+ newsz1 = limit;
988
+ newsz2 = largest + smallest - limit;
989
+ }
990
+ }
991
+ else if (mode2 & OSTACK_QUIVER) {
992
+ const limit = Math.trunc(limits.quiverSlotSize /
993
+ (tvalIsAmmo(obj2.tval) ? 1 : limits.thrownQuiverMult));
994
+ newsz1 = largest + smallest - limit;
995
+ newsz2 = limit;
996
+ }
997
+ else {
998
+ const difference = obj1.kind.base.maxStack - largest;
999
+ newsz1 = largest + difference;
1000
+ newsz2 = smallest - difference;
1001
+ }
1002
+ distributeCharges(obj2, obj1, obj2.number - newsz2, false);
1003
+ obj1.number = newsz1;
1004
+ obj2.number = newsz2;
1005
+ objectAbsorbMerge(obj1, obj2, originMixed, tvalIsMoney(obj1.tval));
1006
+ }
1007
+ /**
1008
+ * distribute_charges (obj-util.c): when amt of source's items move to
1009
+ * dest, allocate charges/timeouts between the two stacks. Rod charge
1010
+ * time uses randcalc AVERAGE on source.time (deterministic).
1011
+ */
1012
+ export function distributeCharges(source, dest, amt, destNew) {
1013
+ if (tvalCanHaveCharges(source.tval)) {
1014
+ const change = Math.trunc((source.pval * amt) / source.number);
1015
+ if (destNew) {
1016
+ dest.pval = change;
1017
+ }
1018
+ else {
1019
+ dest.pval += change;
1020
+ }
1021
+ if (amt < source.number) {
1022
+ source.pval -= change;
1023
+ }
1024
+ }
1025
+ if (tvalCanHaveTimeout(source.tval)) {
1026
+ /* randcalc(source->time, 0, AVERAGE). */
1027
+ const t = source.time;
1028
+ const chargeTime = t.base + Math.trunc((t.dice * (t.sides + 1)) / 2);
1029
+ let maxTime = chargeTime * amt;
1030
+ if (destNew) {
1031
+ dest.timeout = source.timeout > maxTime ? maxTime : source.timeout;
1032
+ if (amt < source.number) {
1033
+ source.timeout -= dest.timeout;
1034
+ }
1035
+ }
1036
+ else {
1037
+ let change = source.timeout > maxTime ? maxTime : source.timeout;
1038
+ maxTime = chargeTime * (dest.number + amt);
1039
+ if (dest.timeout < maxTime) {
1040
+ if (change > maxTime - dest.timeout) {
1041
+ change = maxTime - dest.timeout;
1042
+ }
1043
+ dest.timeout += change;
1044
+ if (amt < source.number) {
1045
+ source.timeout -= change;
1046
+ }
1047
+ }
1048
+ }
1049
+ }
1050
+ }
1051
+ //# sourceMappingURL=object.js.map