@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
package/src/index.ts ADDED
@@ -0,0 +1,250 @@
1
+ /**
2
+ * @rpgm-tools/neo-angband-core - the headless game engine.
3
+ *
4
+ * Phase 0 scaffold. The engine grows here by dependency order:
5
+ * rng -> dice/expressions -> flags -> world kernel -> entities ->
6
+ * effects -> game loop. See docs/PORT_PLAN.md at the repository root.
7
+ *
8
+ * Parity baseline: Angband 4.2.6 (see reference/ and parity/).
9
+ */
10
+
11
+ export * from "./rng.js";
12
+ export * from "./loc.js";
13
+ export * from "./events.js";
14
+ export * from "./cmd.js";
15
+ export * from "./msg.js";
16
+ export * from "./color.js";
17
+ export * from "./bitflag.js";
18
+ export * from "./guard.js";
19
+ export * from "./expression.js";
20
+ export * from "./dice.js";
21
+ export * from "./generated/index.js";
22
+ export * from "./constants.js";
23
+
24
+ export * from "./version.js";
25
+ export * from "./world/feature.js";
26
+ export * from "./world/chunk.js";
27
+ export * from "./world/view.js";
28
+ export * from "./world/scatter.js";
29
+ export * from "./world/flow.js";
30
+ export * from "./world/project.js";
31
+ export * from "./world/projection.js";
32
+ export * from "./world/trap.js";
33
+ export * from "./effects/effect.js";
34
+ export * from "./effects/effect-info.js";
35
+ export * from "./effects/effect-choice.js";
36
+ export * from "./effects/interpreter.js";
37
+ export * from "./effects/handlers.js";
38
+ export * from "./mon/types.js";
39
+ export * from "./mon/bind.js";
40
+ export * from "./mon/monster.js";
41
+ export * from "./mon/make.js";
42
+ export * from "./mon/summon.js";
43
+ export * from "./mon/predicate.js";
44
+ export * from "./mon/timed.js";
45
+ export * from "./mon/take-hit.js";
46
+ export * from "./mon/spell.js";
47
+ export * from "./mon/desc.js";
48
+ export * from "./mon/knowledge-groups.js";
49
+ export * from "./mon/project-mon.js";
50
+ export * from "./obj/types.js";
51
+ export * from "./obj/bind.js";
52
+ export * from "./obj/object.js";
53
+ export * from "./obj/chest.js";
54
+ export * from "./obj/make.js";
55
+ export * from "./obj/power.js";
56
+ export * from "./obj/value.js";
57
+ export * from "./obj/knowledge.js";
58
+ export * from "./obj/ignore.js";
59
+ export * from "./obj/known-object.js";
60
+ export * from "./obj/artifact-known.js";
61
+ export * from "./obj/artifact-fake.js";
62
+ export * from "./obj/desc.js";
63
+ export * from "./obj/object-info.js";
64
+ export * from "./obj/randname.js";
65
+ export * from "./obj/flavor.js";
66
+ export * from "./obj/randart.js";
67
+ export * from "./player/types.js";
68
+ export * from "./player/options.js";
69
+ export * from "./player/bind.js";
70
+ export * from "./player/player.js";
71
+ export * from "./player/calcs.js";
72
+ export * from "./player/timed.js";
73
+ export * from "./player/take-hit.js";
74
+ export * from "./player/spell.js";
75
+ export * from "./player/birth.js";
76
+ export * from "./player/history.js";
77
+ export * from "./player/abilities.js";
78
+ export * from "./player/shape-lore.js";
79
+ export * from "./save/buffer.js";
80
+ export * from "./save/compress.js";
81
+ export * from "./save/description.js";
82
+ export * from "./save/integrity.js";
83
+ export * from "./gen/util.js";
84
+ export * from "./gen/room.js";
85
+ export * from "./gen/cave.js";
86
+ export * from "./gen/generate.js";
87
+ /* gen-monster's pit machinery: resolvePits is the last piece of a GenDeps a
88
+ * caller outside core cannot otherwise build, so a mod that wants to run
89
+ * generateLevel itself (or test a levelGenerated hook against real levels) needs
90
+ * it. Everything else here is the same generation vocabulary gen/util already
91
+ * publishes. */
92
+ export * from "./gen/gen-monster.js";
93
+ export * from "./combat/index.js";
94
+ export * from "./store/types.js";
95
+ export * from "./store/bind.js";
96
+ export * from "./store/price.js";
97
+ export * from "./store/store.js";
98
+ export * from "./store/transact.js";
99
+ export * from "./store/store-cmd.js";
100
+ export * from "./session/boot.js";
101
+ export * from "./session/game.js";
102
+ export * from "./session/save.js";
103
+ /* The behaviour seam itself: ModHooks (the closed set of extension points) and
104
+ * composeModHooks (the host's fold over several mods' contributions). A mod
105
+ * cannot write a hook without the type, and a host cannot install one without
106
+ * the fold, so both are part of the published API - see mod/hooks.ts. */
107
+ export * from "./mod/hooks.js";
108
+ export * from "./mod/save-blocks.js";
109
+ export * from "./mod/ids.js";
110
+ export * from "./mod/registry-host.js";
111
+ export * from "./mod/vocabulary.js";
112
+ export * from "./agent/index.js";
113
+ export * from "./game/energy.js";
114
+ export * from "./game/context.js";
115
+ export * from "./game/monster-turn.js";
116
+ export * from "./game/scheduler.js";
117
+ export * from "./game/player-turn.js";
118
+ export * from "./game/project-monster.js";
119
+ export * from "./game/project-player.js";
120
+ export * from "./game/project-cast.js";
121
+ export * from "./game/effect-env.js";
122
+ export * from "./game/effect-game-env.js";
123
+ export * from "./game/effect-attack.js";
124
+ export * from "./game/effect-general.js";
125
+ export * from "./game/effect-monster.js";
126
+ export * from "./game/effect-teleport.js";
127
+ export * from "./game/effect-terrain.js";
128
+ export * from "./game/effect-item.js";
129
+ export * from "./game/effect-melee.js";
130
+ export * from "./game/effect-summon.js";
131
+ export * from "./game/effect-detect.js";
132
+ export * from "./game/known.js";
133
+ export * from "./game/inscription-confirm.js";
134
+ export * from "./game/target.js";
135
+ export * from "./game/target-loop.js";
136
+ export * from "./game/mon-cmd.js";
137
+ export * from "./game/describe.js";
138
+ export * from "./game/history.js";
139
+ export * from "./game/object-inspect.js";
140
+ export * from "./game/mon-message.js";
141
+ export * from "./game/mon-list.js";
142
+ export * from "./game/obj-list.js";
143
+ export * from "./game/display.js";
144
+ export * from "./game/char-sheet.js";
145
+ export * from "./game/lore-color.js";
146
+ export * from "./game/ui-entry.js";
147
+ export * from "./game/equip-cmp.js";
148
+ export * from "./game/mon-shape.js";
149
+ export * from "./mon/lore.js";
150
+ export * from "./mon/lore-describe.js";
151
+ /* The live-cave placement family shares upstream names with its
152
+ * generation-time twin in gen/util; the live variants export Live-suffixed. */
153
+ export {
154
+ squareIsOpenLive,
155
+ squareIsEmptyLive,
156
+ squareAllowsSummon,
157
+ placeNewMonsterOne,
158
+ placeNewMonster as placeNewMonsterLive,
159
+ pickAndPlaceMonster as pickAndPlaceMonsterLive,
160
+ summonSpecific,
161
+ selectShape,
162
+ wipeMonsterCounts,
163
+ countMonsterRaces,
164
+ } from "./game/mon-place.js";
165
+ export type {
166
+ MonPlaceDeps as LiveMonPlaceDeps,
167
+ SummonDeps,
168
+ } from "./game/mon-place.js";
169
+ export * from "./game/thrust.js";
170
+ export * from "./game/mon-cast.js";
171
+ export * from "./game/mon-ranged.js";
172
+ export * from "./game/mon-group.js";
173
+ export * from "./game/floor.js";
174
+ export * from "./game/dump-level.js";
175
+ export * from "./game/spoil.js";
176
+ export * from "./game/pickup.js";
177
+ export * from "./game/obj-cmd.js";
178
+ export * from "./game/cave-cmd.js";
179
+ export * from "./game/chest.js";
180
+ export * from "./game/trap.js";
181
+ export * from "./game/spell-cmd.js";
182
+ export * from "./game/ranged-cmd.js";
183
+ export * from "./game/loop.js";
184
+ export * from "./game/ignore-cmd.js";
185
+ /* --- Wizard / debug commands (task #29: cmd-wizard.c / wiz-debug.c) ---
186
+ * The debug/cheat command surface, gated behind the WizardDeps.wizard flag
187
+ * (upstream ALLOW_DEBUG + NOSCORE_WIZARD); unreachable in faithful play. */
188
+ export * from "./game/wizard.js";
189
+ export * from "./sound/index.js";
190
+
191
+ /* --- High scores (task #28: score.c / score-util.c / ui-score.c) --- */
192
+ export * from "./score/types.js";
193
+ export * from "./score/score.js";
194
+ export * from "./score/display.js";
195
+
196
+ /* --- Graphics/tiles + visuals (task #27: grafmode.c / ui-visuals.c) --- */
197
+ export * from "./visuals/index.js";
198
+
199
+ /* --- The host layer (z-file.c + init.c's ANGBAND_DIR_*) ---
200
+ * The injectable seam that lets a front end declare what its platform can do
201
+ * instead of letting the platform's limits quietly redefine the game. Adapters
202
+ * live with their front ends (web, cli, desktop); MemoryHost is the reference
203
+ * implementation and what the tests drive. */
204
+ export * from "./host/io.js";
205
+ export * from "./host/memory.js";
206
+ export * from "./host/raw.js";
207
+ export * from "./host/bridge.js";
208
+ export * from "./host/args.js";
209
+
210
+ // Some small derived constants and geometry helpers are defined
211
+ // independently by more than one domain (identical values/behavior).
212
+ // Re-export a single canonical copy so the barrel is unambiguous rather
213
+ // than dropping the name from two colliding `export *`s.
214
+ // - OF_SIZE/ELEM_MAX: flag-array sizes derived from the generated lists,
215
+ // defined by both obj/types and player/types.
216
+ // - nextGrid: next_grid(grid, dir), defined by both world/view and
217
+ // gen/util as grid + DDGRID[dir].
218
+ export { OF_SIZE, ELEM_MAX } from "./obj/types.js";
219
+ export { nextGrid } from "./world/view.js";
220
+ // objDescNameFormat: obj/bind has a reduced &-stripping helper (sval name
221
+ // matching); obj/desc has the full obj_desc_name_format (modstr + pluralise).
222
+ // Expose the full port as canonical; bind's stays internal to its module.
223
+ export { objDescNameFormat } from "./obj/desc.js";
224
+ // CriticalLevel is defined by both constants (parsed data) and combat/hit
225
+ // (with msg typed as the specific HitType). Crit levels are a combat
226
+ // concept; expose combat/hit's as canonical.
227
+ export type { CriticalLevel } from "./combat/hit.js";
228
+ // Combat message types for shells rendering py_attack text (the combat code
229
+ // returns HitType keys only; the text is a UI concern - see combat/melee.ts).
230
+ export type { MeleeAttack, MeleeBlow } from "./combat/melee.js";
231
+ export type { HitType } from "./combat/hit.js";
232
+ // - EXTRACT_ENERGY/turnEnergy: the extract_energy[] table and turn_energy()
233
+ // live in mon/monster; game/energy re-exports them for convenience, so
234
+ // pin mon/monster as the single canonical source.
235
+ // - squareIsEmpty: two genuinely different predicates share the name -
236
+ // gen/util's is a generation-time check (takes a Gen), game/context's is
237
+ // a live occupancy check (takes a GameState). Keep gen/util's as the
238
+ // barrel-canonical (it predates game/); game/context's is reached via its
239
+ // module and will get an aliased export if the game API needs it publicly.
240
+ export { EXTRACT_ENERGY, turnEnergy } from "./mon/monster.js";
241
+ export { squareIsEmpty } from "./gen/util.js";
242
+ // - squareCanPutItem: like squareIsEmpty, a generation-time predicate
243
+ // (gen/util, takes a Gen) and a live-cave one (game/floor, takes a
244
+ // GameState) share the name; gen/util's stays barrel-canonical and the
245
+ // live one is reached via its module.
246
+ export { squareCanPutItem } from "./gen/util.js";
247
+ // - placeTrap: gen/util's generation-time marker vs game/trap's live
248
+ // place_trap; same convention, gen/util's stays barrel-canonical.
249
+ export { placeTrap } from "./gen/util.js";
250
+ export * from "./game/gear.js";
package/src/loc.ts ADDED
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Grid locations and keypad-direction tables, ported from
3
+ * reference/src/z-type.h, z-type.c, and the direction tables plus
4
+ * distance() from reference/src/cave.c and cave-view.c (Angband 4.2.6).
5
+ *
6
+ * Locations are plain immutable value objects; y grows downward (screen
7
+ * order) exactly as upstream. Directions use keypad numbering: 5 is
8
+ * "no direction", 2/4/6/8 orthogonal, 1/3/7/9 diagonal.
9
+ */
10
+
11
+ import type { Rng } from "./rng.js";
12
+
13
+ export interface Loc {
14
+ readonly x: number;
15
+ readonly y: number;
16
+ }
17
+
18
+ /** Construct a location. */
19
+ export function loc(x: number, y: number): Loc {
20
+ return { x, y };
21
+ }
22
+
23
+ /** loc_eq: value equality. */
24
+ export function locEq(a: Loc, b: Loc): boolean {
25
+ return a.x === b.x && a.y === b.y;
26
+ }
27
+
28
+ /** loc_is_zero. */
29
+ export function locIsZero(a: Loc): boolean {
30
+ return a.x === 0 && a.y === 0;
31
+ }
32
+
33
+ /** loc_sum. */
34
+ export function locSum(a: Loc, b: Loc): Loc {
35
+ return loc(a.x + b.x, a.y + b.y);
36
+ }
37
+
38
+ /** loc_diff: a - b. */
39
+ export function locDiff(a: Loc, b: Loc): Loc {
40
+ return loc(a.x - b.x, a.y - b.y);
41
+ }
42
+
43
+ /** loc_offset. */
44
+ export function locOffset(a: Loc, dx: number, dy: number): Loc {
45
+ return loc(a.x + dx, a.y + dy);
46
+ }
47
+
48
+ /** rand_loc: a location spread uniformly around `grid`. */
49
+ export function randLoc(
50
+ rng: Rng,
51
+ grid: Loc,
52
+ xSpread: number,
53
+ ySpread: number,
54
+ ): Loc {
55
+ return loc(rng.randSpread(grid.x, xSpread), rng.randSpread(grid.y, ySpread));
56
+ }
57
+
58
+ /**
59
+ * distance: the upstream integer approximation
60
+ * (longer axis + half the shorter axis).
61
+ */
62
+ export function distance(a: Loc, b: Loc): number {
63
+ const ay = Math.abs(b.y - a.y);
64
+ const ax = Math.abs(b.x - a.x);
65
+ return ay > ax ? ay + (ax >> 1) : ax + (ay >> 1);
66
+ }
67
+
68
+ /**
69
+ * ddd: the cycle of directions, southward then clockwise, ending with 5.
70
+ */
71
+ export const DDD: readonly number[] = [2, 8, 6, 4, 3, 1, 9, 7, 5];
72
+
73
+ /** ddx: keypad direction -> x offset (index 0 unused). */
74
+ export const DDX: readonly number[] = [0, -1, 0, 1, -1, 0, 1, -1, 0, 1];
75
+
76
+ /** ddy: keypad direction -> y offset (index 0 unused). */
77
+ export const DDY: readonly number[] = [0, 1, 1, 1, 0, 0, 0, -1, -1, -1];
78
+
79
+ /** ddgrid: keypad direction -> Loc offset (index 0 unused). */
80
+ export const DDGRID: readonly Loc[] = [
81
+ { x: 0, y: 0 },
82
+ { x: -1, y: 1 },
83
+ { x: 0, y: 1 },
84
+ { x: 1, y: 1 },
85
+ { x: -1, y: 0 },
86
+ { x: 0, y: 0 },
87
+ { x: 1, y: 0 },
88
+ { x: -1, y: -1 },
89
+ { x: 0, y: -1 },
90
+ { x: 1, y: -1 },
91
+ ];
92
+
93
+ /** ddx_ddd: x offsets in ddd order. */
94
+ export const DDX_DDD: readonly number[] = [0, 0, 1, -1, 1, -1, 1, -1, 0];
95
+
96
+ /** ddy_ddd: y offsets in ddd order. */
97
+ export const DDY_DDD: readonly number[] = [1, -1, 0, 0, 1, 1, -1, -1, 0];
98
+
99
+ /** ddgrid_ddd: Loc offsets in ddd order. */
100
+ export const DDGRID_DDD: readonly Loc[] = [
101
+ { x: 0, y: 1 },
102
+ { x: 0, y: -1 },
103
+ { x: 1, y: 0 },
104
+ { x: -1, y: 0 },
105
+ { x: 1, y: 1 },
106
+ { x: -1, y: 1 },
107
+ { x: 1, y: -1 },
108
+ { x: -1, y: -1 },
109
+ { x: 0, y: 0 },
110
+ ];
111
+
112
+ /**
113
+ * clockwise_ddd: can multiply the index by 45 degrees, e.g. index 6 is
114
+ * 270 degrees (9 o'clock).
115
+ */
116
+ export const CLOCKWISE_DDD: readonly number[] = [8, 9, 6, 3, 2, 1, 4, 7, 5];
117
+
118
+ /** clockwise_grid: Loc offsets in clockwise order starting north. */
119
+ export const CLOCKWISE_GRID: readonly Loc[] = [
120
+ { x: 0, y: -1 },
121
+ { x: 1, y: -1 },
122
+ { x: 1, y: 0 },
123
+ { x: 1, y: 1 },
124
+ { x: 0, y: 1 },
125
+ { x: -1, y: 1 },
126
+ { x: -1, y: 0 },
127
+ { x: -1, y: -1 },
128
+ { x: 0, y: 0 },
129
+ ];
130
+
131
+ /**
132
+ * side_dirs: alternative sideways/backup directions for each keypad
133
+ * direction, in order of decreasing desirability. Rows 0-9 bias right,
134
+ * rows 10-19 bias left.
135
+ */
136
+ export const SIDE_DIRS: readonly (readonly number[])[] = [
137
+ [0, 0, 0, 0, 0, 0, 0, 0],
138
+ [1, 4, 2, 7, 3, 8, 6, 9],
139
+ [2, 1, 3, 4, 6, 7, 9, 8],
140
+ [3, 2, 6, 1, 9, 4, 8, 7],
141
+ [4, 7, 1, 8, 2, 9, 3, 6],
142
+ [5, 5, 5, 5, 5, 5, 5, 5],
143
+ [6, 3, 9, 2, 8, 1, 7, 4],
144
+ [7, 8, 4, 9, 1, 6, 2, 3],
145
+ [8, 9, 7, 6, 4, 3, 1, 2],
146
+ [9, 6, 8, 3, 7, 2, 4, 1],
147
+ [0, 0, 0, 0, 0, 0, 0, 0],
148
+ [1, 2, 4, 3, 7, 6, 8, 9],
149
+ [2, 3, 1, 6, 4, 9, 7, 8],
150
+ [3, 6, 2, 9, 1, 8, 4, 7],
151
+ [4, 1, 7, 2, 8, 3, 9, 6],
152
+ [5, 5, 5, 5, 5, 5, 5, 5],
153
+ [6, 9, 3, 8, 2, 7, 1, 4],
154
+ [7, 4, 8, 1, 9, 2, 6, 3],
155
+ [8, 7, 9, 4, 6, 1, 3, 2],
156
+ [9, 8, 6, 7, 3, 4, 2, 1],
157
+ ];
@@ -0,0 +1,278 @@
1
+ /**
2
+ * The behaviour seam: the closed set of points where a mod may change what the
3
+ * ENGINE does, as opposed to what content it runs on.
4
+ *
5
+ * WHY THIS EXISTS
6
+ *
7
+ * Content mods are already fully expressible - a pack contributes records and
8
+ * composeContentPacks merges them, and core never learns a mod was involved.
9
+ * Behaviour is different. A fix like "don't log a duplicate unique kill" is not a
10
+ * record; it is a decision taken inside a function, and no amount of data can
11
+ * reach inside that function from outside. So the first cut of the bundled
12
+ * bug-fixes / QoL mods did the only thing that was available: the FIX LIVED IN
13
+ * CORE behind `if (modRuleEnabled(state, "bugfix.x"))`.
14
+ *
15
+ * That was wrong, and neostryder named exactly why (2026-07-29): "the whole point of
16
+ * making them mods was to exclude them from the core game." A flag-gated fix is
17
+ * not excluded from core. It ships in core, it is tested in core, and core
18
+ * carries the string "bugfix.uniqueKillHistory" - so core knows the mod's name.
19
+ * Deleting the mod folder would not delete one line of it.
20
+ *
21
+ * WHAT THIS CHANGES, AND WHAT IT HONESTLY DOES NOT
22
+ *
23
+ * After this, core contains no mod's fix and no mod's name: no `bugfix.*` or
24
+ * `qol.*` literal, no staircase repair, no message rewriter. Each fix body lives
25
+ * in its mod's own folder and arrives as that mod's code.
26
+ *
27
+ * What core still contains - and cannot stop containing - is the SEAM ITSELF:
28
+ * one named, documented extension point per behaviour a mod may override. That
29
+ * is not a residue of the bundled mods; it is the price of behaviour modding at
30
+ * all, and it is the same bargain SKSE, Forge and every other real modding
31
+ * system strikes. The difference from a flag read is the difference that matters:
32
+ * a seam is generic and available to ANY mod, and it holds no opinion about what
33
+ * should plug into it, whereas `if (modRuleEnabled(state, "bugfix.stairsReachable"))`
34
+ * is core implementing one specific mod.
35
+ *
36
+ * SHAPE
37
+ *
38
+ * A plain interface of optional functions rather than a string-keyed registry,
39
+ * for three reasons:
40
+ *
41
+ * - It is typed end to end. A registry keyed by strings pushes every payload
42
+ * through `unknown` and moves the errors to runtime.
43
+ * - "A disabled mod's patches DO NOT EXIST" becomes literally true, not merely
44
+ * false-y: with no mod loaded the field is ABSENT, the optional call is not
45
+ * made, and the faithful path is the only path that was ever compiled into
46
+ * the branch. No flag map is consulted because there is no flag map.
47
+ * - It costs nothing. `state.modHooks?.historyAdd?.(...)` on an absent object is
48
+ * one undefined check, not a map lookup per call.
49
+ *
50
+ * COMPOSITION IS THE HOST'S JOB
51
+ *
52
+ * Two enabled mods may both want the same hook. Core deliberately holds ONE
53
+ * ModHooks and knows nothing about mod identity, ordering or enablement - the
54
+ * host (web/cli) collects each enabled mod's contributions in load order and
55
+ * folds them into a single object (see composeModHooks). This is the same
56
+ * layering as content: core consumes a composed result and never the pack list.
57
+ *
58
+ * DETERMINISM
59
+ *
60
+ * Two of these run inside the generation and object pipelines, where an extra
61
+ * RNG draw does not merely change a value, it desynchronises every draw after
62
+ * it - so a seed would stop meaning the same level. Those hooks are documented
63
+ * RNG-FREE and are given no rng to draw from. That is a contract a mod can still
64
+ * break by reaching for a global; the test suite pins it by running generation
65
+ * with a hook installed and asserting the level is bit-identical.
66
+ */
67
+
68
+ import type { GameState } from "../game/context.js";
69
+
70
+ /**
71
+ * A mod's behaviour contributions. Every member is optional; an absent member
72
+ * means "this mod does not touch that point" and core takes its faithful path.
73
+ *
74
+ * Each entry documents the ONE core call site it serves, because a hook whose
75
+ * call site is not written down is a hook nobody can verify is still wired -
76
+ * exactly the failure the call-site census exists to catch.
77
+ */
78
+ export interface ModHooks {
79
+ /**
80
+ * A walk into a grid the player could tunnel through (cave-cmd.ts,
81
+ * movementAutoDig's call site).
82
+ *
83
+ * Return the energy the move should cost, or null to decline - and declining
84
+ * MUST be free of observable effect, because faithful core's behaviour here is
85
+ * to bump into the wall without drawing any RNG. A hook that rolls a dig check
86
+ * and then returns null has already moved the RNG stream.
87
+ *
88
+ * `deps` is the live CaveCmdDeps the session built, passed through because the
89
+ * work a mod would want to do here (tunnelAux - one real dig attempt with the
90
+ * upstream roll and payouts) needs dependencies only the session can construct.
91
+ * Typed as unknown so this seam does not drag the cave-command types into every
92
+ * consumer of ModHooks; a mod casts it back to CaveCmdDeps, which core exports.
93
+ *
94
+ * Serves: the QoL mod's "auto-dig on walk".
95
+ */
96
+ walkBlockedByDiggable?: (
97
+ state: GameState,
98
+ grid: { y: number; x: number },
99
+ deps: unknown,
100
+ ) => number | null;
101
+
102
+ /**
103
+ * Two floor-list entries that compared exactly equal, including on distance
104
+ * (obj-list.ts, the comparator's final tiebreak).
105
+ *
106
+ * Return a negative/positive number to order them, or 0 to leave them equal
107
+ * (which is what faithful core does - it keeps collect order via a stable
108
+ * sort). Must be a consistent total order or the sort is meaningless.
109
+ *
110
+ * Serves: the bug-fixes mod's strict object-list ordering (#4664).
111
+ */
112
+ objectListTiebreak?: (
113
+ a: { readonly dy: number; readonly dx: number },
114
+ b: { readonly dy: number; readonly dx: number },
115
+ ) => number;
116
+
117
+ /**
118
+ * A finished, otherwise-accepted level, before cave_generate returns it
119
+ * (generate.ts, the accept branch).
120
+ *
121
+ * Return false to REJECT the level, which makes cave_generate re-roll exactly
122
+ * as it does for a monster-maximum overflow. May mutate the level to repair it
123
+ * and then return true.
124
+ *
125
+ * RNG-FREE: no rng is passed and none may be reached. A draw here shifts every
126
+ * subsequent draw and a seed stops reproducing its dungeon.
127
+ *
128
+ * Serves: the bug-fixes mod's reachable-staircase repair.
129
+ */
130
+ levelGenerated?: (gen: unknown, quest: boolean) => boolean;
131
+
132
+ /**
133
+ * An object about to be committed as an artifact, when it ALREADY carries one
134
+ * (obj/make.ts, the `obj.artifact` branch).
135
+ *
136
+ * Return false to refuse the commit; the caller then clears the artifact and
137
+ * reports failure. Faithful core commits it unconditionally.
138
+ *
139
+ * RNG-FREE, for the same reason as levelGenerated: this runs inside object
140
+ * creation, on the main stream.
141
+ *
142
+ * Serves: the bug-fixes mod's duplicate-artifact guard (#4510).
143
+ */
144
+ artifactCommit?: (aidx: number, alreadyCreated: boolean) => boolean;
145
+
146
+ /**
147
+ * A character-history entry about to be written (session/game.ts and any
148
+ * other historyAdd call site that passes its context).
149
+ *
150
+ * Return false to suppress the entry. Faithful core writes every entry it
151
+ * reaches, duplicates included.
152
+ *
153
+ * Serves: the bug-fixes mod's no-duplicate-unique-kill fix (#4245).
154
+ */
155
+ historyAdd?: (entry: { readonly what: string; readonly type: number; readonly duplicate: boolean }) => boolean;
156
+
157
+ /**
158
+ * Whether the noise and scent heatmaps belong in the save (session/save.ts,
159
+ * snapshotSquares' argument).
160
+ *
161
+ * Return true to persist them. Faithful core omits them, which is the upstream
162
+ * behaviour and the upstream bug.
163
+ *
164
+ * Serves: the bug-fixes mod's noise/scent persistence (#4605).
165
+ */
166
+ saveNoiseScent?: () => boolean;
167
+
168
+ /**
169
+ * Player-visible message text, on its way to the message line (the host's
170
+ * message sink).
171
+ *
172
+ * Return the text to show. Faithful core shows what it was given, warts and
173
+ * all. A hook here can only RESTATE a message - it must never change what a
174
+ * message means, or the port would be showing text upstream never wrote and no
175
+ * census could see it.
176
+ *
177
+ * Serves: the bug-fixes mod's cosmetic string corrections.
178
+ */
179
+ messageText?: (raw: string) => string;
180
+ }
181
+
182
+ /**
183
+ * Fold several mods' contributions into the single ModHooks core holds.
184
+ *
185
+ * Order is LOAD order, and what "later wins" means differs per hook because the
186
+ * hooks differ in kind - which is precisely why this is one written-down function
187
+ * and not a generic merge:
188
+ *
189
+ * - VETO hooks (levelGenerated, artifactCommit, historyAdd) are conjunctive:
190
+ * every contributor must agree, and the first refusal decides. This is the
191
+ * only safe fold - a mod that vetoes a duplicate artifact must not be
192
+ * overruled by a later mod that merely has no opinion.
193
+ * - TRANSFORM hooks (messageText) compose in order, each seeing the previous
194
+ * one's output.
195
+ * - FIRST-HANDLER hooks (walkBlockedByDiggable) stop at the first non-null, so
196
+ * an earlier mod's handling wins and a later one cannot double-spend energy.
197
+ * - ANY hooks (saveNoiseScent) are disjunctive: one mod asking for the data is
198
+ * enough, because the data is additive and a second mod cannot object.
199
+ * - ORDERING hooks (objectListTiebreak) stop at the first non-zero answer, the
200
+ * same way a lexicographic comparator chains.
201
+ *
202
+ * Returns undefined when nothing contributed, so the caller can leave the field
203
+ * absent rather than storing an empty object - keeping "no mod loaded" and "a
204
+ * mod loaded that touches nothing" indistinguishable from core's side.
205
+ */
206
+ export function composeModHooks(
207
+ contributions: readonly ModHooks[],
208
+ ): ModHooks | undefined {
209
+ const list = contributions.filter((c) => Object.keys(c).length > 0);
210
+ if (list.length === 0) return undefined;
211
+
212
+ const out: ModHooks = {};
213
+
214
+ const walk = list.map((c) => c.walkBlockedByDiggable).filter(isFn);
215
+ if (walk.length > 0) {
216
+ out.walkBlockedByDiggable = (state, grid, deps): number | null => {
217
+ for (const fn of walk) {
218
+ const energy = fn(state, grid, deps);
219
+ if (energy !== null) return energy;
220
+ }
221
+ return null;
222
+ };
223
+ }
224
+
225
+ const tiebreak = list.map((c) => c.objectListTiebreak).filter(isFn);
226
+ if (tiebreak.length > 0) {
227
+ out.objectListTiebreak = (a, b): number => {
228
+ for (const fn of tiebreak) {
229
+ const r = fn(a, b);
230
+ if (r !== 0) return r;
231
+ }
232
+ return 0;
233
+ };
234
+ }
235
+
236
+ const level = list.map((c) => c.levelGenerated).filter(isFn);
237
+ if (level.length > 0) {
238
+ out.levelGenerated = (gen, quest): boolean => {
239
+ /* Every contributor runs even after one has repaired the level, because a
240
+ * second mod's invariant is not satisfied by the first mod's repair. The
241
+ * first REFUSAL short-circuits, since the level is being thrown away. */
242
+ for (const fn of level) if (!fn(gen, quest)) return false;
243
+ return true;
244
+ };
245
+ }
246
+
247
+ const artifact = list.map((c) => c.artifactCommit).filter(isFn);
248
+ if (artifact.length > 0) {
249
+ out.artifactCommit = (aidx, alreadyCreated): boolean => {
250
+ for (const fn of artifact) if (!fn(aidx, alreadyCreated)) return false;
251
+ return true;
252
+ };
253
+ }
254
+
255
+ const history = list.map((c) => c.historyAdd).filter(isFn);
256
+ if (history.length > 0) {
257
+ out.historyAdd = (entry): boolean => {
258
+ for (const fn of history) if (!fn(entry)) return false;
259
+ return true;
260
+ };
261
+ }
262
+
263
+ const noise = list.map((c) => c.saveNoiseScent).filter(isFn);
264
+ if (noise.length > 0) {
265
+ out.saveNoiseScent = (): boolean => noise.some((fn) => fn());
266
+ }
267
+
268
+ const text = list.map((c) => c.messageText).filter(isFn);
269
+ if (text.length > 0) {
270
+ out.messageText = (raw): string => text.reduce((s, fn) => fn(s), raw);
271
+ }
272
+
273
+ return out;
274
+ }
275
+
276
+ function isFn<T>(v: T | undefined): v is T {
277
+ return typeof v === "function";
278
+ }