@rpgm-tools/neo-angband-core 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +43 -0
- package/README.md +80 -0
- package/dist/agent/act.d.ts +22 -0
- package/dist/agent/act.d.ts.map +1 -0
- package/dist/agent/act.js +88 -0
- package/dist/agent/act.js.map +1 -0
- package/dist/agent/controller.d.ts +34 -0
- package/dist/agent/controller.d.ts.map +1 -0
- package/dist/agent/controller.js +90 -0
- package/dist/agent/controller.js.map +1 -0
- package/dist/agent/events.d.ts +27 -0
- package/dist/agent/events.d.ts.map +1 -0
- package/dist/agent/events.js +31 -0
- package/dist/agent/events.js.map +1 -0
- package/dist/agent/index.d.ts +17 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +15 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/perceive.d.ts +21 -0
- package/dist/agent/perceive.d.ts.map +1 -0
- package/dist/agent/perceive.js +386 -0
- package/dist/agent/perceive.js.map +1 -0
- package/dist/agent/types.d.ts +436 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +63 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bitflag.d.ts +199 -0
- package/dist/bitflag.d.ts.map +1 -0
- package/dist/bitflag.js +478 -0
- package/dist/bitflag.js.map +1 -0
- package/dist/cmd.d.ts +164 -0
- package/dist/cmd.d.ts.map +1 -0
- package/dist/cmd.js +350 -0
- package/dist/cmd.js.map +1 -0
- package/dist/color.d.ts +104 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +240 -0
- package/dist/color.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +119 -0
- package/dist/combat/brand-slay.d.ts.map +1 -0
- package/dist/combat/brand-slay.js +264 -0
- package/dist/combat/brand-slay.js.map +1 -0
- package/dist/combat/hit.d.ts +198 -0
- package/dist/combat/hit.d.ts.map +1 -0
- package/dist/combat/hit.js +310 -0
- package/dist/combat/hit.js.map +1 -0
- package/dist/combat/index.d.ts +15 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +15 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/combat/melee.d.ts +261 -0
- package/dist/combat/melee.d.ts.map +1 -0
- package/dist/combat/melee.js +402 -0
- package/dist/combat/melee.js.map +1 -0
- package/dist/combat/mon-melee.d.ts +233 -0
- package/dist/combat/mon-melee.d.ts.map +1 -0
- package/dist/combat/mon-melee.js +883 -0
- package/dist/combat/mon-melee.js.map +1 -0
- package/dist/combat/ranged.d.ts +89 -0
- package/dist/combat/ranged.d.ts.map +1 -0
- package/dist/combat/ranged.js +253 -0
- package/dist/combat/ranged.js.map +1 -0
- package/dist/constants.d.ts +134 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +171 -0
- package/dist/constants.js.map +1 -0
- package/dist/dice.d.ts +91 -0
- package/dist/dice.d.ts.map +1 -0
- package/dist/dice.js +424 -0
- package/dist/dice.js.map +1 -0
- package/dist/effects/effect-choice.d.ts +15 -0
- package/dist/effects/effect-choice.d.ts.map +1 -0
- package/dist/effects/effect-choice.js +18 -0
- package/dist/effects/effect-choice.js.map +1 -0
- package/dist/effects/effect-info.d.ts +124 -0
- package/dist/effects/effect-info.d.ts.map +1 -0
- package/dist/effects/effect-info.js +706 -0
- package/dist/effects/effect-info.js.map +1 -0
- package/dist/effects/effect.d.ts +165 -0
- package/dist/effects/effect.d.ts.map +1 -0
- package/dist/effects/effect.js +452 -0
- package/dist/effects/effect.js.map +1 -0
- package/dist/effects/handlers.d.ts +70 -0
- package/dist/effects/handlers.d.ts.map +1 -0
- package/dist/effects/handlers.js +394 -0
- package/dist/effects/handlers.js.map +1 -0
- package/dist/effects/interpreter.d.ts +291 -0
- package/dist/effects/interpreter.d.ts.map +1 -0
- package/dist/effects/interpreter.js +325 -0
- package/dist/effects/interpreter.js.map +1 -0
- package/dist/events.d.ts +188 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +138 -0
- package/dist/events.js.map +1 -0
- package/dist/expression.d.ts +83 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +333 -0
- package/dist/expression.js.map +1 -0
- package/dist/game/cave-cmd.d.ts +195 -0
- package/dist/game/cave-cmd.d.ts.map +1 -0
- package/dist/game/cave-cmd.js +968 -0
- package/dist/game/cave-cmd.js.map +1 -0
- package/dist/game/char-sheet.d.ts +189 -0
- package/dist/game/char-sheet.d.ts.map +1 -0
- package/dist/game/char-sheet.js +381 -0
- package/dist/game/char-sheet.js.map +1 -0
- package/dist/game/chest.d.ts +94 -0
- package/dist/game/chest.d.ts.map +1 -0
- package/dist/game/chest.js +267 -0
- package/dist/game/chest.js.map +1 -0
- package/dist/game/context.d.ts +970 -0
- package/dist/game/context.d.ts.map +1 -0
- package/dist/game/context.js +353 -0
- package/dist/game/context.js.map +1 -0
- package/dist/game/curse-tick.d.ts +35 -0
- package/dist/game/curse-tick.d.ts.map +1 -0
- package/dist/game/curse-tick.js +100 -0
- package/dist/game/curse-tick.js.map +1 -0
- package/dist/game/describe.d.ts +20 -0
- package/dist/game/describe.d.ts.map +1 -0
- package/dist/game/describe.js +45 -0
- package/dist/game/describe.js.map +1 -0
- package/dist/game/display.d.ts +196 -0
- package/dist/game/display.d.ts.map +1 -0
- package/dist/game/display.js +684 -0
- package/dist/game/display.js.map +1 -0
- package/dist/game/dump-level.d.ts +37 -0
- package/dist/game/dump-level.d.ts.map +1 -0
- package/dist/game/dump-level.js +110 -0
- package/dist/game/dump-level.js.map +1 -0
- package/dist/game/effect-attack.d.ts +36 -0
- package/dist/game/effect-attack.d.ts.map +1 -0
- package/dist/game/effect-attack.js +694 -0
- package/dist/game/effect-attack.js.map +1 -0
- package/dist/game/effect-detect.d.ts +34 -0
- package/dist/game/effect-detect.d.ts.map +1 -0
- package/dist/game/effect-detect.js +456 -0
- package/dist/game/effect-detect.js.map +1 -0
- package/dist/game/effect-env.d.ts +77 -0
- package/dist/game/effect-env.d.ts.map +1 -0
- package/dist/game/effect-env.js +166 -0
- package/dist/game/effect-env.js.map +1 -0
- package/dist/game/effect-game-env.d.ts +76 -0
- package/dist/game/effect-game-env.d.ts.map +1 -0
- package/dist/game/effect-game-env.js +23 -0
- package/dist/game/effect-game-env.js.map +1 -0
- package/dist/game/effect-general.d.ts +98 -0
- package/dist/game/effect-general.d.ts.map +1 -0
- package/dist/game/effect-general.js +914 -0
- package/dist/game/effect-general.js.map +1 -0
- package/dist/game/effect-item.d.ts +124 -0
- package/dist/game/effect-item.d.ts.map +1 -0
- package/dist/game/effect-item.js +789 -0
- package/dist/game/effect-item.js.map +1 -0
- package/dist/game/effect-melee.d.ts +43 -0
- package/dist/game/effect-melee.d.ts.map +1 -0
- package/dist/game/effect-melee.js +477 -0
- package/dist/game/effect-melee.js.map +1 -0
- package/dist/game/effect-mon-origin.d.ts +67 -0
- package/dist/game/effect-mon-origin.d.ts.map +1 -0
- package/dist/game/effect-mon-origin.js +164 -0
- package/dist/game/effect-mon-origin.js.map +1 -0
- package/dist/game/effect-monster.d.ts +29 -0
- package/dist/game/effect-monster.d.ts.map +1 -0
- package/dist/game/effect-monster.js +281 -0
- package/dist/game/effect-monster.js.map +1 -0
- package/dist/game/effect-summon.d.ts +37 -0
- package/dist/game/effect-summon.d.ts.map +1 -0
- package/dist/game/effect-summon.js +113 -0
- package/dist/game/effect-summon.js.map +1 -0
- package/dist/game/effect-teleport.d.ts +130 -0
- package/dist/game/effect-teleport.d.ts.map +1 -0
- package/dist/game/effect-teleport.js +529 -0
- package/dist/game/effect-teleport.js.map +1 -0
- package/dist/game/effect-terrain.d.ts +91 -0
- package/dist/game/effect-terrain.d.ts.map +1 -0
- package/dist/game/effect-terrain.js +812 -0
- package/dist/game/effect-terrain.js.map +1 -0
- package/dist/game/energy.d.ts +45 -0
- package/dist/game/energy.d.ts.map +1 -0
- package/dist/game/energy.js +51 -0
- package/dist/game/energy.js.map +1 -0
- package/dist/game/equip-cmp.d.ts +138 -0
- package/dist/game/equip-cmp.d.ts.map +1 -0
- package/dist/game/equip-cmp.js +363 -0
- package/dist/game/equip-cmp.js.map +1 -0
- package/dist/game/floor.d.ts +182 -0
- package/dist/game/floor.d.ts.map +1 -0
- package/dist/game/floor.js +435 -0
- package/dist/game/floor.js.map +1 -0
- package/dist/game/gear.d.ts +408 -0
- package/dist/game/gear.d.ts.map +1 -0
- package/dist/game/gear.js +1037 -0
- package/dist/game/gear.js.map +1 -0
- package/dist/game/harness.d.ts +61 -0
- package/dist/game/harness.d.ts.map +1 -0
- package/dist/game/harness.js +198 -0
- package/dist/game/harness.js.map +1 -0
- package/dist/game/history.d.ts +49 -0
- package/dist/game/history.d.ts.map +1 -0
- package/dist/game/history.js +55 -0
- package/dist/game/history.js.map +1 -0
- package/dist/game/ignore-cmd.d.ts +42 -0
- package/dist/game/ignore-cmd.d.ts.map +1 -0
- package/dist/game/ignore-cmd.js +59 -0
- package/dist/game/ignore-cmd.js.map +1 -0
- package/dist/game/inscription-confirm.d.ts +80 -0
- package/dist/game/inscription-confirm.d.ts.map +1 -0
- package/dist/game/inscription-confirm.js +95 -0
- package/dist/game/inscription-confirm.js.map +1 -0
- package/dist/game/known.d.ts +297 -0
- package/dist/game/known.d.ts.map +1 -0
- package/dist/game/known.js +849 -0
- package/dist/game/known.js.map +1 -0
- package/dist/game/loop.d.ts +139 -0
- package/dist/game/loop.d.ts.map +1 -0
- package/dist/game/loop.js +631 -0
- package/dist/game/loop.js.map +1 -0
- package/dist/game/lore-color.d.ts +25 -0
- package/dist/game/lore-color.d.ts.map +1 -0
- package/dist/game/lore-color.js +95 -0
- package/dist/game/lore-color.js.map +1 -0
- package/dist/game/mon-cast.d.ts +150 -0
- package/dist/game/mon-cast.d.ts.map +1 -0
- package/dist/game/mon-cast.js +301 -0
- package/dist/game/mon-cast.js.map +1 -0
- package/dist/game/mon-cmd.d.ts +51 -0
- package/dist/game/mon-cmd.d.ts.map +1 -0
- package/dist/game/mon-cmd.js +670 -0
- package/dist/game/mon-cmd.js.map +1 -0
- package/dist/game/mon-death.d.ts +143 -0
- package/dist/game/mon-death.d.ts.map +1 -0
- package/dist/game/mon-death.js +328 -0
- package/dist/game/mon-death.js.map +1 -0
- package/dist/game/mon-group.d.ts +81 -0
- package/dist/game/mon-group.d.ts.map +1 -0
- package/dist/game/mon-group.js +323 -0
- package/dist/game/mon-group.js.map +1 -0
- package/dist/game/mon-list.d.ts +85 -0
- package/dist/game/mon-list.d.ts.map +1 -0
- package/dist/game/mon-list.js +154 -0
- package/dist/game/mon-list.js.map +1 -0
- package/dist/game/mon-message.d.ts +100 -0
- package/dist/game/mon-message.d.ts.map +1 -0
- package/dist/game/mon-message.js +336 -0
- package/dist/game/mon-message.js.map +1 -0
- package/dist/game/mon-place.d.ts +226 -0
- package/dist/game/mon-place.d.ts.map +1 -0
- package/dist/game/mon-place.js +642 -0
- package/dist/game/mon-place.js.map +1 -0
- package/dist/game/mon-ranged.d.ts +87 -0
- package/dist/game/mon-ranged.d.ts.map +1 -0
- package/dist/game/mon-ranged.js +353 -0
- package/dist/game/mon-ranged.js.map +1 -0
- package/dist/game/mon-shape.d.ts +43 -0
- package/dist/game/mon-shape.d.ts.map +1 -0
- package/dist/game/mon-shape.js +115 -0
- package/dist/game/mon-shape.js.map +1 -0
- package/dist/game/mon-side.d.ts +63 -0
- package/dist/game/mon-side.d.ts.map +1 -0
- package/dist/game/mon-side.js +403 -0
- package/dist/game/mon-side.js.map +1 -0
- package/dist/game/monster-turn.d.ts +195 -0
- package/dist/game/monster-turn.d.ts.map +1 -0
- package/dist/game/monster-turn.js +1560 -0
- package/dist/game/monster-turn.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +453 -0
- package/dist/game/obj-cmd.d.ts.map +1 -0
- package/dist/game/obj-cmd.js +1530 -0
- package/dist/game/obj-cmd.js.map +1 -0
- package/dist/game/obj-list.d.ts +92 -0
- package/dist/game/obj-list.d.ts.map +1 -0
- package/dist/game/obj-list.js +251 -0
- package/dist/game/obj-list.js.map +1 -0
- package/dist/game/object-inspect.d.ts +37 -0
- package/dist/game/object-inspect.d.ts.map +1 -0
- package/dist/game/object-inspect.js +106 -0
- package/dist/game/object-inspect.js.map +1 -0
- package/dist/game/pickup.d.ts +126 -0
- package/dist/game/pickup.d.ts.map +1 -0
- package/dist/game/pickup.js +367 -0
- package/dist/game/pickup.js.map +1 -0
- package/dist/game/player-path.d.ts +133 -0
- package/dist/game/player-path.d.ts.map +1 -0
- package/dist/game/player-path.js +1268 -0
- package/dist/game/player-path.js.map +1 -0
- package/dist/game/player-side.d.ts +59 -0
- package/dist/game/player-side.d.ts.map +1 -0
- package/dist/game/player-side.js +506 -0
- package/dist/game/player-side.js.map +1 -0
- package/dist/game/player-turn.d.ts +161 -0
- package/dist/game/player-turn.d.ts.map +1 -0
- package/dist/game/player-turn.js +739 -0
- package/dist/game/player-turn.js.map +1 -0
- package/dist/game/project-cast.d.ts +268 -0
- package/dist/game/project-cast.d.ts.map +1 -0
- package/dist/game/project-cast.js +496 -0
- package/dist/game/project-cast.js.map +1 -0
- package/dist/game/project-feat.d.ts +47 -0
- package/dist/game/project-feat.d.ts.map +1 -0
- package/dist/game/project-feat.js +350 -0
- package/dist/game/project-feat.js.map +1 -0
- package/dist/game/project-monster.d.ts +106 -0
- package/dist/game/project-monster.d.ts.map +1 -0
- package/dist/game/project-monster.js +272 -0
- package/dist/game/project-monster.js.map +1 -0
- package/dist/game/project-obj.d.ts +60 -0
- package/dist/game/project-obj.d.ts.map +1 -0
- package/dist/game/project-obj.js +245 -0
- package/dist/game/project-obj.js.map +1 -0
- package/dist/game/project-player.d.ts +120 -0
- package/dist/game/project-player.d.ts.map +1 -0
- package/dist/game/project-player.js +108 -0
- package/dist/game/project-player.js.map +1 -0
- package/dist/game/quest.d.ts +101 -0
- package/dist/game/quest.d.ts.map +1 -0
- package/dist/game/quest.js +192 -0
- package/dist/game/quest.js.map +1 -0
- package/dist/game/ranged-cmd.d.ts +32 -0
- package/dist/game/ranged-cmd.d.ts.map +1 -0
- package/dist/game/ranged-cmd.js +372 -0
- package/dist/game/ranged-cmd.js.map +1 -0
- package/dist/game/scheduler.d.ts +47 -0
- package/dist/game/scheduler.d.ts.map +1 -0
- package/dist/game/scheduler.js +141 -0
- package/dist/game/scheduler.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +104 -0
- package/dist/game/spell-cmd.d.ts.map +1 -0
- package/dist/game/spell-cmd.js +320 -0
- package/dist/game/spell-cmd.js.map +1 -0
- package/dist/game/spoil.d.ts +28 -0
- package/dist/game/spoil.d.ts.map +1 -0
- package/dist/game/spoil.js +435 -0
- package/dist/game/spoil.js.map +1 -0
- package/dist/game/steal.d.ts +35 -0
- package/dist/game/steal.d.ts.map +1 -0
- package/dist/game/steal.js +145 -0
- package/dist/game/steal.js.map +1 -0
- package/dist/game/take-hit-hooks.d.ts +52 -0
- package/dist/game/take-hit-hooks.d.ts.map +1 -0
- package/dist/game/take-hit-hooks.js +127 -0
- package/dist/game/take-hit-hooks.js.map +1 -0
- package/dist/game/target-loop.d.ts +119 -0
- package/dist/game/target-loop.d.ts.map +1 -0
- package/dist/game/target-loop.js +408 -0
- package/dist/game/target-loop.js.map +1 -0
- package/dist/game/target.d.ts +133 -0
- package/dist/game/target.d.ts.map +1 -0
- package/dist/game/target.js +353 -0
- package/dist/game/target.js.map +1 -0
- package/dist/game/thrust.d.ts +37 -0
- package/dist/game/thrust.d.ts.map +1 -0
- package/dist/game/thrust.js +155 -0
- package/dist/game/thrust.js.map +1 -0
- package/dist/game/trap.d.ts +218 -0
- package/dist/game/trap.d.ts.map +1 -0
- package/dist/game/trap.js +618 -0
- package/dist/game/trap.js.map +1 -0
- package/dist/game/ui-entry.d.ts +282 -0
- package/dist/game/ui-entry.d.ts.map +1 -0
- package/dist/game/ui-entry.js +1838 -0
- package/dist/game/ui-entry.js.map +1 -0
- package/dist/game/wizard.d.ts +654 -0
- package/dist/game/wizard.d.ts.map +1 -0
- package/dist/game/wizard.js +1323 -0
- package/dist/game/wizard.js.map +1 -0
- package/dist/game/world.d.ts +183 -0
- package/dist/game/world.d.ts.map +1 -0
- package/dist/game/world.js +685 -0
- package/dist/game/world.js.map +1 -0
- package/dist/gen/cave.d.ts +247 -0
- package/dist/gen/cave.d.ts.map +1 -0
- package/dist/gen/cave.js +2406 -0
- package/dist/gen/cave.js.map +1 -0
- package/dist/gen/gen-monster.d.ts +151 -0
- package/dist/gen/gen-monster.d.ts.map +1 -0
- package/dist/gen/gen-monster.js +473 -0
- package/dist/gen/gen-monster.js.map +1 -0
- package/dist/gen/generate.d.ts +240 -0
- package/dist/gen/generate.d.ts.map +1 -0
- package/dist/gen/generate.js +358 -0
- package/dist/gen/generate.js.map +1 -0
- package/dist/gen/room.d.ts +160 -0
- package/dist/gen/room.d.ts.map +1 -0
- package/dist/gen/room.js +1910 -0
- package/dist/gen/room.js.map +1 -0
- package/dist/gen/util.d.ts +466 -0
- package/dist/gen/util.d.ts.map +1 -0
- package/dist/gen/util.js +1553 -0
- package/dist/gen/util.js.map +1 -0
- package/dist/generated/dun-profiles.d.ts +44 -0
- package/dist/generated/dun-profiles.d.ts.map +1 -0
- package/dist/generated/dun-profiles.js +28 -0
- package/dist/generated/dun-profiles.js.map +1 -0
- package/dist/generated/effects.d.ts +1021 -0
- package/dist/generated/effects.d.ts.map +1 -0
- package/dist/generated/effects.js +239 -0
- package/dist/generated/effects.js.map +1 -0
- package/dist/generated/elements.d.ts +83 -0
- package/dist/generated/elements.d.ts.map +1 -0
- package/dist/generated/elements.js +60 -0
- package/dist/generated/elements.js.map +1 -0
- package/dist/generated/equip-slots.d.ts +104 -0
- package/dist/generated/equip-slots.d.ts.map +1 -0
- package/dist/generated/equip-slots.js +34 -0
- package/dist/generated/equip-slots.js.map +1 -0
- package/dist/generated/history-types.d.ts +52 -0
- package/dist/generated/history-types.d.ts.map +1 -0
- package/dist/generated/history-types.js +32 -0
- package/dist/generated/history-types.js.map +1 -0
- package/dist/generated/ignore-types.d.ts +116 -0
- package/dist/generated/ignore-types.d.ts.map +1 -0
- package/dist/generated/ignore-types.js +64 -0
- package/dist/generated/ignore-types.js.map +1 -0
- package/dist/generated/index.d.ts +32 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +33 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/kind-flags.d.ts +72 -0
- package/dist/generated/kind-flags.d.ts.map +1 -0
- package/dist/generated/kind-flags.js +42 -0
- package/dist/generated/kind-flags.js.map +1 -0
- package/dist/generated/message.d.ts +624 -0
- package/dist/generated/message.d.ts.map +1 -0
- package/dist/generated/message.js +318 -0
- package/dist/generated/message.js.map +1 -0
- package/dist/generated/mon-message.d.ts +386 -0
- package/dist/generated/mon-message.d.ts.map +1 -0
- package/dist/generated/mon-message.js +136 -0
- package/dist/generated/mon-message.js.map +1 -0
- package/dist/generated/mon-race-flags.d.ts +433 -0
- package/dist/generated/mon-race-flags.d.ts.map +1 -0
- package/dist/generated/mon-race-flags.js +180 -0
- package/dist/generated/mon-race-flags.js.map +1 -0
- package/dist/generated/mon-spells.d.ts +380 -0
- package/dist/generated/mon-spells.d.ts.map +1 -0
- package/dist/generated/mon-spells.js +196 -0
- package/dist/generated/mon-spells.js.map +1 -0
- package/dist/generated/mon-temp-flags.d.ts +52 -0
- package/dist/generated/mon-temp-flags.d.ts.map +1 -0
- package/dist/generated/mon-temp-flags.js +32 -0
- package/dist/generated/mon-temp-flags.js.map +1 -0
- package/dist/generated/mon-timed.d.ts +118 -0
- package/dist/generated/mon-timed.d.ts.map +1 -0
- package/dist/generated/mon-timed.js +32 -0
- package/dist/generated/mon-timed.js.map +1 -0
- package/dist/generated/object-flags.d.ts +169 -0
- package/dist/generated/object-flags.d.ts.map +1 -0
- package/dist/generated/object-flags.js +93 -0
- package/dist/generated/object-flags.js.map +1 -0
- package/dist/generated/object-modifiers.d.ts +50 -0
- package/dist/generated/object-modifiers.d.ts.map +1 -0
- package/dist/generated/object-modifiers.js +41 -0
- package/dist/generated/object-modifiers.js.map +1 -0
- package/dist/generated/options.d.ts +284 -0
- package/dist/generated/options.d.ts.map +1 -0
- package/dist/generated/options.js +102 -0
- package/dist/generated/options.js.map +1 -0
- package/dist/generated/origins.d.ts +138 -0
- package/dist/generated/origins.d.ts.map +1 -0
- package/dist/generated/origins.js +62 -0
- package/dist/generated/origins.js.map +1 -0
- package/dist/generated/parser-errors.d.ts +264 -0
- package/dist/generated/parser-errors.d.ts.map +1 -0
- package/dist/generated/parser-errors.js +138 -0
- package/dist/generated/parser-errors.js.map +1 -0
- package/dist/generated/player-flags.d.ts +62 -0
- package/dist/generated/player-flags.d.ts.map +1 -0
- package/dist/generated/player-flags.js +46 -0
- package/dist/generated/player-flags.js.map +1 -0
- package/dist/generated/player-timed.d.ts +273 -0
- package/dist/generated/player-timed.d.ts.map +1 -0
- package/dist/generated/player-timed.js +116 -0
- package/dist/generated/player-timed.js.map +1 -0
- package/dist/generated/projections.d.ts +130 -0
- package/dist/generated/projections.d.ts.map +1 -0
- package/dist/generated/projections.js +101 -0
- package/dist/generated/projections.js.map +1 -0
- package/dist/generated/randart-properties.d.ts +388 -0
- package/dist/generated/randart-properties.d.ts.map +1 -0
- package/dist/generated/randart-properties.js +200 -0
- package/dist/generated/randart-properties.js.map +1 -0
- package/dist/generated/room-flags.d.ts +21 -0
- package/dist/generated/room-flags.d.ts.map +1 -0
- package/dist/generated/room-flags.js +19 -0
- package/dist/generated/room-flags.js.map +1 -0
- package/dist/generated/rooms.d.ts +122 -0
- package/dist/generated/rooms.d.ts.map +1 -0
- package/dist/generated/rooms.js +48 -0
- package/dist/generated/rooms.js.map +1 -0
- package/dist/generated/square-flags.d.ts +96 -0
- package/dist/generated/square-flags.d.ts.map +1 -0
- package/dist/generated/square-flags.js +54 -0
- package/dist/generated/square-flags.js.map +1 -0
- package/dist/generated/stats.d.ts +23 -0
- package/dist/generated/stats.d.ts.map +1 -0
- package/dist/generated/stats.js +20 -0
- package/dist/generated/stats.js.map +1 -0
- package/dist/generated/terrain-flags.d.ts +136 -0
- package/dist/generated/terrain-flags.d.ts.map +1 -0
- package/dist/generated/terrain-flags.js +74 -0
- package/dist/generated/terrain-flags.js.map +1 -0
- package/dist/generated/terrain.d.ts +83 -0
- package/dist/generated/terrain.d.ts.map +1 -0
- package/dist/generated/terrain.js +60 -0
- package/dist/generated/terrain.js.map +1 -0
- package/dist/generated/trap-flags.d.ts +68 -0
- package/dist/generated/trap-flags.d.ts.map +1 -0
- package/dist/generated/trap-flags.js +40 -0
- package/dist/generated/trap-flags.js.map +1 -0
- package/dist/generated/tvals.d.ts +152 -0
- package/dist/generated/tvals.d.ts.map +1 -0
- package/dist/generated/tvals.js +82 -0
- package/dist/generated/tvals.js.map +1 -0
- package/dist/generated/ui-entry-renderers.d.ts +62 -0
- package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
- package/dist/generated/ui-entry-renderers.js +22 -0
- package/dist/generated/ui-entry-renderers.js.map +1 -0
- package/dist/guard.d.ts +43 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +65 -0
- package/dist/guard.js.map +1 -0
- package/dist/host/args.d.ts +129 -0
- package/dist/host/args.d.ts.map +1 -0
- package/dist/host/args.js +251 -0
- package/dist/host/args.js.map +1 -0
- package/dist/host/bridge.d.ts +61 -0
- package/dist/host/bridge.d.ts.map +1 -0
- package/dist/host/bridge.js +176 -0
- package/dist/host/bridge.js.map +1 -0
- package/dist/host/index.d.ts +18 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +18 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/io.d.ts +169 -0
- package/dist/host/io.d.ts.map +1 -0
- package/dist/host/io.js +137 -0
- package/dist/host/io.js.map +1 -0
- package/dist/host/memory.d.ts +56 -0
- package/dist/host/memory.d.ts.map +1 -0
- package/dist/host/memory.js +105 -0
- package/dist/host/memory.js.map +1 -0
- package/dist/host/raw.d.ts +114 -0
- package/dist/host/raw.d.ts.map +1 -0
- package/dist/host/raw.js +107 -0
- package/dist/host/raw.js.map +1 -0
- package/dist/index.d.ts +180 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -0
- package/dist/index.js.map +1 -0
- package/dist/loc.d.ts +63 -0
- package/dist/loc.d.ts.map +1 -0
- package/dist/loc.js +128 -0
- package/dist/loc.js.map +1 -0
- package/dist/mod/hooks.d.ts +204 -0
- package/dist/mod/hooks.d.ts.map +1 -0
- package/dist/mod/hooks.js +161 -0
- package/dist/mod/hooks.js.map +1 -0
- package/dist/mod/ids.d.ts +160 -0
- package/dist/mod/ids.d.ts.map +1 -0
- package/dist/mod/ids.js +343 -0
- package/dist/mod/ids.js.map +1 -0
- package/dist/mod/registry-host.d.ts +156 -0
- package/dist/mod/registry-host.d.ts.map +1 -0
- package/dist/mod/registry-host.js +142 -0
- package/dist/mod/registry-host.js.map +1 -0
- package/dist/mod/save-blocks.d.ts +201 -0
- package/dist/mod/save-blocks.d.ts.map +1 -0
- package/dist/mod/save-blocks.js +640 -0
- package/dist/mod/save-blocks.js.map +1 -0
- package/dist/mod/vocabulary.d.ts +104 -0
- package/dist/mod/vocabulary.d.ts.map +1 -0
- package/dist/mod/vocabulary.js +0 -0
- package/dist/mod/vocabulary.js.map +1 -0
- package/dist/mon/bind.d.ts +266 -0
- package/dist/mon/bind.d.ts.map +1 -0
- package/dist/mon/bind.js +610 -0
- package/dist/mon/bind.js.map +1 -0
- package/dist/mon/desc.d.ts +72 -0
- package/dist/mon/desc.d.ts.map +1 -0
- package/dist/mon/desc.js +237 -0
- package/dist/mon/desc.js.map +1 -0
- package/dist/mon/knowledge-groups.d.ts +61 -0
- package/dist/mon/knowledge-groups.d.ts.map +1 -0
- package/dist/mon/knowledge-groups.js +121 -0
- package/dist/mon/knowledge-groups.js.map +1 -0
- package/dist/mon/lore-describe.d.ts +216 -0
- package/dist/mon/lore-describe.d.ts.map +1 -0
- package/dist/mon/lore-describe.js +1105 -0
- package/dist/mon/lore-describe.js.map +1 -0
- package/dist/mon/lore.d.ts +117 -0
- package/dist/mon/lore.d.ts.map +1 -0
- package/dist/mon/lore.js +221 -0
- package/dist/mon/lore.js.map +1 -0
- package/dist/mon/make.d.ts +147 -0
- package/dist/mon/make.d.ts.map +1 -0
- package/dist/mon/make.js +353 -0
- package/dist/mon/make.js.map +1 -0
- package/dist/mon/monster.d.ts +94 -0
- package/dist/mon/monster.d.ts.map +1 -0
- package/dist/mon/monster.js +90 -0
- package/dist/mon/monster.js.map +1 -0
- package/dist/mon/predicate.d.ts +87 -0
- package/dist/mon/predicate.d.ts.map +1 -0
- package/dist/mon/predicate.js +190 -0
- package/dist/mon/predicate.js.map +1 -0
- package/dist/mon/project-mon.d.ts +129 -0
- package/dist/mon/project-mon.d.ts.map +1 -0
- package/dist/mon/project-mon.js +652 -0
- package/dist/mon/project-mon.js.map +1 -0
- package/dist/mon/spell.d.ts +155 -0
- package/dist/mon/spell.d.ts.map +1 -0
- package/dist/mon/spell.js +355 -0
- package/dist/mon/spell.js.map +1 -0
- package/dist/mon/steal.d.ts +112 -0
- package/dist/mon/steal.d.ts.map +1 -0
- package/dist/mon/steal.js +163 -0
- package/dist/mon/steal.js.map +1 -0
- package/dist/mon/summon.d.ts +62 -0
- package/dist/mon/summon.d.ts.map +1 -0
- package/dist/mon/summon.js +111 -0
- package/dist/mon/summon.js.map +1 -0
- package/dist/mon/take-hit.d.ts +75 -0
- package/dist/mon/take-hit.d.ts.map +1 -0
- package/dist/mon/take-hit.js +122 -0
- package/dist/mon/take-hit.js.map +1 -0
- package/dist/mon/timed.d.ts +74 -0
- package/dist/mon/timed.d.ts.map +1 -0
- package/dist/mon/timed.js +219 -0
- package/dist/mon/timed.js.map +1 -0
- package/dist/mon/types.d.ts +252 -0
- package/dist/mon/types.d.ts.map +1 -0
- package/dist/mon/types.js +46 -0
- package/dist/mon/types.js.map +1 -0
- package/dist/msg.d.ts +71 -0
- package/dist/msg.d.ts.map +1 -0
- package/dist/msg.js +126 -0
- package/dist/msg.js.map +1 -0
- package/dist/obj/artifact-fake.d.ts +39 -0
- package/dist/obj/artifact-fake.d.ts.map +1 -0
- package/dist/obj/artifact-fake.js +52 -0
- package/dist/obj/artifact-fake.js.map +1 -0
- package/dist/obj/artifact-known.d.ts +50 -0
- package/dist/obj/artifact-known.d.ts.map +1 -0
- package/dist/obj/artifact-known.js +55 -0
- package/dist/obj/artifact-known.js.map +1 -0
- package/dist/obj/bind.d.ts +219 -0
- package/dist/obj/bind.d.ts.map +1 -0
- package/dist/obj/bind.js +1239 -0
- package/dist/obj/bind.js.map +1 -0
- package/dist/obj/chest.d.ts +91 -0
- package/dist/obj/chest.d.ts.map +1 -0
- package/dist/obj/chest.js +220 -0
- package/dist/obj/chest.js.map +1 -0
- package/dist/obj/desc.d.ts +79 -0
- package/dist/obj/desc.d.ts.map +1 -0
- package/dist/obj/desc.js +602 -0
- package/dist/obj/desc.js.map +1 -0
- package/dist/obj/effects-info.d.ts +78 -0
- package/dist/obj/effects-info.d.ts.map +1 -0
- package/dist/obj/effects-info.js +240 -0
- package/dist/obj/effects-info.js.map +1 -0
- package/dist/obj/flavor.d.ts +68 -0
- package/dist/obj/flavor.d.ts.map +1 -0
- package/dist/obj/flavor.js +201 -0
- package/dist/obj/flavor.js.map +1 -0
- package/dist/obj/ignore.d.ts +143 -0
- package/dist/obj/ignore.d.ts.map +1 -0
- package/dist/obj/ignore.js +345 -0
- package/dist/obj/ignore.js.map +1 -0
- package/dist/obj/knowledge.d.ts +520 -0
- package/dist/obj/knowledge.d.ts.map +1 -0
- package/dist/obj/knowledge.js +1364 -0
- package/dist/obj/knowledge.js.map +1 -0
- package/dist/obj/known-object.d.ts +293 -0
- package/dist/obj/known-object.d.ts.map +1 -0
- package/dist/obj/known-object.js +532 -0
- package/dist/obj/known-object.js.map +1 -0
- package/dist/obj/make.d.ts +292 -0
- package/dist/obj/make.d.ts.map +1 -0
- package/dist/obj/make.js +1055 -0
- package/dist/obj/make.js.map +1 -0
- package/dist/obj/object-info.d.ts +188 -0
- package/dist/obj/object-info.d.ts.map +1 -0
- package/dist/obj/object-info.js +1407 -0
- package/dist/obj/object-info.js.map +1 -0
- package/dist/obj/object.d.ts +335 -0
- package/dist/obj/object.d.ts.map +1 -0
- package/dist/obj/object.js +1051 -0
- package/dist/obj/object.js.map +1 -0
- package/dist/obj/power.d.ts +65 -0
- package/dist/obj/power.d.ts.map +1 -0
- package/dist/obj/power.js +580 -0
- package/dist/obj/power.js.map +1 -0
- package/dist/obj/randart-build.d.ts +223 -0
- package/dist/obj/randart-build.d.ts.map +1 -0
- package/dist/obj/randart-build.js +1444 -0
- package/dist/obj/randart-build.js.map +1 -0
- package/dist/obj/randart-data.d.ts +179 -0
- package/dist/obj/randart-data.d.ts.map +1 -0
- package/dist/obj/randart-data.js +1153 -0
- package/dist/obj/randart-data.js.map +1 -0
- package/dist/obj/randart.d.ts +128 -0
- package/dist/obj/randart.d.ts.map +1 -0
- package/dist/obj/randart.js +458 -0
- package/dist/obj/randart.js.map +1 -0
- package/dist/obj/randname.d.ts +33 -0
- package/dist/obj/randname.d.ts.map +1 -0
- package/dist/obj/randname.js +116 -0
- package/dist/obj/randname.js.map +1 -0
- package/dist/obj/recharge.d.ts +28 -0
- package/dist/obj/recharge.d.ts.map +1 -0
- package/dist/obj/recharge.js +52 -0
- package/dist/obj/recharge.js.map +1 -0
- package/dist/obj/types.d.ts +584 -0
- package/dist/obj/types.d.ts.map +1 -0
- package/dist/obj/types.js +104 -0
- package/dist/obj/types.js.map +1 -0
- package/dist/obj/value.d.ts +64 -0
- package/dist/obj/value.d.ts.map +1 -0
- package/dist/obj/value.js +176 -0
- package/dist/obj/value.js.map +1 -0
- package/dist/player/abilities.d.ts +57 -0
- package/dist/player/abilities.d.ts.map +1 -0
- package/dist/player/abilities.js +118 -0
- package/dist/player/abilities.js.map +1 -0
- package/dist/player/best-digger.d.ts +42 -0
- package/dist/player/best-digger.d.ts.map +1 -0
- package/dist/player/best-digger.js +89 -0
- package/dist/player/best-digger.js.map +1 -0
- package/dist/player/bind.d.ts +270 -0
- package/dist/player/bind.d.ts.map +1 -0
- package/dist/player/bind.js +698 -0
- package/dist/player/bind.js.map +1 -0
- package/dist/player/birth.d.ts +258 -0
- package/dist/player/birth.d.ts.map +1 -0
- package/dist/player/birth.js +639 -0
- package/dist/player/birth.js.map +1 -0
- package/dist/player/calcs.d.ts +403 -0
- package/dist/player/calcs.d.ts.map +1 -0
- package/dist/player/calcs.js +1189 -0
- package/dist/player/calcs.js.map +1 -0
- package/dist/player/combat-regen.d.ts +14 -0
- package/dist/player/combat-regen.d.ts.map +1 -0
- package/dist/player/combat-regen.js +29 -0
- package/dist/player/combat-regen.js.map +1 -0
- package/dist/player/exp.d.ts +96 -0
- package/dist/player/exp.d.ts.map +1 -0
- package/dist/player/exp.js +229 -0
- package/dist/player/exp.js.map +1 -0
- package/dist/player/history.d.ts +91 -0
- package/dist/player/history.d.ts.map +1 -0
- package/dist/player/history.js +145 -0
- package/dist/player/history.js.map +1 -0
- package/dist/player/options.d.ts +123 -0
- package/dist/player/options.d.ts.map +1 -0
- package/dist/player/options.js +199 -0
- package/dist/player/options.js.map +1 -0
- package/dist/player/player.d.ts +242 -0
- package/dist/player/player.d.ts.map +1 -0
- package/dist/player/player.js +119 -0
- package/dist/player/player.js.map +1 -0
- package/dist/player/shape-lore.d.ts +56 -0
- package/dist/player/shape-lore.d.ts.map +1 -0
- package/dist/player/shape-lore.js +221 -0
- package/dist/player/shape-lore.js.map +1 -0
- package/dist/player/spell.d.ts +146 -0
- package/dist/player/spell.d.ts.map +1 -0
- package/dist/player/spell.js +519 -0
- package/dist/player/spell.js.map +1 -0
- package/dist/player/take-hit.d.ts +87 -0
- package/dist/player/take-hit.d.ts.map +1 -0
- package/dist/player/take-hit.js +99 -0
- package/dist/player/take-hit.js.map +1 -0
- package/dist/player/timed.d.ts +205 -0
- package/dist/player/timed.d.ts.map +1 -0
- package/dist/player/timed.js +310 -0
- package/dist/player/timed.js.map +1 -0
- package/dist/player/types.d.ts +390 -0
- package/dist/player/types.d.ts.map +1 -0
- package/dist/player/types.js +51 -0
- package/dist/player/types.js.map +1 -0
- package/dist/rational.d.ts +99 -0
- package/dist/rational.d.ts.map +1 -0
- package/dist/rational.js +345 -0
- package/dist/rational.js.map +1 -0
- package/dist/rng.d.ts +168 -0
- package/dist/rng.d.ts.map +1 -0
- package/dist/rng.js +404 -0
- package/dist/rng.js.map +1 -0
- package/dist/save/buffer.d.ts +120 -0
- package/dist/save/buffer.d.ts.map +1 -0
- package/dist/save/buffer.js +238 -0
- package/dist/save/buffer.js.map +1 -0
- package/dist/save/compress.d.ts +79 -0
- package/dist/save/compress.d.ts.map +1 -0
- package/dist/save/compress.js +97 -0
- package/dist/save/compress.js.map +1 -0
- package/dist/save/description.d.ts +61 -0
- package/dist/save/description.d.ts.map +1 -0
- package/dist/save/description.js +51 -0
- package/dist/save/description.js.map +1 -0
- package/dist/save/integrity.d.ts +59 -0
- package/dist/save/integrity.d.ts.map +1 -0
- package/dist/save/integrity.js +103 -0
- package/dist/save/integrity.js.map +1 -0
- package/dist/score/display.d.ts +40 -0
- package/dist/score/display.d.ts.map +1 -0
- package/dist/score/display.js +86 -0
- package/dist/score/display.js.map +1 -0
- package/dist/score/score.d.ts +166 -0
- package/dist/score/score.d.ts.map +1 -0
- package/dist/score/score.js +244 -0
- package/dist/score/score.js.map +1 -0
- package/dist/score/types.d.ts +98 -0
- package/dist/score/types.d.ts.map +1 -0
- package/dist/score/types.js +27 -0
- package/dist/score/types.js.map +1 -0
- package/dist/session/boot.d.ts +207 -0
- package/dist/session/boot.d.ts.map +1 -0
- package/dist/session/boot.js +151 -0
- package/dist/session/boot.js.map +1 -0
- package/dist/session/game.d.ts +257 -0
- package/dist/session/game.d.ts.map +1 -0
- package/dist/session/game.js +2880 -0
- package/dist/session/game.js.map +1 -0
- package/dist/session/save.d.ts +847 -0
- package/dist/session/save.d.ts.map +1 -0
- package/dist/session/save.js +1306 -0
- package/dist/session/save.js.map +1 -0
- package/dist/sound/engine.d.ts +146 -0
- package/dist/sound/engine.d.ts.map +1 -0
- package/dist/sound/engine.js +332 -0
- package/dist/sound/engine.js.map +1 -0
- package/dist/sound/index.d.ts +13 -0
- package/dist/sound/index.d.ts.map +1 -0
- package/dist/sound/index.js +13 -0
- package/dist/sound/index.js.map +1 -0
- package/dist/sound/sound-prefs-data.d.ts +10 -0
- package/dist/sound/sound-prefs-data.d.ts.map +1 -0
- package/dist/sound/sound-prefs-data.js +165 -0
- package/dist/sound/sound-prefs-data.js.map +1 -0
- package/dist/sound/types.d.ts +64 -0
- package/dist/sound/types.d.ts.map +1 -0
- package/dist/sound/types.js +23 -0
- package/dist/sound/types.js.map +1 -0
- package/dist/store/bind.d.ts +43 -0
- package/dist/store/bind.d.ts.map +1 -0
- package/dist/store/bind.js +130 -0
- package/dist/store/bind.js.map +1 -0
- package/dist/store/price.d.ts +27 -0
- package/dist/store/price.d.ts.map +1 -0
- package/dist/store/price.js +81 -0
- package/dist/store/price.js.map +1 -0
- package/dist/store/store-cmd.d.ts +51 -0
- package/dist/store/store-cmd.d.ts.map +1 -0
- package/dist/store/store-cmd.js +73 -0
- package/dist/store/store-cmd.js.map +1 -0
- package/dist/store/store.d.ts +156 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +616 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/transact.d.ts +198 -0
- package/dist/store/transact.d.ts.map +1 -0
- package/dist/store/transact.js +383 -0
- package/dist/store/transact.js.map +1 -0
- package/dist/store/types.d.ts +101 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/version.d.ts +25 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/dist/visuals/engine.d.ts +223 -0
- package/dist/visuals/engine.d.ts.map +1 -0
- package/dist/visuals/engine.js +357 -0
- package/dist/visuals/engine.js.map +1 -0
- package/dist/visuals/glyph-table.d.ts +112 -0
- package/dist/visuals/glyph-table.d.ts.map +1 -0
- package/dist/visuals/glyph-table.js +156 -0
- package/dist/visuals/glyph-table.js.map +1 -0
- package/dist/visuals/grafmode-data.d.ts +4 -0
- package/dist/visuals/grafmode-data.d.ts.map +1 -0
- package/dist/visuals/grafmode-data.js +88 -0
- package/dist/visuals/grafmode-data.js.map +1 -0
- package/dist/visuals/grafmode.d.ts +83 -0
- package/dist/visuals/grafmode.d.ts.map +1 -0
- package/dist/visuals/grafmode.js +82 -0
- package/dist/visuals/grafmode.js.map +1 -0
- package/dist/visuals/index.d.ts +19 -0
- package/dist/visuals/index.d.ts.map +1 -0
- package/dist/visuals/index.js +19 -0
- package/dist/visuals/index.js.map +1 -0
- package/dist/visuals/map-text.d.ts +79 -0
- package/dist/visuals/map-text.d.ts.map +1 -0
- package/dist/visuals/map-text.js +122 -0
- package/dist/visuals/map-text.js.map +1 -0
- package/dist/visuals/pref-expr.d.ts +56 -0
- package/dist/visuals/pref-expr.d.ts.map +1 -0
- package/dist/visuals/pref-expr.js +173 -0
- package/dist/visuals/pref-expr.js.map +1 -0
- package/dist/visuals/prefs.d.ts +280 -0
- package/dist/visuals/prefs.d.ts.map +1 -0
- package/dist/visuals/prefs.js +835 -0
- package/dist/visuals/prefs.js.map +1 -0
- package/dist/visuals/tile-prefs.d.ts +132 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -0
- package/dist/visuals/tile-prefs.js +105 -0
- package/dist/visuals/tile-prefs.js.map +1 -0
- package/dist/world/chunk.d.ts +195 -0
- package/dist/world/chunk.d.ts.map +1 -0
- package/dist/world/chunk.js +422 -0
- package/dist/world/chunk.js.map +1 -0
- package/dist/world/feature.d.ts +86 -0
- package/dist/world/feature.d.ts.map +1 -0
- package/dist/world/feature.js +153 -0
- package/dist/world/feature.js.map +1 -0
- package/dist/world/flow.d.ts +33 -0
- package/dist/world/flow.d.ts.map +1 -0
- package/dist/world/flow.js +115 -0
- package/dist/world/flow.js.map +1 -0
- package/dist/world/project.d.ts +176 -0
- package/dist/world/project.d.ts.map +1 -0
- package/dist/world/project.js +543 -0
- package/dist/world/project.js.map +1 -0
- package/dist/world/projection.d.ts +100 -0
- package/dist/world/projection.d.ts.map +1 -0
- package/dist/world/projection.js +152 -0
- package/dist/world/projection.js.map +1 -0
- package/dist/world/scatter.d.ts +25 -0
- package/dist/world/scatter.d.ts.map +1 -0
- package/dist/world/scatter.js +54 -0
- package/dist/world/scatter.js.map +1 -0
- package/dist/world/trap.d.ts +84 -0
- package/dist/world/trap.d.ts.map +1 -0
- package/dist/world/trap.js +106 -0
- package/dist/world/trap.js.map +1 -0
- package/dist/world/view.d.ts +60 -0
- package/dist/world/view.d.ts.map +1 -0
- package/dist/world/view.js +436 -0
- package/dist/world/view.js.map +1 -0
- package/dist/z-queue.d.ts +133 -0
- package/dist/z-queue.d.ts.map +1 -0
- package/dist/z-queue.js +283 -0
- package/dist/z-queue.js.map +1 -0
- package/package.json +75 -0
- package/src/agent/act.ts +114 -0
- package/src/agent/controller.ts +109 -0
- package/src/agent/events.ts +47 -0
- package/src/agent/index.ts +36 -0
- package/src/agent/perceive.ts +440 -0
- package/src/agent/types.ts +464 -0
- package/src/bitflag.ts +536 -0
- package/src/cmd.ts +547 -0
- package/src/color.ts +267 -0
- package/src/combat/brand-slay.ts +360 -0
- package/src/combat/hit.ts +471 -0
- package/src/combat/index.ts +15 -0
- package/src/combat/melee.ts +728 -0
- package/src/combat/mon-melee.ts +1153 -0
- package/src/combat/ranged.ts +397 -0
- package/src/constants.ts +324 -0
- package/src/dice.ts +467 -0
- package/src/effects/effect-choice.ts +32 -0
- package/src/effects/effect-info.ts +859 -0
- package/src/effects/effect.ts +560 -0
- package/src/effects/handlers.ts +452 -0
- package/src/effects/interpreter.ts +603 -0
- package/src/events.ts +317 -0
- package/src/expression.ts +360 -0
- package/src/game/cave-cmd.ts +1147 -0
- package/src/game/char-sheet.ts +557 -0
- package/src/game/chest.ts +348 -0
- package/src/game/context.ts +1218 -0
- package/src/game/curse-tick.ts +130 -0
- package/src/game/describe.ts +62 -0
- package/src/game/display.ts +838 -0
- package/src/game/dump-level.ts +114 -0
- package/src/game/effect-attack.ts +746 -0
- package/src/game/effect-detect.ts +542 -0
- package/src/game/effect-env.ts +252 -0
- package/src/game/effect-game-env.ts +86 -0
- package/src/game/effect-general.ts +1122 -0
- package/src/game/effect-item.ts +999 -0
- package/src/game/effect-melee.ts +557 -0
- package/src/game/effect-mon-origin.ts +196 -0
- package/src/game/effect-monster.ts +310 -0
- package/src/game/effect-summon.ts +161 -0
- package/src/game/effect-teleport.ts +645 -0
- package/src/game/effect-terrain.ts +881 -0
- package/src/game/energy.ts +61 -0
- package/src/game/equip-cmp.ts +476 -0
- package/src/game/floor.ts +524 -0
- package/src/game/gear.ts +1352 -0
- package/src/game/harness.ts +270 -0
- package/src/game/history.ts +78 -0
- package/src/game/ignore-cmd.ts +68 -0
- package/src/game/inscription-confirm.ts +115 -0
- package/src/game/known.ts +960 -0
- package/src/game/loop.ts +671 -0
- package/src/game/lore-color.ts +108 -0
- package/src/game/mon-cast.ts +409 -0
- package/src/game/mon-cmd.ts +767 -0
- package/src/game/mon-death.ts +459 -0
- package/src/game/mon-group.ts +368 -0
- package/src/game/mon-list.ts +213 -0
- package/src/game/mon-message.ts +359 -0
- package/src/game/mon-place.ts +1012 -0
- package/src/game/mon-ranged.ts +405 -0
- package/src/game/mon-shape.ts +161 -0
- package/src/game/mon-side.ts +511 -0
- package/src/game/monster-turn.ts +1750 -0
- package/src/game/obj-cmd.ts +1970 -0
- package/src/game/obj-list.ts +302 -0
- package/src/game/object-inspect.ts +162 -0
- package/src/game/pickup.ts +483 -0
- package/src/game/player-path.ts +1434 -0
- package/src/game/player-side.ts +555 -0
- package/src/game/player-turn.ts +852 -0
- package/src/game/project-cast.ts +766 -0
- package/src/game/project-feat.ts +386 -0
- package/src/game/project-monster.ts +407 -0
- package/src/game/project-obj.ts +298 -0
- package/src/game/project-player.ts +236 -0
- package/src/game/quest.ts +248 -0
- package/src/game/ranged-cmd.ts +417 -0
- package/src/game/scheduler.ts +150 -0
- package/src/game/spell-cmd.ts +404 -0
- package/src/game/spoil.ts +562 -0
- package/src/game/steal.ts +169 -0
- package/src/game/take-hit-hooks.ts +152 -0
- package/src/game/target-loop.ts +501 -0
- package/src/game/target.ts +424 -0
- package/src/game/thrust.ts +174 -0
- package/src/game/trap.ts +791 -0
- package/src/game/ui-entry.ts +2075 -0
- package/src/game/wizard.ts +1760 -0
- package/src/game/world.ts +786 -0
- package/src/gen/cave.ts +2858 -0
- package/src/gen/gen-monster.ts +592 -0
- package/src/gen/generate.ts +523 -0
- package/src/gen/room.ts +2213 -0
- package/src/gen/util.ts +1958 -0
- package/src/generated/dun-profiles.ts +30 -0
- package/src/generated/effects.ts +241 -0
- package/src/generated/elements.ts +62 -0
- package/src/generated/equip-slots.ts +36 -0
- package/src/generated/history-types.ts +34 -0
- package/src/generated/ignore-types.ts +66 -0
- package/src/generated/index.ts +33 -0
- package/src/generated/kind-flags.ts +44 -0
- package/src/generated/message.ts +320 -0
- package/src/generated/mon-message.ts +138 -0
- package/src/generated/mon-race-flags.ts +182 -0
- package/src/generated/mon-spells.ts +198 -0
- package/src/generated/mon-temp-flags.ts +34 -0
- package/src/generated/mon-timed.ts +34 -0
- package/src/generated/object-flags.ts +95 -0
- package/src/generated/object-modifiers.ts +43 -0
- package/src/generated/options.ts +104 -0
- package/src/generated/origins.ts +64 -0
- package/src/generated/parser-errors.ts +140 -0
- package/src/generated/player-flags.ts +48 -0
- package/src/generated/player-timed.ts +118 -0
- package/src/generated/projections.ts +103 -0
- package/src/generated/randart-properties.ts +202 -0
- package/src/generated/room-flags.ts +21 -0
- package/src/generated/rooms.ts +50 -0
- package/src/generated/square-flags.ts +56 -0
- package/src/generated/stats.ts +22 -0
- package/src/generated/terrain-flags.ts +76 -0
- package/src/generated/terrain.ts +62 -0
- package/src/generated/trap-flags.ts +42 -0
- package/src/generated/tvals.ts +84 -0
- package/src/generated/ui-entry-renderers.ts +24 -0
- package/src/guard.ts +70 -0
- package/src/host/args.ts +334 -0
- package/src/host/bridge.ts +193 -0
- package/src/host/index.ts +18 -0
- package/src/host/io.ts +239 -0
- package/src/host/memory.ts +134 -0
- package/src/host/raw.ts +190 -0
- package/src/index.ts +250 -0
- package/src/loc.ts +157 -0
- package/src/mod/hooks.ts +278 -0
- package/src/mod/ids.ts +390 -0
- package/src/mod/registry-host.ts +258 -0
- package/src/mod/save-blocks.ts +787 -0
- package/src/mod/vocabulary.ts +0 -0
- package/src/mon/bind.ts +899 -0
- package/src/mon/desc.ts +212 -0
- package/src/mon/knowledge-groups.ts +164 -0
- package/src/mon/lore-describe.ts +1414 -0
- package/src/mon/lore.ts +306 -0
- package/src/mon/make.ts +422 -0
- package/src/mon/monster.ts +161 -0
- package/src/mon/predicate.ts +220 -0
- package/src/mon/project-mon.ts +855 -0
- package/src/mon/spell.ts +418 -0
- package/src/mon/steal.ts +246 -0
- package/src/mon/summon.ts +145 -0
- package/src/mon/take-hit.ts +195 -0
- package/src/mon/timed.ts +300 -0
- package/src/mon/types.ts +286 -0
- package/src/msg.ts +146 -0
- package/src/obj/artifact-fake.ts +63 -0
- package/src/obj/artifact-known.ts +69 -0
- package/src/obj/bind.ts +1345 -0
- package/src/obj/chest.ts +249 -0
- package/src/obj/desc.ts +699 -0
- package/src/obj/effects-info.ts +349 -0
- package/src/obj/flavor.ts +256 -0
- package/src/obj/ignore.ts +387 -0
- package/src/obj/knowledge.ts +1577 -0
- package/src/obj/known-object.ts +718 -0
- package/src/obj/make.ts +1367 -0
- package/src/obj/object-info.ts +1737 -0
- package/src/obj/object.ts +1296 -0
- package/src/obj/power.ts +674 -0
- package/src/obj/randart-build.ts +1705 -0
- package/src/obj/randart-data.ts +1344 -0
- package/src/obj/randart.ts +552 -0
- package/src/obj/randname.ts +128 -0
- package/src/obj/recharge.ts +62 -0
- package/src/obj/types.ts +559 -0
- package/src/obj/value.ts +215 -0
- package/src/player/abilities.ts +142 -0
- package/src/player/best-digger.ts +118 -0
- package/src/player/bind.ts +1021 -0
- package/src/player/birth.ts +794 -0
- package/src/player/calcs.ts +1522 -0
- package/src/player/combat-regen.ts +33 -0
- package/src/player/exp.ts +275 -0
- package/src/player/history.ts +211 -0
- package/src/player/options.ts +244 -0
- package/src/player/player.ts +356 -0
- package/src/player/shape-lore.ts +250 -0
- package/src/player/spell.ts +627 -0
- package/src/player/take-hit.ts +173 -0
- package/src/player/timed.ts +482 -0
- package/src/player/types.ts +415 -0
- package/src/rational.ts +388 -0
- package/src/rng.ts +476 -0
- package/src/save/buffer.ts +287 -0
- package/src/save/compress.ts +132 -0
- package/src/save/description.ts +70 -0
- package/src/save/integrity.ts +133 -0
- package/src/score/display.ts +125 -0
- package/src/score/score.ts +341 -0
- package/src/score/types.ts +104 -0
- package/src/session/boot.ts +338 -0
- package/src/session/game.ts +3712 -0
- package/src/session/save.ts +2074 -0
- package/src/sound/engine.ts +375 -0
- package/src/sound/index.ts +13 -0
- package/src/sound/sound-prefs-data.ts +173 -0
- package/src/sound/types.ts +68 -0
- package/src/store/bind.ts +145 -0
- package/src/store/price.ts +97 -0
- package/src/store/store-cmd.ts +73 -0
- package/src/store/store.ts +723 -0
- package/src/store/transact.ts +644 -0
- package/src/store/types.ts +110 -0
- package/src/version.ts +26 -0
- package/src/visuals/engine.ts +444 -0
- package/src/visuals/glyph-table.ts +191 -0
- package/src/visuals/grafmode-data.ts +90 -0
- package/src/visuals/grafmode.ts +123 -0
- package/src/visuals/index.ts +19 -0
- package/src/visuals/map-text.ts +152 -0
- package/src/visuals/pref-expr.ts +182 -0
- package/src/visuals/prefs.ts +981 -0
- package/src/visuals/tile-prefs.ts +183 -0
- package/src/world/chunk.ts +531 -0
- package/src/world/feature.ts +215 -0
- package/src/world/flow.ts +128 -0
- package/src/world/project.ts +687 -0
- package/src/world/projection.ts +228 -0
- package/src/world/scatter.ts +72 -0
- package/src/world/trap.ts +155 -0
- package/src/world/view.ts +513 -0
- package/src/z-queue.ts +300 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core sound engine, ported from reference/src/sound-core.c (Angband 4.2.6).
|
|
3
|
+
*
|
|
4
|
+
* This is the front-end-agnostic half of the sound subsystem: it owns the
|
|
5
|
+
* message->sound map (message_sounds[]), the deduplicated sound pool
|
|
6
|
+
* (sounds[] / next_sound_id), load-status tracking, and the random sample
|
|
7
|
+
* selection in play_sound. A platform supplies the SoundHooks that actually
|
|
8
|
+
* load and play audio; the core has no DOM or audio-API dependency.
|
|
9
|
+
*
|
|
10
|
+
* Faithful details preserved from the C:
|
|
11
|
+
* - djb2_hash + name compare dedup so a sample used by many messages gets
|
|
12
|
+
* one shared sound id (message_sound_define, L179).
|
|
13
|
+
* - The MAX_SOUNDS_PER_MESSAGE - 1 cap (the C uses `< (MAX - 1)`, so a
|
|
14
|
+
* message keeps at most 15 samples, not 16 - replicated exactly).
|
|
15
|
+
* - Selection via randint0(num_sounds) over the message's sample ids
|
|
16
|
+
* (play_sound, L320), through an injected RNG seam for determinism.
|
|
17
|
+
* - Lazy load: an UNKNOWN sound is loaded just before its first play;
|
|
18
|
+
* preload loads it as soon as it is assigned to a message.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { GameEvents, MessageEventData } from "../events.js";
|
|
22
|
+
import { MESSAGE_ENTRIES, MSG } from "../generated/message.js";
|
|
23
|
+
import { SoundStatus, MAX_SOUNDS_PER_MESSAGE } from "./types.js";
|
|
24
|
+
import type { SoundData, SoundHooks } from "./types.js";
|
|
25
|
+
|
|
26
|
+
/** djb2_hash (z-util.c): hash * 33 + c, seeded at 5381, in uint32. */
|
|
27
|
+
export function djb2Hash(str: string): number {
|
|
28
|
+
let hash = 5381 >>> 0;
|
|
29
|
+
for (let i = 0; i < str.length; i++) {
|
|
30
|
+
// ((hash << 5) + hash) + c, kept in uint32 with Math.imul(hash, 33).
|
|
31
|
+
hash = (Math.imul(hash, 33) + str.charCodeAt(i)) >>> 0;
|
|
32
|
+
}
|
|
33
|
+
return hash;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** contains_only_spaces (z-util.c:801-806): the rest is spaces and tabs only. */
|
|
37
|
+
function containsOnlySpaces(s: string): boolean {
|
|
38
|
+
return /^[ \t]*$/.test(s);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* strtoul(s, &pe, 10), enough of it for message_lookup_by_name: returns the
|
|
43
|
+
* parsed value and the unconsumed tail, or null when nothing was consumed
|
|
44
|
+
* (the `pe == name` case). C skips leading whitespace and accepts a sign, and
|
|
45
|
+
* `unsigned long` is 32-bit on the reference toolchain, so a negative literal
|
|
46
|
+
* wraps to a huge value and an overflow saturates at ULONG_MAX -- both of which
|
|
47
|
+
* land above MSG_MAX and are rejected by the caller, which is exactly what
|
|
48
|
+
* upstream's own test asserts for "-3" (tests/message/message.c:533-534).
|
|
49
|
+
*/
|
|
50
|
+
function strtoul10(s: string): { value: number; tail: string } | null {
|
|
51
|
+
const m = /^[ \t\n\v\f\r]*([+-]?)([0-9]+)/.exec(s);
|
|
52
|
+
if (!m) return null;
|
|
53
|
+
const digits = m[2]!;
|
|
54
|
+
const raw = Number(digits);
|
|
55
|
+
const value =
|
|
56
|
+
raw > 0xffffffff
|
|
57
|
+
? 0xffffffff
|
|
58
|
+
: m[1] === "-"
|
|
59
|
+
? (0x100000000 - (raw % 0x100000000)) % 0x100000000
|
|
60
|
+
: raw;
|
|
61
|
+
return { value, tail: s.slice(m[0].length) };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* message_lookup_by_name (message.c:295-317): MSG_ index for a name, or -1.
|
|
66
|
+
*
|
|
67
|
+
* Two paths, and the numeric one comes FIRST. A name that parses as a decimal
|
|
68
|
+
* number is that message index outright, provided the remainder is blank and
|
|
69
|
+
* the value is below MSG_MAX; only if nothing numeric was consumed does the
|
|
70
|
+
* name table get searched, and that search is case-INSENSITIVE (my_stricmp at
|
|
71
|
+
* :312). Both were missing here (findings UT-001 and UT-006): the numeric path
|
|
72
|
+
* entirely, and the name comparison was `===`, so "generic" returned -1 where
|
|
73
|
+
* upstream returns MSG_GENERIC. The C reaches this from every `msgt:` directive
|
|
74
|
+
* in gamedata (init.c, mon-init.c, obj-init.c, player-timed.c), so the
|
|
75
|
+
* case-folding is load-bearing once a data reader is wired to it.
|
|
76
|
+
*/
|
|
77
|
+
export function messageLookupByName(name: string): number {
|
|
78
|
+
const parsed = strtoul10(name);
|
|
79
|
+
if (parsed) {
|
|
80
|
+
return containsOnlySpaces(parsed.tail) && parsed.value < MSG.MAX ? parsed.value : -1;
|
|
81
|
+
}
|
|
82
|
+
const lower = name.toLowerCase();
|
|
83
|
+
for (let i = 0; i < MESSAGE_ENTRIES.length; i++) {
|
|
84
|
+
if (MESSAGE_ENTRIES[i]!.name.toLowerCase() === lower) return i;
|
|
85
|
+
}
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* message_sound_name (message.c:349-361): the sound.prf name for a MSG_, or
|
|
91
|
+
* null outside [MSG_GENERIC, MSG_MAX). Note MSG_GENERIC and MSG_BIRTH map to
|
|
92
|
+
* the EMPTY STRING, not null — list-message.h gives only MSG_MAX a NULL — so a
|
|
93
|
+
* caller must distinguish "no name" from "out of range".
|
|
94
|
+
*/
|
|
95
|
+
export function messageSoundName(message: number): string | null {
|
|
96
|
+
if (message < MSG.GENERIC || message >= MSG.MAX) return null;
|
|
97
|
+
return MESSAGE_ENTRIES[message]!.sound;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* message_lookup_by_sound_name (message.c:325-341): the MSG_ whose sound.prf
|
|
102
|
+
* name matches, or MSG_GENERIC when nothing does.
|
|
103
|
+
*
|
|
104
|
+
* Three warts kept deliberately. The compare is my_stricmp, so it is
|
|
105
|
+
* case-INSENSITIVE. MSG_MAX is excluded from the scan (its name is NULL). And
|
|
106
|
+
* the not-found answer is MSG_GENERIC, i.e. 0 — NOT -1 as in
|
|
107
|
+
* message_lookup_by_name — so a caller cannot tell a miss from a real hit on
|
|
108
|
+
* MSG_GENERIC. The mapping is also not one-to-one: several messages share the
|
|
109
|
+
* empty sound name, and the first of those (MSG_GENERIC) always wins.
|
|
110
|
+
*/
|
|
111
|
+
export function messageLookupBySoundName(name: string): number {
|
|
112
|
+
const lower = name.toLowerCase();
|
|
113
|
+
/* Exclude MSG_MAX since it has NULL for the sound's name. */
|
|
114
|
+
for (let i = 0; i < MESSAGE_ENTRIES.length - 1; i++) {
|
|
115
|
+
if ((MESSAGE_ENTRIES[i]!.sound ?? "").toLowerCase() === lower) return i;
|
|
116
|
+
}
|
|
117
|
+
return MSG.GENERIC;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** struct msg_snd_data (sound-core.c): a message's mapped sample ids. */
|
|
121
|
+
interface MsgSndData {
|
|
122
|
+
numSounds: number;
|
|
123
|
+
soundIds: number[];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** The RNG seam: randint0(n) yields 0..n-1. Inject the game's RNG. */
|
|
127
|
+
export type Randint0 = (n: number) => number;
|
|
128
|
+
|
|
129
|
+
export interface SoundEngineOptions {
|
|
130
|
+
/** Platform hooks; omit for a fully silent (no-op) engine. */
|
|
131
|
+
hooks?: SoundHooks;
|
|
132
|
+
/** randint0 seam (defaults to a non-deterministic Math.random helper). */
|
|
133
|
+
randint0?: Randint0;
|
|
134
|
+
/** If true, load each sound as soon as it is assigned to a message. */
|
|
135
|
+
preload?: boolean;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function defaultRandint0(n: number): number {
|
|
139
|
+
return Math.floor(Math.random() * n);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* The sound engine: mirrors the file-scope state of sound-core.c
|
|
144
|
+
* (message_sounds[], sounds[], next_sound_id, preload_sounds, hooks) as an
|
|
145
|
+
* instantiable object.
|
|
146
|
+
*/
|
|
147
|
+
export class SoundEngine {
|
|
148
|
+
/** message_sounds[MSG_MAX]: sample ids mapped to each message type. */
|
|
149
|
+
private messageSounds: MsgSndData[] = MESSAGE_ENTRIES.map(() => ({
|
|
150
|
+
numSounds: 0,
|
|
151
|
+
soundIds: [],
|
|
152
|
+
}));
|
|
153
|
+
|
|
154
|
+
/** sounds[]: the deduplicated sample pool (index == sound id). */
|
|
155
|
+
private sounds: SoundData[] = [];
|
|
156
|
+
|
|
157
|
+
/** next_sound_id: number of pool entries assigned so far. */
|
|
158
|
+
private nextSoundId = 0;
|
|
159
|
+
|
|
160
|
+
private hooks: SoundHooks;
|
|
161
|
+
private randint0: Randint0;
|
|
162
|
+
private preloadSounds: boolean;
|
|
163
|
+
|
|
164
|
+
/** The bound "sound" handler, kept so it can be removed on close. */
|
|
165
|
+
private soundHandler: ((type: "sound", data: MessageEventData) => void) | null =
|
|
166
|
+
null;
|
|
167
|
+
|
|
168
|
+
constructor(opts: SoundEngineOptions = {}) {
|
|
169
|
+
this.hooks = opts.hooks ?? {};
|
|
170
|
+
this.randint0 = opts.randint0 ?? defaultRandint0;
|
|
171
|
+
this.preloadSounds = opts.preload ?? false;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* set_preloaded_sounds: switch immediate-vs-lazy loading. Returns the
|
|
176
|
+
* previous setting, exactly like the C.
|
|
177
|
+
*/
|
|
178
|
+
setPreloadedSounds(newSetting: boolean): boolean {
|
|
179
|
+
const old = this.preloadSounds;
|
|
180
|
+
this.preloadSounds = newSetting;
|
|
181
|
+
return old;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** Install platform hooks after construction (mirrors init_sound wiring). */
|
|
185
|
+
setHooks(hooks: SoundHooks): void {
|
|
186
|
+
this.hooks = hooks;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* load_sound (sound-core.c, L127): try each platform-supported file type
|
|
191
|
+
* until the platform reports it can play the sound. The C builds a path
|
|
192
|
+
* under ANGBAND_DIR_SOUNDS and checks file_exists before each attempt; the
|
|
193
|
+
* platform-agnostic core delegates path resolution and existence to the
|
|
194
|
+
* loadSound hook, which sets data.status (LOADED on success).
|
|
195
|
+
*/
|
|
196
|
+
private loadSound(data: SoundData): void {
|
|
197
|
+
if (!this.hooks.loadSound || !this.hooks.supportedFiles) return;
|
|
198
|
+
const supported = this.hooks.supportedFiles();
|
|
199
|
+
let loaded = false;
|
|
200
|
+
for (const sf of supported) {
|
|
201
|
+
if (loaded) break;
|
|
202
|
+
loaded = this.hooks.loadSound(data.name, sf.type, data);
|
|
203
|
+
}
|
|
204
|
+
// On total failure the C logs and leaves status ERROR/UNKNOWN as the
|
|
205
|
+
// hook set it; nothing else to do here.
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* message_sound_define (sound-core.c, L179): assign a space-separated list
|
|
210
|
+
* of sample names to a message type. New names join the shared pool (with
|
|
211
|
+
* djb2 dedup); each name is appended to the message's id list up to the
|
|
212
|
+
* MAX_SOUNDS_PER_MESSAGE - 1 cap.
|
|
213
|
+
*/
|
|
214
|
+
messageSoundDefine(messageId: number, soundsStr: string): void {
|
|
215
|
+
const msg = this.messageSounds[messageId];
|
|
216
|
+
if (!msg) return;
|
|
217
|
+
|
|
218
|
+
// Delete any existing mapping of message id to sound ids.
|
|
219
|
+
msg.numSounds = 0;
|
|
220
|
+
msg.soundIds = [];
|
|
221
|
+
|
|
222
|
+
// sounds_str is a space separated list of sound names. The C tokenizer
|
|
223
|
+
// splits on single spaces; replicate by splitting on " " and dropping
|
|
224
|
+
// the empty tokens that runs of spaces would produce (strchr-based walk).
|
|
225
|
+
const tokens = soundsStr.split(" ").filter((t) => t.length > 0);
|
|
226
|
+
|
|
227
|
+
for (const token of tokens) {
|
|
228
|
+
const hash = djb2Hash(token);
|
|
229
|
+
|
|
230
|
+
// Have we already processed this sound name?
|
|
231
|
+
let found = false;
|
|
232
|
+
let soundId = 0;
|
|
233
|
+
for (let i = 0; i < this.nextSoundId && !found; i++) {
|
|
234
|
+
if (this.sounds[i]!.hash === hash && this.sounds[i]!.name === token) {
|
|
235
|
+
found = true;
|
|
236
|
+
soundId = i;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (!found) {
|
|
241
|
+
soundId = this.nextSoundId;
|
|
242
|
+
// Add the new sound to the pool (grow_sound_list is implicit here).
|
|
243
|
+
const entry: SoundData = {
|
|
244
|
+
name: token,
|
|
245
|
+
hash,
|
|
246
|
+
status: SoundStatus.UNKNOWN,
|
|
247
|
+
platData: null,
|
|
248
|
+
};
|
|
249
|
+
this.sounds[soundId] = entry;
|
|
250
|
+
if (this.preloadSounds) this.loadSound(entry);
|
|
251
|
+
this.nextSoundId++;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Add this sound (by id) to the message->sounds map. The C caps at
|
|
255
|
+
// MAX_SOUNDS_PER_MESSAGE - 1 (an off-by-one that keeps at most 15).
|
|
256
|
+
if (msg.numSounds < MAX_SOUNDS_PER_MESSAGE - 1) {
|
|
257
|
+
msg.soundIds[msg.numSounds] = soundId;
|
|
258
|
+
msg.numSounds++;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* play_sound (sound-core.c, L309): pick one of the message's samples at
|
|
265
|
+
* random, lazily load it if still UNKNOWN, and play it only if LOADED.
|
|
266
|
+
* A no-op when the message has no sounds or no play hook is installed.
|
|
267
|
+
*/
|
|
268
|
+
playSound(messageType: number): void {
|
|
269
|
+
if (!this.hooks.playSound) return;
|
|
270
|
+
|
|
271
|
+
const msg = this.messageSounds[messageType];
|
|
272
|
+
if (!msg || msg.numSounds === 0) return; // No sounds for this message.
|
|
273
|
+
|
|
274
|
+
const s = this.randint0(msg.numSounds);
|
|
275
|
+
const soundId = msg.soundIds[s]!;
|
|
276
|
+
const sound = this.sounds[soundId];
|
|
277
|
+
if (!sound) return;
|
|
278
|
+
|
|
279
|
+
// Ensure the sound is loaded before we play it.
|
|
280
|
+
if (sound.status === SoundStatus.UNKNOWN) this.loadSound(sound);
|
|
281
|
+
|
|
282
|
+
// Only bother playing it if the platform can.
|
|
283
|
+
if (sound.status === SoundStatus.LOADED) this.hooks.playSound(sound);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Load the message->sound map from parsed sound.prf entries. Faithful to
|
|
288
|
+
* register_sound_pref_parser + parse_prefs_sound: each entry's type name
|
|
289
|
+
* is resolved via message_lookup_by_name, then message_sound_define is
|
|
290
|
+
* applied. Entries with an unknown message name are skipped (upstream
|
|
291
|
+
* returns PARSE_ERROR_INVALID_MESSAGE for that line).
|
|
292
|
+
*/
|
|
293
|
+
loadPrefs(entries: readonly { type: string; sounds: string }[]): void {
|
|
294
|
+
for (const e of entries) {
|
|
295
|
+
const idx = messageLookupByName(e.type);
|
|
296
|
+
if (idx < 0) continue;
|
|
297
|
+
this.messageSoundDefine(idx, e.sounds);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* init_sound (sound-core.c, L356): open the platform audio and subscribe
|
|
303
|
+
* to the EVENT_SOUND stream. Returns true on success. The core-agnostic
|
|
304
|
+
* form takes the game event bus to subscribe on.
|
|
305
|
+
*/
|
|
306
|
+
init(events: GameEvents): boolean {
|
|
307
|
+
if (this.hooks.openAudio && !this.hooks.openAudio()) return false;
|
|
308
|
+
this.soundHandler = (_type, data): void => this.playSound(data.type);
|
|
309
|
+
events.on("sound", this.soundHandler);
|
|
310
|
+
// Mark as inited even with no open hook, matching a module that just
|
|
311
|
+
// installs a play hook; is_sound_inited keys off the pool below.
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* close_sound (sound-core.c, L392): unload every pooled sound, free the
|
|
317
|
+
* pool, and close platform audio. Detaches the event handler too.
|
|
318
|
+
*/
|
|
319
|
+
close(events?: GameEvents): void {
|
|
320
|
+
if (events && this.soundHandler) {
|
|
321
|
+
events.off("sound", this.soundHandler);
|
|
322
|
+
}
|
|
323
|
+
this.soundHandler = null;
|
|
324
|
+
|
|
325
|
+
if (this.nextSoundId !== 0 && this.hooks.unloadSound) {
|
|
326
|
+
for (let i = 0; i < this.nextSoundId; i++) {
|
|
327
|
+
this.hooks.unloadSound(this.sounds[i]!);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
this.sounds = [];
|
|
331
|
+
this.nextSoundId = 0;
|
|
332
|
+
for (const m of this.messageSounds) {
|
|
333
|
+
m.numSounds = 0;
|
|
334
|
+
m.soundIds = [];
|
|
335
|
+
}
|
|
336
|
+
if (this.hooks.closeAudio) this.hooks.closeAudio();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** is_sound_inited (sound-core.c, L423): a pool means it was opened. */
|
|
340
|
+
isSoundInited(): boolean {
|
|
341
|
+
return this.nextSoundId !== 0;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// ---- Introspection helpers (not upstream; for wiring and tests) ----
|
|
345
|
+
|
|
346
|
+
/** Number of pooled samples (== next_sound_id). */
|
|
347
|
+
soundCount(): number {
|
|
348
|
+
return this.nextSoundId;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/** Number of samples mapped to a message type. */
|
|
352
|
+
messageSoundCount(messageType: number): number {
|
|
353
|
+
return this.messageSounds[messageType]?.numSounds ?? 0;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/** The sample base-names mapped to a message type, in order. */
|
|
357
|
+
messageSampleNames(messageType: number): string[] {
|
|
358
|
+
const msg = this.messageSounds[messageType];
|
|
359
|
+
if (!msg) return [];
|
|
360
|
+
return msg.soundIds
|
|
361
|
+
.slice(0, msg.numSounds)
|
|
362
|
+
.map((id) => this.sounds[id]!.name);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/** The pooled SoundData for a sample name, or undefined. */
|
|
366
|
+
findSound(name: string): SoundData | undefined {
|
|
367
|
+
const hash = djb2Hash(name);
|
|
368
|
+
for (let i = 0; i < this.nextSoundId; i++) {
|
|
369
|
+
if (this.sounds[i]!.hash === hash && this.sounds[i]!.name === name) {
|
|
370
|
+
return this.sounds[i];
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return undefined;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sound subsystem: a platform-agnostic engine (engine.ts) plus the
|
|
3
|
+
* message->sound name mapping data (sound-prefs-data.ts), ported from
|
|
4
|
+
* reference/src/sound-core.c, sound.h, and reference/lib/customize/sound.prf.
|
|
5
|
+
*
|
|
6
|
+
* A front end supplies SoundHooks (load/play audio) and an RNG seam; the
|
|
7
|
+
* core selects samples faithfully to play_sound. No audio assets are
|
|
8
|
+
* bundled - the web front end loads a user-supplied pack.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export * from "./types.js";
|
|
12
|
+
export * from "./engine.js";
|
|
13
|
+
export * from "./sound-prefs-data.js";
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// Generated from reference/lib/customize/sound.prf by
|
|
2
|
+
// scripts/gen-sound-prefs.mjs. Do not edit.
|
|
3
|
+
//
|
|
4
|
+
// The message->sound NAME MAPPING (functional data) from the Dubtrain
|
|
5
|
+
// Angband sound config. Each entry is one `sound:<MSG_NAME>:<samples>`
|
|
6
|
+
// directive: 'type' is the MSG_ name (message_lookup_by_name), 'sounds' is
|
|
7
|
+
// the raw space-separated list of sample base-names (no path, no extension).
|
|
8
|
+
//
|
|
9
|
+
// NO AUDIO ASSETS are bundled: the Dubtrain .mp3 pack is Creative-Commons
|
|
10
|
+
// NON-COMMERCIAL. This repo has commercial intent, so only the name mapping
|
|
11
|
+
// is ported. A web front end loads user-supplied audio from a configurable
|
|
12
|
+
// base URL (see packages/web/src/sound.ts).
|
|
13
|
+
|
|
14
|
+
/** One parsed `sound:` directive from sound.prf. */
|
|
15
|
+
export interface SoundPrefEntry {
|
|
16
|
+
/** MSG_ name (feeds message_lookup_by_name). */
|
|
17
|
+
readonly type: string;
|
|
18
|
+
/** Space-separated sample base-names, exactly as in the prf. */
|
|
19
|
+
readonly sounds: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Every `sound:` directive from sound.prf, in file order. */
|
|
23
|
+
export const SOUND_PREF_ENTRIES: readonly SoundPrefEntry[] = [
|
|
24
|
+
{ type: "AMBIENT_DAY", sounds: "amb_thunder_rain" },
|
|
25
|
+
{ type: "AMBIENT_NITE", sounds: "amb_guitar_chord amb_thunder_roll" },
|
|
26
|
+
{ type: "AMBIENT_DNG1", sounds: "amb_door_iron amb_bell_metal1" },
|
|
27
|
+
{ type: "AMBIENT_DNG2", sounds: "amb_bell_tibet1 amb_bell_metal2 amb_gong_strike" },
|
|
28
|
+
{ type: "AMBIENT_DNG3", sounds: "amb_bell_tibet2 amb_dungeon_echo amb_pulse_low" },
|
|
29
|
+
{ type: "AMBIENT_DNG4", sounds: "amb_bell_tibet3 amb_dungeon_echowet amb_gong_undertone" },
|
|
30
|
+
{ type: "AMBIENT_DNG5", sounds: "amb_door_doom amb_gong_chinese amb_gong_low" },
|
|
31
|
+
{ type: "STORE1", sounds: "sto_man_hey" },
|
|
32
|
+
{ type: "STORE2", sounds: "id_bad_dang" },
|
|
33
|
+
{ type: "STORE3", sounds: "sto_man_haha" },
|
|
34
|
+
{ type: "STORE4", sounds: "sto_man_whoohaha" },
|
|
35
|
+
{ type: "STORE5", sounds: "sto_coins_countertop sto_bell_register1 sto_bell_register2" },
|
|
36
|
+
{ type: "STORE_ENTER", sounds: "sto_bell_desk sto_bell_ding sto_bell_dingaling sto_bell_jingles sto_bell_ringing sto_bell_shop" },
|
|
37
|
+
{ type: "STORE_HOME", sounds: "plm_door_entrance" },
|
|
38
|
+
{ type: "STORE_LEAVE", sounds: "plm_door_bolt" },
|
|
39
|
+
{ type: "HIT", sounds: "plc_hit_hay plc_hit_body" },
|
|
40
|
+
{ type: "HIT_GOOD", sounds: "plc_hit_anvil" },
|
|
41
|
+
{ type: "HIT_GREAT", sounds: "plc_hit_groan" },
|
|
42
|
+
{ type: "HIT_SUPERB", sounds: "plc_hit_grunt" },
|
|
43
|
+
{ type: "HIT_HI_GREAT", sounds: "plc_hit_grunt2" },
|
|
44
|
+
{ type: "HIT_HI_SUPERB", sounds: "plc_hit_anvil2" },
|
|
45
|
+
{ type: "MISS", sounds: "plc_miss_arrow2" },
|
|
46
|
+
{ type: "SHOOT", sounds: "plc_miss_arrow" },
|
|
47
|
+
{ type: "SHOOT_HIT", sounds: "plc_hit_arrow" },
|
|
48
|
+
{ type: "HITPOINT_WARN", sounds: "plc_bell_warn" },
|
|
49
|
+
{ type: "DEATH", sounds: "plc_die_laugh" },
|
|
50
|
+
{ type: "BLIND", sounds: "pls_tone_conk" },
|
|
51
|
+
{ type: "CONFUSED", sounds: "pls_man_ugh" },
|
|
52
|
+
{ type: "POISONED", sounds: "pls_tone_guiro" },
|
|
53
|
+
{ type: "AFRAID", sounds: "pls_man_yell" },
|
|
54
|
+
{ type: "PARALYZED", sounds: "pls_man_gulp_new" },
|
|
55
|
+
{ type: "DRUGGED", sounds: "pls_breathe_in" },
|
|
56
|
+
{ type: "SLOW", sounds: "pls_man_sigh" },
|
|
57
|
+
{ type: "STUN", sounds: "pls_bell_mute" },
|
|
58
|
+
{ type: "CUT", sounds: "pls_man_argoh" },
|
|
59
|
+
{ type: "DRAIN_STAT", sounds: "pls_tone_headstock" },
|
|
60
|
+
{ type: "RECOVER", sounds: "pls_bell_chime_new" },
|
|
61
|
+
{ type: "SPEED", sounds: "pls_bell_sustain" },
|
|
62
|
+
{ type: "SHIELD", sounds: "pls_bell_bowl" },
|
|
63
|
+
{ type: "BLESSED", sounds: "sum_ainu_song" },
|
|
64
|
+
{ type: "HERO", sounds: "pls_tone_goblet" },
|
|
65
|
+
{ type: "BOLD", sounds: "pls_bell_hibell_soft" },
|
|
66
|
+
{ type: "BERSERK", sounds: "pls_man_scream2" },
|
|
67
|
+
{ type: "PROT_EVIL", sounds: "pls_bell_glass" },
|
|
68
|
+
{ type: "INVULN", sounds: "pls_tone_blurk" },
|
|
69
|
+
{ type: "SEE_INVIS", sounds: "pls_tone_clave6" },
|
|
70
|
+
{ type: "INFRARED", sounds: "pls_tone_clavelo8" },
|
|
71
|
+
{ type: "RES_ACID", sounds: "pls_man_sniff" },
|
|
72
|
+
{ type: "RES_ELEC", sounds: "pls_tone_elec" },
|
|
73
|
+
{ type: "RES_FIRE", sounds: "pls_tone_scrape" },
|
|
74
|
+
{ type: "RES_COLD", sounds: "pls_tone_stick" },
|
|
75
|
+
{ type: "RES_POIS", sounds: "pls_man_spit" },
|
|
76
|
+
{ type: "HUNGRY", sounds: "pls_man_sob" },
|
|
77
|
+
{ type: "MONEY1", sounds: "plm_coins_light plm_coins_shake" },
|
|
78
|
+
{ type: "MONEY2", sounds: "plm_chain_light plm_coins_pour" },
|
|
79
|
+
{ type: "MONEY3", sounds: "plm_coins_dump" },
|
|
80
|
+
{ type: "DROP", sounds: "plm_drop_boot" },
|
|
81
|
+
{ type: "LEVEL", sounds: "plm_levelup" },
|
|
82
|
+
{ type: "STUDY", sounds: "plm_book_pageturn" },
|
|
83
|
+
{ type: "TELEPORT", sounds: "plm_chimes_jangle" },
|
|
84
|
+
{ type: "QUAFF", sounds: "plm_bottle_clinks plm_cork_pop plm_cork_squeak" },
|
|
85
|
+
{ type: "ZAP_ROD", sounds: "plm_zap_rod" },
|
|
86
|
+
{ type: "TPOTHER", sounds: "plm_chimes_jangle" },
|
|
87
|
+
{ type: "HITWALL", sounds: "plm_wood_thud" },
|
|
88
|
+
{ type: "EAT", sounds: "plm_eat_bite" },
|
|
89
|
+
{ type: "DIG", sounds: "plm_metal_clank" },
|
|
90
|
+
{ type: "OPENDOOR", sounds: "plm_door_bolt plm_door_creak plm_door_dungeon plm_door_entrance plm_door_open plm_door_opening plm_door_rusty plm_door_squeaky" },
|
|
91
|
+
{ type: "SHUTDOOR", sounds: "plm_bang_dumpster plm_cabinet_shut plm_close_hatch plm_door_creakshut plm_door_latch plm_door_shut plm_door_slam" },
|
|
92
|
+
{ type: "TPLEVEL", sounds: "sum_bell_crystal" },
|
|
93
|
+
{ type: "BELL", sounds: "plm_jar_ding" },
|
|
94
|
+
{ type: "NOTHING_TO_OPEN", sounds: "plm_click_switch2 plm_door_knob" },
|
|
95
|
+
{ type: "LOCKPICK_FAIL", sounds: "plm_click_dry plm_click_switch plm_click_wood plm_door_echolock plm_door_wooden" },
|
|
96
|
+
{ type: "LOCKPICK", sounds: "plm_break_wood plm_cabinet_open plm_chest_unlatch plm_lock_case plm_lock_distant plm_open_case" },
|
|
97
|
+
{ type: "DISARM", sounds: "plm_bang_ceramic plm_chest_latch plm_click_switch3" },
|
|
98
|
+
{ type: "STAIRS_UP", sounds: "plm_floor_creak2" },
|
|
99
|
+
{ type: "STAIRS_DOWN", sounds: "plm_floor_creak" },
|
|
100
|
+
{ type: "ACT_ARTIFACT", sounds: "plm_aim_wand" },
|
|
101
|
+
{ type: "USE_STAFF", sounds: "plm_use_staff" },
|
|
102
|
+
{ type: "DESTROY", sounds: "plm_bang_metal plm_break_canister plm_break_glass plm_break_glass2 plm_break_plates plm_break_shatter plm_break_smash plm_glass_breaking plm_glass_break plm_glass_smashing" },
|
|
103
|
+
{ type: "WIELD", sounds: "plm_metal_sharpen" },
|
|
104
|
+
{ type: "QUIVER", sounds: "plc_miss_swish" },
|
|
105
|
+
{ type: "CURSED", sounds: "pls_man_oooh" },
|
|
106
|
+
{ type: "NOTICE", sounds: "id_bad_hmm" },
|
|
107
|
+
{ type: "RUNE", sounds: "id_good_hmm" },
|
|
108
|
+
{ type: "SPELL", sounds: "plm_spell1 plm_spell2 plm_spell3" },
|
|
109
|
+
{ type: "PRAYER", sounds: "sum_ainu_song" },
|
|
110
|
+
{ type: "FLEE", sounds: "mco_creature_yelp" },
|
|
111
|
+
{ type: "KILL", sounds: "mco_howl_croak mco_howl_deep mco_howl_distressed mco_howl_high mco_howl_long" },
|
|
112
|
+
{ type: "KILL_UNIQUE", sounds: "sum_ghost_wail" },
|
|
113
|
+
{ type: "KILL_KING", sounds: "amb_guitar_chord" },
|
|
114
|
+
{ type: "MON_HIT", sounds: "mco_hit_whip" },
|
|
115
|
+
{ type: "MON_TOUCH", sounds: "mco_click_vibra" },
|
|
116
|
+
{ type: "MON_PUNCH", sounds: "mco_squish_snap" },
|
|
117
|
+
{ type: "MON_KICK", sounds: "mco_rubber_thud" },
|
|
118
|
+
{ type: "MON_CLAW", sounds: "mco_ceramic_trill mco_scurry_dry" },
|
|
119
|
+
{ type: "MON_BITE", sounds: "mco_snarl_short mco_bite_soft mco_bite_munch mco_bite_long mco_bite_short mco_bite_gnash mco_bite_chomp mco_bite_regular mco_bite_small mco_bite_dainty mco_bite_hard mco_bite_chew" },
|
|
120
|
+
{ type: "MON_STING", sounds: "mco_castanet_trill mco_tube_hit" },
|
|
121
|
+
{ type: "MON_BUTT", sounds: "mco_cuica_rubbing mco_thud_crash" },
|
|
122
|
+
{ type: "MON_CRUSH", sounds: "mco_dino_low mco_squish_hit" },
|
|
123
|
+
{ type: "MON_ENGULF", sounds: "mco_dino_talk mco_dino_yawn" },
|
|
124
|
+
{ type: "MON_CRAWL", sounds: "mco_card_shuffle mco_shake_roll" },
|
|
125
|
+
{ type: "MON_DROOL", sounds: "mco_creature_choking mco_liquid_squirt" },
|
|
126
|
+
{ type: "MON_SPIT", sounds: "mco_attack_spray" },
|
|
127
|
+
{ type: "MON_GAZE", sounds: "mco_thoing_backwards" },
|
|
128
|
+
{ type: "MON_WAIL", sounds: "mco_dino_low" },
|
|
129
|
+
{ type: "MON_SPORE", sounds: "mco_dub_wobble mco_spray_long" },
|
|
130
|
+
{ type: "MON_BEG", sounds: "mco_man_mumble" },
|
|
131
|
+
{ type: "MON_INSULT", sounds: "mco_strange_thwoink" },
|
|
132
|
+
{ type: "MON_MOAN", sounds: "mco_strange_music" },
|
|
133
|
+
{ type: "SHRIEK", sounds: "mco_mouse_squeaks" },
|
|
134
|
+
{ type: "CREATE_TRAP", sounds: "mco_thoing_deep" },
|
|
135
|
+
{ type: "CAST_FEAR", sounds: "mco_creature_groan mco_dino_slur" },
|
|
136
|
+
{ type: "MULTIPLY", sounds: "mco_frog_trill" },
|
|
137
|
+
{ type: "SUM_MONSTER", sounds: "sum_chime_jangle" },
|
|
138
|
+
{ type: "SUM_AINU", sounds: "sum_ainu_song" },
|
|
139
|
+
{ type: "SUM_UNDEAD", sounds: "sum_ghost_oooo" },
|
|
140
|
+
{ type: "SUM_ANIMAL", sounds: "sum_lion_growl" },
|
|
141
|
+
{ type: "SUM_SPIDER", sounds: "sum_piano_scrape" },
|
|
142
|
+
{ type: "SUM_HOUND", sounds: "sum_lion_growl" },
|
|
143
|
+
{ type: "SUM_HYDRA", sounds: "sum_piano_scrape" },
|
|
144
|
+
{ type: "SUM_DEMON", sounds: "sum_ghost_wail sum_laugh_evil2" },
|
|
145
|
+
{ type: "SUM_DRAGON", sounds: "sum_piano_scrape" },
|
|
146
|
+
{ type: "SUM_HI_UNDEAD", sounds: "sum_ghost_moan" },
|
|
147
|
+
{ type: "SUM_HI_DRAGON", sounds: "sum_gong_temple" },
|
|
148
|
+
{ type: "SUM_HI_DEMON", sounds: "sum_ghost_moan" },
|
|
149
|
+
{ type: "SUM_WRAITH", sounds: "sum_bell_hand" },
|
|
150
|
+
{ type: "SUM_UNIQUE", sounds: "sum_bell_tone" },
|
|
151
|
+
{ type: "BR_FROST", sounds: "mco_attack_breath" },
|
|
152
|
+
{ type: "BR_ELEC", sounds: "mco_attack_breath" },
|
|
153
|
+
{ type: "BR_ACID", sounds: "mco_attack_breath" },
|
|
154
|
+
{ type: "BR_GAS", sounds: "mco_attack_breath" },
|
|
155
|
+
{ type: "BR_FIRE", sounds: "mco_attack_breath" },
|
|
156
|
+
{ type: "BR_DISEN", sounds: "mco_attack_breath" },
|
|
157
|
+
{ type: "BR_CHAOS", sounds: "mco_attack_breath" },
|
|
158
|
+
{ type: "BR_SHARDS", sounds: "mco_attack_breath" },
|
|
159
|
+
{ type: "BR_SOUND", sounds: "mco_attack_breath" },
|
|
160
|
+
{ type: "BR_LIGHT", sounds: "mco_attack_breath" },
|
|
161
|
+
{ type: "BR_DARK", sounds: "mco_attack_breath" },
|
|
162
|
+
{ type: "BR_NETHER", sounds: "mco_attack_breath" },
|
|
163
|
+
{ type: "BR_NEXUS", sounds: "mco_attack_breath" },
|
|
164
|
+
{ type: "BR_TIME", sounds: "mco_attack_breath" },
|
|
165
|
+
{ type: "BR_INERTIA", sounds: "mco_attack_breath" },
|
|
166
|
+
{ type: "BR_GRAVITY", sounds: "mco_attack_breath" },
|
|
167
|
+
{ type: "BR_PLASMA", sounds: "mco_attack_breath" },
|
|
168
|
+
{ type: "BR_FORCE", sounds: "mco_attack_breath" },
|
|
169
|
+
{ type: "BR_ELEMENTS", sounds: "mco_attack_breath" },
|
|
170
|
+
{ type: "IDENT_BAD", sounds: "id_bad_aww id_bad_dang id_bad_hmm id_bad_hmph id_bad_ohh" },
|
|
171
|
+
{ type: "IDENT_EGO", sounds: "id_ego_whoa id_ego_woohoo id_ego_yeah id_ego_yeah2 id_ego_yes" },
|
|
172
|
+
{ type: "IDENT_ART", sounds: "id_good_hey id_good_hey2 id_good_hmm id_good_huh id_good_ooh id_good_ooo id_good_wow" },
|
|
173
|
+
];
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sound subsystem types, ported from reference/src/sound.h (Angband 4.2.6).
|
|
3
|
+
*
|
|
4
|
+
* These are the platform-agnostic data structures and the platform hook
|
|
5
|
+
* seam. The core engine (engine.ts) owns the message->sound map, the sound
|
|
6
|
+
* pool, load-status tracking, and random selection; a front end supplies
|
|
7
|
+
* the hooks that actually load and play audio. Nothing here touches the DOM
|
|
8
|
+
* or any browser audio API.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** MAX_SOUNDS_PER_MESSAGE (sound-core.c): cap on samples mapped per message. */
|
|
12
|
+
export const MAX_SOUNDS_PER_MESSAGE = 16;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* enum sound_status (sound.h). UNKNOWN: nothing done yet. ERROR: the file
|
|
16
|
+
* exists but the platform could not make it playable. LOADED: playable.
|
|
17
|
+
* The core checks for LOADED before asking the platform to play.
|
|
18
|
+
*/
|
|
19
|
+
export enum SoundStatus {
|
|
20
|
+
UNKNOWN = 0,
|
|
21
|
+
ERROR = 1,
|
|
22
|
+
LOADED = 2,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* struct sound_data (sound.h): one sound sample.
|
|
27
|
+
* name: base name (no path, no extension)
|
|
28
|
+
* hash: djb2 hash of name, to speed up dedup searches
|
|
29
|
+
* status: SoundStatus (see above)
|
|
30
|
+
* platData: platform-specific handle (the C void *plat_data); the core
|
|
31
|
+
* never inspects it, it only hands it back to the hooks.
|
|
32
|
+
*/
|
|
33
|
+
export interface SoundData {
|
|
34
|
+
name: string;
|
|
35
|
+
hash: number;
|
|
36
|
+
status: SoundStatus;
|
|
37
|
+
platData: unknown;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* struct sound_file_type (sound.h): a file extension the platform can load
|
|
42
|
+
* and the platform-defined numeric type it maps to. `type` 0 terminates the
|
|
43
|
+
* upstream array; here the list is simply finite.
|
|
44
|
+
*/
|
|
45
|
+
export interface SoundFileType {
|
|
46
|
+
readonly extension: string;
|
|
47
|
+
readonly type: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* struct sound_hooks (sound.h): the platform sound module. A front end
|
|
52
|
+
* implements these; the core calls them. Every hook is optional so the core
|
|
53
|
+
* degrades gracefully (silent) when a platform provides none.
|
|
54
|
+
*
|
|
55
|
+
* loadSound mirrors load_sound_hook: given a resolved filename and file
|
|
56
|
+
* type it should set data.platData / data.status and return true on
|
|
57
|
+
* success. supportedFiles mirrors supported_files_hook: the extensions to
|
|
58
|
+
* try, in order. playSound mirrors play_sound_hook. unloadSound and the
|
|
59
|
+
* open/close audio hooks round out the C struct.
|
|
60
|
+
*/
|
|
61
|
+
export interface SoundHooks {
|
|
62
|
+
openAudio?: () => boolean;
|
|
63
|
+
closeAudio?: () => void;
|
|
64
|
+
loadSound?: (filename: string, fileType: number, data: SoundData) => boolean;
|
|
65
|
+
unloadSound?: (data: SoundData) => boolean;
|
|
66
|
+
playSound?: (data: SoundData) => boolean;
|
|
67
|
+
supportedFiles?: () => readonly SoundFileType[];
|
|
68
|
+
}
|