@rpgm-tools/neo-angband-core 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1183) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +80 -0
  3. package/dist/agent/act.d.ts +22 -0
  4. package/dist/agent/act.d.ts.map +1 -0
  5. package/dist/agent/act.js +88 -0
  6. package/dist/agent/act.js.map +1 -0
  7. package/dist/agent/controller.d.ts +34 -0
  8. package/dist/agent/controller.d.ts.map +1 -0
  9. package/dist/agent/controller.js +90 -0
  10. package/dist/agent/controller.js.map +1 -0
  11. package/dist/agent/events.d.ts +27 -0
  12. package/dist/agent/events.d.ts.map +1 -0
  13. package/dist/agent/events.js +31 -0
  14. package/dist/agent/events.js.map +1 -0
  15. package/dist/agent/index.d.ts +17 -0
  16. package/dist/agent/index.d.ts.map +1 -0
  17. package/dist/agent/index.js +15 -0
  18. package/dist/agent/index.js.map +1 -0
  19. package/dist/agent/perceive.d.ts +21 -0
  20. package/dist/agent/perceive.d.ts.map +1 -0
  21. package/dist/agent/perceive.js +386 -0
  22. package/dist/agent/perceive.js.map +1 -0
  23. package/dist/agent/types.d.ts +436 -0
  24. package/dist/agent/types.d.ts.map +1 -0
  25. package/dist/agent/types.js +63 -0
  26. package/dist/agent/types.js.map +1 -0
  27. package/dist/bitflag.d.ts +199 -0
  28. package/dist/bitflag.d.ts.map +1 -0
  29. package/dist/bitflag.js +478 -0
  30. package/dist/bitflag.js.map +1 -0
  31. package/dist/cmd.d.ts +164 -0
  32. package/dist/cmd.d.ts.map +1 -0
  33. package/dist/cmd.js +350 -0
  34. package/dist/cmd.js.map +1 -0
  35. package/dist/color.d.ts +104 -0
  36. package/dist/color.d.ts.map +1 -0
  37. package/dist/color.js +240 -0
  38. package/dist/color.js.map +1 -0
  39. package/dist/combat/brand-slay.d.ts +119 -0
  40. package/dist/combat/brand-slay.d.ts.map +1 -0
  41. package/dist/combat/brand-slay.js +264 -0
  42. package/dist/combat/brand-slay.js.map +1 -0
  43. package/dist/combat/hit.d.ts +198 -0
  44. package/dist/combat/hit.d.ts.map +1 -0
  45. package/dist/combat/hit.js +310 -0
  46. package/dist/combat/hit.js.map +1 -0
  47. package/dist/combat/index.d.ts +15 -0
  48. package/dist/combat/index.d.ts.map +1 -0
  49. package/dist/combat/index.js +15 -0
  50. package/dist/combat/index.js.map +1 -0
  51. package/dist/combat/melee.d.ts +261 -0
  52. package/dist/combat/melee.d.ts.map +1 -0
  53. package/dist/combat/melee.js +402 -0
  54. package/dist/combat/melee.js.map +1 -0
  55. package/dist/combat/mon-melee.d.ts +233 -0
  56. package/dist/combat/mon-melee.d.ts.map +1 -0
  57. package/dist/combat/mon-melee.js +883 -0
  58. package/dist/combat/mon-melee.js.map +1 -0
  59. package/dist/combat/ranged.d.ts +89 -0
  60. package/dist/combat/ranged.d.ts.map +1 -0
  61. package/dist/combat/ranged.js +253 -0
  62. package/dist/combat/ranged.js.map +1 -0
  63. package/dist/constants.d.ts +134 -0
  64. package/dist/constants.d.ts.map +1 -0
  65. package/dist/constants.js +171 -0
  66. package/dist/constants.js.map +1 -0
  67. package/dist/dice.d.ts +91 -0
  68. package/dist/dice.d.ts.map +1 -0
  69. package/dist/dice.js +424 -0
  70. package/dist/dice.js.map +1 -0
  71. package/dist/effects/effect-choice.d.ts +15 -0
  72. package/dist/effects/effect-choice.d.ts.map +1 -0
  73. package/dist/effects/effect-choice.js +18 -0
  74. package/dist/effects/effect-choice.js.map +1 -0
  75. package/dist/effects/effect-info.d.ts +124 -0
  76. package/dist/effects/effect-info.d.ts.map +1 -0
  77. package/dist/effects/effect-info.js +706 -0
  78. package/dist/effects/effect-info.js.map +1 -0
  79. package/dist/effects/effect.d.ts +165 -0
  80. package/dist/effects/effect.d.ts.map +1 -0
  81. package/dist/effects/effect.js +452 -0
  82. package/dist/effects/effect.js.map +1 -0
  83. package/dist/effects/handlers.d.ts +70 -0
  84. package/dist/effects/handlers.d.ts.map +1 -0
  85. package/dist/effects/handlers.js +394 -0
  86. package/dist/effects/handlers.js.map +1 -0
  87. package/dist/effects/interpreter.d.ts +291 -0
  88. package/dist/effects/interpreter.d.ts.map +1 -0
  89. package/dist/effects/interpreter.js +325 -0
  90. package/dist/effects/interpreter.js.map +1 -0
  91. package/dist/events.d.ts +188 -0
  92. package/dist/events.d.ts.map +1 -0
  93. package/dist/events.js +138 -0
  94. package/dist/events.js.map +1 -0
  95. package/dist/expression.d.ts +83 -0
  96. package/dist/expression.d.ts.map +1 -0
  97. package/dist/expression.js +333 -0
  98. package/dist/expression.js.map +1 -0
  99. package/dist/game/cave-cmd.d.ts +195 -0
  100. package/dist/game/cave-cmd.d.ts.map +1 -0
  101. package/dist/game/cave-cmd.js +968 -0
  102. package/dist/game/cave-cmd.js.map +1 -0
  103. package/dist/game/char-sheet.d.ts +189 -0
  104. package/dist/game/char-sheet.d.ts.map +1 -0
  105. package/dist/game/char-sheet.js +381 -0
  106. package/dist/game/char-sheet.js.map +1 -0
  107. package/dist/game/chest.d.ts +94 -0
  108. package/dist/game/chest.d.ts.map +1 -0
  109. package/dist/game/chest.js +267 -0
  110. package/dist/game/chest.js.map +1 -0
  111. package/dist/game/context.d.ts +970 -0
  112. package/dist/game/context.d.ts.map +1 -0
  113. package/dist/game/context.js +353 -0
  114. package/dist/game/context.js.map +1 -0
  115. package/dist/game/curse-tick.d.ts +35 -0
  116. package/dist/game/curse-tick.d.ts.map +1 -0
  117. package/dist/game/curse-tick.js +100 -0
  118. package/dist/game/curse-tick.js.map +1 -0
  119. package/dist/game/describe.d.ts +20 -0
  120. package/dist/game/describe.d.ts.map +1 -0
  121. package/dist/game/describe.js +45 -0
  122. package/dist/game/describe.js.map +1 -0
  123. package/dist/game/display.d.ts +196 -0
  124. package/dist/game/display.d.ts.map +1 -0
  125. package/dist/game/display.js +684 -0
  126. package/dist/game/display.js.map +1 -0
  127. package/dist/game/dump-level.d.ts +37 -0
  128. package/dist/game/dump-level.d.ts.map +1 -0
  129. package/dist/game/dump-level.js +110 -0
  130. package/dist/game/dump-level.js.map +1 -0
  131. package/dist/game/effect-attack.d.ts +36 -0
  132. package/dist/game/effect-attack.d.ts.map +1 -0
  133. package/dist/game/effect-attack.js +694 -0
  134. package/dist/game/effect-attack.js.map +1 -0
  135. package/dist/game/effect-detect.d.ts +34 -0
  136. package/dist/game/effect-detect.d.ts.map +1 -0
  137. package/dist/game/effect-detect.js +456 -0
  138. package/dist/game/effect-detect.js.map +1 -0
  139. package/dist/game/effect-env.d.ts +77 -0
  140. package/dist/game/effect-env.d.ts.map +1 -0
  141. package/dist/game/effect-env.js +166 -0
  142. package/dist/game/effect-env.js.map +1 -0
  143. package/dist/game/effect-game-env.d.ts +76 -0
  144. package/dist/game/effect-game-env.d.ts.map +1 -0
  145. package/dist/game/effect-game-env.js +23 -0
  146. package/dist/game/effect-game-env.js.map +1 -0
  147. package/dist/game/effect-general.d.ts +98 -0
  148. package/dist/game/effect-general.d.ts.map +1 -0
  149. package/dist/game/effect-general.js +914 -0
  150. package/dist/game/effect-general.js.map +1 -0
  151. package/dist/game/effect-item.d.ts +124 -0
  152. package/dist/game/effect-item.d.ts.map +1 -0
  153. package/dist/game/effect-item.js +789 -0
  154. package/dist/game/effect-item.js.map +1 -0
  155. package/dist/game/effect-melee.d.ts +43 -0
  156. package/dist/game/effect-melee.d.ts.map +1 -0
  157. package/dist/game/effect-melee.js +477 -0
  158. package/dist/game/effect-melee.js.map +1 -0
  159. package/dist/game/effect-mon-origin.d.ts +67 -0
  160. package/dist/game/effect-mon-origin.d.ts.map +1 -0
  161. package/dist/game/effect-mon-origin.js +164 -0
  162. package/dist/game/effect-mon-origin.js.map +1 -0
  163. package/dist/game/effect-monster.d.ts +29 -0
  164. package/dist/game/effect-monster.d.ts.map +1 -0
  165. package/dist/game/effect-monster.js +281 -0
  166. package/dist/game/effect-monster.js.map +1 -0
  167. package/dist/game/effect-summon.d.ts +37 -0
  168. package/dist/game/effect-summon.d.ts.map +1 -0
  169. package/dist/game/effect-summon.js +113 -0
  170. package/dist/game/effect-summon.js.map +1 -0
  171. package/dist/game/effect-teleport.d.ts +130 -0
  172. package/dist/game/effect-teleport.d.ts.map +1 -0
  173. package/dist/game/effect-teleport.js +529 -0
  174. package/dist/game/effect-teleport.js.map +1 -0
  175. package/dist/game/effect-terrain.d.ts +91 -0
  176. package/dist/game/effect-terrain.d.ts.map +1 -0
  177. package/dist/game/effect-terrain.js +812 -0
  178. package/dist/game/effect-terrain.js.map +1 -0
  179. package/dist/game/energy.d.ts +45 -0
  180. package/dist/game/energy.d.ts.map +1 -0
  181. package/dist/game/energy.js +51 -0
  182. package/dist/game/energy.js.map +1 -0
  183. package/dist/game/equip-cmp.d.ts +138 -0
  184. package/dist/game/equip-cmp.d.ts.map +1 -0
  185. package/dist/game/equip-cmp.js +363 -0
  186. package/dist/game/equip-cmp.js.map +1 -0
  187. package/dist/game/floor.d.ts +182 -0
  188. package/dist/game/floor.d.ts.map +1 -0
  189. package/dist/game/floor.js +435 -0
  190. package/dist/game/floor.js.map +1 -0
  191. package/dist/game/gear.d.ts +408 -0
  192. package/dist/game/gear.d.ts.map +1 -0
  193. package/dist/game/gear.js +1037 -0
  194. package/dist/game/gear.js.map +1 -0
  195. package/dist/game/harness.d.ts +61 -0
  196. package/dist/game/harness.d.ts.map +1 -0
  197. package/dist/game/harness.js +198 -0
  198. package/dist/game/harness.js.map +1 -0
  199. package/dist/game/history.d.ts +49 -0
  200. package/dist/game/history.d.ts.map +1 -0
  201. package/dist/game/history.js +55 -0
  202. package/dist/game/history.js.map +1 -0
  203. package/dist/game/ignore-cmd.d.ts +42 -0
  204. package/dist/game/ignore-cmd.d.ts.map +1 -0
  205. package/dist/game/ignore-cmd.js +59 -0
  206. package/dist/game/ignore-cmd.js.map +1 -0
  207. package/dist/game/inscription-confirm.d.ts +80 -0
  208. package/dist/game/inscription-confirm.d.ts.map +1 -0
  209. package/dist/game/inscription-confirm.js +95 -0
  210. package/dist/game/inscription-confirm.js.map +1 -0
  211. package/dist/game/known.d.ts +297 -0
  212. package/dist/game/known.d.ts.map +1 -0
  213. package/dist/game/known.js +849 -0
  214. package/dist/game/known.js.map +1 -0
  215. package/dist/game/loop.d.ts +139 -0
  216. package/dist/game/loop.d.ts.map +1 -0
  217. package/dist/game/loop.js +631 -0
  218. package/dist/game/loop.js.map +1 -0
  219. package/dist/game/lore-color.d.ts +25 -0
  220. package/dist/game/lore-color.d.ts.map +1 -0
  221. package/dist/game/lore-color.js +95 -0
  222. package/dist/game/lore-color.js.map +1 -0
  223. package/dist/game/mon-cast.d.ts +150 -0
  224. package/dist/game/mon-cast.d.ts.map +1 -0
  225. package/dist/game/mon-cast.js +301 -0
  226. package/dist/game/mon-cast.js.map +1 -0
  227. package/dist/game/mon-cmd.d.ts +51 -0
  228. package/dist/game/mon-cmd.d.ts.map +1 -0
  229. package/dist/game/mon-cmd.js +670 -0
  230. package/dist/game/mon-cmd.js.map +1 -0
  231. package/dist/game/mon-death.d.ts +143 -0
  232. package/dist/game/mon-death.d.ts.map +1 -0
  233. package/dist/game/mon-death.js +328 -0
  234. package/dist/game/mon-death.js.map +1 -0
  235. package/dist/game/mon-group.d.ts +81 -0
  236. package/dist/game/mon-group.d.ts.map +1 -0
  237. package/dist/game/mon-group.js +323 -0
  238. package/dist/game/mon-group.js.map +1 -0
  239. package/dist/game/mon-list.d.ts +85 -0
  240. package/dist/game/mon-list.d.ts.map +1 -0
  241. package/dist/game/mon-list.js +154 -0
  242. package/dist/game/mon-list.js.map +1 -0
  243. package/dist/game/mon-message.d.ts +100 -0
  244. package/dist/game/mon-message.d.ts.map +1 -0
  245. package/dist/game/mon-message.js +336 -0
  246. package/dist/game/mon-message.js.map +1 -0
  247. package/dist/game/mon-place.d.ts +226 -0
  248. package/dist/game/mon-place.d.ts.map +1 -0
  249. package/dist/game/mon-place.js +642 -0
  250. package/dist/game/mon-place.js.map +1 -0
  251. package/dist/game/mon-ranged.d.ts +87 -0
  252. package/dist/game/mon-ranged.d.ts.map +1 -0
  253. package/dist/game/mon-ranged.js +353 -0
  254. package/dist/game/mon-ranged.js.map +1 -0
  255. package/dist/game/mon-shape.d.ts +43 -0
  256. package/dist/game/mon-shape.d.ts.map +1 -0
  257. package/dist/game/mon-shape.js +115 -0
  258. package/dist/game/mon-shape.js.map +1 -0
  259. package/dist/game/mon-side.d.ts +63 -0
  260. package/dist/game/mon-side.d.ts.map +1 -0
  261. package/dist/game/mon-side.js +403 -0
  262. package/dist/game/mon-side.js.map +1 -0
  263. package/dist/game/monster-turn.d.ts +195 -0
  264. package/dist/game/monster-turn.d.ts.map +1 -0
  265. package/dist/game/monster-turn.js +1560 -0
  266. package/dist/game/monster-turn.js.map +1 -0
  267. package/dist/game/obj-cmd.d.ts +453 -0
  268. package/dist/game/obj-cmd.d.ts.map +1 -0
  269. package/dist/game/obj-cmd.js +1530 -0
  270. package/dist/game/obj-cmd.js.map +1 -0
  271. package/dist/game/obj-list.d.ts +92 -0
  272. package/dist/game/obj-list.d.ts.map +1 -0
  273. package/dist/game/obj-list.js +251 -0
  274. package/dist/game/obj-list.js.map +1 -0
  275. package/dist/game/object-inspect.d.ts +37 -0
  276. package/dist/game/object-inspect.d.ts.map +1 -0
  277. package/dist/game/object-inspect.js +106 -0
  278. package/dist/game/object-inspect.js.map +1 -0
  279. package/dist/game/pickup.d.ts +126 -0
  280. package/dist/game/pickup.d.ts.map +1 -0
  281. package/dist/game/pickup.js +367 -0
  282. package/dist/game/pickup.js.map +1 -0
  283. package/dist/game/player-path.d.ts +133 -0
  284. package/dist/game/player-path.d.ts.map +1 -0
  285. package/dist/game/player-path.js +1268 -0
  286. package/dist/game/player-path.js.map +1 -0
  287. package/dist/game/player-side.d.ts +59 -0
  288. package/dist/game/player-side.d.ts.map +1 -0
  289. package/dist/game/player-side.js +506 -0
  290. package/dist/game/player-side.js.map +1 -0
  291. package/dist/game/player-turn.d.ts +161 -0
  292. package/dist/game/player-turn.d.ts.map +1 -0
  293. package/dist/game/player-turn.js +739 -0
  294. package/dist/game/player-turn.js.map +1 -0
  295. package/dist/game/project-cast.d.ts +268 -0
  296. package/dist/game/project-cast.d.ts.map +1 -0
  297. package/dist/game/project-cast.js +496 -0
  298. package/dist/game/project-cast.js.map +1 -0
  299. package/dist/game/project-feat.d.ts +47 -0
  300. package/dist/game/project-feat.d.ts.map +1 -0
  301. package/dist/game/project-feat.js +350 -0
  302. package/dist/game/project-feat.js.map +1 -0
  303. package/dist/game/project-monster.d.ts +106 -0
  304. package/dist/game/project-monster.d.ts.map +1 -0
  305. package/dist/game/project-monster.js +272 -0
  306. package/dist/game/project-monster.js.map +1 -0
  307. package/dist/game/project-obj.d.ts +60 -0
  308. package/dist/game/project-obj.d.ts.map +1 -0
  309. package/dist/game/project-obj.js +245 -0
  310. package/dist/game/project-obj.js.map +1 -0
  311. package/dist/game/project-player.d.ts +120 -0
  312. package/dist/game/project-player.d.ts.map +1 -0
  313. package/dist/game/project-player.js +108 -0
  314. package/dist/game/project-player.js.map +1 -0
  315. package/dist/game/quest.d.ts +101 -0
  316. package/dist/game/quest.d.ts.map +1 -0
  317. package/dist/game/quest.js +192 -0
  318. package/dist/game/quest.js.map +1 -0
  319. package/dist/game/ranged-cmd.d.ts +32 -0
  320. package/dist/game/ranged-cmd.d.ts.map +1 -0
  321. package/dist/game/ranged-cmd.js +372 -0
  322. package/dist/game/ranged-cmd.js.map +1 -0
  323. package/dist/game/scheduler.d.ts +47 -0
  324. package/dist/game/scheduler.d.ts.map +1 -0
  325. package/dist/game/scheduler.js +141 -0
  326. package/dist/game/scheduler.js.map +1 -0
  327. package/dist/game/spell-cmd.d.ts +104 -0
  328. package/dist/game/spell-cmd.d.ts.map +1 -0
  329. package/dist/game/spell-cmd.js +320 -0
  330. package/dist/game/spell-cmd.js.map +1 -0
  331. package/dist/game/spoil.d.ts +28 -0
  332. package/dist/game/spoil.d.ts.map +1 -0
  333. package/dist/game/spoil.js +435 -0
  334. package/dist/game/spoil.js.map +1 -0
  335. package/dist/game/steal.d.ts +35 -0
  336. package/dist/game/steal.d.ts.map +1 -0
  337. package/dist/game/steal.js +145 -0
  338. package/dist/game/steal.js.map +1 -0
  339. package/dist/game/take-hit-hooks.d.ts +52 -0
  340. package/dist/game/take-hit-hooks.d.ts.map +1 -0
  341. package/dist/game/take-hit-hooks.js +127 -0
  342. package/dist/game/take-hit-hooks.js.map +1 -0
  343. package/dist/game/target-loop.d.ts +119 -0
  344. package/dist/game/target-loop.d.ts.map +1 -0
  345. package/dist/game/target-loop.js +408 -0
  346. package/dist/game/target-loop.js.map +1 -0
  347. package/dist/game/target.d.ts +133 -0
  348. package/dist/game/target.d.ts.map +1 -0
  349. package/dist/game/target.js +353 -0
  350. package/dist/game/target.js.map +1 -0
  351. package/dist/game/thrust.d.ts +37 -0
  352. package/dist/game/thrust.d.ts.map +1 -0
  353. package/dist/game/thrust.js +155 -0
  354. package/dist/game/thrust.js.map +1 -0
  355. package/dist/game/trap.d.ts +218 -0
  356. package/dist/game/trap.d.ts.map +1 -0
  357. package/dist/game/trap.js +618 -0
  358. package/dist/game/trap.js.map +1 -0
  359. package/dist/game/ui-entry.d.ts +282 -0
  360. package/dist/game/ui-entry.d.ts.map +1 -0
  361. package/dist/game/ui-entry.js +1838 -0
  362. package/dist/game/ui-entry.js.map +1 -0
  363. package/dist/game/wizard.d.ts +654 -0
  364. package/dist/game/wizard.d.ts.map +1 -0
  365. package/dist/game/wizard.js +1323 -0
  366. package/dist/game/wizard.js.map +1 -0
  367. package/dist/game/world.d.ts +183 -0
  368. package/dist/game/world.d.ts.map +1 -0
  369. package/dist/game/world.js +685 -0
  370. package/dist/game/world.js.map +1 -0
  371. package/dist/gen/cave.d.ts +247 -0
  372. package/dist/gen/cave.d.ts.map +1 -0
  373. package/dist/gen/cave.js +2406 -0
  374. package/dist/gen/cave.js.map +1 -0
  375. package/dist/gen/gen-monster.d.ts +151 -0
  376. package/dist/gen/gen-monster.d.ts.map +1 -0
  377. package/dist/gen/gen-monster.js +473 -0
  378. package/dist/gen/gen-monster.js.map +1 -0
  379. package/dist/gen/generate.d.ts +240 -0
  380. package/dist/gen/generate.d.ts.map +1 -0
  381. package/dist/gen/generate.js +358 -0
  382. package/dist/gen/generate.js.map +1 -0
  383. package/dist/gen/room.d.ts +160 -0
  384. package/dist/gen/room.d.ts.map +1 -0
  385. package/dist/gen/room.js +1910 -0
  386. package/dist/gen/room.js.map +1 -0
  387. package/dist/gen/util.d.ts +466 -0
  388. package/dist/gen/util.d.ts.map +1 -0
  389. package/dist/gen/util.js +1553 -0
  390. package/dist/gen/util.js.map +1 -0
  391. package/dist/generated/dun-profiles.d.ts +44 -0
  392. package/dist/generated/dun-profiles.d.ts.map +1 -0
  393. package/dist/generated/dun-profiles.js +28 -0
  394. package/dist/generated/dun-profiles.js.map +1 -0
  395. package/dist/generated/effects.d.ts +1021 -0
  396. package/dist/generated/effects.d.ts.map +1 -0
  397. package/dist/generated/effects.js +239 -0
  398. package/dist/generated/effects.js.map +1 -0
  399. package/dist/generated/elements.d.ts +83 -0
  400. package/dist/generated/elements.d.ts.map +1 -0
  401. package/dist/generated/elements.js +60 -0
  402. package/dist/generated/elements.js.map +1 -0
  403. package/dist/generated/equip-slots.d.ts +104 -0
  404. package/dist/generated/equip-slots.d.ts.map +1 -0
  405. package/dist/generated/equip-slots.js +34 -0
  406. package/dist/generated/equip-slots.js.map +1 -0
  407. package/dist/generated/history-types.d.ts +52 -0
  408. package/dist/generated/history-types.d.ts.map +1 -0
  409. package/dist/generated/history-types.js +32 -0
  410. package/dist/generated/history-types.js.map +1 -0
  411. package/dist/generated/ignore-types.d.ts +116 -0
  412. package/dist/generated/ignore-types.d.ts.map +1 -0
  413. package/dist/generated/ignore-types.js +64 -0
  414. package/dist/generated/ignore-types.js.map +1 -0
  415. package/dist/generated/index.d.ts +32 -0
  416. package/dist/generated/index.d.ts.map +1 -0
  417. package/dist/generated/index.js +33 -0
  418. package/dist/generated/index.js.map +1 -0
  419. package/dist/generated/kind-flags.d.ts +72 -0
  420. package/dist/generated/kind-flags.d.ts.map +1 -0
  421. package/dist/generated/kind-flags.js +42 -0
  422. package/dist/generated/kind-flags.js.map +1 -0
  423. package/dist/generated/message.d.ts +624 -0
  424. package/dist/generated/message.d.ts.map +1 -0
  425. package/dist/generated/message.js +318 -0
  426. package/dist/generated/message.js.map +1 -0
  427. package/dist/generated/mon-message.d.ts +386 -0
  428. package/dist/generated/mon-message.d.ts.map +1 -0
  429. package/dist/generated/mon-message.js +136 -0
  430. package/dist/generated/mon-message.js.map +1 -0
  431. package/dist/generated/mon-race-flags.d.ts +433 -0
  432. package/dist/generated/mon-race-flags.d.ts.map +1 -0
  433. package/dist/generated/mon-race-flags.js +180 -0
  434. package/dist/generated/mon-race-flags.js.map +1 -0
  435. package/dist/generated/mon-spells.d.ts +380 -0
  436. package/dist/generated/mon-spells.d.ts.map +1 -0
  437. package/dist/generated/mon-spells.js +196 -0
  438. package/dist/generated/mon-spells.js.map +1 -0
  439. package/dist/generated/mon-temp-flags.d.ts +52 -0
  440. package/dist/generated/mon-temp-flags.d.ts.map +1 -0
  441. package/dist/generated/mon-temp-flags.js +32 -0
  442. package/dist/generated/mon-temp-flags.js.map +1 -0
  443. package/dist/generated/mon-timed.d.ts +118 -0
  444. package/dist/generated/mon-timed.d.ts.map +1 -0
  445. package/dist/generated/mon-timed.js +32 -0
  446. package/dist/generated/mon-timed.js.map +1 -0
  447. package/dist/generated/object-flags.d.ts +169 -0
  448. package/dist/generated/object-flags.d.ts.map +1 -0
  449. package/dist/generated/object-flags.js +93 -0
  450. package/dist/generated/object-flags.js.map +1 -0
  451. package/dist/generated/object-modifiers.d.ts +50 -0
  452. package/dist/generated/object-modifiers.d.ts.map +1 -0
  453. package/dist/generated/object-modifiers.js +41 -0
  454. package/dist/generated/object-modifiers.js.map +1 -0
  455. package/dist/generated/options.d.ts +284 -0
  456. package/dist/generated/options.d.ts.map +1 -0
  457. package/dist/generated/options.js +102 -0
  458. package/dist/generated/options.js.map +1 -0
  459. package/dist/generated/origins.d.ts +138 -0
  460. package/dist/generated/origins.d.ts.map +1 -0
  461. package/dist/generated/origins.js +62 -0
  462. package/dist/generated/origins.js.map +1 -0
  463. package/dist/generated/parser-errors.d.ts +264 -0
  464. package/dist/generated/parser-errors.d.ts.map +1 -0
  465. package/dist/generated/parser-errors.js +138 -0
  466. package/dist/generated/parser-errors.js.map +1 -0
  467. package/dist/generated/player-flags.d.ts +62 -0
  468. package/dist/generated/player-flags.d.ts.map +1 -0
  469. package/dist/generated/player-flags.js +46 -0
  470. package/dist/generated/player-flags.js.map +1 -0
  471. package/dist/generated/player-timed.d.ts +273 -0
  472. package/dist/generated/player-timed.d.ts.map +1 -0
  473. package/dist/generated/player-timed.js +116 -0
  474. package/dist/generated/player-timed.js.map +1 -0
  475. package/dist/generated/projections.d.ts +130 -0
  476. package/dist/generated/projections.d.ts.map +1 -0
  477. package/dist/generated/projections.js +101 -0
  478. package/dist/generated/projections.js.map +1 -0
  479. package/dist/generated/randart-properties.d.ts +388 -0
  480. package/dist/generated/randart-properties.d.ts.map +1 -0
  481. package/dist/generated/randart-properties.js +200 -0
  482. package/dist/generated/randart-properties.js.map +1 -0
  483. package/dist/generated/room-flags.d.ts +21 -0
  484. package/dist/generated/room-flags.d.ts.map +1 -0
  485. package/dist/generated/room-flags.js +19 -0
  486. package/dist/generated/room-flags.js.map +1 -0
  487. package/dist/generated/rooms.d.ts +122 -0
  488. package/dist/generated/rooms.d.ts.map +1 -0
  489. package/dist/generated/rooms.js +48 -0
  490. package/dist/generated/rooms.js.map +1 -0
  491. package/dist/generated/square-flags.d.ts +96 -0
  492. package/dist/generated/square-flags.d.ts.map +1 -0
  493. package/dist/generated/square-flags.js +54 -0
  494. package/dist/generated/square-flags.js.map +1 -0
  495. package/dist/generated/stats.d.ts +23 -0
  496. package/dist/generated/stats.d.ts.map +1 -0
  497. package/dist/generated/stats.js +20 -0
  498. package/dist/generated/stats.js.map +1 -0
  499. package/dist/generated/terrain-flags.d.ts +136 -0
  500. package/dist/generated/terrain-flags.d.ts.map +1 -0
  501. package/dist/generated/terrain-flags.js +74 -0
  502. package/dist/generated/terrain-flags.js.map +1 -0
  503. package/dist/generated/terrain.d.ts +83 -0
  504. package/dist/generated/terrain.d.ts.map +1 -0
  505. package/dist/generated/terrain.js +60 -0
  506. package/dist/generated/terrain.js.map +1 -0
  507. package/dist/generated/trap-flags.d.ts +68 -0
  508. package/dist/generated/trap-flags.d.ts.map +1 -0
  509. package/dist/generated/trap-flags.js +40 -0
  510. package/dist/generated/trap-flags.js.map +1 -0
  511. package/dist/generated/tvals.d.ts +152 -0
  512. package/dist/generated/tvals.d.ts.map +1 -0
  513. package/dist/generated/tvals.js +82 -0
  514. package/dist/generated/tvals.js.map +1 -0
  515. package/dist/generated/ui-entry-renderers.d.ts +62 -0
  516. package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
  517. package/dist/generated/ui-entry-renderers.js +22 -0
  518. package/dist/generated/ui-entry-renderers.js.map +1 -0
  519. package/dist/guard.d.ts +43 -0
  520. package/dist/guard.d.ts.map +1 -0
  521. package/dist/guard.js +65 -0
  522. package/dist/guard.js.map +1 -0
  523. package/dist/host/args.d.ts +129 -0
  524. package/dist/host/args.d.ts.map +1 -0
  525. package/dist/host/args.js +251 -0
  526. package/dist/host/args.js.map +1 -0
  527. package/dist/host/bridge.d.ts +61 -0
  528. package/dist/host/bridge.d.ts.map +1 -0
  529. package/dist/host/bridge.js +176 -0
  530. package/dist/host/bridge.js.map +1 -0
  531. package/dist/host/index.d.ts +18 -0
  532. package/dist/host/index.d.ts.map +1 -0
  533. package/dist/host/index.js +18 -0
  534. package/dist/host/index.js.map +1 -0
  535. package/dist/host/io.d.ts +169 -0
  536. package/dist/host/io.d.ts.map +1 -0
  537. package/dist/host/io.js +137 -0
  538. package/dist/host/io.js.map +1 -0
  539. package/dist/host/memory.d.ts +56 -0
  540. package/dist/host/memory.d.ts.map +1 -0
  541. package/dist/host/memory.js +105 -0
  542. package/dist/host/memory.js.map +1 -0
  543. package/dist/host/raw.d.ts +114 -0
  544. package/dist/host/raw.d.ts.map +1 -0
  545. package/dist/host/raw.js +107 -0
  546. package/dist/host/raw.js.map +1 -0
  547. package/dist/index.d.ts +180 -0
  548. package/dist/index.d.ts.map +1 -0
  549. package/dist/index.js +222 -0
  550. package/dist/index.js.map +1 -0
  551. package/dist/loc.d.ts +63 -0
  552. package/dist/loc.d.ts.map +1 -0
  553. package/dist/loc.js +128 -0
  554. package/dist/loc.js.map +1 -0
  555. package/dist/mod/hooks.d.ts +204 -0
  556. package/dist/mod/hooks.d.ts.map +1 -0
  557. package/dist/mod/hooks.js +161 -0
  558. package/dist/mod/hooks.js.map +1 -0
  559. package/dist/mod/ids.d.ts +160 -0
  560. package/dist/mod/ids.d.ts.map +1 -0
  561. package/dist/mod/ids.js +343 -0
  562. package/dist/mod/ids.js.map +1 -0
  563. package/dist/mod/registry-host.d.ts +156 -0
  564. package/dist/mod/registry-host.d.ts.map +1 -0
  565. package/dist/mod/registry-host.js +142 -0
  566. package/dist/mod/registry-host.js.map +1 -0
  567. package/dist/mod/save-blocks.d.ts +201 -0
  568. package/dist/mod/save-blocks.d.ts.map +1 -0
  569. package/dist/mod/save-blocks.js +640 -0
  570. package/dist/mod/save-blocks.js.map +1 -0
  571. package/dist/mod/vocabulary.d.ts +104 -0
  572. package/dist/mod/vocabulary.d.ts.map +1 -0
  573. package/dist/mod/vocabulary.js +0 -0
  574. package/dist/mod/vocabulary.js.map +1 -0
  575. package/dist/mon/bind.d.ts +266 -0
  576. package/dist/mon/bind.d.ts.map +1 -0
  577. package/dist/mon/bind.js +610 -0
  578. package/dist/mon/bind.js.map +1 -0
  579. package/dist/mon/desc.d.ts +72 -0
  580. package/dist/mon/desc.d.ts.map +1 -0
  581. package/dist/mon/desc.js +237 -0
  582. package/dist/mon/desc.js.map +1 -0
  583. package/dist/mon/knowledge-groups.d.ts +61 -0
  584. package/dist/mon/knowledge-groups.d.ts.map +1 -0
  585. package/dist/mon/knowledge-groups.js +121 -0
  586. package/dist/mon/knowledge-groups.js.map +1 -0
  587. package/dist/mon/lore-describe.d.ts +216 -0
  588. package/dist/mon/lore-describe.d.ts.map +1 -0
  589. package/dist/mon/lore-describe.js +1105 -0
  590. package/dist/mon/lore-describe.js.map +1 -0
  591. package/dist/mon/lore.d.ts +117 -0
  592. package/dist/mon/lore.d.ts.map +1 -0
  593. package/dist/mon/lore.js +221 -0
  594. package/dist/mon/lore.js.map +1 -0
  595. package/dist/mon/make.d.ts +147 -0
  596. package/dist/mon/make.d.ts.map +1 -0
  597. package/dist/mon/make.js +353 -0
  598. package/dist/mon/make.js.map +1 -0
  599. package/dist/mon/monster.d.ts +94 -0
  600. package/dist/mon/monster.d.ts.map +1 -0
  601. package/dist/mon/monster.js +90 -0
  602. package/dist/mon/monster.js.map +1 -0
  603. package/dist/mon/predicate.d.ts +87 -0
  604. package/dist/mon/predicate.d.ts.map +1 -0
  605. package/dist/mon/predicate.js +190 -0
  606. package/dist/mon/predicate.js.map +1 -0
  607. package/dist/mon/project-mon.d.ts +129 -0
  608. package/dist/mon/project-mon.d.ts.map +1 -0
  609. package/dist/mon/project-mon.js +652 -0
  610. package/dist/mon/project-mon.js.map +1 -0
  611. package/dist/mon/spell.d.ts +155 -0
  612. package/dist/mon/spell.d.ts.map +1 -0
  613. package/dist/mon/spell.js +355 -0
  614. package/dist/mon/spell.js.map +1 -0
  615. package/dist/mon/steal.d.ts +112 -0
  616. package/dist/mon/steal.d.ts.map +1 -0
  617. package/dist/mon/steal.js +163 -0
  618. package/dist/mon/steal.js.map +1 -0
  619. package/dist/mon/summon.d.ts +62 -0
  620. package/dist/mon/summon.d.ts.map +1 -0
  621. package/dist/mon/summon.js +111 -0
  622. package/dist/mon/summon.js.map +1 -0
  623. package/dist/mon/take-hit.d.ts +75 -0
  624. package/dist/mon/take-hit.d.ts.map +1 -0
  625. package/dist/mon/take-hit.js +122 -0
  626. package/dist/mon/take-hit.js.map +1 -0
  627. package/dist/mon/timed.d.ts +74 -0
  628. package/dist/mon/timed.d.ts.map +1 -0
  629. package/dist/mon/timed.js +219 -0
  630. package/dist/mon/timed.js.map +1 -0
  631. package/dist/mon/types.d.ts +252 -0
  632. package/dist/mon/types.d.ts.map +1 -0
  633. package/dist/mon/types.js +46 -0
  634. package/dist/mon/types.js.map +1 -0
  635. package/dist/msg.d.ts +71 -0
  636. package/dist/msg.d.ts.map +1 -0
  637. package/dist/msg.js +126 -0
  638. package/dist/msg.js.map +1 -0
  639. package/dist/obj/artifact-fake.d.ts +39 -0
  640. package/dist/obj/artifact-fake.d.ts.map +1 -0
  641. package/dist/obj/artifact-fake.js +52 -0
  642. package/dist/obj/artifact-fake.js.map +1 -0
  643. package/dist/obj/artifact-known.d.ts +50 -0
  644. package/dist/obj/artifact-known.d.ts.map +1 -0
  645. package/dist/obj/artifact-known.js +55 -0
  646. package/dist/obj/artifact-known.js.map +1 -0
  647. package/dist/obj/bind.d.ts +219 -0
  648. package/dist/obj/bind.d.ts.map +1 -0
  649. package/dist/obj/bind.js +1239 -0
  650. package/dist/obj/bind.js.map +1 -0
  651. package/dist/obj/chest.d.ts +91 -0
  652. package/dist/obj/chest.d.ts.map +1 -0
  653. package/dist/obj/chest.js +220 -0
  654. package/dist/obj/chest.js.map +1 -0
  655. package/dist/obj/desc.d.ts +79 -0
  656. package/dist/obj/desc.d.ts.map +1 -0
  657. package/dist/obj/desc.js +602 -0
  658. package/dist/obj/desc.js.map +1 -0
  659. package/dist/obj/effects-info.d.ts +78 -0
  660. package/dist/obj/effects-info.d.ts.map +1 -0
  661. package/dist/obj/effects-info.js +240 -0
  662. package/dist/obj/effects-info.js.map +1 -0
  663. package/dist/obj/flavor.d.ts +68 -0
  664. package/dist/obj/flavor.d.ts.map +1 -0
  665. package/dist/obj/flavor.js +201 -0
  666. package/dist/obj/flavor.js.map +1 -0
  667. package/dist/obj/ignore.d.ts +143 -0
  668. package/dist/obj/ignore.d.ts.map +1 -0
  669. package/dist/obj/ignore.js +345 -0
  670. package/dist/obj/ignore.js.map +1 -0
  671. package/dist/obj/knowledge.d.ts +520 -0
  672. package/dist/obj/knowledge.d.ts.map +1 -0
  673. package/dist/obj/knowledge.js +1364 -0
  674. package/dist/obj/knowledge.js.map +1 -0
  675. package/dist/obj/known-object.d.ts +293 -0
  676. package/dist/obj/known-object.d.ts.map +1 -0
  677. package/dist/obj/known-object.js +532 -0
  678. package/dist/obj/known-object.js.map +1 -0
  679. package/dist/obj/make.d.ts +292 -0
  680. package/dist/obj/make.d.ts.map +1 -0
  681. package/dist/obj/make.js +1055 -0
  682. package/dist/obj/make.js.map +1 -0
  683. package/dist/obj/object-info.d.ts +188 -0
  684. package/dist/obj/object-info.d.ts.map +1 -0
  685. package/dist/obj/object-info.js +1407 -0
  686. package/dist/obj/object-info.js.map +1 -0
  687. package/dist/obj/object.d.ts +335 -0
  688. package/dist/obj/object.d.ts.map +1 -0
  689. package/dist/obj/object.js +1051 -0
  690. package/dist/obj/object.js.map +1 -0
  691. package/dist/obj/power.d.ts +65 -0
  692. package/dist/obj/power.d.ts.map +1 -0
  693. package/dist/obj/power.js +580 -0
  694. package/dist/obj/power.js.map +1 -0
  695. package/dist/obj/randart-build.d.ts +223 -0
  696. package/dist/obj/randart-build.d.ts.map +1 -0
  697. package/dist/obj/randart-build.js +1444 -0
  698. package/dist/obj/randart-build.js.map +1 -0
  699. package/dist/obj/randart-data.d.ts +179 -0
  700. package/dist/obj/randart-data.d.ts.map +1 -0
  701. package/dist/obj/randart-data.js +1153 -0
  702. package/dist/obj/randart-data.js.map +1 -0
  703. package/dist/obj/randart.d.ts +128 -0
  704. package/dist/obj/randart.d.ts.map +1 -0
  705. package/dist/obj/randart.js +458 -0
  706. package/dist/obj/randart.js.map +1 -0
  707. package/dist/obj/randname.d.ts +33 -0
  708. package/dist/obj/randname.d.ts.map +1 -0
  709. package/dist/obj/randname.js +116 -0
  710. package/dist/obj/randname.js.map +1 -0
  711. package/dist/obj/recharge.d.ts +28 -0
  712. package/dist/obj/recharge.d.ts.map +1 -0
  713. package/dist/obj/recharge.js +52 -0
  714. package/dist/obj/recharge.js.map +1 -0
  715. package/dist/obj/types.d.ts +584 -0
  716. package/dist/obj/types.d.ts.map +1 -0
  717. package/dist/obj/types.js +104 -0
  718. package/dist/obj/types.js.map +1 -0
  719. package/dist/obj/value.d.ts +64 -0
  720. package/dist/obj/value.d.ts.map +1 -0
  721. package/dist/obj/value.js +176 -0
  722. package/dist/obj/value.js.map +1 -0
  723. package/dist/player/abilities.d.ts +57 -0
  724. package/dist/player/abilities.d.ts.map +1 -0
  725. package/dist/player/abilities.js +118 -0
  726. package/dist/player/abilities.js.map +1 -0
  727. package/dist/player/best-digger.d.ts +42 -0
  728. package/dist/player/best-digger.d.ts.map +1 -0
  729. package/dist/player/best-digger.js +89 -0
  730. package/dist/player/best-digger.js.map +1 -0
  731. package/dist/player/bind.d.ts +270 -0
  732. package/dist/player/bind.d.ts.map +1 -0
  733. package/dist/player/bind.js +698 -0
  734. package/dist/player/bind.js.map +1 -0
  735. package/dist/player/birth.d.ts +258 -0
  736. package/dist/player/birth.d.ts.map +1 -0
  737. package/dist/player/birth.js +639 -0
  738. package/dist/player/birth.js.map +1 -0
  739. package/dist/player/calcs.d.ts +403 -0
  740. package/dist/player/calcs.d.ts.map +1 -0
  741. package/dist/player/calcs.js +1189 -0
  742. package/dist/player/calcs.js.map +1 -0
  743. package/dist/player/combat-regen.d.ts +14 -0
  744. package/dist/player/combat-regen.d.ts.map +1 -0
  745. package/dist/player/combat-regen.js +29 -0
  746. package/dist/player/combat-regen.js.map +1 -0
  747. package/dist/player/exp.d.ts +96 -0
  748. package/dist/player/exp.d.ts.map +1 -0
  749. package/dist/player/exp.js +229 -0
  750. package/dist/player/exp.js.map +1 -0
  751. package/dist/player/history.d.ts +91 -0
  752. package/dist/player/history.d.ts.map +1 -0
  753. package/dist/player/history.js +145 -0
  754. package/dist/player/history.js.map +1 -0
  755. package/dist/player/options.d.ts +123 -0
  756. package/dist/player/options.d.ts.map +1 -0
  757. package/dist/player/options.js +199 -0
  758. package/dist/player/options.js.map +1 -0
  759. package/dist/player/player.d.ts +242 -0
  760. package/dist/player/player.d.ts.map +1 -0
  761. package/dist/player/player.js +119 -0
  762. package/dist/player/player.js.map +1 -0
  763. package/dist/player/shape-lore.d.ts +56 -0
  764. package/dist/player/shape-lore.d.ts.map +1 -0
  765. package/dist/player/shape-lore.js +221 -0
  766. package/dist/player/shape-lore.js.map +1 -0
  767. package/dist/player/spell.d.ts +146 -0
  768. package/dist/player/spell.d.ts.map +1 -0
  769. package/dist/player/spell.js +519 -0
  770. package/dist/player/spell.js.map +1 -0
  771. package/dist/player/take-hit.d.ts +87 -0
  772. package/dist/player/take-hit.d.ts.map +1 -0
  773. package/dist/player/take-hit.js +99 -0
  774. package/dist/player/take-hit.js.map +1 -0
  775. package/dist/player/timed.d.ts +205 -0
  776. package/dist/player/timed.d.ts.map +1 -0
  777. package/dist/player/timed.js +310 -0
  778. package/dist/player/timed.js.map +1 -0
  779. package/dist/player/types.d.ts +390 -0
  780. package/dist/player/types.d.ts.map +1 -0
  781. package/dist/player/types.js +51 -0
  782. package/dist/player/types.js.map +1 -0
  783. package/dist/rational.d.ts +99 -0
  784. package/dist/rational.d.ts.map +1 -0
  785. package/dist/rational.js +345 -0
  786. package/dist/rational.js.map +1 -0
  787. package/dist/rng.d.ts +168 -0
  788. package/dist/rng.d.ts.map +1 -0
  789. package/dist/rng.js +404 -0
  790. package/dist/rng.js.map +1 -0
  791. package/dist/save/buffer.d.ts +120 -0
  792. package/dist/save/buffer.d.ts.map +1 -0
  793. package/dist/save/buffer.js +238 -0
  794. package/dist/save/buffer.js.map +1 -0
  795. package/dist/save/compress.d.ts +79 -0
  796. package/dist/save/compress.d.ts.map +1 -0
  797. package/dist/save/compress.js +97 -0
  798. package/dist/save/compress.js.map +1 -0
  799. package/dist/save/description.d.ts +61 -0
  800. package/dist/save/description.d.ts.map +1 -0
  801. package/dist/save/description.js +51 -0
  802. package/dist/save/description.js.map +1 -0
  803. package/dist/save/integrity.d.ts +59 -0
  804. package/dist/save/integrity.d.ts.map +1 -0
  805. package/dist/save/integrity.js +103 -0
  806. package/dist/save/integrity.js.map +1 -0
  807. package/dist/score/display.d.ts +40 -0
  808. package/dist/score/display.d.ts.map +1 -0
  809. package/dist/score/display.js +86 -0
  810. package/dist/score/display.js.map +1 -0
  811. package/dist/score/score.d.ts +166 -0
  812. package/dist/score/score.d.ts.map +1 -0
  813. package/dist/score/score.js +244 -0
  814. package/dist/score/score.js.map +1 -0
  815. package/dist/score/types.d.ts +98 -0
  816. package/dist/score/types.d.ts.map +1 -0
  817. package/dist/score/types.js +27 -0
  818. package/dist/score/types.js.map +1 -0
  819. package/dist/session/boot.d.ts +207 -0
  820. package/dist/session/boot.d.ts.map +1 -0
  821. package/dist/session/boot.js +151 -0
  822. package/dist/session/boot.js.map +1 -0
  823. package/dist/session/game.d.ts +257 -0
  824. package/dist/session/game.d.ts.map +1 -0
  825. package/dist/session/game.js +2880 -0
  826. package/dist/session/game.js.map +1 -0
  827. package/dist/session/save.d.ts +847 -0
  828. package/dist/session/save.d.ts.map +1 -0
  829. package/dist/session/save.js +1306 -0
  830. package/dist/session/save.js.map +1 -0
  831. package/dist/sound/engine.d.ts +146 -0
  832. package/dist/sound/engine.d.ts.map +1 -0
  833. package/dist/sound/engine.js +332 -0
  834. package/dist/sound/engine.js.map +1 -0
  835. package/dist/sound/index.d.ts +13 -0
  836. package/dist/sound/index.d.ts.map +1 -0
  837. package/dist/sound/index.js +13 -0
  838. package/dist/sound/index.js.map +1 -0
  839. package/dist/sound/sound-prefs-data.d.ts +10 -0
  840. package/dist/sound/sound-prefs-data.d.ts.map +1 -0
  841. package/dist/sound/sound-prefs-data.js +165 -0
  842. package/dist/sound/sound-prefs-data.js.map +1 -0
  843. package/dist/sound/types.d.ts +64 -0
  844. package/dist/sound/types.d.ts.map +1 -0
  845. package/dist/sound/types.js +23 -0
  846. package/dist/sound/types.js.map +1 -0
  847. package/dist/store/bind.d.ts +43 -0
  848. package/dist/store/bind.d.ts.map +1 -0
  849. package/dist/store/bind.js +130 -0
  850. package/dist/store/bind.js.map +1 -0
  851. package/dist/store/price.d.ts +27 -0
  852. package/dist/store/price.d.ts.map +1 -0
  853. package/dist/store/price.js +81 -0
  854. package/dist/store/price.js.map +1 -0
  855. package/dist/store/store-cmd.d.ts +51 -0
  856. package/dist/store/store-cmd.d.ts.map +1 -0
  857. package/dist/store/store-cmd.js +73 -0
  858. package/dist/store/store-cmd.js.map +1 -0
  859. package/dist/store/store.d.ts +156 -0
  860. package/dist/store/store.d.ts.map +1 -0
  861. package/dist/store/store.js +616 -0
  862. package/dist/store/store.js.map +1 -0
  863. package/dist/store/transact.d.ts +198 -0
  864. package/dist/store/transact.d.ts.map +1 -0
  865. package/dist/store/transact.js +383 -0
  866. package/dist/store/transact.js.map +1 -0
  867. package/dist/store/types.d.ts +101 -0
  868. package/dist/store/types.d.ts.map +1 -0
  869. package/dist/store/types.js +14 -0
  870. package/dist/store/types.js.map +1 -0
  871. package/dist/version.d.ts +25 -0
  872. package/dist/version.d.ts.map +1 -0
  873. package/dist/version.js +25 -0
  874. package/dist/version.js.map +1 -0
  875. package/dist/visuals/engine.d.ts +223 -0
  876. package/dist/visuals/engine.d.ts.map +1 -0
  877. package/dist/visuals/engine.js +357 -0
  878. package/dist/visuals/engine.js.map +1 -0
  879. package/dist/visuals/glyph-table.d.ts +112 -0
  880. package/dist/visuals/glyph-table.d.ts.map +1 -0
  881. package/dist/visuals/glyph-table.js +156 -0
  882. package/dist/visuals/glyph-table.js.map +1 -0
  883. package/dist/visuals/grafmode-data.d.ts +4 -0
  884. package/dist/visuals/grafmode-data.d.ts.map +1 -0
  885. package/dist/visuals/grafmode-data.js +88 -0
  886. package/dist/visuals/grafmode-data.js.map +1 -0
  887. package/dist/visuals/grafmode.d.ts +83 -0
  888. package/dist/visuals/grafmode.d.ts.map +1 -0
  889. package/dist/visuals/grafmode.js +82 -0
  890. package/dist/visuals/grafmode.js.map +1 -0
  891. package/dist/visuals/index.d.ts +19 -0
  892. package/dist/visuals/index.d.ts.map +1 -0
  893. package/dist/visuals/index.js +19 -0
  894. package/dist/visuals/index.js.map +1 -0
  895. package/dist/visuals/map-text.d.ts +79 -0
  896. package/dist/visuals/map-text.d.ts.map +1 -0
  897. package/dist/visuals/map-text.js +122 -0
  898. package/dist/visuals/map-text.js.map +1 -0
  899. package/dist/visuals/pref-expr.d.ts +56 -0
  900. package/dist/visuals/pref-expr.d.ts.map +1 -0
  901. package/dist/visuals/pref-expr.js +173 -0
  902. package/dist/visuals/pref-expr.js.map +1 -0
  903. package/dist/visuals/prefs.d.ts +280 -0
  904. package/dist/visuals/prefs.d.ts.map +1 -0
  905. package/dist/visuals/prefs.js +835 -0
  906. package/dist/visuals/prefs.js.map +1 -0
  907. package/dist/visuals/tile-prefs.d.ts +132 -0
  908. package/dist/visuals/tile-prefs.d.ts.map +1 -0
  909. package/dist/visuals/tile-prefs.js +105 -0
  910. package/dist/visuals/tile-prefs.js.map +1 -0
  911. package/dist/world/chunk.d.ts +195 -0
  912. package/dist/world/chunk.d.ts.map +1 -0
  913. package/dist/world/chunk.js +422 -0
  914. package/dist/world/chunk.js.map +1 -0
  915. package/dist/world/feature.d.ts +86 -0
  916. package/dist/world/feature.d.ts.map +1 -0
  917. package/dist/world/feature.js +153 -0
  918. package/dist/world/feature.js.map +1 -0
  919. package/dist/world/flow.d.ts +33 -0
  920. package/dist/world/flow.d.ts.map +1 -0
  921. package/dist/world/flow.js +115 -0
  922. package/dist/world/flow.js.map +1 -0
  923. package/dist/world/project.d.ts +176 -0
  924. package/dist/world/project.d.ts.map +1 -0
  925. package/dist/world/project.js +543 -0
  926. package/dist/world/project.js.map +1 -0
  927. package/dist/world/projection.d.ts +100 -0
  928. package/dist/world/projection.d.ts.map +1 -0
  929. package/dist/world/projection.js +152 -0
  930. package/dist/world/projection.js.map +1 -0
  931. package/dist/world/scatter.d.ts +25 -0
  932. package/dist/world/scatter.d.ts.map +1 -0
  933. package/dist/world/scatter.js +54 -0
  934. package/dist/world/scatter.js.map +1 -0
  935. package/dist/world/trap.d.ts +84 -0
  936. package/dist/world/trap.d.ts.map +1 -0
  937. package/dist/world/trap.js +106 -0
  938. package/dist/world/trap.js.map +1 -0
  939. package/dist/world/view.d.ts +60 -0
  940. package/dist/world/view.d.ts.map +1 -0
  941. package/dist/world/view.js +436 -0
  942. package/dist/world/view.js.map +1 -0
  943. package/dist/z-queue.d.ts +133 -0
  944. package/dist/z-queue.d.ts.map +1 -0
  945. package/dist/z-queue.js +283 -0
  946. package/dist/z-queue.js.map +1 -0
  947. package/package.json +75 -0
  948. package/src/agent/act.ts +114 -0
  949. package/src/agent/controller.ts +109 -0
  950. package/src/agent/events.ts +47 -0
  951. package/src/agent/index.ts +36 -0
  952. package/src/agent/perceive.ts +440 -0
  953. package/src/agent/types.ts +464 -0
  954. package/src/bitflag.ts +536 -0
  955. package/src/cmd.ts +547 -0
  956. package/src/color.ts +267 -0
  957. package/src/combat/brand-slay.ts +360 -0
  958. package/src/combat/hit.ts +471 -0
  959. package/src/combat/index.ts +15 -0
  960. package/src/combat/melee.ts +728 -0
  961. package/src/combat/mon-melee.ts +1153 -0
  962. package/src/combat/ranged.ts +397 -0
  963. package/src/constants.ts +324 -0
  964. package/src/dice.ts +467 -0
  965. package/src/effects/effect-choice.ts +32 -0
  966. package/src/effects/effect-info.ts +859 -0
  967. package/src/effects/effect.ts +560 -0
  968. package/src/effects/handlers.ts +452 -0
  969. package/src/effects/interpreter.ts +603 -0
  970. package/src/events.ts +317 -0
  971. package/src/expression.ts +360 -0
  972. package/src/game/cave-cmd.ts +1147 -0
  973. package/src/game/char-sheet.ts +557 -0
  974. package/src/game/chest.ts +348 -0
  975. package/src/game/context.ts +1218 -0
  976. package/src/game/curse-tick.ts +130 -0
  977. package/src/game/describe.ts +62 -0
  978. package/src/game/display.ts +838 -0
  979. package/src/game/dump-level.ts +114 -0
  980. package/src/game/effect-attack.ts +746 -0
  981. package/src/game/effect-detect.ts +542 -0
  982. package/src/game/effect-env.ts +252 -0
  983. package/src/game/effect-game-env.ts +86 -0
  984. package/src/game/effect-general.ts +1122 -0
  985. package/src/game/effect-item.ts +999 -0
  986. package/src/game/effect-melee.ts +557 -0
  987. package/src/game/effect-mon-origin.ts +196 -0
  988. package/src/game/effect-monster.ts +310 -0
  989. package/src/game/effect-summon.ts +161 -0
  990. package/src/game/effect-teleport.ts +645 -0
  991. package/src/game/effect-terrain.ts +881 -0
  992. package/src/game/energy.ts +61 -0
  993. package/src/game/equip-cmp.ts +476 -0
  994. package/src/game/floor.ts +524 -0
  995. package/src/game/gear.ts +1352 -0
  996. package/src/game/harness.ts +270 -0
  997. package/src/game/history.ts +78 -0
  998. package/src/game/ignore-cmd.ts +68 -0
  999. package/src/game/inscription-confirm.ts +115 -0
  1000. package/src/game/known.ts +960 -0
  1001. package/src/game/loop.ts +671 -0
  1002. package/src/game/lore-color.ts +108 -0
  1003. package/src/game/mon-cast.ts +409 -0
  1004. package/src/game/mon-cmd.ts +767 -0
  1005. package/src/game/mon-death.ts +459 -0
  1006. package/src/game/mon-group.ts +368 -0
  1007. package/src/game/mon-list.ts +213 -0
  1008. package/src/game/mon-message.ts +359 -0
  1009. package/src/game/mon-place.ts +1012 -0
  1010. package/src/game/mon-ranged.ts +405 -0
  1011. package/src/game/mon-shape.ts +161 -0
  1012. package/src/game/mon-side.ts +511 -0
  1013. package/src/game/monster-turn.ts +1750 -0
  1014. package/src/game/obj-cmd.ts +1970 -0
  1015. package/src/game/obj-list.ts +302 -0
  1016. package/src/game/object-inspect.ts +162 -0
  1017. package/src/game/pickup.ts +483 -0
  1018. package/src/game/player-path.ts +1434 -0
  1019. package/src/game/player-side.ts +555 -0
  1020. package/src/game/player-turn.ts +852 -0
  1021. package/src/game/project-cast.ts +766 -0
  1022. package/src/game/project-feat.ts +386 -0
  1023. package/src/game/project-monster.ts +407 -0
  1024. package/src/game/project-obj.ts +298 -0
  1025. package/src/game/project-player.ts +236 -0
  1026. package/src/game/quest.ts +248 -0
  1027. package/src/game/ranged-cmd.ts +417 -0
  1028. package/src/game/scheduler.ts +150 -0
  1029. package/src/game/spell-cmd.ts +404 -0
  1030. package/src/game/spoil.ts +562 -0
  1031. package/src/game/steal.ts +169 -0
  1032. package/src/game/take-hit-hooks.ts +152 -0
  1033. package/src/game/target-loop.ts +501 -0
  1034. package/src/game/target.ts +424 -0
  1035. package/src/game/thrust.ts +174 -0
  1036. package/src/game/trap.ts +791 -0
  1037. package/src/game/ui-entry.ts +2075 -0
  1038. package/src/game/wizard.ts +1760 -0
  1039. package/src/game/world.ts +786 -0
  1040. package/src/gen/cave.ts +2858 -0
  1041. package/src/gen/gen-monster.ts +592 -0
  1042. package/src/gen/generate.ts +523 -0
  1043. package/src/gen/room.ts +2213 -0
  1044. package/src/gen/util.ts +1958 -0
  1045. package/src/generated/dun-profiles.ts +30 -0
  1046. package/src/generated/effects.ts +241 -0
  1047. package/src/generated/elements.ts +62 -0
  1048. package/src/generated/equip-slots.ts +36 -0
  1049. package/src/generated/history-types.ts +34 -0
  1050. package/src/generated/ignore-types.ts +66 -0
  1051. package/src/generated/index.ts +33 -0
  1052. package/src/generated/kind-flags.ts +44 -0
  1053. package/src/generated/message.ts +320 -0
  1054. package/src/generated/mon-message.ts +138 -0
  1055. package/src/generated/mon-race-flags.ts +182 -0
  1056. package/src/generated/mon-spells.ts +198 -0
  1057. package/src/generated/mon-temp-flags.ts +34 -0
  1058. package/src/generated/mon-timed.ts +34 -0
  1059. package/src/generated/object-flags.ts +95 -0
  1060. package/src/generated/object-modifiers.ts +43 -0
  1061. package/src/generated/options.ts +104 -0
  1062. package/src/generated/origins.ts +64 -0
  1063. package/src/generated/parser-errors.ts +140 -0
  1064. package/src/generated/player-flags.ts +48 -0
  1065. package/src/generated/player-timed.ts +118 -0
  1066. package/src/generated/projections.ts +103 -0
  1067. package/src/generated/randart-properties.ts +202 -0
  1068. package/src/generated/room-flags.ts +21 -0
  1069. package/src/generated/rooms.ts +50 -0
  1070. package/src/generated/square-flags.ts +56 -0
  1071. package/src/generated/stats.ts +22 -0
  1072. package/src/generated/terrain-flags.ts +76 -0
  1073. package/src/generated/terrain.ts +62 -0
  1074. package/src/generated/trap-flags.ts +42 -0
  1075. package/src/generated/tvals.ts +84 -0
  1076. package/src/generated/ui-entry-renderers.ts +24 -0
  1077. package/src/guard.ts +70 -0
  1078. package/src/host/args.ts +334 -0
  1079. package/src/host/bridge.ts +193 -0
  1080. package/src/host/index.ts +18 -0
  1081. package/src/host/io.ts +239 -0
  1082. package/src/host/memory.ts +134 -0
  1083. package/src/host/raw.ts +190 -0
  1084. package/src/index.ts +250 -0
  1085. package/src/loc.ts +157 -0
  1086. package/src/mod/hooks.ts +278 -0
  1087. package/src/mod/ids.ts +390 -0
  1088. package/src/mod/registry-host.ts +258 -0
  1089. package/src/mod/save-blocks.ts +787 -0
  1090. package/src/mod/vocabulary.ts +0 -0
  1091. package/src/mon/bind.ts +899 -0
  1092. package/src/mon/desc.ts +212 -0
  1093. package/src/mon/knowledge-groups.ts +164 -0
  1094. package/src/mon/lore-describe.ts +1414 -0
  1095. package/src/mon/lore.ts +306 -0
  1096. package/src/mon/make.ts +422 -0
  1097. package/src/mon/monster.ts +161 -0
  1098. package/src/mon/predicate.ts +220 -0
  1099. package/src/mon/project-mon.ts +855 -0
  1100. package/src/mon/spell.ts +418 -0
  1101. package/src/mon/steal.ts +246 -0
  1102. package/src/mon/summon.ts +145 -0
  1103. package/src/mon/take-hit.ts +195 -0
  1104. package/src/mon/timed.ts +300 -0
  1105. package/src/mon/types.ts +286 -0
  1106. package/src/msg.ts +146 -0
  1107. package/src/obj/artifact-fake.ts +63 -0
  1108. package/src/obj/artifact-known.ts +69 -0
  1109. package/src/obj/bind.ts +1345 -0
  1110. package/src/obj/chest.ts +249 -0
  1111. package/src/obj/desc.ts +699 -0
  1112. package/src/obj/effects-info.ts +349 -0
  1113. package/src/obj/flavor.ts +256 -0
  1114. package/src/obj/ignore.ts +387 -0
  1115. package/src/obj/knowledge.ts +1577 -0
  1116. package/src/obj/known-object.ts +718 -0
  1117. package/src/obj/make.ts +1367 -0
  1118. package/src/obj/object-info.ts +1737 -0
  1119. package/src/obj/object.ts +1296 -0
  1120. package/src/obj/power.ts +674 -0
  1121. package/src/obj/randart-build.ts +1705 -0
  1122. package/src/obj/randart-data.ts +1344 -0
  1123. package/src/obj/randart.ts +552 -0
  1124. package/src/obj/randname.ts +128 -0
  1125. package/src/obj/recharge.ts +62 -0
  1126. package/src/obj/types.ts +559 -0
  1127. package/src/obj/value.ts +215 -0
  1128. package/src/player/abilities.ts +142 -0
  1129. package/src/player/best-digger.ts +118 -0
  1130. package/src/player/bind.ts +1021 -0
  1131. package/src/player/birth.ts +794 -0
  1132. package/src/player/calcs.ts +1522 -0
  1133. package/src/player/combat-regen.ts +33 -0
  1134. package/src/player/exp.ts +275 -0
  1135. package/src/player/history.ts +211 -0
  1136. package/src/player/options.ts +244 -0
  1137. package/src/player/player.ts +356 -0
  1138. package/src/player/shape-lore.ts +250 -0
  1139. package/src/player/spell.ts +627 -0
  1140. package/src/player/take-hit.ts +173 -0
  1141. package/src/player/timed.ts +482 -0
  1142. package/src/player/types.ts +415 -0
  1143. package/src/rational.ts +388 -0
  1144. package/src/rng.ts +476 -0
  1145. package/src/save/buffer.ts +287 -0
  1146. package/src/save/compress.ts +132 -0
  1147. package/src/save/description.ts +70 -0
  1148. package/src/save/integrity.ts +133 -0
  1149. package/src/score/display.ts +125 -0
  1150. package/src/score/score.ts +341 -0
  1151. package/src/score/types.ts +104 -0
  1152. package/src/session/boot.ts +338 -0
  1153. package/src/session/game.ts +3712 -0
  1154. package/src/session/save.ts +2074 -0
  1155. package/src/sound/engine.ts +375 -0
  1156. package/src/sound/index.ts +13 -0
  1157. package/src/sound/sound-prefs-data.ts +173 -0
  1158. package/src/sound/types.ts +68 -0
  1159. package/src/store/bind.ts +145 -0
  1160. package/src/store/price.ts +97 -0
  1161. package/src/store/store-cmd.ts +73 -0
  1162. package/src/store/store.ts +723 -0
  1163. package/src/store/transact.ts +644 -0
  1164. package/src/store/types.ts +110 -0
  1165. package/src/version.ts +26 -0
  1166. package/src/visuals/engine.ts +444 -0
  1167. package/src/visuals/glyph-table.ts +191 -0
  1168. package/src/visuals/grafmode-data.ts +90 -0
  1169. package/src/visuals/grafmode.ts +123 -0
  1170. package/src/visuals/index.ts +19 -0
  1171. package/src/visuals/map-text.ts +152 -0
  1172. package/src/visuals/pref-expr.ts +182 -0
  1173. package/src/visuals/prefs.ts +981 -0
  1174. package/src/visuals/tile-prefs.ts +183 -0
  1175. package/src/world/chunk.ts +531 -0
  1176. package/src/world/feature.ts +215 -0
  1177. package/src/world/flow.ts +128 -0
  1178. package/src/world/project.ts +687 -0
  1179. package/src/world/projection.ts +228 -0
  1180. package/src/world/scatter.ts +72 -0
  1181. package/src/world/trap.ts +155 -0
  1182. package/src/world/view.ts +513 -0
  1183. package/src/z-queue.ts +300 -0
@@ -0,0 +1,849 @@
1
+ /**
2
+ * The player's map knowledge, a reduction of the upstream player->cave twin
3
+ * chunk (cave.c cave_know_*, cave-square.c square_memorize / square_forget /
4
+ * square_know_pile / square_sense_pile, and cave-view.c note_spot).
5
+ *
6
+ * Upstream duplicates the whole chunk for the player's knowledge so memory
7
+ * can go stale (you remember the door you saw, not the open floor it has
8
+ * since become). This port keeps the same staleness property with a flat
9
+ * remembered-feat array plus a remembered-floor-object marker per grid;
10
+ * that is exactly what detection, magic mapping and the renderer's
11
+ * remembered-terrain display need. The full twin (known traps as objects,
12
+ * per-object known twins) rides later batches and is ledgered.
13
+ *
14
+ * noteSpots() is the note_spot pass over the current field of view: every
15
+ * SEEN grid is memorized with its floor pile. It then runs updateMonsters()
16
+ * - the faithful port of update_mon (mon-util.c) - to refresh every live
17
+ * monster's visibility flags from telepathy, infravision, see-invisible and
18
+ * illumination. The session and front end call it after every updateView.
19
+ *
20
+ * update_mon only READS MFLAG_MARK; the detection-fade lifecycle
21
+ * (MFLAG_MARK / MFLAG_SHOW clearing, game-world.c process_world) lives in
22
+ * tickMonsterMarks() until the world-clock port absorbs it.
23
+ */
24
+ import { FEAT, MFLAG, OF, RF, SQUARE, TF, TMD } from "../generated/index.js";
25
+ import { DDGRID_DDD, loc, locEq, locSum } from "../loc.js";
26
+ import { featIsBright, featIsGranite, featIsMagma, featIsPassable, featIsProjectable, featIsQuartz, } from "../world/chunk.js";
27
+ import { caveIlluminate } from "../gen/cave.js";
28
+ import { squareIsNoEsp, squareIsSeen, squareIsView, } from "../world/view.js";
29
+ import { getLore, loreCountU16 } from "../mon/lore.js";
30
+ import { monsterIsCamouflaged, monsterIsEspDetectable, monsterIsInView, monsterIsInvisible, monsterIsVisible, } from "../mon/predicate.js";
31
+ import { disturb } from "./player-path.js";
32
+ import { describeObject } from "./describe.js";
33
+ import { floorCarry, floorExcise, floorPile, squareHoldsObject } from "./floor.js";
34
+ import { noteSpotRevealTrap } from "./trap.js";
35
+ import { GEAR_LABELS, gearToLabel } from "./gear.js";
36
+ import { ODESC } from "../obj/desc.js";
37
+ import { monsterCarry } from "../mon/make.js";
38
+ import { objectCopy, tvalIsJewelry } from "../obj/object.js";
39
+ import { objectTouch, playerKnowsEgo } from "../obj/known-object.js";
40
+ import { NOOP_FLAVOR_AWARE_DEPS, OBJ_NOTICE, buildRuneList, objectRunesKnown, playerKnowObjectAwareness, } from "../obj/knowledge.js";
41
+ /** A blank (all-unknown) knowledge map for a fresh level. */
42
+ export function newKnownMap(width, height) {
43
+ return {
44
+ width,
45
+ height,
46
+ feat: new Int16Array(width * height).fill(-1),
47
+ objects: new Map(),
48
+ };
49
+ }
50
+ function gi(state, grid) {
51
+ return grid.y * state.chunk.width + grid.x;
52
+ }
53
+ /** square_memorize: remember the grid's current terrain. */
54
+ export function squareMemorize(state, grid) {
55
+ /* square_set_known_feat (cave-square.c:1274), the static setter behind both
56
+ * square_memorize (cave-square.c:1576) and square_forget (:1582): upstream
57
+ * writes player->cave->squares[y][x].feat; the port writes state.known.feat.
58
+ * The `c != cave` guard is structural here - there is only one known map. */
59
+ state.known.feat[gi(state, grid)] = state.chunk.feat(grid);
60
+ }
61
+ /**
62
+ * square_forget (cave-square.c:1580-1583): forget the grid's TERRAIN only.
63
+ * Upstream is `square_set_known_feat(c, grid, FEAT_NONE)` and nothing else -
64
+ * it does not touch the remembered object pile, and map_info's object loop
65
+ * (cave-map.c:155-169) is NOT gated on square_isknown, so an object remembered
66
+ * on a grid whose terrain has been forgotten stays on the player's map. The
67
+ * remembered pile is dropped only by forget_remembered_objects, i.e. through
68
+ * squareKnowPile / squareSensePile.
69
+ */
70
+ export function squareForget(state, grid) {
71
+ state.known.feat[gi(state, grid)] = -1;
72
+ }
73
+ /**
74
+ * cave_illuminate (cave-map.c L555), the runtime version: the generation-time
75
+ * flag subset (gen/cave.ts caveIlluminate) plus the player-knowledge half
76
+ * (square_memorize / square_forget), gated per grid on the same "light" test
77
+ * upstream computes over the 9-entry ddgrid_ddd (the 8 neighbors plus self,
78
+ * cave.c L72-73): a floor or stairs grid nearby makes the boundary worth
79
+ * remembering. RNG-free.
80
+ *
81
+ * DEFERRED: PU_UPDATE_VIEW | PU_MONSTERS and the PR_MAP / PR_MONLIST /
82
+ * PR_ITEMLIST redraws (cave-map.c L608-612) - the front end's updateView +
83
+ * noteSpots pass already runs unconditionally after every state-changing
84
+ * action (packages/web/src/main.ts), so there is no separate dirty-flag
85
+ * mechanism to set here, matching the other knowledge-writing effect handlers
86
+ * (game/effect-detect.ts) which don't re-trigger it either.
87
+ */
88
+ export function caveIlluminateKnown(state, daytime) {
89
+ const c = state.chunk;
90
+ /* Apply light or darkness (the flag subset, shared with generation). */
91
+ caveIlluminate(c, daytime);
92
+ /* The player-knowledge half: memorize / forget gated on adjacency light. */
93
+ for (let y = 0; y < c.height; y++) {
94
+ for (let x = 0; x < c.width; x++) {
95
+ const grid = loc(x, y);
96
+ /* Skip grids with no surrounding floors or stairs. */
97
+ let light = false;
98
+ for (let d = 0; d < 9; d++) {
99
+ const aGrid = locSum(grid, DDGRID_DDD[d]);
100
+ if (!c.inBoundsFully(aGrid))
101
+ continue;
102
+ if (c.isFloor(aGrid) || c.isStairs(aGrid)) {
103
+ light = true;
104
+ break;
105
+ }
106
+ }
107
+ if (daytime || !c.isFloor(grid)) {
108
+ if (light)
109
+ squareMemorize(state, grid);
110
+ }
111
+ else if (!featIsBright(c.features, c.feat(grid))) {
112
+ /* Like cave_unlight(), forget "boring" grids. */
113
+ if (c.isFloor(grid))
114
+ squareForget(state, grid);
115
+ }
116
+ }
117
+ }
118
+ /* Light shop doorways. */
119
+ for (let y = 0; y < c.height; y++) {
120
+ for (let x = 0; x < c.width; x++) {
121
+ const grid = loc(x, y);
122
+ if (!c.isShop(grid))
123
+ continue;
124
+ for (let i = 0; i < 8; i++) {
125
+ const aGrid = locSum(grid, DDGRID_DDD[i]);
126
+ if (c.inBounds(aGrid))
127
+ squareMemorize(state, aGrid);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * cave_known (cave-map.c:633-660): memorize town terrain except interior
134
+ * wall/lava regions.
135
+ *
136
+ * MUST run BEFORE caveIlluminateKnown, as generate.c:1547-1550 does. The order
137
+ * is load-bearing and not interchangeable: cave_illuminate writes player memory
138
+ * too -- square_memorize at cave-map.c:582 and, at night, square_forget on
139
+ * boring floor grids at :586-587. So upstream deliberately memorizes the whole
140
+ * town here and then lets night-time illumination FORGET the boring floors
141
+ * again. Running this second would leave a night town fully mapped, which is the
142
+ * opposite of upstream.
143
+ */
144
+ export function caveKnown(state) {
145
+ const c = state.chunk;
146
+ for (let y = 0; y < c.height; y++) {
147
+ for (let x = 0; x < c.width; x++) {
148
+ const grid = loc(x, y);
149
+ let count = 0;
150
+ for (let d = 0; d < 8; d++) {
151
+ const adjacent = locSum(grid, DDGRID_DDD[d]);
152
+ if (!c.isProjectable(adjacent) || featIsBright(c.features, c.feat(adjacent)))
153
+ count++;
154
+ }
155
+ if (count < 8)
156
+ squareMemorize(state, grid);
157
+ }
158
+ }
159
+ }
160
+ /** square_isknown: the player remembers some terrain here. */
161
+ export function squareIsKnown(state, grid) {
162
+ return state.known.feat[gi(state, grid)] >= 0;
163
+ }
164
+ /** The remembered feat at a grid (-1 = unknown). */
165
+ export function knownFeat(state, grid) {
166
+ return state.known.feat[gi(state, grid)];
167
+ }
168
+ /**
169
+ * square_isbelievedwall (cave-square.c L901-912): out-of-bounds is a wall,
170
+ * unknown terrain is not believed to be a wall, and known terrain is tested
171
+ * against the remembered feature rather than the live map.
172
+ */
173
+ export function squareIsBelievedWall(state, grid) {
174
+ if (!state.chunk.inBoundsFully(grid))
175
+ return true;
176
+ if (!squareIsKnown(state, grid))
177
+ return false;
178
+ return !featIsProjectable(state.chunk.features, knownFeat(state, grid));
179
+ }
180
+ /**
181
+ * square_isrubble(player->cave, grid): is the terrain the player REMEMBERS here
182
+ * rubble? Upstream freely runs the square predicates against player->cave to
183
+ * ask "what does the player think is there", which is how the bump-into-terrain
184
+ * paths decide whether their message contradicts the player's memory
185
+ * (cmd-cave.c:1112, :1243). Unknown terrain is not remembered as anything.
186
+ */
187
+ export function knownIsRubble(state, grid) {
188
+ const feat = knownFeat(state, grid);
189
+ if (feat < 0)
190
+ return false;
191
+ const reg = state.chunk.features;
192
+ return !reg.featHas(feat, TF["WALL"]) && reg.featHas(feat, TF["ROCK"]);
193
+ }
194
+ /**
195
+ * square_isperm(player->cave, grid): PERMANENT and ROCK, remembered.
196
+ * do_cmd_tunnel_test MEMORIZES rather than forgets on this one - hitting
197
+ * permanent rock the player did not know about teaches them it is there
198
+ * (cmd-cave.c:462-468).
199
+ */
200
+ export function knownIsPerm(state, grid) {
201
+ const feat = knownFeat(state, grid);
202
+ if (feat < 0)
203
+ return false;
204
+ const reg = state.chunk.features;
205
+ return reg.featHas(feat, TF["PERMANENT"]) && reg.featHas(feat, TF["ROCK"]);
206
+ }
207
+ /** square_isopendoor(player->cave, grid): a remembered closable door. */
208
+ export function knownIsOpenDoor(state, grid) {
209
+ const feat = knownFeat(state, grid);
210
+ if (feat < 0)
211
+ return false;
212
+ return state.chunk.features.featHas(feat, TF["CLOSABLE"]);
213
+ }
214
+ /** square_isbrokendoor(player->cave, grid): remembered, passable, unclosable. */
215
+ export function knownIsBrokenDoor(state, grid) {
216
+ const feat = knownFeat(state, grid);
217
+ if (feat < 0)
218
+ return false;
219
+ const reg = state.chunk.features;
220
+ return (reg.featHas(feat, TF["DOOR_ANY"]) &&
221
+ reg.featHas(feat, TF["PASSABLE"]) &&
222
+ !reg.featHas(feat, TF["CLOSABLE"]));
223
+ }
224
+ /**
225
+ * square_isdiggable(player->cave, grid): remembered mineral wall, secret door
226
+ * or rubble - square_ismineral || square_issecretdoor || square_isrubble
227
+ * (cave-square.c), evaluated on the remembered feature index.
228
+ */
229
+ export function knownIsDiggable(state, grid) {
230
+ const feat = knownFeat(state, grid);
231
+ if (feat < 0)
232
+ return false;
233
+ const reg = state.chunk.features;
234
+ const isDoor = reg.featHas(feat, TF["DOOR_ANY"]);
235
+ const mineral = featIsMagma(reg, feat) ||
236
+ featIsQuartz(reg, feat) ||
237
+ (featIsGranite(reg, feat) && !isDoor);
238
+ const secretDoor = featIsGranite(reg, feat) && isDoor;
239
+ return mineral || secretDoor || knownIsRubble(state, grid);
240
+ }
241
+ /**
242
+ * square_iscloseddoor(player->cave, grid): does the player REMEMBER a closed
243
+ * door here? The open / close / disarm tests use it to spot a stale memory - a
244
+ * remembered door where the real grid has none is forgotten rather than left to
245
+ * mislead the map (cmd-cave.c:160-163, :243-246).
246
+ */
247
+ export function knownIsClosedDoor(state, grid) {
248
+ const feat = knownFeat(state, grid);
249
+ if (feat < 0)
250
+ return false;
251
+ return state.chunk.features.featHas(feat, TF["DOOR_CLOSED"]);
252
+ }
253
+ /**
254
+ * square_ispassable || square_isrubble || square_iscloseddoor on player->cave
255
+ * (cmd-cave.c:1126-1128, :1253-1255): the player remembers something they could
256
+ * have walked into here. Discovering a wall instead means the memory was wrong
257
+ * and upstream forgets the grid.
258
+ */
259
+ export function knownIsEnterable(state, grid) {
260
+ const feat = knownFeat(state, grid);
261
+ if (feat < 0)
262
+ return false;
263
+ const reg = state.chunk.features;
264
+ return (featIsPassable(reg, feat) ||
265
+ knownIsRubble(state, grid) ||
266
+ reg.featHas(feat, TF["DOOR_CLOSED"]));
267
+ }
268
+ /**
269
+ * square_ismemorybad: the player remembers terrain here that no longer
270
+ * matches the live cave.
271
+ */
272
+ export function squareMemoryBad(state, grid) {
273
+ const known = state.known.feat[gi(state, grid)];
274
+ return known >= 0 && known !== state.chunk.feat(grid);
275
+ }
276
+ /** The remembered feat at a grid, or FEAT_NONE ("unknown grid") if unknown. */
277
+ function apparentFeat(state, grid) {
278
+ const f = knownFeat(state, grid);
279
+ return f >= 0 ? f : FEAT.NONE;
280
+ }
281
+ /** The mimic-resolved feature backing the grid's remembered terrain. */
282
+ function apparentFeature(state, grid) {
283
+ const f = state.chunk.features.get(apparentFeat(state, grid));
284
+ return f.mimic !== null ? state.chunk.features.get(f.mimic) : f;
285
+ }
286
+ /**
287
+ * square_apparent_name (cave-square.c): the mimic-resolved name of the
288
+ * grid's remembered terrain (the look/target UI's "You see <name>").
289
+ */
290
+ export function squareApparentName(state, grid) {
291
+ return apparentFeature(state, grid).name;
292
+ }
293
+ /**
294
+ * square_apparent_look_prefix (cave-square.c): the indefinite article (or a
295
+ * feature-specific override) that precedes squareApparentName. Overrides are
296
+ * reproduced verbatim from terrain.txt, trailing space and all - stores'
297
+ * "the entrance to the " carries one, LAVA's "some" does not (upstream data,
298
+ * not a port bug).
299
+ */
300
+ export function squareApparentLookPrefix(state, grid) {
301
+ const f = apparentFeature(state, grid);
302
+ if (f.lookPrefix)
303
+ return f.lookPrefix;
304
+ const c = f.name.charAt(0).toLowerCase();
305
+ return "aeiou".includes(c) ? "an " : "a ";
306
+ }
307
+ /**
308
+ * square_apparent_look_in_preposition (cave-square.c): the preposition (or a
309
+ * feature-specific override) used for the player's own grid ("You are
310
+ * <preposition><name>."). Overrides are reproduced verbatim from terrain.txt
311
+ * (e.g. doors' "in" carries no trailing space, unlike the "on " default).
312
+ */
313
+ export function squareApparentLookInPreposition(state, grid) {
314
+ const f = apparentFeature(state, grid);
315
+ return f.lookInPreposition || "on ";
316
+ }
317
+ /**
318
+ * square_isinteresting (cave-square.c), read against the player's knowledge
319
+ * (as target_accept and the look UI's terrain handler do): a memorized grid
320
+ * whose feature carries TF_INTERESTING.
321
+ */
322
+ export function squareIsInteresting(state, grid) {
323
+ if (!squareIsKnown(state, grid))
324
+ return false;
325
+ return state.chunk.features.featHas(knownFeat(state, grid), TF.INTERESTING);
326
+ }
327
+ /** The remembered floor object at a grid, if any. */
328
+ export function knownObject(state, grid) {
329
+ return state.known.objects.get(gi(state, grid)) ?? null;
330
+ }
331
+ function pileHead(state, grid, pred) {
332
+ const pile = state.floor.get(gi(state, grid));
333
+ if (!pile)
334
+ return null;
335
+ for (const obj of pile) {
336
+ if (!pred || pred(obj))
337
+ return obj;
338
+ }
339
+ return null;
340
+ }
341
+ /**
342
+ * square_know_pile (reduced): remember the (first matching) floor object
343
+ * exactly; forget a remembered object that is no longer there. Without a
344
+ * predicate the whole pile is considered (the note_spot case).
345
+ *
346
+ * forget_remembered_objects (cave-square.c:1106, called at :1156 and :1186):
347
+ * upstream walks player->cave's shadow pile and excises/deletes any known
348
+ * twin whose original is no longer on the grid. The port's knowledge is one
349
+ * glyph per grid (state.known.objects), so that whole walk collapses to the
350
+ * "nothing here any more -> delete the entry" branch at the end of this
351
+ * function and of squareSensePile.
352
+ */
353
+ export function squareKnowPile(state, grid, pred) {
354
+ /* object_touch (cave-square.c square_know_pile L1177-1181, obj-knowledge.c
355
+ * object_touch L960-972): only the pile on the player's OWN grid is "touched",
356
+ * which marks each object ASSESSED (revealing its combat bracket and, for an
357
+ * artifact, its name - the shadow gates both on ASSESSED), auto-notices the
358
+ * artifact, and logs the find (history_find_artifact). A detected/lit pile at
359
+ * a distance is only "seen", never touched, so it does not count as found -
360
+ * hence the player-grid gate here. (player_know_object's flavour-awareness
361
+ * side effect is the cross-object rune-learn sweep - updatePlayerObjectKnowledge
362
+ * below - fired at the live rune-learn sites, not here.) */
363
+ if (locEq(grid, state.actor.grid)) {
364
+ const pile = state.floor.get(gi(state, grid));
365
+ if (pile) {
366
+ for (const obj of pile) {
367
+ if (!pred || pred(obj)) {
368
+ objectTouch(obj, {
369
+ onArtifactFound: () => state.onArtifactFound?.(obj.artifact),
370
+ });
371
+ }
372
+ }
373
+ }
374
+ }
375
+ const head = pileHead(state, grid, pred);
376
+ if (head) {
377
+ state.known.objects.set(gi(state, grid), {
378
+ ch: head.kind.dChar,
379
+ attr: head.kind.dAttr,
380
+ });
381
+ }
382
+ else if (!pileHead(state, grid)) {
383
+ /* Nothing at all here: any memory is stale. */
384
+ state.known.objects.delete(gi(state, grid));
385
+ }
386
+ }
387
+ /**
388
+ * gear_to_label (obj-gear.c:443) for a held handle. The one implementation lives
389
+ * in game/gear.ts; equipment is handled by this module's callers (they know the
390
+ * body slot), so the two-argument form is what is wanted here.
391
+ */
392
+ function gearPackLabel(state, handle) {
393
+ return gearToLabel(state.gear, handle);
394
+ }
395
+ /**
396
+ * update_player_object_knowledge (obj-knowledge.c L1218): after any rune-learn,
397
+ * re-run player_know_object over every object the player can currently see or
398
+ * hold, so a newly-learned rune propagates awareness across ALL of them - not
399
+ * just the object that taught it. This is the sweep the audit's KN-03 flagged
400
+ * missing: e.g. wielding a Ring of Strength learns the STR modifier rune, and it
401
+ * is this sweep (not object_learn_on_wield itself) that then makes the ring's
402
+ * kind flavour-aware, so it stops reading as an unidentified "Steel Ring".
403
+ *
404
+ * The port keeps rune knowledge in typed player stores and synthesises each
405
+ * object's known-twin on demand for display, so the only persistent side effect
406
+ * that needs a home here is player_know_object's awareness half (L1163-1198): a
407
+ * carried/floor jewel whose non-curse runes are now all known becomes
408
+ * flavour-aware (L1163-1167, KN-03), a special artifact becomes aware outright
409
+ * (L1168-1175), and a first reveal of a name/ego prints "You have %s (%c)." /
410
+ * "On the ground: %s." (L1184-1198, KN-04).
411
+ *
412
+ * Scope vs upstream: flavour awareness is per-KIND and global to the game (the
413
+ * shared FlavorKnowledge), so making a kind aware from a carried jewel already
414
+ * covers every store / curse-template instance of that kind - the port need only
415
+ * sweep the player's gear and the floor, not the store/curse lists C also walks
416
+ * purely to rewrite their per-object display twins. Called at the live rune-learn
417
+ * sites (wield, being hit, identify), exactly where C's player_learn_rune
418
+ * tail-calls it (L1373).
419
+ */
420
+ export function updatePlayerObjectKnowledge(state) {
421
+ const flavor = state.flavorKnown;
422
+ if (!flavor)
423
+ return; // worldless harness: no flavour store to mutate.
424
+ const flavorDeps = state.flavorAwareDeps ?? NOOP_FLAVOR_AWARE_DEPS;
425
+ const env = state.runeEnv;
426
+ const p = state.actor.player;
427
+ const runes = buildRuneList(env);
428
+ const nonCurse = runes.filter((r) => r.variety !== "curse");
429
+ const know = (obj, report) => {
430
+ /* player_know_object early return (L1033): the unassessed get no ID. */
431
+ if ((obj.notice & OBJ_NOTICE.ASSESSED) === 0)
432
+ return;
433
+ /* seen defaults true (L1025); a first name/ego reveal sets it false. */
434
+ let seen = true;
435
+ /* Ego branch (L1156-1161): a newly-known ego reports unless its ego was
436
+ * already everseen. */
437
+ if (obj.ego && playerKnowsEgo(p, obj.ego, obj, env)) {
438
+ seen = state.everseen ? state.everseen.egoSeen(obj.ego) : true;
439
+ }
440
+ /* Jewelry / special-artifact awareness (L1163-1175). playerKnowObjectAwareness
441
+ * fires object_flavor_aware for both; the `seen` reads below mirror its
442
+ * conditions (from the same objectRunesKnown / kidx tests) purely to decide
443
+ * whether to print the report. */
444
+ if (tvalIsJewelry(obj.tval)) {
445
+ if (objectRunesKnown(p, env, obj, nonCurse)) {
446
+ seen = obj.artifact
447
+ ? true
448
+ : state.everseen
449
+ ? state.everseen.kindSeen(obj.kind)
450
+ : true;
451
+ }
452
+ }
453
+ else if (obj.kind.kidx >= flavor.ordinaryKindMax) {
454
+ seen = true; // L1173: special artifacts never report from this branch.
455
+ }
456
+ /* The awareness mutation itself (idempotent across repeated sweeps). */
457
+ playerKnowObjectAwareness(p, env, obj, runes, flavor, flavorDeps);
458
+ /* Report on new stuff (L1184-1198). describeObject marks kind/ego everseen
459
+ * (obj-desc.c L633-637), exactly as C's object_desc does at L1190. */
460
+ if (!seen)
461
+ report(describeObject(state, obj, ODESC.PREFIX | ODESC.FULL));
462
+ };
463
+ /* Level objects first (L1223-1226: cave->objects), matching C's order so a
464
+ * floor instance wins the first-reveal report over a carried one of the same
465
+ * (now-everseen) kind. */
466
+ for (const pile of state.floor.values()) {
467
+ for (const obj of pile) {
468
+ /* Every level object becomes known, but the REPORT is gated on
469
+ * square_holds_object(cave, p->grid, obj) (L1193) - only what is under the
470
+ * player's feet is announced. The port used to announce every pile on the
471
+ * level, so learning one rune could name objects across the whole floor. */
472
+ know(obj, (name) => {
473
+ if (squareHoldsObject(state, state.actor.grid, obj)) {
474
+ state.msg?.(`On the ground: ${name}.`);
475
+ }
476
+ });
477
+ }
478
+ }
479
+ /* Player objects (L1229 walks p->gear; the port splits it into equipment +
480
+ * pack). */
481
+ const equip = p.equipment;
482
+ for (let slot = 0; slot < equip.length; slot++) {
483
+ const handle = equip[slot] ?? 0;
484
+ if (!handle)
485
+ continue;
486
+ const obj = state.gear.store.get(handle);
487
+ if (!obj)
488
+ continue;
489
+ const label = GEAR_LABELS[slot] ?? ""; // equipped_item_slot -> label (L452).
490
+ know(obj, (name) => state.msg?.(`You have ${name} (${label}).`));
491
+ }
492
+ for (const handle of state.gear.pack) {
493
+ const obj = state.gear.store.get(handle);
494
+ if (!obj)
495
+ continue;
496
+ const label = gearPackLabel(state, handle);
497
+ know(obj, (name) => state.msg?.(`You have ${name} (${label}).`));
498
+ }
499
+ /* autoinscribe_ground + autoinscribe_pack (obj-knowledge.c:1245-1247): the
500
+ * tail of update_player_object_knowledge. This is where learning a rune
501
+ * stamps its autoinscription onto everything the player can already see or
502
+ * carry, and where a newly-aware kind's note lands. Reached through the
503
+ * state seam because obj-cmd.ts imports this module. */
504
+ state.autoinscribeAll?.();
505
+ }
506
+ /**
507
+ * square_sense_pile (reduced): become aware that something matching is
508
+ * here without learning what (the null-glyph marker), keeping an exact
509
+ * memory if one exists; forget stale memories like squareKnowPile.
510
+ */
511
+ export function squareSensePile(state, grid, pred) {
512
+ const idx = gi(state, grid);
513
+ const head = pileHead(state, grid, pred);
514
+ if (head) {
515
+ const existing = state.known.objects.get(idx);
516
+ if (!existing || existing.ch === null) {
517
+ state.known.objects.set(idx, { ch: null, attr: "" });
518
+ }
519
+ }
520
+ else if (!pileHead(state, grid)) {
521
+ state.known.objects.delete(idx);
522
+ }
523
+ }
524
+ /* forgetMap (a whole-map "forget everything + wipe DTRAP" pass) was removed:
525
+ * 4.2.6 has no such function. It existed only to back wiz_dark, and wiz_dark
526
+ * (cave-map.c:490-546) does the OPPOSITE - it memorizes terrain exactly as
527
+ * wiz_light does and only perma-darkens the grids. See game/effect-terrain.ts
528
+ * wizLightLevel. */
529
+ /** OPT(player, disturb_near): shipped default true (options.c). */
530
+ function disturbNear(state) {
531
+ return state.options?.get("disturb_near") ?? true;
532
+ }
533
+ /**
534
+ * update_mon (mon-util.c): recompute a single monster's visibility. When
535
+ * `full`, recompute its distance to the player (mon->cdis); otherwise use the
536
+ * stored one. Sets MFLAG_VISIBLE / MFLAG_VIEW from telepathy, infravision,
537
+ * see-invisible and illumination, learns the associated lore flags, and
538
+ * disturbs the player on appearance / disappearance. Draws no RNG.
539
+ *
540
+ * The player's derived flags (OF_TELEPATHY / OF_SEE_INVIS) and see_infra come
541
+ * from the last calc_bonuses (state.playerState); the blind check reads
542
+ * player->timed[TMD_BLIND] directly. update_mon only READS MFLAG_MARK - the
543
+ * MARK / SHOW detection-fade lives in tickMonsterMarks.
544
+ */
545
+ export function updateMon(state, mon, full) {
546
+ const c = state.chunk;
547
+ const lore = getLore(state.lore, mon.race);
548
+ /* If still generating the level, measure distances from the middle
549
+ * (character_dungeon); a live refresh always uses the player's grid. */
550
+ const pgrid = state.playing
551
+ ? state.actor.grid
552
+ : loc(Math.trunc(c.width / 2), Math.trunc(c.height / 2));
553
+ /* Seen at all. */
554
+ let flag = false;
555
+ /* Seen by vision. */
556
+ let easy = false;
557
+ /* ESP permitted, see-invisible and infravision come from the derived
558
+ * player state (racial / class innate flags, worn equipment, and the timed
559
+ * player_flags_timed / see_infra bumps all flow through calc_bonuses). With
560
+ * no derived state (worldless harness) fall back to a bare character: no OF
561
+ * flags, racial infravision only. */
562
+ const ps = state.playerState;
563
+ let telepathyOk = ps ? ps.flags.has(OF.TELEPATHY) : false;
564
+ const seeInvis = ps ? ps.flags.has(OF.SEE_INVIS) : false;
565
+ const seeInfra = ps ? ps.seeInfra : state.actor.player.race.infravision;
566
+ /* Compute distance, or just use the current one. */
567
+ let d;
568
+ if (full) {
569
+ const dy = Math.abs(pgrid.y - mon.grid.y);
570
+ const dx = Math.abs(pgrid.x - mon.grid.x);
571
+ d = dy > dx ? dy + (dx >> 1) : dx + (dy >> 1);
572
+ if (d > 255)
573
+ d = 255;
574
+ mon.cdis = d;
575
+ }
576
+ else {
577
+ d = mon.cdis;
578
+ }
579
+ /* Detected (read-only: the MARK / SHOW fade belongs to tickMonsterMarks). */
580
+ if (mon.mflag.has(MFLAG.MARK))
581
+ flag = true;
582
+ /* Check if telepathy works here. */
583
+ if (squareIsNoEsp(c, mon.grid) || squareIsNoEsp(c, pgrid)) {
584
+ telepathyOk = false;
585
+ }
586
+ /* Nearby. */
587
+ if (d <= state.z.maxSight) {
588
+ /* Basic telepathy. */
589
+ if (telepathyOk && monsterIsEspDetectable(mon)) {
590
+ flag = true;
591
+ /* Check for LOS so that MFLAG_VIEW is set later. */
592
+ if (squareIsView(c, mon.grid))
593
+ easy = true;
594
+ }
595
+ /* Normal line of sight and player is not blind. */
596
+ if (squareIsView(c, mon.grid) && !state.actor.player.timed[TMD.BLIND]) {
597
+ /* Use "infravision". */
598
+ if (d <= seeInfra) {
599
+ /* Learn about warm / cold blood. */
600
+ lore.flags.on(RF.COLD_BLOOD);
601
+ if (!mon.race.flags.has(RF.COLD_BLOOD)) {
602
+ easy = flag = true;
603
+ }
604
+ }
605
+ /* Use illumination. */
606
+ if (squareIsSeen(c, mon.grid)) {
607
+ /* Learn about invisibility. */
608
+ lore.flags.on(RF.INVISIBLE);
609
+ if (monsterIsInvisible(mon)) {
610
+ /* See invisible. */
611
+ if (seeInvis)
612
+ easy = flag = true;
613
+ }
614
+ else {
615
+ easy = flag = true;
616
+ }
617
+ }
618
+ /* path_analyse (learn intervening-square terrain): DEFERRED. */
619
+ }
620
+ }
621
+ /* If a mimic looks like an ignored item, it's not seen (mon-util.c L394):
622
+ * if (monster_is_mimicking(mon) && ignore_item_ok(player, obj))
623
+ * easy = flag = false;
624
+ * mon.mimickedObj is always 0 until mimic placement is generated, so the
625
+ * guard never fires; resolving the handle to a GameObject is DEFERRED with
626
+ * that work. */
627
+ /* Is the monster now visible? */
628
+ if (flag) {
629
+ /* Learn about the monster's mind. */
630
+ if (telepathyOk) {
631
+ lore.flags.on(RF.EMPTY_MIND);
632
+ lore.flags.on(RF.WEIRD_MIND);
633
+ lore.flags.on(RF.SMART);
634
+ lore.flags.on(RF.STUPID);
635
+ }
636
+ /* It was previously unseen. */
637
+ if (!monsterIsVisible(mon)) {
638
+ mon.mflag.on(MFLAG.VISIBLE);
639
+ /* square_light_spot / PR_HEALTH / PR_MONLIST are presentation (#25). */
640
+ /* Count "fresh" sightings (capped at SHRT_MAX). */
641
+ loreCountU16(lore, "sights");
642
+ }
643
+ }
644
+ else if (monsterIsVisible(mon)) {
645
+ /* Not visible but was previously seen. With mimickedObj always 0 the
646
+ * mimic caveat (!mon->mimicked_obj || ignore_item_ok) always clears. */
647
+ if (mon.mimickedObj === 0) {
648
+ mon.mflag.off(MFLAG.VISIBLE);
649
+ }
650
+ }
651
+ /* Is the monster now easily visible? */
652
+ if (easy) {
653
+ if (!monsterIsInView(mon)) {
654
+ mon.mflag.on(MFLAG.VIEW);
655
+ /* Disturb on appearance. */
656
+ if (disturbNear(state))
657
+ disturb(state);
658
+ }
659
+ }
660
+ else {
661
+ if (monsterIsInView(mon)) {
662
+ mon.mflag.off(MFLAG.VIEW);
663
+ /* Disturb on disappearance (but not for a camouflaged monster). */
664
+ if (disturbNear(state) && !monsterIsCamouflaged(mon))
665
+ disturb(state);
666
+ }
667
+ }
668
+ }
669
+ /**
670
+ * become_aware (mon-util.c L711): reveal a camouflaged mimic. Clears
671
+ * MFLAG_CAMOUFLAGE and, when the race has RF_UNAWARE, learns that flag into
672
+ * its lore. If the monster was mimicking a floor object, names it (ODESC_BASE)
673
+ * in a message when its square is seen, breaks the mimicry link on both
674
+ * sides, removes the fake item from the floor, and refreshes the monster's
675
+ * own visibility now that mimicry no longer masks it (update_mon). A no-op
676
+ * monster that is not camouflaged. Draws no RNG.
677
+ *
678
+ * Object-mimic placement is wired for live-placed (summoned / bred) mimics
679
+ * via game/mon-place.ts monCreateMimickedObject, which links mon.mimickedObj
680
+ * and the object's mimickingMIdx back-reference at the monster's grid; the
681
+ * object branch below fires for those and for any hand-built Monster/
682
+ * GameObject pair in tests. (SEAM: generation-spawned mimics still need the
683
+ * handoff to call monCreateMimickedObject - see that function's docstring.)
684
+ *
685
+ * RF_MIMIC_INV's "give the monster a copy of the object before deleting it"
686
+ * (mon-util.c L740-758) is now ported via obj/object.ts objectCopy (memcpy, no
687
+ * RNG); only the known twin is DEFERRED with the knowledge subsystem. The
688
+ * upkeep/redraw bits (PU_UPDATE_VIEW | PU_MONSTERS, PR_MONLIST | PR_ITEMLIST,
689
+ * square_note_spot, square_light_spot) are presentation (#25), matching the
690
+ * redraw deferral already noted for updateMon above.
691
+ */
692
+ export function becomeAware(state, mon) {
693
+ if (!monsterIsCamouflaged(mon))
694
+ return;
695
+ mon.mflag.off(MFLAG.CAMOUFLAGE);
696
+ const lore = getLore(state.lore, mon.race);
697
+ if (mon.race.flags.has(RF.UNAWARE))
698
+ lore.flags.on(RF.UNAWARE);
699
+ if (mon.mimickedObj !== 0) {
700
+ const obj = floorPile(state, mon.grid).find((o) => o.mimickingMIdx === mon.midx);
701
+ if (obj && obj.grid) {
702
+ const name = describeObject(state, obj, ODESC.BASE);
703
+ if (squareIsSeen(state.chunk, obj.grid)) {
704
+ state.msg?.(`The ${name} was really a monster!`);
705
+ }
706
+ /* Clear the mimicry. */
707
+ obj.mimickingMIdx = 0;
708
+ mon.mimickedObj = 0;
709
+ /* Give a copy of the object to the monster if appropriate
710
+ * (mon-util.c L740-758). object_copy is a memcpy (draws no RNG); the
711
+ * known twin (given->known) is DEFERRED with the knowledge subsystem
712
+ * (obj/object.ts module docs), so only the base object is copied. The
713
+ * port's monsterCarry always succeeds (it prepends to heldObj), so the
714
+ * upstream carry-failed delete branch (L751-757) is unreachable and
715
+ * omitted. */
716
+ if (mon.race.flags.has(RF.MIMIC_INV)) {
717
+ const given = objectCopy(obj);
718
+ monsterCarry(mon.heldObj, given, mon.midx);
719
+ }
720
+ /* Delete the mimicked object; lighting/noting done via update_mon. */
721
+ floorExcise(state, obj.grid, obj);
722
+ /* Since mimicry affects visibility, update that. */
723
+ updateMon(state, mon, false);
724
+ }
725
+ }
726
+ }
727
+ /**
728
+ * move_mimicked_object (mon-util.c L620-650): move the fake floor object with
729
+ * a camouflaged monster swap. The copied object keeps its mimic back-link;
730
+ * if the destination cannot carry it, RF_MIMIC_INV gives it to the monster.
731
+ * This operation is presentation/RNG-free.
732
+ */
733
+ export function moveMimickedObject(state, mon, from, to) {
734
+ if (mon.mimickedObj === 0)
735
+ return;
736
+ const obj = floorPile(state, from).find((o) => o.mimickingMIdx === mon.midx);
737
+ if (!obj)
738
+ return;
739
+ const moved = objectCopy(obj);
740
+ if (!floorCarry(state, to, moved)) {
741
+ if (mon.race.flags.has(RF.MIMIC_INV)) {
742
+ monsterCarry(mon.heldObj, moved, mon.midx);
743
+ }
744
+ }
745
+ floorExcise(state, from, obj);
746
+ if (!floorPile(state, to).some((o) => o.mimickingMIdx === mon.midx)) {
747
+ mon.mimickedObj = 0;
748
+ }
749
+ }
750
+ /** update_monsters (mon-util.c): update every live (non-dead) monster. */
751
+ export function updateMonsters(state, full) {
752
+ for (let i = 1; i < state.monsters.length; i++) {
753
+ const mon = state.monsters[i];
754
+ if (!mon)
755
+ continue;
756
+ updateMon(state, mon, full);
757
+ }
758
+ }
759
+ /**
760
+ * The five player fields updateView reads, taken off a live GameState.
761
+ *
762
+ * One definition because there were two, and they agreed on the wrong thing.
763
+ * `level` is `p->lev` (cave-view.c:778, the UNLIGHT view radius
764
+ * `2 + p->lev / 6 - cur_light`), and both the web shell and the MCP session were
765
+ * passing `chunk.depth` - the dungeon depth. Only an UNLIGHT player carrying no
766
+ * light can see the difference, which is exactly the kind of field that stays
767
+ * wrong for a year in two copies and is right once in one.
768
+ */
769
+ export function viewerStateOf(state) {
770
+ const actor = state.actor;
771
+ return {
772
+ grid: actor.grid,
773
+ curLight: actor.light,
774
+ blind: (actor.player.timed[TMD.BLIND] ?? 0) > 0,
775
+ hasUnlight: actor.unlight,
776
+ level: actor.player.lev,
777
+ };
778
+ }
779
+ /**
780
+ * note_spot pass: memorize every currently seen grid with its floor pile,
781
+ * then refresh all monster visibility via update_mon.
782
+ *
783
+ * Called after every updateView. Upstream, movement sets PU_DISTANCE and
784
+ * update() runs update_monsters(TRUE) - cdis and visibility recompute in one
785
+ * pass - while a view-only change runs update_monsters(FALSE). Since cdis is
786
+ * purely geometric (idempotent when nothing moved, correct when the player
787
+ * did), noteSpots recomputes it here (full=true) so the d <= max_sight and
788
+ * d <= see_infra gates never read a stale distance after a step.
789
+ */
790
+ export function noteSpots(state) {
791
+ const c = state.chunk;
792
+ /*
793
+ * Blind forget of the current non-passable remembered square
794
+ * (cave-view.c:894-897): when blind and the player grid is known as
795
+ * impassable in map memory, forget it. Lives here (not pure view.ts)
796
+ * because it mutates KnownMap; called immediately after every updateView.
797
+ */
798
+ if ((state.actor.player.timed[TMD.BLIND] ?? 0) > 0) {
799
+ const pgrid = state.actor.grid;
800
+ if (squareIsKnown(state, pgrid)) {
801
+ const feat = knownFeat(state, pgrid);
802
+ if (feat >= 0 && !featIsPassable(c.features, feat)) {
803
+ squareForget(state, pgrid);
804
+ }
805
+ }
806
+ }
807
+ for (let y = 0; y < c.height; y++) {
808
+ for (let x = 0; x < c.width; x++) {
809
+ const grid = { x, y };
810
+ if (!squareIsSeen(c, grid))
811
+ continue;
812
+ squareMemorize(state, grid);
813
+ squareKnowPile(state, grid);
814
+ /* Notice secret traps on the newly-seen grid (cave-map.c square_note_spot
815
+ * L236-238 / cave-view.c update_one L840-842). */
816
+ noteSpotRevealTrap(state, grid);
817
+ }
818
+ }
819
+ updateMonsters(state, true);
820
+ }
821
+ /**
822
+ * The MFLAG_NICE / MFLAG_MARK / MFLAG_SHOW housekeeping process_world runs at
823
+ * the end of a player turn (game-world.c:882-908): clear NICE; where a monster
824
+ * is MARKed but no longer SHOWn, drop the mark and re-run update_mon; then
825
+ * clear every SHOW. This keeps a freshly detected monster displayed for one
826
+ * more refresh before fading. Interim home until the world-clock / process_world
827
+ * port absorbs it (the NICE clear must be preserved when it does).
828
+ */
829
+ export function tickMonsterMarks(state) {
830
+ /* Clear NICE flag, and show marked monsters. */
831
+ for (let i = 1; i < state.monsters.length; i++) {
832
+ const mon = state.monsters[i];
833
+ if (!mon)
834
+ continue;
835
+ mon.mflag.off(MFLAG.NICE);
836
+ if (mon.mflag.has(MFLAG.MARK) && !mon.mflag.has(MFLAG.SHOW)) {
837
+ mon.mflag.off(MFLAG.MARK);
838
+ updateMon(state, mon, false);
839
+ }
840
+ }
841
+ /* Clear SHOW flag. */
842
+ for (let i = 1; i < state.monsters.length; i++) {
843
+ const mon = state.monsters[i];
844
+ if (!mon)
845
+ continue;
846
+ mon.mflag.off(MFLAG.SHOW);
847
+ }
848
+ }
849
+ //# sourceMappingURL=known.js.map