@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildLoreColorState: assemble the LoreColorState (mon/lore-describe.ts) that
|
|
3
|
+
* spell_color / blow_color read, from the live GameState. Upstream's spell_color
|
|
4
|
+
* / blow_color (mon-lore.c L59-276) pull the resist / protection / save-skill /
|
|
5
|
+
* stat_ind values off the global player's known_state and scan p->upkeep->inven
|
|
6
|
+
* / the light slot; this reproduces that from the port's derived player_state
|
|
7
|
+
* (state.playerState, whose equipment contributions are already rune-gated per
|
|
8
|
+
* decision 25) and the gear store, so the recall viewer colours a monster's
|
|
9
|
+
* spells and blows by whether the player actually resists them.
|
|
10
|
+
*
|
|
11
|
+
* The bound timed-effect table is passed in (GameState does not carry it, same
|
|
12
|
+
* as effect-env.ts) so the EF_TIMED_INC branch of spell_color can run the real
|
|
13
|
+
* player_inc_check (player/timed.ts) against the derived state.
|
|
14
|
+
*/
|
|
15
|
+
import type { TimedEffect } from "../player/types.js";
|
|
16
|
+
import type { LoreColorState } from "../mon/lore-describe.js";
|
|
17
|
+
import type { GameState } from "./context.js";
|
|
18
|
+
/**
|
|
19
|
+
* Build the LoreColorState for the current player. `timedTable` is the bound
|
|
20
|
+
* player-timed effect table (player/bind.ts), used only for the EF_TIMED_INC
|
|
21
|
+
* spell_color branch; an empty table makes every timed effect appear able to
|
|
22
|
+
* land (the recolouring then behaves like a player with no protection).
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildLoreColorState(state: GameState, timedTable?: readonly TimedEffect[]): LoreColorState;
|
|
25
|
+
//# sourceMappingURL=lore-color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lore-color.d.ts","sourceRoot":"","sources":["../../src/game/lore-color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQ9C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,SAAS,WAAW,EAAO,GACtC,cAAc,CAkEhB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildLoreColorState: assemble the LoreColorState (mon/lore-describe.ts) that
|
|
3
|
+
* spell_color / blow_color read, from the live GameState. Upstream's spell_color
|
|
4
|
+
* / blow_color (mon-lore.c L59-276) pull the resist / protection / save-skill /
|
|
5
|
+
* stat_ind values off the global player's known_state and scan p->upkeep->inven
|
|
6
|
+
* / the light slot; this reproduces that from the port's derived player_state
|
|
7
|
+
* (state.playerState, whose equipment contributions are already rune-gated per
|
|
8
|
+
* decision 25) and the gear store, so the recall viewer colours a monster's
|
|
9
|
+
* spells and blows by whether the player actually resists them.
|
|
10
|
+
*
|
|
11
|
+
* The bound timed-effect table is passed in (GameState does not carry it, same
|
|
12
|
+
* as effect-env.ts) so the EF_TIMED_INC branch of spell_color can run the real
|
|
13
|
+
* player_inc_check (player/timed.ts) against the derived state.
|
|
14
|
+
*/
|
|
15
|
+
import { ELEM, OF, PF, STAT, TMD } from "../generated/index.js";
|
|
16
|
+
import { adj_dex_safe } from "../player/calcs.js";
|
|
17
|
+
import { playerIncCheck } from "../player/timed.js";
|
|
18
|
+
import { SKILL } from "../player/types.js";
|
|
19
|
+
import { tvalCanHaveCharges, tvalIsEdible } from "../obj/object.js";
|
|
20
|
+
import { gearGet } from "./gear.js";
|
|
21
|
+
/** Map a generated-enum name to its index, or -1 when absent. */
|
|
22
|
+
function enumIndex(table, name) {
|
|
23
|
+
const idx = table[name];
|
|
24
|
+
return idx === undefined ? -1 : idx;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build the LoreColorState for the current player. `timedTable` is the bound
|
|
28
|
+
* player-timed effect table (player/bind.ts), used only for the EF_TIMED_INC
|
|
29
|
+
* spell_color branch; an empty table makes every timed effect appear able to
|
|
30
|
+
* land (the recolouring then behaves like a player with no protection).
|
|
31
|
+
*/
|
|
32
|
+
export function buildLoreColorState(state, timedTable = []) {
|
|
33
|
+
const p = state.actor.player;
|
|
34
|
+
const ps = state.playerState;
|
|
35
|
+
const resLevel = (elem) => ps?.elInfo[elem]?.resLevel ?? 0;
|
|
36
|
+
const hasFlag = (of) => (ps ? ps.flags.has(of) : false);
|
|
37
|
+
/* player_inc_check queries over the derived state (player/timed.ts). */
|
|
38
|
+
const queries = {
|
|
39
|
+
objectFlag: (name) => {
|
|
40
|
+
const i = enumIndex(OF, name);
|
|
41
|
+
return i >= 0 && hasFlag(i);
|
|
42
|
+
},
|
|
43
|
+
resistLevel: (name) => resLevel(enumIndex(ELEM, name)),
|
|
44
|
+
playerFlag: (name) => {
|
|
45
|
+
const i = enumIndex(PF, name);
|
|
46
|
+
return i >= 0 && (ps ? ps.pflags.has(i) : false);
|
|
47
|
+
},
|
|
48
|
+
timedActive: (name) => {
|
|
49
|
+
const i = enumIndex(TMD, name);
|
|
50
|
+
return i >= 0 && (p.timed[i] ?? 0) > 0;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
const byName = new Map();
|
|
54
|
+
for (const e of timedTable)
|
|
55
|
+
byName.set(e.name, e);
|
|
56
|
+
const incCheck = (timedName) => {
|
|
57
|
+
const eff = byName.get(timedName);
|
|
58
|
+
/* No bound effect -> treat as landable (full danger), matching a bare
|
|
59
|
+
resistance-less player (effect-env.ts's absent-incQueries default). */
|
|
60
|
+
return eff ? playerIncCheck(eff, queries) : true;
|
|
61
|
+
};
|
|
62
|
+
/* p->lev + adj_dex_safe[stat_ind[STAT_DEX]] >= 100 (mon-lore.c L208). */
|
|
63
|
+
const dexInd = ps?.statInd[STAT.DEX] ?? 0;
|
|
64
|
+
const theftSafe = p.lev + (adj_dex_safe[dexInd] ?? 0) >= 100;
|
|
65
|
+
/* Pack scans (mon-lore.c L216-242): a chargeable item with charges, and any
|
|
66
|
+
edible item. Equipped objects are not in gear.pack, matching p->upkeep->inven. */
|
|
67
|
+
let hasChargeItem = false;
|
|
68
|
+
let hasEdible = false;
|
|
69
|
+
for (const handle of state.gear.pack) {
|
|
70
|
+
const o = gearGet(state.gear, handle);
|
|
71
|
+
if (!o)
|
|
72
|
+
continue;
|
|
73
|
+
if (tvalCanHaveCharges(o.tval) && o.pval)
|
|
74
|
+
hasChargeItem = true;
|
|
75
|
+
if (tvalIsEdible(o.tval))
|
|
76
|
+
hasEdible = true;
|
|
77
|
+
}
|
|
78
|
+
/* eat-light (mon-lore.c L243-250): the wielded light burns fuel. */
|
|
79
|
+
const lightSlot = p.body.slots.findIndex((s) => s.type === "LIGHT");
|
|
80
|
+
const lightObj = lightSlot >= 0 ? gearGet(state.gear, p.equipment[lightSlot] ?? 0) : null;
|
|
81
|
+
const lightBurning = !!(lightObj &&
|
|
82
|
+
lightObj.timeout &&
|
|
83
|
+
!lightObj.flags.has(OF.NO_FUEL));
|
|
84
|
+
return {
|
|
85
|
+
saveSkill: ps?.skills[SKILL.SAVE] ?? 0,
|
|
86
|
+
resLevel,
|
|
87
|
+
hasFlag,
|
|
88
|
+
incCheck,
|
|
89
|
+
theftSafe,
|
|
90
|
+
hasChargeItem,
|
|
91
|
+
hasEdible,
|
|
92
|
+
lightBurning,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=lore-color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lore-color.js","sourceRoot":"","sources":["../../src/game/lore-color.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* do_mon_spell, ported from reference/src/mon-spell.c (Angband 4.2.6): a
|
|
3
|
+
* monster casts a spell by RSF_ index. This is the convergence point of the
|
|
4
|
+
* whole projection -> effect stack - it looks up the bound spell, rolls the
|
|
5
|
+
* hit, and runs the spell's effect chain through the effect interpreter with a
|
|
6
|
+
* monster source and the live game environment, so every attack / status /
|
|
7
|
+
* teleport handler already registered fires against the real GameState.
|
|
8
|
+
*
|
|
9
|
+
* It lives in game/ (not mon/) because it drives effect_do, and effects/ sits
|
|
10
|
+
* above mon/ in the layering (effects/effect.ts imports mon/timed); do_mon_spell
|
|
11
|
+
* composes the interpreter, the effect environment and the projection cast
|
|
12
|
+
* context, all of which are game-layer concerns.
|
|
13
|
+
*
|
|
14
|
+
* The record -> Effect chain conversion goes through EffectBuilder: bindSpells
|
|
15
|
+
* (mon/bind.ts) stores each spell effect's expr directives separately from the
|
|
16
|
+
* parsed dice, so the chain must be rebuilt so the builder applies dice then
|
|
17
|
+
* expr (binding SPELL_POWER / MAX_SIGHT). The spell message, the disturb, and
|
|
18
|
+
* the fail-rune learning are injected hooks (UI / lore, #24). Summon and
|
|
19
|
+
* shapechange subtypes need their name resolvers injected (mon-summon.c /
|
|
20
|
+
* player shapes); absent, the chain cannot build and the cast fizzles (the
|
|
21
|
+
* summon effect itself is a stub until monster generation lands).
|
|
22
|
+
*/
|
|
23
|
+
import type { Effect, EffectBuilderInjections } from "../effects/effect.js";
|
|
24
|
+
import type { EffectRegistry } from "../effects/interpreter.js";
|
|
25
|
+
import type { SmartLearnEnv } from "../mon/spell.js";
|
|
26
|
+
import type { MonsterSpell } from "../mon/types.js";
|
|
27
|
+
import type { Monster } from "../mon/monster.js";
|
|
28
|
+
import type { Loc } from "../loc.js";
|
|
29
|
+
import type { EffectEnvDeps } from "./effect-env.js";
|
|
30
|
+
import type { TeleportEnv } from "./effect-teleport.js";
|
|
31
|
+
import type { CastContext } from "./project-cast.js";
|
|
32
|
+
import type { GameState } from "./context.js";
|
|
33
|
+
import type { PlayerIncCheckHooks } from "../player/timed.js";
|
|
34
|
+
import type { TimedEffect } from "../player/types.js";
|
|
35
|
+
/** Hooks for the UI / lore consequences of casting a monster spell. */
|
|
36
|
+
export interface MonSpellHooks {
|
|
37
|
+
/** disturb(player): the player's rest / run is interrupted. */
|
|
38
|
+
disturb?: () => void;
|
|
39
|
+
/** spell_message: describe the cast (seen, whether it hit). */
|
|
40
|
+
message?: (mon: Monster, spell: MonsterSpell, seen: boolean, hits: boolean) => void;
|
|
41
|
+
/** The message shown when the player saves against the spell. */
|
|
42
|
+
saveMessage?: (text: string) => void;
|
|
43
|
+
/** spell_check_for_fail_rune: learn a rune a save implies (lore, #24). */
|
|
44
|
+
failRune?: (spell: MonsterSpell, mon: Monster) => void;
|
|
45
|
+
/** A spell whose effect chain could not be built (deferred subtype). */
|
|
46
|
+
unresolved?: (spell: MonsterSpell, err: unknown) => void;
|
|
47
|
+
}
|
|
48
|
+
/** Everything do_mon_spell needs beyond the state and the spell index. */
|
|
49
|
+
export interface DoMonSpellDeps {
|
|
50
|
+
registry: EffectRegistry;
|
|
51
|
+
/** The projection cast context (bound projections, range, player actor). */
|
|
52
|
+
cast: CastContext;
|
|
53
|
+
/** The bound monster spells, keyed by RSF index (MonsterRegistry.spells). */
|
|
54
|
+
spells: ReadonlyMap<number, MonsterSpell>;
|
|
55
|
+
/** EffectEnvDeps for buildEffectContext (the bound timed table, hooks). */
|
|
56
|
+
envDeps: EffectEnvDeps;
|
|
57
|
+
/** player->state.skills[SKILL_SAVE], for the saving throw. */
|
|
58
|
+
saveSkill: number;
|
|
59
|
+
/** Extra subtype / base-value injections (summon, shape, mods). */
|
|
60
|
+
inject?: EffectBuilderInjections;
|
|
61
|
+
/** Teleport-family seams (trap predicates, level change; game/trap.ts). */
|
|
62
|
+
teleport?: TeleportEnv;
|
|
63
|
+
/** General-handler seams (trap access for webs; effect-general.ts). */
|
|
64
|
+
general?: import("./effect-general.js").GeneralEffectEnv;
|
|
65
|
+
/** Summoning seams (summon table + live placement; effect-summon.ts). */
|
|
66
|
+
summon?: import("./effect-summon.js").SummonEffectEnv;
|
|
67
|
+
/** MON_TMD_CHANGED shapechange hooks (game/mon-shape.ts). */
|
|
68
|
+
monShape?: import("../mon/timed.js").MonShapeHooks;
|
|
69
|
+
hooks?: MonSpellHooks;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Rebuild a spell's effect chain from its bound records so EffectBuilder binds
|
|
73
|
+
* the dice and then the expr directives (SPELL_POWER / MAX_SIGHT). Throws when
|
|
74
|
+
* a subtype cannot be resolved (an uninjected summon / shape name).
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildSpellEffectChain(spell: MonsterSpell, inject: EffectBuilderInjections): Effect | null;
|
|
77
|
+
/** The spell_check_for_fail_rune seams (mon-spell.c L291). */
|
|
78
|
+
export interface FailRuneEnv {
|
|
79
|
+
/** equip_learn_element(player, ELEM_NEXUS): a save vs teleport-level. */
|
|
80
|
+
learnNexus: () => void;
|
|
81
|
+
/**
|
|
82
|
+
* player_inc_check(player, subtype, false) for an EF_TIMED_INC subtype. The
|
|
83
|
+
* casting monster is the current monster (cave->mon_current), so this is a
|
|
84
|
+
* monster-source check: an object-flag foil teaches it via update_smart_learn.
|
|
85
|
+
*/
|
|
86
|
+
incCheck: (timedName: string, mon: Monster) => void;
|
|
87
|
+
}
|
|
88
|
+
/** Everything buildMonSpellHooks needs to wire the UI/lore consequences. */
|
|
89
|
+
export interface MonSpellHooksDeps {
|
|
90
|
+
/**
|
|
91
|
+
* projections[type].lash_desc for the {type}/{oftype} message tags, keyed by
|
|
92
|
+
* the projection name the caster's first blow's lash_type resolves to.
|
|
93
|
+
*/
|
|
94
|
+
lashDesc?: (projectionName: string) => string | null;
|
|
95
|
+
/** panel_contains for the "(offscreen)" naming tag; default on-screen. */
|
|
96
|
+
panelContains?: (grid: Loc) => boolean;
|
|
97
|
+
/** spell_check_for_fail_rune seams (equip_learn_element + player_inc_check). */
|
|
98
|
+
failRune?: FailRuneEnv;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* buildSmartLearnEnv: the update_smart_learn player-side seams (mon-util.c L788)
|
|
102
|
+
* over the live derived state - equip_learn_flag / equip_learn_element,
|
|
103
|
+
* player_of_has, pf_has and the element resist level - gated by OPT(player,
|
|
104
|
+
* birth_ai_learn). Shared by the fail-rune path (spell_check_for_fail_rune,
|
|
105
|
+
* below) and the monster-projection path (project_p, project-player.c L852). The
|
|
106
|
+
* engine (updateSmartLearn, mon/spell.ts) draws no RNG when birth_ai_learn is
|
|
107
|
+
* off, so an env with aiLearn false is a pure equip-learn.
|
|
108
|
+
*/
|
|
109
|
+
export declare function buildSmartLearnEnv(state: GameState): SmartLearnEnv;
|
|
110
|
+
/**
|
|
111
|
+
* buildMonsterIncHooks: the monster-source side of player_inc_check for a
|
|
112
|
+
* specific caster (player-timed.c L946-948). On a TMD_FAIL_FLAG_OBJECT foil the
|
|
113
|
+
* caster learns the flag via update_smart_learn(mon, p, of, 0, -1); the engine's
|
|
114
|
+
* own equip_learn_flag (mon-util.c L797) learns the rune, so the flag is learned
|
|
115
|
+
* once per foil (upstream's outer + inner equip_learn_flag pair is idempotent).
|
|
116
|
+
* Shared by the fail-rune (save) path here and by the effect-application (no
|
|
117
|
+
* save) path (see the WIRING note in this module's design comment / report).
|
|
118
|
+
* Gated internally by birth_ai_learn, so it draws no RNG when the option is off.
|
|
119
|
+
*/
|
|
120
|
+
export declare function buildMonsterIncHooks(state: GameState, mon: Monster): PlayerIncCheckHooks;
|
|
121
|
+
/**
|
|
122
|
+
* buildFailRuneEnv: the spell_check_for_fail_rune seams over the live state -
|
|
123
|
+
* equip_learn_element(player, ELEM_NEXUS) for a teleport-level save, and a
|
|
124
|
+
* real player_inc_check(player, subtype, false) (with its own equip-learn side
|
|
125
|
+
* effects) for each EF_TIMED_INC, resolved against the bound timed table and
|
|
126
|
+
* the derived player state. Mirrors the query construction the lore layer uses
|
|
127
|
+
* (game/lore-color.ts); absent derived state, the queries read as "nothing".
|
|
128
|
+
*
|
|
129
|
+
* Because spell_check_for_fail_rune runs mid-cast, cave->mon_current is the
|
|
130
|
+
* caster, so player_inc_check(lore=false) is a monster-source check: an
|
|
131
|
+
* object-flag foil fires update_smart_learn(mon, p, of, 0, -1) (player-timed.c
|
|
132
|
+
* L947) via the monster-source hook. That is gap 8.5's WRITE path on the save
|
|
133
|
+
* branch; with birth_ai_learn off the engine no-ops (no memory write, no RNG).
|
|
134
|
+
*/
|
|
135
|
+
export declare function buildFailRuneEnv(state: GameState, timedTable: readonly TimedEffect[]): FailRuneEnv;
|
|
136
|
+
/**
|
|
137
|
+
* buildMonSpellHooks: assemble the MonSpellHooks do_mon_spell fires - the
|
|
138
|
+
* disturb (mon-spell.c L368), the cast message (spell_message, L369), the
|
|
139
|
+
* saving-throw message and its fail-rune learning (L382-383). Installed via
|
|
140
|
+
* installMonsterCasting so a monster's cast actually announces itself and, on a
|
|
141
|
+
* save, teaches the runes upstream would.
|
|
142
|
+
*/
|
|
143
|
+
export declare function buildMonSpellHooks(state: GameState, deps?: MonSpellHooksDeps): MonSpellHooks;
|
|
144
|
+
/**
|
|
145
|
+
* do_mon_spell: process a monster spell (RSF_ index) cast by monster `midx`.
|
|
146
|
+
* Returns whether a real spell was processed (false only when the spell or the
|
|
147
|
+
* caster is missing).
|
|
148
|
+
*/
|
|
149
|
+
export declare function doMonSpell(state: GameState, midx: number, spellIndex: number, seen: boolean, deps: DoMonSpellDeps): boolean;
|
|
150
|
+
//# sourceMappingURL=mon-cast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mon-cast.d.ts","sourceRoot":"","sources":["../../src/game/mon-cast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CACR,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,KACV,IAAI,CAAC;IACV,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1D;AAED,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,4EAA4E;IAC5E,IAAI,EAAE,WAAW,CAAC;IAClB,6EAA6E;IAC7E,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1C,2EAA2E;IAC3E,OAAO,EAAE,aAAa,CAAC;IACvB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,qBAAqB,EAAE,gBAAgB,CAAC;IACzD,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,oBAAoB,EAAE,eAAe,CAAC;IACtD,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,iBAAiB,EAAE,aAAa,CAAC;IACnD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,uBAAuB,GAC9B,MAAM,GAAG,IAAI,CAaf;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB;;;;OAIG;IACH,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,0EAA0E;IAC1E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACvC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAsBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAWlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,OAAO,GACX,mBAAmB,CAWrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,SAAS,WAAW,EAAE,GACjC,WAAW,CAsCb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC3B,aAAa,CA6Bf;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CA4FT"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* do_mon_spell, ported from reference/src/mon-spell.c (Angband 4.2.6): a
|
|
3
|
+
* monster casts a spell by RSF_ index. This is the convergence point of the
|
|
4
|
+
* whole projection -> effect stack - it looks up the bound spell, rolls the
|
|
5
|
+
* hit, and runs the spell's effect chain through the effect interpreter with a
|
|
6
|
+
* monster source and the live game environment, so every attack / status /
|
|
7
|
+
* teleport handler already registered fires against the real GameState.
|
|
8
|
+
*
|
|
9
|
+
* It lives in game/ (not mon/) because it drives effect_do, and effects/ sits
|
|
10
|
+
* above mon/ in the layering (effects/effect.ts imports mon/timed); do_mon_spell
|
|
11
|
+
* composes the interpreter, the effect environment and the projection cast
|
|
12
|
+
* context, all of which are game-layer concerns.
|
|
13
|
+
*
|
|
14
|
+
* The record -> Effect chain conversion goes through EffectBuilder: bindSpells
|
|
15
|
+
* (mon/bind.ts) stores each spell effect's expr directives separately from the
|
|
16
|
+
* parsed dice, so the chain must be rebuilt so the builder applies dice then
|
|
17
|
+
* expr (binding SPELL_POWER / MAX_SIGHT). The spell message, the disturb, and
|
|
18
|
+
* the fail-rune learning are injected hooks (UI / lore, #24). Summon and
|
|
19
|
+
* shapechange subtypes need their name resolvers injected (mon-summon.c /
|
|
20
|
+
* player shapes); absent, the chain cannot build and the cast fizzles (the
|
|
21
|
+
* summon effect itself is a stub until monster generation lands).
|
|
22
|
+
*/
|
|
23
|
+
import { EffectBuilder } from "../effects/effect.js";
|
|
24
|
+
import { sourceMonster } from "../effects/interpreter.js";
|
|
25
|
+
import { testHit } from "../combat/hit.js";
|
|
26
|
+
import { checkHit } from "../combat/mon-melee.js";
|
|
27
|
+
import { chanceOfSpellHit, updateSmartLearn } from "../mon/spell.js";
|
|
28
|
+
import { buildEffectContext } from "./effect-env.js";
|
|
29
|
+
import { attachGameEnv } from "./effect-game-env.js";
|
|
30
|
+
import { spellMessageText } from "./mon-message.js";
|
|
31
|
+
import { disturb } from "./player-path.js";
|
|
32
|
+
import { ELEM, MSG, OF, PF, TMD } from "../generated/index.js";
|
|
33
|
+
import { equipLearnElement, equipLearnFlag } from "../obj/knowledge.js";
|
|
34
|
+
import { playerIncCheck } from "../player/timed.js";
|
|
35
|
+
/**
|
|
36
|
+
* Rebuild a spell's effect chain from its bound records so EffectBuilder binds
|
|
37
|
+
* the dice and then the expr directives (SPELL_POWER / MAX_SIGHT). Throws when
|
|
38
|
+
* a subtype cannot be resolved (an uninjected summon / shape name).
|
|
39
|
+
*/
|
|
40
|
+
export function buildSpellEffectChain(spell, inject) {
|
|
41
|
+
const builder = new EffectBuilder(inject);
|
|
42
|
+
for (const e of spell.effects) {
|
|
43
|
+
let spec = e.eff;
|
|
44
|
+
const hasType = e.type !== null && e.type !== "";
|
|
45
|
+
if (hasType || e.radius || e.other)
|
|
46
|
+
spec += ":" + (e.type ?? "");
|
|
47
|
+
if (e.radius || e.other)
|
|
48
|
+
spec += ":" + e.radius;
|
|
49
|
+
if (e.other)
|
|
50
|
+
spec += ":" + e.other;
|
|
51
|
+
builder.effect(spec);
|
|
52
|
+
if (e.diceRaw)
|
|
53
|
+
builder.dice(e.diceRaw);
|
|
54
|
+
for (const x of e.exprs)
|
|
55
|
+
builder.expr(x.name, x.base, x.expr);
|
|
56
|
+
}
|
|
57
|
+
return builder.build();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* spell_check_for_fail_rune (mon-spell.c L291): after the player saves against a
|
|
61
|
+
* spell, learn the object rune that would also have prevented it - ELEM_NEXUS
|
|
62
|
+
* for a teleport-level effect, and the timed-effect foil for each EF_TIMED_INC.
|
|
63
|
+
* The effect names are the bound EF_ names on each spell effect line.
|
|
64
|
+
*/
|
|
65
|
+
function spellCheckForFailRune(spell, mon, env) {
|
|
66
|
+
for (const e of spell.effects) {
|
|
67
|
+
if (e.eff === "TELEPORT_LEVEL") {
|
|
68
|
+
env.learnNexus();
|
|
69
|
+
}
|
|
70
|
+
else if (e.eff === "TIMED_INC") {
|
|
71
|
+
env.incCheck(e.type ?? "", mon);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* buildSmartLearnEnv: the update_smart_learn player-side seams (mon-util.c L788)
|
|
77
|
+
* over the live derived state - equip_learn_flag / equip_learn_element,
|
|
78
|
+
* player_of_has, pf_has and the element resist level - gated by OPT(player,
|
|
79
|
+
* birth_ai_learn). Shared by the fail-rune path (spell_check_for_fail_rune,
|
|
80
|
+
* below) and the monster-projection path (project_p, project-player.c L852). The
|
|
81
|
+
* engine (updateSmartLearn, mon/spell.ts) draws no RNG when birth_ai_learn is
|
|
82
|
+
* off, so an env with aiLearn false is a pure equip-learn.
|
|
83
|
+
*/
|
|
84
|
+
export function buildSmartLearnEnv(state) {
|
|
85
|
+
const p = state.actor.player;
|
|
86
|
+
return {
|
|
87
|
+
aiLearn: state.options?.get("birth_ai_learn") ?? false,
|
|
88
|
+
equipLearnFlag: (of) => equipLearnFlag(p, state.runeEnv, of),
|
|
89
|
+
equipLearnElement: (elem) => equipLearnElement(p, state.runeEnv, elem),
|
|
90
|
+
playerOfHas: (of) => state.playerState?.flags.has(of) ?? false,
|
|
91
|
+
playerPfHas: (pf) => state.playerState?.pflags.has(pf) ?? false,
|
|
92
|
+
playerResLevel: (elem) => state.playerState?.elInfo[elem]?.resLevel ?? 0,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* buildMonsterIncHooks: the monster-source side of player_inc_check for a
|
|
97
|
+
* specific caster (player-timed.c L946-948). On a TMD_FAIL_FLAG_OBJECT foil the
|
|
98
|
+
* caster learns the flag via update_smart_learn(mon, p, of, 0, -1); the engine's
|
|
99
|
+
* own equip_learn_flag (mon-util.c L797) learns the rune, so the flag is learned
|
|
100
|
+
* once per foil (upstream's outer + inner equip_learn_flag pair is idempotent).
|
|
101
|
+
* Shared by the fail-rune (save) path here and by the effect-application (no
|
|
102
|
+
* save) path (see the WIRING note in this module's design comment / report).
|
|
103
|
+
* Gated internally by birth_ai_learn, so it draws no RNG when the option is off.
|
|
104
|
+
*/
|
|
105
|
+
export function buildMonsterIncHooks(state, mon) {
|
|
106
|
+
const smartEnv = buildSmartLearnEnv(state);
|
|
107
|
+
return {
|
|
108
|
+
monsterSource: true,
|
|
109
|
+
updateSmartLearn: (name) => {
|
|
110
|
+
const of = OF[name];
|
|
111
|
+
if (of !== undefined) {
|
|
112
|
+
updateSmartLearn(state.rng, mon, smartEnv, of, 0, -1);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* buildFailRuneEnv: the spell_check_for_fail_rune seams over the live state -
|
|
119
|
+
* equip_learn_element(player, ELEM_NEXUS) for a teleport-level save, and a
|
|
120
|
+
* real player_inc_check(player, subtype, false) (with its own equip-learn side
|
|
121
|
+
* effects) for each EF_TIMED_INC, resolved against the bound timed table and
|
|
122
|
+
* the derived player state. Mirrors the query construction the lore layer uses
|
|
123
|
+
* (game/lore-color.ts); absent derived state, the queries read as "nothing".
|
|
124
|
+
*
|
|
125
|
+
* Because spell_check_for_fail_rune runs mid-cast, cave->mon_current is the
|
|
126
|
+
* caster, so player_inc_check(lore=false) is a monster-source check: an
|
|
127
|
+
* object-flag foil fires update_smart_learn(mon, p, of, 0, -1) (player-timed.c
|
|
128
|
+
* L947) via the monster-source hook. That is gap 8.5's WRITE path on the save
|
|
129
|
+
* branch; with birth_ai_learn off the engine no-ops (no memory write, no RNG).
|
|
130
|
+
*/
|
|
131
|
+
export function buildFailRuneEnv(state, timedTable) {
|
|
132
|
+
const p = state.actor.player;
|
|
133
|
+
const queries = {
|
|
134
|
+
objectFlag: (name) => {
|
|
135
|
+
const i = OF[name];
|
|
136
|
+
return i !== undefined && (state.playerState?.flags.has(i) ?? false);
|
|
137
|
+
},
|
|
138
|
+
resistLevel: (name) => {
|
|
139
|
+
const i = ELEM[name];
|
|
140
|
+
return i !== undefined
|
|
141
|
+
? (state.playerState?.elInfo[i]?.resLevel ?? 0)
|
|
142
|
+
: 0;
|
|
143
|
+
},
|
|
144
|
+
playerFlag: (name) => {
|
|
145
|
+
const i = PF[name];
|
|
146
|
+
return i !== undefined && (state.playerState?.pflags.has(i) ?? false);
|
|
147
|
+
},
|
|
148
|
+
timedActive: (name) => {
|
|
149
|
+
const i = TMD[name];
|
|
150
|
+
return i !== undefined && (p.timed[i] ?? 0) > 0;
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
const byIndex = new Map();
|
|
154
|
+
for (const e of timedTable)
|
|
155
|
+
byIndex.set(e.index, e);
|
|
156
|
+
return {
|
|
157
|
+
learnNexus: () => {
|
|
158
|
+
equipLearnElement(p, state.runeEnv, ELEM.NEXUS);
|
|
159
|
+
},
|
|
160
|
+
incCheck: (timedName, mon) => {
|
|
161
|
+
const idx = TMD[timedName];
|
|
162
|
+
if (idx === undefined)
|
|
163
|
+
return;
|
|
164
|
+
const eff = byIndex.get(idx);
|
|
165
|
+
if (!eff)
|
|
166
|
+
return;
|
|
167
|
+
/* Monster-source player_inc_check: an object-flag foil teaches the caster
|
|
168
|
+
* via update_smart_learn (player-timed.c L947). */
|
|
169
|
+
playerIncCheck(eff, queries, buildMonsterIncHooks(state, mon));
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* buildMonSpellHooks: assemble the MonSpellHooks do_mon_spell fires - the
|
|
175
|
+
* disturb (mon-spell.c L368), the cast message (spell_message, L369), the
|
|
176
|
+
* saving-throw message and its fail-rune learning (L382-383). Installed via
|
|
177
|
+
* installMonsterCasting so a monster's cast actually announces itself and, on a
|
|
178
|
+
* save, teaches the runes upstream would.
|
|
179
|
+
*/
|
|
180
|
+
export function buildMonSpellHooks(state, deps = {}) {
|
|
181
|
+
return {
|
|
182
|
+
/* disturb(player): a cast interrupts the player's rest / run (L368). */
|
|
183
|
+
disturb: () => disturb(state),
|
|
184
|
+
/* spell_message (L369): the seen/blind/miss cast line. */
|
|
185
|
+
message: (mon, spell, seen, hits) => {
|
|
186
|
+
const targetMon = mon.target.midx > 0 ? (state.monsters[mon.target.midx] ?? null) : null;
|
|
187
|
+
const out = spellMessageText(mon, spell, seen, hits, {
|
|
188
|
+
targetMon,
|
|
189
|
+
...(deps.panelContains ? { panelContains: deps.panelContains } : {}),
|
|
190
|
+
...(deps.lashDesc ? { lashDesc: deps.lashDesc } : {}),
|
|
191
|
+
});
|
|
192
|
+
if (out) {
|
|
193
|
+
state.msg?.(out.text, out.msgt);
|
|
194
|
+
/* msgt(spell->msgt, ...) sound channel (mon-spell.c spell_message). */
|
|
195
|
+
state.sound?.(MSG[out.msgt] ?? 0);
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
/* The save message (L382). */
|
|
199
|
+
saveMessage: (text) => state.msg?.(text),
|
|
200
|
+
/* spell_check_for_fail_rune (L383): learn the foil rune on a save. */
|
|
201
|
+
...(deps.failRune
|
|
202
|
+
? {
|
|
203
|
+
failRune: (spell, mon) => spellCheckForFailRune(spell, mon, deps.failRune),
|
|
204
|
+
}
|
|
205
|
+
: {}),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* do_mon_spell: process a monster spell (RSF_ index) cast by monster `midx`.
|
|
210
|
+
* Returns whether a real spell was processed (false only when the spell or the
|
|
211
|
+
* caster is missing).
|
|
212
|
+
*/
|
|
213
|
+
export function doMonSpell(state, midx, spellIndex, seen, deps) {
|
|
214
|
+
const spell = deps.spells.get(spellIndex);
|
|
215
|
+
const mon = state.monsters[midx];
|
|
216
|
+
if (!spell || !mon)
|
|
217
|
+
return false;
|
|
218
|
+
/* See if it hits. A monster may be aiming at another monster (target.midx). */
|
|
219
|
+
const targetMidx = mon.target.midx;
|
|
220
|
+
let hits;
|
|
221
|
+
if (spell.hit === 100) {
|
|
222
|
+
hits = true;
|
|
223
|
+
}
|
|
224
|
+
else if (spell.hit === 0) {
|
|
225
|
+
hits = false;
|
|
226
|
+
}
|
|
227
|
+
else if (targetMidx > 0) {
|
|
228
|
+
const tmon = state.monsters[targetMidx];
|
|
229
|
+
hits = tmon
|
|
230
|
+
? testHit(state.rng, chanceOfSpellHit(mon, spell), tmon.race.ac)
|
|
231
|
+
: false;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
hits = checkHit(state.rng, chanceOfSpellHit(mon, spell), state.actor.defense);
|
|
235
|
+
}
|
|
236
|
+
/* Tell the player what is going on. */
|
|
237
|
+
deps.hooks?.disturb?.();
|
|
238
|
+
deps.hooks?.message?.(mon, spell, seen, hits);
|
|
239
|
+
if (!hits)
|
|
240
|
+
return true;
|
|
241
|
+
/* Get the right power-level of save message for this caster. */
|
|
242
|
+
let level = spell.levels[0];
|
|
243
|
+
for (let i = 1; i < spell.levels.length; i++) {
|
|
244
|
+
const next = spell.levels[i];
|
|
245
|
+
if (mon.race.spellPower >= next.power)
|
|
246
|
+
level = next;
|
|
247
|
+
else
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
/* Try a saving throw, if the spell offers one and the target is the player. */
|
|
251
|
+
if (level.saveMessage &&
|
|
252
|
+
targetMidx <= 0 &&
|
|
253
|
+
state.rng.randint0(100) < deps.saveSkill) {
|
|
254
|
+
deps.hooks?.saveMessage?.(level.saveMessage);
|
|
255
|
+
deps.hooks?.failRune?.(spell, mon);
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
/* Build the effect chain (per cast, so SPELL_POWER binds this caster). */
|
|
259
|
+
const inject = {
|
|
260
|
+
...deps.inject,
|
|
261
|
+
baseValues: {
|
|
262
|
+
SPELL_POWER: () => mon.race.spellPower,
|
|
263
|
+
MAX_SIGHT: () => state.z.maxSight,
|
|
264
|
+
...deps.inject?.baseValues,
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
let chain;
|
|
268
|
+
try {
|
|
269
|
+
chain = buildSpellEffectChain(spell, inject);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
/* An uninjected summon / shape subtype: the cast fizzles (deferred). */
|
|
273
|
+
deps.hooks?.unresolved?.(spell, err);
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
/* Thread the monster-source player_inc_check hooks so update_smart_learn
|
|
277
|
+
* (mon-util.c L788) fires on the no-save application branch (a timed effect
|
|
278
|
+
* the player's gear foils). With birth_ai_learn off, updateSmartLearn returns
|
|
279
|
+
* before any RNG draw, so this is a no-op by default. */
|
|
280
|
+
const ctx = attachGameEnv(buildEffectContext(state, {
|
|
281
|
+
...deps.envDeps,
|
|
282
|
+
incHooks: buildMonsterIncHooks(state, mon),
|
|
283
|
+
}), {
|
|
284
|
+
state,
|
|
285
|
+
cast: deps.cast,
|
|
286
|
+
monCurrent: midx,
|
|
287
|
+
...(deps.envDeps.takeHitHooks
|
|
288
|
+
? { takeHitHooks: deps.envDeps.takeHitHooks }
|
|
289
|
+
: {}),
|
|
290
|
+
...(deps.teleport ? { teleport: deps.teleport } : {}),
|
|
291
|
+
...(deps.general ? { general: deps.general } : {}),
|
|
292
|
+
...(deps.summon ? { summon: deps.summon } : {}),
|
|
293
|
+
...(deps.monShape ? { monShape: deps.monShape } : {}),
|
|
294
|
+
});
|
|
295
|
+
deps.registry.effectDo(chain, ctx, {
|
|
296
|
+
origin: sourceMonster(midx),
|
|
297
|
+
aware: true,
|
|
298
|
+
});
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=mon-cast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mon-cast.js","sourceRoot":"","sources":["../../src/game/mon-cast.ts"],"names":[],"mappings":"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"}
|