@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
package/src/host/io.ts
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host layer: z-file.c's file access and init.c's directory set, as an
|
|
3
|
+
* interface core can be handed instead of a platform it has to guess at.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS
|
|
6
|
+
*
|
|
7
|
+
* Upstream is not a browser program that happens to run on desktops; it is a
|
|
8
|
+
* desktop program with several front ends (main-sdl2.c, main-gcu.c, main-win.c)
|
|
9
|
+
* over ONE host layer (z-file.c) and ONE directory set (init.c's ANGBAND_DIR_*).
|
|
10
|
+
* The port had the first half of that - a platform-agnostic core with the front
|
|
11
|
+
* end in packages/web - but no second half: every feature that needed a file
|
|
12
|
+
* asked the browser, got "no", and was then quietly reshaped to fit the answer.
|
|
13
|
+
*
|
|
14
|
+
* That reshaping is the bug. Measured on 2026-07-28, 18 of the 35 remaining
|
|
15
|
+
* text-census absences exist only because there is no host filesystem, no argv
|
|
16
|
+
* and no process to receive a signal - not because the C was hard to read. And
|
|
17
|
+
* the damage is not limited to absences: a platform limit that goes unmodelled
|
|
18
|
+
* turns into an invented stand-in (the "use the CLI" spoiler line, the PNG
|
|
19
|
+
* screen dump), which is worse, because a stand-in FILLS the slot and neither
|
|
20
|
+
* census can see it.
|
|
21
|
+
*
|
|
22
|
+
* So the host is a first-class, injectable seam with three adapters:
|
|
23
|
+
*
|
|
24
|
+
* - desktop (Electron main process, real node:fs) - full capability
|
|
25
|
+
* - cli (node:fs directly) - full capability
|
|
26
|
+
* - web (localStorage, one key per file) - reduced, and SAYS so
|
|
27
|
+
*
|
|
28
|
+
* THE RULE THIS ENCODES: the reference C defines the semantics. A front end
|
|
29
|
+
* either expresses them or is recorded as reduced, via `capabilities`. What a
|
|
30
|
+
* front end cannot do must never edit what the game IS.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/** file_mode (z-file.h L113-118). */
|
|
34
|
+
export enum FileMode {
|
|
35
|
+
WRITE = 0,
|
|
36
|
+
READ = 1,
|
|
37
|
+
APPEND = 2,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* file_type (z-file.h L123-129). Upstream passes this so systems without file
|
|
42
|
+
* extensions can tag the file; it reaches the platform through file_open_hook.
|
|
43
|
+
* Kept because the HTML tag distinguishes the screen dump and disconnect.html
|
|
44
|
+
* from the text dumps, and a host may want to act on that.
|
|
45
|
+
*/
|
|
46
|
+
export enum FileType {
|
|
47
|
+
TEXT = 1,
|
|
48
|
+
SAVE = 2,
|
|
49
|
+
RAW = 3,
|
|
50
|
+
HTML = 4,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* init.c's ANGBAND_DIR_* (init.h L229-241), minus the read-only gamedata roots
|
|
55
|
+
* the port ships as bundled JSON rather than a tree on disk. These five are the
|
|
56
|
+
* ones the game WRITES to, which is exactly the set a browser cannot provide.
|
|
57
|
+
*/
|
|
58
|
+
export enum HostDir {
|
|
59
|
+
/** ANGBAND_DIR_USER: dumps, pref files, lore.txt, spoilers, the dev logs. */
|
|
60
|
+
USER = "user",
|
|
61
|
+
/** ANGBAND_DIR_SAVE: one savefile per character. */
|
|
62
|
+
SAVE = "save",
|
|
63
|
+
/** ANGBAND_DIR_PANIC: the signal handler's separate savefile. */
|
|
64
|
+
PANIC = "panic",
|
|
65
|
+
/** ANGBAND_DIR_SCORES: the shared score list. */
|
|
66
|
+
SCORES = "scores",
|
|
67
|
+
/** ANGBAND_DIR_ARCHIVE: retired characters' savefiles. */
|
|
68
|
+
ARCHIVE = "archive",
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* What a host can actually do. A screen reads this to decide which of
|
|
73
|
+
* upstream's paths it can take; it must NEVER be used to decide what the game
|
|
74
|
+
* means. Every field is a statement about the platform, not about the port.
|
|
75
|
+
*/
|
|
76
|
+
export interface HostCapabilities {
|
|
77
|
+
/**
|
|
78
|
+
* Files persist somewhere the user can see and other programs can reach. On
|
|
79
|
+
* the web adapter this is false: localStorage is private to the origin and
|
|
80
|
+
* evictable, so a mod manager cannot deploy into it and a "clear browsing
|
|
81
|
+
* data" destroys it.
|
|
82
|
+
*/
|
|
83
|
+
readonly realFiles: boolean;
|
|
84
|
+
/** A process command line exists (main.c's switches: -f, -u, -w, -p, ...). */
|
|
85
|
+
readonly argv: boolean;
|
|
86
|
+
/** The host can be told the process is dying, so a panic save can be written. */
|
|
87
|
+
readonly signals: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* More than one terminal window can exist. Upstream's ANGBAND_TERM_MAX is 8
|
|
90
|
+
* (ui-term.h:244); a single canvas is 1, which is why the port's subwindow
|
|
91
|
+
* setup, its window: pref directive and its option_dump are all hollow.
|
|
92
|
+
*/
|
|
93
|
+
readonly termCount: number;
|
|
94
|
+
/** Directories can be listed and watched, so an on-disk mod tree can be found. */
|
|
95
|
+
readonly directories: boolean;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The write outcomes upstream's callers distinguish. file_open failing and
|
|
100
|
+
* file_close failing are reported with DIFFERENT messages at the same call site
|
|
101
|
+
* (wiz-spoil.c: "Cannot create spoiler file." vs "Cannot close spoiler file."),
|
|
102
|
+
* so a host must be able to tell them apart rather than returning one boolean.
|
|
103
|
+
*/
|
|
104
|
+
export type WriteOutcome = "ok" | "create-failed" | "close-failed";
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* z-file.c's file access, per directory. Paths are LEAF names within a HostDir,
|
|
108
|
+
* not host paths: core never composes a path (that is path_build's job, and it
|
|
109
|
+
* is host-specific), and a leaf-only API cannot traverse out of its directory.
|
|
110
|
+
*/
|
|
111
|
+
export interface HostIo {
|
|
112
|
+
/** What this host can do. Checked, never assumed. */
|
|
113
|
+
readonly capabilities: HostCapabilities;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* path_build(dir, name) purely for DISPLAY - the text upstream prints in
|
|
117
|
+
* prompts and messages ("Cannot open '%s'."). Never used to open anything.
|
|
118
|
+
*/
|
|
119
|
+
displayPath(dir: HostDir, name: string): string;
|
|
120
|
+
|
|
121
|
+
/** file_exists (z-file.h L135). */
|
|
122
|
+
exists(dir: HostDir, name: string): boolean;
|
|
123
|
+
|
|
124
|
+
/** file_open(MODE_READ) + a file_getl loop: the whole text, or null if absent. */
|
|
125
|
+
read(dir: HostDir, name: string): string | null;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* file_open(mode, ftype) + file_put + file_close, as one call. The two
|
|
129
|
+
* failure modes stay distinct; see WriteOutcome.
|
|
130
|
+
*/
|
|
131
|
+
write(
|
|
132
|
+
dir: HostDir,
|
|
133
|
+
name: string,
|
|
134
|
+
text: string,
|
|
135
|
+
mode?: FileMode,
|
|
136
|
+
ftype?: FileType,
|
|
137
|
+
): WriteOutcome;
|
|
138
|
+
|
|
139
|
+
/** file_delete (z-file.h L145). */
|
|
140
|
+
remove(dir: HostDir, name: string): boolean;
|
|
141
|
+
|
|
142
|
+
/** file_move (z-file.h L169). */
|
|
143
|
+
move(dir: HostDir, from: string, to: string): boolean;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* file_newer (z-file.h L174). This is the gate on upstream's panic-save
|
|
147
|
+
* prompt (ui-game.c:709-720), so a host without timestamps must say so rather
|
|
148
|
+
* than guess: null means "cannot tell", which is not the same as false.
|
|
149
|
+
*/
|
|
150
|
+
newer(dir: HostDir, first: string, second: string): boolean | null;
|
|
151
|
+
|
|
152
|
+
/** The directory listing. Upstream reaches this through its platform layer. */
|
|
153
|
+
list(dir: HostDir): string[];
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* main.c's argv, minus the program name. Empty when capabilities.argv is
|
|
157
|
+
* false - which is why ui-player.c:1250's "You are not allowed to change your
|
|
158
|
+
* name!" (reachable only via -f / arg_force_name) has no way to fire on the
|
|
159
|
+
* web adapter.
|
|
160
|
+
*/
|
|
161
|
+
argv(): readonly string[];
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* A host that has no directories at all: every read misses and every write
|
|
166
|
+
* fails. This is what core falls back to when nothing was injected, so a
|
|
167
|
+
* missing host is a reported failure rather than a thrown exception - the same
|
|
168
|
+
* discipline z-file.c uses, where file_open just returns NULL.
|
|
169
|
+
*
|
|
170
|
+
* Deliberately NOT a silent success. A write that claims to have worked while
|
|
171
|
+
* storing nothing is the failure mode already recorded against persistSave.
|
|
172
|
+
*/
|
|
173
|
+
export const NULL_HOST: HostIo = {
|
|
174
|
+
capabilities: {
|
|
175
|
+
realFiles: false,
|
|
176
|
+
argv: false,
|
|
177
|
+
signals: false,
|
|
178
|
+
termCount: 1,
|
|
179
|
+
directories: false,
|
|
180
|
+
},
|
|
181
|
+
displayPath: (dir, name) => `${dir}/${name}`,
|
|
182
|
+
exists: () => false,
|
|
183
|
+
read: () => null,
|
|
184
|
+
write: () => "create-failed",
|
|
185
|
+
remove: () => false,
|
|
186
|
+
move: () => false,
|
|
187
|
+
newer: () => null,
|
|
188
|
+
list: () => [],
|
|
189
|
+
argv: () => [],
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
let current: HostIo = NULL_HOST;
|
|
193
|
+
|
|
194
|
+
/** Install the host for this process. The front end calls this at startup. */
|
|
195
|
+
export function setHost(host: HostIo): void {
|
|
196
|
+
current = host;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** The installed host, or NULL_HOST if the front end never set one. */
|
|
200
|
+
export function host(): HostIo {
|
|
201
|
+
return current;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* text_lines_to_file (z-textblock.c L703-737): write <name>.new, rotate it into
|
|
206
|
+
* place over any existing file, and keep <name>.old only for the length of the
|
|
207
|
+
* rename. Returns an `errr` exactly as the C does - 0 on success, -1 when the
|
|
208
|
+
* staged file could not be opened - because callers read it that way:
|
|
209
|
+
*
|
|
210
|
+
* if (text_lines_to_file(path, writer)) msg("Failed to create file %s.new", path);
|
|
211
|
+
*
|
|
212
|
+
* Lives here rather than in a front end because the staging sequence is host
|
|
213
|
+
* behaviour that every adapter owes, and it was previously duplicated in the
|
|
214
|
+
* web layer alone.
|
|
215
|
+
*/
|
|
216
|
+
export function textLinesToFile(
|
|
217
|
+
io: HostIo,
|
|
218
|
+
dir: HostDir,
|
|
219
|
+
name: string,
|
|
220
|
+
text: string,
|
|
221
|
+
): number {
|
|
222
|
+
const newName = `${name}.new`;
|
|
223
|
+
const oldName = `${name}.old`;
|
|
224
|
+
|
|
225
|
+
/* Write new file (L714-724). */
|
|
226
|
+
if (io.write(dir, newName, text) !== "ok") return -1;
|
|
227
|
+
|
|
228
|
+
/* Move files around (L726-734). */
|
|
229
|
+
if (!io.exists(dir, name)) {
|
|
230
|
+
io.move(dir, newName, name);
|
|
231
|
+
} else if (io.move(dir, name, oldName)) {
|
|
232
|
+
io.move(dir, newName, name);
|
|
233
|
+
io.remove(dir, oldName);
|
|
234
|
+
} else {
|
|
235
|
+
io.remove(dir, newName);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return 0;
|
|
239
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An in-memory HostIo: the reference implementation of the host contract, and
|
|
3
|
+
* the one the tests drive.
|
|
4
|
+
*
|
|
5
|
+
* It exists so the file-shaped code paths can be exercised WITHOUT a platform.
|
|
6
|
+
* Before the host seam, the only way to test a dump was to reach into the web
|
|
7
|
+
* layer's localStorage shim, so core code that wrote files could not be tested
|
|
8
|
+
* from core at all - and the failure paths (a write that fails, a file that is
|
|
9
|
+
* older than another) had no way to be provoked deliberately.
|
|
10
|
+
*
|
|
11
|
+
* Capabilities default to full, because this host really can do everything the
|
|
12
|
+
* contract asks; `failWrites` and `truncateWrites` let a test provoke
|
|
13
|
+
* upstream's two distinct write failures on demand.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { HostCapabilities, HostIo, WriteOutcome } from "./io.js";
|
|
17
|
+
import { FileMode, HostDir } from "./io.js";
|
|
18
|
+
|
|
19
|
+
/** Knobs a test uses to provoke the failure paths. */
|
|
20
|
+
export interface MemoryHostOpts {
|
|
21
|
+
/** Override any capability; the rest stay at full. */
|
|
22
|
+
capabilities?: Partial<HostCapabilities>;
|
|
23
|
+
/** argv, minus the program name. */
|
|
24
|
+
argv?: readonly string[];
|
|
25
|
+
/** Names whose write fails at open - upstream's "can't open" message. */
|
|
26
|
+
failWrites?: readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* Names whose write appears to succeed but stores nothing - upstream's
|
|
29
|
+
* "can't close" message, and the real localStorage failure mode where a
|
|
30
|
+
* quota-evicted setItem does not throw.
|
|
31
|
+
*/
|
|
32
|
+
truncateWrites?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const FULL: HostCapabilities = {
|
|
36
|
+
realFiles: true,
|
|
37
|
+
argv: true,
|
|
38
|
+
signals: true,
|
|
39
|
+
/** ANGBAND_TERM_MAX (ui-term.h:244). */
|
|
40
|
+
termCount: 8,
|
|
41
|
+
directories: true,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/** A HostIo backed by a Map per directory, with an inspectable file table. */
|
|
45
|
+
export class MemoryHost implements HostIo {
|
|
46
|
+
readonly capabilities: HostCapabilities;
|
|
47
|
+
private readonly files = new Map<string, string>();
|
|
48
|
+
/** Monotonic write counter, standing in for an mtime so `newer` is decidable. */
|
|
49
|
+
private readonly stamps = new Map<string, number>();
|
|
50
|
+
private clock = 0;
|
|
51
|
+
private readonly cmdline: readonly string[];
|
|
52
|
+
private readonly failSet: ReadonlySet<string>;
|
|
53
|
+
private readonly truncSet: ReadonlySet<string>;
|
|
54
|
+
|
|
55
|
+
constructor(opts: MemoryHostOpts = {}) {
|
|
56
|
+
this.capabilities = { ...FULL, ...opts.capabilities };
|
|
57
|
+
this.cmdline = opts.argv ?? [];
|
|
58
|
+
this.failSet = new Set(opts.failWrites ?? []);
|
|
59
|
+
this.truncSet = new Set(opts.truncateWrites ?? []);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private key(dir: HostDir, name: string): string {
|
|
63
|
+
return `${dir}/${name}`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
displayPath(dir: HostDir, name: string): string {
|
|
67
|
+
return `${dir}/${name}`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
exists(dir: HostDir, name: string): boolean {
|
|
71
|
+
return this.files.has(this.key(dir, name));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
read(dir: HostDir, name: string): string | null {
|
|
75
|
+
return this.files.get(this.key(dir, name)) ?? null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
write(
|
|
79
|
+
dir: HostDir,
|
|
80
|
+
name: string,
|
|
81
|
+
text: string,
|
|
82
|
+
mode: FileMode = FileMode.WRITE,
|
|
83
|
+
): WriteOutcome {
|
|
84
|
+
if (this.failSet.has(name)) return "create-failed";
|
|
85
|
+
const k = this.key(dir, name);
|
|
86
|
+
/* MODE_APPEND keeps the current contents; MODE_WRITE overwrites them. */
|
|
87
|
+
const body = mode === FileMode.APPEND ? (this.files.get(k) ?? "") + text : text;
|
|
88
|
+
if (this.truncSet.has(name)) return "close-failed";
|
|
89
|
+
this.files.set(k, body);
|
|
90
|
+
this.stamps.set(k, ++this.clock);
|
|
91
|
+
return "ok";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
remove(dir: HostDir, name: string): boolean {
|
|
95
|
+
const k = this.key(dir, name);
|
|
96
|
+
this.stamps.delete(k);
|
|
97
|
+
return this.files.delete(k);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
move(dir: HostDir, from: string, to: string): boolean {
|
|
101
|
+
const text = this.read(dir, from);
|
|
102
|
+
if (text === null) return false;
|
|
103
|
+
if (this.write(dir, to, text) !== "ok") return false;
|
|
104
|
+
return this.remove(dir, from);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
newer(dir: HostDir, first: string, second: string): boolean | null {
|
|
108
|
+
const a = this.stamps.get(this.key(dir, first));
|
|
109
|
+
const b = this.stamps.get(this.key(dir, second));
|
|
110
|
+
/* file_newer's own answer when either side is missing: it stats both and
|
|
111
|
+
* returns false unless the first exists and is strictly newer. */
|
|
112
|
+
if (a === undefined) return false;
|
|
113
|
+
if (b === undefined) return true;
|
|
114
|
+
return a > b;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
list(dir: HostDir): string[] {
|
|
118
|
+
const prefix = `${dir}/`;
|
|
119
|
+
const out: string[] = [];
|
|
120
|
+
for (const k of this.files.keys()) {
|
|
121
|
+
if (k.startsWith(prefix)) out.push(k.slice(prefix.length));
|
|
122
|
+
}
|
|
123
|
+
return out.sort((x, y) => x.localeCompare(y));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
argv(): readonly string[] {
|
|
127
|
+
return this.cmdline;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Test helper: every file, as dir/name -> text. */
|
|
131
|
+
snapshot(): Record<string, string> {
|
|
132
|
+
return Object.fromEntries(this.files);
|
|
133
|
+
}
|
|
134
|
+
}
|
package/src/host/raw.ts
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The real-filesystem HostIo, split so there is exactly ONE copy of the
|
|
3
|
+
* semantics.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS
|
|
6
|
+
*
|
|
7
|
+
* Two front ends have a real filesystem under them - the CLI (node:fs directly)
|
|
8
|
+
* and the Electron desktop build (node:fs in the main process, reached from the
|
|
9
|
+
* renderer over IPC). They are the same z-file.c, so they must not be two
|
|
10
|
+
* hand-written adapters that agree today and drift tomorrow. `file_newer`'s
|
|
11
|
+
* three-way rule is the clearest example: it is the gate on ui-game.c's
|
|
12
|
+
* panic-save prompt, and "second is missing" returning TRUE rather than false
|
|
13
|
+
* (z-file.c:952-967) is the kind of detail one of two copies would get wrong.
|
|
14
|
+
*
|
|
15
|
+
* So the split is:
|
|
16
|
+
*
|
|
17
|
+
* RawFs - the syscall surface. One method per operation, no rules.
|
|
18
|
+
* Each host implements this: node:fs directly, or an IPC hop.
|
|
19
|
+
* RawFsHost - z-file.c's rules over any RawFs. Written once, tested once.
|
|
20
|
+
*
|
|
21
|
+
* The traversal guard deliberately lives in the RawFs implementations rather
|
|
22
|
+
* than here, because on the Electron split it is a SECURITY boundary and has to
|
|
23
|
+
* be enforced in the trusted process. Enforcing it here as well would read as if
|
|
24
|
+
* the renderer's copy were the one that mattered.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import type { HostCapabilities, HostIo, WriteOutcome } from "./io.js";
|
|
28
|
+
import { FileMode, FileType, HostDir } from "./io.js";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The raw operations a real filesystem provides, addressed the way HostIo is:
|
|
32
|
+
* by (directory, leaf name), never by a composed path. An implementation owns
|
|
33
|
+
* path composition, because that is path_build's job and it is host-specific.
|
|
34
|
+
*
|
|
35
|
+
* Every method reports failure by return value; none throws. That mirrors
|
|
36
|
+
* z-file.c, where file_open returns NULL rather than dying.
|
|
37
|
+
*/
|
|
38
|
+
export interface RawFs {
|
|
39
|
+
/**
|
|
40
|
+
* path_build(dir, name) for DISPLAY only - the text upstream prints in
|
|
41
|
+
* "Cannot open '%s'." A name that escapes its directory still has to render
|
|
42
|
+
* as something, so this never returns null.
|
|
43
|
+
*/
|
|
44
|
+
displayPath(dir: HostDir, name: string): string;
|
|
45
|
+
|
|
46
|
+
/** stat(p).isFile(). False for a directory, which is what file_exists means. */
|
|
47
|
+
isFile(dir: HostDir, name: string): boolean;
|
|
48
|
+
|
|
49
|
+
/** The whole file as text, or null if it cannot be read. */
|
|
50
|
+
readText(dir: HostDir, name: string): string | null;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* open + write + close, reporting WHICH phase failed. The two are separate
|
|
54
|
+
* because upstream prints different messages for them at one call site
|
|
55
|
+
* (wiz-spoil.c's "Cannot create spoiler file." / "Cannot close spoiler file.").
|
|
56
|
+
*/
|
|
57
|
+
writeText(
|
|
58
|
+
dir: HostDir,
|
|
59
|
+
name: string,
|
|
60
|
+
text: string,
|
|
61
|
+
append: boolean,
|
|
62
|
+
ftype: FileType,
|
|
63
|
+
): WriteOutcome;
|
|
64
|
+
|
|
65
|
+
/** unlink. */
|
|
66
|
+
unlink(dir: HostDir, name: string): boolean;
|
|
67
|
+
|
|
68
|
+
/** rename within one directory. */
|
|
69
|
+
rename(dir: HostDir, from: string, to: string): boolean;
|
|
70
|
+
|
|
71
|
+
/** Modification time in milliseconds, or null when the file is not there. */
|
|
72
|
+
mtime(dir: HostDir, name: string): number | null;
|
|
73
|
+
|
|
74
|
+
/** The files (not subdirectories) in a directory. */
|
|
75
|
+
listFiles(dir: HostDir): string[];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Every writable HostDir, for hosts that need to create the tree up front. */
|
|
79
|
+
export const ALL_HOST_DIRS: readonly HostDir[] = [
|
|
80
|
+
HostDir.USER,
|
|
81
|
+
HostDir.SAVE,
|
|
82
|
+
HostDir.PANIC,
|
|
83
|
+
HostDir.SCORES,
|
|
84
|
+
HostDir.ARCHIVE,
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
export interface RawFsHostOpts {
|
|
88
|
+
/** argv minus the program name. */
|
|
89
|
+
argv?: readonly string[];
|
|
90
|
+
/**
|
|
91
|
+
* Terminals this front end can show. Upstream's ANGBAND_TERM_MAX is 8
|
|
92
|
+
* (ui-term.h:244); a single-canvas front end is 1.
|
|
93
|
+
*/
|
|
94
|
+
termCount?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Whether this front end is actually told the process is dying, so a panic
|
|
97
|
+
* save can be written. True for a process that installs handlers itself (the
|
|
98
|
+
* CLI). A sandboxed renderer only has this if its host process forwards the
|
|
99
|
+
* event, so it must declare what it really has rather than inherit a yes -
|
|
100
|
+
* capabilities describe the platform, and a false yes here silently removes
|
|
101
|
+
* ui-game.c's panic save instead of removing any code.
|
|
102
|
+
*/
|
|
103
|
+
signals?: boolean;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* z-file.c's rules over any RawFs. This is the full-capability host: real
|
|
108
|
+
* files, a command line, and a process that can be signalled.
|
|
109
|
+
*/
|
|
110
|
+
export class RawFsHost implements HostIo {
|
|
111
|
+
readonly capabilities: HostCapabilities;
|
|
112
|
+
private readonly raw: RawFs;
|
|
113
|
+
private readonly cmdline: readonly string[];
|
|
114
|
+
|
|
115
|
+
constructor(raw: RawFs, opts: RawFsHostOpts = {}) {
|
|
116
|
+
this.raw = raw;
|
|
117
|
+
this.cmdline = opts.argv ?? [];
|
|
118
|
+
this.capabilities = {
|
|
119
|
+
realFiles: true,
|
|
120
|
+
argv: true,
|
|
121
|
+
signals: opts.signals ?? true,
|
|
122
|
+
termCount: opts.termCount ?? 1,
|
|
123
|
+
directories: true,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
displayPath(dir: HostDir, name: string): string {
|
|
128
|
+
return this.raw.displayPath(dir, name);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** file_exists (z-file.h:135) - exists AND is a file. */
|
|
132
|
+
exists(dir: HostDir, name: string): boolean {
|
|
133
|
+
return this.raw.isFile(dir, name);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
read(dir: HostDir, name: string): string | null {
|
|
137
|
+
return this.raw.readText(dir, name);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
write(
|
|
141
|
+
dir: HostDir,
|
|
142
|
+
name: string,
|
|
143
|
+
text: string,
|
|
144
|
+
mode: FileMode = FileMode.WRITE,
|
|
145
|
+
ftype: FileType = FileType.TEXT,
|
|
146
|
+
): WriteOutcome {
|
|
147
|
+
/* MODE_APPEND must not truncate: prefs_save appends its dump after
|
|
148
|
+
* remove_old_dump has stripped the previous one. MODE_READ reaching a write
|
|
149
|
+
* is a caller bug, and truncating on it would destroy the file, so it is
|
|
150
|
+
* treated as the open failure it would be in C. */
|
|
151
|
+
if (mode === FileMode.READ) return "create-failed";
|
|
152
|
+
return this.raw.writeText(dir, name, text, mode === FileMode.APPEND, ftype);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
remove(dir: HostDir, name: string): boolean {
|
|
156
|
+
return this.raw.unlink(dir, name);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
move(dir: HostDir, from: string, to: string): boolean {
|
|
160
|
+
return this.raw.rename(dir, from, to);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* file_newer (z-file.c:952-967), all three branches:
|
|
165
|
+
*
|
|
166
|
+
* if (stat(first, ...) != 0) return false; // first missing -> not newer
|
|
167
|
+
* if (stat(second, ...) != 0) return true; // second missing -> newer
|
|
168
|
+
* return stat1.st_mtime > stat2.st_mtime;
|
|
169
|
+
*
|
|
170
|
+
* Never null here: a real filesystem always knows. The null in HostIo exists
|
|
171
|
+
* for BrowserHost, which stores no mtime and must say "cannot tell" rather
|
|
172
|
+
* than guess false - that guess would silently delete ui-game.c:709-720's
|
|
173
|
+
* panic-save prompt.
|
|
174
|
+
*/
|
|
175
|
+
newer(dir: HostDir, first: string, second: string): boolean {
|
|
176
|
+
const a = this.raw.mtime(dir, first);
|
|
177
|
+
if (a === null) return false;
|
|
178
|
+
const b = this.raw.mtime(dir, second);
|
|
179
|
+
if (b === null) return true;
|
|
180
|
+
return a > b;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
list(dir: HostDir): string[] {
|
|
184
|
+
return this.raw.listFiles(dir);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
argv(): readonly string[] {
|
|
188
|
+
return this.cmdline;
|
|
189
|
+
}
|
|
190
|
+
}
|