@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.
- package/LICENSE.md +43 -0
- package/README.md +80 -0
- package/dist/agent/act.d.ts +22 -0
- package/dist/agent/act.d.ts.map +1 -0
- package/dist/agent/act.js +88 -0
- package/dist/agent/act.js.map +1 -0
- package/dist/agent/controller.d.ts +34 -0
- package/dist/agent/controller.d.ts.map +1 -0
- package/dist/agent/controller.js +90 -0
- package/dist/agent/controller.js.map +1 -0
- package/dist/agent/events.d.ts +27 -0
- package/dist/agent/events.d.ts.map +1 -0
- package/dist/agent/events.js +31 -0
- package/dist/agent/events.js.map +1 -0
- package/dist/agent/index.d.ts +17 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +15 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/perceive.d.ts +21 -0
- package/dist/agent/perceive.d.ts.map +1 -0
- package/dist/agent/perceive.js +386 -0
- package/dist/agent/perceive.js.map +1 -0
- package/dist/agent/types.d.ts +436 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +63 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bitflag.d.ts +199 -0
- package/dist/bitflag.d.ts.map +1 -0
- package/dist/bitflag.js +478 -0
- package/dist/bitflag.js.map +1 -0
- package/dist/cmd.d.ts +164 -0
- package/dist/cmd.d.ts.map +1 -0
- package/dist/cmd.js +350 -0
- package/dist/cmd.js.map +1 -0
- package/dist/color.d.ts +104 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +240 -0
- package/dist/color.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +119 -0
- package/dist/combat/brand-slay.d.ts.map +1 -0
- package/dist/combat/brand-slay.js +264 -0
- package/dist/combat/brand-slay.js.map +1 -0
- package/dist/combat/hit.d.ts +198 -0
- package/dist/combat/hit.d.ts.map +1 -0
- package/dist/combat/hit.js +310 -0
- package/dist/combat/hit.js.map +1 -0
- package/dist/combat/index.d.ts +15 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +15 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/combat/melee.d.ts +261 -0
- package/dist/combat/melee.d.ts.map +1 -0
- package/dist/combat/melee.js +402 -0
- package/dist/combat/melee.js.map +1 -0
- package/dist/combat/mon-melee.d.ts +233 -0
- package/dist/combat/mon-melee.d.ts.map +1 -0
- package/dist/combat/mon-melee.js +883 -0
- package/dist/combat/mon-melee.js.map +1 -0
- package/dist/combat/ranged.d.ts +89 -0
- package/dist/combat/ranged.d.ts.map +1 -0
- package/dist/combat/ranged.js +253 -0
- package/dist/combat/ranged.js.map +1 -0
- package/dist/constants.d.ts +134 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +171 -0
- package/dist/constants.js.map +1 -0
- package/dist/dice.d.ts +91 -0
- package/dist/dice.d.ts.map +1 -0
- package/dist/dice.js +424 -0
- package/dist/dice.js.map +1 -0
- package/dist/effects/effect-choice.d.ts +15 -0
- package/dist/effects/effect-choice.d.ts.map +1 -0
- package/dist/effects/effect-choice.js +18 -0
- package/dist/effects/effect-choice.js.map +1 -0
- package/dist/effects/effect-info.d.ts +124 -0
- package/dist/effects/effect-info.d.ts.map +1 -0
- package/dist/effects/effect-info.js +706 -0
- package/dist/effects/effect-info.js.map +1 -0
- package/dist/effects/effect.d.ts +165 -0
- package/dist/effects/effect.d.ts.map +1 -0
- package/dist/effects/effect.js +452 -0
- package/dist/effects/effect.js.map +1 -0
- package/dist/effects/handlers.d.ts +70 -0
- package/dist/effects/handlers.d.ts.map +1 -0
- package/dist/effects/handlers.js +394 -0
- package/dist/effects/handlers.js.map +1 -0
- package/dist/effects/interpreter.d.ts +291 -0
- package/dist/effects/interpreter.d.ts.map +1 -0
- package/dist/effects/interpreter.js +325 -0
- package/dist/effects/interpreter.js.map +1 -0
- package/dist/events.d.ts +188 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +138 -0
- package/dist/events.js.map +1 -0
- package/dist/expression.d.ts +83 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +333 -0
- package/dist/expression.js.map +1 -0
- package/dist/game/cave-cmd.d.ts +195 -0
- package/dist/game/cave-cmd.d.ts.map +1 -0
- package/dist/game/cave-cmd.js +968 -0
- package/dist/game/cave-cmd.js.map +1 -0
- package/dist/game/char-sheet.d.ts +189 -0
- package/dist/game/char-sheet.d.ts.map +1 -0
- package/dist/game/char-sheet.js +381 -0
- package/dist/game/char-sheet.js.map +1 -0
- package/dist/game/chest.d.ts +94 -0
- package/dist/game/chest.d.ts.map +1 -0
- package/dist/game/chest.js +267 -0
- package/dist/game/chest.js.map +1 -0
- package/dist/game/context.d.ts +970 -0
- package/dist/game/context.d.ts.map +1 -0
- package/dist/game/context.js +353 -0
- package/dist/game/context.js.map +1 -0
- package/dist/game/curse-tick.d.ts +35 -0
- package/dist/game/curse-tick.d.ts.map +1 -0
- package/dist/game/curse-tick.js +100 -0
- package/dist/game/curse-tick.js.map +1 -0
- package/dist/game/describe.d.ts +20 -0
- package/dist/game/describe.d.ts.map +1 -0
- package/dist/game/describe.js +45 -0
- package/dist/game/describe.js.map +1 -0
- package/dist/game/display.d.ts +196 -0
- package/dist/game/display.d.ts.map +1 -0
- package/dist/game/display.js +684 -0
- package/dist/game/display.js.map +1 -0
- package/dist/game/dump-level.d.ts +37 -0
- package/dist/game/dump-level.d.ts.map +1 -0
- package/dist/game/dump-level.js +110 -0
- package/dist/game/dump-level.js.map +1 -0
- package/dist/game/effect-attack.d.ts +36 -0
- package/dist/game/effect-attack.d.ts.map +1 -0
- package/dist/game/effect-attack.js +694 -0
- package/dist/game/effect-attack.js.map +1 -0
- package/dist/game/effect-detect.d.ts +34 -0
- package/dist/game/effect-detect.d.ts.map +1 -0
- package/dist/game/effect-detect.js +456 -0
- package/dist/game/effect-detect.js.map +1 -0
- package/dist/game/effect-env.d.ts +77 -0
- package/dist/game/effect-env.d.ts.map +1 -0
- package/dist/game/effect-env.js +166 -0
- package/dist/game/effect-env.js.map +1 -0
- package/dist/game/effect-game-env.d.ts +76 -0
- package/dist/game/effect-game-env.d.ts.map +1 -0
- package/dist/game/effect-game-env.js +23 -0
- package/dist/game/effect-game-env.js.map +1 -0
- package/dist/game/effect-general.d.ts +98 -0
- package/dist/game/effect-general.d.ts.map +1 -0
- package/dist/game/effect-general.js +914 -0
- package/dist/game/effect-general.js.map +1 -0
- package/dist/game/effect-item.d.ts +124 -0
- package/dist/game/effect-item.d.ts.map +1 -0
- package/dist/game/effect-item.js +789 -0
- package/dist/game/effect-item.js.map +1 -0
- package/dist/game/effect-melee.d.ts +43 -0
- package/dist/game/effect-melee.d.ts.map +1 -0
- package/dist/game/effect-melee.js +477 -0
- package/dist/game/effect-melee.js.map +1 -0
- package/dist/game/effect-mon-origin.d.ts +67 -0
- package/dist/game/effect-mon-origin.d.ts.map +1 -0
- package/dist/game/effect-mon-origin.js +164 -0
- package/dist/game/effect-mon-origin.js.map +1 -0
- package/dist/game/effect-monster.d.ts +29 -0
- package/dist/game/effect-monster.d.ts.map +1 -0
- package/dist/game/effect-monster.js +281 -0
- package/dist/game/effect-monster.js.map +1 -0
- package/dist/game/effect-summon.d.ts +37 -0
- package/dist/game/effect-summon.d.ts.map +1 -0
- package/dist/game/effect-summon.js +113 -0
- package/dist/game/effect-summon.js.map +1 -0
- package/dist/game/effect-teleport.d.ts +130 -0
- package/dist/game/effect-teleport.d.ts.map +1 -0
- package/dist/game/effect-teleport.js +529 -0
- package/dist/game/effect-teleport.js.map +1 -0
- package/dist/game/effect-terrain.d.ts +91 -0
- package/dist/game/effect-terrain.d.ts.map +1 -0
- package/dist/game/effect-terrain.js +812 -0
- package/dist/game/effect-terrain.js.map +1 -0
- package/dist/game/energy.d.ts +45 -0
- package/dist/game/energy.d.ts.map +1 -0
- package/dist/game/energy.js +51 -0
- package/dist/game/energy.js.map +1 -0
- package/dist/game/equip-cmp.d.ts +138 -0
- package/dist/game/equip-cmp.d.ts.map +1 -0
- package/dist/game/equip-cmp.js +363 -0
- package/dist/game/equip-cmp.js.map +1 -0
- package/dist/game/floor.d.ts +182 -0
- package/dist/game/floor.d.ts.map +1 -0
- package/dist/game/floor.js +435 -0
- package/dist/game/floor.js.map +1 -0
- package/dist/game/gear.d.ts +408 -0
- package/dist/game/gear.d.ts.map +1 -0
- package/dist/game/gear.js +1037 -0
- package/dist/game/gear.js.map +1 -0
- package/dist/game/harness.d.ts +61 -0
- package/dist/game/harness.d.ts.map +1 -0
- package/dist/game/harness.js +198 -0
- package/dist/game/harness.js.map +1 -0
- package/dist/game/history.d.ts +49 -0
- package/dist/game/history.d.ts.map +1 -0
- package/dist/game/history.js +55 -0
- package/dist/game/history.js.map +1 -0
- package/dist/game/ignore-cmd.d.ts +42 -0
- package/dist/game/ignore-cmd.d.ts.map +1 -0
- package/dist/game/ignore-cmd.js +59 -0
- package/dist/game/ignore-cmd.js.map +1 -0
- package/dist/game/inscription-confirm.d.ts +80 -0
- package/dist/game/inscription-confirm.d.ts.map +1 -0
- package/dist/game/inscription-confirm.js +95 -0
- package/dist/game/inscription-confirm.js.map +1 -0
- package/dist/game/known.d.ts +297 -0
- package/dist/game/known.d.ts.map +1 -0
- package/dist/game/known.js +849 -0
- package/dist/game/known.js.map +1 -0
- package/dist/game/loop.d.ts +139 -0
- package/dist/game/loop.d.ts.map +1 -0
- package/dist/game/loop.js +631 -0
- package/dist/game/loop.js.map +1 -0
- package/dist/game/lore-color.d.ts +25 -0
- package/dist/game/lore-color.d.ts.map +1 -0
- package/dist/game/lore-color.js +95 -0
- package/dist/game/lore-color.js.map +1 -0
- package/dist/game/mon-cast.d.ts +150 -0
- package/dist/game/mon-cast.d.ts.map +1 -0
- package/dist/game/mon-cast.js +301 -0
- package/dist/game/mon-cast.js.map +1 -0
- package/dist/game/mon-cmd.d.ts +51 -0
- package/dist/game/mon-cmd.d.ts.map +1 -0
- package/dist/game/mon-cmd.js +670 -0
- package/dist/game/mon-cmd.js.map +1 -0
- package/dist/game/mon-death.d.ts +143 -0
- package/dist/game/mon-death.d.ts.map +1 -0
- package/dist/game/mon-death.js +328 -0
- package/dist/game/mon-death.js.map +1 -0
- package/dist/game/mon-group.d.ts +81 -0
- package/dist/game/mon-group.d.ts.map +1 -0
- package/dist/game/mon-group.js +323 -0
- package/dist/game/mon-group.js.map +1 -0
- package/dist/game/mon-list.d.ts +85 -0
- package/dist/game/mon-list.d.ts.map +1 -0
- package/dist/game/mon-list.js +154 -0
- package/dist/game/mon-list.js.map +1 -0
- package/dist/game/mon-message.d.ts +100 -0
- package/dist/game/mon-message.d.ts.map +1 -0
- package/dist/game/mon-message.js +336 -0
- package/dist/game/mon-message.js.map +1 -0
- package/dist/game/mon-place.d.ts +226 -0
- package/dist/game/mon-place.d.ts.map +1 -0
- package/dist/game/mon-place.js +642 -0
- package/dist/game/mon-place.js.map +1 -0
- package/dist/game/mon-ranged.d.ts +87 -0
- package/dist/game/mon-ranged.d.ts.map +1 -0
- package/dist/game/mon-ranged.js +353 -0
- package/dist/game/mon-ranged.js.map +1 -0
- package/dist/game/mon-shape.d.ts +43 -0
- package/dist/game/mon-shape.d.ts.map +1 -0
- package/dist/game/mon-shape.js +115 -0
- package/dist/game/mon-shape.js.map +1 -0
- package/dist/game/mon-side.d.ts +63 -0
- package/dist/game/mon-side.d.ts.map +1 -0
- package/dist/game/mon-side.js +403 -0
- package/dist/game/mon-side.js.map +1 -0
- package/dist/game/monster-turn.d.ts +195 -0
- package/dist/game/monster-turn.d.ts.map +1 -0
- package/dist/game/monster-turn.js +1560 -0
- package/dist/game/monster-turn.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +453 -0
- package/dist/game/obj-cmd.d.ts.map +1 -0
- package/dist/game/obj-cmd.js +1530 -0
- package/dist/game/obj-cmd.js.map +1 -0
- package/dist/game/obj-list.d.ts +92 -0
- package/dist/game/obj-list.d.ts.map +1 -0
- package/dist/game/obj-list.js +251 -0
- package/dist/game/obj-list.js.map +1 -0
- package/dist/game/object-inspect.d.ts +37 -0
- package/dist/game/object-inspect.d.ts.map +1 -0
- package/dist/game/object-inspect.js +106 -0
- package/dist/game/object-inspect.js.map +1 -0
- package/dist/game/pickup.d.ts +126 -0
- package/dist/game/pickup.d.ts.map +1 -0
- package/dist/game/pickup.js +367 -0
- package/dist/game/pickup.js.map +1 -0
- package/dist/game/player-path.d.ts +133 -0
- package/dist/game/player-path.d.ts.map +1 -0
- package/dist/game/player-path.js +1268 -0
- package/dist/game/player-path.js.map +1 -0
- package/dist/game/player-side.d.ts +59 -0
- package/dist/game/player-side.d.ts.map +1 -0
- package/dist/game/player-side.js +506 -0
- package/dist/game/player-side.js.map +1 -0
- package/dist/game/player-turn.d.ts +161 -0
- package/dist/game/player-turn.d.ts.map +1 -0
- package/dist/game/player-turn.js +739 -0
- package/dist/game/player-turn.js.map +1 -0
- package/dist/game/project-cast.d.ts +268 -0
- package/dist/game/project-cast.d.ts.map +1 -0
- package/dist/game/project-cast.js +496 -0
- package/dist/game/project-cast.js.map +1 -0
- package/dist/game/project-feat.d.ts +47 -0
- package/dist/game/project-feat.d.ts.map +1 -0
- package/dist/game/project-feat.js +350 -0
- package/dist/game/project-feat.js.map +1 -0
- package/dist/game/project-monster.d.ts +106 -0
- package/dist/game/project-monster.d.ts.map +1 -0
- package/dist/game/project-monster.js +272 -0
- package/dist/game/project-monster.js.map +1 -0
- package/dist/game/project-obj.d.ts +60 -0
- package/dist/game/project-obj.d.ts.map +1 -0
- package/dist/game/project-obj.js +245 -0
- package/dist/game/project-obj.js.map +1 -0
- package/dist/game/project-player.d.ts +120 -0
- package/dist/game/project-player.d.ts.map +1 -0
- package/dist/game/project-player.js +108 -0
- package/dist/game/project-player.js.map +1 -0
- package/dist/game/quest.d.ts +101 -0
- package/dist/game/quest.d.ts.map +1 -0
- package/dist/game/quest.js +192 -0
- package/dist/game/quest.js.map +1 -0
- package/dist/game/ranged-cmd.d.ts +32 -0
- package/dist/game/ranged-cmd.d.ts.map +1 -0
- package/dist/game/ranged-cmd.js +372 -0
- package/dist/game/ranged-cmd.js.map +1 -0
- package/dist/game/scheduler.d.ts +47 -0
- package/dist/game/scheduler.d.ts.map +1 -0
- package/dist/game/scheduler.js +141 -0
- package/dist/game/scheduler.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +104 -0
- package/dist/game/spell-cmd.d.ts.map +1 -0
- package/dist/game/spell-cmd.js +320 -0
- package/dist/game/spell-cmd.js.map +1 -0
- package/dist/game/spoil.d.ts +28 -0
- package/dist/game/spoil.d.ts.map +1 -0
- package/dist/game/spoil.js +435 -0
- package/dist/game/spoil.js.map +1 -0
- package/dist/game/steal.d.ts +35 -0
- package/dist/game/steal.d.ts.map +1 -0
- package/dist/game/steal.js +145 -0
- package/dist/game/steal.js.map +1 -0
- package/dist/game/take-hit-hooks.d.ts +52 -0
- package/dist/game/take-hit-hooks.d.ts.map +1 -0
- package/dist/game/take-hit-hooks.js +127 -0
- package/dist/game/take-hit-hooks.js.map +1 -0
- package/dist/game/target-loop.d.ts +119 -0
- package/dist/game/target-loop.d.ts.map +1 -0
- package/dist/game/target-loop.js +408 -0
- package/dist/game/target-loop.js.map +1 -0
- package/dist/game/target.d.ts +133 -0
- package/dist/game/target.d.ts.map +1 -0
- package/dist/game/target.js +353 -0
- package/dist/game/target.js.map +1 -0
- package/dist/game/thrust.d.ts +37 -0
- package/dist/game/thrust.d.ts.map +1 -0
- package/dist/game/thrust.js +155 -0
- package/dist/game/thrust.js.map +1 -0
- package/dist/game/trap.d.ts +218 -0
- package/dist/game/trap.d.ts.map +1 -0
- package/dist/game/trap.js +618 -0
- package/dist/game/trap.js.map +1 -0
- package/dist/game/ui-entry.d.ts +282 -0
- package/dist/game/ui-entry.d.ts.map +1 -0
- package/dist/game/ui-entry.js +1838 -0
- package/dist/game/ui-entry.js.map +1 -0
- package/dist/game/wizard.d.ts +654 -0
- package/dist/game/wizard.d.ts.map +1 -0
- package/dist/game/wizard.js +1323 -0
- package/dist/game/wizard.js.map +1 -0
- package/dist/game/world.d.ts +183 -0
- package/dist/game/world.d.ts.map +1 -0
- package/dist/game/world.js +685 -0
- package/dist/game/world.js.map +1 -0
- package/dist/gen/cave.d.ts +247 -0
- package/dist/gen/cave.d.ts.map +1 -0
- package/dist/gen/cave.js +2406 -0
- package/dist/gen/cave.js.map +1 -0
- package/dist/gen/gen-monster.d.ts +151 -0
- package/dist/gen/gen-monster.d.ts.map +1 -0
- package/dist/gen/gen-monster.js +473 -0
- package/dist/gen/gen-monster.js.map +1 -0
- package/dist/gen/generate.d.ts +240 -0
- package/dist/gen/generate.d.ts.map +1 -0
- package/dist/gen/generate.js +358 -0
- package/dist/gen/generate.js.map +1 -0
- package/dist/gen/room.d.ts +160 -0
- package/dist/gen/room.d.ts.map +1 -0
- package/dist/gen/room.js +1910 -0
- package/dist/gen/room.js.map +1 -0
- package/dist/gen/util.d.ts +466 -0
- package/dist/gen/util.d.ts.map +1 -0
- package/dist/gen/util.js +1553 -0
- package/dist/gen/util.js.map +1 -0
- package/dist/generated/dun-profiles.d.ts +44 -0
- package/dist/generated/dun-profiles.d.ts.map +1 -0
- package/dist/generated/dun-profiles.js +28 -0
- package/dist/generated/dun-profiles.js.map +1 -0
- package/dist/generated/effects.d.ts +1021 -0
- package/dist/generated/effects.d.ts.map +1 -0
- package/dist/generated/effects.js +239 -0
- package/dist/generated/effects.js.map +1 -0
- package/dist/generated/elements.d.ts +83 -0
- package/dist/generated/elements.d.ts.map +1 -0
- package/dist/generated/elements.js +60 -0
- package/dist/generated/elements.js.map +1 -0
- package/dist/generated/equip-slots.d.ts +104 -0
- package/dist/generated/equip-slots.d.ts.map +1 -0
- package/dist/generated/equip-slots.js +34 -0
- package/dist/generated/equip-slots.js.map +1 -0
- package/dist/generated/history-types.d.ts +52 -0
- package/dist/generated/history-types.d.ts.map +1 -0
- package/dist/generated/history-types.js +32 -0
- package/dist/generated/history-types.js.map +1 -0
- package/dist/generated/ignore-types.d.ts +116 -0
- package/dist/generated/ignore-types.d.ts.map +1 -0
- package/dist/generated/ignore-types.js +64 -0
- package/dist/generated/ignore-types.js.map +1 -0
- package/dist/generated/index.d.ts +32 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +33 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/kind-flags.d.ts +72 -0
- package/dist/generated/kind-flags.d.ts.map +1 -0
- package/dist/generated/kind-flags.js +42 -0
- package/dist/generated/kind-flags.js.map +1 -0
- package/dist/generated/message.d.ts +624 -0
- package/dist/generated/message.d.ts.map +1 -0
- package/dist/generated/message.js +318 -0
- package/dist/generated/message.js.map +1 -0
- package/dist/generated/mon-message.d.ts +386 -0
- package/dist/generated/mon-message.d.ts.map +1 -0
- package/dist/generated/mon-message.js +136 -0
- package/dist/generated/mon-message.js.map +1 -0
- package/dist/generated/mon-race-flags.d.ts +433 -0
- package/dist/generated/mon-race-flags.d.ts.map +1 -0
- package/dist/generated/mon-race-flags.js +180 -0
- package/dist/generated/mon-race-flags.js.map +1 -0
- package/dist/generated/mon-spells.d.ts +380 -0
- package/dist/generated/mon-spells.d.ts.map +1 -0
- package/dist/generated/mon-spells.js +196 -0
- package/dist/generated/mon-spells.js.map +1 -0
- package/dist/generated/mon-temp-flags.d.ts +52 -0
- package/dist/generated/mon-temp-flags.d.ts.map +1 -0
- package/dist/generated/mon-temp-flags.js +32 -0
- package/dist/generated/mon-temp-flags.js.map +1 -0
- package/dist/generated/mon-timed.d.ts +118 -0
- package/dist/generated/mon-timed.d.ts.map +1 -0
- package/dist/generated/mon-timed.js +32 -0
- package/dist/generated/mon-timed.js.map +1 -0
- package/dist/generated/object-flags.d.ts +169 -0
- package/dist/generated/object-flags.d.ts.map +1 -0
- package/dist/generated/object-flags.js +93 -0
- package/dist/generated/object-flags.js.map +1 -0
- package/dist/generated/object-modifiers.d.ts +50 -0
- package/dist/generated/object-modifiers.d.ts.map +1 -0
- package/dist/generated/object-modifiers.js +41 -0
- package/dist/generated/object-modifiers.js.map +1 -0
- package/dist/generated/options.d.ts +284 -0
- package/dist/generated/options.d.ts.map +1 -0
- package/dist/generated/options.js +102 -0
- package/dist/generated/options.js.map +1 -0
- package/dist/generated/origins.d.ts +138 -0
- package/dist/generated/origins.d.ts.map +1 -0
- package/dist/generated/origins.js +62 -0
- package/dist/generated/origins.js.map +1 -0
- package/dist/generated/parser-errors.d.ts +264 -0
- package/dist/generated/parser-errors.d.ts.map +1 -0
- package/dist/generated/parser-errors.js +138 -0
- package/dist/generated/parser-errors.js.map +1 -0
- package/dist/generated/player-flags.d.ts +62 -0
- package/dist/generated/player-flags.d.ts.map +1 -0
- package/dist/generated/player-flags.js +46 -0
- package/dist/generated/player-flags.js.map +1 -0
- package/dist/generated/player-timed.d.ts +273 -0
- package/dist/generated/player-timed.d.ts.map +1 -0
- package/dist/generated/player-timed.js +116 -0
- package/dist/generated/player-timed.js.map +1 -0
- package/dist/generated/projections.d.ts +130 -0
- package/dist/generated/projections.d.ts.map +1 -0
- package/dist/generated/projections.js +101 -0
- package/dist/generated/projections.js.map +1 -0
- package/dist/generated/randart-properties.d.ts +388 -0
- package/dist/generated/randart-properties.d.ts.map +1 -0
- package/dist/generated/randart-properties.js +200 -0
- package/dist/generated/randart-properties.js.map +1 -0
- package/dist/generated/room-flags.d.ts +21 -0
- package/dist/generated/room-flags.d.ts.map +1 -0
- package/dist/generated/room-flags.js +19 -0
- package/dist/generated/room-flags.js.map +1 -0
- package/dist/generated/rooms.d.ts +122 -0
- package/dist/generated/rooms.d.ts.map +1 -0
- package/dist/generated/rooms.js +48 -0
- package/dist/generated/rooms.js.map +1 -0
- package/dist/generated/square-flags.d.ts +96 -0
- package/dist/generated/square-flags.d.ts.map +1 -0
- package/dist/generated/square-flags.js +54 -0
- package/dist/generated/square-flags.js.map +1 -0
- package/dist/generated/stats.d.ts +23 -0
- package/dist/generated/stats.d.ts.map +1 -0
- package/dist/generated/stats.js +20 -0
- package/dist/generated/stats.js.map +1 -0
- package/dist/generated/terrain-flags.d.ts +136 -0
- package/dist/generated/terrain-flags.d.ts.map +1 -0
- package/dist/generated/terrain-flags.js +74 -0
- package/dist/generated/terrain-flags.js.map +1 -0
- package/dist/generated/terrain.d.ts +83 -0
- package/dist/generated/terrain.d.ts.map +1 -0
- package/dist/generated/terrain.js +60 -0
- package/dist/generated/terrain.js.map +1 -0
- package/dist/generated/trap-flags.d.ts +68 -0
- package/dist/generated/trap-flags.d.ts.map +1 -0
- package/dist/generated/trap-flags.js +40 -0
- package/dist/generated/trap-flags.js.map +1 -0
- package/dist/generated/tvals.d.ts +152 -0
- package/dist/generated/tvals.d.ts.map +1 -0
- package/dist/generated/tvals.js +82 -0
- package/dist/generated/tvals.js.map +1 -0
- package/dist/generated/ui-entry-renderers.d.ts +62 -0
- package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
- package/dist/generated/ui-entry-renderers.js +22 -0
- package/dist/generated/ui-entry-renderers.js.map +1 -0
- package/dist/guard.d.ts +43 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +65 -0
- package/dist/guard.js.map +1 -0
- package/dist/host/args.d.ts +129 -0
- package/dist/host/args.d.ts.map +1 -0
- package/dist/host/args.js +251 -0
- package/dist/host/args.js.map +1 -0
- package/dist/host/bridge.d.ts +61 -0
- package/dist/host/bridge.d.ts.map +1 -0
- package/dist/host/bridge.js +176 -0
- package/dist/host/bridge.js.map +1 -0
- package/dist/host/index.d.ts +18 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +18 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/io.d.ts +169 -0
- package/dist/host/io.d.ts.map +1 -0
- package/dist/host/io.js +137 -0
- package/dist/host/io.js.map +1 -0
- package/dist/host/memory.d.ts +56 -0
- package/dist/host/memory.d.ts.map +1 -0
- package/dist/host/memory.js +105 -0
- package/dist/host/memory.js.map +1 -0
- package/dist/host/raw.d.ts +114 -0
- package/dist/host/raw.d.ts.map +1 -0
- package/dist/host/raw.js +107 -0
- package/dist/host/raw.js.map +1 -0
- package/dist/index.d.ts +180 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -0
- package/dist/index.js.map +1 -0
- package/dist/loc.d.ts +63 -0
- package/dist/loc.d.ts.map +1 -0
- package/dist/loc.js +128 -0
- package/dist/loc.js.map +1 -0
- package/dist/mod/hooks.d.ts +204 -0
- package/dist/mod/hooks.d.ts.map +1 -0
- package/dist/mod/hooks.js +161 -0
- package/dist/mod/hooks.js.map +1 -0
- package/dist/mod/ids.d.ts +160 -0
- package/dist/mod/ids.d.ts.map +1 -0
- package/dist/mod/ids.js +343 -0
- package/dist/mod/ids.js.map +1 -0
- package/dist/mod/registry-host.d.ts +156 -0
- package/dist/mod/registry-host.d.ts.map +1 -0
- package/dist/mod/registry-host.js +142 -0
- package/dist/mod/registry-host.js.map +1 -0
- package/dist/mod/save-blocks.d.ts +201 -0
- package/dist/mod/save-blocks.d.ts.map +1 -0
- package/dist/mod/save-blocks.js +640 -0
- package/dist/mod/save-blocks.js.map +1 -0
- package/dist/mod/vocabulary.d.ts +104 -0
- package/dist/mod/vocabulary.d.ts.map +1 -0
- package/dist/mod/vocabulary.js +0 -0
- package/dist/mod/vocabulary.js.map +1 -0
- package/dist/mon/bind.d.ts +266 -0
- package/dist/mon/bind.d.ts.map +1 -0
- package/dist/mon/bind.js +610 -0
- package/dist/mon/bind.js.map +1 -0
- package/dist/mon/desc.d.ts +72 -0
- package/dist/mon/desc.d.ts.map +1 -0
- package/dist/mon/desc.js +237 -0
- package/dist/mon/desc.js.map +1 -0
- package/dist/mon/knowledge-groups.d.ts +61 -0
- package/dist/mon/knowledge-groups.d.ts.map +1 -0
- package/dist/mon/knowledge-groups.js +121 -0
- package/dist/mon/knowledge-groups.js.map +1 -0
- package/dist/mon/lore-describe.d.ts +216 -0
- package/dist/mon/lore-describe.d.ts.map +1 -0
- package/dist/mon/lore-describe.js +1105 -0
- package/dist/mon/lore-describe.js.map +1 -0
- package/dist/mon/lore.d.ts +117 -0
- package/dist/mon/lore.d.ts.map +1 -0
- package/dist/mon/lore.js +221 -0
- package/dist/mon/lore.js.map +1 -0
- package/dist/mon/make.d.ts +147 -0
- package/dist/mon/make.d.ts.map +1 -0
- package/dist/mon/make.js +353 -0
- package/dist/mon/make.js.map +1 -0
- package/dist/mon/monster.d.ts +94 -0
- package/dist/mon/monster.d.ts.map +1 -0
- package/dist/mon/monster.js +90 -0
- package/dist/mon/monster.js.map +1 -0
- package/dist/mon/predicate.d.ts +87 -0
- package/dist/mon/predicate.d.ts.map +1 -0
- package/dist/mon/predicate.js +190 -0
- package/dist/mon/predicate.js.map +1 -0
- package/dist/mon/project-mon.d.ts +129 -0
- package/dist/mon/project-mon.d.ts.map +1 -0
- package/dist/mon/project-mon.js +652 -0
- package/dist/mon/project-mon.js.map +1 -0
- package/dist/mon/spell.d.ts +155 -0
- package/dist/mon/spell.d.ts.map +1 -0
- package/dist/mon/spell.js +355 -0
- package/dist/mon/spell.js.map +1 -0
- package/dist/mon/steal.d.ts +112 -0
- package/dist/mon/steal.d.ts.map +1 -0
- package/dist/mon/steal.js +163 -0
- package/dist/mon/steal.js.map +1 -0
- package/dist/mon/summon.d.ts +62 -0
- package/dist/mon/summon.d.ts.map +1 -0
- package/dist/mon/summon.js +111 -0
- package/dist/mon/summon.js.map +1 -0
- package/dist/mon/take-hit.d.ts +75 -0
- package/dist/mon/take-hit.d.ts.map +1 -0
- package/dist/mon/take-hit.js +122 -0
- package/dist/mon/take-hit.js.map +1 -0
- package/dist/mon/timed.d.ts +74 -0
- package/dist/mon/timed.d.ts.map +1 -0
- package/dist/mon/timed.js +219 -0
- package/dist/mon/timed.js.map +1 -0
- package/dist/mon/types.d.ts +252 -0
- package/dist/mon/types.d.ts.map +1 -0
- package/dist/mon/types.js +46 -0
- package/dist/mon/types.js.map +1 -0
- package/dist/msg.d.ts +71 -0
- package/dist/msg.d.ts.map +1 -0
- package/dist/msg.js +126 -0
- package/dist/msg.js.map +1 -0
- package/dist/obj/artifact-fake.d.ts +39 -0
- package/dist/obj/artifact-fake.d.ts.map +1 -0
- package/dist/obj/artifact-fake.js +52 -0
- package/dist/obj/artifact-fake.js.map +1 -0
- package/dist/obj/artifact-known.d.ts +50 -0
- package/dist/obj/artifact-known.d.ts.map +1 -0
- package/dist/obj/artifact-known.js +55 -0
- package/dist/obj/artifact-known.js.map +1 -0
- package/dist/obj/bind.d.ts +219 -0
- package/dist/obj/bind.d.ts.map +1 -0
- package/dist/obj/bind.js +1239 -0
- package/dist/obj/bind.js.map +1 -0
- package/dist/obj/chest.d.ts +91 -0
- package/dist/obj/chest.d.ts.map +1 -0
- package/dist/obj/chest.js +220 -0
- package/dist/obj/chest.js.map +1 -0
- package/dist/obj/desc.d.ts +79 -0
- package/dist/obj/desc.d.ts.map +1 -0
- package/dist/obj/desc.js +602 -0
- package/dist/obj/desc.js.map +1 -0
- package/dist/obj/effects-info.d.ts +78 -0
- package/dist/obj/effects-info.d.ts.map +1 -0
- package/dist/obj/effects-info.js +240 -0
- package/dist/obj/effects-info.js.map +1 -0
- package/dist/obj/flavor.d.ts +68 -0
- package/dist/obj/flavor.d.ts.map +1 -0
- package/dist/obj/flavor.js +201 -0
- package/dist/obj/flavor.js.map +1 -0
- package/dist/obj/ignore.d.ts +143 -0
- package/dist/obj/ignore.d.ts.map +1 -0
- package/dist/obj/ignore.js +345 -0
- package/dist/obj/ignore.js.map +1 -0
- package/dist/obj/knowledge.d.ts +520 -0
- package/dist/obj/knowledge.d.ts.map +1 -0
- package/dist/obj/knowledge.js +1364 -0
- package/dist/obj/knowledge.js.map +1 -0
- package/dist/obj/known-object.d.ts +293 -0
- package/dist/obj/known-object.d.ts.map +1 -0
- package/dist/obj/known-object.js +532 -0
- package/dist/obj/known-object.js.map +1 -0
- package/dist/obj/make.d.ts +292 -0
- package/dist/obj/make.d.ts.map +1 -0
- package/dist/obj/make.js +1055 -0
- package/dist/obj/make.js.map +1 -0
- package/dist/obj/object-info.d.ts +188 -0
- package/dist/obj/object-info.d.ts.map +1 -0
- package/dist/obj/object-info.js +1407 -0
- package/dist/obj/object-info.js.map +1 -0
- package/dist/obj/object.d.ts +335 -0
- package/dist/obj/object.d.ts.map +1 -0
- package/dist/obj/object.js +1051 -0
- package/dist/obj/object.js.map +1 -0
- package/dist/obj/power.d.ts +65 -0
- package/dist/obj/power.d.ts.map +1 -0
- package/dist/obj/power.js +580 -0
- package/dist/obj/power.js.map +1 -0
- package/dist/obj/randart-build.d.ts +223 -0
- package/dist/obj/randart-build.d.ts.map +1 -0
- package/dist/obj/randart-build.js +1444 -0
- package/dist/obj/randart-build.js.map +1 -0
- package/dist/obj/randart-data.d.ts +179 -0
- package/dist/obj/randart-data.d.ts.map +1 -0
- package/dist/obj/randart-data.js +1153 -0
- package/dist/obj/randart-data.js.map +1 -0
- package/dist/obj/randart.d.ts +128 -0
- package/dist/obj/randart.d.ts.map +1 -0
- package/dist/obj/randart.js +458 -0
- package/dist/obj/randart.js.map +1 -0
- package/dist/obj/randname.d.ts +33 -0
- package/dist/obj/randname.d.ts.map +1 -0
- package/dist/obj/randname.js +116 -0
- package/dist/obj/randname.js.map +1 -0
- package/dist/obj/recharge.d.ts +28 -0
- package/dist/obj/recharge.d.ts.map +1 -0
- package/dist/obj/recharge.js +52 -0
- package/dist/obj/recharge.js.map +1 -0
- package/dist/obj/types.d.ts +584 -0
- package/dist/obj/types.d.ts.map +1 -0
- package/dist/obj/types.js +104 -0
- package/dist/obj/types.js.map +1 -0
- package/dist/obj/value.d.ts +64 -0
- package/dist/obj/value.d.ts.map +1 -0
- package/dist/obj/value.js +176 -0
- package/dist/obj/value.js.map +1 -0
- package/dist/player/abilities.d.ts +57 -0
- package/dist/player/abilities.d.ts.map +1 -0
- package/dist/player/abilities.js +118 -0
- package/dist/player/abilities.js.map +1 -0
- package/dist/player/best-digger.d.ts +42 -0
- package/dist/player/best-digger.d.ts.map +1 -0
- package/dist/player/best-digger.js +89 -0
- package/dist/player/best-digger.js.map +1 -0
- package/dist/player/bind.d.ts +270 -0
- package/dist/player/bind.d.ts.map +1 -0
- package/dist/player/bind.js +698 -0
- package/dist/player/bind.js.map +1 -0
- package/dist/player/birth.d.ts +258 -0
- package/dist/player/birth.d.ts.map +1 -0
- package/dist/player/birth.js +639 -0
- package/dist/player/birth.js.map +1 -0
- package/dist/player/calcs.d.ts +403 -0
- package/dist/player/calcs.d.ts.map +1 -0
- package/dist/player/calcs.js +1189 -0
- package/dist/player/calcs.js.map +1 -0
- package/dist/player/combat-regen.d.ts +14 -0
- package/dist/player/combat-regen.d.ts.map +1 -0
- package/dist/player/combat-regen.js +29 -0
- package/dist/player/combat-regen.js.map +1 -0
- package/dist/player/exp.d.ts +96 -0
- package/dist/player/exp.d.ts.map +1 -0
- package/dist/player/exp.js +229 -0
- package/dist/player/exp.js.map +1 -0
- package/dist/player/history.d.ts +91 -0
- package/dist/player/history.d.ts.map +1 -0
- package/dist/player/history.js +145 -0
- package/dist/player/history.js.map +1 -0
- package/dist/player/options.d.ts +123 -0
- package/dist/player/options.d.ts.map +1 -0
- package/dist/player/options.js +199 -0
- package/dist/player/options.js.map +1 -0
- package/dist/player/player.d.ts +242 -0
- package/dist/player/player.d.ts.map +1 -0
- package/dist/player/player.js +119 -0
- package/dist/player/player.js.map +1 -0
- package/dist/player/shape-lore.d.ts +56 -0
- package/dist/player/shape-lore.d.ts.map +1 -0
- package/dist/player/shape-lore.js +221 -0
- package/dist/player/shape-lore.js.map +1 -0
- package/dist/player/spell.d.ts +146 -0
- package/dist/player/spell.d.ts.map +1 -0
- package/dist/player/spell.js +519 -0
- package/dist/player/spell.js.map +1 -0
- package/dist/player/take-hit.d.ts +87 -0
- package/dist/player/take-hit.d.ts.map +1 -0
- package/dist/player/take-hit.js +99 -0
- package/dist/player/take-hit.js.map +1 -0
- package/dist/player/timed.d.ts +205 -0
- package/dist/player/timed.d.ts.map +1 -0
- package/dist/player/timed.js +310 -0
- package/dist/player/timed.js.map +1 -0
- package/dist/player/types.d.ts +390 -0
- package/dist/player/types.d.ts.map +1 -0
- package/dist/player/types.js +51 -0
- package/dist/player/types.js.map +1 -0
- package/dist/rational.d.ts +99 -0
- package/dist/rational.d.ts.map +1 -0
- package/dist/rational.js +345 -0
- package/dist/rational.js.map +1 -0
- package/dist/rng.d.ts +168 -0
- package/dist/rng.d.ts.map +1 -0
- package/dist/rng.js +404 -0
- package/dist/rng.js.map +1 -0
- package/dist/save/buffer.d.ts +120 -0
- package/dist/save/buffer.d.ts.map +1 -0
- package/dist/save/buffer.js +238 -0
- package/dist/save/buffer.js.map +1 -0
- package/dist/save/compress.d.ts +79 -0
- package/dist/save/compress.d.ts.map +1 -0
- package/dist/save/compress.js +97 -0
- package/dist/save/compress.js.map +1 -0
- package/dist/save/description.d.ts +61 -0
- package/dist/save/description.d.ts.map +1 -0
- package/dist/save/description.js +51 -0
- package/dist/save/description.js.map +1 -0
- package/dist/save/integrity.d.ts +59 -0
- package/dist/save/integrity.d.ts.map +1 -0
- package/dist/save/integrity.js +103 -0
- package/dist/save/integrity.js.map +1 -0
- package/dist/score/display.d.ts +40 -0
- package/dist/score/display.d.ts.map +1 -0
- package/dist/score/display.js +86 -0
- package/dist/score/display.js.map +1 -0
- package/dist/score/score.d.ts +166 -0
- package/dist/score/score.d.ts.map +1 -0
- package/dist/score/score.js +244 -0
- package/dist/score/score.js.map +1 -0
- package/dist/score/types.d.ts +98 -0
- package/dist/score/types.d.ts.map +1 -0
- package/dist/score/types.js +27 -0
- package/dist/score/types.js.map +1 -0
- package/dist/session/boot.d.ts +207 -0
- package/dist/session/boot.d.ts.map +1 -0
- package/dist/session/boot.js +151 -0
- package/dist/session/boot.js.map +1 -0
- package/dist/session/game.d.ts +257 -0
- package/dist/session/game.d.ts.map +1 -0
- package/dist/session/game.js +2880 -0
- package/dist/session/game.js.map +1 -0
- package/dist/session/save.d.ts +847 -0
- package/dist/session/save.d.ts.map +1 -0
- package/dist/session/save.js +1306 -0
- package/dist/session/save.js.map +1 -0
- package/dist/sound/engine.d.ts +146 -0
- package/dist/sound/engine.d.ts.map +1 -0
- package/dist/sound/engine.js +332 -0
- package/dist/sound/engine.js.map +1 -0
- package/dist/sound/index.d.ts +13 -0
- package/dist/sound/index.d.ts.map +1 -0
- package/dist/sound/index.js +13 -0
- package/dist/sound/index.js.map +1 -0
- package/dist/sound/sound-prefs-data.d.ts +10 -0
- package/dist/sound/sound-prefs-data.d.ts.map +1 -0
- package/dist/sound/sound-prefs-data.js +165 -0
- package/dist/sound/sound-prefs-data.js.map +1 -0
- package/dist/sound/types.d.ts +64 -0
- package/dist/sound/types.d.ts.map +1 -0
- package/dist/sound/types.js +23 -0
- package/dist/sound/types.js.map +1 -0
- package/dist/store/bind.d.ts +43 -0
- package/dist/store/bind.d.ts.map +1 -0
- package/dist/store/bind.js +130 -0
- package/dist/store/bind.js.map +1 -0
- package/dist/store/price.d.ts +27 -0
- package/dist/store/price.d.ts.map +1 -0
- package/dist/store/price.js +81 -0
- package/dist/store/price.js.map +1 -0
- package/dist/store/store-cmd.d.ts +51 -0
- package/dist/store/store-cmd.d.ts.map +1 -0
- package/dist/store/store-cmd.js +73 -0
- package/dist/store/store-cmd.js.map +1 -0
- package/dist/store/store.d.ts +156 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +616 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/transact.d.ts +198 -0
- package/dist/store/transact.d.ts.map +1 -0
- package/dist/store/transact.js +383 -0
- package/dist/store/transact.js.map +1 -0
- package/dist/store/types.d.ts +101 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/version.d.ts +25 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/dist/visuals/engine.d.ts +223 -0
- package/dist/visuals/engine.d.ts.map +1 -0
- package/dist/visuals/engine.js +357 -0
- package/dist/visuals/engine.js.map +1 -0
- package/dist/visuals/glyph-table.d.ts +112 -0
- package/dist/visuals/glyph-table.d.ts.map +1 -0
- package/dist/visuals/glyph-table.js +156 -0
- package/dist/visuals/glyph-table.js.map +1 -0
- package/dist/visuals/grafmode-data.d.ts +4 -0
- package/dist/visuals/grafmode-data.d.ts.map +1 -0
- package/dist/visuals/grafmode-data.js +88 -0
- package/dist/visuals/grafmode-data.js.map +1 -0
- package/dist/visuals/grafmode.d.ts +83 -0
- package/dist/visuals/grafmode.d.ts.map +1 -0
- package/dist/visuals/grafmode.js +82 -0
- package/dist/visuals/grafmode.js.map +1 -0
- package/dist/visuals/index.d.ts +19 -0
- package/dist/visuals/index.d.ts.map +1 -0
- package/dist/visuals/index.js +19 -0
- package/dist/visuals/index.js.map +1 -0
- package/dist/visuals/map-text.d.ts +79 -0
- package/dist/visuals/map-text.d.ts.map +1 -0
- package/dist/visuals/map-text.js +122 -0
- package/dist/visuals/map-text.js.map +1 -0
- package/dist/visuals/pref-expr.d.ts +56 -0
- package/dist/visuals/pref-expr.d.ts.map +1 -0
- package/dist/visuals/pref-expr.js +173 -0
- package/dist/visuals/pref-expr.js.map +1 -0
- package/dist/visuals/prefs.d.ts +280 -0
- package/dist/visuals/prefs.d.ts.map +1 -0
- package/dist/visuals/prefs.js +835 -0
- package/dist/visuals/prefs.js.map +1 -0
- package/dist/visuals/tile-prefs.d.ts +132 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -0
- package/dist/visuals/tile-prefs.js +105 -0
- package/dist/visuals/tile-prefs.js.map +1 -0
- package/dist/world/chunk.d.ts +195 -0
- package/dist/world/chunk.d.ts.map +1 -0
- package/dist/world/chunk.js +422 -0
- package/dist/world/chunk.js.map +1 -0
- package/dist/world/feature.d.ts +86 -0
- package/dist/world/feature.d.ts.map +1 -0
- package/dist/world/feature.js +153 -0
- package/dist/world/feature.js.map +1 -0
- package/dist/world/flow.d.ts +33 -0
- package/dist/world/flow.d.ts.map +1 -0
- package/dist/world/flow.js +115 -0
- package/dist/world/flow.js.map +1 -0
- package/dist/world/project.d.ts +176 -0
- package/dist/world/project.d.ts.map +1 -0
- package/dist/world/project.js +543 -0
- package/dist/world/project.js.map +1 -0
- package/dist/world/projection.d.ts +100 -0
- package/dist/world/projection.d.ts.map +1 -0
- package/dist/world/projection.js +152 -0
- package/dist/world/projection.js.map +1 -0
- package/dist/world/scatter.d.ts +25 -0
- package/dist/world/scatter.d.ts.map +1 -0
- package/dist/world/scatter.js +54 -0
- package/dist/world/scatter.js.map +1 -0
- package/dist/world/trap.d.ts +84 -0
- package/dist/world/trap.d.ts.map +1 -0
- package/dist/world/trap.js +106 -0
- package/dist/world/trap.js.map +1 -0
- package/dist/world/view.d.ts +60 -0
- package/dist/world/view.d.ts.map +1 -0
- package/dist/world/view.js +436 -0
- package/dist/world/view.js.map +1 -0
- package/dist/z-queue.d.ts +133 -0
- package/dist/z-queue.d.ts.map +1 -0
- package/dist/z-queue.js +283 -0
- package/dist/z-queue.js.map +1 -0
- package/package.json +75 -0
- package/src/agent/act.ts +114 -0
- package/src/agent/controller.ts +109 -0
- package/src/agent/events.ts +47 -0
- package/src/agent/index.ts +36 -0
- package/src/agent/perceive.ts +440 -0
- package/src/agent/types.ts +464 -0
- package/src/bitflag.ts +536 -0
- package/src/cmd.ts +547 -0
- package/src/color.ts +267 -0
- package/src/combat/brand-slay.ts +360 -0
- package/src/combat/hit.ts +471 -0
- package/src/combat/index.ts +15 -0
- package/src/combat/melee.ts +728 -0
- package/src/combat/mon-melee.ts +1153 -0
- package/src/combat/ranged.ts +397 -0
- package/src/constants.ts +324 -0
- package/src/dice.ts +467 -0
- package/src/effects/effect-choice.ts +32 -0
- package/src/effects/effect-info.ts +859 -0
- package/src/effects/effect.ts +560 -0
- package/src/effects/handlers.ts +452 -0
- package/src/effects/interpreter.ts +603 -0
- package/src/events.ts +317 -0
- package/src/expression.ts +360 -0
- package/src/game/cave-cmd.ts +1147 -0
- package/src/game/char-sheet.ts +557 -0
- package/src/game/chest.ts +348 -0
- package/src/game/context.ts +1218 -0
- package/src/game/curse-tick.ts +130 -0
- package/src/game/describe.ts +62 -0
- package/src/game/display.ts +838 -0
- package/src/game/dump-level.ts +114 -0
- package/src/game/effect-attack.ts +746 -0
- package/src/game/effect-detect.ts +542 -0
- package/src/game/effect-env.ts +252 -0
- package/src/game/effect-game-env.ts +86 -0
- package/src/game/effect-general.ts +1122 -0
- package/src/game/effect-item.ts +999 -0
- package/src/game/effect-melee.ts +557 -0
- package/src/game/effect-mon-origin.ts +196 -0
- package/src/game/effect-monster.ts +310 -0
- package/src/game/effect-summon.ts +161 -0
- package/src/game/effect-teleport.ts +645 -0
- package/src/game/effect-terrain.ts +881 -0
- package/src/game/energy.ts +61 -0
- package/src/game/equip-cmp.ts +476 -0
- package/src/game/floor.ts +524 -0
- package/src/game/gear.ts +1352 -0
- package/src/game/harness.ts +270 -0
- package/src/game/history.ts +78 -0
- package/src/game/ignore-cmd.ts +68 -0
- package/src/game/inscription-confirm.ts +115 -0
- package/src/game/known.ts +960 -0
- package/src/game/loop.ts +671 -0
- package/src/game/lore-color.ts +108 -0
- package/src/game/mon-cast.ts +409 -0
- package/src/game/mon-cmd.ts +767 -0
- package/src/game/mon-death.ts +459 -0
- package/src/game/mon-group.ts +368 -0
- package/src/game/mon-list.ts +213 -0
- package/src/game/mon-message.ts +359 -0
- package/src/game/mon-place.ts +1012 -0
- package/src/game/mon-ranged.ts +405 -0
- package/src/game/mon-shape.ts +161 -0
- package/src/game/mon-side.ts +511 -0
- package/src/game/monster-turn.ts +1750 -0
- package/src/game/obj-cmd.ts +1970 -0
- package/src/game/obj-list.ts +302 -0
- package/src/game/object-inspect.ts +162 -0
- package/src/game/pickup.ts +483 -0
- package/src/game/player-path.ts +1434 -0
- package/src/game/player-side.ts +555 -0
- package/src/game/player-turn.ts +852 -0
- package/src/game/project-cast.ts +766 -0
- package/src/game/project-feat.ts +386 -0
- package/src/game/project-monster.ts +407 -0
- package/src/game/project-obj.ts +298 -0
- package/src/game/project-player.ts +236 -0
- package/src/game/quest.ts +248 -0
- package/src/game/ranged-cmd.ts +417 -0
- package/src/game/scheduler.ts +150 -0
- package/src/game/spell-cmd.ts +404 -0
- package/src/game/spoil.ts +562 -0
- package/src/game/steal.ts +169 -0
- package/src/game/take-hit-hooks.ts +152 -0
- package/src/game/target-loop.ts +501 -0
- package/src/game/target.ts +424 -0
- package/src/game/thrust.ts +174 -0
- package/src/game/trap.ts +791 -0
- package/src/game/ui-entry.ts +2075 -0
- package/src/game/wizard.ts +1760 -0
- package/src/game/world.ts +786 -0
- package/src/gen/cave.ts +2858 -0
- package/src/gen/gen-monster.ts +592 -0
- package/src/gen/generate.ts +523 -0
- package/src/gen/room.ts +2213 -0
- package/src/gen/util.ts +1958 -0
- package/src/generated/dun-profiles.ts +30 -0
- package/src/generated/effects.ts +241 -0
- package/src/generated/elements.ts +62 -0
- package/src/generated/equip-slots.ts +36 -0
- package/src/generated/history-types.ts +34 -0
- package/src/generated/ignore-types.ts +66 -0
- package/src/generated/index.ts +33 -0
- package/src/generated/kind-flags.ts +44 -0
- package/src/generated/message.ts +320 -0
- package/src/generated/mon-message.ts +138 -0
- package/src/generated/mon-race-flags.ts +182 -0
- package/src/generated/mon-spells.ts +198 -0
- package/src/generated/mon-temp-flags.ts +34 -0
- package/src/generated/mon-timed.ts +34 -0
- package/src/generated/object-flags.ts +95 -0
- package/src/generated/object-modifiers.ts +43 -0
- package/src/generated/options.ts +104 -0
- package/src/generated/origins.ts +64 -0
- package/src/generated/parser-errors.ts +140 -0
- package/src/generated/player-flags.ts +48 -0
- package/src/generated/player-timed.ts +118 -0
- package/src/generated/projections.ts +103 -0
- package/src/generated/randart-properties.ts +202 -0
- package/src/generated/room-flags.ts +21 -0
- package/src/generated/rooms.ts +50 -0
- package/src/generated/square-flags.ts +56 -0
- package/src/generated/stats.ts +22 -0
- package/src/generated/terrain-flags.ts +76 -0
- package/src/generated/terrain.ts +62 -0
- package/src/generated/trap-flags.ts +42 -0
- package/src/generated/tvals.ts +84 -0
- package/src/generated/ui-entry-renderers.ts +24 -0
- package/src/guard.ts +70 -0
- package/src/host/args.ts +334 -0
- package/src/host/bridge.ts +193 -0
- package/src/host/index.ts +18 -0
- package/src/host/io.ts +239 -0
- package/src/host/memory.ts +134 -0
- package/src/host/raw.ts +190 -0
- package/src/index.ts +250 -0
- package/src/loc.ts +157 -0
- package/src/mod/hooks.ts +278 -0
- package/src/mod/ids.ts +390 -0
- package/src/mod/registry-host.ts +258 -0
- package/src/mod/save-blocks.ts +787 -0
- package/src/mod/vocabulary.ts +0 -0
- package/src/mon/bind.ts +899 -0
- package/src/mon/desc.ts +212 -0
- package/src/mon/knowledge-groups.ts +164 -0
- package/src/mon/lore-describe.ts +1414 -0
- package/src/mon/lore.ts +306 -0
- package/src/mon/make.ts +422 -0
- package/src/mon/monster.ts +161 -0
- package/src/mon/predicate.ts +220 -0
- package/src/mon/project-mon.ts +855 -0
- package/src/mon/spell.ts +418 -0
- package/src/mon/steal.ts +246 -0
- package/src/mon/summon.ts +145 -0
- package/src/mon/take-hit.ts +195 -0
- package/src/mon/timed.ts +300 -0
- package/src/mon/types.ts +286 -0
- package/src/msg.ts +146 -0
- package/src/obj/artifact-fake.ts +63 -0
- package/src/obj/artifact-known.ts +69 -0
- package/src/obj/bind.ts +1345 -0
- package/src/obj/chest.ts +249 -0
- package/src/obj/desc.ts +699 -0
- package/src/obj/effects-info.ts +349 -0
- package/src/obj/flavor.ts +256 -0
- package/src/obj/ignore.ts +387 -0
- package/src/obj/knowledge.ts +1577 -0
- package/src/obj/known-object.ts +718 -0
- package/src/obj/make.ts +1367 -0
- package/src/obj/object-info.ts +1737 -0
- package/src/obj/object.ts +1296 -0
- package/src/obj/power.ts +674 -0
- package/src/obj/randart-build.ts +1705 -0
- package/src/obj/randart-data.ts +1344 -0
- package/src/obj/randart.ts +552 -0
- package/src/obj/randname.ts +128 -0
- package/src/obj/recharge.ts +62 -0
- package/src/obj/types.ts +559 -0
- package/src/obj/value.ts +215 -0
- package/src/player/abilities.ts +142 -0
- package/src/player/best-digger.ts +118 -0
- package/src/player/bind.ts +1021 -0
- package/src/player/birth.ts +794 -0
- package/src/player/calcs.ts +1522 -0
- package/src/player/combat-regen.ts +33 -0
- package/src/player/exp.ts +275 -0
- package/src/player/history.ts +211 -0
- package/src/player/options.ts +244 -0
- package/src/player/player.ts +356 -0
- package/src/player/shape-lore.ts +250 -0
- package/src/player/spell.ts +627 -0
- package/src/player/take-hit.ts +173 -0
- package/src/player/timed.ts +482 -0
- package/src/player/types.ts +415 -0
- package/src/rational.ts +388 -0
- package/src/rng.ts +476 -0
- package/src/save/buffer.ts +287 -0
- package/src/save/compress.ts +132 -0
- package/src/save/description.ts +70 -0
- package/src/save/integrity.ts +133 -0
- package/src/score/display.ts +125 -0
- package/src/score/score.ts +341 -0
- package/src/score/types.ts +104 -0
- package/src/session/boot.ts +338 -0
- package/src/session/game.ts +3712 -0
- package/src/session/save.ts +2074 -0
- package/src/sound/engine.ts +375 -0
- package/src/sound/index.ts +13 -0
- package/src/sound/sound-prefs-data.ts +173 -0
- package/src/sound/types.ts +68 -0
- package/src/store/bind.ts +145 -0
- package/src/store/price.ts +97 -0
- package/src/store/store-cmd.ts +73 -0
- package/src/store/store.ts +723 -0
- package/src/store/transact.ts +644 -0
- package/src/store/types.ts +110 -0
- package/src/version.ts +26 -0
- package/src/visuals/engine.ts +444 -0
- package/src/visuals/glyph-table.ts +191 -0
- package/src/visuals/grafmode-data.ts +90 -0
- package/src/visuals/grafmode.ts +123 -0
- package/src/visuals/index.ts +19 -0
- package/src/visuals/map-text.ts +152 -0
- package/src/visuals/pref-expr.ts +182 -0
- package/src/visuals/prefs.ts +981 -0
- package/src/visuals/tile-prefs.ts +183 -0
- package/src/world/chunk.ts +531 -0
- package/src/world/feature.ts +215 -0
- package/src/world/flow.ts +128 -0
- package/src/world/project.ts +687 -0
- package/src/world/projection.ts +228 -0
- package/src/world/scatter.ts +72 -0
- package/src/world/trap.ts +155 -0
- package/src/world/view.ts +513 -0
- package/src/z-queue.ts +300 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The graphics pref-map subsystem, ported from reference/src/ui-prefs.c
|
|
3
|
+
* (Angband 4.2.6): the parser that turns a graf-*.prf / flvr-*.prf pref file
|
|
4
|
+
* into the per-entity attr/char tile-atlas mapping.
|
|
5
|
+
*
|
|
6
|
+
* Upstream stores the mapping in the global x_attr/x_char arrays
|
|
7
|
+
* (monster_x_attr, kind_x_attr, feat_x_attr[LIGHTING], trap_x_attr[LIGHTING],
|
|
8
|
+
* flavor_x_attr, proj_to_attr[PROJ][BOLT]) and fills them from the pref file
|
|
9
|
+
* in the parse_prefs_* handlers (ui-prefs.c L602-928). This module keeps the
|
|
10
|
+
* same shape in a queryable TileMap and ports the line grammar those handlers
|
|
11
|
+
* register (init_parse_prefs, ui-prefs.c L1129-1160).
|
|
12
|
+
*
|
|
13
|
+
* The graphics-relevant line types that actually appear in the four bundled
|
|
14
|
+
* packs (old, adam-bolt, gervais, nomad) are: feat, monster, object, trap, GF
|
|
15
|
+
* (in graf-*.prf) and flavor (in flvr-*.prf), plus the `%` include and `#`
|
|
16
|
+
* comment lines. Colour/keymap/message/window/entry-renderer lines are not
|
|
17
|
+
* graphics data and are ignored here (a real prf that mixes them still parses;
|
|
18
|
+
* the non-graphics lines are simply skipped).
|
|
19
|
+
*
|
|
20
|
+
* Names/tvals resolve through the same core registries the rest of the port
|
|
21
|
+
* uses: features by terrain code then printable name (lookup_feat_code then
|
|
22
|
+
* lookup_feat, ui-prefs.c L809-819), monsters by race name (lookup_monster),
|
|
23
|
+
* objects by tval+sval (tval_find_idx / lookup_sval / lookup_kind), flavors by
|
|
24
|
+
* fidx, projections by element/projection name (proj_name_to_idx), and traps
|
|
25
|
+
* by desc (lookup_trap). Unknown or unmapped entities are skipped, so a lookup
|
|
26
|
+
* miss returns null and the caller falls back to ASCII.
|
|
27
|
+
*
|
|
28
|
+
* Determinism: parsing and lookup draw no game RNG.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import { projNameToIdx } from "../effects/effect.js";
|
|
32
|
+
import type { PrefExprVars } from "./pref-expr.js";
|
|
33
|
+
import type { ObjRegistry } from "../obj/bind.js";
|
|
34
|
+
import type { ObjectKind, Flavor } from "../obj/types.js";
|
|
35
|
+
import type { FeatureRegistry } from "../world/feature.js";
|
|
36
|
+
import type { TrapKind } from "../world/trap.js";
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* grid_light_level (cave.h L137-143): the lighting variants a feat/trap tile
|
|
40
|
+
* may specify. LIGHTING_MAX in a `*` lighting field means "all variants".
|
|
41
|
+
*/
|
|
42
|
+
export const LIGHTING = {
|
|
43
|
+
LOS: 0,
|
|
44
|
+
TORCH: 1,
|
|
45
|
+
LIT: 2,
|
|
46
|
+
DARK: 3,
|
|
47
|
+
MAX: 4,
|
|
48
|
+
} as const;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* bolt_motion (project.h L53-59): the projection graphic's motion variant.
|
|
52
|
+
* `static` is BOLT_NO_MOTION; the four numeric directions map to BOLT_0..135.
|
|
53
|
+
*/
|
|
54
|
+
export const BOLT = {
|
|
55
|
+
NO_MOTION: 0,
|
|
56
|
+
D0: 1,
|
|
57
|
+
D45: 2,
|
|
58
|
+
D90: 3,
|
|
59
|
+
D135: 4,
|
|
60
|
+
MAX: 5,
|
|
61
|
+
} as const;
|
|
62
|
+
|
|
63
|
+
/** proj_name_to_idx("MAX") yields PROJ_MAX (the projection table length). */
|
|
64
|
+
const PROJ_MAX = projNameToIdx("MAX");
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* One tile-atlas cell: the raw (attr, char) pair as written in the pref file.
|
|
68
|
+
* These keep the high bit set (e.g. attr 0x85, char 0xA0); decoding to an
|
|
69
|
+
* atlas (row, col) via row = attr & 0x7F, col = char & 0x7F is the front end's
|
|
70
|
+
* job (see packages/web tiles.ts tileCode), exactly as upstream keeps the raw
|
|
71
|
+
* bytes in the x_attr/x_char arrays and the port half decodes them at blit.
|
|
72
|
+
*/
|
|
73
|
+
export interface TileAtlas {
|
|
74
|
+
attr: number;
|
|
75
|
+
char: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The parsed tile mapping: the port of the x_attr/x_char globals as one
|
|
80
|
+
* queryable object. Entries are sparse - only entities the pref file names are
|
|
81
|
+
* populated; everything else stays undefined and reads back as null.
|
|
82
|
+
*/
|
|
83
|
+
export class TileMap {
|
|
84
|
+
/** feat_x_attr/char[LIGHTING][fidx]: terrain tiles per lighting variant. */
|
|
85
|
+
readonly feat: (TileAtlas | undefined)[][] = [[], [], [], []];
|
|
86
|
+
/** trap_x_attr/char[LIGHTING][tidx]: trap tiles per lighting variant. */
|
|
87
|
+
readonly trap: (TileAtlas | undefined)[][] = [[], [], [], []];
|
|
88
|
+
/** monster_x_attr/char[ridx]. */
|
|
89
|
+
readonly monster: (TileAtlas | undefined)[] = [];
|
|
90
|
+
/** kind_x_attr/char[kidx]. */
|
|
91
|
+
readonly object: (TileAtlas | undefined)[] = [];
|
|
92
|
+
/** flavor_x_attr/char[fidx]. */
|
|
93
|
+
readonly flavor: (TileAtlas | undefined)[] = [];
|
|
94
|
+
/** proj_to_attr/char[PROJ][BOLT]. */
|
|
95
|
+
readonly gf: (TileAtlas | undefined)[][] = Array.from(
|
|
96
|
+
{ length: PROJ_MAX },
|
|
97
|
+
() => [] as (TileAtlas | undefined)[],
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** The registries a pref parse resolves names/tvals against. */
|
|
102
|
+
export interface TilePrefsDeps {
|
|
103
|
+
features: FeatureRegistry;
|
|
104
|
+
objects: ObjRegistry;
|
|
105
|
+
/** MonsterRegistry (or anything with lookup_monster's raceByName). */
|
|
106
|
+
monsters: { raceByName(name: string): { ridx: number } | null };
|
|
107
|
+
/** Bound trap kinds (t_idx order), or null when the pack has none. */
|
|
108
|
+
traps: readonly TrapKind[] | null;
|
|
109
|
+
/**
|
|
110
|
+
* process_pref_file for `%` include lines (ui-prefs.c L429-441): given a
|
|
111
|
+
* referenced pref filename, return its text, or null to skip it. Omitted,
|
|
112
|
+
* `%` lines are ignored (the web front end loads graf and flvr explicitly).
|
|
113
|
+
*/
|
|
114
|
+
loadFile?: (name: string) => string | null;
|
|
115
|
+
/**
|
|
116
|
+
* The `?:` expression variables (ui-prefs.c L553-560): $SYS, $RACE, $CLASS.
|
|
117
|
+
*
|
|
118
|
+
* This is how a pack's "special player pictures" are selected. Every bundled
|
|
119
|
+
* pack ships an xtra-*.prf whose `monster:<player>` lines sit behind
|
|
120
|
+
* `[AND [EQU $CLASS ...] [EQU $RACE ...] ]` blocks, and upstream evaluates
|
|
121
|
+
* them against the LIVE character - reset_visuals(true) runs at
|
|
122
|
+
* ui_leave_init, after birth (ui-display.c L2703), and again whenever the
|
|
123
|
+
* graphics mode changes (main-win.c L1769). Omitted, those blocks all bypass
|
|
124
|
+
* and the pack's unconditional player line stands, which is the correct
|
|
125
|
+
* pre-character state.
|
|
126
|
+
*/
|
|
127
|
+
vars?: PrefExprVars;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* ------------------------------------------------------------------ */
|
|
131
|
+
/* Lookups: given a game entity, return its tile atlas or null. */
|
|
132
|
+
/* ------------------------------------------------------------------ */
|
|
133
|
+
|
|
134
|
+
/** Terrain tile for a feature index at a lighting variant, or null. */
|
|
135
|
+
export function tileForFeature(
|
|
136
|
+
map: TileMap,
|
|
137
|
+
fidx: number,
|
|
138
|
+
lighting: number,
|
|
139
|
+
): TileAtlas | null {
|
|
140
|
+
const l = lighting >= 0 && lighting < LIGHTING.MAX ? lighting : LIGHTING.LOS;
|
|
141
|
+
return (map.feat[l] as (TileAtlas | undefined)[])[fidx] ?? null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** Trap tile for a trap index at a lighting variant, or null. */
|
|
145
|
+
export function tileForTrap(
|
|
146
|
+
map: TileMap,
|
|
147
|
+
tidx: number,
|
|
148
|
+
lighting: number,
|
|
149
|
+
): TileAtlas | null {
|
|
150
|
+
const l = lighting >= 0 && lighting < LIGHTING.MAX ? lighting : LIGHTING.LOS;
|
|
151
|
+
return (map.trap[l] as (TileAtlas | undefined)[])[tidx] ?? null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/** Monster tile for a race index (ridx), or null. */
|
|
155
|
+
export function tileForMonster(map: TileMap, ridx: number): TileAtlas | null {
|
|
156
|
+
return map.monster[ridx] ?? null;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** Object tile for an object kind, or null. */
|
|
160
|
+
export function tileForObject(
|
|
161
|
+
map: TileMap,
|
|
162
|
+
kind: Pick<ObjectKind, "kidx">,
|
|
163
|
+
): TileAtlas | null {
|
|
164
|
+
return map.object[kind.kidx] ?? null;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Flavor tile for a flavor (by fidx), or null. */
|
|
168
|
+
export function tileForFlavor(
|
|
169
|
+
map: TileMap,
|
|
170
|
+
flavor: Pick<Flavor, "fidx"> | number,
|
|
171
|
+
): TileAtlas | null {
|
|
172
|
+
const fidx = typeof flavor === "number" ? flavor : flavor.fidx;
|
|
173
|
+
return map.flavor[fidx] ?? null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/** Projection tile for a PROJ index and BOLT motion, or null. */
|
|
177
|
+
export function tileForProjection(
|
|
178
|
+
map: TileMap,
|
|
179
|
+
gf: number,
|
|
180
|
+
motion: number,
|
|
181
|
+
): TileAtlas | null {
|
|
182
|
+
return (map.gf[gf] as (TileAtlas | undefined)[] | undefined)?.[motion] ?? null;
|
|
183
|
+
}
|
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The playing surface, ported from reference/src/cave.h struct chunk /
|
|
3
|
+
* struct square, cave.c (cave_new, square accessors), and the feature
|
|
4
|
+
* and square predicates of cave-square.c (Angband 4.2.6).
|
|
5
|
+
*
|
|
6
|
+
* Divergences by design: squares live in flat typed arrays instead of
|
|
7
|
+
* pointer grids; objects/traps attach later via numeric handles (their
|
|
8
|
+
* domains are separate modules); the square_set_feat side effects that
|
|
9
|
+
* need traps and player refresh (square_destroy_trap, square_note_spot,
|
|
10
|
+
* square_light_spot) are deferred and ledgered.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { FlagSet } from "../bitflag.js";
|
|
14
|
+
import { SQUARE, SQUARE_FLAG_ENTRIES, TF } from "../generated/index.js";
|
|
15
|
+
import { UINT32_MAX } from "../guard.js";
|
|
16
|
+
import type { Loc } from "../loc.js";
|
|
17
|
+
import type { Feature, FeatureRegistry } from "./feature.js";
|
|
18
|
+
|
|
19
|
+
/** Byte size of a square info FlagSet (upstream SQUARE_SIZE). */
|
|
20
|
+
export const SQUARE_SIZE = Math.ceil(SQUARE_FLAG_ENTRIES.length / 8);
|
|
21
|
+
|
|
22
|
+
/* ------------------------------------------------------------------ *
|
|
23
|
+
* Feature predicates (feat_is_*): test a terrain feature index.
|
|
24
|
+
* ------------------------------------------------------------------ */
|
|
25
|
+
|
|
26
|
+
export function featIsMagma(reg: FeatureRegistry, feat: number): boolean {
|
|
27
|
+
return reg.featHas(feat, TF["MAGMA"]);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function featIsQuartz(reg: FeatureRegistry, feat: number): boolean {
|
|
31
|
+
return reg.featHas(feat, TF["QUARTZ"]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function featIsGranite(reg: FeatureRegistry, feat: number): boolean {
|
|
35
|
+
return reg.featHas(feat, TF["GRANITE"]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function featIsTreasure(reg: FeatureRegistry, feat: number): boolean {
|
|
39
|
+
return reg.featHas(feat, TF["GOLD"]);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function featIsWall(reg: FeatureRegistry, feat: number): boolean {
|
|
43
|
+
return reg.featHas(feat, TF["WALL"]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function featIsFloor(reg: FeatureRegistry, feat: number): boolean {
|
|
47
|
+
return reg.featHas(feat, TF["FLOOR"]);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function featIsTrapHolding(
|
|
51
|
+
reg: FeatureRegistry,
|
|
52
|
+
feat: number,
|
|
53
|
+
): boolean {
|
|
54
|
+
return reg.featHas(feat, TF["TRAP"]);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function featIsObjectHolding(
|
|
58
|
+
reg: FeatureRegistry,
|
|
59
|
+
feat: number,
|
|
60
|
+
): boolean {
|
|
61
|
+
return reg.featHas(feat, TF["OBJECT"]);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function featIsMonsterWalkable(
|
|
65
|
+
reg: FeatureRegistry,
|
|
66
|
+
feat: number,
|
|
67
|
+
): boolean {
|
|
68
|
+
return reg.featHas(feat, TF["PASSABLE"]);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function featIsShop(reg: FeatureRegistry, feat: number): boolean {
|
|
72
|
+
return reg.featHas(feat, TF["SHOP"]);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function featIsLos(reg: FeatureRegistry, feat: number): boolean {
|
|
76
|
+
return reg.featHas(feat, TF["LOS"]);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function featIsPassable(reg: FeatureRegistry, feat: number): boolean {
|
|
80
|
+
return reg.featHas(feat, TF["PASSABLE"]);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function featIsProjectable(
|
|
84
|
+
reg: FeatureRegistry,
|
|
85
|
+
feat: number,
|
|
86
|
+
): boolean {
|
|
87
|
+
return reg.featHas(feat, TF["PROJECT"]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function featIsTorch(reg: FeatureRegistry, feat: number): boolean {
|
|
91
|
+
return reg.featHas(feat, TF["TORCH"]);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function featIsBright(reg: FeatureRegistry, feat: number): boolean {
|
|
95
|
+
return reg.featHas(feat, TF["BRIGHT"]);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function featIsFiery(reg: FeatureRegistry, feat: number): boolean {
|
|
99
|
+
return reg.featHas(feat, TF["FIERY"]);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* square_isnoflow (cave-square.c:738) is this test on a grid's feat. */
|
|
103
|
+
export function featIsNoFlow(reg: FeatureRegistry, feat: number): boolean {
|
|
104
|
+
return reg.featHas(feat, TF["NO_FLOW"]);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* square_isnoscent (cave-square.c:746) is this test on a grid's feat. */
|
|
108
|
+
export function featIsNoScent(reg: FeatureRegistry, feat: number): boolean {
|
|
109
|
+
return reg.featHas(feat, TF["NO_SCENT"]);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function featIsSmooth(reg: FeatureRegistry, feat: number): boolean {
|
|
113
|
+
return reg.featHas(feat, TF["SMOOTH"]);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* ------------------------------------------------------------------ *
|
|
117
|
+
* The chunk.
|
|
118
|
+
* ------------------------------------------------------------------ */
|
|
119
|
+
|
|
120
|
+
export class Chunk {
|
|
121
|
+
name = "";
|
|
122
|
+
turn = 0;
|
|
123
|
+
depth = 0;
|
|
124
|
+
feeling = 0;
|
|
125
|
+
objRating = 0;
|
|
126
|
+
monRating = 0;
|
|
127
|
+
goodItem = false;
|
|
128
|
+
feelingSquares = 0;
|
|
129
|
+
/**
|
|
130
|
+
* p->upkeep->only_partial (cave-view.c:849-851): when true, the feeling
|
|
131
|
+
* reveal at feeling_need is suppressed (level-entry full update).
|
|
132
|
+
*/
|
|
133
|
+
onlyPartial = false;
|
|
134
|
+
|
|
135
|
+
readonly height: number;
|
|
136
|
+
readonly width: number;
|
|
137
|
+
/** Occurrences of each feature (feat_count). */
|
|
138
|
+
readonly featCount: number[];
|
|
139
|
+
|
|
140
|
+
private feats: Uint8Array;
|
|
141
|
+
private infos: FlagSet[];
|
|
142
|
+
private lights: Int16Array;
|
|
143
|
+
private mons: Int16Array;
|
|
144
|
+
/** Noise and scent heatmaps. */
|
|
145
|
+
readonly noise: Uint16Array;
|
|
146
|
+
readonly scent: Uint16Array;
|
|
147
|
+
|
|
148
|
+
constructor(
|
|
149
|
+
readonly features: FeatureRegistry,
|
|
150
|
+
height: number,
|
|
151
|
+
width: number,
|
|
152
|
+
) {
|
|
153
|
+
this.height = height;
|
|
154
|
+
this.width = width;
|
|
155
|
+
const n = height * width;
|
|
156
|
+
this.feats = new Uint8Array(n);
|
|
157
|
+
this.lights = new Int16Array(n);
|
|
158
|
+
this.mons = new Int16Array(n);
|
|
159
|
+
this.noise = new Uint16Array(n);
|
|
160
|
+
this.scent = new Uint16Array(n);
|
|
161
|
+
this.infos = Array.from({ length: n }, () => new FlagSet(SQUARE_SIZE));
|
|
162
|
+
this.featCount = new Array<number>(this.features.count() + 8).fill(0);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private idx(grid: Loc): number {
|
|
166
|
+
return grid.y * this.width + grid.x;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** square_in_bounds. */
|
|
170
|
+
inBounds(grid: Loc): boolean {
|
|
171
|
+
return (
|
|
172
|
+
grid.x >= 0 && grid.y >= 0 && grid.x < this.width && grid.y < this.height
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/** square_in_bounds_fully: not on the outer border. */
|
|
177
|
+
inBoundsFully(grid: Loc): boolean {
|
|
178
|
+
return (
|
|
179
|
+
grid.x > 0 &&
|
|
180
|
+
grid.y > 0 &&
|
|
181
|
+
grid.x < this.width - 1 &&
|
|
182
|
+
grid.y < this.height - 1
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
private assertBounds(grid: Loc): void {
|
|
187
|
+
if (!this.inBounds(grid)) {
|
|
188
|
+
throw new RangeError(`square out of bounds: ${grid.x},${grid.y}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** square(c, grid)->feat. */
|
|
193
|
+
feat(grid: Loc): number {
|
|
194
|
+
this.assertBounds(grid);
|
|
195
|
+
return this.feats[this.idx(grid)] as number;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/** The Feature at a grid. */
|
|
199
|
+
feature(grid: Loc): Feature {
|
|
200
|
+
return this.features.get(this.feat(grid));
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Live-play hook for square_set_feat's character_dungeon path
|
|
205
|
+
* (cave-square.c:1256-1262): destroy traps when the new terrain cannot
|
|
206
|
+
* hold them (or square_player_trap_allowed fails). Installed by the
|
|
207
|
+
* session while a chunk is the live cave; absent during generation.
|
|
208
|
+
*/
|
|
209
|
+
onFeatSet?: (grid: Loc) => void;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* square_set_feat (cave-square.c:1238-1268): feat_count bookkeeping and
|
|
213
|
+
* bright-terrain glow. When onFeatSet is installed (live dungeon, C
|
|
214
|
+
* character_dungeon path) it runs trap destruction / note-spot. When
|
|
215
|
+
* absent (generation), clears SQUARE_WALL_INNER/OUTER/SOLID immediately
|
|
216
|
+
* (cave-square.c:1263-1268). End-of-builder clearGenerationFlags still
|
|
217
|
+
* sweeps remaining marks set via generateMark without a later setFeat.
|
|
218
|
+
*/
|
|
219
|
+
setFeat(grid: Loc, feat: number): void {
|
|
220
|
+
this.assertBounds(grid);
|
|
221
|
+
const i = this.idx(grid);
|
|
222
|
+
const current = this.feats[i] as number;
|
|
223
|
+
if (current) this.featCount[current] = (this.featCount[current] ?? 0) - 1;
|
|
224
|
+
if (feat) this.featCount[feat] = (this.featCount[feat] ?? 0) + 1;
|
|
225
|
+
this.feats[i] = feat;
|
|
226
|
+
if (featIsBright(this.features, feat)) {
|
|
227
|
+
this.info(grid).on(SQUARE["GLOW"]);
|
|
228
|
+
}
|
|
229
|
+
if (this.onFeatSet) {
|
|
230
|
+
/* character_dungeon path (cave-square.c:1256-1262). */
|
|
231
|
+
this.onFeatSet(grid);
|
|
232
|
+
} else {
|
|
233
|
+
/* Generation path (cave-square.c:1263-1268): drop stale WALL_* marks
|
|
234
|
+
* so mid-gen predicates match C after a feature change. Mark helpers
|
|
235
|
+
* (setMarkedGranite / fillRectangle) call setFeat then generateMark,
|
|
236
|
+
* same order as C set_marked_granite (gen-room.c:426-429). */
|
|
237
|
+
this.info(grid).off(SQUARE["WALL_INNER"]);
|
|
238
|
+
this.info(grid).off(SQUARE["WALL_OUTER"]);
|
|
239
|
+
this.info(grid).off(SQUARE["WALL_SOLID"]);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/** square(c, grid)->info flag set. */
|
|
244
|
+
info(grid: Loc): FlagSet {
|
|
245
|
+
this.assertBounds(grid);
|
|
246
|
+
return this.infos[this.idx(grid)] as FlagSet;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** sqinfo_has / on / off conveniences. */
|
|
250
|
+
sqinfoHas(grid: Loc, flag: number): boolean {
|
|
251
|
+
return this.info(grid).has(flag);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
sqinfoOn(grid: Loc, flag: number): void {
|
|
255
|
+
this.info(grid).on(flag);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
sqinfoOff(grid: Loc, flag: number): void {
|
|
259
|
+
this.info(grid).off(flag);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/** square light level. */
|
|
263
|
+
light(grid: Loc): number {
|
|
264
|
+
this.assertBounds(grid);
|
|
265
|
+
return this.lights[this.idx(grid)] as number;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
setLight(grid: Loc, value: number): void {
|
|
269
|
+
this.assertBounds(grid);
|
|
270
|
+
this.lights[this.idx(grid)] = value;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/** Monster index on the square (0 = none, negative = player upstream). */
|
|
274
|
+
mon(grid: Loc): number {
|
|
275
|
+
this.assertBounds(grid);
|
|
276
|
+
return this.mons[this.idx(grid)] as number;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
setMon(grid: Loc, monIdx: number): void {
|
|
280
|
+
this.assertBounds(grid);
|
|
281
|
+
this.mons[this.idx(grid)] = monIdx;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* -------------------------------------------------------------- *
|
|
285
|
+
* Square predicates (cave-square.c), feature-driven subset.
|
|
286
|
+
* -------------------------------------------------------------- */
|
|
287
|
+
|
|
288
|
+
isFloor(grid: Loc): boolean {
|
|
289
|
+
return featIsFloor(this.features, this.feat(grid));
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/** square_istrappable (cave-square.c:220): feat_is_trap_holding on a grid. */
|
|
293
|
+
isTrapHolding(grid: Loc): boolean {
|
|
294
|
+
return featIsTrapHolding(this.features, this.feat(grid));
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
isObjectHolding(grid: Loc): boolean {
|
|
298
|
+
return featIsObjectHolding(this.features, this.feat(grid));
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
isMonsterWalkable(grid: Loc): boolean {
|
|
302
|
+
return featIsMonsterWalkable(this.features, this.feat(grid));
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
isShop(grid: Loc): boolean {
|
|
306
|
+
return featIsShop(this.features, this.feat(grid));
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
isGranite(grid: Loc): boolean {
|
|
310
|
+
return featIsGranite(this.features, this.feat(grid));
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
isMagma(grid: Loc): boolean {
|
|
314
|
+
return featIsMagma(this.features, this.feat(grid));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
isQuartz(grid: Loc): boolean {
|
|
318
|
+
return featIsQuartz(this.features, this.feat(grid));
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/** square_isperm: PERMANENT and ROCK. */
|
|
322
|
+
isPerm(grid: Loc): boolean {
|
|
323
|
+
const f = this.feature(grid);
|
|
324
|
+
return f.flags.has(TF["PERMANENT"]) && f.flags.has(TF["ROCK"]);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/** square_isrubble: ROCK that is not WALL. */
|
|
328
|
+
isRubble(grid: Loc): boolean {
|
|
329
|
+
const f = this.feature(grid);
|
|
330
|
+
return !f.flags.has(TF["WALL"]) && f.flags.has(TF["ROCK"]);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* square_isrock (cave-square.c:236-240): granite that is not a door
|
|
335
|
+
* (secret doors carry GRANITE | DOOR_ANY and must not count as mineral).
|
|
336
|
+
*/
|
|
337
|
+
isRock(grid: Loc): boolean {
|
|
338
|
+
return this.isGranite(grid) && !this.feature(grid).flags.has(TF["DOOR_ANY"]);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* square_ismineral (cave-square.c:278-282): rock, magma or quartz.
|
|
343
|
+
* Secret doors are excluded via isRock.
|
|
344
|
+
*/
|
|
345
|
+
isMineralWall(grid: Loc): boolean {
|
|
346
|
+
return this.isMagma(grid) || this.isQuartz(grid) || this.isRock(grid);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
isWall(grid: Loc): boolean {
|
|
350
|
+
return featIsWall(this.features, this.feat(grid));
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
isDoor(grid: Loc): boolean {
|
|
354
|
+
return this.feature(grid).flags.has(TF["DOOR_ANY"]);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
isClosedDoor(grid: Loc): boolean {
|
|
358
|
+
return this.feature(grid).flags.has(TF["DOOR_CLOSED"]);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
isStairs(grid: Loc): boolean {
|
|
362
|
+
return this.feature(grid).flags.has(TF["STAIR"]);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
isUpstairs(grid: Loc): boolean {
|
|
366
|
+
return this.feature(grid).flags.has(TF["UPSTAIR"]);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
isDownstairs(grid: Loc): boolean {
|
|
370
|
+
return this.feature(grid).flags.has(TF["DOWNSTAIR"]);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
isFiery(grid: Loc): boolean {
|
|
374
|
+
return featIsFiery(this.features, this.feat(grid));
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** square_ispassable (asserts bounds like upstream). */
|
|
378
|
+
isPassable(grid: Loc): boolean {
|
|
379
|
+
this.assertBounds(grid);
|
|
380
|
+
return featIsPassable(this.features, this.feat(grid));
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/** square_isprojectable (false out of bounds, like upstream). */
|
|
384
|
+
isProjectable(grid: Loc): boolean {
|
|
385
|
+
if (!this.inBounds(grid)) return false;
|
|
386
|
+
return featIsProjectable(this.features, this.feat(grid));
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** square_isdamaging: fiery terrain (lava etc). */
|
|
390
|
+
isDamaging(grid: Loc): boolean {
|
|
391
|
+
return this.isFiery(grid);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/** square_allowsfeel (cave-square.c L680): a legal level-feeling grid. */
|
|
395
|
+
allowsFeel(grid: Loc): boolean {
|
|
396
|
+
return this.isPassable(grid) && !this.isDamaging(grid);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/** square_allows_los equivalent used by the LOS routine. */
|
|
400
|
+
allowsLos(grid: Loc): boolean {
|
|
401
|
+
if (!this.inBounds(grid)) return false;
|
|
402
|
+
return featIsLos(this.features, this.feat(grid));
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/** Generation flags on square info. */
|
|
406
|
+
isWallInner(grid: Loc): boolean {
|
|
407
|
+
return this.sqinfoHas(grid, SQUARE["WALL_INNER"]);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
isWallOuter(grid: Loc): boolean {
|
|
411
|
+
return this.sqinfoHas(grid, SQUARE["WALL_OUTER"]);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
isWallSolid(grid: Loc): boolean {
|
|
415
|
+
return this.sqinfoHas(grid, SQUARE["WALL_SOLID"]);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* add_to_monster_rating (mon-make.c): saturating accumulate into
|
|
420
|
+
* mon_rating, ceiling at UINT32_MAX.
|
|
421
|
+
*/
|
|
422
|
+
addToMonsterRating(part: number): void {
|
|
423
|
+
this.monRating =
|
|
424
|
+
this.monRating < UINT32_MAX - part ? this.monRating + part : UINT32_MAX;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* place_object's obj_rating accumulation (gen-util.c L534-539): saturating
|
|
429
|
+
* accumulate, ceiling at UINT32_MAX.
|
|
430
|
+
*/
|
|
431
|
+
addToObjRating(sqrating: number): void {
|
|
432
|
+
this.objRating =
|
|
433
|
+
this.objRating < UINT32_MAX - sqrating ? this.objRating + sqrating : UINT32_MAX;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/** fill the whole chunk with a feature (generation helper). */
|
|
437
|
+
fill(feat: number): void {
|
|
438
|
+
for (let y = 0; y < this.height; y++) {
|
|
439
|
+
for (let x = 0; x < this.width; x++) {
|
|
440
|
+
this.setFeat({ x, y }, feat);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* A JSON-safe snapshot of every square (features, info flags, light,
|
|
447
|
+
* monster occupancy) plus the chunk scalars, for savefiles. Noise and
|
|
448
|
+
* scent heatmaps are transient (upstream does not save them either;
|
|
449
|
+
* they rebuild on the first turn) - so `includeFlow` defaults to false and
|
|
450
|
+
* the faithful payload omits them.
|
|
451
|
+
*
|
|
452
|
+
* bug-fixes #4605 ("Noise and scent not saved"): with includeFlow set (the
|
|
453
|
+
* bug-fixes mod's bugfix.noiseScentSave rule, passed from the save layer),
|
|
454
|
+
* the noise and scent heatmaps ARE serialized, so save/reload no longer
|
|
455
|
+
* changes monster tracking versus uninterrupted play. Absent in the payload
|
|
456
|
+
* (the faithful default) => restoreSquares leaves them zeroed, as before.
|
|
457
|
+
*/
|
|
458
|
+
snapshotSquares(includeFlow = false): ChunkSquaresData {
|
|
459
|
+
return {
|
|
460
|
+
name: this.name,
|
|
461
|
+
turn: this.turn,
|
|
462
|
+
depth: this.depth,
|
|
463
|
+
feeling: this.feeling,
|
|
464
|
+
objRating: this.objRating,
|
|
465
|
+
monRating: this.monRating,
|
|
466
|
+
goodItem: this.goodItem,
|
|
467
|
+
feelingSquares: this.feelingSquares,
|
|
468
|
+
height: this.height,
|
|
469
|
+
width: this.width,
|
|
470
|
+
feats: Array.from(this.feats),
|
|
471
|
+
infos: this.infos.map((f) => Array.from(f.bits)),
|
|
472
|
+
lights: Array.from(this.lights),
|
|
473
|
+
mons: Array.from(this.mons),
|
|
474
|
+
...(includeFlow
|
|
475
|
+
? { noise: Array.from(this.noise), scent: Array.from(this.scent) }
|
|
476
|
+
: {}),
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/** Restore a snapshotSquares() payload into this chunk (sizes must match). */
|
|
481
|
+
restoreSquares(data: ChunkSquaresData): void {
|
|
482
|
+
if (data.height !== this.height || data.width !== this.width) {
|
|
483
|
+
throw new RangeError("chunk restore: size mismatch");
|
|
484
|
+
}
|
|
485
|
+
this.name = data.name;
|
|
486
|
+
this.turn = data.turn;
|
|
487
|
+
this.depth = data.depth;
|
|
488
|
+
this.feeling = data.feeling;
|
|
489
|
+
this.objRating = data.objRating;
|
|
490
|
+
this.monRating = data.monRating;
|
|
491
|
+
this.goodItem = data.goodItem;
|
|
492
|
+
this.feelingSquares = data.feelingSquares;
|
|
493
|
+
this.featCount.fill(0);
|
|
494
|
+
for (let i = 0; i < data.feats.length; i++) {
|
|
495
|
+
const feat = data.feats[i] as number;
|
|
496
|
+
this.feats[i] = feat;
|
|
497
|
+
if (feat) this.featCount[feat] = (this.featCount[feat] ?? 0) + 1;
|
|
498
|
+
(this.infos[i] as FlagSet).bits.set(data.infos[i] as number[]);
|
|
499
|
+
this.lights[i] = data.lights[i] as number;
|
|
500
|
+
this.mons[i] = data.mons[i] as number;
|
|
501
|
+
}
|
|
502
|
+
/* bug-fixes #4605: restore the noise/scent heatmaps when the save carried
|
|
503
|
+
* them (bugfix.noiseScentSave). Self-describing: a faithful save omits
|
|
504
|
+
* both, so this is skipped and the transient heatmaps stay zeroed and
|
|
505
|
+
* rebuild on the first turn, exactly as before. */
|
|
506
|
+
if (data.noise) this.noise.set(data.noise);
|
|
507
|
+
if (data.scent) this.scent.set(data.scent);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/** The snapshotSquares() / restoreSquares() payload. */
|
|
512
|
+
export interface ChunkSquaresData {
|
|
513
|
+
name: string;
|
|
514
|
+
turn: number;
|
|
515
|
+
depth: number;
|
|
516
|
+
feeling: number;
|
|
517
|
+
objRating: number;
|
|
518
|
+
monRating: number;
|
|
519
|
+
goodItem: boolean;
|
|
520
|
+
feelingSquares: number;
|
|
521
|
+
height: number;
|
|
522
|
+
width: number;
|
|
523
|
+
feats: number[];
|
|
524
|
+
infos: number[][];
|
|
525
|
+
lights: number[];
|
|
526
|
+
mons: number[];
|
|
527
|
+
/** bug-fixes #4605: the noise heatmap, present only when bugfix.noiseScentSave is on. */
|
|
528
|
+
noise?: number[];
|
|
529
|
+
/** bug-fixes #4605: the scent heatmap, present only when bugfix.noiseScentSave is on. */
|
|
530
|
+
scent?: number[];
|
|
531
|
+
}
|