@rpgm-tools/neo-angband-core 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +43 -0
- package/README.md +80 -0
- package/dist/agent/act.d.ts +22 -0
- package/dist/agent/act.d.ts.map +1 -0
- package/dist/agent/act.js +88 -0
- package/dist/agent/act.js.map +1 -0
- package/dist/agent/controller.d.ts +34 -0
- package/dist/agent/controller.d.ts.map +1 -0
- package/dist/agent/controller.js +90 -0
- package/dist/agent/controller.js.map +1 -0
- package/dist/agent/events.d.ts +27 -0
- package/dist/agent/events.d.ts.map +1 -0
- package/dist/agent/events.js +31 -0
- package/dist/agent/events.js.map +1 -0
- package/dist/agent/index.d.ts +17 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +15 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/perceive.d.ts +21 -0
- package/dist/agent/perceive.d.ts.map +1 -0
- package/dist/agent/perceive.js +386 -0
- package/dist/agent/perceive.js.map +1 -0
- package/dist/agent/types.d.ts +436 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +63 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bitflag.d.ts +199 -0
- package/dist/bitflag.d.ts.map +1 -0
- package/dist/bitflag.js +478 -0
- package/dist/bitflag.js.map +1 -0
- package/dist/cmd.d.ts +164 -0
- package/dist/cmd.d.ts.map +1 -0
- package/dist/cmd.js +350 -0
- package/dist/cmd.js.map +1 -0
- package/dist/color.d.ts +104 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +240 -0
- package/dist/color.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +119 -0
- package/dist/combat/brand-slay.d.ts.map +1 -0
- package/dist/combat/brand-slay.js +264 -0
- package/dist/combat/brand-slay.js.map +1 -0
- package/dist/combat/hit.d.ts +198 -0
- package/dist/combat/hit.d.ts.map +1 -0
- package/dist/combat/hit.js +310 -0
- package/dist/combat/hit.js.map +1 -0
- package/dist/combat/index.d.ts +15 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +15 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/combat/melee.d.ts +261 -0
- package/dist/combat/melee.d.ts.map +1 -0
- package/dist/combat/melee.js +402 -0
- package/dist/combat/melee.js.map +1 -0
- package/dist/combat/mon-melee.d.ts +233 -0
- package/dist/combat/mon-melee.d.ts.map +1 -0
- package/dist/combat/mon-melee.js +883 -0
- package/dist/combat/mon-melee.js.map +1 -0
- package/dist/combat/ranged.d.ts +89 -0
- package/dist/combat/ranged.d.ts.map +1 -0
- package/dist/combat/ranged.js +253 -0
- package/dist/combat/ranged.js.map +1 -0
- package/dist/constants.d.ts +134 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +171 -0
- package/dist/constants.js.map +1 -0
- package/dist/dice.d.ts +91 -0
- package/dist/dice.d.ts.map +1 -0
- package/dist/dice.js +424 -0
- package/dist/dice.js.map +1 -0
- package/dist/effects/effect-choice.d.ts +15 -0
- package/dist/effects/effect-choice.d.ts.map +1 -0
- package/dist/effects/effect-choice.js +18 -0
- package/dist/effects/effect-choice.js.map +1 -0
- package/dist/effects/effect-info.d.ts +124 -0
- package/dist/effects/effect-info.d.ts.map +1 -0
- package/dist/effects/effect-info.js +706 -0
- package/dist/effects/effect-info.js.map +1 -0
- package/dist/effects/effect.d.ts +165 -0
- package/dist/effects/effect.d.ts.map +1 -0
- package/dist/effects/effect.js +452 -0
- package/dist/effects/effect.js.map +1 -0
- package/dist/effects/handlers.d.ts +70 -0
- package/dist/effects/handlers.d.ts.map +1 -0
- package/dist/effects/handlers.js +394 -0
- package/dist/effects/handlers.js.map +1 -0
- package/dist/effects/interpreter.d.ts +291 -0
- package/dist/effects/interpreter.d.ts.map +1 -0
- package/dist/effects/interpreter.js +325 -0
- package/dist/effects/interpreter.js.map +1 -0
- package/dist/events.d.ts +188 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +138 -0
- package/dist/events.js.map +1 -0
- package/dist/expression.d.ts +83 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +333 -0
- package/dist/expression.js.map +1 -0
- package/dist/game/cave-cmd.d.ts +195 -0
- package/dist/game/cave-cmd.d.ts.map +1 -0
- package/dist/game/cave-cmd.js +968 -0
- package/dist/game/cave-cmd.js.map +1 -0
- package/dist/game/char-sheet.d.ts +189 -0
- package/dist/game/char-sheet.d.ts.map +1 -0
- package/dist/game/char-sheet.js +381 -0
- package/dist/game/char-sheet.js.map +1 -0
- package/dist/game/chest.d.ts +94 -0
- package/dist/game/chest.d.ts.map +1 -0
- package/dist/game/chest.js +267 -0
- package/dist/game/chest.js.map +1 -0
- package/dist/game/context.d.ts +970 -0
- package/dist/game/context.d.ts.map +1 -0
- package/dist/game/context.js +353 -0
- package/dist/game/context.js.map +1 -0
- package/dist/game/curse-tick.d.ts +35 -0
- package/dist/game/curse-tick.d.ts.map +1 -0
- package/dist/game/curse-tick.js +100 -0
- package/dist/game/curse-tick.js.map +1 -0
- package/dist/game/describe.d.ts +20 -0
- package/dist/game/describe.d.ts.map +1 -0
- package/dist/game/describe.js +45 -0
- package/dist/game/describe.js.map +1 -0
- package/dist/game/display.d.ts +196 -0
- package/dist/game/display.d.ts.map +1 -0
- package/dist/game/display.js +684 -0
- package/dist/game/display.js.map +1 -0
- package/dist/game/dump-level.d.ts +37 -0
- package/dist/game/dump-level.d.ts.map +1 -0
- package/dist/game/dump-level.js +110 -0
- package/dist/game/dump-level.js.map +1 -0
- package/dist/game/effect-attack.d.ts +36 -0
- package/dist/game/effect-attack.d.ts.map +1 -0
- package/dist/game/effect-attack.js +694 -0
- package/dist/game/effect-attack.js.map +1 -0
- package/dist/game/effect-detect.d.ts +34 -0
- package/dist/game/effect-detect.d.ts.map +1 -0
- package/dist/game/effect-detect.js +456 -0
- package/dist/game/effect-detect.js.map +1 -0
- package/dist/game/effect-env.d.ts +77 -0
- package/dist/game/effect-env.d.ts.map +1 -0
- package/dist/game/effect-env.js +166 -0
- package/dist/game/effect-env.js.map +1 -0
- package/dist/game/effect-game-env.d.ts +76 -0
- package/dist/game/effect-game-env.d.ts.map +1 -0
- package/dist/game/effect-game-env.js +23 -0
- package/dist/game/effect-game-env.js.map +1 -0
- package/dist/game/effect-general.d.ts +98 -0
- package/dist/game/effect-general.d.ts.map +1 -0
- package/dist/game/effect-general.js +914 -0
- package/dist/game/effect-general.js.map +1 -0
- package/dist/game/effect-item.d.ts +124 -0
- package/dist/game/effect-item.d.ts.map +1 -0
- package/dist/game/effect-item.js +789 -0
- package/dist/game/effect-item.js.map +1 -0
- package/dist/game/effect-melee.d.ts +43 -0
- package/dist/game/effect-melee.d.ts.map +1 -0
- package/dist/game/effect-melee.js +477 -0
- package/dist/game/effect-melee.js.map +1 -0
- package/dist/game/effect-mon-origin.d.ts +67 -0
- package/dist/game/effect-mon-origin.d.ts.map +1 -0
- package/dist/game/effect-mon-origin.js +164 -0
- package/dist/game/effect-mon-origin.js.map +1 -0
- package/dist/game/effect-monster.d.ts +29 -0
- package/dist/game/effect-monster.d.ts.map +1 -0
- package/dist/game/effect-monster.js +281 -0
- package/dist/game/effect-monster.js.map +1 -0
- package/dist/game/effect-summon.d.ts +37 -0
- package/dist/game/effect-summon.d.ts.map +1 -0
- package/dist/game/effect-summon.js +113 -0
- package/dist/game/effect-summon.js.map +1 -0
- package/dist/game/effect-teleport.d.ts +130 -0
- package/dist/game/effect-teleport.d.ts.map +1 -0
- package/dist/game/effect-teleport.js +529 -0
- package/dist/game/effect-teleport.js.map +1 -0
- package/dist/game/effect-terrain.d.ts +91 -0
- package/dist/game/effect-terrain.d.ts.map +1 -0
- package/dist/game/effect-terrain.js +812 -0
- package/dist/game/effect-terrain.js.map +1 -0
- package/dist/game/energy.d.ts +45 -0
- package/dist/game/energy.d.ts.map +1 -0
- package/dist/game/energy.js +51 -0
- package/dist/game/energy.js.map +1 -0
- package/dist/game/equip-cmp.d.ts +138 -0
- package/dist/game/equip-cmp.d.ts.map +1 -0
- package/dist/game/equip-cmp.js +363 -0
- package/dist/game/equip-cmp.js.map +1 -0
- package/dist/game/floor.d.ts +182 -0
- package/dist/game/floor.d.ts.map +1 -0
- package/dist/game/floor.js +435 -0
- package/dist/game/floor.js.map +1 -0
- package/dist/game/gear.d.ts +408 -0
- package/dist/game/gear.d.ts.map +1 -0
- package/dist/game/gear.js +1037 -0
- package/dist/game/gear.js.map +1 -0
- package/dist/game/harness.d.ts +61 -0
- package/dist/game/harness.d.ts.map +1 -0
- package/dist/game/harness.js +198 -0
- package/dist/game/harness.js.map +1 -0
- package/dist/game/history.d.ts +49 -0
- package/dist/game/history.d.ts.map +1 -0
- package/dist/game/history.js +55 -0
- package/dist/game/history.js.map +1 -0
- package/dist/game/ignore-cmd.d.ts +42 -0
- package/dist/game/ignore-cmd.d.ts.map +1 -0
- package/dist/game/ignore-cmd.js +59 -0
- package/dist/game/ignore-cmd.js.map +1 -0
- package/dist/game/inscription-confirm.d.ts +80 -0
- package/dist/game/inscription-confirm.d.ts.map +1 -0
- package/dist/game/inscription-confirm.js +95 -0
- package/dist/game/inscription-confirm.js.map +1 -0
- package/dist/game/known.d.ts +297 -0
- package/dist/game/known.d.ts.map +1 -0
- package/dist/game/known.js +849 -0
- package/dist/game/known.js.map +1 -0
- package/dist/game/loop.d.ts +139 -0
- package/dist/game/loop.d.ts.map +1 -0
- package/dist/game/loop.js +631 -0
- package/dist/game/loop.js.map +1 -0
- package/dist/game/lore-color.d.ts +25 -0
- package/dist/game/lore-color.d.ts.map +1 -0
- package/dist/game/lore-color.js +95 -0
- package/dist/game/lore-color.js.map +1 -0
- package/dist/game/mon-cast.d.ts +150 -0
- package/dist/game/mon-cast.d.ts.map +1 -0
- package/dist/game/mon-cast.js +301 -0
- package/dist/game/mon-cast.js.map +1 -0
- package/dist/game/mon-cmd.d.ts +51 -0
- package/dist/game/mon-cmd.d.ts.map +1 -0
- package/dist/game/mon-cmd.js +670 -0
- package/dist/game/mon-cmd.js.map +1 -0
- package/dist/game/mon-death.d.ts +143 -0
- package/dist/game/mon-death.d.ts.map +1 -0
- package/dist/game/mon-death.js +328 -0
- package/dist/game/mon-death.js.map +1 -0
- package/dist/game/mon-group.d.ts +81 -0
- package/dist/game/mon-group.d.ts.map +1 -0
- package/dist/game/mon-group.js +323 -0
- package/dist/game/mon-group.js.map +1 -0
- package/dist/game/mon-list.d.ts +85 -0
- package/dist/game/mon-list.d.ts.map +1 -0
- package/dist/game/mon-list.js +154 -0
- package/dist/game/mon-list.js.map +1 -0
- package/dist/game/mon-message.d.ts +100 -0
- package/dist/game/mon-message.d.ts.map +1 -0
- package/dist/game/mon-message.js +336 -0
- package/dist/game/mon-message.js.map +1 -0
- package/dist/game/mon-place.d.ts +226 -0
- package/dist/game/mon-place.d.ts.map +1 -0
- package/dist/game/mon-place.js +642 -0
- package/dist/game/mon-place.js.map +1 -0
- package/dist/game/mon-ranged.d.ts +87 -0
- package/dist/game/mon-ranged.d.ts.map +1 -0
- package/dist/game/mon-ranged.js +353 -0
- package/dist/game/mon-ranged.js.map +1 -0
- package/dist/game/mon-shape.d.ts +43 -0
- package/dist/game/mon-shape.d.ts.map +1 -0
- package/dist/game/mon-shape.js +115 -0
- package/dist/game/mon-shape.js.map +1 -0
- package/dist/game/mon-side.d.ts +63 -0
- package/dist/game/mon-side.d.ts.map +1 -0
- package/dist/game/mon-side.js +403 -0
- package/dist/game/mon-side.js.map +1 -0
- package/dist/game/monster-turn.d.ts +195 -0
- package/dist/game/monster-turn.d.ts.map +1 -0
- package/dist/game/monster-turn.js +1560 -0
- package/dist/game/monster-turn.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +453 -0
- package/dist/game/obj-cmd.d.ts.map +1 -0
- package/dist/game/obj-cmd.js +1530 -0
- package/dist/game/obj-cmd.js.map +1 -0
- package/dist/game/obj-list.d.ts +92 -0
- package/dist/game/obj-list.d.ts.map +1 -0
- package/dist/game/obj-list.js +251 -0
- package/dist/game/obj-list.js.map +1 -0
- package/dist/game/object-inspect.d.ts +37 -0
- package/dist/game/object-inspect.d.ts.map +1 -0
- package/dist/game/object-inspect.js +106 -0
- package/dist/game/object-inspect.js.map +1 -0
- package/dist/game/pickup.d.ts +126 -0
- package/dist/game/pickup.d.ts.map +1 -0
- package/dist/game/pickup.js +367 -0
- package/dist/game/pickup.js.map +1 -0
- package/dist/game/player-path.d.ts +133 -0
- package/dist/game/player-path.d.ts.map +1 -0
- package/dist/game/player-path.js +1268 -0
- package/dist/game/player-path.js.map +1 -0
- package/dist/game/player-side.d.ts +59 -0
- package/dist/game/player-side.d.ts.map +1 -0
- package/dist/game/player-side.js +506 -0
- package/dist/game/player-side.js.map +1 -0
- package/dist/game/player-turn.d.ts +161 -0
- package/dist/game/player-turn.d.ts.map +1 -0
- package/dist/game/player-turn.js +739 -0
- package/dist/game/player-turn.js.map +1 -0
- package/dist/game/project-cast.d.ts +268 -0
- package/dist/game/project-cast.d.ts.map +1 -0
- package/dist/game/project-cast.js +496 -0
- package/dist/game/project-cast.js.map +1 -0
- package/dist/game/project-feat.d.ts +47 -0
- package/dist/game/project-feat.d.ts.map +1 -0
- package/dist/game/project-feat.js +350 -0
- package/dist/game/project-feat.js.map +1 -0
- package/dist/game/project-monster.d.ts +106 -0
- package/dist/game/project-monster.d.ts.map +1 -0
- package/dist/game/project-monster.js +272 -0
- package/dist/game/project-monster.js.map +1 -0
- package/dist/game/project-obj.d.ts +60 -0
- package/dist/game/project-obj.d.ts.map +1 -0
- package/dist/game/project-obj.js +245 -0
- package/dist/game/project-obj.js.map +1 -0
- package/dist/game/project-player.d.ts +120 -0
- package/dist/game/project-player.d.ts.map +1 -0
- package/dist/game/project-player.js +108 -0
- package/dist/game/project-player.js.map +1 -0
- package/dist/game/quest.d.ts +101 -0
- package/dist/game/quest.d.ts.map +1 -0
- package/dist/game/quest.js +192 -0
- package/dist/game/quest.js.map +1 -0
- package/dist/game/ranged-cmd.d.ts +32 -0
- package/dist/game/ranged-cmd.d.ts.map +1 -0
- package/dist/game/ranged-cmd.js +372 -0
- package/dist/game/ranged-cmd.js.map +1 -0
- package/dist/game/scheduler.d.ts +47 -0
- package/dist/game/scheduler.d.ts.map +1 -0
- package/dist/game/scheduler.js +141 -0
- package/dist/game/scheduler.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +104 -0
- package/dist/game/spell-cmd.d.ts.map +1 -0
- package/dist/game/spell-cmd.js +320 -0
- package/dist/game/spell-cmd.js.map +1 -0
- package/dist/game/spoil.d.ts +28 -0
- package/dist/game/spoil.d.ts.map +1 -0
- package/dist/game/spoil.js +435 -0
- package/dist/game/spoil.js.map +1 -0
- package/dist/game/steal.d.ts +35 -0
- package/dist/game/steal.d.ts.map +1 -0
- package/dist/game/steal.js +145 -0
- package/dist/game/steal.js.map +1 -0
- package/dist/game/take-hit-hooks.d.ts +52 -0
- package/dist/game/take-hit-hooks.d.ts.map +1 -0
- package/dist/game/take-hit-hooks.js +127 -0
- package/dist/game/take-hit-hooks.js.map +1 -0
- package/dist/game/target-loop.d.ts +119 -0
- package/dist/game/target-loop.d.ts.map +1 -0
- package/dist/game/target-loop.js +408 -0
- package/dist/game/target-loop.js.map +1 -0
- package/dist/game/target.d.ts +133 -0
- package/dist/game/target.d.ts.map +1 -0
- package/dist/game/target.js +353 -0
- package/dist/game/target.js.map +1 -0
- package/dist/game/thrust.d.ts +37 -0
- package/dist/game/thrust.d.ts.map +1 -0
- package/dist/game/thrust.js +155 -0
- package/dist/game/thrust.js.map +1 -0
- package/dist/game/trap.d.ts +218 -0
- package/dist/game/trap.d.ts.map +1 -0
- package/dist/game/trap.js +618 -0
- package/dist/game/trap.js.map +1 -0
- package/dist/game/ui-entry.d.ts +282 -0
- package/dist/game/ui-entry.d.ts.map +1 -0
- package/dist/game/ui-entry.js +1838 -0
- package/dist/game/ui-entry.js.map +1 -0
- package/dist/game/wizard.d.ts +654 -0
- package/dist/game/wizard.d.ts.map +1 -0
- package/dist/game/wizard.js +1323 -0
- package/dist/game/wizard.js.map +1 -0
- package/dist/game/world.d.ts +183 -0
- package/dist/game/world.d.ts.map +1 -0
- package/dist/game/world.js +685 -0
- package/dist/game/world.js.map +1 -0
- package/dist/gen/cave.d.ts +247 -0
- package/dist/gen/cave.d.ts.map +1 -0
- package/dist/gen/cave.js +2406 -0
- package/dist/gen/cave.js.map +1 -0
- package/dist/gen/gen-monster.d.ts +151 -0
- package/dist/gen/gen-monster.d.ts.map +1 -0
- package/dist/gen/gen-monster.js +473 -0
- package/dist/gen/gen-monster.js.map +1 -0
- package/dist/gen/generate.d.ts +240 -0
- package/dist/gen/generate.d.ts.map +1 -0
- package/dist/gen/generate.js +358 -0
- package/dist/gen/generate.js.map +1 -0
- package/dist/gen/room.d.ts +160 -0
- package/dist/gen/room.d.ts.map +1 -0
- package/dist/gen/room.js +1910 -0
- package/dist/gen/room.js.map +1 -0
- package/dist/gen/util.d.ts +466 -0
- package/dist/gen/util.d.ts.map +1 -0
- package/dist/gen/util.js +1553 -0
- package/dist/gen/util.js.map +1 -0
- package/dist/generated/dun-profiles.d.ts +44 -0
- package/dist/generated/dun-profiles.d.ts.map +1 -0
- package/dist/generated/dun-profiles.js +28 -0
- package/dist/generated/dun-profiles.js.map +1 -0
- package/dist/generated/effects.d.ts +1021 -0
- package/dist/generated/effects.d.ts.map +1 -0
- package/dist/generated/effects.js +239 -0
- package/dist/generated/effects.js.map +1 -0
- package/dist/generated/elements.d.ts +83 -0
- package/dist/generated/elements.d.ts.map +1 -0
- package/dist/generated/elements.js +60 -0
- package/dist/generated/elements.js.map +1 -0
- package/dist/generated/equip-slots.d.ts +104 -0
- package/dist/generated/equip-slots.d.ts.map +1 -0
- package/dist/generated/equip-slots.js +34 -0
- package/dist/generated/equip-slots.js.map +1 -0
- package/dist/generated/history-types.d.ts +52 -0
- package/dist/generated/history-types.d.ts.map +1 -0
- package/dist/generated/history-types.js +32 -0
- package/dist/generated/history-types.js.map +1 -0
- package/dist/generated/ignore-types.d.ts +116 -0
- package/dist/generated/ignore-types.d.ts.map +1 -0
- package/dist/generated/ignore-types.js +64 -0
- package/dist/generated/ignore-types.js.map +1 -0
- package/dist/generated/index.d.ts +32 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +33 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/kind-flags.d.ts +72 -0
- package/dist/generated/kind-flags.d.ts.map +1 -0
- package/dist/generated/kind-flags.js +42 -0
- package/dist/generated/kind-flags.js.map +1 -0
- package/dist/generated/message.d.ts +624 -0
- package/dist/generated/message.d.ts.map +1 -0
- package/dist/generated/message.js +318 -0
- package/dist/generated/message.js.map +1 -0
- package/dist/generated/mon-message.d.ts +386 -0
- package/dist/generated/mon-message.d.ts.map +1 -0
- package/dist/generated/mon-message.js +136 -0
- package/dist/generated/mon-message.js.map +1 -0
- package/dist/generated/mon-race-flags.d.ts +433 -0
- package/dist/generated/mon-race-flags.d.ts.map +1 -0
- package/dist/generated/mon-race-flags.js +180 -0
- package/dist/generated/mon-race-flags.js.map +1 -0
- package/dist/generated/mon-spells.d.ts +380 -0
- package/dist/generated/mon-spells.d.ts.map +1 -0
- package/dist/generated/mon-spells.js +196 -0
- package/dist/generated/mon-spells.js.map +1 -0
- package/dist/generated/mon-temp-flags.d.ts +52 -0
- package/dist/generated/mon-temp-flags.d.ts.map +1 -0
- package/dist/generated/mon-temp-flags.js +32 -0
- package/dist/generated/mon-temp-flags.js.map +1 -0
- package/dist/generated/mon-timed.d.ts +118 -0
- package/dist/generated/mon-timed.d.ts.map +1 -0
- package/dist/generated/mon-timed.js +32 -0
- package/dist/generated/mon-timed.js.map +1 -0
- package/dist/generated/object-flags.d.ts +169 -0
- package/dist/generated/object-flags.d.ts.map +1 -0
- package/dist/generated/object-flags.js +93 -0
- package/dist/generated/object-flags.js.map +1 -0
- package/dist/generated/object-modifiers.d.ts +50 -0
- package/dist/generated/object-modifiers.d.ts.map +1 -0
- package/dist/generated/object-modifiers.js +41 -0
- package/dist/generated/object-modifiers.js.map +1 -0
- package/dist/generated/options.d.ts +284 -0
- package/dist/generated/options.d.ts.map +1 -0
- package/dist/generated/options.js +102 -0
- package/dist/generated/options.js.map +1 -0
- package/dist/generated/origins.d.ts +138 -0
- package/dist/generated/origins.d.ts.map +1 -0
- package/dist/generated/origins.js +62 -0
- package/dist/generated/origins.js.map +1 -0
- package/dist/generated/parser-errors.d.ts +264 -0
- package/dist/generated/parser-errors.d.ts.map +1 -0
- package/dist/generated/parser-errors.js +138 -0
- package/dist/generated/parser-errors.js.map +1 -0
- package/dist/generated/player-flags.d.ts +62 -0
- package/dist/generated/player-flags.d.ts.map +1 -0
- package/dist/generated/player-flags.js +46 -0
- package/dist/generated/player-flags.js.map +1 -0
- package/dist/generated/player-timed.d.ts +273 -0
- package/dist/generated/player-timed.d.ts.map +1 -0
- package/dist/generated/player-timed.js +116 -0
- package/dist/generated/player-timed.js.map +1 -0
- package/dist/generated/projections.d.ts +130 -0
- package/dist/generated/projections.d.ts.map +1 -0
- package/dist/generated/projections.js +101 -0
- package/dist/generated/projections.js.map +1 -0
- package/dist/generated/randart-properties.d.ts +388 -0
- package/dist/generated/randart-properties.d.ts.map +1 -0
- package/dist/generated/randart-properties.js +200 -0
- package/dist/generated/randart-properties.js.map +1 -0
- package/dist/generated/room-flags.d.ts +21 -0
- package/dist/generated/room-flags.d.ts.map +1 -0
- package/dist/generated/room-flags.js +19 -0
- package/dist/generated/room-flags.js.map +1 -0
- package/dist/generated/rooms.d.ts +122 -0
- package/dist/generated/rooms.d.ts.map +1 -0
- package/dist/generated/rooms.js +48 -0
- package/dist/generated/rooms.js.map +1 -0
- package/dist/generated/square-flags.d.ts +96 -0
- package/dist/generated/square-flags.d.ts.map +1 -0
- package/dist/generated/square-flags.js +54 -0
- package/dist/generated/square-flags.js.map +1 -0
- package/dist/generated/stats.d.ts +23 -0
- package/dist/generated/stats.d.ts.map +1 -0
- package/dist/generated/stats.js +20 -0
- package/dist/generated/stats.js.map +1 -0
- package/dist/generated/terrain-flags.d.ts +136 -0
- package/dist/generated/terrain-flags.d.ts.map +1 -0
- package/dist/generated/terrain-flags.js +74 -0
- package/dist/generated/terrain-flags.js.map +1 -0
- package/dist/generated/terrain.d.ts +83 -0
- package/dist/generated/terrain.d.ts.map +1 -0
- package/dist/generated/terrain.js +60 -0
- package/dist/generated/terrain.js.map +1 -0
- package/dist/generated/trap-flags.d.ts +68 -0
- package/dist/generated/trap-flags.d.ts.map +1 -0
- package/dist/generated/trap-flags.js +40 -0
- package/dist/generated/trap-flags.js.map +1 -0
- package/dist/generated/tvals.d.ts +152 -0
- package/dist/generated/tvals.d.ts.map +1 -0
- package/dist/generated/tvals.js +82 -0
- package/dist/generated/tvals.js.map +1 -0
- package/dist/generated/ui-entry-renderers.d.ts +62 -0
- package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
- package/dist/generated/ui-entry-renderers.js +22 -0
- package/dist/generated/ui-entry-renderers.js.map +1 -0
- package/dist/guard.d.ts +43 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +65 -0
- package/dist/guard.js.map +1 -0
- package/dist/host/args.d.ts +129 -0
- package/dist/host/args.d.ts.map +1 -0
- package/dist/host/args.js +251 -0
- package/dist/host/args.js.map +1 -0
- package/dist/host/bridge.d.ts +61 -0
- package/dist/host/bridge.d.ts.map +1 -0
- package/dist/host/bridge.js +176 -0
- package/dist/host/bridge.js.map +1 -0
- package/dist/host/index.d.ts +18 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +18 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/io.d.ts +169 -0
- package/dist/host/io.d.ts.map +1 -0
- package/dist/host/io.js +137 -0
- package/dist/host/io.js.map +1 -0
- package/dist/host/memory.d.ts +56 -0
- package/dist/host/memory.d.ts.map +1 -0
- package/dist/host/memory.js +105 -0
- package/dist/host/memory.js.map +1 -0
- package/dist/host/raw.d.ts +114 -0
- package/dist/host/raw.d.ts.map +1 -0
- package/dist/host/raw.js +107 -0
- package/dist/host/raw.js.map +1 -0
- package/dist/index.d.ts +180 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -0
- package/dist/index.js.map +1 -0
- package/dist/loc.d.ts +63 -0
- package/dist/loc.d.ts.map +1 -0
- package/dist/loc.js +128 -0
- package/dist/loc.js.map +1 -0
- package/dist/mod/hooks.d.ts +204 -0
- package/dist/mod/hooks.d.ts.map +1 -0
- package/dist/mod/hooks.js +161 -0
- package/dist/mod/hooks.js.map +1 -0
- package/dist/mod/ids.d.ts +160 -0
- package/dist/mod/ids.d.ts.map +1 -0
- package/dist/mod/ids.js +343 -0
- package/dist/mod/ids.js.map +1 -0
- package/dist/mod/registry-host.d.ts +156 -0
- package/dist/mod/registry-host.d.ts.map +1 -0
- package/dist/mod/registry-host.js +142 -0
- package/dist/mod/registry-host.js.map +1 -0
- package/dist/mod/save-blocks.d.ts +201 -0
- package/dist/mod/save-blocks.d.ts.map +1 -0
- package/dist/mod/save-blocks.js +640 -0
- package/dist/mod/save-blocks.js.map +1 -0
- package/dist/mod/vocabulary.d.ts +104 -0
- package/dist/mod/vocabulary.d.ts.map +1 -0
- package/dist/mod/vocabulary.js +0 -0
- package/dist/mod/vocabulary.js.map +1 -0
- package/dist/mon/bind.d.ts +266 -0
- package/dist/mon/bind.d.ts.map +1 -0
- package/dist/mon/bind.js +610 -0
- package/dist/mon/bind.js.map +1 -0
- package/dist/mon/desc.d.ts +72 -0
- package/dist/mon/desc.d.ts.map +1 -0
- package/dist/mon/desc.js +237 -0
- package/dist/mon/desc.js.map +1 -0
- package/dist/mon/knowledge-groups.d.ts +61 -0
- package/dist/mon/knowledge-groups.d.ts.map +1 -0
- package/dist/mon/knowledge-groups.js +121 -0
- package/dist/mon/knowledge-groups.js.map +1 -0
- package/dist/mon/lore-describe.d.ts +216 -0
- package/dist/mon/lore-describe.d.ts.map +1 -0
- package/dist/mon/lore-describe.js +1105 -0
- package/dist/mon/lore-describe.js.map +1 -0
- package/dist/mon/lore.d.ts +117 -0
- package/dist/mon/lore.d.ts.map +1 -0
- package/dist/mon/lore.js +221 -0
- package/dist/mon/lore.js.map +1 -0
- package/dist/mon/make.d.ts +147 -0
- package/dist/mon/make.d.ts.map +1 -0
- package/dist/mon/make.js +353 -0
- package/dist/mon/make.js.map +1 -0
- package/dist/mon/monster.d.ts +94 -0
- package/dist/mon/monster.d.ts.map +1 -0
- package/dist/mon/monster.js +90 -0
- package/dist/mon/monster.js.map +1 -0
- package/dist/mon/predicate.d.ts +87 -0
- package/dist/mon/predicate.d.ts.map +1 -0
- package/dist/mon/predicate.js +190 -0
- package/dist/mon/predicate.js.map +1 -0
- package/dist/mon/project-mon.d.ts +129 -0
- package/dist/mon/project-mon.d.ts.map +1 -0
- package/dist/mon/project-mon.js +652 -0
- package/dist/mon/project-mon.js.map +1 -0
- package/dist/mon/spell.d.ts +155 -0
- package/dist/mon/spell.d.ts.map +1 -0
- package/dist/mon/spell.js +355 -0
- package/dist/mon/spell.js.map +1 -0
- package/dist/mon/steal.d.ts +112 -0
- package/dist/mon/steal.d.ts.map +1 -0
- package/dist/mon/steal.js +163 -0
- package/dist/mon/steal.js.map +1 -0
- package/dist/mon/summon.d.ts +62 -0
- package/dist/mon/summon.d.ts.map +1 -0
- package/dist/mon/summon.js +111 -0
- package/dist/mon/summon.js.map +1 -0
- package/dist/mon/take-hit.d.ts +75 -0
- package/dist/mon/take-hit.d.ts.map +1 -0
- package/dist/mon/take-hit.js +122 -0
- package/dist/mon/take-hit.js.map +1 -0
- package/dist/mon/timed.d.ts +74 -0
- package/dist/mon/timed.d.ts.map +1 -0
- package/dist/mon/timed.js +219 -0
- package/dist/mon/timed.js.map +1 -0
- package/dist/mon/types.d.ts +252 -0
- package/dist/mon/types.d.ts.map +1 -0
- package/dist/mon/types.js +46 -0
- package/dist/mon/types.js.map +1 -0
- package/dist/msg.d.ts +71 -0
- package/dist/msg.d.ts.map +1 -0
- package/dist/msg.js +126 -0
- package/dist/msg.js.map +1 -0
- package/dist/obj/artifact-fake.d.ts +39 -0
- package/dist/obj/artifact-fake.d.ts.map +1 -0
- package/dist/obj/artifact-fake.js +52 -0
- package/dist/obj/artifact-fake.js.map +1 -0
- package/dist/obj/artifact-known.d.ts +50 -0
- package/dist/obj/artifact-known.d.ts.map +1 -0
- package/dist/obj/artifact-known.js +55 -0
- package/dist/obj/artifact-known.js.map +1 -0
- package/dist/obj/bind.d.ts +219 -0
- package/dist/obj/bind.d.ts.map +1 -0
- package/dist/obj/bind.js +1239 -0
- package/dist/obj/bind.js.map +1 -0
- package/dist/obj/chest.d.ts +91 -0
- package/dist/obj/chest.d.ts.map +1 -0
- package/dist/obj/chest.js +220 -0
- package/dist/obj/chest.js.map +1 -0
- package/dist/obj/desc.d.ts +79 -0
- package/dist/obj/desc.d.ts.map +1 -0
- package/dist/obj/desc.js +602 -0
- package/dist/obj/desc.js.map +1 -0
- package/dist/obj/effects-info.d.ts +78 -0
- package/dist/obj/effects-info.d.ts.map +1 -0
- package/dist/obj/effects-info.js +240 -0
- package/dist/obj/effects-info.js.map +1 -0
- package/dist/obj/flavor.d.ts +68 -0
- package/dist/obj/flavor.d.ts.map +1 -0
- package/dist/obj/flavor.js +201 -0
- package/dist/obj/flavor.js.map +1 -0
- package/dist/obj/ignore.d.ts +143 -0
- package/dist/obj/ignore.d.ts.map +1 -0
- package/dist/obj/ignore.js +345 -0
- package/dist/obj/ignore.js.map +1 -0
- package/dist/obj/knowledge.d.ts +520 -0
- package/dist/obj/knowledge.d.ts.map +1 -0
- package/dist/obj/knowledge.js +1364 -0
- package/dist/obj/knowledge.js.map +1 -0
- package/dist/obj/known-object.d.ts +293 -0
- package/dist/obj/known-object.d.ts.map +1 -0
- package/dist/obj/known-object.js +532 -0
- package/dist/obj/known-object.js.map +1 -0
- package/dist/obj/make.d.ts +292 -0
- package/dist/obj/make.d.ts.map +1 -0
- package/dist/obj/make.js +1055 -0
- package/dist/obj/make.js.map +1 -0
- package/dist/obj/object-info.d.ts +188 -0
- package/dist/obj/object-info.d.ts.map +1 -0
- package/dist/obj/object-info.js +1407 -0
- package/dist/obj/object-info.js.map +1 -0
- package/dist/obj/object.d.ts +335 -0
- package/dist/obj/object.d.ts.map +1 -0
- package/dist/obj/object.js +1051 -0
- package/dist/obj/object.js.map +1 -0
- package/dist/obj/power.d.ts +65 -0
- package/dist/obj/power.d.ts.map +1 -0
- package/dist/obj/power.js +580 -0
- package/dist/obj/power.js.map +1 -0
- package/dist/obj/randart-build.d.ts +223 -0
- package/dist/obj/randart-build.d.ts.map +1 -0
- package/dist/obj/randart-build.js +1444 -0
- package/dist/obj/randart-build.js.map +1 -0
- package/dist/obj/randart-data.d.ts +179 -0
- package/dist/obj/randart-data.d.ts.map +1 -0
- package/dist/obj/randart-data.js +1153 -0
- package/dist/obj/randart-data.js.map +1 -0
- package/dist/obj/randart.d.ts +128 -0
- package/dist/obj/randart.d.ts.map +1 -0
- package/dist/obj/randart.js +458 -0
- package/dist/obj/randart.js.map +1 -0
- package/dist/obj/randname.d.ts +33 -0
- package/dist/obj/randname.d.ts.map +1 -0
- package/dist/obj/randname.js +116 -0
- package/dist/obj/randname.js.map +1 -0
- package/dist/obj/recharge.d.ts +28 -0
- package/dist/obj/recharge.d.ts.map +1 -0
- package/dist/obj/recharge.js +52 -0
- package/dist/obj/recharge.js.map +1 -0
- package/dist/obj/types.d.ts +584 -0
- package/dist/obj/types.d.ts.map +1 -0
- package/dist/obj/types.js +104 -0
- package/dist/obj/types.js.map +1 -0
- package/dist/obj/value.d.ts +64 -0
- package/dist/obj/value.d.ts.map +1 -0
- package/dist/obj/value.js +176 -0
- package/dist/obj/value.js.map +1 -0
- package/dist/player/abilities.d.ts +57 -0
- package/dist/player/abilities.d.ts.map +1 -0
- package/dist/player/abilities.js +118 -0
- package/dist/player/abilities.js.map +1 -0
- package/dist/player/best-digger.d.ts +42 -0
- package/dist/player/best-digger.d.ts.map +1 -0
- package/dist/player/best-digger.js +89 -0
- package/dist/player/best-digger.js.map +1 -0
- package/dist/player/bind.d.ts +270 -0
- package/dist/player/bind.d.ts.map +1 -0
- package/dist/player/bind.js +698 -0
- package/dist/player/bind.js.map +1 -0
- package/dist/player/birth.d.ts +258 -0
- package/dist/player/birth.d.ts.map +1 -0
- package/dist/player/birth.js +639 -0
- package/dist/player/birth.js.map +1 -0
- package/dist/player/calcs.d.ts +403 -0
- package/dist/player/calcs.d.ts.map +1 -0
- package/dist/player/calcs.js +1189 -0
- package/dist/player/calcs.js.map +1 -0
- package/dist/player/combat-regen.d.ts +14 -0
- package/dist/player/combat-regen.d.ts.map +1 -0
- package/dist/player/combat-regen.js +29 -0
- package/dist/player/combat-regen.js.map +1 -0
- package/dist/player/exp.d.ts +96 -0
- package/dist/player/exp.d.ts.map +1 -0
- package/dist/player/exp.js +229 -0
- package/dist/player/exp.js.map +1 -0
- package/dist/player/history.d.ts +91 -0
- package/dist/player/history.d.ts.map +1 -0
- package/dist/player/history.js +145 -0
- package/dist/player/history.js.map +1 -0
- package/dist/player/options.d.ts +123 -0
- package/dist/player/options.d.ts.map +1 -0
- package/dist/player/options.js +199 -0
- package/dist/player/options.js.map +1 -0
- package/dist/player/player.d.ts +242 -0
- package/dist/player/player.d.ts.map +1 -0
- package/dist/player/player.js +119 -0
- package/dist/player/player.js.map +1 -0
- package/dist/player/shape-lore.d.ts +56 -0
- package/dist/player/shape-lore.d.ts.map +1 -0
- package/dist/player/shape-lore.js +221 -0
- package/dist/player/shape-lore.js.map +1 -0
- package/dist/player/spell.d.ts +146 -0
- package/dist/player/spell.d.ts.map +1 -0
- package/dist/player/spell.js +519 -0
- package/dist/player/spell.js.map +1 -0
- package/dist/player/take-hit.d.ts +87 -0
- package/dist/player/take-hit.d.ts.map +1 -0
- package/dist/player/take-hit.js +99 -0
- package/dist/player/take-hit.js.map +1 -0
- package/dist/player/timed.d.ts +205 -0
- package/dist/player/timed.d.ts.map +1 -0
- package/dist/player/timed.js +310 -0
- package/dist/player/timed.js.map +1 -0
- package/dist/player/types.d.ts +390 -0
- package/dist/player/types.d.ts.map +1 -0
- package/dist/player/types.js +51 -0
- package/dist/player/types.js.map +1 -0
- package/dist/rational.d.ts +99 -0
- package/dist/rational.d.ts.map +1 -0
- package/dist/rational.js +345 -0
- package/dist/rational.js.map +1 -0
- package/dist/rng.d.ts +168 -0
- package/dist/rng.d.ts.map +1 -0
- package/dist/rng.js +404 -0
- package/dist/rng.js.map +1 -0
- package/dist/save/buffer.d.ts +120 -0
- package/dist/save/buffer.d.ts.map +1 -0
- package/dist/save/buffer.js +238 -0
- package/dist/save/buffer.js.map +1 -0
- package/dist/save/compress.d.ts +79 -0
- package/dist/save/compress.d.ts.map +1 -0
- package/dist/save/compress.js +97 -0
- package/dist/save/compress.js.map +1 -0
- package/dist/save/description.d.ts +61 -0
- package/dist/save/description.d.ts.map +1 -0
- package/dist/save/description.js +51 -0
- package/dist/save/description.js.map +1 -0
- package/dist/save/integrity.d.ts +59 -0
- package/dist/save/integrity.d.ts.map +1 -0
- package/dist/save/integrity.js +103 -0
- package/dist/save/integrity.js.map +1 -0
- package/dist/score/display.d.ts +40 -0
- package/dist/score/display.d.ts.map +1 -0
- package/dist/score/display.js +86 -0
- package/dist/score/display.js.map +1 -0
- package/dist/score/score.d.ts +166 -0
- package/dist/score/score.d.ts.map +1 -0
- package/dist/score/score.js +244 -0
- package/dist/score/score.js.map +1 -0
- package/dist/score/types.d.ts +98 -0
- package/dist/score/types.d.ts.map +1 -0
- package/dist/score/types.js +27 -0
- package/dist/score/types.js.map +1 -0
- package/dist/session/boot.d.ts +207 -0
- package/dist/session/boot.d.ts.map +1 -0
- package/dist/session/boot.js +151 -0
- package/dist/session/boot.js.map +1 -0
- package/dist/session/game.d.ts +257 -0
- package/dist/session/game.d.ts.map +1 -0
- package/dist/session/game.js +2880 -0
- package/dist/session/game.js.map +1 -0
- package/dist/session/save.d.ts +847 -0
- package/dist/session/save.d.ts.map +1 -0
- package/dist/session/save.js +1306 -0
- package/dist/session/save.js.map +1 -0
- package/dist/sound/engine.d.ts +146 -0
- package/dist/sound/engine.d.ts.map +1 -0
- package/dist/sound/engine.js +332 -0
- package/dist/sound/engine.js.map +1 -0
- package/dist/sound/index.d.ts +13 -0
- package/dist/sound/index.d.ts.map +1 -0
- package/dist/sound/index.js +13 -0
- package/dist/sound/index.js.map +1 -0
- package/dist/sound/sound-prefs-data.d.ts +10 -0
- package/dist/sound/sound-prefs-data.d.ts.map +1 -0
- package/dist/sound/sound-prefs-data.js +165 -0
- package/dist/sound/sound-prefs-data.js.map +1 -0
- package/dist/sound/types.d.ts +64 -0
- package/dist/sound/types.d.ts.map +1 -0
- package/dist/sound/types.js +23 -0
- package/dist/sound/types.js.map +1 -0
- package/dist/store/bind.d.ts +43 -0
- package/dist/store/bind.d.ts.map +1 -0
- package/dist/store/bind.js +130 -0
- package/dist/store/bind.js.map +1 -0
- package/dist/store/price.d.ts +27 -0
- package/dist/store/price.d.ts.map +1 -0
- package/dist/store/price.js +81 -0
- package/dist/store/price.js.map +1 -0
- package/dist/store/store-cmd.d.ts +51 -0
- package/dist/store/store-cmd.d.ts.map +1 -0
- package/dist/store/store-cmd.js +73 -0
- package/dist/store/store-cmd.js.map +1 -0
- package/dist/store/store.d.ts +156 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +616 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/transact.d.ts +198 -0
- package/dist/store/transact.d.ts.map +1 -0
- package/dist/store/transact.js +383 -0
- package/dist/store/transact.js.map +1 -0
- package/dist/store/types.d.ts +101 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/version.d.ts +25 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/dist/visuals/engine.d.ts +223 -0
- package/dist/visuals/engine.d.ts.map +1 -0
- package/dist/visuals/engine.js +357 -0
- package/dist/visuals/engine.js.map +1 -0
- package/dist/visuals/glyph-table.d.ts +112 -0
- package/dist/visuals/glyph-table.d.ts.map +1 -0
- package/dist/visuals/glyph-table.js +156 -0
- package/dist/visuals/glyph-table.js.map +1 -0
- package/dist/visuals/grafmode-data.d.ts +4 -0
- package/dist/visuals/grafmode-data.d.ts.map +1 -0
- package/dist/visuals/grafmode-data.js +88 -0
- package/dist/visuals/grafmode-data.js.map +1 -0
- package/dist/visuals/grafmode.d.ts +83 -0
- package/dist/visuals/grafmode.d.ts.map +1 -0
- package/dist/visuals/grafmode.js +82 -0
- package/dist/visuals/grafmode.js.map +1 -0
- package/dist/visuals/index.d.ts +19 -0
- package/dist/visuals/index.d.ts.map +1 -0
- package/dist/visuals/index.js +19 -0
- package/dist/visuals/index.js.map +1 -0
- package/dist/visuals/map-text.d.ts +79 -0
- package/dist/visuals/map-text.d.ts.map +1 -0
- package/dist/visuals/map-text.js +122 -0
- package/dist/visuals/map-text.js.map +1 -0
- package/dist/visuals/pref-expr.d.ts +56 -0
- package/dist/visuals/pref-expr.d.ts.map +1 -0
- package/dist/visuals/pref-expr.js +173 -0
- package/dist/visuals/pref-expr.js.map +1 -0
- package/dist/visuals/prefs.d.ts +280 -0
- package/dist/visuals/prefs.d.ts.map +1 -0
- package/dist/visuals/prefs.js +835 -0
- package/dist/visuals/prefs.js.map +1 -0
- package/dist/visuals/tile-prefs.d.ts +132 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -0
- package/dist/visuals/tile-prefs.js +105 -0
- package/dist/visuals/tile-prefs.js.map +1 -0
- package/dist/world/chunk.d.ts +195 -0
- package/dist/world/chunk.d.ts.map +1 -0
- package/dist/world/chunk.js +422 -0
- package/dist/world/chunk.js.map +1 -0
- package/dist/world/feature.d.ts +86 -0
- package/dist/world/feature.d.ts.map +1 -0
- package/dist/world/feature.js +153 -0
- package/dist/world/feature.js.map +1 -0
- package/dist/world/flow.d.ts +33 -0
- package/dist/world/flow.d.ts.map +1 -0
- package/dist/world/flow.js +115 -0
- package/dist/world/flow.js.map +1 -0
- package/dist/world/project.d.ts +176 -0
- package/dist/world/project.d.ts.map +1 -0
- package/dist/world/project.js +543 -0
- package/dist/world/project.js.map +1 -0
- package/dist/world/projection.d.ts +100 -0
- package/dist/world/projection.d.ts.map +1 -0
- package/dist/world/projection.js +152 -0
- package/dist/world/projection.js.map +1 -0
- package/dist/world/scatter.d.ts +25 -0
- package/dist/world/scatter.d.ts.map +1 -0
- package/dist/world/scatter.js +54 -0
- package/dist/world/scatter.js.map +1 -0
- package/dist/world/trap.d.ts +84 -0
- package/dist/world/trap.d.ts.map +1 -0
- package/dist/world/trap.js +106 -0
- package/dist/world/trap.js.map +1 -0
- package/dist/world/view.d.ts +60 -0
- package/dist/world/view.d.ts.map +1 -0
- package/dist/world/view.js +436 -0
- package/dist/world/view.js.map +1 -0
- package/dist/z-queue.d.ts +133 -0
- package/dist/z-queue.d.ts.map +1 -0
- package/dist/z-queue.js +283 -0
- package/dist/z-queue.js.map +1 -0
- package/package.json +75 -0
- package/src/agent/act.ts +114 -0
- package/src/agent/controller.ts +109 -0
- package/src/agent/events.ts +47 -0
- package/src/agent/index.ts +36 -0
- package/src/agent/perceive.ts +440 -0
- package/src/agent/types.ts +464 -0
- package/src/bitflag.ts +536 -0
- package/src/cmd.ts +547 -0
- package/src/color.ts +267 -0
- package/src/combat/brand-slay.ts +360 -0
- package/src/combat/hit.ts +471 -0
- package/src/combat/index.ts +15 -0
- package/src/combat/melee.ts +728 -0
- package/src/combat/mon-melee.ts +1153 -0
- package/src/combat/ranged.ts +397 -0
- package/src/constants.ts +324 -0
- package/src/dice.ts +467 -0
- package/src/effects/effect-choice.ts +32 -0
- package/src/effects/effect-info.ts +859 -0
- package/src/effects/effect.ts +560 -0
- package/src/effects/handlers.ts +452 -0
- package/src/effects/interpreter.ts +603 -0
- package/src/events.ts +317 -0
- package/src/expression.ts +360 -0
- package/src/game/cave-cmd.ts +1147 -0
- package/src/game/char-sheet.ts +557 -0
- package/src/game/chest.ts +348 -0
- package/src/game/context.ts +1218 -0
- package/src/game/curse-tick.ts +130 -0
- package/src/game/describe.ts +62 -0
- package/src/game/display.ts +838 -0
- package/src/game/dump-level.ts +114 -0
- package/src/game/effect-attack.ts +746 -0
- package/src/game/effect-detect.ts +542 -0
- package/src/game/effect-env.ts +252 -0
- package/src/game/effect-game-env.ts +86 -0
- package/src/game/effect-general.ts +1122 -0
- package/src/game/effect-item.ts +999 -0
- package/src/game/effect-melee.ts +557 -0
- package/src/game/effect-mon-origin.ts +196 -0
- package/src/game/effect-monster.ts +310 -0
- package/src/game/effect-summon.ts +161 -0
- package/src/game/effect-teleport.ts +645 -0
- package/src/game/effect-terrain.ts +881 -0
- package/src/game/energy.ts +61 -0
- package/src/game/equip-cmp.ts +476 -0
- package/src/game/floor.ts +524 -0
- package/src/game/gear.ts +1352 -0
- package/src/game/harness.ts +270 -0
- package/src/game/history.ts +78 -0
- package/src/game/ignore-cmd.ts +68 -0
- package/src/game/inscription-confirm.ts +115 -0
- package/src/game/known.ts +960 -0
- package/src/game/loop.ts +671 -0
- package/src/game/lore-color.ts +108 -0
- package/src/game/mon-cast.ts +409 -0
- package/src/game/mon-cmd.ts +767 -0
- package/src/game/mon-death.ts +459 -0
- package/src/game/mon-group.ts +368 -0
- package/src/game/mon-list.ts +213 -0
- package/src/game/mon-message.ts +359 -0
- package/src/game/mon-place.ts +1012 -0
- package/src/game/mon-ranged.ts +405 -0
- package/src/game/mon-shape.ts +161 -0
- package/src/game/mon-side.ts +511 -0
- package/src/game/monster-turn.ts +1750 -0
- package/src/game/obj-cmd.ts +1970 -0
- package/src/game/obj-list.ts +302 -0
- package/src/game/object-inspect.ts +162 -0
- package/src/game/pickup.ts +483 -0
- package/src/game/player-path.ts +1434 -0
- package/src/game/player-side.ts +555 -0
- package/src/game/player-turn.ts +852 -0
- package/src/game/project-cast.ts +766 -0
- package/src/game/project-feat.ts +386 -0
- package/src/game/project-monster.ts +407 -0
- package/src/game/project-obj.ts +298 -0
- package/src/game/project-player.ts +236 -0
- package/src/game/quest.ts +248 -0
- package/src/game/ranged-cmd.ts +417 -0
- package/src/game/scheduler.ts +150 -0
- package/src/game/spell-cmd.ts +404 -0
- package/src/game/spoil.ts +562 -0
- package/src/game/steal.ts +169 -0
- package/src/game/take-hit-hooks.ts +152 -0
- package/src/game/target-loop.ts +501 -0
- package/src/game/target.ts +424 -0
- package/src/game/thrust.ts +174 -0
- package/src/game/trap.ts +791 -0
- package/src/game/ui-entry.ts +2075 -0
- package/src/game/wizard.ts +1760 -0
- package/src/game/world.ts +786 -0
- package/src/gen/cave.ts +2858 -0
- package/src/gen/gen-monster.ts +592 -0
- package/src/gen/generate.ts +523 -0
- package/src/gen/room.ts +2213 -0
- package/src/gen/util.ts +1958 -0
- package/src/generated/dun-profiles.ts +30 -0
- package/src/generated/effects.ts +241 -0
- package/src/generated/elements.ts +62 -0
- package/src/generated/equip-slots.ts +36 -0
- package/src/generated/history-types.ts +34 -0
- package/src/generated/ignore-types.ts +66 -0
- package/src/generated/index.ts +33 -0
- package/src/generated/kind-flags.ts +44 -0
- package/src/generated/message.ts +320 -0
- package/src/generated/mon-message.ts +138 -0
- package/src/generated/mon-race-flags.ts +182 -0
- package/src/generated/mon-spells.ts +198 -0
- package/src/generated/mon-temp-flags.ts +34 -0
- package/src/generated/mon-timed.ts +34 -0
- package/src/generated/object-flags.ts +95 -0
- package/src/generated/object-modifiers.ts +43 -0
- package/src/generated/options.ts +104 -0
- package/src/generated/origins.ts +64 -0
- package/src/generated/parser-errors.ts +140 -0
- package/src/generated/player-flags.ts +48 -0
- package/src/generated/player-timed.ts +118 -0
- package/src/generated/projections.ts +103 -0
- package/src/generated/randart-properties.ts +202 -0
- package/src/generated/room-flags.ts +21 -0
- package/src/generated/rooms.ts +50 -0
- package/src/generated/square-flags.ts +56 -0
- package/src/generated/stats.ts +22 -0
- package/src/generated/terrain-flags.ts +76 -0
- package/src/generated/terrain.ts +62 -0
- package/src/generated/trap-flags.ts +42 -0
- package/src/generated/tvals.ts +84 -0
- package/src/generated/ui-entry-renderers.ts +24 -0
- package/src/guard.ts +70 -0
- package/src/host/args.ts +334 -0
- package/src/host/bridge.ts +193 -0
- package/src/host/index.ts +18 -0
- package/src/host/io.ts +239 -0
- package/src/host/memory.ts +134 -0
- package/src/host/raw.ts +190 -0
- package/src/index.ts +250 -0
- package/src/loc.ts +157 -0
- package/src/mod/hooks.ts +278 -0
- package/src/mod/ids.ts +390 -0
- package/src/mod/registry-host.ts +258 -0
- package/src/mod/save-blocks.ts +787 -0
- package/src/mod/vocabulary.ts +0 -0
- package/src/mon/bind.ts +899 -0
- package/src/mon/desc.ts +212 -0
- package/src/mon/knowledge-groups.ts +164 -0
- package/src/mon/lore-describe.ts +1414 -0
- package/src/mon/lore.ts +306 -0
- package/src/mon/make.ts +422 -0
- package/src/mon/monster.ts +161 -0
- package/src/mon/predicate.ts +220 -0
- package/src/mon/project-mon.ts +855 -0
- package/src/mon/spell.ts +418 -0
- package/src/mon/steal.ts +246 -0
- package/src/mon/summon.ts +145 -0
- package/src/mon/take-hit.ts +195 -0
- package/src/mon/timed.ts +300 -0
- package/src/mon/types.ts +286 -0
- package/src/msg.ts +146 -0
- package/src/obj/artifact-fake.ts +63 -0
- package/src/obj/artifact-known.ts +69 -0
- package/src/obj/bind.ts +1345 -0
- package/src/obj/chest.ts +249 -0
- package/src/obj/desc.ts +699 -0
- package/src/obj/effects-info.ts +349 -0
- package/src/obj/flavor.ts +256 -0
- package/src/obj/ignore.ts +387 -0
- package/src/obj/knowledge.ts +1577 -0
- package/src/obj/known-object.ts +718 -0
- package/src/obj/make.ts +1367 -0
- package/src/obj/object-info.ts +1737 -0
- package/src/obj/object.ts +1296 -0
- package/src/obj/power.ts +674 -0
- package/src/obj/randart-build.ts +1705 -0
- package/src/obj/randart-data.ts +1344 -0
- package/src/obj/randart.ts +552 -0
- package/src/obj/randname.ts +128 -0
- package/src/obj/recharge.ts +62 -0
- package/src/obj/types.ts +559 -0
- package/src/obj/value.ts +215 -0
- package/src/player/abilities.ts +142 -0
- package/src/player/best-digger.ts +118 -0
- package/src/player/bind.ts +1021 -0
- package/src/player/birth.ts +794 -0
- package/src/player/calcs.ts +1522 -0
- package/src/player/combat-regen.ts +33 -0
- package/src/player/exp.ts +275 -0
- package/src/player/history.ts +211 -0
- package/src/player/options.ts +244 -0
- package/src/player/player.ts +356 -0
- package/src/player/shape-lore.ts +250 -0
- package/src/player/spell.ts +627 -0
- package/src/player/take-hit.ts +173 -0
- package/src/player/timed.ts +482 -0
- package/src/player/types.ts +415 -0
- package/src/rational.ts +388 -0
- package/src/rng.ts +476 -0
- package/src/save/buffer.ts +287 -0
- package/src/save/compress.ts +132 -0
- package/src/save/description.ts +70 -0
- package/src/save/integrity.ts +133 -0
- package/src/score/display.ts +125 -0
- package/src/score/score.ts +341 -0
- package/src/score/types.ts +104 -0
- package/src/session/boot.ts +338 -0
- package/src/session/game.ts +3712 -0
- package/src/session/save.ts +2074 -0
- package/src/sound/engine.ts +375 -0
- package/src/sound/index.ts +13 -0
- package/src/sound/sound-prefs-data.ts +173 -0
- package/src/sound/types.ts +68 -0
- package/src/store/bind.ts +145 -0
- package/src/store/price.ts +97 -0
- package/src/store/store-cmd.ts +73 -0
- package/src/store/store.ts +723 -0
- package/src/store/transact.ts +644 -0
- package/src/store/types.ts +110 -0
- package/src/version.ts +26 -0
- package/src/visuals/engine.ts +444 -0
- package/src/visuals/glyph-table.ts +191 -0
- package/src/visuals/grafmode-data.ts +90 -0
- package/src/visuals/grafmode.ts +123 -0
- package/src/visuals/index.ts +19 -0
- package/src/visuals/map-text.ts +152 -0
- package/src/visuals/pref-expr.ts +182 -0
- package/src/visuals/prefs.ts +981 -0
- package/src/visuals/tile-prefs.ts +183 -0
- package/src/world/chunk.ts +531 -0
- package/src/world/feature.ts +215 -0
- package/src/world/flow.ts +128 -0
- package/src/world/project.ts +687 -0
- package/src/world/projection.ts +228 -0
- package/src/world/scatter.ts +72 -0
- package/src/world/trap.ts +155 -0
- package/src/world/view.ts +513 -0
- package/src/z-queue.ts +300 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rpgm-tools/neo-angband-core - the headless game engine.
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 scaffold. The engine grows here by dependency order:
|
|
5
|
+
* rng -> dice/expressions -> flags -> world kernel -> entities ->
|
|
6
|
+
* effects -> game loop. See docs/PORT_PLAN.md at the repository root.
|
|
7
|
+
*
|
|
8
|
+
* Parity baseline: Angband 4.2.6 (see reference/ and parity/).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export * from "./rng.js";
|
|
12
|
+
export * from "./loc.js";
|
|
13
|
+
export * from "./events.js";
|
|
14
|
+
export * from "./cmd.js";
|
|
15
|
+
export * from "./msg.js";
|
|
16
|
+
export * from "./color.js";
|
|
17
|
+
export * from "./bitflag.js";
|
|
18
|
+
export * from "./guard.js";
|
|
19
|
+
export * from "./expression.js";
|
|
20
|
+
export * from "./dice.js";
|
|
21
|
+
export * from "./generated/index.js";
|
|
22
|
+
export * from "./constants.js";
|
|
23
|
+
|
|
24
|
+
export * from "./version.js";
|
|
25
|
+
export * from "./world/feature.js";
|
|
26
|
+
export * from "./world/chunk.js";
|
|
27
|
+
export * from "./world/view.js";
|
|
28
|
+
export * from "./world/scatter.js";
|
|
29
|
+
export * from "./world/flow.js";
|
|
30
|
+
export * from "./world/project.js";
|
|
31
|
+
export * from "./world/projection.js";
|
|
32
|
+
export * from "./world/trap.js";
|
|
33
|
+
export * from "./effects/effect.js";
|
|
34
|
+
export * from "./effects/effect-info.js";
|
|
35
|
+
export * from "./effects/effect-choice.js";
|
|
36
|
+
export * from "./effects/interpreter.js";
|
|
37
|
+
export * from "./effects/handlers.js";
|
|
38
|
+
export * from "./mon/types.js";
|
|
39
|
+
export * from "./mon/bind.js";
|
|
40
|
+
export * from "./mon/monster.js";
|
|
41
|
+
export * from "./mon/make.js";
|
|
42
|
+
export * from "./mon/summon.js";
|
|
43
|
+
export * from "./mon/predicate.js";
|
|
44
|
+
export * from "./mon/timed.js";
|
|
45
|
+
export * from "./mon/take-hit.js";
|
|
46
|
+
export * from "./mon/spell.js";
|
|
47
|
+
export * from "./mon/desc.js";
|
|
48
|
+
export * from "./mon/knowledge-groups.js";
|
|
49
|
+
export * from "./mon/project-mon.js";
|
|
50
|
+
export * from "./obj/types.js";
|
|
51
|
+
export * from "./obj/bind.js";
|
|
52
|
+
export * from "./obj/object.js";
|
|
53
|
+
export * from "./obj/chest.js";
|
|
54
|
+
export * from "./obj/make.js";
|
|
55
|
+
export * from "./obj/power.js";
|
|
56
|
+
export * from "./obj/value.js";
|
|
57
|
+
export * from "./obj/knowledge.js";
|
|
58
|
+
export * from "./obj/ignore.js";
|
|
59
|
+
export * from "./obj/known-object.js";
|
|
60
|
+
export * from "./obj/artifact-known.js";
|
|
61
|
+
export * from "./obj/artifact-fake.js";
|
|
62
|
+
export * from "./obj/desc.js";
|
|
63
|
+
export * from "./obj/object-info.js";
|
|
64
|
+
export * from "./obj/randname.js";
|
|
65
|
+
export * from "./obj/flavor.js";
|
|
66
|
+
export * from "./obj/randart.js";
|
|
67
|
+
export * from "./player/types.js";
|
|
68
|
+
export * from "./player/options.js";
|
|
69
|
+
export * from "./player/bind.js";
|
|
70
|
+
export * from "./player/player.js";
|
|
71
|
+
export * from "./player/calcs.js";
|
|
72
|
+
export * from "./player/timed.js";
|
|
73
|
+
export * from "./player/take-hit.js";
|
|
74
|
+
export * from "./player/spell.js";
|
|
75
|
+
export * from "./player/birth.js";
|
|
76
|
+
export * from "./player/history.js";
|
|
77
|
+
export * from "./player/abilities.js";
|
|
78
|
+
export * from "./player/shape-lore.js";
|
|
79
|
+
export * from "./save/buffer.js";
|
|
80
|
+
export * from "./save/compress.js";
|
|
81
|
+
export * from "./save/description.js";
|
|
82
|
+
export * from "./save/integrity.js";
|
|
83
|
+
export * from "./gen/util.js";
|
|
84
|
+
export * from "./gen/room.js";
|
|
85
|
+
export * from "./gen/cave.js";
|
|
86
|
+
export * from "./gen/generate.js";
|
|
87
|
+
/* gen-monster's pit machinery: resolvePits is the last piece of a GenDeps a
|
|
88
|
+
* caller outside core cannot otherwise build, so a mod that wants to run
|
|
89
|
+
* generateLevel itself (or test a levelGenerated hook against real levels) needs
|
|
90
|
+
* it. Everything else here is the same generation vocabulary gen/util already
|
|
91
|
+
* publishes. */
|
|
92
|
+
export * from "./gen/gen-monster.js";
|
|
93
|
+
export * from "./combat/index.js";
|
|
94
|
+
export * from "./store/types.js";
|
|
95
|
+
export * from "./store/bind.js";
|
|
96
|
+
export * from "./store/price.js";
|
|
97
|
+
export * from "./store/store.js";
|
|
98
|
+
export * from "./store/transact.js";
|
|
99
|
+
export * from "./store/store-cmd.js";
|
|
100
|
+
export * from "./session/boot.js";
|
|
101
|
+
export * from "./session/game.js";
|
|
102
|
+
export * from "./session/save.js";
|
|
103
|
+
/* The behaviour seam itself: ModHooks (the closed set of extension points) and
|
|
104
|
+
* composeModHooks (the host's fold over several mods' contributions). A mod
|
|
105
|
+
* cannot write a hook without the type, and a host cannot install one without
|
|
106
|
+
* the fold, so both are part of the published API - see mod/hooks.ts. */
|
|
107
|
+
export * from "./mod/hooks.js";
|
|
108
|
+
export * from "./mod/save-blocks.js";
|
|
109
|
+
export * from "./mod/ids.js";
|
|
110
|
+
export * from "./mod/registry-host.js";
|
|
111
|
+
export * from "./mod/vocabulary.js";
|
|
112
|
+
export * from "./agent/index.js";
|
|
113
|
+
export * from "./game/energy.js";
|
|
114
|
+
export * from "./game/context.js";
|
|
115
|
+
export * from "./game/monster-turn.js";
|
|
116
|
+
export * from "./game/scheduler.js";
|
|
117
|
+
export * from "./game/player-turn.js";
|
|
118
|
+
export * from "./game/project-monster.js";
|
|
119
|
+
export * from "./game/project-player.js";
|
|
120
|
+
export * from "./game/project-cast.js";
|
|
121
|
+
export * from "./game/effect-env.js";
|
|
122
|
+
export * from "./game/effect-game-env.js";
|
|
123
|
+
export * from "./game/effect-attack.js";
|
|
124
|
+
export * from "./game/effect-general.js";
|
|
125
|
+
export * from "./game/effect-monster.js";
|
|
126
|
+
export * from "./game/effect-teleport.js";
|
|
127
|
+
export * from "./game/effect-terrain.js";
|
|
128
|
+
export * from "./game/effect-item.js";
|
|
129
|
+
export * from "./game/effect-melee.js";
|
|
130
|
+
export * from "./game/effect-summon.js";
|
|
131
|
+
export * from "./game/effect-detect.js";
|
|
132
|
+
export * from "./game/known.js";
|
|
133
|
+
export * from "./game/inscription-confirm.js";
|
|
134
|
+
export * from "./game/target.js";
|
|
135
|
+
export * from "./game/target-loop.js";
|
|
136
|
+
export * from "./game/mon-cmd.js";
|
|
137
|
+
export * from "./game/describe.js";
|
|
138
|
+
export * from "./game/history.js";
|
|
139
|
+
export * from "./game/object-inspect.js";
|
|
140
|
+
export * from "./game/mon-message.js";
|
|
141
|
+
export * from "./game/mon-list.js";
|
|
142
|
+
export * from "./game/obj-list.js";
|
|
143
|
+
export * from "./game/display.js";
|
|
144
|
+
export * from "./game/char-sheet.js";
|
|
145
|
+
export * from "./game/lore-color.js";
|
|
146
|
+
export * from "./game/ui-entry.js";
|
|
147
|
+
export * from "./game/equip-cmp.js";
|
|
148
|
+
export * from "./game/mon-shape.js";
|
|
149
|
+
export * from "./mon/lore.js";
|
|
150
|
+
export * from "./mon/lore-describe.js";
|
|
151
|
+
/* The live-cave placement family shares upstream names with its
|
|
152
|
+
* generation-time twin in gen/util; the live variants export Live-suffixed. */
|
|
153
|
+
export {
|
|
154
|
+
squareIsOpenLive,
|
|
155
|
+
squareIsEmptyLive,
|
|
156
|
+
squareAllowsSummon,
|
|
157
|
+
placeNewMonsterOne,
|
|
158
|
+
placeNewMonster as placeNewMonsterLive,
|
|
159
|
+
pickAndPlaceMonster as pickAndPlaceMonsterLive,
|
|
160
|
+
summonSpecific,
|
|
161
|
+
selectShape,
|
|
162
|
+
wipeMonsterCounts,
|
|
163
|
+
countMonsterRaces,
|
|
164
|
+
} from "./game/mon-place.js";
|
|
165
|
+
export type {
|
|
166
|
+
MonPlaceDeps as LiveMonPlaceDeps,
|
|
167
|
+
SummonDeps,
|
|
168
|
+
} from "./game/mon-place.js";
|
|
169
|
+
export * from "./game/thrust.js";
|
|
170
|
+
export * from "./game/mon-cast.js";
|
|
171
|
+
export * from "./game/mon-ranged.js";
|
|
172
|
+
export * from "./game/mon-group.js";
|
|
173
|
+
export * from "./game/floor.js";
|
|
174
|
+
export * from "./game/dump-level.js";
|
|
175
|
+
export * from "./game/spoil.js";
|
|
176
|
+
export * from "./game/pickup.js";
|
|
177
|
+
export * from "./game/obj-cmd.js";
|
|
178
|
+
export * from "./game/cave-cmd.js";
|
|
179
|
+
export * from "./game/chest.js";
|
|
180
|
+
export * from "./game/trap.js";
|
|
181
|
+
export * from "./game/spell-cmd.js";
|
|
182
|
+
export * from "./game/ranged-cmd.js";
|
|
183
|
+
export * from "./game/loop.js";
|
|
184
|
+
export * from "./game/ignore-cmd.js";
|
|
185
|
+
/* --- Wizard / debug commands (task #29: cmd-wizard.c / wiz-debug.c) ---
|
|
186
|
+
* The debug/cheat command surface, gated behind the WizardDeps.wizard flag
|
|
187
|
+
* (upstream ALLOW_DEBUG + NOSCORE_WIZARD); unreachable in faithful play. */
|
|
188
|
+
export * from "./game/wizard.js";
|
|
189
|
+
export * from "./sound/index.js";
|
|
190
|
+
|
|
191
|
+
/* --- High scores (task #28: score.c / score-util.c / ui-score.c) --- */
|
|
192
|
+
export * from "./score/types.js";
|
|
193
|
+
export * from "./score/score.js";
|
|
194
|
+
export * from "./score/display.js";
|
|
195
|
+
|
|
196
|
+
/* --- Graphics/tiles + visuals (task #27: grafmode.c / ui-visuals.c) --- */
|
|
197
|
+
export * from "./visuals/index.js";
|
|
198
|
+
|
|
199
|
+
/* --- The host layer (z-file.c + init.c's ANGBAND_DIR_*) ---
|
|
200
|
+
* The injectable seam that lets a front end declare what its platform can do
|
|
201
|
+
* instead of letting the platform's limits quietly redefine the game. Adapters
|
|
202
|
+
* live with their front ends (web, cli, desktop); MemoryHost is the reference
|
|
203
|
+
* implementation and what the tests drive. */
|
|
204
|
+
export * from "./host/io.js";
|
|
205
|
+
export * from "./host/memory.js";
|
|
206
|
+
export * from "./host/raw.js";
|
|
207
|
+
export * from "./host/bridge.js";
|
|
208
|
+
export * from "./host/args.js";
|
|
209
|
+
|
|
210
|
+
// Some small derived constants and geometry helpers are defined
|
|
211
|
+
// independently by more than one domain (identical values/behavior).
|
|
212
|
+
// Re-export a single canonical copy so the barrel is unambiguous rather
|
|
213
|
+
// than dropping the name from two colliding `export *`s.
|
|
214
|
+
// - OF_SIZE/ELEM_MAX: flag-array sizes derived from the generated lists,
|
|
215
|
+
// defined by both obj/types and player/types.
|
|
216
|
+
// - nextGrid: next_grid(grid, dir), defined by both world/view and
|
|
217
|
+
// gen/util as grid + DDGRID[dir].
|
|
218
|
+
export { OF_SIZE, ELEM_MAX } from "./obj/types.js";
|
|
219
|
+
export { nextGrid } from "./world/view.js";
|
|
220
|
+
// objDescNameFormat: obj/bind has a reduced &-stripping helper (sval name
|
|
221
|
+
// matching); obj/desc has the full obj_desc_name_format (modstr + pluralise).
|
|
222
|
+
// Expose the full port as canonical; bind's stays internal to its module.
|
|
223
|
+
export { objDescNameFormat } from "./obj/desc.js";
|
|
224
|
+
// CriticalLevel is defined by both constants (parsed data) and combat/hit
|
|
225
|
+
// (with msg typed as the specific HitType). Crit levels are a combat
|
|
226
|
+
// concept; expose combat/hit's as canonical.
|
|
227
|
+
export type { CriticalLevel } from "./combat/hit.js";
|
|
228
|
+
// Combat message types for shells rendering py_attack text (the combat code
|
|
229
|
+
// returns HitType keys only; the text is a UI concern - see combat/melee.ts).
|
|
230
|
+
export type { MeleeAttack, MeleeBlow } from "./combat/melee.js";
|
|
231
|
+
export type { HitType } from "./combat/hit.js";
|
|
232
|
+
// - EXTRACT_ENERGY/turnEnergy: the extract_energy[] table and turn_energy()
|
|
233
|
+
// live in mon/monster; game/energy re-exports them for convenience, so
|
|
234
|
+
// pin mon/monster as the single canonical source.
|
|
235
|
+
// - squareIsEmpty: two genuinely different predicates share the name -
|
|
236
|
+
// gen/util's is a generation-time check (takes a Gen), game/context's is
|
|
237
|
+
// a live occupancy check (takes a GameState). Keep gen/util's as the
|
|
238
|
+
// barrel-canonical (it predates game/); game/context's is reached via its
|
|
239
|
+
// module and will get an aliased export if the game API needs it publicly.
|
|
240
|
+
export { EXTRACT_ENERGY, turnEnergy } from "./mon/monster.js";
|
|
241
|
+
export { squareIsEmpty } from "./gen/util.js";
|
|
242
|
+
// - squareCanPutItem: like squareIsEmpty, a generation-time predicate
|
|
243
|
+
// (gen/util, takes a Gen) and a live-cave one (game/floor, takes a
|
|
244
|
+
// GameState) share the name; gen/util's stays barrel-canonical and the
|
|
245
|
+
// live one is reached via its module.
|
|
246
|
+
export { squareCanPutItem } from "./gen/util.js";
|
|
247
|
+
// - placeTrap: gen/util's generation-time marker vs game/trap's live
|
|
248
|
+
// place_trap; same convention, gen/util's stays barrel-canonical.
|
|
249
|
+
export { placeTrap } from "./gen/util.js";
|
|
250
|
+
export * from "./game/gear.js";
|
package/src/loc.ts
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grid locations and keypad-direction tables, ported from
|
|
3
|
+
* reference/src/z-type.h, z-type.c, and the direction tables plus
|
|
4
|
+
* distance() from reference/src/cave.c and cave-view.c (Angband 4.2.6).
|
|
5
|
+
*
|
|
6
|
+
* Locations are plain immutable value objects; y grows downward (screen
|
|
7
|
+
* order) exactly as upstream. Directions use keypad numbering: 5 is
|
|
8
|
+
* "no direction", 2/4/6/8 orthogonal, 1/3/7/9 diagonal.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { Rng } from "./rng.js";
|
|
12
|
+
|
|
13
|
+
export interface Loc {
|
|
14
|
+
readonly x: number;
|
|
15
|
+
readonly y: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Construct a location. */
|
|
19
|
+
export function loc(x: number, y: number): Loc {
|
|
20
|
+
return { x, y };
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** loc_eq: value equality. */
|
|
24
|
+
export function locEq(a: Loc, b: Loc): boolean {
|
|
25
|
+
return a.x === b.x && a.y === b.y;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** loc_is_zero. */
|
|
29
|
+
export function locIsZero(a: Loc): boolean {
|
|
30
|
+
return a.x === 0 && a.y === 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** loc_sum. */
|
|
34
|
+
export function locSum(a: Loc, b: Loc): Loc {
|
|
35
|
+
return loc(a.x + b.x, a.y + b.y);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** loc_diff: a - b. */
|
|
39
|
+
export function locDiff(a: Loc, b: Loc): Loc {
|
|
40
|
+
return loc(a.x - b.x, a.y - b.y);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** loc_offset. */
|
|
44
|
+
export function locOffset(a: Loc, dx: number, dy: number): Loc {
|
|
45
|
+
return loc(a.x + dx, a.y + dy);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** rand_loc: a location spread uniformly around `grid`. */
|
|
49
|
+
export function randLoc(
|
|
50
|
+
rng: Rng,
|
|
51
|
+
grid: Loc,
|
|
52
|
+
xSpread: number,
|
|
53
|
+
ySpread: number,
|
|
54
|
+
): Loc {
|
|
55
|
+
return loc(rng.randSpread(grid.x, xSpread), rng.randSpread(grid.y, ySpread));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* distance: the upstream integer approximation
|
|
60
|
+
* (longer axis + half the shorter axis).
|
|
61
|
+
*/
|
|
62
|
+
export function distance(a: Loc, b: Loc): number {
|
|
63
|
+
const ay = Math.abs(b.y - a.y);
|
|
64
|
+
const ax = Math.abs(b.x - a.x);
|
|
65
|
+
return ay > ax ? ay + (ax >> 1) : ax + (ay >> 1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* ddd: the cycle of directions, southward then clockwise, ending with 5.
|
|
70
|
+
*/
|
|
71
|
+
export const DDD: readonly number[] = [2, 8, 6, 4, 3, 1, 9, 7, 5];
|
|
72
|
+
|
|
73
|
+
/** ddx: keypad direction -> x offset (index 0 unused). */
|
|
74
|
+
export const DDX: readonly number[] = [0, -1, 0, 1, -1, 0, 1, -1, 0, 1];
|
|
75
|
+
|
|
76
|
+
/** ddy: keypad direction -> y offset (index 0 unused). */
|
|
77
|
+
export const DDY: readonly number[] = [0, 1, 1, 1, 0, 0, 0, -1, -1, -1];
|
|
78
|
+
|
|
79
|
+
/** ddgrid: keypad direction -> Loc offset (index 0 unused). */
|
|
80
|
+
export const DDGRID: readonly Loc[] = [
|
|
81
|
+
{ x: 0, y: 0 },
|
|
82
|
+
{ x: -1, y: 1 },
|
|
83
|
+
{ x: 0, y: 1 },
|
|
84
|
+
{ x: 1, y: 1 },
|
|
85
|
+
{ x: -1, y: 0 },
|
|
86
|
+
{ x: 0, y: 0 },
|
|
87
|
+
{ x: 1, y: 0 },
|
|
88
|
+
{ x: -1, y: -1 },
|
|
89
|
+
{ x: 0, y: -1 },
|
|
90
|
+
{ x: 1, y: -1 },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
/** ddx_ddd: x offsets in ddd order. */
|
|
94
|
+
export const DDX_DDD: readonly number[] = [0, 0, 1, -1, 1, -1, 1, -1, 0];
|
|
95
|
+
|
|
96
|
+
/** ddy_ddd: y offsets in ddd order. */
|
|
97
|
+
export const DDY_DDD: readonly number[] = [1, -1, 0, 0, 1, 1, -1, -1, 0];
|
|
98
|
+
|
|
99
|
+
/** ddgrid_ddd: Loc offsets in ddd order. */
|
|
100
|
+
export const DDGRID_DDD: readonly Loc[] = [
|
|
101
|
+
{ x: 0, y: 1 },
|
|
102
|
+
{ x: 0, y: -1 },
|
|
103
|
+
{ x: 1, y: 0 },
|
|
104
|
+
{ x: -1, y: 0 },
|
|
105
|
+
{ x: 1, y: 1 },
|
|
106
|
+
{ x: -1, y: 1 },
|
|
107
|
+
{ x: 1, y: -1 },
|
|
108
|
+
{ x: -1, y: -1 },
|
|
109
|
+
{ x: 0, y: 0 },
|
|
110
|
+
];
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* clockwise_ddd: can multiply the index by 45 degrees, e.g. index 6 is
|
|
114
|
+
* 270 degrees (9 o'clock).
|
|
115
|
+
*/
|
|
116
|
+
export const CLOCKWISE_DDD: readonly number[] = [8, 9, 6, 3, 2, 1, 4, 7, 5];
|
|
117
|
+
|
|
118
|
+
/** clockwise_grid: Loc offsets in clockwise order starting north. */
|
|
119
|
+
export const CLOCKWISE_GRID: readonly Loc[] = [
|
|
120
|
+
{ x: 0, y: -1 },
|
|
121
|
+
{ x: 1, y: -1 },
|
|
122
|
+
{ x: 1, y: 0 },
|
|
123
|
+
{ x: 1, y: 1 },
|
|
124
|
+
{ x: 0, y: 1 },
|
|
125
|
+
{ x: -1, y: 1 },
|
|
126
|
+
{ x: -1, y: 0 },
|
|
127
|
+
{ x: -1, y: -1 },
|
|
128
|
+
{ x: 0, y: 0 },
|
|
129
|
+
];
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* side_dirs: alternative sideways/backup directions for each keypad
|
|
133
|
+
* direction, in order of decreasing desirability. Rows 0-9 bias right,
|
|
134
|
+
* rows 10-19 bias left.
|
|
135
|
+
*/
|
|
136
|
+
export const SIDE_DIRS: readonly (readonly number[])[] = [
|
|
137
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
138
|
+
[1, 4, 2, 7, 3, 8, 6, 9],
|
|
139
|
+
[2, 1, 3, 4, 6, 7, 9, 8],
|
|
140
|
+
[3, 2, 6, 1, 9, 4, 8, 7],
|
|
141
|
+
[4, 7, 1, 8, 2, 9, 3, 6],
|
|
142
|
+
[5, 5, 5, 5, 5, 5, 5, 5],
|
|
143
|
+
[6, 3, 9, 2, 8, 1, 7, 4],
|
|
144
|
+
[7, 8, 4, 9, 1, 6, 2, 3],
|
|
145
|
+
[8, 9, 7, 6, 4, 3, 1, 2],
|
|
146
|
+
[9, 6, 8, 3, 7, 2, 4, 1],
|
|
147
|
+
[0, 0, 0, 0, 0, 0, 0, 0],
|
|
148
|
+
[1, 2, 4, 3, 7, 6, 8, 9],
|
|
149
|
+
[2, 3, 1, 6, 4, 9, 7, 8],
|
|
150
|
+
[3, 6, 2, 9, 1, 8, 4, 7],
|
|
151
|
+
[4, 1, 7, 2, 8, 3, 9, 6],
|
|
152
|
+
[5, 5, 5, 5, 5, 5, 5, 5],
|
|
153
|
+
[6, 9, 3, 8, 2, 7, 1, 4],
|
|
154
|
+
[7, 4, 8, 1, 9, 2, 6, 3],
|
|
155
|
+
[8, 7, 9, 4, 6, 1, 3, 2],
|
|
156
|
+
[9, 8, 6, 7, 3, 4, 2, 1],
|
|
157
|
+
];
|
package/src/mod/hooks.ts
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The behaviour seam: the closed set of points where a mod may change what the
|
|
3
|
+
* ENGINE does, as opposed to what content it runs on.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS
|
|
6
|
+
*
|
|
7
|
+
* Content mods are already fully expressible - a pack contributes records and
|
|
8
|
+
* composeContentPacks merges them, and core never learns a mod was involved.
|
|
9
|
+
* Behaviour is different. A fix like "don't log a duplicate unique kill" is not a
|
|
10
|
+
* record; it is a decision taken inside a function, and no amount of data can
|
|
11
|
+
* reach inside that function from outside. So the first cut of the bundled
|
|
12
|
+
* bug-fixes / QoL mods did the only thing that was available: the FIX LIVED IN
|
|
13
|
+
* CORE behind `if (modRuleEnabled(state, "bugfix.x"))`.
|
|
14
|
+
*
|
|
15
|
+
* That was wrong, and neostryder named exactly why (2026-07-29): "the whole point of
|
|
16
|
+
* making them mods was to exclude them from the core game." A flag-gated fix is
|
|
17
|
+
* not excluded from core. It ships in core, it is tested in core, and core
|
|
18
|
+
* carries the string "bugfix.uniqueKillHistory" - so core knows the mod's name.
|
|
19
|
+
* Deleting the mod folder would not delete one line of it.
|
|
20
|
+
*
|
|
21
|
+
* WHAT THIS CHANGES, AND WHAT IT HONESTLY DOES NOT
|
|
22
|
+
*
|
|
23
|
+
* After this, core contains no mod's fix and no mod's name: no `bugfix.*` or
|
|
24
|
+
* `qol.*` literal, no staircase repair, no message rewriter. Each fix body lives
|
|
25
|
+
* in its mod's own folder and arrives as that mod's code.
|
|
26
|
+
*
|
|
27
|
+
* What core still contains - and cannot stop containing - is the SEAM ITSELF:
|
|
28
|
+
* one named, documented extension point per behaviour a mod may override. That
|
|
29
|
+
* is not a residue of the bundled mods; it is the price of behaviour modding at
|
|
30
|
+
* all, and it is the same bargain SKSE, Forge and every other real modding
|
|
31
|
+
* system strikes. The difference from a flag read is the difference that matters:
|
|
32
|
+
* a seam is generic and available to ANY mod, and it holds no opinion about what
|
|
33
|
+
* should plug into it, whereas `if (modRuleEnabled(state, "bugfix.stairsReachable"))`
|
|
34
|
+
* is core implementing one specific mod.
|
|
35
|
+
*
|
|
36
|
+
* SHAPE
|
|
37
|
+
*
|
|
38
|
+
* A plain interface of optional functions rather than a string-keyed registry,
|
|
39
|
+
* for three reasons:
|
|
40
|
+
*
|
|
41
|
+
* - It is typed end to end. A registry keyed by strings pushes every payload
|
|
42
|
+
* through `unknown` and moves the errors to runtime.
|
|
43
|
+
* - "A disabled mod's patches DO NOT EXIST" becomes literally true, not merely
|
|
44
|
+
* false-y: with no mod loaded the field is ABSENT, the optional call is not
|
|
45
|
+
* made, and the faithful path is the only path that was ever compiled into
|
|
46
|
+
* the branch. No flag map is consulted because there is no flag map.
|
|
47
|
+
* - It costs nothing. `state.modHooks?.historyAdd?.(...)` on an absent object is
|
|
48
|
+
* one undefined check, not a map lookup per call.
|
|
49
|
+
*
|
|
50
|
+
* COMPOSITION IS THE HOST'S JOB
|
|
51
|
+
*
|
|
52
|
+
* Two enabled mods may both want the same hook. Core deliberately holds ONE
|
|
53
|
+
* ModHooks and knows nothing about mod identity, ordering or enablement - the
|
|
54
|
+
* host (web/cli) collects each enabled mod's contributions in load order and
|
|
55
|
+
* folds them into a single object (see composeModHooks). This is the same
|
|
56
|
+
* layering as content: core consumes a composed result and never the pack list.
|
|
57
|
+
*
|
|
58
|
+
* DETERMINISM
|
|
59
|
+
*
|
|
60
|
+
* Two of these run inside the generation and object pipelines, where an extra
|
|
61
|
+
* RNG draw does not merely change a value, it desynchronises every draw after
|
|
62
|
+
* it - so a seed would stop meaning the same level. Those hooks are documented
|
|
63
|
+
* RNG-FREE and are given no rng to draw from. That is a contract a mod can still
|
|
64
|
+
* break by reaching for a global; the test suite pins it by running generation
|
|
65
|
+
* with a hook installed and asserting the level is bit-identical.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
import type { GameState } from "../game/context.js";
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A mod's behaviour contributions. Every member is optional; an absent member
|
|
72
|
+
* means "this mod does not touch that point" and core takes its faithful path.
|
|
73
|
+
*
|
|
74
|
+
* Each entry documents the ONE core call site it serves, because a hook whose
|
|
75
|
+
* call site is not written down is a hook nobody can verify is still wired -
|
|
76
|
+
* exactly the failure the call-site census exists to catch.
|
|
77
|
+
*/
|
|
78
|
+
export interface ModHooks {
|
|
79
|
+
/**
|
|
80
|
+
* A walk into a grid the player could tunnel through (cave-cmd.ts,
|
|
81
|
+
* movementAutoDig's call site).
|
|
82
|
+
*
|
|
83
|
+
* Return the energy the move should cost, or null to decline - and declining
|
|
84
|
+
* MUST be free of observable effect, because faithful core's behaviour here is
|
|
85
|
+
* to bump into the wall without drawing any RNG. A hook that rolls a dig check
|
|
86
|
+
* and then returns null has already moved the RNG stream.
|
|
87
|
+
*
|
|
88
|
+
* `deps` is the live CaveCmdDeps the session built, passed through because the
|
|
89
|
+
* work a mod would want to do here (tunnelAux - one real dig attempt with the
|
|
90
|
+
* upstream roll and payouts) needs dependencies only the session can construct.
|
|
91
|
+
* Typed as unknown so this seam does not drag the cave-command types into every
|
|
92
|
+
* consumer of ModHooks; a mod casts it back to CaveCmdDeps, which core exports.
|
|
93
|
+
*
|
|
94
|
+
* Serves: the QoL mod's "auto-dig on walk".
|
|
95
|
+
*/
|
|
96
|
+
walkBlockedByDiggable?: (
|
|
97
|
+
state: GameState,
|
|
98
|
+
grid: { y: number; x: number },
|
|
99
|
+
deps: unknown,
|
|
100
|
+
) => number | null;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Two floor-list entries that compared exactly equal, including on distance
|
|
104
|
+
* (obj-list.ts, the comparator's final tiebreak).
|
|
105
|
+
*
|
|
106
|
+
* Return a negative/positive number to order them, or 0 to leave them equal
|
|
107
|
+
* (which is what faithful core does - it keeps collect order via a stable
|
|
108
|
+
* sort). Must be a consistent total order or the sort is meaningless.
|
|
109
|
+
*
|
|
110
|
+
* Serves: the bug-fixes mod's strict object-list ordering (#4664).
|
|
111
|
+
*/
|
|
112
|
+
objectListTiebreak?: (
|
|
113
|
+
a: { readonly dy: number; readonly dx: number },
|
|
114
|
+
b: { readonly dy: number; readonly dx: number },
|
|
115
|
+
) => number;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* A finished, otherwise-accepted level, before cave_generate returns it
|
|
119
|
+
* (generate.ts, the accept branch).
|
|
120
|
+
*
|
|
121
|
+
* Return false to REJECT the level, which makes cave_generate re-roll exactly
|
|
122
|
+
* as it does for a monster-maximum overflow. May mutate the level to repair it
|
|
123
|
+
* and then return true.
|
|
124
|
+
*
|
|
125
|
+
* RNG-FREE: no rng is passed and none may be reached. A draw here shifts every
|
|
126
|
+
* subsequent draw and a seed stops reproducing its dungeon.
|
|
127
|
+
*
|
|
128
|
+
* Serves: the bug-fixes mod's reachable-staircase repair.
|
|
129
|
+
*/
|
|
130
|
+
levelGenerated?: (gen: unknown, quest: boolean) => boolean;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* An object about to be committed as an artifact, when it ALREADY carries one
|
|
134
|
+
* (obj/make.ts, the `obj.artifact` branch).
|
|
135
|
+
*
|
|
136
|
+
* Return false to refuse the commit; the caller then clears the artifact and
|
|
137
|
+
* reports failure. Faithful core commits it unconditionally.
|
|
138
|
+
*
|
|
139
|
+
* RNG-FREE, for the same reason as levelGenerated: this runs inside object
|
|
140
|
+
* creation, on the main stream.
|
|
141
|
+
*
|
|
142
|
+
* Serves: the bug-fixes mod's duplicate-artifact guard (#4510).
|
|
143
|
+
*/
|
|
144
|
+
artifactCommit?: (aidx: number, alreadyCreated: boolean) => boolean;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* A character-history entry about to be written (session/game.ts and any
|
|
148
|
+
* other historyAdd call site that passes its context).
|
|
149
|
+
*
|
|
150
|
+
* Return false to suppress the entry. Faithful core writes every entry it
|
|
151
|
+
* reaches, duplicates included.
|
|
152
|
+
*
|
|
153
|
+
* Serves: the bug-fixes mod's no-duplicate-unique-kill fix (#4245).
|
|
154
|
+
*/
|
|
155
|
+
historyAdd?: (entry: { readonly what: string; readonly type: number; readonly duplicate: boolean }) => boolean;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Whether the noise and scent heatmaps belong in the save (session/save.ts,
|
|
159
|
+
* snapshotSquares' argument).
|
|
160
|
+
*
|
|
161
|
+
* Return true to persist them. Faithful core omits them, which is the upstream
|
|
162
|
+
* behaviour and the upstream bug.
|
|
163
|
+
*
|
|
164
|
+
* Serves: the bug-fixes mod's noise/scent persistence (#4605).
|
|
165
|
+
*/
|
|
166
|
+
saveNoiseScent?: () => boolean;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Player-visible message text, on its way to the message line (the host's
|
|
170
|
+
* message sink).
|
|
171
|
+
*
|
|
172
|
+
* Return the text to show. Faithful core shows what it was given, warts and
|
|
173
|
+
* all. A hook here can only RESTATE a message - it must never change what a
|
|
174
|
+
* message means, or the port would be showing text upstream never wrote and no
|
|
175
|
+
* census could see it.
|
|
176
|
+
*
|
|
177
|
+
* Serves: the bug-fixes mod's cosmetic string corrections.
|
|
178
|
+
*/
|
|
179
|
+
messageText?: (raw: string) => string;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Fold several mods' contributions into the single ModHooks core holds.
|
|
184
|
+
*
|
|
185
|
+
* Order is LOAD order, and what "later wins" means differs per hook because the
|
|
186
|
+
* hooks differ in kind - which is precisely why this is one written-down function
|
|
187
|
+
* and not a generic merge:
|
|
188
|
+
*
|
|
189
|
+
* - VETO hooks (levelGenerated, artifactCommit, historyAdd) are conjunctive:
|
|
190
|
+
* every contributor must agree, and the first refusal decides. This is the
|
|
191
|
+
* only safe fold - a mod that vetoes a duplicate artifact must not be
|
|
192
|
+
* overruled by a later mod that merely has no opinion.
|
|
193
|
+
* - TRANSFORM hooks (messageText) compose in order, each seeing the previous
|
|
194
|
+
* one's output.
|
|
195
|
+
* - FIRST-HANDLER hooks (walkBlockedByDiggable) stop at the first non-null, so
|
|
196
|
+
* an earlier mod's handling wins and a later one cannot double-spend energy.
|
|
197
|
+
* - ANY hooks (saveNoiseScent) are disjunctive: one mod asking for the data is
|
|
198
|
+
* enough, because the data is additive and a second mod cannot object.
|
|
199
|
+
* - ORDERING hooks (objectListTiebreak) stop at the first non-zero answer, the
|
|
200
|
+
* same way a lexicographic comparator chains.
|
|
201
|
+
*
|
|
202
|
+
* Returns undefined when nothing contributed, so the caller can leave the field
|
|
203
|
+
* absent rather than storing an empty object - keeping "no mod loaded" and "a
|
|
204
|
+
* mod loaded that touches nothing" indistinguishable from core's side.
|
|
205
|
+
*/
|
|
206
|
+
export function composeModHooks(
|
|
207
|
+
contributions: readonly ModHooks[],
|
|
208
|
+
): ModHooks | undefined {
|
|
209
|
+
const list = contributions.filter((c) => Object.keys(c).length > 0);
|
|
210
|
+
if (list.length === 0) return undefined;
|
|
211
|
+
|
|
212
|
+
const out: ModHooks = {};
|
|
213
|
+
|
|
214
|
+
const walk = list.map((c) => c.walkBlockedByDiggable).filter(isFn);
|
|
215
|
+
if (walk.length > 0) {
|
|
216
|
+
out.walkBlockedByDiggable = (state, grid, deps): number | null => {
|
|
217
|
+
for (const fn of walk) {
|
|
218
|
+
const energy = fn(state, grid, deps);
|
|
219
|
+
if (energy !== null) return energy;
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const tiebreak = list.map((c) => c.objectListTiebreak).filter(isFn);
|
|
226
|
+
if (tiebreak.length > 0) {
|
|
227
|
+
out.objectListTiebreak = (a, b): number => {
|
|
228
|
+
for (const fn of tiebreak) {
|
|
229
|
+
const r = fn(a, b);
|
|
230
|
+
if (r !== 0) return r;
|
|
231
|
+
}
|
|
232
|
+
return 0;
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const level = list.map((c) => c.levelGenerated).filter(isFn);
|
|
237
|
+
if (level.length > 0) {
|
|
238
|
+
out.levelGenerated = (gen, quest): boolean => {
|
|
239
|
+
/* Every contributor runs even after one has repaired the level, because a
|
|
240
|
+
* second mod's invariant is not satisfied by the first mod's repair. The
|
|
241
|
+
* first REFUSAL short-circuits, since the level is being thrown away. */
|
|
242
|
+
for (const fn of level) if (!fn(gen, quest)) return false;
|
|
243
|
+
return true;
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const artifact = list.map((c) => c.artifactCommit).filter(isFn);
|
|
248
|
+
if (artifact.length > 0) {
|
|
249
|
+
out.artifactCommit = (aidx, alreadyCreated): boolean => {
|
|
250
|
+
for (const fn of artifact) if (!fn(aidx, alreadyCreated)) return false;
|
|
251
|
+
return true;
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const history = list.map((c) => c.historyAdd).filter(isFn);
|
|
256
|
+
if (history.length > 0) {
|
|
257
|
+
out.historyAdd = (entry): boolean => {
|
|
258
|
+
for (const fn of history) if (!fn(entry)) return false;
|
|
259
|
+
return true;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const noise = list.map((c) => c.saveNoiseScent).filter(isFn);
|
|
264
|
+
if (noise.length > 0) {
|
|
265
|
+
out.saveNoiseScent = (): boolean => noise.some((fn) => fn());
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const text = list.map((c) => c.messageText).filter(isFn);
|
|
269
|
+
if (text.length > 0) {
|
|
270
|
+
out.messageText = (raw): string => text.reduce((s, fn) => fn(s), raw);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function isFn<T>(v: T | undefined): v is T {
|
|
277
|
+
return typeof v === "function";
|
|
278
|
+
}
|