@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,766 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The projection-casting spine, the game-layer glue that makes the projection
|
|
3
|
+
* stack usable. It wires the two projection drivers - game/project-monster.ts
|
|
4
|
+
* (projectMonster) and game/project-player.ts (projectPlayer) - to the generic
|
|
5
|
+
* beam/bolt/ball/arc driver project() (world/project.ts) using the live
|
|
6
|
+
* GameState.
|
|
7
|
+
*
|
|
8
|
+
* castProjection is the core: it assembles project()'s ProjectHooks from the
|
|
9
|
+
* two drivers plus GameState (and the injected hooks for the genuinely
|
|
10
|
+
* downstream consequences those drivers defer - kills/drops/exp, polymorph,
|
|
11
|
+
* teleport, inventory damage, stat/exp drain, messages) and runs one
|
|
12
|
+
* projection. This is the single entry point the attack effect handlers (#18),
|
|
13
|
+
* monster spells (#19) and player spellcasting (#22) all dispatch a projection
|
|
14
|
+
* through. The flag-shape helpers (castBolt / castBeam / castBall) preset
|
|
15
|
+
* project()'s flags and radius exactly as the matching effect_handler_* in
|
|
16
|
+
* effect-handler-attack.c and delegate to it: castBolt / castBeam / castBall /
|
|
17
|
+
* castArc / castBreath / castShortBeam / castLine / castAlter / castSpot /
|
|
18
|
+
* castSphere / castStrike / castStar / castStarBall / castTouch / castSwarm /
|
|
19
|
+
* castProjectLos.
|
|
20
|
+
*
|
|
21
|
+
* The target grid is resolved by the caller. resolveAimedTarget ports the
|
|
22
|
+
* portable branches of get_target (effect-handler-attack.c L38): the player
|
|
23
|
+
* and no-source cases fully, and the monster case to the player's grid. The
|
|
24
|
+
* monster confused-direction / target-monster / decoy branches need the
|
|
25
|
+
* monster-spell targeting and decoys (both #19+), so #19 resolves those and
|
|
26
|
+
* passes the grid in.
|
|
27
|
+
*
|
|
28
|
+
* The player-projection actor (PlayerProjActor: resist levels, damage
|
|
29
|
+
* reduction, minus_ac) is supplied by the caller, exactly as PlayerActor's
|
|
30
|
+
* combat / defense views are, because calc_bonuses (which derives them) is
|
|
31
|
+
* deferred. basicPlayerActor builds the no-resist, no-reduction view over the
|
|
32
|
+
* live Player for callers and tests until calc_bonuses lands; take_hit's
|
|
33
|
+
* mutations (chp, is_dead) write back through it to the live player/state.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
import { PF, TMD } from "../generated/index.js";
|
|
37
|
+
import { DIR_TARGET } from "../effects/interpreter.js";
|
|
38
|
+
import { DDGRID, DDGRID_DDD, loc, locEq, locSum } from "../loc.js";
|
|
39
|
+
import type { Loc } from "../loc.js";
|
|
40
|
+
import { monsterIsVisible } from "../mon/predicate.js";
|
|
41
|
+
import { PROJECT, project } from "../world/project.js";
|
|
42
|
+
import type {
|
|
43
|
+
BoltStep,
|
|
44
|
+
Projection,
|
|
45
|
+
ProjectHooks,
|
|
46
|
+
ProjectParams,
|
|
47
|
+
} from "../world/project.js";
|
|
48
|
+
import { los, squareIsView } from "../world/view.js";
|
|
49
|
+
import type { ProjectionInfo } from "../world/projection.js";
|
|
50
|
+
import type { DamageReduction } from "../player/take-hit.js";
|
|
51
|
+
import { monsterMax } from "./context.js";
|
|
52
|
+
import type { GameState } from "./context.js";
|
|
53
|
+
import { destroyDecoy, monsterGetTarget } from "./effect-mon-origin.js";
|
|
54
|
+
import { projectMonster } from "./project-monster.js";
|
|
55
|
+
import type { ProjectMonsterHooks } from "./project-monster.js";
|
|
56
|
+
import { updateSmartLearn } from "../mon/spell.js";
|
|
57
|
+
import { buildSmartLearnEnv } from "./mon-cast.js";
|
|
58
|
+
import { projectPlayer } from "./project-player.js";
|
|
59
|
+
import { projectObject } from "./project-obj.js";
|
|
60
|
+
import { projectFeature } from "./project-feat.js";
|
|
61
|
+
import { squareIsBelievedWall } from "./known.js";
|
|
62
|
+
import type { PlayerProjActor, ProjectPlayerHooks } from "./project-player.js";
|
|
63
|
+
|
|
64
|
+
/** option.c: op_ptr->hitpoint_warn default (0..9). Canonical in player/options. */
|
|
65
|
+
import { DEFAULT_HITPOINT_WARN } from "../player/options.js";
|
|
66
|
+
export { DEFAULT_HITPOINT_WARN };
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The projection source, unified across the two drivers. Built from a struct
|
|
70
|
+
* source with playerCastSource / monsterCastSource, or by hand.
|
|
71
|
+
*/
|
|
72
|
+
export interface CastSource {
|
|
73
|
+
/** origin.what == SRC_PLAYER. */
|
|
74
|
+
isPlayer: boolean;
|
|
75
|
+
/** origin.what == SRC_MONSTER. */
|
|
76
|
+
isMonster: boolean;
|
|
77
|
+
/** origin.which.monster (midx); 0 when the source is not a monster. */
|
|
78
|
+
monster: number;
|
|
79
|
+
/** origin_get_loc(origin): the projection's start grid. */
|
|
80
|
+
grid: Loc;
|
|
81
|
+
/** player_has(PF_CHARM): boosts a player projection's effects vs animals. */
|
|
82
|
+
charm?: boolean;
|
|
83
|
+
/** monster_is_visible(source): false hides an unseen monster source. */
|
|
84
|
+
monsterVisible?: boolean;
|
|
85
|
+
/** kb_str death cause for take_hit ("an orc", "a trap", "yourself"). */
|
|
86
|
+
killer?: string;
|
|
87
|
+
/** Monster spell power, forwarded to the player side-effect handler. */
|
|
88
|
+
power?: number;
|
|
89
|
+
/** origin.what == SRC_TRAP (FORCE's on-the-trap centre jitter). */
|
|
90
|
+
isTrap?: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** source_player(): a player-origin cast from the live player grid. */
|
|
94
|
+
export function playerCastSource(
|
|
95
|
+
state: GameState,
|
|
96
|
+
opts: { charm?: boolean; killer?: string } = {},
|
|
97
|
+
): CastSource {
|
|
98
|
+
return {
|
|
99
|
+
isPlayer: true,
|
|
100
|
+
isMonster: false,
|
|
101
|
+
monster: 0,
|
|
102
|
+
grid: state.actor.grid,
|
|
103
|
+
/* project-mon.c L1346: player_has(PF_CHARM), not a caller default. */
|
|
104
|
+
charm:
|
|
105
|
+
opts.charm ??
|
|
106
|
+
(state.playerState?.pflags.has(PF.CHARM) ??
|
|
107
|
+
(state.actor.player.race.pflags.has(PF.CHARM) ||
|
|
108
|
+
state.actor.player.cls.pflags.has(PF.CHARM))),
|
|
109
|
+
killer: opts.killer ?? "yourself",
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** source_monster(midx): a monster-origin cast from that monster's grid. */
|
|
114
|
+
export function monsterCastSource(
|
|
115
|
+
state: GameState,
|
|
116
|
+
midx: number,
|
|
117
|
+
opts: { killer?: string; power?: number } = {},
|
|
118
|
+
): CastSource {
|
|
119
|
+
const mon = state.monsters[midx] ?? null;
|
|
120
|
+
return {
|
|
121
|
+
isPlayer: false,
|
|
122
|
+
isMonster: true,
|
|
123
|
+
monster: midx,
|
|
124
|
+
grid: mon ? mon.grid : loc(-1, -1),
|
|
125
|
+
monsterVisible: mon ? monsterIsVisible(mon) : false,
|
|
126
|
+
killer: opts.killer ?? "a monster",
|
|
127
|
+
power: opts.power ?? 0,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** The consequences and UI seams a cast defers to its caller. */
|
|
132
|
+
export interface CastHooks {
|
|
133
|
+
/** project_m's deferred consequences (kills, poly, teleport, messages). */
|
|
134
|
+
monster?: ProjectMonsterHooks;
|
|
135
|
+
/** project_p's deferred consequences (side effects, take_hit, messages). */
|
|
136
|
+
player?: ProjectPlayerHooks;
|
|
137
|
+
/** UI: one traveled bolt/beam step (suppressed when the player is blind). */
|
|
138
|
+
onBolt?: (step: BoltStep, typ: number, beam: boolean) => void;
|
|
139
|
+
/** UI: the whole blast, once, before per-grid effects. */
|
|
140
|
+
onBlast?: (proj: Projection, typ: number) => void;
|
|
141
|
+
/** Recall / health-track the single monster a player projection hit. */
|
|
142
|
+
onTrackMonster?: (grid: Loc) => void;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Everything a cast needs beyond the source and the shot parameters. */
|
|
146
|
+
export interface CastContext {
|
|
147
|
+
/** The bound projection table (world/projection.ts bindProjections). */
|
|
148
|
+
projections: readonly ProjectionInfo[];
|
|
149
|
+
/** z_info->max_range. */
|
|
150
|
+
maxRange: number;
|
|
151
|
+
/** The player-projection actor (resist / reduction view; see module doc). */
|
|
152
|
+
playerActor: PlayerProjActor;
|
|
153
|
+
hooks?: CastHooks;
|
|
154
|
+
/**
|
|
155
|
+
* World seams for project_o / project_f (floor destruction, stone-to-mud,
|
|
156
|
+
* trap and door effects). When absent, PROJECT.ITEM / PROJECT.GRID
|
|
157
|
+
* projections skip objects and terrain (the pre-#20/#21 behaviour).
|
|
158
|
+
*/
|
|
159
|
+
worldEnv?: import("./project-feat.js").ProjectFeatEnv;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* basicPlayerActor: the no-resist, no-reduction player-projection view over the
|
|
164
|
+
* live Player, for callers and tests until calc_bonuses (el_info, dam_red,
|
|
165
|
+
* perc_dam_red, minus_ac) lands. chp and is_dead are live so take_hit's
|
|
166
|
+
* mutations write back to the player and the game state.
|
|
167
|
+
*/
|
|
168
|
+
export function basicPlayerActor(
|
|
169
|
+
state: GameState,
|
|
170
|
+
opts: {
|
|
171
|
+
/** state.el_info[type].res_level from the live derived state. */
|
|
172
|
+
resistLevel?: (type: number) => number;
|
|
173
|
+
/** state.dam_red / perc_dam_red from the live derived state. */
|
|
174
|
+
reduction?: () => DamageReduction;
|
|
175
|
+
/** minus_ac(p): damage a worn armour piece to acid, returning the halving
|
|
176
|
+
* flag (obj-gear.c L376-438). Default no armour effect. */
|
|
177
|
+
minusAc?: () => boolean;
|
|
178
|
+
} = {},
|
|
179
|
+
): PlayerProjActor {
|
|
180
|
+
const p = state.actor.player;
|
|
181
|
+
return {
|
|
182
|
+
get chp(): number {
|
|
183
|
+
return p.chp;
|
|
184
|
+
},
|
|
185
|
+
set chp(v: number) {
|
|
186
|
+
p.chp = v;
|
|
187
|
+
},
|
|
188
|
+
get mhp(): number {
|
|
189
|
+
return p.mhp;
|
|
190
|
+
},
|
|
191
|
+
get lev(): number {
|
|
192
|
+
return p.lev;
|
|
193
|
+
},
|
|
194
|
+
get isDead(): boolean {
|
|
195
|
+
return state.isDead;
|
|
196
|
+
},
|
|
197
|
+
set isDead(v: boolean) {
|
|
198
|
+
state.isDead = v;
|
|
199
|
+
},
|
|
200
|
+
timed: p.timed,
|
|
201
|
+
hitpointWarn: DEFAULT_HITPOINT_WARN,
|
|
202
|
+
resistLevel: opts.resistLevel ?? ((): number => 0),
|
|
203
|
+
get reduction(): DamageReduction {
|
|
204
|
+
return opts.reduction ? opts.reduction() : { damRed: 0, percDamRed: 0 };
|
|
205
|
+
},
|
|
206
|
+
minusAc: opts.minusAc ?? ((): boolean => false),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* get_target (effect-handler-attack.c L38) for the aimed bolt/beam family.
|
|
212
|
+
* Returns the target grid and whether PROJECT_PLAY should be set (get_target
|
|
213
|
+
* sets it for monster and no-source projections so they can hit the player).
|
|
214
|
+
*
|
|
215
|
+
* - SRC_PLAYER: DIR_TARGET with an acquired target aims at it; otherwise the
|
|
216
|
+
* adjacent grid in `dir`. The target system (target_okay / target_get) is
|
|
217
|
+
* deferred (#24), so the acquired grid is passed in as `aimed`.
|
|
218
|
+
* - SRC_MONSTER: monsterGetTarget resolves confusion's random direction (one
|
|
219
|
+
* randint1(100) draw always made, matching the upstream RNG stream), then a
|
|
220
|
+
* targeted monster, the decoy, or the player.
|
|
221
|
+
* - default (SRC_NONE / trap / object): aims at the player, sets PROJECT_PLAY.
|
|
222
|
+
*/
|
|
223
|
+
export function resolveAimedTarget(
|
|
224
|
+
state: GameState,
|
|
225
|
+
source: CastSource,
|
|
226
|
+
dir: number,
|
|
227
|
+
aimed?: Loc,
|
|
228
|
+
): { grid: Loc; play: boolean } {
|
|
229
|
+
if (source.isPlayer) {
|
|
230
|
+
if (dir === DIR_TARGET && aimed) return { grid: aimed, play: false };
|
|
231
|
+
return { grid: locSum(state.actor.grid, DDGRID[dir] ?? loc(0, 0)), play: false };
|
|
232
|
+
}
|
|
233
|
+
if (source.isMonster) {
|
|
234
|
+
return { grid: monsterGetTarget(state, state.rng, source.monster), play: true };
|
|
235
|
+
}
|
|
236
|
+
/* No-source projections target the player and may hit them. */
|
|
237
|
+
return { grid: state.actor.grid, play: true };
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* castProjection: assemble project()'s hooks from the two drivers plus the live
|
|
242
|
+
* GameState and fire one projection at `target`. `flg` is the fully-resolved
|
|
243
|
+
* PROJECT_* flag set; `rad` is 0 for a bolt/beam or the ball/arc radius. Returns
|
|
244
|
+
* project()'s notice value (the player observed some effect). This is the seam
|
|
245
|
+
* every attack effect, monster spell and player spell dispatches through.
|
|
246
|
+
*/
|
|
247
|
+
export function castProjection(
|
|
248
|
+
state: GameState,
|
|
249
|
+
cctx: CastContext,
|
|
250
|
+
source: CastSource,
|
|
251
|
+
target: Loc,
|
|
252
|
+
dam: number,
|
|
253
|
+
typ: number,
|
|
254
|
+
flg: number,
|
|
255
|
+
rad: number,
|
|
256
|
+
degreesOfArc = 0,
|
|
257
|
+
diameterOfSource = 0,
|
|
258
|
+
): boolean {
|
|
259
|
+
const hooks = cctx.hooks ?? {};
|
|
260
|
+
|
|
261
|
+
const monCtx = {
|
|
262
|
+
state,
|
|
263
|
+
projections: cctx.projections,
|
|
264
|
+
origin: {
|
|
265
|
+
isPlayer: source.isPlayer,
|
|
266
|
+
monster: source.monster,
|
|
267
|
+
grid: source.grid,
|
|
268
|
+
charm: source.charm ?? false,
|
|
269
|
+
},
|
|
270
|
+
hooks: hooks.monster ?? {},
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const plCtx = {
|
|
274
|
+
rng: state.rng,
|
|
275
|
+
actor: cctx.playerActor,
|
|
276
|
+
playerGrid: state.actor.grid,
|
|
277
|
+
projections: cctx.projections,
|
|
278
|
+
origin: {
|
|
279
|
+
isPlayer: source.isPlayer,
|
|
280
|
+
isMonster: source.isMonster,
|
|
281
|
+
...(source.monsterVisible !== undefined
|
|
282
|
+
? { monsterVisible: source.monsterVisible }
|
|
283
|
+
: {}),
|
|
284
|
+
killer: source.killer ?? "a bug",
|
|
285
|
+
/* origin_get_loc + SRC_TRAP, for the FORCE thrust centre. */
|
|
286
|
+
grid: source.grid,
|
|
287
|
+
...(source.isTrap !== undefined ? { isTrap: source.isTrap } : {}),
|
|
288
|
+
},
|
|
289
|
+
power: source.power ?? 0,
|
|
290
|
+
/* update_smart_learn (mon-util.c L788): a monster-source projection that
|
|
291
|
+
* hits the player lets the monster learn the player's resist/flag for that
|
|
292
|
+
* GF type. Merge the per-cast smartLearn hook onto the player hooks for
|
|
293
|
+
* monster sources only. With birth_ai_learn off, updateSmartLearn returns
|
|
294
|
+
* before drawing RNG (equipLearn* aside), so default play is unchanged. */
|
|
295
|
+
hooks: {
|
|
296
|
+
...(hooks.player ?? {}),
|
|
297
|
+
...(source.isMonster && source.monster > 0
|
|
298
|
+
? {
|
|
299
|
+
smartLearn: (typ: number): void => {
|
|
300
|
+
const mon = state.monsters[source.monster];
|
|
301
|
+
if (mon) {
|
|
302
|
+
updateSmartLearn(state.rng, mon, buildSmartLearnEnv(state), 0, 0, typ);
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
}
|
|
306
|
+
: {}),
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
const projectHooks: ProjectHooks = {
|
|
311
|
+
onMonster: (dist, g, d, t, f) => projectMonster(monCtx, dist, g, d, t, f),
|
|
312
|
+
onPlayer: (dist, g, d, t, self) => {
|
|
313
|
+
/* project_p (project-player.c L822): a damaging projection that reaches
|
|
314
|
+
* the player's decoy grid destroys it, whether or not the player is
|
|
315
|
+
* there. */
|
|
316
|
+
if (d && state.decoy && locEq(g, state.decoy)) {
|
|
317
|
+
destroyDecoy(state, cctx.worldEnv?.trapDeps, (text) =>
|
|
318
|
+
cctx.worldEnv?.msg?.(text),
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
return projectPlayer(plCtx, dist, g, d, t, self);
|
|
322
|
+
},
|
|
323
|
+
playerIsDead: () => cctx.playerActor.isDead,
|
|
324
|
+
...(hooks.onTrackMonster ? { onTrackMonster: hooks.onTrackMonster } : {}),
|
|
325
|
+
...(hooks.onBolt ? { onBolt: hooks.onBolt } : {}),
|
|
326
|
+
...(hooks.onBlast ? { onBlast: hooks.onBlast } : {}),
|
|
327
|
+
/* project_o / project_f over the live floor piles and terrain. */
|
|
328
|
+
...(cctx.worldEnv
|
|
329
|
+
? {
|
|
330
|
+
onObject: (dist: number, g: Loc, d: number, t: number): boolean =>
|
|
331
|
+
projectObject(state, dist, g, d, t, cctx.worldEnv),
|
|
332
|
+
onFeature: (dist: number, g: Loc, d: number, t: number): boolean =>
|
|
333
|
+
projectFeature(state, dist, g, d, t, cctx.worldEnv),
|
|
334
|
+
}
|
|
335
|
+
: {}),
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
const params: ProjectParams = {
|
|
339
|
+
origin: source.grid,
|
|
340
|
+
finish: target,
|
|
341
|
+
rad,
|
|
342
|
+
typ,
|
|
343
|
+
flg,
|
|
344
|
+
dam,
|
|
345
|
+
maxRange: cctx.maxRange,
|
|
346
|
+
sourceIsPlayer: source.isPlayer,
|
|
347
|
+
blind: cctx.playerActor.timed[TMD.BLIND]! > 0,
|
|
348
|
+
degreesOfArc,
|
|
349
|
+
diameterOfSource,
|
|
350
|
+
believedWall: (grid) => squareIsBelievedWall(state, grid),
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
return project(state.chunk, params, projectHooks);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* effect_handler_BOLT: a bolt that stops at the first monster. project_aimed
|
|
358
|
+
* adds PROJECT_THRU; get_target adds PROJECT_PLAY for a non-player source.
|
|
359
|
+
*/
|
|
360
|
+
export function castBolt(
|
|
361
|
+
state: GameState,
|
|
362
|
+
cctx: CastContext,
|
|
363
|
+
source: CastSource,
|
|
364
|
+
target: Loc,
|
|
365
|
+
dam: number,
|
|
366
|
+
typ: number,
|
|
367
|
+
extraFlg = 0,
|
|
368
|
+
): boolean {
|
|
369
|
+
let flg = PROJECT.STOP | PROJECT.KILL | PROJECT.THRU;
|
|
370
|
+
if (!source.isPlayer) flg |= PROJECT.PLAY;
|
|
371
|
+
/* BOLT_AWARE adds PROJECT_AWARE when the caster is aware of the effect
|
|
372
|
+
(effect-handler-attack.c:402), so the hit is "obvious" and does not try to
|
|
373
|
+
ID its source. */
|
|
374
|
+
flg |= extraFlg;
|
|
375
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, 0);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* effect_handler_BEAM: a beam that passes through monsters. As castBolt but
|
|
380
|
+
* PROJECT_BEAM instead of PROJECT_STOP.
|
|
381
|
+
*/
|
|
382
|
+
export function castBeam(
|
|
383
|
+
state: GameState,
|
|
384
|
+
cctx: CastContext,
|
|
385
|
+
source: CastSource,
|
|
386
|
+
target: Loc,
|
|
387
|
+
dam: number,
|
|
388
|
+
typ: number,
|
|
389
|
+
): boolean {
|
|
390
|
+
let flg = PROJECT.BEAM | PROJECT.KILL | PROJECT.THRU;
|
|
391
|
+
if (!source.isPlayer) flg |= PROJECT.PLAY;
|
|
392
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, 0);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* effect_handler_BALL: an exploding ball. A monster source adds PROJECT_PLAY
|
|
397
|
+
* and drops STOP/THRU so it detonates on the player; a player source drops
|
|
398
|
+
* STOP/THRU only when a specific target was acquired (aimedAtTarget), so a
|
|
399
|
+
* bare-direction ball still stops at the first obstacle. `rad` defaults to 2
|
|
400
|
+
* upstream; the caller applies any powerful-monster or player-level radius
|
|
401
|
+
* bonus before calling.
|
|
402
|
+
*/
|
|
403
|
+
export function castBall(
|
|
404
|
+
state: GameState,
|
|
405
|
+
cctx: CastContext,
|
|
406
|
+
source: CastSource,
|
|
407
|
+
target: Loc,
|
|
408
|
+
dam: number,
|
|
409
|
+
typ: number,
|
|
410
|
+
rad = 2,
|
|
411
|
+
opts: { aimedAtTarget?: boolean } = {},
|
|
412
|
+
): boolean {
|
|
413
|
+
let flg =
|
|
414
|
+
PROJECT.THRU | PROJECT.STOP | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
415
|
+
if (source.isMonster) {
|
|
416
|
+
flg |= PROJECT.PLAY;
|
|
417
|
+
flg &= ~(PROJECT.STOP | PROJECT.THRU);
|
|
418
|
+
} else if (source.isPlayer && opts.aimedAtTarget) {
|
|
419
|
+
flg &= ~(PROJECT.STOP | PROJECT.THRU);
|
|
420
|
+
}
|
|
421
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, rad);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* effect_handler_LINE (L173): a beam that also affects grids (e.g. light).
|
|
426
|
+
* As castBeam but with PROJECT_GRID.
|
|
427
|
+
*/
|
|
428
|
+
export function castLine(
|
|
429
|
+
state: GameState,
|
|
430
|
+
cctx: CastContext,
|
|
431
|
+
source: CastSource,
|
|
432
|
+
target: Loc,
|
|
433
|
+
dam: number,
|
|
434
|
+
typ: number,
|
|
435
|
+
): boolean {
|
|
436
|
+
let flg = PROJECT.BEAM | PROJECT.GRID | PROJECT.KILL | PROJECT.THRU;
|
|
437
|
+
if (!source.isPlayer) flg |= PROJECT.PLAY;
|
|
438
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, 0);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* effect_handler_ALTER (L186): affect grids and objects, not monsters, with no
|
|
443
|
+
* damage (door/wall alteration). PROJECT_BEAM | GRID | ITEM (+THRU from
|
|
444
|
+
* project_aimed).
|
|
445
|
+
*/
|
|
446
|
+
export function castAlter(
|
|
447
|
+
state: GameState,
|
|
448
|
+
cctx: CastContext,
|
|
449
|
+
source: CastSource,
|
|
450
|
+
target: Loc,
|
|
451
|
+
typ: number,
|
|
452
|
+
): boolean {
|
|
453
|
+
let flg = PROJECT.BEAM | PROJECT.GRID | PROJECT.ITEM | PROJECT.THRU;
|
|
454
|
+
if (!source.isPlayer) flg |= PROJECT.PLAY;
|
|
455
|
+
return castProjection(state, cctx, source, target, 0, typ, flg, 0);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/** diameter_of_source for an arc/breath of the given width (arc.c geometry). */
|
|
459
|
+
function arcDiameter(baseDiameter: number, degreesOfArc: number): number {
|
|
460
|
+
let d = baseDiameter;
|
|
461
|
+
if (degreesOfArc < 60) d = Math.trunc((d * 60) / degreesOfArc);
|
|
462
|
+
return d > 25 ? 25 : d;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* effect_handler_ARC (L789): a cone from the caster. PROJECT_ARC | GRID | ITEM |
|
|
467
|
+
* KILL (+PLAY for a monster source). A radius of 0 means no fixed limit
|
|
468
|
+
* (z_info->max_range). The arc's energy source diameter starts at 4 and widens
|
|
469
|
+
* as the cone narrows, so a tight arc dissipates more slowly. degrees_of_arc is
|
|
470
|
+
* clamped to a minimum of 20.
|
|
471
|
+
*/
|
|
472
|
+
export function castArc(
|
|
473
|
+
state: GameState,
|
|
474
|
+
cctx: CastContext,
|
|
475
|
+
source: CastSource,
|
|
476
|
+
target: Loc,
|
|
477
|
+
dam: number,
|
|
478
|
+
typ: number,
|
|
479
|
+
rad: number,
|
|
480
|
+
degreesOfArc: number,
|
|
481
|
+
): boolean {
|
|
482
|
+
let flg = PROJECT.ARC | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
483
|
+
if (source.isMonster) flg |= PROJECT.PLAY;
|
|
484
|
+
const degrees = Math.max(degreesOfArc, 20);
|
|
485
|
+
const r = rad === 0 ? cctx.maxRange : rad;
|
|
486
|
+
const diameter = arcDiameter(4, degrees);
|
|
487
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, r, degrees, diameter);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* effect_handler_BREATH (L681): breathe an element in a cone. Like castArc, but
|
|
492
|
+
* a powerful monster breathes at full strength further out (source diameter
|
|
493
|
+
* 4 -> 6 before the arc-width widening). The damage (breath_dam) and the
|
|
494
|
+
* "You breathe X" message are the caller's (#19); a radius of 0 means
|
|
495
|
+
* z_info->max_range.
|
|
496
|
+
*/
|
|
497
|
+
export function castBreath(
|
|
498
|
+
state: GameState,
|
|
499
|
+
cctx: CastContext,
|
|
500
|
+
source: CastSource,
|
|
501
|
+
target: Loc,
|
|
502
|
+
dam: number,
|
|
503
|
+
typ: number,
|
|
504
|
+
degreesOfArc: number,
|
|
505
|
+
opts: { radius?: number; powerful?: boolean } = {},
|
|
506
|
+
): boolean {
|
|
507
|
+
let flg = PROJECT.ARC | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
508
|
+
if (source.isMonster) flg |= PROJECT.PLAY;
|
|
509
|
+
const degrees = Math.max(degreesOfArc, 20);
|
|
510
|
+
const rad = opts.radius && opts.radius > 0 ? opts.radius : cctx.maxRange;
|
|
511
|
+
/* Powerful monsters breathe at full strength further out. */
|
|
512
|
+
const baseDiameter = opts.powerful ? Math.trunc((4 * 3) / 2) : 4;
|
|
513
|
+
const diameter = arcDiameter(baseDiameter, degrees);
|
|
514
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, rad, degrees, diameter);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* effect_handler_SHORT_BEAM (L852): a fixed-length beam. PROJECT_ARC with
|
|
519
|
+
* degrees 0 and a positive radius is normalised to a beam by project(); the
|
|
520
|
+
* source diameter equals the radius so it is full strength for its whole
|
|
521
|
+
* length. The caller applies any player-level radius bonus (rad += lev / other).
|
|
522
|
+
*/
|
|
523
|
+
export function castShortBeam(
|
|
524
|
+
state: GameState,
|
|
525
|
+
cctx: CastContext,
|
|
526
|
+
source: CastSource,
|
|
527
|
+
target: Loc,
|
|
528
|
+
dam: number,
|
|
529
|
+
typ: number,
|
|
530
|
+
rad: number,
|
|
531
|
+
): boolean {
|
|
532
|
+
let flg = PROJECT.ARC | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
533
|
+
if (source.isMonster) flg |= PROJECT.PLAY;
|
|
534
|
+
const diameter = rad > 25 ? 25 : rad;
|
|
535
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, rad, 0, diameter);
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* effect_handler_LASH (L899): a whip crack or spit - a finite-length beam at
|
|
540
|
+
* full strength for its whole length (source diameter = radius), affecting
|
|
541
|
+
* grids, objects, monsters AND the player (monsters lash the player).
|
|
542
|
+
* The caller computes the blow-derived damage and lash element.
|
|
543
|
+
*/
|
|
544
|
+
export function castLash(
|
|
545
|
+
state: GameState,
|
|
546
|
+
cctx: CastContext,
|
|
547
|
+
source: CastSource,
|
|
548
|
+
target: Loc,
|
|
549
|
+
dam: number,
|
|
550
|
+
typ: number,
|
|
551
|
+
rad: number,
|
|
552
|
+
): boolean {
|
|
553
|
+
const flg =
|
|
554
|
+
PROJECT.ARC |
|
|
555
|
+
PROJECT.GRID |
|
|
556
|
+
PROJECT.ITEM |
|
|
557
|
+
PROJECT.KILL |
|
|
558
|
+
PROJECT.PLAY;
|
|
559
|
+
const diameter = rad > 25 ? 25 : rad;
|
|
560
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, rad, 0, diameter);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* effect_handler_SPOT (L545): explode on the player's own grid, hitting the
|
|
565
|
+
* player (PROJECT_PLAY | SELF), grids, objects and monsters. The source
|
|
566
|
+
* diameter equals the radius. The caller applies any player-level radius bonus.
|
|
567
|
+
*/
|
|
568
|
+
export function castSpot(
|
|
569
|
+
state: GameState,
|
|
570
|
+
cctx: CastContext,
|
|
571
|
+
source: CastSource,
|
|
572
|
+
dam: number,
|
|
573
|
+
typ: number,
|
|
574
|
+
rad: number,
|
|
575
|
+
): boolean {
|
|
576
|
+
const flg =
|
|
577
|
+
PROJECT.STOP |
|
|
578
|
+
PROJECT.PLAY |
|
|
579
|
+
PROJECT.GRID |
|
|
580
|
+
PROJECT.ITEM |
|
|
581
|
+
PROJECT.KILL |
|
|
582
|
+
PROJECT.SELF;
|
|
583
|
+
return castProjection(state, cctx, source, state.actor.grid, dam, typ, flg, rad, 0, rad);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* effect_handler_SPHERE (L571): a ball from the player's grid with an explicit
|
|
588
|
+
* source diameter (full strength out to that diameter). Affects grids, objects
|
|
589
|
+
* and monsters, but not the player.
|
|
590
|
+
*/
|
|
591
|
+
export function castSphere(
|
|
592
|
+
state: GameState,
|
|
593
|
+
cctx: CastContext,
|
|
594
|
+
source: CastSource,
|
|
595
|
+
dam: number,
|
|
596
|
+
typ: number,
|
|
597
|
+
rad: number,
|
|
598
|
+
diameterOfSource: number,
|
|
599
|
+
): boolean {
|
|
600
|
+
const flg = PROJECT.STOP | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
601
|
+
return castProjection(
|
|
602
|
+
state,
|
|
603
|
+
cctx,
|
|
604
|
+
source,
|
|
605
|
+
state.actor.grid,
|
|
606
|
+
dam,
|
|
607
|
+
typ,
|
|
608
|
+
flg,
|
|
609
|
+
rad,
|
|
610
|
+
0,
|
|
611
|
+
diameterOfSource,
|
|
612
|
+
);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* effect_handler_STRIKE (L1001): drop a ball on the target from above
|
|
617
|
+
* (PROJECT_JUMP, no travel path). Affects grids, objects and monsters.
|
|
618
|
+
*/
|
|
619
|
+
export function castStrike(
|
|
620
|
+
state: GameState,
|
|
621
|
+
cctx: CastContext,
|
|
622
|
+
source: CastSource,
|
|
623
|
+
target: Loc,
|
|
624
|
+
dam: number,
|
|
625
|
+
typ: number,
|
|
626
|
+
rad: number,
|
|
627
|
+
): boolean {
|
|
628
|
+
const flg = PROJECT.JUMP | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
629
|
+
return castProjection(state, cctx, source, target, dam, typ, flg, rad);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* effect_handler_STAR (L1032): a beam in each of the eight compass directions
|
|
634
|
+
* from the player. Affects grids and monsters. Returns whether any beam was
|
|
635
|
+
* noticed.
|
|
636
|
+
*/
|
|
637
|
+
export function castStar(
|
|
638
|
+
state: GameState,
|
|
639
|
+
cctx: CastContext,
|
|
640
|
+
source: CastSource,
|
|
641
|
+
dam: number,
|
|
642
|
+
typ: number,
|
|
643
|
+
): boolean {
|
|
644
|
+
const flg = PROJECT.THRU | PROJECT.BEAM | PROJECT.GRID | PROJECT.KILL;
|
|
645
|
+
/* Describe unless blind (effect-handler-attack.c:1041). */
|
|
646
|
+
if (!(cctx.playerActor.timed[TMD.BLIND]! > 0)) {
|
|
647
|
+
cctx.worldEnv?.msg?.("Light shoots in all directions!");
|
|
648
|
+
}
|
|
649
|
+
let notice = false;
|
|
650
|
+
for (const off of DDGRID_DDD) {
|
|
651
|
+
const target = locSum(state.actor.grid, off);
|
|
652
|
+
if (castProjection(state, cctx, source, target, dam, typ, flg, 0)) notice = true;
|
|
653
|
+
}
|
|
654
|
+
return notice;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* effect_handler_STAR_BALL (L1062): a ball in each of the eight compass
|
|
659
|
+
* directions from the player. Affects grids, objects and monsters.
|
|
660
|
+
*/
|
|
661
|
+
export function castStarBall(
|
|
662
|
+
state: GameState,
|
|
663
|
+
cctx: CastContext,
|
|
664
|
+
source: CastSource,
|
|
665
|
+
dam: number,
|
|
666
|
+
typ: number,
|
|
667
|
+
rad: number,
|
|
668
|
+
): boolean {
|
|
669
|
+
const flg =
|
|
670
|
+
PROJECT.STOP | PROJECT.THRU | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
671
|
+
let notice = false;
|
|
672
|
+
for (const off of DDGRID_DDD) {
|
|
673
|
+
const target = locSum(state.actor.grid, off);
|
|
674
|
+
if (castProjection(state, cctx, source, target, dam, typ, flg, rad)) notice = true;
|
|
675
|
+
}
|
|
676
|
+
return notice;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* project_touch (L112): a radius-1 (or given) ball centred on the player,
|
|
681
|
+
* affecting grids, objects and monsters but hidden from bolt visuals
|
|
682
|
+
* (PROJECT_HIDE). PROJECT_AWARE is set when the player is aware of the effect.
|
|
683
|
+
* The monster-source decoy / target-monster branches of effect_handler_TOUCH
|
|
684
|
+
* are deferred (#19); this is the base player-centred touch.
|
|
685
|
+
*/
|
|
686
|
+
export function castTouch(
|
|
687
|
+
state: GameState,
|
|
688
|
+
cctx: CastContext,
|
|
689
|
+
source: CastSource,
|
|
690
|
+
dam: number,
|
|
691
|
+
typ: number,
|
|
692
|
+
rad: number,
|
|
693
|
+
aware: boolean,
|
|
694
|
+
): boolean {
|
|
695
|
+
let flg =
|
|
696
|
+
PROJECT.GRID | PROJECT.KILL | PROJECT.HIDE | PROJECT.ITEM | PROJECT.THRU;
|
|
697
|
+
if (aware) flg |= PROJECT.AWARE;
|
|
698
|
+
const r = rad > 0 ? rad : 1;
|
|
699
|
+
return castProjection(state, cctx, source, state.actor.grid, dam, typ, flg, r);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* effect_handler_SWARM (L974): fire `num` non-jumping balls at the same target
|
|
704
|
+
* (targeting an absolute grid so a monster's death does not move the aim).
|
|
705
|
+
* Always player-sourced. Returns whether any shot was noticed.
|
|
706
|
+
*/
|
|
707
|
+
export function castSwarm(
|
|
708
|
+
state: GameState,
|
|
709
|
+
cctx: CastContext,
|
|
710
|
+
source: CastSource,
|
|
711
|
+
target: Loc,
|
|
712
|
+
dam: number,
|
|
713
|
+
typ: number,
|
|
714
|
+
rad: number,
|
|
715
|
+
num: number,
|
|
716
|
+
): boolean {
|
|
717
|
+
const flg =
|
|
718
|
+
PROJECT.THRU | PROJECT.STOP | PROJECT.GRID | PROJECT.ITEM | PROJECT.KILL;
|
|
719
|
+
let notice = false;
|
|
720
|
+
for (let n = num; n > 0; n--) {
|
|
721
|
+
if (castProjection(state, cctx, source, target, dam, typ, flg, rad)) notice = true;
|
|
722
|
+
}
|
|
723
|
+
return notice;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* effect_handler_PROJECT_LOS (L1088): apply a jump projection to every monster
|
|
728
|
+
* in line of sight of the origin. The projection source is always the player
|
|
729
|
+
* (damage is attributed to them), exactly as upstream. `excludeMonster` is the
|
|
730
|
+
* currently-acting monster (cave->mon_current), skipped so a monster casting
|
|
731
|
+
* this does not hit itself; `originGrid` defaults to the player's grid.
|
|
732
|
+
*/
|
|
733
|
+
export function castProjectLos(
|
|
734
|
+
state: GameState,
|
|
735
|
+
cctx: CastContext,
|
|
736
|
+
source: CastSource,
|
|
737
|
+
dam: number,
|
|
738
|
+
typ: number,
|
|
739
|
+
opts: {
|
|
740
|
+
originGrid?: Loc;
|
|
741
|
+
excludeMonster?: number;
|
|
742
|
+
useView?: boolean;
|
|
743
|
+
aware?: boolean;
|
|
744
|
+
} = {},
|
|
745
|
+
): boolean {
|
|
746
|
+
/* PROJECT_LOS_AWARE (effect-handler-attack.c:1125-1159) adds PROJECT_AWARE
|
|
747
|
+
when the caster is aware and gates on square_isview (the player's field of
|
|
748
|
+
view) instead of los() from the origin. */
|
|
749
|
+
let flg = PROJECT.JUMP | PROJECT.KILL | PROJECT.HIDE;
|
|
750
|
+
if (opts.aware) flg |= PROJECT.AWARE;
|
|
751
|
+
const originGrid = opts.originGrid ?? state.actor.grid;
|
|
752
|
+
const exclude = opts.excludeMonster ?? 0;
|
|
753
|
+
let notice = false;
|
|
754
|
+
const max = monsterMax(state);
|
|
755
|
+
for (let i = 1; i < max; i++) {
|
|
756
|
+
const mon = state.monsters[i];
|
|
757
|
+
if (!mon) continue;
|
|
758
|
+
if (i === exclude) continue;
|
|
759
|
+
const visible = opts.useView
|
|
760
|
+
? squareIsView(state.chunk, mon.grid)
|
|
761
|
+
: los(state.chunk, originGrid, mon.grid);
|
|
762
|
+
if (!visible) continue;
|
|
763
|
+
if (castProjection(state, cctx, source, mon.grid, dam, typ, flg, 0)) notice = true;
|
|
764
|
+
}
|
|
765
|
+
return notice;
|
|
766
|
+
}
|