@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,1055 @@
1
+ /**
2
+ * Object generation, ported from reference/src/obj-make.c
3
+ * (Angband 4.2.6): object_prep, the object/ego allocation tables
4
+ * (alloc_init_objects / alloc_init_egos), kind_is_good, get_obj_num,
5
+ * ego_find_random, ego_apply_magic, ego_apply_minima, make_ego_item,
6
+ * apply_magic (with its weapon/armour enchant helpers and apply_curse),
7
+ * make_object, money_kind, and make_gold.
8
+ *
9
+ * LIVE vs DEFERRED (ledgered in parity/ledger/obj-make.yaml):
10
+ * - LIVE: object_prep; the cumulative allocation tables and both
11
+ * get_obj_num paths (any-tval binary search, per-tval linear scan)
12
+ * including the great_obj level boost; ego allocation (table sorted by
13
+ * alloc_min, ego_find_random with the out-of-depth chance),
14
+ * ego_apply_magic (random sustain/power/resist picks, ego bonuses,
15
+ * modifiers, flags, slays/brands/curses, resists, activation),
16
+ * ego_apply_minima, make_ego_item (great_ego boost); apply_magic's
17
+ * good/great power rolls, weapon and armour enchantment (including the
18
+ * melee dice supercharge and ammo dice boosts), the Ring of Speed
19
+ * supercharge, apply_curse (see object.ts for the one deferred check
20
+ * inside append_object_curse); make_object's kind selection, prep,
21
+ * magic, and stack-size generation; make_gold/money_kind.
22
+ * - LIVE: artifact creation. make_artifact (apply_magic promotion) and
23
+ * make_artifact_special (make_object's special-artifact roll) scan the
24
+ * artifact list consuming RNG in upstream's per-candidate order
25
+ * (out-of-depth roll then rarity roll, aidx ascending), copy the
26
+ * artifact's fixed data, and mark it created in the shared ArtifactState
27
+ * (aup_info[]). copy_artifact_data was already ported.
28
+ * - LIVE: pick_chest_traps for chests (obj/chest.ts), wired into apply_magic's
29
+ * chest branch so generated chests carry a real lock/trap pval; the rest
30
+ * of the chest domain (chest_check, chest_trap, chest_death, the open/
31
+ * disarm commands) lives in game/chest.ts (gap #49).
32
+ * - LIVE: make_object's *value out-parameter (obj-power.c object_value_real)
33
+ * and its 20%-per-level-OOD boost, exposed as the optional `outValue`
34
+ * parameter (a faithful transcription of the C out-parameter). Feeds
35
+ * gen/util.ts placeObject's obj_rating accumulation (gen-util.c L509-540).
36
+ * - LIVE (opt-in via MakeDeps): make_object's unreadable-book rejection
37
+ * (obj_kind_can_browse) via deps.canBrowseBook, append_object_curse's
38
+ * TIMED_INC foil via deps.timedFoil, and make_gold's birth_no_selling 5x
39
+ * inflation via deps.noSelling. Each is faithful 4.2.6 when its dep is
40
+ * supplied and a no-op (the prior behaviour) when it is absent.
41
+ */
42
+ import { KF, OBJ_MOD, OF, TV } from "../generated/index.js";
43
+ import { INT_MAX } from "../guard.js";
44
+ import { pickChestTraps } from "./chest.js";
45
+ import { objectValueReal } from "./value.js";
46
+ import { appendObjectCurse, copyBrands, copyCurses, copySlays, objectNew, tvalCanHaveCharges, tvalIsBook, tvalIsAmmo, tvalIsArmor, tvalIsChest, tvalIsEdible, tvalIsFuel, tvalIsLauncher, tvalIsLight, tvalIsMeleeWeapon, tvalIsPotion, tvalIsRing, tvalIsWeapon, tvalIsWearable, } from "./object.js";
47
+ import { FlagSet } from "../bitflag.js";
48
+ import { EL_INFO_IGNORE, EL_INFO_RANDOM, ELEM_BASE_MIN, ELEM_HIGH_MAX, ELEM_HIGH_MIN, ELEM_MAX, NO_MINIMUM, OBJ_MOD_MAX, OBJ_PROPERTY, OF_SIZE, OFT, TV_MAX, } from "./types.js";
49
+ /** randcalc(v, 0, MINIMISE) without an Rng (consumes no randomness). */
50
+ function randcalcMin(v) {
51
+ /* damcalc minimise returns the dice count; m_bonus minimise is 0. */
52
+ return v.base + v.dice;
53
+ }
54
+ /* ------------------------------------------------------------------ */
55
+ /* object_prep */
56
+ /* ------------------------------------------------------------------ */
57
+ /**
58
+ * object_prep: wipe an object clean and make it a standard object of
59
+ * the given kind.
60
+ *
61
+ * Upstream quirk kept: of_copy(obj, base->flags) then
62
+ * of_copy(obj, kind->flags) -- the second copy overwrites the first, so
63
+ * base flags do NOT reach the object here (they were already folded
64
+ * into nothing; only kind flags apply).
65
+ */
66
+ export function objectPrep(rng, reg, constants, kind, lev, randAspect) {
67
+ const obj = objectNew(kind);
68
+ obj.tval = kind.tval;
69
+ obj.sval = kind.sval;
70
+ obj.ac = kind.ac;
71
+ obj.dd = kind.dd;
72
+ obj.ds = kind.ds;
73
+ obj.weight = kind.weight;
74
+ obj.effect = kind.effect;
75
+ obj.time = { ...kind.time };
76
+ /* Default number */
77
+ obj.number = 1;
78
+ /* Copy flags (see quirk note above). */
79
+ obj.flags.copy(kind.base.flags);
80
+ obj.flags.copy(kind.flags);
81
+ /* Assign modifiers */
82
+ for (let i = 0; i < OBJ_MOD_MAX; i++) {
83
+ obj.modifiers[i] = rng.randcalc(kind.modifiers[i], lev, randAspect);
84
+ }
85
+ /* Assign charges (wands/staves only) */
86
+ if (tvalCanHaveCharges(obj.tval)) {
87
+ obj.pval = rng.randcalc(kind.charge, lev, randAspect);
88
+ }
89
+ /* Assign pval for food, oil and launchers */
90
+ if (tvalIsEdible(obj.tval) ||
91
+ tvalIsPotion(obj.tval) ||
92
+ tvalIsFuel(obj.tval) ||
93
+ tvalIsLauncher(obj.tval)) {
94
+ obj.pval = rng.randcalc(kind.pval, lev, randAspect);
95
+ }
96
+ /* Default fuel */
97
+ if (tvalIsLight(obj.tval)) {
98
+ if (obj.flags.has(OF.BURNS_OUT))
99
+ obj.timeout = constants.fuelTorch;
100
+ else if (obj.flags.has(OF.TAKES_FUEL))
101
+ obj.timeout = constants.defaultLamp;
102
+ }
103
+ /* Default magic */
104
+ obj.toH = rng.randcalc(kind.toH, lev, randAspect);
105
+ obj.toD = rng.randcalc(kind.toD, lev, randAspect);
106
+ obj.toA = rng.randcalc(kind.toA, lev, randAspect);
107
+ /* Default slays, brands and curses */
108
+ obj.slays = copySlays(obj.slays, kind.slays, reg.slays);
109
+ obj.brands = copyBrands(obj.brands, kind.brands, reg.brands);
110
+ copyCurses(rng, obj, kind.curses, reg.curses);
111
+ /* Default resists */
112
+ for (let i = 0; i < ELEM_MAX; i++) {
113
+ const dst = obj.elInfo[i];
114
+ const src = kind.elInfo[i];
115
+ dst.resLevel = src.resLevel;
116
+ dst.flags = src.flags;
117
+ dst.flags |= kind.base.elInfo[i].flags;
118
+ }
119
+ return obj;
120
+ }
121
+ /**
122
+ * kind_is_good: whether a template is "good" (kind-level test only).
123
+ */
124
+ export function kindIsGood(kind) {
125
+ switch (kind.tval) {
126
+ case TV.HARD_ARMOR:
127
+ case TV.SOFT_ARMOR:
128
+ case TV.DRAG_ARMOR:
129
+ case TV.SHIELD:
130
+ case TV.CLOAK:
131
+ case TV.BOOTS:
132
+ case TV.GLOVES:
133
+ case TV.HELM:
134
+ case TV.CROWN:
135
+ return randcalcMin(kind.toA) >= 0;
136
+ case TV.BOW:
137
+ case TV.SWORD:
138
+ case TV.HAFTED:
139
+ case TV.POLEARM:
140
+ case TV.DIGGING:
141
+ return randcalcMin(kind.toH) >= 0 && randcalcMin(kind.toD) >= 0;
142
+ case TV.BOLT:
143
+ case TV.ARROW:
144
+ return true;
145
+ default:
146
+ break;
147
+ }
148
+ return kind.kindFlags.has(KF.GOOD);
149
+ }
150
+ /**
151
+ * The allocation state built by init_obj_make: cumulative kind
152
+ * probability tables per level, per-tval totals, the ego allocation
153
+ * table, and the money kinds.
154
+ */
155
+ export class ObjAllocState {
156
+ reg;
157
+ kMax;
158
+ maxObjDepth;
159
+ /** Cumulative prob table: (maxObjDepth+1) rows of (kMax+1). */
160
+ objAlloc;
161
+ objAllocGreat;
162
+ /** Per-tval totals: (maxObjDepth+1) rows of TV_MAX. */
163
+ objTotalTval;
164
+ objTotalTvalGreat;
165
+ /** alloc_ego_table, sorted by ego alloc_min. */
166
+ egoTable = [];
167
+ moneyTypes = [];
168
+ constructor(reg, constants) {
169
+ this.reg = reg;
170
+ this.kMax = reg.kinds.length;
171
+ this.maxObjDepth = constants.maxObjDepth;
172
+ const rows = this.maxObjDepth + 1;
173
+ this.objAlloc = new Uint32Array(rows * (this.kMax + 1));
174
+ this.objAllocGreat = new Uint32Array(rows * (this.kMax + 1));
175
+ this.objTotalTval = new Uint32Array(rows * TV_MAX);
176
+ this.objTotalTvalGreat = new Uint32Array(rows * TV_MAX);
177
+ /* alloc_init_objects: fill the cumulative probability tables. */
178
+ for (let item = 0; item < this.kMax; item++) {
179
+ const kind = reg.kinds[item];
180
+ const min = kind.allocMin;
181
+ const max = kind.allocMax;
182
+ const good = kindIsGood(kind);
183
+ for (let lev = 0; lev <= this.maxObjDepth; lev++) {
184
+ let rarity = kind.allocProb;
185
+ if (lev < min || lev > max)
186
+ rarity = 0;
187
+ const row = lev * (this.kMax + 1);
188
+ this.objAlloc[row + item + 1] =
189
+ this.objAlloc[row + item] + rarity;
190
+ this.objTotalTval[lev * TV_MAX + kind.tval] =
191
+ this.objTotalTval[lev * TV_MAX + kind.tval] + rarity;
192
+ if (!good)
193
+ rarity = 0;
194
+ this.objAllocGreat[row + item + 1] =
195
+ this.objAllocGreat[row + item] + rarity;
196
+ this.objTotalTvalGreat[lev * TV_MAX + kind.tval] =
197
+ this.objTotalTvalGreat[lev * TV_MAX + kind.tval] +
198
+ rarity;
199
+ }
200
+ }
201
+ /* alloc_init_egos: table sorted (grouped) by minimum depth. */
202
+ const num = new Array(this.maxObjDepth + 1).fill(0);
203
+ const levelTotal = new Array(this.maxObjDepth + 1).fill(0);
204
+ let egoSize = 0;
205
+ for (const ego of reg.egos) {
206
+ if (ego.allocProb) {
207
+ egoSize++;
208
+ num[ego.allocMin] = num[ego.allocMin] + 1;
209
+ }
210
+ }
211
+ for (let i = 1; i < this.maxObjDepth; i++) {
212
+ num[i] = num[i] + num[i - 1];
213
+ }
214
+ for (let i = 0; i < egoSize; i++) {
215
+ this.egoTable.push({ index: 0, level: 0, prob2: 0, prob3: 0 });
216
+ }
217
+ for (const ego of reg.egos) {
218
+ if (!ego.allocProb)
219
+ continue;
220
+ const minLevel = ego.allocMin;
221
+ const y = minLevel > 0 ? num[minLevel - 1] : 0;
222
+ const z = y + levelTotal[minLevel];
223
+ const entry = this.egoTable[z];
224
+ entry.index = ego.eidx;
225
+ entry.level = minLevel;
226
+ entry.prob2 = ego.allocProb;
227
+ entry.prob3 = ego.allocProb;
228
+ levelTotal[minLevel] = levelTotal[minLevel] + 1;
229
+ }
230
+ /* init_money_svals. */
231
+ for (const kind of reg.kinds) {
232
+ if (kind.tval === TV.GOLD) {
233
+ this.moneyTypes.push({ name: kind.name, type: kind.sval });
234
+ }
235
+ }
236
+ }
237
+ /**
238
+ * binary_search_probtable: index i with tbl[i] <= p < tbl[i + 1].
239
+ */
240
+ static binarySearchProbtable(tbl, offset, n, p) {
241
+ let ilow = 0;
242
+ let ihigh = n;
243
+ for (;;) {
244
+ if (ilow === ihigh - 1)
245
+ return ilow;
246
+ const imid = ilow + Math.trunc((ihigh - ilow) / 2);
247
+ if (tbl[offset + imid] <= p) {
248
+ ilow = imid;
249
+ }
250
+ else {
251
+ ihigh = imid;
252
+ }
253
+ }
254
+ }
255
+ /** get_obj_num_by_kind: choose a kind of the given tval at a level. */
256
+ getObjNumByKind(rng, level, good, tval) {
257
+ const objects = good ? this.objAllocGreat : this.objAlloc;
258
+ const totals = good ? this.objTotalTvalGreat : this.objTotalTval;
259
+ const total = totals[level * TV_MAX + tval];
260
+ if (!total)
261
+ return null;
262
+ let value = rng.randint0(total);
263
+ const row = level * (this.kMax + 1);
264
+ let item = 0;
265
+ for (; item < this.kMax; item++) {
266
+ if (this.reg.kinds[item].tval === tval) {
267
+ const prob = objects[row + item + 1] - objects[row + item];
268
+ if (value < prob)
269
+ break;
270
+ value -= prob;
271
+ }
272
+ }
273
+ return this.reg.kinds[item] ?? null;
274
+ }
275
+ /**
276
+ * get_obj_num: choose an object kind for a dungeon level; tval 0
277
+ * allows any type. Includes the occasional great_obj level boost.
278
+ */
279
+ getObjNum(rng, constants, level, good, tval) {
280
+ /* Occasional level boost */
281
+ if (level > 0 && rng.oneIn(constants.greatObj)) {
282
+ /* What a bizarre calculation */
283
+ level =
284
+ 1 +
285
+ Math.trunc((level * this.maxObjDepth) / rng.randint1(this.maxObjDepth));
286
+ }
287
+ /* Paranoia */
288
+ level = Math.min(level, this.maxObjDepth);
289
+ level = Math.max(level, 0);
290
+ if (tval)
291
+ return this.getObjNumByKind(rng, level, good, tval);
292
+ const objects = good ? this.objAllocGreat : this.objAlloc;
293
+ const row = level * (this.kMax + 1);
294
+ if (!objects[row + this.kMax])
295
+ return null;
296
+ const value = rng.randint0(objects[row + this.kMax]);
297
+ const item = ObjAllocState.binarySearchProbtable(objects, row, this.kMax + 1, value);
298
+ return this.reg.kinds[item] ?? null;
299
+ }
300
+ /**
301
+ * ego_find_random: select an ego that fits the object's kind. Mutates
302
+ * prob3 per entry exactly as upstream does.
303
+ */
304
+ egoFindRandom(rng, obj, level) {
305
+ let total = 0;
306
+ for (const entry of this.egoTable) {
307
+ const ego = this.reg.egos[entry.index];
308
+ entry.prob3 = 0;
309
+ if (level <= ego.allocMax) {
310
+ const oodChance = Math.max(2, Math.trunc((ego.allocMin - level) / 3));
311
+ if (level >= ego.allocMin || rng.oneIn(oodChance)) {
312
+ if (ego.possItems.has(obj.kind.kidx)) {
313
+ entry.prob3 = entry.prob2;
314
+ }
315
+ total += entry.prob3;
316
+ }
317
+ }
318
+ }
319
+ if (total) {
320
+ let value = rng.randint0(total);
321
+ for (const entry of this.egoTable) {
322
+ if (value < entry.prob3) {
323
+ return this.reg.egos[entry.index];
324
+ }
325
+ value -= entry.prob3;
326
+ }
327
+ }
328
+ return null;
329
+ }
330
+ /** money_kind: a money kind by name, or level-appropriate. */
331
+ moneyKind(constants, name, value) {
332
+ /* (Roughly) the largest possible gold drop at max depth. */
333
+ const maxGoldDrop = 3 * constants.maxDepth + 30;
334
+ let rank = 0;
335
+ for (; rank < this.moneyTypes.length; rank++) {
336
+ if (this.moneyTypes[rank].name === name)
337
+ break;
338
+ }
339
+ if (rank === this.moneyTypes.length) {
340
+ rank = Math.trunc((Math.trunc((value * 100) / maxGoldDrop) * this.moneyTypes.length) /
341
+ 100);
342
+ }
343
+ if (rank >= this.moneyTypes.length)
344
+ rank = this.moneyTypes.length - 1;
345
+ const kind = this.reg.lookupKind(TV.GOLD, this.moneyTypes[rank].type);
346
+ if (!kind)
347
+ throw new Error("make: no gold kinds bound");
348
+ return kind;
349
+ }
350
+ }
351
+ /* ------------------------------------------------------------------ */
352
+ /* Ego magic */
353
+ /* ------------------------------------------------------------------ */
354
+ /**
355
+ * get_new_attr: choose a random flag from newf not already in flags
356
+ * (reservoir sampling), or 0 when none is available.
357
+ */
358
+ export function getNewAttr(rng, flags, newf) {
359
+ let options = 0;
360
+ let flag = 0;
361
+ for (const f of newf) {
362
+ if (flags.has(f))
363
+ continue;
364
+ if (rng.oneIn(++options))
365
+ flag = f;
366
+ }
367
+ return flag;
368
+ }
369
+ /** random_base_resist: a random unresisted base element, or -1. */
370
+ function randomBaseResist(rng, obj) {
371
+ let count = 0;
372
+ for (let i = ELEM_BASE_MIN; i < ELEM_HIGH_MIN; i++) {
373
+ if (obj.elInfo[i].resLevel === 0)
374
+ count++;
375
+ }
376
+ if (count === 0)
377
+ return -1;
378
+ let r = rng.randint0(count);
379
+ for (let i = ELEM_BASE_MIN; i < ELEM_HIGH_MIN; i++) {
380
+ if (obj.elInfo[i].resLevel !== 0)
381
+ continue;
382
+ if (r === 0)
383
+ return i;
384
+ r--;
385
+ }
386
+ return -1;
387
+ }
388
+ /** random_high_resist: a random unresisted high element, or -1. */
389
+ function randomHighResist(rng, obj) {
390
+ let count = 0;
391
+ for (let i = ELEM_HIGH_MIN; i < ELEM_HIGH_MAX; i++) {
392
+ if (obj.elInfo[i].resLevel === 0)
393
+ count++;
394
+ }
395
+ if (count === 0)
396
+ return -1;
397
+ let r = rng.randint0(count);
398
+ for (let i = ELEM_HIGH_MIN; i < ELEM_HIGH_MAX; i++) {
399
+ if (obj.elInfo[i].resLevel !== 0)
400
+ continue;
401
+ if (r === 0)
402
+ return i;
403
+ r--;
404
+ }
405
+ return -1;
406
+ }
407
+ /**
408
+ * create_obj_flag_mask (obj-properties.c): a flag set of all FLAG
409
+ * properties whose subtype (id=false) or id_type (id=true) is in the
410
+ * given list.
411
+ */
412
+ export function createObjFlagMask(properties, id, ...types) {
413
+ const f = new FlagSet(OF_SIZE);
414
+ for (const t of types) {
415
+ for (let j = 1; j < properties.length; j++) {
416
+ const prop = properties[j];
417
+ if (prop.type !== OBJ_PROPERTY.FLAG)
418
+ continue;
419
+ if ((id && prop.idType === t) || (!id && prop.subtype === t)) {
420
+ f.on(prop.propIndex);
421
+ }
422
+ }
423
+ }
424
+ return f;
425
+ }
426
+ /**
427
+ * ego_apply_magic: apply generation magic to an ego item.
428
+ */
429
+ export function egoApplyMagic(rng, reg, obj, level) {
430
+ const ego = obj.ego;
431
+ if (!ego)
432
+ return;
433
+ let pick = 0;
434
+ let resist = -1;
435
+ /* Resist or power? */
436
+ if (ego.kindFlags.has(KF.RAND_RES_POWER))
437
+ pick = rng.randint1(3);
438
+ /* Extra powers */
439
+ if (ego.kindFlags.has(KF.RAND_SUSTAIN)) {
440
+ const newf = createObjFlagMask(reg.properties, false, OFT.SUST);
441
+ const flag = getNewAttr(rng, obj.flags, newf);
442
+ /* Upstream of_on with flag 0 is UB; guard (never happens live). */
443
+ if (flag !== 0)
444
+ obj.flags.on(flag);
445
+ }
446
+ else if (ego.kindFlags.has(KF.RAND_POWER) || pick === 1) {
447
+ const newf = createObjFlagMask(reg.properties, false, OFT.PROT, OFT.MISC);
448
+ const flag = getNewAttr(rng, obj.flags, newf);
449
+ if (flag !== 0)
450
+ obj.flags.on(flag);
451
+ }
452
+ else if (ego.kindFlags.has(KF.RAND_BASE_RES) || pick > 1) {
453
+ /* Get a base resist if available, mark it as random */
454
+ resist = randomBaseResist(rng, obj);
455
+ if (resist >= 0) {
456
+ const info = obj.elInfo[resist];
457
+ info.resLevel = 1;
458
+ info.flags |= EL_INFO_RANDOM | EL_INFO_IGNORE;
459
+ }
460
+ }
461
+ else if (ego.kindFlags.has(KF.RAND_HI_RES)) {
462
+ /* Get a high resist if available, mark it as random */
463
+ resist = randomHighResist(rng, obj);
464
+ if (resist >= 0) {
465
+ const info = obj.elInfo[resist];
466
+ info.resLevel = 1;
467
+ info.flags |= EL_INFO_RANDOM | EL_INFO_IGNORE;
468
+ }
469
+ }
470
+ /* Apply extra ego bonuses */
471
+ obj.toH += rng.randcalc(ego.toH, level, "randomise");
472
+ obj.toD += rng.randcalc(ego.toD, level, "randomise");
473
+ obj.toA += rng.randcalc(ego.toA, level, "randomise");
474
+ /* Apply modifiers */
475
+ for (let i = 0; i < OBJ_MOD_MAX; i++) {
476
+ const x = rng.randcalc(ego.modifiers[i], level, "randomise");
477
+ obj.modifiers[i] = obj.modifiers[i] + x;
478
+ }
479
+ /* Apply flags */
480
+ obj.flags.union(ego.flags);
481
+ obj.flags.diff(ego.flagsOff);
482
+ /* Add slays, brands and curses */
483
+ obj.slays = copySlays(obj.slays, ego.slays, reg.slays);
484
+ obj.brands = copyBrands(obj.brands, ego.brands, reg.brands);
485
+ copyCurses(rng, obj, ego.curses, reg.curses);
486
+ /* Add resists */
487
+ for (let i = 0; i < ELEM_MAX; i++) {
488
+ const dst = obj.elInfo[i];
489
+ const src = ego.elInfo[i];
490
+ dst.resLevel = Math.max(src.resLevel, dst.resLevel);
491
+ dst.flags |= src.flags;
492
+ }
493
+ /* Add activation (ego's activation will trump object's, if any). */
494
+ if (ego.activation) {
495
+ obj.activation = ego.activation;
496
+ obj.time = { ...ego.time };
497
+ }
498
+ }
499
+ /** ego_apply_minima: apply minimum standards for ego items. */
500
+ export function egoApplyMinima(obj) {
501
+ const ego = obj.ego;
502
+ if (!ego)
503
+ return;
504
+ if (ego.minToH !== NO_MINIMUM && obj.toH < ego.minToH)
505
+ obj.toH = ego.minToH;
506
+ if (ego.minToD !== NO_MINIMUM && obj.toD < ego.minToD)
507
+ obj.toD = ego.minToD;
508
+ if (ego.minToA !== NO_MINIMUM && obj.toA < ego.minToA)
509
+ obj.toA = ego.minToA;
510
+ for (let i = 0; i < OBJ_MOD_MAX; i++) {
511
+ if (obj.modifiers[i] < ego.minModifiers[i]) {
512
+ obj.modifiers[i] = ego.minModifiers[i];
513
+ }
514
+ }
515
+ }
516
+ /**
517
+ * make_ego_item: try to find an ego for the object and apply it.
518
+ */
519
+ export function makeEgoItem(rng, reg, alloc, constants, obj, level) {
520
+ /* Cannot further improve artifacts or ego items */
521
+ if (obj.artifact || obj.ego)
522
+ return;
523
+ /* Occasionally boost the generation level of an item */
524
+ if (level > 0 && rng.oneIn(constants.greatEgo)) {
525
+ level =
526
+ 1 +
527
+ Math.trunc((level * constants.maxDepth) / rng.randint1(constants.maxDepth));
528
+ if (level >= constants.maxDepth)
529
+ level = constants.maxDepth - 1;
530
+ }
531
+ obj.ego = alloc.egoFindRandom(rng, obj, level);
532
+ if (obj.ego)
533
+ egoApplyMagic(rng, reg, obj, level);
534
+ }
535
+ /* ------------------------------------------------------------------ */
536
+ /* Artifacts */
537
+ /* ------------------------------------------------------------------ */
538
+ /**
539
+ * copy_artifact_data: copy artifact data onto a prepped object.
540
+ */
541
+ export function copyArtifactData(rng, reg, obj, art) {
542
+ const kind = reg.lookupKind(art.tval, art.sval);
543
+ for (let i = 0; i < OBJ_MOD_MAX; i++) {
544
+ obj.modifiers[i] = art.modifiers[i];
545
+ }
546
+ obj.ac = art.ac;
547
+ obj.dd = art.dd;
548
+ obj.ds = art.ds;
549
+ obj.toA = art.toA;
550
+ obj.toH = art.toH;
551
+ obj.toD = art.toD;
552
+ obj.weight = art.weight;
553
+ /* Activations can come from the artifact or the kind */
554
+ if (art.activation) {
555
+ obj.activation = art.activation;
556
+ obj.time = { ...art.time };
557
+ }
558
+ else if (kind?.activation) {
559
+ obj.activation = kind.activation;
560
+ obj.time = { ...kind.time };
561
+ }
562
+ /* Fix for artifact lights */
563
+ obj.flags.off(OF.TAKES_FUEL);
564
+ obj.flags.off(OF.BURNS_OUT);
565
+ /* Timeouts are always 0 */
566
+ obj.timeout = 0;
567
+ obj.flags.union(art.flags);
568
+ obj.slays = copySlays(obj.slays, art.slays, reg.slays);
569
+ obj.brands = copyBrands(obj.brands, art.brands, reg.brands);
570
+ copyCurses(rng, obj, art.curses, reg.curses);
571
+ for (let i = 0; i < ELEM_MAX; i++) {
572
+ const dst = obj.elInfo[i];
573
+ const src = art.elInfo[i];
574
+ if (src.resLevel !== 0)
575
+ dst.resLevel = src.resLevel;
576
+ dst.flags |= src.flags;
577
+ }
578
+ }
579
+ /**
580
+ * aup_info[] (object.h struct artifact_upkeep; obj-util.c
581
+ * is_artifact_created / mark_artifact_created): the per-artifact
582
+ * "created" flags, indexed by aidx (1-based; index 0 unused, matching the
583
+ * null placeholder in ObjRegistry.artifacts). One shared instance per
584
+ * game, serialized in the save (save.c/load.c) and reset to all-false at
585
+ * birth (player-birth.c reset_artifacts).
586
+ */
587
+ export class ArtifactState {
588
+ created;
589
+ seen;
590
+ everseen;
591
+ constructor(count) {
592
+ this.created = new Array(count).fill(false);
593
+ this.seen = new Array(count).fill(false);
594
+ this.everseen = new Array(count).fill(false);
595
+ }
596
+ /** is_artifact_created(art). */
597
+ isCreated(aidx) {
598
+ return this.created[aidx] ?? false;
599
+ }
600
+ /** mark_artifact_created(art, created). */
601
+ markCreated(aidx, created) {
602
+ this.created[aidx] = created;
603
+ }
604
+ /** is_artifact_seen / mark_artifact_seen (obj-util.c:1197-1229). */
605
+ isSeen(aidx) {
606
+ return this.seen[aidx] ?? false;
607
+ }
608
+ markSeen(aidx, seen) {
609
+ this.seen[aidx] = seen;
610
+ }
611
+ /** is_artifact_everseen / mark_artifact_everseen (obj-util.c:1206-1238). */
612
+ isEverseen(aidx) {
613
+ return this.everseen[aidx] ?? false;
614
+ }
615
+ markEverseen(aidx, everseen) {
616
+ this.everseen[aidx] = everseen;
617
+ }
618
+ /** A copy of the flags for serialization. */
619
+ snapshot() {
620
+ return [...this.created];
621
+ }
622
+ /** The complete aup_info[] field set written by save.c:674-688. */
623
+ snapshotState() {
624
+ return {
625
+ created: [...this.created],
626
+ seen: [...this.seen],
627
+ everseen: [...this.everseen],
628
+ };
629
+ }
630
+ /** Rebuild from serialized flags (load.c). */
631
+ static restore(data) {
632
+ const state = Array.isArray(data)
633
+ ? null
634
+ : data;
635
+ const created = state
636
+ ? state.created
637
+ : data;
638
+ const s = new ArtifactState(created.length);
639
+ for (let i = 0; i < created.length; i++) {
640
+ s.markCreated(i, created[i] ?? false);
641
+ if (state) {
642
+ s.markSeen(i, state.seen?.[i] ?? false);
643
+ s.markEverseen(i, state.everseen?.[i] ?? false);
644
+ }
645
+ }
646
+ return s;
647
+ }
648
+ /** reset_artifacts at birth: clear every created flag. */
649
+ reset() {
650
+ this.created.fill(false);
651
+ this.seen.fill(false);
652
+ }
653
+ }
654
+ /**
655
+ * make_artifact_special (obj-make.c:578): try to create one of the
656
+ * special (KF_INSTA_ART) artifacts. Scans the artifact list in aidx
657
+ * ascending order; the first candidate that survives the birth/depth/
658
+ * created/tval/rarity filters is prepped from its base kind, stamped with
659
+ * the artifact's fixed data, marked created, and returned.
660
+ *
661
+ * The C `level` parameter is vestigial (the body uses player->depth and
662
+ * art->alloc_min instead), so the port takes `depth` and drops it.
663
+ *
664
+ * RNG order per surviving candidate: randint0((alloc_min-depth)*2) only
665
+ * when alloc_min > depth, then randint1(100) for the rarity roll, then on
666
+ * success object_prep(RANDOMISE) followed by copy_artifact_data's
667
+ * curse-timeout draws.
668
+ */
669
+ export function makeArtifactSpecial(rng, deps, depth, tval) {
670
+ const { reg, constants } = deps;
671
+ /* No artifacts, do nothing */
672
+ if (deps.noArtifacts)
673
+ return null;
674
+ /* No artifacts in the town */
675
+ if (depth <= 0)
676
+ return null;
677
+ /* Check the special artifacts */
678
+ for (let i = 1; i < reg.artifacts.length; i++) {
679
+ const art = reg.artifacts[i];
680
+ if (!art)
681
+ continue;
682
+ const kind = reg.lookupKind(art.tval, art.sval);
683
+ /* Skip "empty" artifacts */
684
+ if (!art.name)
685
+ continue;
686
+ /* Make sure the kind was found */
687
+ if (!kind)
688
+ continue;
689
+ /* Make sure it's the right tval (if given) */
690
+ if (tval && tval !== art.tval)
691
+ continue;
692
+ /* Skip non-special artifacts */
693
+ if (!kind.kindFlags.has(KF.INSTA_ART))
694
+ continue;
695
+ /* Cannot make an artifact twice */
696
+ if (deps.artifacts.isCreated(art.aidx))
697
+ continue;
698
+ /* Enforce minimum "depth" (loosely) */
699
+ if (art.allocMin > depth) {
700
+ const d = (art.allocMin - depth) * 2;
701
+ if (rng.randint0(d) !== 0)
702
+ continue;
703
+ }
704
+ /* Enforce maximum depth (strictly) */
705
+ if (art.allocMax < depth)
706
+ continue;
707
+ /* Artifact "rarity roll" */
708
+ if (rng.randint1(100) > art.allocProb)
709
+ continue;
710
+ /* Assign the template */
711
+ const obj = objectPrep(rng, reg, constants, kind, art.allocMin, "randomise");
712
+ /* Mark the item as an artifact */
713
+ obj.artifact = art;
714
+ /* Copy across all the data from the artifact struct */
715
+ copyArtifactData(rng, reg, obj, art);
716
+ /* Mark the artifact as "created" */
717
+ deps.artifacts.markCreated(art.aidx, true);
718
+ return obj;
719
+ }
720
+ return null;
721
+ }
722
+ /**
723
+ * make_artifact (obj-make.c:655): try to promote an already-prepped
724
+ * object into a matching non-special artifact (tval AND sval match).
725
+ * Only apply_magic calls this. The scan halts on the first match (the C
726
+ * for-loop condition `!obj->artifact`); the object is NOT re-prepped
727
+ * (make_object already prepped it before apply_magic ran).
728
+ *
729
+ * RNG order per surviving candidate matches make_artifact_special: the
730
+ * out-of-depth roll (only when alloc_min > depth) then the rarity roll;
731
+ * on success copy_artifact_data draws the artifact's curse timeouts.
732
+ */
733
+ export function makeArtifact(rng, deps, obj, depth) {
734
+ const { reg } = deps;
735
+ /* Make sure birth no artifacts isn't set */
736
+ if (deps.noArtifacts)
737
+ return false;
738
+ /* No artifacts in the town */
739
+ if (depth <= 0)
740
+ return false;
741
+ /* Paranoia -- no "plural" artifacts */
742
+ if (obj.number !== 1)
743
+ return false;
744
+ /* Check the artifact list (skip the "specials") */
745
+ for (let i = 1; !obj.artifact && i < reg.artifacts.length; i++) {
746
+ const art = reg.artifacts[i];
747
+ if (!art)
748
+ continue;
749
+ const kind = reg.lookupKind(art.tval, art.sval);
750
+ /* Skip "empty" items */
751
+ if (!art.name)
752
+ continue;
753
+ /* Make sure the kind was found */
754
+ if (!kind)
755
+ continue;
756
+ /* Skip special artifacts */
757
+ if (kind.kindFlags.has(KF.INSTA_ART))
758
+ continue;
759
+ /* Cannot make an artifact twice */
760
+ if (deps.artifacts.isCreated(art.aidx))
761
+ continue;
762
+ /* Must have the correct fields */
763
+ if (art.tval !== obj.tval)
764
+ continue;
765
+ if (art.sval !== obj.sval)
766
+ continue;
767
+ /* Enforce minimum "depth" (loosely) */
768
+ if (art.allocMin > depth) {
769
+ const d = (art.allocMin - depth) * 2;
770
+ if (rng.randint0(d) !== 0)
771
+ continue;
772
+ }
773
+ /* Enforce maximum depth (strictly) */
774
+ if (art.allocMax < depth)
775
+ continue;
776
+ /* We must make the "rarity roll" */
777
+ if (rng.randint1(100) > art.allocProb)
778
+ continue;
779
+ /* Mark the item as an artifact */
780
+ obj.artifact = art;
781
+ }
782
+ if (obj.artifact) {
783
+ /* The artifact-commit seam (mod/hooks.ts artifactCommit). An object handed to
784
+ * make_artifact that ALREADY carries an artifact skips the selection loop's
785
+ * `!obj->artifact` scan, so this is the one point where a caller could commit
786
+ * the same artifact twice. Faithful 4.2.6 commits it unconditionally and that
787
+ * is what core does; a mod may refuse, and refusing clears the artifact and
788
+ * reports failure.
789
+ *
790
+ * RNG-FREE by contract - this runs on the main object stream. */
791
+ if (deps.hooks?.artifactCommit?.(obj.artifact.aidx, deps.artifacts.isCreated(obj.artifact.aidx)) === false) {
792
+ obj.artifact = null;
793
+ return false;
794
+ }
795
+ copyArtifactData(rng, reg, obj, obj.artifact);
796
+ deps.artifacts.markCreated(obj.artifact.aidx, true);
797
+ return true;
798
+ }
799
+ return false;
800
+ }
801
+ /* ------------------------------------------------------------------ */
802
+ /* apply_magic */
803
+ /* ------------------------------------------------------------------ */
804
+ /** apply_magic_weapon. */
805
+ export function applyMagicWeapon(rng, obj, level, power) {
806
+ if (power <= 0)
807
+ return;
808
+ obj.toH += rng.randint1(5) + rng.mBonus(5, level);
809
+ obj.toD += rng.randint1(5) + rng.mBonus(5, level);
810
+ if (power > 1) {
811
+ obj.toH += rng.mBonus(10, level);
812
+ obj.toD += rng.mBonus(10, level);
813
+ if (tvalIsMeleeWeapon(obj.tval)) {
814
+ /* Super-charge the damage dice */
815
+ while (obj.dd * obj.ds > 0 && rng.oneIn(4 * obj.dd * obj.ds)) {
816
+ /* More dice or sides means more likely to get still more */
817
+ if (rng.randint0(obj.dd + obj.ds) < obj.dd) {
818
+ let newdice = rng.randint1(2 + Math.trunc(obj.dd / obj.ds));
819
+ while ((obj.dd + 1) * obj.ds <= 40 && newdice) {
820
+ if (!rng.oneIn(3))
821
+ obj.dd++;
822
+ newdice--;
823
+ }
824
+ }
825
+ else {
826
+ let newsides = rng.randint1(2 + Math.trunc(obj.ds / obj.dd));
827
+ while (obj.dd * (obj.ds + 1) <= 40 && newsides) {
828
+ if (!rng.oneIn(3))
829
+ obj.ds++;
830
+ newsides--;
831
+ }
832
+ }
833
+ }
834
+ }
835
+ else if (tvalIsAmmo(obj.tval)) {
836
+ /* Up to two chances to enhance damage dice. */
837
+ if (rng.oneIn(6)) {
838
+ obj.ds++;
839
+ if (rng.oneIn(10)) {
840
+ obj.ds++;
841
+ }
842
+ }
843
+ }
844
+ }
845
+ }
846
+ /** apply_magic_armour. */
847
+ export function applyMagicArmour(rng, obj, level, power) {
848
+ if (power <= 0)
849
+ return;
850
+ obj.toA += rng.randint1(5) + rng.mBonus(5, level);
851
+ if (power > 1)
852
+ obj.toA += rng.mBonus(10, level);
853
+ }
854
+ /**
855
+ * apply_curse (obj-make.c): try to curse an object, increasing its
856
+ * effective generation level in exchange.
857
+ */
858
+ export function applyCurse(rng, reg, obj, lev, timedFoil) {
859
+ let maxCurses = rng.randint1(4);
860
+ const power = rng.randint1(9) + 10 * rng.mBonus(9, lev);
861
+ let newLev = lev;
862
+ if (obj.flags.has(OF.BLESSED))
863
+ return lev;
864
+ while (maxCurses--) {
865
+ /* Try to curse it */
866
+ let tries = 3;
867
+ while (tries--) {
868
+ const pick = rng.randint1(reg.curseMax - 1);
869
+ const curse = reg.curses[pick];
870
+ if (curse && curse.poss[obj.tval]) {
871
+ if (appendObjectCurse(rng, obj, pick, power, reg.curses, timedFoil)) {
872
+ newLev += rng.randint1(1 + Math.trunc(power / 10));
873
+ }
874
+ break;
875
+ }
876
+ }
877
+ }
878
+ return newLev;
879
+ }
880
+ /**
881
+ * apply_magic: ego creation and random bonuses. Returns 0 for a normal
882
+ * object, 1 good, 2 ego, 3 artifact.
883
+ *
884
+ * `depth` is the player/chunk depth make_artifact tests against (0 in
885
+ * town); it is distinct from the object creation level `lev`.
886
+ */
887
+ export function applyMagic(rng, deps, obj, lev, allowArtifacts, good, great, extraRoll, depth) {
888
+ const { reg, alloc, constants } = deps;
889
+ let power = 0;
890
+ const goodChance = 33 + lev;
891
+ const greatChance = 30;
892
+ /* Roll for "good" */
893
+ if (good || rng.randint0(100) < goodChance) {
894
+ power = 1;
895
+ /* Roll for "great" */
896
+ if (great || rng.randint0(100) < greatChance)
897
+ power = 2;
898
+ }
899
+ /* Roll for artifact creation */
900
+ if (allowArtifacts) {
901
+ let rolls = 0;
902
+ if (power >= 2)
903
+ rolls = 1;
904
+ if (great)
905
+ rolls = 2;
906
+ if (extraRoll)
907
+ rolls += 2;
908
+ for (let i = 0; i < rolls; i++) {
909
+ if (makeArtifact(rng, deps, obj, depth))
910
+ return 3;
911
+ }
912
+ }
913
+ /* Try to make an ego item */
914
+ if (power === 2)
915
+ makeEgoItem(rng, reg, alloc, constants, obj, lev);
916
+ /* Give it a chance to be cursed */
917
+ if (rng.oneIn(20) && tvalIsWearable(obj.tval)) {
918
+ lev = applyCurse(rng, reg, obj, lev, deps.timedFoil);
919
+ }
920
+ /* Apply magic */
921
+ if (tvalIsWeapon(obj.tval)) {
922
+ applyMagicWeapon(rng, obj, lev, power);
923
+ }
924
+ else if (tvalIsArmor(obj.tval)) {
925
+ applyMagicArmour(rng, obj, lev, power);
926
+ }
927
+ else if (tvalIsRing(obj.tval)) {
928
+ if (obj.sval === reg.lookupSval(obj.tval, "Speed")) {
929
+ /* Super-charge the ring */
930
+ while (rng.oneIn(2)) {
931
+ obj.modifiers[OBJ_MOD_SPEED] = obj.modifiers[OBJ_MOD_SPEED] + 1;
932
+ }
933
+ }
934
+ }
935
+ else if (tvalIsChest(obj.tval)) {
936
+ obj.pval = pickChestTraps(rng, obj);
937
+ }
938
+ /* Apply minima from ego items if necessary */
939
+ egoApplyMinima(obj);
940
+ return power;
941
+ }
942
+ /** OBJ_MOD_SPEED index (STR..CON are 0..4, then the modifier list). */
943
+ const OBJ_MOD_SPEED = OBJ_MOD.SPEED;
944
+ /* ------------------------------------------------------------------ */
945
+ /* make_object / make_gold */
946
+ /* ------------------------------------------------------------------ */
947
+ /**
948
+ * make_object: attempt to make an object at a creation level.
949
+ *
950
+ * Live: the special-artifact chance roll (the attempt itself is the
951
+ * deferred stub, so failing it upgrades the drop to `good` exactly as
952
+ * upstream does when no special artifact can be made), kind selection,
953
+ * prep, apply_magic, stack generation, and (when `outValue` is supplied)
954
+ * the *value out-parameter with its out-of-depth boost. DEFERRED: book
955
+ * rejection (needs the player class).
956
+ */
957
+ export function makeObject(rng, deps, lev, good, great, extraRoll, tval, depth, outValue) {
958
+ const { reg, alloc, constants } = deps;
959
+ /* Try to make a special artifact */
960
+ if (rng.oneIn(good ? 10 : 1000)) {
961
+ const special = makeArtifactSpecial(rng, deps, depth, tval);
962
+ if (special) {
963
+ if (outValue)
964
+ outValue.value = objectValueReal(reg, special, 1);
965
+ return special;
966
+ }
967
+ /* If we failed to make an artifact, the player gets a good item */
968
+ good = true;
969
+ }
970
+ /* Base level for the object */
971
+ const base = good ? lev + 10 : lev;
972
+ /* Try to choose an object kind; reject most books the player can't read
973
+ * (obj-make.c L1185-1195). Each rejected book costs a get_obj_num draw and,
974
+ * one time in five, is accepted anyway. Without a class predicate
975
+ * (deps.canBrowseBook) every book is browsable and the loop takes its first
976
+ * pick, matching a class-less caller. */
977
+ let kind = null;
978
+ let tries = 3;
979
+ while (tries) {
980
+ kind = alloc.getObjNum(rng, constants, base, good || great, tval);
981
+ if (kind &&
982
+ deps.canBrowseBook &&
983
+ tvalIsBook(kind.tval) &&
984
+ !deps.canBrowseBook(kind)) {
985
+ if (rng.oneIn(5))
986
+ break;
987
+ kind = null;
988
+ tries--;
989
+ continue;
990
+ }
991
+ else {
992
+ break;
993
+ }
994
+ }
995
+ if (!kind)
996
+ return null;
997
+ /* Make the object, prep it and apply magic */
998
+ const obj = objectPrep(rng, reg, constants, kind, lev, "randomise");
999
+ applyMagic(rng, deps, obj, lev, true, good, great, extraRoll, depth);
1000
+ /* Generate multiple items */
1001
+ if (!obj.artifact && kind.genMultProb >= rng.randint1(100)) {
1002
+ obj.number = rng.randcalc(kind.stackSize, lev, "randomise");
1003
+ }
1004
+ if (obj.number > obj.kind.base.maxStack) {
1005
+ obj.number = obj.kind.base.maxStack;
1006
+ }
1007
+ /* Get the value, and boost 20% per level OOD for uncursed objects
1008
+ * (obj-make.c make_object L1211-1231). Draws no RNG. */
1009
+ if (outValue) {
1010
+ outValue.value = objectValueReal(reg, obj, obj.number);
1011
+ if (!obj.curses && kind.allocMin > depth) {
1012
+ const ood = kind.allocMin - depth;
1013
+ const frac = Math.trunc(Math.max(outValue.value, 0) / 5);
1014
+ const adj = frac <= Math.trunc(INT_MAX / ood) ? ood * frac : INT_MAX;
1015
+ outValue.value =
1016
+ outValue.value <= INT_MAX - adj ? outValue.value + adj : INT_MAX;
1017
+ }
1018
+ }
1019
+ return obj;
1020
+ }
1021
+ /** C SHRT_MAX, the gold pval cap. */
1022
+ const SHRT_MAX = 32767;
1023
+ /**
1024
+ * make_gold: make a money object.
1025
+ *
1026
+ * `playerDepth` is upstream's player->depth (0 in town), used only for the
1027
+ * birth_no_selling inflation (obj-make.c L1310-1312: value *= 5 when no-selling
1028
+ * is on and the player is in the dungeon). It is distinct from `lev` (the
1029
+ * generation level driving the value roll); when omitted it defaults to `lev`,
1030
+ * which equals the current level's depth at every real call site.
1031
+ */
1032
+ export function makeGold(rng, deps, lev, coinType, playerDepth) {
1033
+ const { reg, alloc, constants } = deps;
1034
+ /* This average is 16 at dlev0, 80 at dlev40, 176 at dlev100. */
1035
+ const avg = Math.trunc((16 * lev) / 10) + 16;
1036
+ const spread = lev + 10;
1037
+ let value = rng.randSpread(avg, spread);
1038
+ /* Increase the range to infinite, moving the average to 110% */
1039
+ while (rng.oneIn(100) && value * 10 <= SHRT_MAX)
1040
+ value *= 10;
1041
+ const kind = alloc.moneyKind(constants, coinType, value);
1042
+ const newGold = objectPrep(rng, reg, constants, kind, lev, "randomise");
1043
+ /* If we're playing with no_selling, increase the value (obj-make.c
1044
+ * L1310-1312). money_kind above is chosen on the pre-inflation value. */
1045
+ const depth = playerDepth ?? lev;
1046
+ if (deps.noSelling && depth)
1047
+ value *= 5;
1048
+ /* Cap gold at max short */
1049
+ if (value >= SHRT_MAX) {
1050
+ value = SHRT_MAX - rng.randint0(200);
1051
+ }
1052
+ newGold.pval = value;
1053
+ return newGold;
1054
+ }
1055
+ //# sourceMappingURL=make.js.map