@rpgm-tools/neo-angband-core 0.18.0 → 0.19.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 (848) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/perceive.d.ts.map +1 -1
  3. package/dist/agent/perceive.js +2 -2
  4. package/dist/agent/perceive.js.map +1 -1
  5. package/dist/combat/blow-vectors.d.ts +78 -0
  6. package/dist/combat/blow-vectors.d.ts.map +1 -0
  7. package/dist/combat/blow-vectors.fixtures.d.ts +19 -0
  8. package/dist/combat/blow-vectors.fixtures.d.ts.map +1 -0
  9. package/dist/combat/blow-vectors.fixtures.js +81 -0
  10. package/dist/combat/blow-vectors.fixtures.js.map +1 -0
  11. package/dist/combat/blow-vectors.js +195 -0
  12. package/dist/combat/blow-vectors.js.map +1 -0
  13. package/dist/combat/brand-slay.d.ts +22 -9
  14. package/dist/combat/brand-slay.d.ts.map +1 -1
  15. package/dist/combat/brand-slay.js +37 -10
  16. package/dist/combat/brand-slay.js.map +1 -1
  17. package/dist/combat/index.d.ts +1 -1
  18. package/dist/combat/index.js +1 -1
  19. package/dist/combat/melee.d.ts +25 -13
  20. package/dist/combat/melee.d.ts.map +1 -1
  21. package/dist/combat/melee.js +23 -19
  22. package/dist/combat/melee.js.map +1 -1
  23. package/dist/combat/mon-melee.d.ts +166 -7
  24. package/dist/combat/mon-melee.d.ts.map +1 -1
  25. package/dist/combat/mon-melee.js +469 -338
  26. package/dist/combat/mon-melee.js.map +1 -1
  27. package/dist/combat/ranged.d.ts +15 -13
  28. package/dist/combat/ranged.d.ts.map +1 -1
  29. package/dist/combat/ranged.js +31 -29
  30. package/dist/combat/ranged.js.map +1 -1
  31. package/dist/constants.d.ts +14 -0
  32. package/dist/constants.d.ts.map +1 -1
  33. package/dist/constants.js +14 -0
  34. package/dist/constants.js.map +1 -1
  35. package/dist/datafile.d.ts +48 -0
  36. package/dist/datafile.d.ts.map +1 -0
  37. package/dist/datafile.js +102 -0
  38. package/dist/datafile.js.map +1 -0
  39. package/dist/effects/effect-info-registry.d.ts +237 -0
  40. package/dist/effects/effect-info-registry.d.ts.map +1 -0
  41. package/dist/effects/effect-info-registry.js +138 -0
  42. package/dist/effects/effect-info-registry.js.map +1 -0
  43. package/dist/effects/effect-info-vectors.d.ts +92 -0
  44. package/dist/effects/effect-info-vectors.d.ts.map +1 -0
  45. package/dist/effects/effect-info-vectors.fixtures.d.ts +18 -0
  46. package/dist/effects/effect-info-vectors.fixtures.d.ts.map +1 -0
  47. package/dist/effects/effect-info-vectors.fixtures.js +51 -0
  48. package/dist/effects/effect-info-vectors.fixtures.js.map +1 -0
  49. package/dist/effects/effect-info-vectors.js +315 -0
  50. package/dist/effects/effect-info-vectors.js.map +1 -0
  51. package/dist/effects/effect-info.d.ts +5 -1
  52. package/dist/effects/effect-info.d.ts.map +1 -1
  53. package/dist/effects/effect-info.js +245 -143
  54. package/dist/effects/effect-info.js.map +1 -1
  55. package/dist/effects/effect.d.ts +4 -3
  56. package/dist/effects/effect.d.ts.map +1 -1
  57. package/dist/effects/effect.js +88 -70
  58. package/dist/effects/effect.js.map +1 -1
  59. package/dist/effects/handlers.d.ts +1 -1
  60. package/dist/effects/handlers.d.ts.map +1 -1
  61. package/dist/effects/handlers.js +5 -2
  62. package/dist/effects/handlers.js.map +1 -1
  63. package/dist/effects/interpreter.d.ts +11 -0
  64. package/dist/effects/interpreter.d.ts.map +1 -1
  65. package/dist/effects/interpreter.js +13 -0
  66. package/dist/effects/interpreter.js.map +1 -1
  67. package/dist/game/cave-cmd.d.ts +9 -5
  68. package/dist/game/cave-cmd.d.ts.map +1 -1
  69. package/dist/game/cave-cmd.js +56 -11
  70. package/dist/game/cave-cmd.js.map +1 -1
  71. package/dist/game/cave-square.d.ts +42 -0
  72. package/dist/game/cave-square.d.ts.map +1 -0
  73. package/dist/game/cave-square.js +73 -0
  74. package/dist/game/cave-square.js.map +1 -0
  75. package/dist/game/char-sheet.d.ts +12 -8
  76. package/dist/game/char-sheet.d.ts.map +1 -1
  77. package/dist/game/char-sheet.js +41 -8
  78. package/dist/game/char-sheet.js.map +1 -1
  79. package/dist/game/chest.d.ts +2 -3
  80. package/dist/game/chest.d.ts.map +1 -1
  81. package/dist/game/chest.js +17 -6
  82. package/dist/game/chest.js.map +1 -1
  83. package/dist/game/context.d.ts +213 -22
  84. package/dist/game/context.d.ts.map +1 -1
  85. package/dist/game/context.js +109 -17
  86. package/dist/game/context.js.map +1 -1
  87. package/dist/game/describe.d.ts +13 -0
  88. package/dist/game/describe.d.ts.map +1 -1
  89. package/dist/game/describe.js +32 -4
  90. package/dist/game/describe.js.map +1 -1
  91. package/dist/game/display.d.ts +97 -8
  92. package/dist/game/display.d.ts.map +1 -1
  93. package/dist/game/display.js +157 -13
  94. package/dist/game/display.js.map +1 -1
  95. package/dist/game/dump-level.d.ts.map +1 -1
  96. package/dist/game/dump-level.js +3 -2
  97. package/dist/game/dump-level.js.map +1 -1
  98. package/dist/game/effect-attack.d.ts.map +1 -1
  99. package/dist/game/effect-attack.js +36 -27
  100. package/dist/game/effect-attack.js.map +1 -1
  101. package/dist/game/effect-detect.d.ts +4 -4
  102. package/dist/game/effect-detect.d.ts.map +1 -1
  103. package/dist/game/effect-detect.js +42 -9
  104. package/dist/game/effect-detect.js.map +1 -1
  105. package/dist/game/effect-env.d.ts +7 -1
  106. package/dist/game/effect-env.d.ts.map +1 -1
  107. package/dist/game/effect-env.js +1 -0
  108. package/dist/game/effect-env.js.map +1 -1
  109. package/dist/game/effect-general.d.ts +5 -3
  110. package/dist/game/effect-general.d.ts.map +1 -1
  111. package/dist/game/effect-general.js +94 -43
  112. package/dist/game/effect-general.js.map +1 -1
  113. package/dist/game/effect-item.d.ts +2 -1
  114. package/dist/game/effect-item.d.ts.map +1 -1
  115. package/dist/game/effect-item.js +136 -82
  116. package/dist/game/effect-item.js.map +1 -1
  117. package/dist/game/effect-melee.d.ts +10 -4
  118. package/dist/game/effect-melee.d.ts.map +1 -1
  119. package/dist/game/effect-melee.js +44 -19
  120. package/dist/game/effect-melee.js.map +1 -1
  121. package/dist/game/effect-monster.d.ts +26 -4
  122. package/dist/game/effect-monster.d.ts.map +1 -1
  123. package/dist/game/effect-monster.js +52 -9
  124. package/dist/game/effect-monster.js.map +1 -1
  125. package/dist/game/effect-teleport.d.ts +58 -19
  126. package/dist/game/effect-teleport.d.ts.map +1 -1
  127. package/dist/game/effect-teleport.js +143 -27
  128. package/dist/game/effect-teleport.js.map +1 -1
  129. package/dist/game/effect-terrain.d.ts +1 -3
  130. package/dist/game/effect-terrain.d.ts.map +1 -1
  131. package/dist/game/effect-terrain.js +38 -22
  132. package/dist/game/effect-terrain.js.map +1 -1
  133. package/dist/game/equip-cmp.d.ts.map +1 -1
  134. package/dist/game/equip-cmp.js +10 -7
  135. package/dist/game/equip-cmp.js.map +1 -1
  136. package/dist/game/floor.d.ts +16 -4
  137. package/dist/game/floor.d.ts.map +1 -1
  138. package/dist/game/floor.js +22 -4
  139. package/dist/game/floor.js.map +1 -1
  140. package/dist/game/gear.d.ts +101 -13
  141. package/dist/game/gear.d.ts.map +1 -1
  142. package/dist/game/gear.js +183 -24
  143. package/dist/game/gear.js.map +1 -1
  144. package/dist/game/harness.d.ts +2 -1
  145. package/dist/game/harness.d.ts.map +1 -1
  146. package/dist/game/harness.js +12 -1
  147. package/dist/game/harness.js.map +1 -1
  148. package/dist/game/ignore-cmd.d.ts +47 -8
  149. package/dist/game/ignore-cmd.d.ts.map +1 -1
  150. package/dist/game/ignore-cmd.js +76 -8
  151. package/dist/game/ignore-cmd.js.map +1 -1
  152. package/dist/game/known.d.ts +223 -34
  153. package/dist/game/known.d.ts.map +1 -1
  154. package/dist/game/known.js +301 -67
  155. package/dist/game/known.js.map +1 -1
  156. package/dist/game/loop.d.ts +4 -3
  157. package/dist/game/loop.d.ts.map +1 -1
  158. package/dist/game/loop.js +49 -29
  159. package/dist/game/loop.js.map +1 -1
  160. package/dist/game/lore-color.d.ts.map +1 -1
  161. package/dist/game/lore-color.js +13 -1
  162. package/dist/game/lore-color.js.map +1 -1
  163. package/dist/game/mon-cast.d.ts +3 -4
  164. package/dist/game/mon-cast.d.ts.map +1 -1
  165. package/dist/game/mon-cast.js +30 -2
  166. package/dist/game/mon-cast.js.map +1 -1
  167. package/dist/game/mon-cmd.d.ts +4 -5
  168. package/dist/game/mon-cmd.d.ts.map +1 -1
  169. package/dist/game/mon-cmd.js +80 -27
  170. package/dist/game/mon-cmd.js.map +1 -1
  171. package/dist/game/mon-death.d.ts +8 -4
  172. package/dist/game/mon-death.d.ts.map +1 -1
  173. package/dist/game/mon-death.js +6 -9
  174. package/dist/game/mon-death.js.map +1 -1
  175. package/dist/game/mon-group.d.ts +9 -5
  176. package/dist/game/mon-group.d.ts.map +1 -1
  177. package/dist/game/mon-group.js +9 -5
  178. package/dist/game/mon-group.js.map +1 -1
  179. package/dist/game/mon-message.d.ts +90 -40
  180. package/dist/game/mon-message.d.ts.map +1 -1
  181. package/dist/game/mon-message.js +267 -59
  182. package/dist/game/mon-message.js.map +1 -1
  183. package/dist/game/mon-place.d.ts +11 -1
  184. package/dist/game/mon-place.d.ts.map +1 -1
  185. package/dist/game/mon-place.js +15 -3
  186. package/dist/game/mon-place.js.map +1 -1
  187. package/dist/game/mon-ranged.d.ts +2 -1
  188. package/dist/game/mon-ranged.d.ts.map +1 -1
  189. package/dist/game/mon-ranged.js +11 -5
  190. package/dist/game/mon-ranged.js.map +1 -1
  191. package/dist/game/mon-side.d.ts +3 -2
  192. package/dist/game/mon-side.d.ts.map +1 -1
  193. package/dist/game/mon-side.js +15 -14
  194. package/dist/game/mon-side.js.map +1 -1
  195. package/dist/game/monster-turn.d.ts +20 -10
  196. package/dist/game/monster-turn.d.ts.map +1 -1
  197. package/dist/game/monster-turn.js +110 -83
  198. package/dist/game/monster-turn.js.map +1 -1
  199. package/dist/game/notice.d.ts +36 -0
  200. package/dist/game/notice.d.ts.map +1 -0
  201. package/dist/game/notice.js +79 -0
  202. package/dist/game/notice.js.map +1 -0
  203. package/dist/game/obj-cmd.d.ts +14 -3
  204. package/dist/game/obj-cmd.d.ts.map +1 -1
  205. package/dist/game/obj-cmd.js +109 -35
  206. package/dist/game/obj-cmd.js.map +1 -1
  207. package/dist/game/obj-list.d.ts +13 -2
  208. package/dist/game/obj-list.d.ts.map +1 -1
  209. package/dist/game/obj-list.js +42 -27
  210. package/dist/game/obj-list.js.map +1 -1
  211. package/dist/game/object-inspect.d.ts +9 -0
  212. package/dist/game/object-inspect.d.ts.map +1 -1
  213. package/dist/game/object-inspect.js +4 -0
  214. package/dist/game/object-inspect.js.map +1 -1
  215. package/dist/game/pickup.d.ts +0 -2
  216. package/dist/game/pickup.d.ts.map +1 -1
  217. package/dist/game/pickup.js +18 -3
  218. package/dist/game/pickup.js.map +1 -1
  219. package/dist/game/player-side-vectors.d.ts +174 -0
  220. package/dist/game/player-side-vectors.d.ts.map +1 -0
  221. package/dist/game/player-side-vectors.fixtures.d.ts +33 -0
  222. package/dist/game/player-side-vectors.fixtures.d.ts.map +1 -0
  223. package/dist/game/player-side-vectors.fixtures.js +191 -0
  224. package/dist/game/player-side-vectors.fixtures.js.map +1 -0
  225. package/dist/game/player-side-vectors.js +292 -0
  226. package/dist/game/player-side-vectors.js.map +1 -0
  227. package/dist/game/player-side.d.ts +129 -1
  228. package/dist/game/player-side.d.ts.map +1 -1
  229. package/dist/game/player-side.js +520 -338
  230. package/dist/game/player-side.js.map +1 -1
  231. package/dist/game/player-turn.d.ts +26 -7
  232. package/dist/game/player-turn.d.ts.map +1 -1
  233. package/dist/game/player-turn.js +180 -33
  234. package/dist/game/player-turn.js.map +1 -1
  235. package/dist/game/poly.d.ts +38 -0
  236. package/dist/game/poly.d.ts.map +1 -0
  237. package/dist/game/poly.js +82 -0
  238. package/dist/game/poly.js.map +1 -0
  239. package/dist/game/project-cast.d.ts +20 -3
  240. package/dist/game/project-cast.d.ts.map +1 -1
  241. package/dist/game/project-cast.js +49 -6
  242. package/dist/game/project-cast.js.map +1 -1
  243. package/dist/game/project-feat-vectors.d.ts +124 -0
  244. package/dist/game/project-feat-vectors.d.ts.map +1 -0
  245. package/dist/game/project-feat-vectors.fixtures.d.ts +13 -0
  246. package/dist/game/project-feat-vectors.fixtures.d.ts.map +1 -0
  247. package/dist/game/project-feat-vectors.fixtures.js +94 -0
  248. package/dist/game/project-feat-vectors.fixtures.js.map +1 -0
  249. package/dist/game/project-feat-vectors.js +229 -0
  250. package/dist/game/project-feat-vectors.js.map +1 -0
  251. package/dist/game/project-feat.d.ts +53 -1
  252. package/dist/game/project-feat.d.ts.map +1 -1
  253. package/dist/game/project-feat.js +374 -247
  254. package/dist/game/project-feat.js.map +1 -1
  255. package/dist/game/project-monster.d.ts +21 -8
  256. package/dist/game/project-monster.d.ts.map +1 -1
  257. package/dist/game/project-monster.js +45 -21
  258. package/dist/game/project-monster.js.map +1 -1
  259. package/dist/game/project-obj.d.ts +62 -0
  260. package/dist/game/project-obj.d.ts.map +1 -1
  261. package/dist/game/project-obj.js +72 -41
  262. package/dist/game/project-obj.js.map +1 -1
  263. package/dist/game/project-player.d.ts +8 -0
  264. package/dist/game/project-player.d.ts.map +1 -1
  265. package/dist/game/project-player.js.map +1 -1
  266. package/dist/game/projection-handlers.d.ts +81 -0
  267. package/dist/game/projection-handlers.d.ts.map +1 -0
  268. package/dist/game/projection-handlers.js +93 -0
  269. package/dist/game/projection-handlers.js.map +1 -0
  270. package/dist/game/quest.d.ts +23 -0
  271. package/dist/game/quest.d.ts.map +1 -1
  272. package/dist/game/quest.js +42 -0
  273. package/dist/game/quest.js.map +1 -1
  274. package/dist/game/ranged-cmd.d.ts +13 -2
  275. package/dist/game/ranged-cmd.d.ts.map +1 -1
  276. package/dist/game/ranged-cmd.js +32 -15
  277. package/dist/game/ranged-cmd.js.map +1 -1
  278. package/dist/game/repeat.d.ts +78 -0
  279. package/dist/game/repeat.d.ts.map +1 -0
  280. package/dist/game/repeat.js +88 -0
  281. package/dist/game/repeat.js.map +1 -0
  282. package/dist/game/shape-inspect.d.ts +74 -0
  283. package/dist/game/shape-inspect.d.ts.map +1 -0
  284. package/dist/game/shape-inspect.js +114 -0
  285. package/dist/game/shape-inspect.js.map +1 -0
  286. package/dist/game/spell-cmd.d.ts +15 -4
  287. package/dist/game/spell-cmd.d.ts.map +1 -1
  288. package/dist/game/spell-cmd.js +35 -6
  289. package/dist/game/spell-cmd.js.map +1 -1
  290. package/dist/game/spoil.d.ts.map +1 -1
  291. package/dist/game/spoil.js +89 -40
  292. package/dist/game/spoil.js.map +1 -1
  293. package/dist/game/steal.d.ts +3 -3
  294. package/dist/game/steal.d.ts.map +1 -1
  295. package/dist/game/steal.js +9 -4
  296. package/dist/game/steal.js.map +1 -1
  297. package/dist/game/target-loop.d.ts +10 -4
  298. package/dist/game/target-loop.d.ts.map +1 -1
  299. package/dist/game/target-loop.js +14 -8
  300. package/dist/game/target-loop.js.map +1 -1
  301. package/dist/game/target.d.ts +4 -4
  302. package/dist/game/target.d.ts.map +1 -1
  303. package/dist/game/target.js +19 -8
  304. package/dist/game/target.js.map +1 -1
  305. package/dist/game/ui-entry.d.ts +63 -4
  306. package/dist/game/ui-entry.d.ts.map +1 -1
  307. package/dist/game/ui-entry.js +151 -23
  308. package/dist/game/ui-entry.js.map +1 -1
  309. package/dist/game/wizard.d.ts +23 -5
  310. package/dist/game/wizard.d.ts.map +1 -1
  311. package/dist/game/wizard.js +93 -11
  312. package/dist/game/wizard.js.map +1 -1
  313. package/dist/game/world.d.ts.map +1 -1
  314. package/dist/game/world.js +6 -0
  315. package/dist/game/world.js.map +1 -1
  316. package/dist/gen/cave.d.ts +49 -8
  317. package/dist/gen/cave.d.ts.map +1 -1
  318. package/dist/gen/cave.js +200 -28
  319. package/dist/gen/cave.js.map +1 -1
  320. package/dist/gen/generate.d.ts +54 -9
  321. package/dist/gen/generate.d.ts.map +1 -1
  322. package/dist/gen/generate.js +55 -8
  323. package/dist/gen/generate.js.map +1 -1
  324. package/dist/gen/glyph-vectors.d.ts +109 -0
  325. package/dist/gen/glyph-vectors.d.ts.map +1 -0
  326. package/dist/gen/glyph-vectors.fixtures.d.ts +18 -0
  327. package/dist/gen/glyph-vectors.fixtures.d.ts.map +1 -0
  328. package/dist/gen/glyph-vectors.fixtures.js +94 -0
  329. package/dist/gen/glyph-vectors.fixtures.js.map +1 -0
  330. package/dist/gen/glyph-vectors.js +218 -0
  331. package/dist/gen/glyph-vectors.js.map +1 -0
  332. package/dist/gen/glyph.d.ts +104 -0
  333. package/dist/gen/glyph.d.ts.map +1 -0
  334. package/dist/gen/glyph.js +72 -0
  335. package/dist/gen/glyph.js.map +1 -0
  336. package/dist/gen/room.d.ts +26 -2
  337. package/dist/gen/room.d.ts.map +1 -1
  338. package/dist/gen/room.js +414 -264
  339. package/dist/gen/room.js.map +1 -1
  340. package/dist/gen/util.d.ts +11 -2
  341. package/dist/gen/util.d.ts.map +1 -1
  342. package/dist/gen/util.js +31 -9
  343. package/dist/gen/util.js.map +1 -1
  344. package/dist/i18n/i18n.d.ts +207 -0
  345. package/dist/i18n/i18n.d.ts.map +1 -0
  346. package/dist/i18n/i18n.js +405 -0
  347. package/dist/i18n/i18n.js.map +1 -0
  348. package/dist/i18n/text.d.ts +62 -0
  349. package/dist/i18n/text.d.ts.map +1 -0
  350. package/dist/i18n/text.js +120 -0
  351. package/dist/i18n/text.js.map +1 -0
  352. package/dist/index.d.ts +25 -0
  353. package/dist/index.d.ts.map +1 -1
  354. package/dist/index.js +38 -0
  355. package/dist/index.js.map +1 -1
  356. package/dist/mod/extension.d.ts +115 -0
  357. package/dist/mod/extension.d.ts.map +1 -0
  358. package/dist/mod/extension.js +85 -0
  359. package/dist/mod/extension.js.map +1 -0
  360. package/dist/mod/ids.d.ts +10 -0
  361. package/dist/mod/ids.d.ts.map +1 -1
  362. package/dist/mod/ids.js +90 -21
  363. package/dist/mod/ids.js.map +1 -1
  364. package/dist/mod/record-keys.d.ts +43 -0
  365. package/dist/mod/record-keys.d.ts.map +1 -0
  366. package/dist/mod/record-keys.js +100 -0
  367. package/dist/mod/record-keys.js.map +1 -0
  368. package/dist/mod/registry-host.d.ts +472 -0
  369. package/dist/mod/registry-host.d.ts.map +1 -1
  370. package/dist/mod/registry-host.js +313 -0
  371. package/dist/mod/registry-host.js.map +1 -1
  372. package/dist/mod/save-blocks.d.ts +1 -1
  373. package/dist/mon/bind.d.ts.map +1 -1
  374. package/dist/mon/bind.js +6 -3
  375. package/dist/mon/bind.js.map +1 -1
  376. package/dist/mon/knowledge-groups.d.ts +0 -6
  377. package/dist/mon/knowledge-groups.d.ts.map +1 -1
  378. package/dist/mon/knowledge-groups.js +12 -8
  379. package/dist/mon/knowledge-groups.js.map +1 -1
  380. package/dist/mon/lore-describe.d.ts +46 -10
  381. package/dist/mon/lore-describe.d.ts.map +1 -1
  382. package/dist/mon/lore-describe.js +74 -22
  383. package/dist/mon/lore-describe.js.map +1 -1
  384. package/dist/mon/lore-file.d.ts +126 -0
  385. package/dist/mon/lore-file.d.ts.map +1 -0
  386. package/dist/mon/lore-file.js +291 -0
  387. package/dist/mon/lore-file.js.map +1 -0
  388. package/dist/mon/lore.d.ts +9 -3
  389. package/dist/mon/lore.d.ts.map +1 -1
  390. package/dist/mon/lore.js +9 -3
  391. package/dist/mon/lore.js.map +1 -1
  392. package/dist/mon/make.d.ts +4 -2
  393. package/dist/mon/make.d.ts.map +1 -1
  394. package/dist/mon/make.js +4 -2
  395. package/dist/mon/make.js.map +1 -1
  396. package/dist/mon/monster.d.ts +1 -1
  397. package/dist/mon/monster.js +1 -1
  398. package/dist/mon/predicate.d.ts +14 -9
  399. package/dist/mon/predicate.d.ts.map +1 -1
  400. package/dist/mon/predicate.js +14 -9
  401. package/dist/mon/predicate.js.map +1 -1
  402. package/dist/mon/project-mon.d.ts +16 -3
  403. package/dist/mon/project-mon.d.ts.map +1 -1
  404. package/dist/mon/project-mon.js +14 -5
  405. package/dist/mon/project-mon.js.map +1 -1
  406. package/dist/mon/steal.d.ts +31 -4
  407. package/dist/mon/steal.d.ts.map +1 -1
  408. package/dist/mon/steal.js +20 -7
  409. package/dist/mon/steal.js.map +1 -1
  410. package/dist/mon/take-hit.d.ts +8 -3
  411. package/dist/mon/take-hit.d.ts.map +1 -1
  412. package/dist/mon/take-hit.js +8 -3
  413. package/dist/mon/take-hit.js.map +1 -1
  414. package/dist/mon/timed.d.ts +15 -9
  415. package/dist/mon/timed.d.ts.map +1 -1
  416. package/dist/mon/timed.js +13 -8
  417. package/dist/mon/timed.js.map +1 -1
  418. package/dist/mon/types.d.ts +11 -4
  419. package/dist/mon/types.d.ts.map +1 -1
  420. package/dist/mon/types.js.map +1 -1
  421. package/dist/msg.d.ts +40 -1
  422. package/dist/msg.d.ts.map +1 -1
  423. package/dist/msg.js +42 -1
  424. package/dist/msg.js.map +1 -1
  425. package/dist/obj/artifact-fake.d.ts +46 -14
  426. package/dist/obj/artifact-fake.d.ts.map +1 -1
  427. package/dist/obj/artifact-fake.js +46 -17
  428. package/dist/obj/artifact-fake.js.map +1 -1
  429. package/dist/obj/bind.d.ts +23 -0
  430. package/dist/obj/bind.d.ts.map +1 -1
  431. package/dist/obj/bind.js +49 -9
  432. package/dist/obj/bind.js.map +1 -1
  433. package/dist/obj/desc-vectors.d.ts +68 -0
  434. package/dist/obj/desc-vectors.d.ts.map +1 -0
  435. package/dist/obj/desc-vectors.fixtures.d.ts +12 -0
  436. package/dist/obj/desc-vectors.fixtures.d.ts.map +1 -0
  437. package/dist/obj/desc-vectors.fixtures.js +95 -0
  438. package/dist/obj/desc-vectors.fixtures.js.map +1 -0
  439. package/dist/obj/desc-vectors.js +86 -0
  440. package/dist/obj/desc-vectors.js.map +1 -0
  441. package/dist/obj/desc.d.ts +17 -2
  442. package/dist/obj/desc.d.ts.map +1 -1
  443. package/dist/obj/desc.js +129 -54
  444. package/dist/obj/desc.js.map +1 -1
  445. package/dist/obj/effects-info.d.ts.map +1 -1
  446. package/dist/obj/effects-info.js +87 -58
  447. package/dist/obj/effects-info.js.map +1 -1
  448. package/dist/obj/fake-object.d.ts +70 -0
  449. package/dist/obj/fake-object.d.ts.map +1 -0
  450. package/dist/obj/fake-object.js +104 -0
  451. package/dist/obj/fake-object.js.map +1 -0
  452. package/dist/obj/ignore.d.ts +55 -12
  453. package/dist/obj/ignore.d.ts.map +1 -1
  454. package/dist/obj/ignore.js +68 -31
  455. package/dist/obj/ignore.js.map +1 -1
  456. package/dist/obj/knowledge.d.ts +46 -3
  457. package/dist/obj/knowledge.d.ts.map +1 -1
  458. package/dist/obj/knowledge.js +169 -151
  459. package/dist/obj/knowledge.js.map +1 -1
  460. package/dist/obj/known-object.d.ts +68 -8
  461. package/dist/obj/known-object.d.ts.map +1 -1
  462. package/dist/obj/known-object.js +90 -10
  463. package/dist/obj/known-object.js.map +1 -1
  464. package/dist/obj/make.d.ts +15 -4
  465. package/dist/obj/make.d.ts.map +1 -1
  466. package/dist/obj/make.js +49 -27
  467. package/dist/obj/make.js.map +1 -1
  468. package/dist/obj/object-info.d.ts +10 -0
  469. package/dist/obj/object-info.d.ts.map +1 -1
  470. package/dist/obj/object-info.js +93 -7
  471. package/dist/obj/object-info.js.map +1 -1
  472. package/dist/obj/object.d.ts +42 -4
  473. package/dist/obj/object.d.ts.map +1 -1
  474. package/dist/obj/object.js +362 -147
  475. package/dist/obj/object.js.map +1 -1
  476. package/dist/obj/power.d.ts +23 -4
  477. package/dist/obj/power.d.ts.map +1 -1
  478. package/dist/obj/power.js +231 -65
  479. package/dist/obj/power.js.map +1 -1
  480. package/dist/obj/randart-build.d.ts +27 -22
  481. package/dist/obj/randart-build.d.ts.map +1 -1
  482. package/dist/obj/randart-build.js +435 -357
  483. package/dist/obj/randart-build.js.map +1 -1
  484. package/dist/obj/randart-data.d.ts +62 -24
  485. package/dist/obj/randart-data.d.ts.map +1 -1
  486. package/dist/obj/randart-data.js +333 -189
  487. package/dist/obj/randart-data.js.map +1 -1
  488. package/dist/obj/randart-file.d.ts +21 -0
  489. package/dist/obj/randart-file.d.ts.map +1 -0
  490. package/dist/obj/randart-file.js +119 -0
  491. package/dist/obj/randart-file.js.map +1 -0
  492. package/dist/obj/randart-log.d.ts +63 -0
  493. package/dist/obj/randart-log.d.ts.map +1 -0
  494. package/dist/obj/randart-log.js +72 -0
  495. package/dist/obj/randart-log.js.map +1 -0
  496. package/dist/obj/randart-registry.d.ts +178 -0
  497. package/dist/obj/randart-registry.d.ts.map +1 -0
  498. package/dist/obj/randart-registry.js +140 -0
  499. package/dist/obj/randart-registry.js.map +1 -0
  500. package/dist/obj/randart-vectors.d.ts +97 -0
  501. package/dist/obj/randart-vectors.d.ts.map +1 -0
  502. package/dist/obj/randart-vectors.fixtures.d.ts +18 -0
  503. package/dist/obj/randart-vectors.fixtures.d.ts.map +1 -0
  504. package/dist/obj/randart-vectors.fixtures.js +50 -0
  505. package/dist/obj/randart-vectors.fixtures.js.map +1 -0
  506. package/dist/obj/randart-vectors.js +311 -0
  507. package/dist/obj/randart-vectors.js.map +1 -0
  508. package/dist/obj/randart.d.ts +53 -15
  509. package/dist/obj/randart.d.ts.map +1 -1
  510. package/dist/obj/randart.js +166 -44
  511. package/dist/obj/randart.js.map +1 -1
  512. package/dist/obj/rune-registry.d.ts +180 -0
  513. package/dist/obj/rune-registry.d.ts.map +1 -0
  514. package/dist/obj/rune-registry.js +161 -0
  515. package/dist/obj/rune-registry.js.map +1 -0
  516. package/dist/obj/rune-vectors.d.ts +99 -0
  517. package/dist/obj/rune-vectors.d.ts.map +1 -0
  518. package/dist/obj/rune-vectors.fixtures.d.ts +44 -0
  519. package/dist/obj/rune-vectors.fixtures.d.ts.map +1 -0
  520. package/dist/obj/rune-vectors.fixtures.js +125 -0
  521. package/dist/obj/rune-vectors.fixtures.js.map +1 -0
  522. package/dist/obj/rune-vectors.js +159 -0
  523. package/dist/obj/rune-vectors.js.map +1 -0
  524. package/dist/obj/tval-registry.d.ts +174 -0
  525. package/dist/obj/tval-registry.d.ts.map +1 -0
  526. package/dist/obj/tval-registry.js +151 -0
  527. package/dist/obj/tval-registry.js.map +1 -0
  528. package/dist/obj/tval-vectors.d.ts +85 -0
  529. package/dist/obj/tval-vectors.d.ts.map +1 -0
  530. package/dist/obj/tval-vectors.fixtures.d.ts +24 -0
  531. package/dist/obj/tval-vectors.fixtures.d.ts.map +1 -0
  532. package/dist/obj/tval-vectors.fixtures.js +41 -0
  533. package/dist/obj/tval-vectors.fixtures.js.map +1 -0
  534. package/dist/obj/tval-vectors.js +76 -0
  535. package/dist/obj/tval-vectors.js.map +1 -0
  536. package/dist/obj/types.d.ts +18 -7
  537. package/dist/obj/types.d.ts.map +1 -1
  538. package/dist/obj/types.js.map +1 -1
  539. package/dist/obj/value.d.ts.map +1 -1
  540. package/dist/obj/value.js +23 -20
  541. package/dist/obj/value.js.map +1 -1
  542. package/dist/parser.d.ts +116 -0
  543. package/dist/parser.d.ts.map +1 -0
  544. package/dist/parser.js +205 -0
  545. package/dist/parser.js.map +1 -0
  546. package/dist/player/bind.d.ts.map +1 -1
  547. package/dist/player/bind.js +3 -2
  548. package/dist/player/bind.js.map +1 -1
  549. package/dist/player/birth.d.ts +2 -1
  550. package/dist/player/birth.d.ts.map +1 -1
  551. package/dist/player/birth.js +2 -1
  552. package/dist/player/birth.js.map +1 -1
  553. package/dist/player/calcs.d.ts +58 -23
  554. package/dist/player/calcs.d.ts.map +1 -1
  555. package/dist/player/calcs.js +93 -36
  556. package/dist/player/calcs.js.map +1 -1
  557. package/dist/player/death.d.ts +50 -0
  558. package/dist/player/death.d.ts.map +1 -0
  559. package/dist/player/death.js +46 -0
  560. package/dist/player/death.js.map +1 -0
  561. package/dist/player/options-file.d.ts +129 -0
  562. package/dist/player/options-file.d.ts.map +1 -0
  563. package/dist/player/options-file.js +309 -0
  564. package/dist/player/options-file.js.map +1 -0
  565. package/dist/player/options.d.ts +2 -1
  566. package/dist/player/options.d.ts.map +1 -1
  567. package/dist/player/options.js +2 -1
  568. package/dist/player/options.js.map +1 -1
  569. package/dist/player/player.d.ts +50 -3
  570. package/dist/player/player.d.ts.map +1 -1
  571. package/dist/player/player.js +10 -1
  572. package/dist/player/player.js.map +1 -1
  573. package/dist/player/shape-lore.d.ts +11 -7
  574. package/dist/player/shape-lore.d.ts.map +1 -1
  575. package/dist/player/shape-lore.js +24 -11
  576. package/dist/player/shape-lore.js.map +1 -1
  577. package/dist/player/timed.d.ts +5 -3
  578. package/dist/player/timed.d.ts.map +1 -1
  579. package/dist/player/timed.js +11 -2
  580. package/dist/player/timed.js.map +1 -1
  581. package/dist/player/types.d.ts +29 -4
  582. package/dist/player/types.d.ts.map +1 -1
  583. package/dist/player/types.js +24 -1
  584. package/dist/player/types.js.map +1 -1
  585. package/dist/session/boot.d.ts +26 -2
  586. package/dist/session/boot.d.ts.map +1 -1
  587. package/dist/session/boot.js +21 -2
  588. package/dist/session/boot.js.map +1 -1
  589. package/dist/session/game.d.ts +15 -0
  590. package/dist/session/game.d.ts.map +1 -1
  591. package/dist/session/game.js +616 -140
  592. package/dist/session/game.js.map +1 -1
  593. package/dist/session/save-migrate.d.ts.map +1 -1
  594. package/dist/session/save-migrate.js +76 -1
  595. package/dist/session/save-migrate.js.map +1 -1
  596. package/dist/session/save.d.ts +75 -12
  597. package/dist/session/save.d.ts.map +1 -1
  598. package/dist/session/save.js +177 -18
  599. package/dist/session/save.js.map +1 -1
  600. package/dist/store/bind.d.ts +1 -1
  601. package/dist/store/bind.d.ts.map +1 -1
  602. package/dist/store/bind.js +4 -3
  603. package/dist/store/bind.js.map +1 -1
  604. package/dist/store/mass-produce-vectors.d.ts +40 -0
  605. package/dist/store/mass-produce-vectors.d.ts.map +1 -0
  606. package/dist/store/mass-produce-vectors.fixtures.d.ts +13 -0
  607. package/dist/store/mass-produce-vectors.fixtures.d.ts.map +1 -0
  608. package/dist/store/mass-produce-vectors.fixtures.js +52 -0
  609. package/dist/store/mass-produce-vectors.fixtures.js.map +1 -0
  610. package/dist/store/mass-produce-vectors.js +44 -0
  611. package/dist/store/mass-produce-vectors.js.map +1 -0
  612. package/dist/store/store.d.ts +104 -7
  613. package/dist/store/store.d.ts.map +1 -1
  614. package/dist/store/store.js +199 -77
  615. package/dist/store/store.js.map +1 -1
  616. package/dist/store/transact.d.ts +14 -5
  617. package/dist/store/transact.d.ts.map +1 -1
  618. package/dist/store/transact.js +17 -16
  619. package/dist/store/transact.js.map +1 -1
  620. package/dist/store/types.d.ts +3 -2
  621. package/dist/store/types.d.ts.map +1 -1
  622. package/dist/store/types.js +1 -1
  623. package/dist/version.d.ts +1 -1
  624. package/dist/version.js +1 -1
  625. package/dist/visuals/index.d.ts +1 -0
  626. package/dist/visuals/index.d.ts.map +1 -1
  627. package/dist/visuals/index.js +1 -0
  628. package/dist/visuals/index.js.map +1 -1
  629. package/dist/visuals/map-text.d.ts +8 -0
  630. package/dist/visuals/map-text.d.ts.map +1 -1
  631. package/dist/visuals/map-text.js +1 -1
  632. package/dist/visuals/map-text.js.map +1 -1
  633. package/dist/visuals/object-glyph.d.ts +56 -0
  634. package/dist/visuals/object-glyph.d.ts.map +1 -0
  635. package/dist/visuals/object-glyph.js +52 -0
  636. package/dist/visuals/object-glyph.js.map +1 -0
  637. package/dist/visuals/prefs.d.ts +14 -22
  638. package/dist/visuals/prefs.d.ts.map +1 -1
  639. package/dist/visuals/prefs.js +4 -23
  640. package/dist/visuals/prefs.js.map +1 -1
  641. package/dist/visuals/tile-prefs.d.ts +26 -0
  642. package/dist/visuals/tile-prefs.d.ts.map +1 -1
  643. package/dist/visuals/tile-prefs.js +28 -0
  644. package/dist/visuals/tile-prefs.js.map +1 -1
  645. package/dist/world/feature.d.ts +2 -1
  646. package/dist/world/feature.d.ts.map +1 -1
  647. package/dist/world/feature.js +2 -0
  648. package/dist/world/feature.js.map +1 -1
  649. package/dist/world/project.d.ts +10 -2
  650. package/dist/world/project.d.ts.map +1 -1
  651. package/dist/world/project.js +18 -6
  652. package/dist/world/project.js.map +1 -1
  653. package/dist/world/projection.d.ts +37 -3
  654. package/dist/world/projection.d.ts.map +1 -1
  655. package/dist/world/projection.js +69 -7
  656. package/dist/world/projection.js.map +1 -1
  657. package/dist/world/trap.d.ts +2 -1
  658. package/dist/world/trap.d.ts.map +1 -1
  659. package/dist/world/trap.js +2 -1
  660. package/dist/world/trap.js.map +1 -1
  661. package/dist/world/view.d.ts +1 -1
  662. package/dist/world/view.d.ts.map +1 -1
  663. package/dist/world/view.js +11 -3
  664. package/dist/world/view.js.map +1 -1
  665. package/package.json +1 -1
  666. package/src/agent/perceive.ts +2 -3
  667. package/src/combat/blow-vectors.fixtures.ts +99 -0
  668. package/src/combat/blow-vectors.json +482 -0
  669. package/src/combat/blow-vectors.ts +280 -0
  670. package/src/combat/brand-slay.ts +42 -11
  671. package/src/combat/index.ts +1 -1
  672. package/src/combat/melee.ts +37 -19
  673. package/src/combat/mon-melee.ts +611 -364
  674. package/src/combat/ranged.ts +43 -26
  675. package/src/constants.ts +15 -0
  676. package/src/datafile.ts +148 -0
  677. package/src/effects/effect-info-registry.ts +313 -0
  678. package/src/effects/effect-info-vectors.fixtures.ts +61 -0
  679. package/src/effects/effect-info-vectors.json +11532 -0
  680. package/src/effects/effect-info-vectors.ts +376 -0
  681. package/src/effects/effect-info.ts +1005 -859
  682. package/src/effects/effect.ts +96 -62
  683. package/src/effects/handlers.ts +5 -2
  684. package/src/effects/interpreter.ts +14 -0
  685. package/src/game/cave-cmd.ts +54 -11
  686. package/src/game/cave-square.ts +80 -0
  687. package/src/game/char-sheet.ts +59 -16
  688. package/src/game/chest.ts +25 -8
  689. package/src/game/context.ts +293 -27
  690. package/src/game/describe.ts +34 -4
  691. package/src/game/display.ts +215 -19
  692. package/src/game/dump-level.ts +3 -2
  693. package/src/game/effect-attack.ts +41 -28
  694. package/src/game/effect-detect.ts +45 -8
  695. package/src/game/effect-env.ts +8 -0
  696. package/src/game/effect-general.ts +110 -47
  697. package/src/game/effect-item.ts +1075 -999
  698. package/src/game/effect-melee.ts +51 -18
  699. package/src/game/effect-monster.ts +55 -9
  700. package/src/game/effect-teleport.ts +173 -38
  701. package/src/game/effect-terrain.ts +38 -22
  702. package/src/game/equip-cmp.ts +483 -480
  703. package/src/game/floor.ts +22 -4
  704. package/src/game/gear.ts +210 -21
  705. package/src/game/harness.ts +12 -1
  706. package/src/game/ignore-cmd.ts +96 -8
  707. package/src/game/known.ts +392 -73
  708. package/src/game/loop.ts +52 -27
  709. package/src/game/lore-color.ts +13 -1
  710. package/src/game/mon-cast.ts +31 -6
  711. package/src/game/mon-cmd.ts +95 -30
  712. package/src/game/mon-death.ts +14 -12
  713. package/src/game/mon-group.ts +9 -5
  714. package/src/game/mon-message.ts +363 -65
  715. package/src/game/mon-place.ts +15 -3
  716. package/src/game/mon-ranged.ts +14 -5
  717. package/src/game/mon-side.ts +16 -12
  718. package/src/game/monster-turn.ts +120 -87
  719. package/src/game/notice.ts +85 -0
  720. package/src/game/obj-cmd.ts +126 -37
  721. package/src/game/obj-list.ts +44 -26
  722. package/src/game/object-inspect.ts +13 -0
  723. package/src/game/pickup.ts +29 -5
  724. package/src/game/player-side-vectors.fixtures.ts +215 -0
  725. package/src/game/player-side-vectors.json +6914 -0
  726. package/src/game/player-side-vectors.ts +420 -0
  727. package/src/game/player-side.ts +622 -340
  728. package/src/game/player-turn.ts +228 -31
  729. package/src/game/poly.ts +107 -0
  730. package/src/game/project-cast.ts +63 -6
  731. package/src/game/project-feat-vectors.fixtures.ts +106 -0
  732. package/src/game/project-feat-vectors.json +6554 -0
  733. package/src/game/project-feat-vectors.ts +323 -0
  734. package/src/game/project-feat.ts +417 -248
  735. package/src/game/project-monster.ts +69 -30
  736. package/src/game/project-obj-vectors.json +1 -0
  737. package/src/game/project-obj.ts +115 -47
  738. package/src/game/project-player.ts +8 -0
  739. package/src/game/projection-handlers.ts +110 -0
  740. package/src/game/quest.ts +48 -0
  741. package/src/game/ranged-cmd.ts +45 -11
  742. package/src/game/repeat.ts +92 -0
  743. package/src/game/shape-inspect.ts +166 -0
  744. package/src/game/spell-cmd.ts +39 -6
  745. package/src/game/spoil.ts +92 -39
  746. package/src/game/steal.ts +9 -4
  747. package/src/game/target-loop.ts +14 -7
  748. package/src/game/target.ts +18 -7
  749. package/src/game/ui-entry.ts +172 -22
  750. package/src/game/wizard.ts +97 -10
  751. package/src/game/world.ts +6 -0
  752. package/src/gen/cave.ts +225 -26
  753. package/src/gen/generate.ts +62 -9
  754. package/src/gen/glyph-vectors.fixtures.ts +122 -0
  755. package/src/gen/glyph-vectors.json +5996 -0
  756. package/src/gen/glyph-vectors.ts +280 -0
  757. package/src/gen/glyph.ts +132 -0
  758. package/src/gen/room.ts +446 -265
  759. package/src/gen/util.ts +32 -9
  760. package/src/i18n/i18n.ts +492 -0
  761. package/src/i18n/text.ts +117 -0
  762. package/src/index.ts +307 -254
  763. package/src/mod/extension.ts +136 -0
  764. package/src/mod/ids.ts +92 -21
  765. package/src/mod/record-keys.ts +102 -0
  766. package/src/mod/registry-host.ts +1063 -234
  767. package/src/mon/bind.ts +14 -8
  768. package/src/mon/knowledge-groups.ts +12 -12
  769. package/src/mon/lore-describe.ts +93 -26
  770. package/src/mon/lore-file.ts +365 -0
  771. package/src/mon/lore.ts +9 -3
  772. package/src/mon/make.ts +4 -2
  773. package/src/mon/monster.ts +1 -1
  774. package/src/mon/predicate.ts +14 -9
  775. package/src/mon/project-mon.ts +23 -5
  776. package/src/mon/steal.ts +39 -7
  777. package/src/mon/take-hit.ts +8 -3
  778. package/src/mon/timed.ts +15 -9
  779. package/src/mon/types.ts +11 -4
  780. package/src/msg.ts +55 -1
  781. package/src/obj/artifact-fake.ts +47 -17
  782. package/src/obj/bind.ts +52 -9
  783. package/src/obj/desc-vectors.fixtures.ts +119 -0
  784. package/src/obj/desc-vectors.json +2360 -0
  785. package/src/obj/desc-vectors.ts +128 -0
  786. package/src/obj/desc.ts +159 -55
  787. package/src/obj/effects-info.ts +90 -59
  788. package/src/obj/fake-object.ts +135 -0
  789. package/src/obj/ignore.ts +95 -28
  790. package/src/obj/knowledge.ts +291 -139
  791. package/src/obj/known-object.ts +126 -11
  792. package/src/obj/make.ts +53 -29
  793. package/src/obj/object-info.ts +103 -6
  794. package/src/obj/object.ts +392 -151
  795. package/src/obj/power.ts +297 -59
  796. package/src/obj/randart-build.ts +1875 -1705
  797. package/src/obj/randart-data.ts +1547 -1344
  798. package/src/obj/randart-file.ts +130 -0
  799. package/src/obj/randart-log.ts +78 -0
  800. package/src/obj/randart-registry.ts +247 -0
  801. package/src/obj/randart-vectors.fixtures.ts +61 -0
  802. package/src/obj/randart-vectors.json +836 -0
  803. package/src/obj/randart-vectors.ts +369 -0
  804. package/src/obj/randart.ts +722 -552
  805. package/src/obj/rune-registry.ts +270 -0
  806. package/src/obj/rune-vectors.fixtures.ts +164 -0
  807. package/src/obj/rune-vectors.json +121 -0
  808. package/src/obj/rune-vectors.ts +229 -0
  809. package/src/obj/tval-kind-vectors.json +391 -0
  810. package/src/obj/tval-registry.ts +243 -0
  811. package/src/obj/tval-vectors.fixtures.ts +50 -0
  812. package/src/obj/tval-vectors.json +38 -0
  813. package/src/obj/tval-vectors.ts +126 -0
  814. package/src/obj/types.ts +18 -7
  815. package/src/obj/value.ts +26 -20
  816. package/src/parser.ts +214 -0
  817. package/src/player/bind.ts +5 -2
  818. package/src/player/birth.ts +2 -1
  819. package/src/player/calcs.ts +123 -42
  820. package/src/player/death.ts +78 -0
  821. package/src/player/options-file.ts +387 -0
  822. package/src/player/options.ts +2 -1
  823. package/src/player/player.ts +60 -4
  824. package/src/player/shape-lore.ts +33 -14
  825. package/src/player/timed.ts +14 -4
  826. package/src/player/types.ts +30 -4
  827. package/src/session/boot.ts +51 -1
  828. package/src/session/game.ts +720 -163
  829. package/src/session/save-migrate.ts +81 -1
  830. package/src/session/save.ts +264 -22
  831. package/src/store/bind.ts +4 -3
  832. package/src/store/mass-produce-vectors.fixtures.ts +64 -0
  833. package/src/store/mass-produce-vectors.json +1169 -0
  834. package/src/store/mass-produce-vectors.ts +67 -0
  835. package/src/store/store.ts +266 -63
  836. package/src/store/transact.ts +39 -16
  837. package/src/store/types.ts +3 -2
  838. package/src/version.ts +1 -1
  839. package/src/visuals/index.ts +1 -0
  840. package/src/visuals/map-text.ts +1 -1
  841. package/src/visuals/object-glyph.ts +76 -0
  842. package/src/visuals/prefs.ts +22 -32
  843. package/src/visuals/tile-prefs.ts +32 -0
  844. package/src/world/feature.ts +4 -1
  845. package/src/world/project.ts +19 -4
  846. package/src/world/projection.ts +79 -8
  847. package/src/world/trap.ts +25 -21
  848. package/src/world/view.ts +11 -1
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Golden vectors for RANDOM ARTIFACT construction: MOD_REACH gap 14.
3
+ *
4
+ * WHY THIS EXISTS. Four closed `switch` statements build every random artifact
5
+ * in the game, and they are the largest dispatch left in the tree:
6
+ *
7
+ * - `addAbilityAux` (randart-build.ts, keyed on the `ART_IDX` ability, 87
8
+ * cases) - what "add this ability" actually does to the artifact.
9
+ * - `artifactPrep` (randart-build.ts, keyed on the base item's tval, 15) -
10
+ * the starting to-hit / to-dam / AC an item class is given.
11
+ * - the item-class census (randart-data.ts, keyed on tval, 14) - which
12
+ * `data.*Total` bucket a standard artifact counts toward, which feeds the
13
+ * frequency table the design loop spends.
14
+ * - the redundancy test (randart-build.ts, keyed on the `EFPROP` kind, 9) -
15
+ * whether an activation only duplicates something the artifact already has.
16
+ *
17
+ * Converting them into keyed registries so a mod can define a NEW ability, or a
18
+ * new item class, is a refactor of the most RNG-dense code in the port. What has
19
+ * to be proven is not "the randart tests still pass" but "the same seed still
20
+ * produces the same artifacts, drawn in the same order".
21
+ *
22
+ * WHY THE EXISTING TESTS ARE NOT THAT. `randart.test.ts` asserts do_randart is
23
+ * deterministic by running it TWICE IN ONE PROCESS and comparing. That is a real
24
+ * property and it catches real bugs - but it cannot fail across a refactor,
25
+ * because a change that moves every artifact moves both runs identically.
26
+ * Agreement is symmetric; a fixture recorded on disk is not.
27
+ *
28
+ * THE PROBE IS THE POINT, AND IT NEEDED A SEAM TO EXIST. `doRandart` owns its
29
+ * Rng internally, so the whole-set family below has no probe: what defends it is
30
+ * that all ~130 artifacts come off ONE stream in sequence, so a changed draw
31
+ * count anywhere but after the final draw moves everything downstream of it. The
32
+ * blind spot that leaves - a draw added at the very end - is closed by the
33
+ * per-arm families, which drive `artifactPrep` and `addAbilityAux` with an Rng
34
+ * this module owns and probe it afterwards. That is also what makes those two
35
+ * families per-ARM coverage rather than aggregate: a vector per `ART_IDX` fails
36
+ * naming the ability that moved.
37
+ *
38
+ * Fixtures are INJECTED rather than loaded here, so this module pulls in no
39
+ * node:fs and no content pack, and can be imported from anywhere.
40
+ *
41
+ * Regenerate with `node packages/core/scripts/gen-randart-vectors.mjs` - which
42
+ * OVERWRITES the evidence, so only do it when artifact generation is
43
+ * deliberately changing, and say so in the commit.
44
+ */
45
+ import { FLAG_START, NO_FLAG } from "../bitflag.js";
46
+ import { ART_IDX, TV } from "../generated/index.js";
47
+ import { Rng } from "../rng.js";
48
+ import { addAbilityAux, artifactPrep, getBaseItem } from "./randart-build.js";
49
+ import { collectArtifactData } from "./randart-data.js";
50
+ import { cloneArtifact, doRandart } from "./randart.js";
51
+ /** The seeds the whole-set family runs. Three, because a set is expensive. */
52
+ export const RANDART_VECTOR_SEEDS = [1, 4242, 999999];
53
+ /** The seeds the cheap per-arm families run, on both sides of a coin flip. */
54
+ export const RANDART_ARM_SEEDS = [7, 31337];
55
+ /**
56
+ * The target powers the ability family runs at, and the second one is not
57
+ * decoration. `ART_IDX.WEAPON_AGGR` / `NONWEAPON_AGGR` only grant AGGRAVATE
58
+ * when `targetPower > AGGR_POWER` (300, obj-randart.h L47), so a family run at
59
+ * one low power records those two arms doing NOTHING - indistinguishable from
60
+ * the `*_SUPER` frequency-table indices that genuinely have no case. The first
61
+ * recording of these vectors had exactly that hole. This is the same failure
62
+ * the glyph work found the expensive way: a scenario grid that never reaches
63
+ * the arm it was written to defend.
64
+ */
65
+ export const RANDART_TARGET_POWERS = [100, 500];
66
+ /**
67
+ * Every tval `artifactPrep`'s switch names, plus RING, AMULET and LIGHT -
68
+ * which it does NOT name and which therefore take its default arm. A vector
69
+ * that only covers the listed cases cannot tell a missing default from a
70
+ * present one.
71
+ */
72
+ const PREP_TVALS = [
73
+ ["BOW", TV.BOW],
74
+ ["DIGGING", TV.DIGGING],
75
+ ["HAFTED", TV.HAFTED],
76
+ ["SWORD", TV.SWORD],
77
+ ["POLEARM", TV.POLEARM],
78
+ ["BOOTS", TV.BOOTS],
79
+ ["GLOVES", TV.GLOVES],
80
+ ["HELM", TV.HELM],
81
+ ["CROWN", TV.CROWN],
82
+ ["SHIELD", TV.SHIELD],
83
+ ["CLOAK", TV.CLOAK],
84
+ ["SOFT_ARMOR", TV.SOFT_ARMOR],
85
+ ["HARD_ARMOR", TV.HARD_ARMOR],
86
+ ["DRAG_ARMOR", TV.DRAG_ARMOR],
87
+ ["RING", TV.RING],
88
+ ["AMULET", TV.AMULET],
89
+ ["LIGHT", TV.LIGHT],
90
+ ];
91
+ /** ART_IDX names in index order, so a vector names the ability that moved. */
92
+ function abilityNames() {
93
+ const byIndex = [];
94
+ for (const [name, value] of Object.entries(ART_IDX)) {
95
+ if (typeof value !== "number" || name === "MAX")
96
+ continue;
97
+ byIndex[value] = name;
98
+ }
99
+ return byIndex;
100
+ }
101
+ /**
102
+ * The flags actually SET, as a list of indices.
103
+ *
104
+ * `FlagSet` has no toString and the default one produces "[object Object]" - a
105
+ * field that is identical for every artifact in the file and therefore cannot
106
+ * disagree. That is not hypothetical: the first recording of these vectors
107
+ * carried exactly that string in all 644 rows, which would have let an ability
108
+ * stop granting its flag without moving a single vector.
109
+ */
110
+ function flagList(set) {
111
+ const on = [];
112
+ for (let f = set.next(FLAG_START); f !== NO_FLAG; f = set.next(f + 1)) {
113
+ on.push(f);
114
+ }
115
+ return on;
116
+ }
117
+ /**
118
+ * Everything observable about one artifact. Deliberately EVERY field of the
119
+ * struct rather than the handful `randart.test.ts`'s fingerprint uses: an
120
+ * ability that stops granting a curse, a brand or an activation would otherwise
121
+ * move nothing this file can see.
122
+ */
123
+ function fingerprint(a) {
124
+ if (!a)
125
+ return "null";
126
+ return JSON.stringify({
127
+ name: a.name,
128
+ tval: a.tval,
129
+ sval: a.sval,
130
+ toH: a.toH,
131
+ toD: a.toD,
132
+ toA: a.toA,
133
+ ac: a.ac,
134
+ dd: a.dd,
135
+ ds: a.ds,
136
+ weight: a.weight,
137
+ cost: a.cost,
138
+ level: a.level,
139
+ alloc: [a.allocProb, a.allocMin, a.allocMax],
140
+ flags: flagList(a.flags),
141
+ mods: a.modifiers,
142
+ el: a.elInfo.map((e) => [e.resLevel, e.flags]),
143
+ brands: a.brands ? a.brands.map((b) => (b ? 1 : 0)) : null,
144
+ slays: a.slays ? a.slays.map((s) => (s ? 1 : 0)) : null,
145
+ curses: a.curses,
146
+ act: a.activation ? a.activation.name : null,
147
+ altMsg: a.altMsg,
148
+ time: [a.time.base, a.time.dice, a.time.sides, a.time.mBonus],
149
+ });
150
+ }
151
+ /* ------------------------------------------------------------------ *
152
+ * Family 1: whole sets, end to end.
153
+ * ------------------------------------------------------------------ */
154
+ /** do_randart at each seed, one vector per generated artifact. */
155
+ export function computeSetVectors(fixtures) {
156
+ const constants = fixtures.constants();
157
+ const out = [];
158
+ for (const seed of RANDART_VECTOR_SEEDS) {
159
+ /* A fresh registry per seed: do_randart is asserted elsewhere not to mutate
160
+ * the standard artifacts, and this file must not be the thing that would
161
+ * hide it if that stopped being true. */
162
+ const arts = doRandart(fixtures.registry(), constants, seed, false);
163
+ arts.forEach((art, i) => {
164
+ out.push({
165
+ kind: "set",
166
+ subject: art ? art.name : `#${String(i)}`,
167
+ scenario: `seed=${String(seed)} aidx=${String(i)}`,
168
+ out: fingerprint(art),
169
+ });
170
+ });
171
+ }
172
+ return out;
173
+ }
174
+ /* ------------------------------------------------------------------ *
175
+ * Family 2 and 3: the per-arm families, with a probe.
176
+ * ------------------------------------------------------------------ */
177
+ /**
178
+ * A prepped artifact to start an arm from. Cloned from a standard artifact,
179
+ * which is the same object shape `doRandart`'s design loop mutates - derived
180
+ * from the real producer rather than hand-built, so the vector cannot pass
181
+ * against a struct production never sees.
182
+ */
183
+ function seedArtifact(reg) {
184
+ const src = reg.artifacts.find((a) => a !== null);
185
+ if (!src)
186
+ throw new Error("randart-vectors: the pack has no artifacts");
187
+ return cloneArtifact(src);
188
+ }
189
+ /** artifact_prep per item class, with the RNG position afterwards. */
190
+ export function computePrepVectors(fixtures) {
191
+ const reg = fixtures.registry();
192
+ const constants = fixtures.constants();
193
+ const data = collectArtifactData(reg, constants, reg.artifacts, new Rng(11));
194
+ const out = [];
195
+ for (const [name, tval] of PREP_TVALS) {
196
+ for (const seed of RANDART_ARM_SEEDS) {
197
+ const rng = new Rng(seed);
198
+ const art = seedArtifact(reg);
199
+ const kind = getBaseItem(reg, tval, rng);
200
+ artifactPrep(reg, art, kind, data, rng);
201
+ out.push({
202
+ kind: "prep",
203
+ subject: name,
204
+ scenario: `tval=${name} seed=${String(seed)}`,
205
+ out: fingerprint(art),
206
+ probe: rng.randint0(1 << 24),
207
+ });
208
+ }
209
+ }
210
+ return out;
211
+ }
212
+ /** add_ability_aux per ART_IDX, with the RNG position afterwards. */
213
+ export function computeAbilityVectors(fixtures) {
214
+ const reg = fixtures.registry();
215
+ const constants = fixtures.constants();
216
+ const data = collectArtifactData(reg, constants, reg.artifacts, new Rng(11));
217
+ const names = abilityNames();
218
+ const out = [];
219
+ for (let r = 0; r < names.length; r++) {
220
+ const name = names[r] ?? `ART_IDX_${String(r)}`;
221
+ for (const seed of RANDART_ARM_SEEDS) {
222
+ for (const power of RANDART_TARGET_POWERS) {
223
+ /* A SWORD base, because most abilities are reachable on a weapon and
224
+ * the ones that are not still have to be recorded doing nothing. */
225
+ const rng = new Rng(seed);
226
+ const art = seedArtifact(reg);
227
+ artifactPrep(reg, art, getBaseItem(reg, TV.SWORD, rng), data, rng);
228
+ /* Re-seed AFTER the prep so the probe measures this ability's draws
229
+ * alone, not the base item's. */
230
+ const abilityRng = new Rng(seed + 1);
231
+ addAbilityAux(reg, art, r, power, data, abilityRng);
232
+ out.push({
233
+ kind: "ability",
234
+ subject: name,
235
+ scenario: `r=${String(r)} seed=${String(seed)} power=${String(power)}`,
236
+ out: fingerprint(art),
237
+ probe: abilityRng.randint0(1 << 24),
238
+ });
239
+ }
240
+ }
241
+ }
242
+ return out;
243
+ }
244
+ /* ------------------------------------------------------------------ *
245
+ * Family 4: the item-class census the frequency table rests on.
246
+ * ------------------------------------------------------------------ */
247
+ /** collect_artifact_data over the standard set: every scalar it produces. */
248
+ export function computeDataVectors(fixtures) {
249
+ const reg = fixtures.registry();
250
+ const rng = new Rng(11);
251
+ const data = collectArtifactData(reg, fixtures.constants(), reg.artifacts, rng);
252
+ return [
253
+ {
254
+ kind: "data",
255
+ subject: "totals",
256
+ scenario: "standard set, seed=11",
257
+ out: JSON.stringify({
258
+ bow: data.bowTotal,
259
+ melee: data.meleeTotal,
260
+ boot: data.bootTotal,
261
+ glove: data.gloveTotal,
262
+ headgear: data.headgearTotal,
263
+ shield: data.shieldTotal,
264
+ cloak: data.cloakTotal,
265
+ armor: data.armorTotal,
266
+ other: data.otherTotal,
267
+ total: data.total,
268
+ negPower: data.negPowerTotal,
269
+ }),
270
+ probe: rng.randint0(1 << 24),
271
+ },
272
+ {
273
+ kind: "data",
274
+ subject: "power-profile",
275
+ scenario: "standard set, seed=11",
276
+ out: JSON.stringify({
277
+ hitIncrement: data.hitIncrement,
278
+ damIncrement: data.damIncrement,
279
+ hitStartval: data.hitStartval,
280
+ damStartval: data.damStartval,
281
+ acStartval: data.acStartval,
282
+ acIncrement: data.acIncrement,
283
+ maxPower: data.maxPower,
284
+ minPower: data.minPower,
285
+ avgPower: data.avgPower,
286
+ varPower: data.varPower,
287
+ }),
288
+ },
289
+ {
290
+ kind: "data",
291
+ subject: "frequencies",
292
+ scenario: "standard set, seed=11",
293
+ out: JSON.stringify({
294
+ artProbs: data.artProbs,
295
+ tvProbs: data.tvProbs,
296
+ tvNum: data.tvNum,
297
+ tvFreq: data.tvFreq,
298
+ }),
299
+ },
300
+ ];
301
+ }
302
+ /** Every family, in a stable order. */
303
+ export function computeRandartVectors(fixtures) {
304
+ return [
305
+ ...computeDataVectors(fixtures),
306
+ ...computePrepVectors(fixtures),
307
+ ...computeAbilityVectors(fixtures),
308
+ ...computeSetVectors(fixtures),
309
+ ];
310
+ }
311
+ //# sourceMappingURL=randart-vectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randart-vectors.js","sourceRoot":"","sources":["../../src/obj/randart-vectors.ts"],"names":[],"mappings":"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"}
@@ -35,14 +35,20 @@
35
35
  * (game.ts:2511-2514) - so the in-game randart names draw faithfully too.
36
36
  * randNameFallback (a local syllable table) is retained only as a defensive
37
37
  * guard for callers that pass no corpus (it never runs on the wired paths).
38
- * - Spoiler file (DEFERRED): upstream do_randart optionally writes randart.txt
39
- * (create_file / write_randart_entry, obj-randart.c L3057-L3215) and always
40
- * writes randart.log. Both are spoiler/log dumps that never affect any
41
- * artifact field or RNG draw; they are dropped. do_randart therefore takes
42
- * no create_file argument and returns the artifact array directly. Noted as
43
- * a deferral. The second measurement pass upstream runs after generation
44
- * (store_base_power/parse_frequencies on the finished set, L3184-L3187) exists
45
- * only to populate the log and consumes no RNG, so it is dropped too.
38
+ * - randart.log (PORT_TODO 5.5): PORTED bar one line. do_randart opens and
39
+ * closes it through the host; the maintainer's disposition on 2026-08-04 was
40
+ * pursue parity, so the "it never affects an artifact field" argument the old
41
+ * note made here was never a reason to omit it. What is and is not written is
42
+ * MEASURED by obj/randart-log.census.test.ts rather than claimed in prose,
43
+ * including the one site the census's span filter cannot see. See
44
+ * randart-log.ts for the sink and the reason it is a module-level static.
45
+ * - randart.txt: PORTED. obj/randart-file.ts, gated by do_randart's create_file
46
+ * (obj-randart.c L3195-L3215), which is a required parameter here.
47
+ * - The second measurement pass upstream runs after generation
48
+ * (store_base_power/parse_frequencies on the finished set, L3181-L3186):
49
+ * PORTED. It exists only to populate the log's closing statistics, and the
50
+ * set it measures is a parameter here because this port does not overwrite
51
+ * the a_info global the way upstream does.
46
52
  * - copy_artifact activation/alt_msg quirk (FAITHFUL): upstream copy_artifact
47
53
  * memcpy's the whole struct and then explicitly nulls a_dst->activation and
48
54
  * a_dst->alt_msg (obj-randart.c L2689-L2690). copyArtifact reproduces this:
@@ -56,7 +62,9 @@
56
62
  * artifact. In the standard set the quest artifacts are last and contiguous,
57
63
  * so this is unobservable, but it is reproduced exactly. Noted.
58
64
  */
65
+ import type { HostIo } from "../host/io.js";
59
66
  import { Rng } from "../rng.js";
67
+ import type { Constants } from "../constants.js";
60
68
  import type { ObjRegistry } from "./bind.js";
61
69
  import { type NameProbs } from "./randname.js";
62
70
  import { makeBad } from "./randart-build.js";
@@ -77,6 +85,18 @@ export declare const RANDNAME_TOLKIEN = 1;
77
85
  * copied. dst keeps its own identity so array references stay valid.
78
86
  */
79
87
  export declare function copyArtifact(src: Artifact, dst: Artifact): void;
88
+ /**
89
+ * A full deep copy of an artifact, preserving activation and alt_msg. Used to
90
+ * snapshot the registry's standard artifacts into a mutable working set so
91
+ * do_randart never mutates ObjRegistry.artifacts. This is NOT copy_artifact
92
+ * (which deliberately drops activation/alt_msg); it is the honest clone the
93
+ * working array needs.
94
+ *
95
+ * EXPORTED so a test harness can start from the same object shape production
96
+ * mutates - a hand-built Artifact would be the harness asserting what the
97
+ * struct looks like rather than measuring it.
98
+ */
99
+ export declare function cloneArtifact(src: Artifact): Artifact;
80
100
  /**
81
101
  * artifact_gen_name (obj-randart.c L2713): generate a random artifact name.
82
102
  * Faithful to upstream: draw a Markov word from the RANDNAME_TOLKIEN corpus via
@@ -101,7 +121,7 @@ export declare function artifactGenName(rng: Rng, probs: NameProbs | null): stri
101
121
  * (or, for a cursed artifact, curses) added until its power lands between 19/20
102
122
  * and 23/20 of the target.
103
123
  */
104
- export declare function designArtifact(reg: ObjRegistry, arts: (Artifact | null)[], data: ArtifactSetData, tv: number, aidx: number, rng: Rng, nameProbs: NameProbs | null): number;
124
+ export declare function designArtifact(reg: ObjRegistry, constants: Constants, arts: (Artifact | null)[], data: ArtifactSetData, tv: number, aidx: number, rng: Rng, nameProbs: NameProbs | null): number;
105
125
  /**
106
126
  * create_artifact_set (obj-randart.c L2954): design a full set of random
107
127
  * artifacts into `arts`. The resulting set has at least 80% as many artifacts
@@ -110,7 +130,7 @@ export declare function designArtifact(reg: ObjRegistry, arts: (Artifact | null)
110
130
  * artifacts. The final slot (index arts.length - 1) is left as the original,
111
131
  * matching the upstream `aidx < z_info->a_max - 1` bound.
112
132
  */
113
- export declare function createArtifactSet(reg: ObjRegistry, arts: (Artifact | null)[], data: ArtifactSetData, rng: Rng, nameProbs: NameProbs | null): void;
133
+ export declare function createArtifactSet(reg: ObjRegistry, constants: Constants, arts: (Artifact | null)[], data: ArtifactSetData, rng: Rng, nameProbs: NameProbs | null): void;
114
134
  /**
115
135
  * do_randart (obj-randart.c L3154): generate a full random artifact set from a
116
136
  * seed and return it as a fresh (Artifact|null)[] array (index 0 null),
@@ -119,10 +139,28 @@ export declare function createArtifactSet(reg: ObjRegistry, arts: (Artifact | nu
119
139
  * Upstream seeds the "quick" LCRNG (Rand_value = seed, Rand_quick = true), so
120
140
  * this port creates its Rng in quick mode and draws in upstream order:
121
141
  * measure the standard set (store_base_power + parse_frequencies via
122
- * collectArtifactData), then design every artifact (create_artifact_set). The
123
- * upstream log file, the post-generation measurement pass, and the optional
124
- * spoiler file (create_file / write_randart_entry) are all dropped as they
125
- * never affect an artifact field or an RNG draw (see module note).
142
+ * collectArtifactData), design every artifact (create_artifact_set), then
143
+ * measure the finished set the same way. The log file (randart.log), the
144
+ * post-generation measurement pass and the optional spoiler file (create_file /
145
+ * write_randart_entry) are all ported (PORT_TODO 5.5); none of them affects an
146
+ * artifact field or an RNG draw.
147
+ */
148
+ /** path_build(ANGBAND_DIR_USER, "randart.log") (obj-randart.c L3165). */
149
+ export declare const RANDART_LOG = "randart.log";
150
+ export declare function doRandart(reg: ObjRegistry,
151
+ /**
152
+ * z_info / the player constants object_prep reads. Upstream reaches them as
153
+ * globals; the port passes them, and they arrive here because artifact_power
154
+ * builds a real fake object through make_fake_artifact.
155
+ */
156
+ constants: Constants, randartSeed: number,
157
+ /**
158
+ * do_randart's `create_file` (obj-randart.c:3154). True writes randart.txt
159
+ * beside randart.log; upstream passes true from birth, from loading a save
160
+ * and from the spoiler generator, and false from the statistics harnesses.
161
+ *
162
+ * REQUIRED, with no default: the two callers that want it differ from the
163
+ * many that do not, and a default would silently pick one of them.
126
164
  */
127
- export declare function doRandart(reg: ObjRegistry, randartSeed: number, tolkienWords?: readonly string[], extras?: Pick<ArtifactSetData, "timedFoil" | "activationSummarize">): (Artifact | null)[];
165
+ createFile: boolean, tolkienWords?: readonly string[], extras?: Pick<ArtifactSetData, "timedFoil" | "activationSummarize">, io?: HostIo, onLogError?: (message: string) => void): (Artifact | null)[];
128
166
  //# sourceMappingURL=randart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randart.d.ts","sourceRoot":"","sources":["../../src/obj/randart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAKL,OAAO,EAGR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,CAAC;AAanB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAMlC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CA6B/D;AAiFD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAQzE;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EACzB,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,MAAM,CAkKR;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EACzB,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,IAAI,CA8BN;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,EAChC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,qBAAqB,CAAC,GAClE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAkCrB"}
1
+ {"version":3,"file":"randart.d.ts","sourceRoot":"","sources":["../../src/obj/randart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAKL,OAAO,EAGR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,CAAC;AAanB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAMlC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CA6B/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CA6BrD;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAQzE;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EACzB,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,MAAM,CAwMR;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EACzB,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,IAAI,CAuCN;AAMD;;;;;;;;;;;;;GAaG;AACH,yEAAyE;AACzE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,wBAAgB,SAAS,CACvB,GAAG,EAAE,WAAW;AAChB;;;;GAIG;AACH,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM;AACnB;;;;;;;GAOG;AACH,UAAU,EAAE,OAAO,EACnB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,EAChC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,qBAAqB,CAAC,EACnE,EAAE,GAAE,MAAe,EACnB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAuHrB"}