@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/dist/z-queue.js
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The integer priority queue from reference/src/z-queue.c (Angband 4.2.6): the
|
|
3
|
+
* two sift helpers up_heap (L115) and down_heap (L139), qp_new (L194),
|
|
4
|
+
* qp_resize (L224), qp_flush (L251), qp_free (L271), qp_size (L291),
|
|
5
|
+
* qp_len (L300), qp_push_int / qp_push_ptr (L317 / L337), qp_pop_int /
|
|
6
|
+
* qp_pop_ptr (L358 / L382), qp_pushpop_int / qp_pushpop_ptr (L410 / L449),
|
|
7
|
+
* qp_peek_int / qp_peek_ptr (L478 / L490) and qp_isinvalid (L500).
|
|
8
|
+
*
|
|
9
|
+
* It is a min-heap packed into an array: the LOWEST priority pops first.
|
|
10
|
+
*
|
|
11
|
+
* WHY THIS IS CORE AND NOT PLUMBING. find_path (player-path.c L1069) - the
|
|
12
|
+
* routine do_cmd_pathfind calls to travel to a clicked grid - runs A* over this
|
|
13
|
+
* heap. A heap is not a set: when several grids share a priority, WHICH one
|
|
14
|
+
* pops first is decided entirely by the sift order in up_heap / down_heap and
|
|
15
|
+
* by qp_pushpop_int's preference for the incoming element on a tie (L415). On
|
|
16
|
+
* an open floor equal-cost routes are everywhere, so those comparisons pick the
|
|
17
|
+
* route the character actually walks. Every one of them is therefore
|
|
18
|
+
* transcribed rather than reimplemented - in particular the asymmetric pair in
|
|
19
|
+
* down_heap's two-child branch (L158-L162), where the parent is compared to
|
|
20
|
+
* child1 with `>` but to child1 + 1 with `<=`, and the two children with `<`.
|
|
21
|
+
* A textbook "swap with the smaller child" heap is NOT this heap.
|
|
22
|
+
*
|
|
23
|
+
* THE ONE STRUCTURAL DIFFERENCE. Upstream keeps the payload in a
|
|
24
|
+
* `union { void *p; int i; }` and exposes each half through its own entry point
|
|
25
|
+
* (qp_push_int vs qp_push_ptr, qp_pop_int vs qp_pop_ptr, ...), declaring it
|
|
26
|
+
* undefined behaviour to mix the two in one queue. The bodies of each pair are
|
|
27
|
+
* line-for-line identical - only the union member read differs. TypeScript has
|
|
28
|
+
* a single payload slot and no tagged union, so the pair collapses into one
|
|
29
|
+
* generic parameter: `PriorityQueue<number>` is upstream's `_int` queue and
|
|
30
|
+
* `PriorityQueue<SomeObject>` its `_ptr` queue, with reference identity
|
|
31
|
+
* standing in for pointer identity.
|
|
32
|
+
*
|
|
33
|
+
* THE payload_free CALLBACK. Upstream's qp_resize / qp_flush / qp_free take a
|
|
34
|
+
* `void (*payload_free)(void*)` so the C can release memory it owns. JS is
|
|
35
|
+
* garbage-collected, so nothing here needs freeing - but the callback cannot be
|
|
36
|
+
* dropped, because passing NULL rather than non-NULL selects DIFFERENT
|
|
37
|
+
* BEHAVIOUR in qp_resize (L231): with a NULL callback the elements that no
|
|
38
|
+
* longer fit are not discarded, and the queue is left with count > size. That
|
|
39
|
+
* wart is reproduced; the callback is invoked on every element the C would have
|
|
40
|
+
* freed, so a caller can observe which ones those are.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* struct priority_queue (z-queue.h L59): a min-heap packed into an array.
|
|
44
|
+
*
|
|
45
|
+
* `count` is the occupancy and lives as `data.length`; `size` is the separately
|
|
46
|
+
* tracked capacity qp_new allocated, which upstream's callers grow explicitly
|
|
47
|
+
* (find_path, player-path.c L1253-L1258) rather than relying on the array to
|
|
48
|
+
* grow itself.
|
|
49
|
+
*/
|
|
50
|
+
export class PriorityQueue {
|
|
51
|
+
data = [];
|
|
52
|
+
capacity;
|
|
53
|
+
/**
|
|
54
|
+
* qp_new (L194). Upstream quit()s when the requested size would overflow
|
|
55
|
+
* SIZE_MAX / MAX(2, sizeof(element)); a JS array has no such ceiling, so the
|
|
56
|
+
* only thing kept is the recorded capacity.
|
|
57
|
+
*/
|
|
58
|
+
constructor(size) {
|
|
59
|
+
this.capacity = size;
|
|
60
|
+
}
|
|
61
|
+
/** qp_size (L291): the maximum number of elements the queue can hold. */
|
|
62
|
+
size() {
|
|
63
|
+
return this.capacity;
|
|
64
|
+
}
|
|
65
|
+
/** qp_len (L300): the number of elements currently in the queue. */
|
|
66
|
+
len() {
|
|
67
|
+
return this.data.length;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* up_heap (L115): push the ith element upward while its priority is less
|
|
71
|
+
* than its parent's.
|
|
72
|
+
*/
|
|
73
|
+
upHeap(i) {
|
|
74
|
+
for (;;) {
|
|
75
|
+
if (i === 0)
|
|
76
|
+
break;
|
|
77
|
+
const parent = (i - 1) >> 1;
|
|
78
|
+
if (this.data[i].priority >=
|
|
79
|
+
this.data[parent].priority) {
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
this.swap(i, parent);
|
|
83
|
+
i = parent;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* down_heap (L139): push the ith element downward while its priority is
|
|
88
|
+
* greater than a child's. The comparisons are upstream's, including the
|
|
89
|
+
* `<=` / `<` asymmetry that decides which child a tie sinks through.
|
|
90
|
+
*/
|
|
91
|
+
downHeap(i) {
|
|
92
|
+
const count = this.data.length;
|
|
93
|
+
for (;;) {
|
|
94
|
+
const child1 = (i << 1) + 1;
|
|
95
|
+
if (child1 >= count)
|
|
96
|
+
break;
|
|
97
|
+
const pri = this.data[i].priority;
|
|
98
|
+
const pri1 = this.data[child1].priority;
|
|
99
|
+
if (child1 === count - 1) {
|
|
100
|
+
/* There's only one child. */
|
|
101
|
+
if (pri <= pri1)
|
|
102
|
+
break;
|
|
103
|
+
this.swap(i, child1);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
const pri2 = this.data[child1 + 1].priority;
|
|
107
|
+
if (pri > pri1) {
|
|
108
|
+
if (pri <= pri2 || pri1 < pri2) {
|
|
109
|
+
this.swap(i, child1);
|
|
110
|
+
i = child1;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.swap(i, child1 + 1);
|
|
114
|
+
i = child1 + 1;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (pri > pri2) {
|
|
118
|
+
this.swap(i, child1 + 1);
|
|
119
|
+
i = child1 + 1;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
swap(a, b) {
|
|
127
|
+
const tmp = this.data[a];
|
|
128
|
+
this.data[a] = this.data[b];
|
|
129
|
+
this.data[b] = tmp;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* qp_push_int (L317) / qp_push_ptr (L337): push a payload with the given
|
|
133
|
+
* priority. Upstream asserts count < size and is otherwise undefined; the
|
|
134
|
+
* assert is kept as a throw so a caller that forgets to resize (as find_path
|
|
135
|
+
* does at L1253) is caught rather than silently corrupting the heap.
|
|
136
|
+
*/
|
|
137
|
+
push(priority, payload) {
|
|
138
|
+
if (this.data.length >= this.capacity) {
|
|
139
|
+
throw new Error("priority queue overflow (qp_push past qp_size)");
|
|
140
|
+
}
|
|
141
|
+
this.data.push({ priority, payload });
|
|
142
|
+
this.upHeap(this.data.length - 1);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* qp_pop_int (L358) / qp_pop_ptr (L382): pop the head and return its
|
|
146
|
+
* payload. Undefined upstream when the queue is empty.
|
|
147
|
+
*/
|
|
148
|
+
pop() {
|
|
149
|
+
if (this.data.length === 0) {
|
|
150
|
+
throw new Error("priority queue underflow (qp_pop while empty)");
|
|
151
|
+
}
|
|
152
|
+
const result = this.data[0].payload;
|
|
153
|
+
const last = this.data.pop();
|
|
154
|
+
if (this.data.length > 0) {
|
|
155
|
+
/* C: --count; data[0] = data[count]; i.e. the old tail becomes the root
|
|
156
|
+
* (a no-op self-assignment when the queue had one element). */
|
|
157
|
+
this.data[0] = last;
|
|
158
|
+
this.downHeap(0);
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* qp_pushpop_int (L410) / qp_pushpop_ptr (L449): push then pop the head, in
|
|
164
|
+
* one pass and without growing the heap.
|
|
165
|
+
*
|
|
166
|
+
* The `priority <= data[0].priority` test at L415 hands the NEW element
|
|
167
|
+
* straight back on a tie, leaving the heap untouched - that is the tie-break
|
|
168
|
+
* find_path leans on at L1281 when the last neighbour it examined ties with
|
|
169
|
+
* the best pending grid.
|
|
170
|
+
*/
|
|
171
|
+
pushpop(priority, payload) {
|
|
172
|
+
const count = this.data.length;
|
|
173
|
+
if (count === 0 || priority <= this.data[0].priority) {
|
|
174
|
+
return payload;
|
|
175
|
+
}
|
|
176
|
+
const result = this.data[0].payload;
|
|
177
|
+
if (priority <= this.data[count - 1].priority) {
|
|
178
|
+
this.data[0] = { priority, payload };
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.data[0] = this.data[count - 1];
|
|
182
|
+
this.data[count - 1] = { priority, payload };
|
|
183
|
+
}
|
|
184
|
+
this.downHeap(0);
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* qp_peek_int (L478) / qp_peek_ptr (L490): the payload at the head.
|
|
189
|
+
* Undefined upstream when the queue is empty.
|
|
190
|
+
*/
|
|
191
|
+
peek() {
|
|
192
|
+
if (this.data.length === 0) {
|
|
193
|
+
throw new Error("priority queue underflow (qp_peek while empty)");
|
|
194
|
+
}
|
|
195
|
+
return this.data[0].payload;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* qp_resize (L224): change the capacity. Returns false on success, as
|
|
199
|
+
* upstream does (the SIZE_MAX overflow that makes it return true has no JS
|
|
200
|
+
* counterpart, so it always succeeds).
|
|
201
|
+
*
|
|
202
|
+
* WART KEPT: the elements that no longer fit are dropped only when
|
|
203
|
+
* payloadFree is supplied (L231, `size < qp->count && payload_free`). With no
|
|
204
|
+
* callback the occupancy is left alone and the queue ends up with
|
|
205
|
+
* count > size, which upstream's own qp_size / qp_len asserts would then
|
|
206
|
+
* trip. Callers that shrink are expected to pass a callback; find_path only
|
|
207
|
+
* ever grows.
|
|
208
|
+
*/
|
|
209
|
+
resize(size, payloadFree) {
|
|
210
|
+
if (size < this.data.length && payloadFree) {
|
|
211
|
+
for (let i = size; i < this.data.length; ++i) {
|
|
212
|
+
payloadFree(this.data[i].payload);
|
|
213
|
+
}
|
|
214
|
+
this.data.length = size;
|
|
215
|
+
}
|
|
216
|
+
this.capacity = size;
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* qp_flush (L251): remove every entry, calling payloadFree on each first if
|
|
221
|
+
* given. The capacity is unchanged.
|
|
222
|
+
*/
|
|
223
|
+
flush(payloadFree) {
|
|
224
|
+
if (payloadFree) {
|
|
225
|
+
for (const element of this.data)
|
|
226
|
+
payloadFree(element.payload);
|
|
227
|
+
}
|
|
228
|
+
this.data.length = 0;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* qp_free (L271): upstream releases the queue itself. Here it only runs the
|
|
232
|
+
* payload callback over what is left, since the queue is garbage-collected.
|
|
233
|
+
*/
|
|
234
|
+
free(payloadFree) {
|
|
235
|
+
if (payloadFree) {
|
|
236
|
+
for (const element of this.data)
|
|
237
|
+
payloadFree(element.payload);
|
|
238
|
+
}
|
|
239
|
+
this.data.length = 0;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* qp_isinvalid (L500): true when the heap invariant is broken. Upstream's
|
|
243
|
+
* debug self-check, walking the deepest layer upward in sibling pairs.
|
|
244
|
+
*/
|
|
245
|
+
isInvalid() {
|
|
246
|
+
const count = this.data.length;
|
|
247
|
+
if (count > this.capacity)
|
|
248
|
+
return true;
|
|
249
|
+
/* Queues with less than two elements have nothing to check. */
|
|
250
|
+
if (count < 2)
|
|
251
|
+
return false;
|
|
252
|
+
let start;
|
|
253
|
+
if ((count & 1) === 0) {
|
|
254
|
+
/* On the deepest layer, there is a node with no sibling. */
|
|
255
|
+
const parent = (count - 2) >> 1;
|
|
256
|
+
if (this.data[count - 1].priority <
|
|
257
|
+
this.data[parent].priority) {
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
start = count - 2;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
/* All nodes on the deepest layer have a sibling. */
|
|
264
|
+
start = count - 1;
|
|
265
|
+
}
|
|
266
|
+
while (start > 1) {
|
|
267
|
+
const parent = (start - 1) >> 1;
|
|
268
|
+
if (this.data[start].priority <
|
|
269
|
+
this.data[parent].priority ||
|
|
270
|
+
this.data[start - 1].priority <
|
|
271
|
+
this.data[parent].priority) {
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
start -= 2;
|
|
275
|
+
}
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/** qp_new (z-queue.c L194): a priority queue holding up to `size` elements. */
|
|
280
|
+
export function qpNew(size) {
|
|
281
|
+
return new PriorityQueue(size);
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=z-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"z-queue.js","sourceRoot":"","sources":["../src/z-queue.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rpgm-tools/neo-angband-core",
|
|
3
|
+
"version": "0.10.0",
|
|
4
|
+
"description": "Headless Neo Angband game engine: rules, world, entities, effects, generation",
|
|
5
|
+
"license": "GPL-2.0-only",
|
|
6
|
+
"author": "neostryder (RPGM Tools)",
|
|
7
|
+
"homepage": "https://github.com/neostryder/neo-angband#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/neostryder/neo-angband.git",
|
|
11
|
+
"directory": "packages/core"
|
|
12
|
+
},
|
|
13
|
+
"bugs": "https://github.com/neostryder/neo-angband/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"angband",
|
|
16
|
+
"roguelike",
|
|
17
|
+
"game-engine",
|
|
18
|
+
"neo-angband",
|
|
19
|
+
"modding"
|
|
20
|
+
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=22"
|
|
25
|
+
},
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./host": {
|
|
34
|
+
"types": "./dist/host/index.d.ts",
|
|
35
|
+
"default": "./dist/host/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./package.json": "./package.json"
|
|
38
|
+
},
|
|
39
|
+
"//files": [
|
|
40
|
+
"This engine keeps its 248 test modules beside its 485 source modules in src/,",
|
|
41
|
+
"not in a tests/ tree, so a bare `dist` would publish 248 compiled test files",
|
|
42
|
+
"that import vitest - a dependency this package does not declare and a consumer",
|
|
43
|
+
"does not have. The negations drop them, and tools/check-npm-package.mjs runs",
|
|
44
|
+
"`npm pack` and FAILS if one survives; a `files` list is a claim, and the",
|
|
45
|
+
"tarball is the measurement.",
|
|
46
|
+
"src/ ships on purpose: the .js.map files point into it, so a stack trace out of",
|
|
47
|
+
"the engine lands on real TypeScript instead of nowhere."
|
|
48
|
+
],
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"src",
|
|
52
|
+
"!**/*.test.ts",
|
|
53
|
+
"!**/*.test.js",
|
|
54
|
+
"!**/*.test.js.map",
|
|
55
|
+
"!**/*.test.d.ts",
|
|
56
|
+
"!**/*.test.d.ts.map",
|
|
57
|
+
"!**/*.tsbuildinfo",
|
|
58
|
+
"LICENSE.md",
|
|
59
|
+
"README.md"
|
|
60
|
+
],
|
|
61
|
+
"//publishConfig": [
|
|
62
|
+
"provenance is NOT set here, and its absence is load-bearing. Trusted publishing",
|
|
63
|
+
"generates a provenance attestation on its own, with no flag; setting the flag",
|
|
64
|
+
"instead forces provenance on EVERY publish, including the one manual publish a",
|
|
65
|
+
"brand-new package needs before it has a settings page to configure a trusted",
|
|
66
|
+
"publisher on - and provenance cannot be generated outside a cloud CI runner, so",
|
|
67
|
+
"that first publish would fail. See docs/RELEASING.md step 4."
|
|
68
|
+
],
|
|
69
|
+
"publishConfig": {
|
|
70
|
+
"access": "public"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc"
|
|
74
|
+
}
|
|
75
|
+
}
|
package/src/agent/act.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The act facade (P7.7): the BORG_AS_MOD section-3 semantic verbs as typed
|
|
3
|
+
* command builders over the engine's PlayerCommand model, plus set-target as a
|
|
4
|
+
* direct state action (target.c). The arg keys match what the ported actions
|
|
5
|
+
* read (game/obj-cmd.ts, spell-cmd.ts, ranged-cmd.ts, cave-cmd.ts): item verbs
|
|
6
|
+
* carry `handle`, drop adds `quantity`, cast carries `spell`, movement/terrain
|
|
7
|
+
* verbs carry `dir`.
|
|
8
|
+
*
|
|
9
|
+
* Building a command is always legal; whether a code is fully wired in the
|
|
10
|
+
* engine yet is orthogonal to the contract (several are stubs today and are
|
|
11
|
+
* completed as the Borg port, P8, drives them). Store verbs emit semantic codes
|
|
12
|
+
* that the store API binds in P8; they are here so the contract is complete.
|
|
13
|
+
*
|
|
14
|
+
* Capability: command:add - enforced per verb when an AgentCapabilities is
|
|
15
|
+
* supplied (and still at controller install, controller.ts). With no caps (a
|
|
16
|
+
* trusted in-process host) every verb is granted.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import type { GameState } from "../game/context.js";
|
|
20
|
+
import { targetSetLocation, targetSetMonster } from "../game/target.js";
|
|
21
|
+
import { loc } from "../loc.js";
|
|
22
|
+
import { AgentCapabilityError } from "./types.js";
|
|
23
|
+
import type { AgentActions, AgentCapabilities, AgentCommand } from "./types.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Wrap every act verb so it throws AgentCapabilityError unless the caller was
|
|
27
|
+
* granted "command:add". With no AgentCapabilities (a trusted in-process host)
|
|
28
|
+
* the facade is returned unchanged - every verb is granted.
|
|
29
|
+
*/
|
|
30
|
+
function gateActions(
|
|
31
|
+
actions: AgentActions,
|
|
32
|
+
caps: AgentCapabilities | undefined,
|
|
33
|
+
): AgentActions {
|
|
34
|
+
if (!caps) return actions;
|
|
35
|
+
const guard = (): void => {
|
|
36
|
+
if (!caps.has("command:add")) {
|
|
37
|
+
throw new AgentCapabilityError(
|
|
38
|
+
`agent act: capability "command:add" is not granted`,
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const out = {} as Record<string, (...args: unknown[]) => unknown>;
|
|
43
|
+
for (const [key, fn] of Object.entries(actions) as [
|
|
44
|
+
string,
|
|
45
|
+
(...args: unknown[]) => unknown,
|
|
46
|
+
][]) {
|
|
47
|
+
out[key] = (...args: unknown[]): unknown => {
|
|
48
|
+
guard();
|
|
49
|
+
return fn(...args);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return out as unknown as AgentActions;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Build the act facade bound to a live state, gated by the given caps. */
|
|
56
|
+
export function createAgentActions(
|
|
57
|
+
state: GameState,
|
|
58
|
+
caps?: AgentCapabilities,
|
|
59
|
+
): AgentActions {
|
|
60
|
+
const cmd = (code: string, args?: Record<string, unknown>): AgentCommand =>
|
|
61
|
+
args ? { code, args } : { code };
|
|
62
|
+
const dirCmd = (code: string, dir: number): AgentCommand => ({ code, dir });
|
|
63
|
+
const itemCmd = (code: string, handle: number): AgentCommand =>
|
|
64
|
+
cmd(code, { handle });
|
|
65
|
+
|
|
66
|
+
const actions: AgentActions = {
|
|
67
|
+
move: (dir) => dirCmd("walk", dir),
|
|
68
|
+
melee: (dir) => dirCmd("walk", dir),
|
|
69
|
+
hold: () => cmd("hold"),
|
|
70
|
+
rest: () => cmd("rest"),
|
|
71
|
+
descend: () => cmd("descend"),
|
|
72
|
+
ascend: () => cmd("ascend"),
|
|
73
|
+
tunnel: (dir) => dirCmd("tunnel", dir),
|
|
74
|
+
open: (dir) => dirCmd("open", dir),
|
|
75
|
+
close: (dir) => dirCmd("close", dir),
|
|
76
|
+
disarm: (dir) => dirCmd("disarm", dir),
|
|
77
|
+
|
|
78
|
+
quaff: (handle) => itemCmd("quaff", handle),
|
|
79
|
+
read: (handle) => itemCmd("read", handle),
|
|
80
|
+
eat: (handle) => itemCmd("eat", handle),
|
|
81
|
+
wear: (handle) => itemCmd("wield", handle),
|
|
82
|
+
takeoff: (handle) => itemCmd("takeoff", handle),
|
|
83
|
+
drop: (handle, number) =>
|
|
84
|
+
cmd("drop", number !== undefined ? { handle, quantity: number } : { handle }),
|
|
85
|
+
pickup: () => cmd("pickup"),
|
|
86
|
+
destroy: (handle) => itemCmd("destroy", handle),
|
|
87
|
+
aimWand: (handle) => itemCmd("aim-wand", handle),
|
|
88
|
+
zapRod: (handle) => itemCmd("zap-rod", handle),
|
|
89
|
+
useStaff: (handle) => itemCmd("use-staff", handle),
|
|
90
|
+
activate: (handle) => itemCmd("activate", handle),
|
|
91
|
+
|
|
92
|
+
fire: (handle) => itemCmd("fire", handle),
|
|
93
|
+
throw: (handle) => itemCmd("throw", handle),
|
|
94
|
+
cast: (spell) => cmd("cast", { spell }),
|
|
95
|
+
|
|
96
|
+
setTargetMonster: (midx) => {
|
|
97
|
+
const mon = state.monsters[midx] ?? null;
|
|
98
|
+
return targetSetMonster(state, mon);
|
|
99
|
+
},
|
|
100
|
+
setTargetLocation: (x, y) => {
|
|
101
|
+
targetSetLocation(state, loc(x, y));
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
shopBuy: (index, number) =>
|
|
105
|
+
cmd("shop-buy", number !== undefined ? { index, quantity: number } : { index }),
|
|
106
|
+
shopSell: (handle, number) =>
|
|
107
|
+
cmd("shop-sell", number !== undefined ? { handle, quantity: number } : { handle }),
|
|
108
|
+
shopExit: () => cmd("shop-exit"),
|
|
109
|
+
|
|
110
|
+
raw: (code, args) => cmd(code, args),
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
return gateActions(actions, caps);
|
|
114
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The controller seam (P7.7): bind an AgentController as the game's nextCommand
|
|
3
|
+
* provider. runGameLoop calls state.nextCommand() each time it needs a command
|
|
4
|
+
* and returns LOOP_STATUS.INPUT when it yields null (game/loop.ts) - that is the
|
|
5
|
+
* perceive -> think -> act boundary. installController wires a controller into
|
|
6
|
+
* exactly that seam, hands it a perceive view and the act facade, and taps the
|
|
7
|
+
* message sink so the view can report "messages since the last decision".
|
|
8
|
+
*
|
|
9
|
+
* Capability gating (MOD_LIFECYCLE section 4): a controller must be able to ACT,
|
|
10
|
+
* so command:add is required at install; when a CapabilitySet is supplied and
|
|
11
|
+
* lacks it, install throws an author-facing error. Read access is NOT required
|
|
12
|
+
* as a blanket state:*.read wildcard - that would defeat least privilege for a
|
|
13
|
+
* controller that legitimately reads only a subset of domains (the sandboxed-
|
|
14
|
+
* plugin case, W2.1). Reads are gated per domain by the perceive facade (W1.4):
|
|
15
|
+
* a controller that reads a domain it was not granted throws at read time. With
|
|
16
|
+
* no CapabilitySet (an in-process trusted host, e.g. the bundled Borg before the
|
|
17
|
+
* sandbox), everything is granted.
|
|
18
|
+
*
|
|
19
|
+
* Determinism (the core-owned one-way ratchet, save-blocks.ts): a controller
|
|
20
|
+
* that declares nondeterministic:true trips the ratchet once via
|
|
21
|
+
* onNondeterministic - the runtime flips the save's determinism mode. A
|
|
22
|
+
* deterministic controller (the procedural Borg) draws only the seeded RNG and
|
|
23
|
+
* leaves the mode untouched.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import type { GameState, PlayerCommand } from "../game/context.js";
|
|
27
|
+
import { createAgentView } from "./perceive.js";
|
|
28
|
+
import { createAgentActions } from "./act.js";
|
|
29
|
+
import { AgentCapabilityError } from "./types.js";
|
|
30
|
+
import type {
|
|
31
|
+
AgentCapabilities,
|
|
32
|
+
AgentController,
|
|
33
|
+
AgentSession,
|
|
34
|
+
ControllerOptions,
|
|
35
|
+
} from "./types.js";
|
|
36
|
+
|
|
37
|
+
export { AgentCapabilityError } from "./types.js";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Capabilities every controller needs at install: it must be able to drive
|
|
41
|
+
* commands. Read access is enforced per domain by the perceive facade at read
|
|
42
|
+
* time, not required wholesale here (see the file header on least privilege).
|
|
43
|
+
*/
|
|
44
|
+
const REQUIRED_CAPABILITIES = ["command:add"] as const;
|
|
45
|
+
|
|
46
|
+
function requireCapabilities(caps: AgentCapabilities): void {
|
|
47
|
+
for (const cap of REQUIRED_CAPABILITIES) {
|
|
48
|
+
if (!caps.has(cap)) {
|
|
49
|
+
throw new AgentCapabilityError(
|
|
50
|
+
`agent controller requires capability "${cap}" - grant it in the mod manifest`,
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** A per-decision message tap: buffer messages, drain them when perceived. */
|
|
57
|
+
function makeMessageBuffer(): { push(text: string): void; drain(): string[] } {
|
|
58
|
+
let buffer: string[] = [];
|
|
59
|
+
return {
|
|
60
|
+
push: (text) => {
|
|
61
|
+
buffer.push(text);
|
|
62
|
+
},
|
|
63
|
+
drain: () => {
|
|
64
|
+
const out = buffer;
|
|
65
|
+
buffer = [];
|
|
66
|
+
return out;
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Install `controller` as the state's command provider, returning a session with
|
|
73
|
+
* the live facades and an uninstall that restores the previous provider and
|
|
74
|
+
* message sink. The controller is invoked at each LOOP_STATUS.INPUT boundary.
|
|
75
|
+
*/
|
|
76
|
+
export function installController(
|
|
77
|
+
state: GameState,
|
|
78
|
+
controller: AgentController,
|
|
79
|
+
opts: ControllerOptions = {},
|
|
80
|
+
): AgentSession {
|
|
81
|
+
if (opts.capabilities) requireCapabilities(opts.capabilities);
|
|
82
|
+
if (opts.nondeterministic) opts.onNondeterministic?.();
|
|
83
|
+
|
|
84
|
+
const buffer = makeMessageBuffer();
|
|
85
|
+
const view = createAgentView(state, buffer, opts.viewDeps, opts.capabilities);
|
|
86
|
+
const act = createAgentActions(state, opts.capabilities);
|
|
87
|
+
|
|
88
|
+
const prevNextCommand = state.nextCommand;
|
|
89
|
+
const prevMsg = state.msg;
|
|
90
|
+
|
|
91
|
+
/* Tap the message sink so the view reports messages since the last decision,
|
|
92
|
+
* while still forwarding to whatever sink was installed (a shell renderer). */
|
|
93
|
+
state.msg = (text: string): void => {
|
|
94
|
+
buffer.push(text);
|
|
95
|
+
prevMsg?.(text);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
state.nextCommand = (): PlayerCommand | null => controller(view, act);
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
view,
|
|
102
|
+
act,
|
|
103
|
+
uninstall: (): void => {
|
|
104
|
+
state.nextCommand = prevNextCommand;
|
|
105
|
+
if (prevMsg) state.msg = prevMsg;
|
|
106
|
+
else delete state.msg;
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capability-gated event-subscription seam (W1.6): a mod subscribes to the
|
|
3
|
+
* game event bus (events.ts) to react to what happens - turn/level changes,
|
|
4
|
+
* messages, sound, monster events - the "hooks" half of behavioral modding.
|
|
5
|
+
*
|
|
6
|
+
* A subscription wraps a GameEvents bus and checks "event:<name>" (the
|
|
7
|
+
* capability-model vocabulary, capabilities.ts) before honoring an `on`; an
|
|
8
|
+
* ungranted event throws AgentCapabilityError, exactly like the perceive/act
|
|
9
|
+
* facades (W1.4). With no AgentCapabilities (a trusted in-process host) every
|
|
10
|
+
* event is granted. The bus itself is core's faithful game-event.c port; this
|
|
11
|
+
* only adds the consent gate a sandboxed plugin (W2.1) needs.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { GameEventHandler, GameEvents, GameEventType } from "../events.js";
|
|
15
|
+
import { AgentCapabilityError } from "./types.js";
|
|
16
|
+
import type { AgentCapabilities } from "./types.js";
|
|
17
|
+
|
|
18
|
+
/** A capability-gated view of the event bus handed to a mod. */
|
|
19
|
+
export interface AgentEventSubscription {
|
|
20
|
+
/** Subscribe to an event, if "event:<type>" is granted (else throws). */
|
|
21
|
+
on<K extends GameEventType>(type: K, fn: GameEventHandler<K>): void;
|
|
22
|
+
/** Unsubscribe a handler (always allowed - dropping a hook needs no grant). */
|
|
23
|
+
off<K extends GameEventType>(type: K, fn: GameEventHandler<K>): void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Build a capability-gated subscription over `bus`. `on` throws
|
|
28
|
+
* AgentCapabilityError unless "event:<type>" is granted; absent caps grants all.
|
|
29
|
+
*/
|
|
30
|
+
export function subscribeEvents(
|
|
31
|
+
bus: GameEvents,
|
|
32
|
+
caps?: AgentCapabilities,
|
|
33
|
+
): AgentEventSubscription {
|
|
34
|
+
return {
|
|
35
|
+
on: (type, fn) => {
|
|
36
|
+
if (caps && !caps.has(`event:${type}`)) {
|
|
37
|
+
throw new AgentCapabilityError(
|
|
38
|
+
`agent events: capability "event:${type}" is not granted`,
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
bus.on(type, fn);
|
|
42
|
+
},
|
|
43
|
+
off: (type, fn) => {
|
|
44
|
+
bus.off(type, fn);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rpgm-tools/neo-angband-core agent API (P7 phase 7): the frozen perceive/act/controller
|
|
3
|
+
* facade every agent mod - the bundled Borg (P8) first, third-party and AI
|
|
4
|
+
* agents after - drives the game through, with no privileged core access.
|
|
5
|
+
*
|
|
6
|
+
* See BORG_AS_MOD.md sections 3 and 5 for the contract this realizes. FROZEN at
|
|
7
|
+
* AGENT_API_VERSION 1.0.0 (ratified 2026-07-14, the P7 -> P8 gate); add-only
|
|
8
|
+
* from here (see types.ts freeze note).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export { AGENT_API_VERSION, AGENT_STATE_DOMAINS } from "./types.js";
|
|
12
|
+
export type {
|
|
13
|
+
AgentCapabilities,
|
|
14
|
+
AgentCommand,
|
|
15
|
+
AgentActions,
|
|
16
|
+
AgentController,
|
|
17
|
+
AgentSession,
|
|
18
|
+
AgentView,
|
|
19
|
+
AgentViewDeps,
|
|
20
|
+
CellView,
|
|
21
|
+
ControllerOptions,
|
|
22
|
+
ItemView,
|
|
23
|
+
MonsterView,
|
|
24
|
+
PlayerStatusView,
|
|
25
|
+
PlayerView,
|
|
26
|
+
SpellbookView,
|
|
27
|
+
SpellView,
|
|
28
|
+
StoreItemView,
|
|
29
|
+
StoreView,
|
|
30
|
+
TargetView,
|
|
31
|
+
} from "./types.js";
|
|
32
|
+
export { createAgentView } from "./perceive.js";
|
|
33
|
+
export { createAgentActions } from "./act.js";
|
|
34
|
+
export { AgentCapabilityError, installController } from "./controller.js";
|
|
35
|
+
export { subscribeEvents } from "./events.js";
|
|
36
|
+
export type { AgentEventSubscription } from "./events.js";
|