@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,402 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player melee attacks, ported from reference/src/player-attack.c (Angband
|
|
3
|
+
* 4.2.6): chance_of_melee_hit(_base), melee_damage, py_attack_real and the
|
|
4
|
+
* py_attack blow loop. Standard (non-O) combat only.
|
|
5
|
+
*
|
|
6
|
+
* The upstream `struct player` carries a computed `struct player_state`
|
|
7
|
+
* (calc_bonuses) with to_h/to_d/ac/num_blows/skills/stat_ind; the port's
|
|
8
|
+
* Player does not yet compute that (player/calcs.ts defers it). Combat
|
|
9
|
+
* therefore takes an explicit PlayerCombatState alongside the Player, exactly
|
|
10
|
+
* as upstream separates `p` from `p->state`. num_blows is likewise injected.
|
|
11
|
+
*
|
|
12
|
+
* Knowledge / learning side effects (equip_learn_on_melee_attack,
|
|
13
|
+
* learn_brand_slay_from_melee) are wired at the GAME layer around pyAttack
|
|
14
|
+
* (game/player-turn.ts, game/cave-cmd.ts), keeping this module pure combat
|
|
15
|
+
* math; see obj/knowledge.ts and parity/ledger/obj-knowledge.yaml.
|
|
16
|
+
*
|
|
17
|
+
* Damage now routes through the shared mon_take_hit primitive (mon/take-hit.ts)
|
|
18
|
+
* so a blow generates monster fear (gap 2.4); the full py_attack side-effect
|
|
19
|
+
* suite (gap 2.5) - blow_side_effects (TMD_ATT_CONF), the vampiric drain
|
|
20
|
+
* (TMD_ATT_VAMP), OF_IMPACT earthquakes, bloodlust over-exertion, the
|
|
21
|
+
* shapechange verb, splash, shield bash and the PF_COMBAT_REGEN mana reward -
|
|
22
|
+
* is interleaved at the faithful RNG points via optional MeleeEffectHooks. A
|
|
23
|
+
* caller supplying no hooks (e.g. the effect handlers) still rolls fear but
|
|
24
|
+
* skips the state-mutating side effects, exactly as those simplified paths do.
|
|
25
|
+
*
|
|
26
|
+
* DEFERRED (ledgered in parity/ledger/combat-melee.yaml):
|
|
27
|
+
* - Message text/formatting (the combat code returns the HitType key only).
|
|
28
|
+
*
|
|
29
|
+
* O-combat (birth_percent_damage) IS ported: oMeleeDamage / o_critical_melee,
|
|
30
|
+
* gated in pyAttackReal at the same point upstream branches (player-attack.c
|
|
31
|
+
* L803/L811/L826). With the option off the path is byte-identical to standard.
|
|
32
|
+
*/
|
|
33
|
+
import { objectWeightOne } from "../obj/object.js";
|
|
34
|
+
import { MON_TMD } from "../generated/index.js";
|
|
35
|
+
import { monsterIsLiving } from "../mon/predicate.js";
|
|
36
|
+
import { monTakeHit, monsterWake } from "../mon/take-hit.js";
|
|
37
|
+
import { MON_TMD_FLG_NOTIFY, monClearTimed } from "../mon/timed.js";
|
|
38
|
+
import { SKILL } from "../player/types.js";
|
|
39
|
+
import { adj_dex_th, adj_str_td } from "../player/calcs.js";
|
|
40
|
+
import { BTH_PLUS_ADJ, applyDeadliness, criticalMelee, oCriticalMelee, testHit, } from "./hit.js";
|
|
41
|
+
import { getMonsterBrandMultiplier, improveAttackModifier, objectToDam, objectToHit, } from "./brand-slay.js";
|
|
42
|
+
function skill(state, idx) {
|
|
43
|
+
return state.skills[idx] ?? 0;
|
|
44
|
+
}
|
|
45
|
+
function critActor(p, state) {
|
|
46
|
+
return {
|
|
47
|
+
lev: p.lev,
|
|
48
|
+
toH: state.toH,
|
|
49
|
+
meleeSkill: skill(state, SKILL.TO_HIT_MELEE),
|
|
50
|
+
bowSkill: skill(state, SKILL.TO_HIT_BOW),
|
|
51
|
+
throwSkill: skill(state, SKILL.TO_HIT_THROW),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* chance_of_melee_hit_base: the player's melee to-hit before the target.
|
|
56
|
+
*/
|
|
57
|
+
export function chanceOfMeleeHitBase(state, weapon) {
|
|
58
|
+
const bonus = state.toH + (weapon ? objectToHit(weapon) : 0) + (state.blessWield ? 2 : 0);
|
|
59
|
+
return skill(state, SKILL.TO_HIT_MELEE) + bonus * BTH_PLUS_ADJ;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* chance_of_melee_hit: to-hit against a specific monster (half if unseen).
|
|
63
|
+
*/
|
|
64
|
+
export function chanceOfMeleeHit(state, weapon, monVisible) {
|
|
65
|
+
const chance = chanceOfMeleeHitBase(state, weapon);
|
|
66
|
+
return monVisible ? chance : Math.trunc(chance / 2);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* melee_damage: base weapon dice, times the best slay or brand multiplier,
|
|
70
|
+
* plus the weapon's to-dam. Standard (non-O) combat.
|
|
71
|
+
*/
|
|
72
|
+
export function meleeDamage(rng, mon, weapon, brand, slay, brands, slays) {
|
|
73
|
+
let dmg = weapon ? rng.damroll(weapon.dd, weapon.ds) : 1;
|
|
74
|
+
if (slay) {
|
|
75
|
+
dmg *= slays[slay].multiplier;
|
|
76
|
+
}
|
|
77
|
+
else if (brand) {
|
|
78
|
+
dmg *= getMonsterBrandMultiplier(mon, brands[brand], false);
|
|
79
|
+
}
|
|
80
|
+
if (weapon)
|
|
81
|
+
dmg += objectToDam(weapon);
|
|
82
|
+
return dmg;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* o_melee_damage (player-attack.c L501): the birth_percent_damage melee path.
|
|
86
|
+
* Deadliness and the slay/brand o_multiplier add extra SIDES to the damage
|
|
87
|
+
* dice; criticals add extra DICE. Unlike the standard path, the player's
|
|
88
|
+
* to-dam (player_damage_bonus) is folded in here via deadliness, so the caller
|
|
89
|
+
* must NOT add state.toD afterwards (upstream skips it under the option gate).
|
|
90
|
+
*
|
|
91
|
+
* RNG order, matching upstream exactly:
|
|
92
|
+
* 1. randint0(10000) - the fractional-sides roll (drawn even when unarmed).
|
|
93
|
+
* 2. (weapon only) o_critical_melee: randint1(chance_den) crit test, then on
|
|
94
|
+
* a crit the one_in_ level walk.
|
|
95
|
+
* 3. damroll(dice, sides).
|
|
96
|
+
*/
|
|
97
|
+
export function oMeleeDamage(rng, state, mon, weapon, brand, slay, brands, slays) {
|
|
98
|
+
let dice = weapon ? weapon.dd : 1;
|
|
99
|
+
let add = 0;
|
|
100
|
+
/* Average value of a single damage die, x10. */
|
|
101
|
+
let dieAverage = Math.trunc((10 * ((weapon ? weapon.ds : 1) + 1)) / 2);
|
|
102
|
+
/* Slays/brands inflate the average (10x) and contribute a flat add. Melee
|
|
103
|
+
* prefers a slay over a brand (player-attack.c L512: `if (s) ... else if`). */
|
|
104
|
+
if (slay) {
|
|
105
|
+
const oMult = slays[slay].oMultiplier;
|
|
106
|
+
dieAverage *= oMult;
|
|
107
|
+
add = oMult - 10;
|
|
108
|
+
}
|
|
109
|
+
else if (brand) {
|
|
110
|
+
const bmult = getMonsterBrandMultiplier(mon, brands[brand], true);
|
|
111
|
+
dieAverage *= bmult;
|
|
112
|
+
add = bmult - 10;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
dieAverage *= 10;
|
|
116
|
+
}
|
|
117
|
+
/* Apply deadliness (x100) from to_d + weapon to-dam. */
|
|
118
|
+
const deadliness = state.toD + (weapon ? objectToDam(weapon) : 0);
|
|
119
|
+
dieAverage = applyDeadliness(dieAverage, Math.min(deadliness, 150));
|
|
120
|
+
/* Sides per die, with a fractional-sides roll. */
|
|
121
|
+
let sides = 2 * dieAverage - 10000;
|
|
122
|
+
const extra = rng.randint0(10000) < sides % 10000;
|
|
123
|
+
sides = Math.trunc(sides / 10000);
|
|
124
|
+
sides += extra ? 1 : 0;
|
|
125
|
+
/* Criticals add dice (excluded for unarmed; upstream leaves msg at MSG_HIT). */
|
|
126
|
+
let msg = "HIT";
|
|
127
|
+
if (weapon) {
|
|
128
|
+
const crit = oCriticalMelee(rng, chanceOfMeleeHitBase(state, weapon), mon);
|
|
129
|
+
dice += crit.addDice;
|
|
130
|
+
msg = crit.msg;
|
|
131
|
+
}
|
|
132
|
+
let dmg = rng.damroll(dice, sides);
|
|
133
|
+
dmg += add;
|
|
134
|
+
return { damage: dmg, msg };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* py_attack_real: a single melee blow against the monster (player-attack.c
|
|
138
|
+
* L717). Mutates mon.hp on a damaging hit (through mon_take_hit, which also
|
|
139
|
+
* rolls fear), and interleaves the blow side effects via opts.hooks at the
|
|
140
|
+
* faithful RNG points. Returns the blow outcome; blow.monsterDied is the
|
|
141
|
+
* upstream `stop` value and blow.fear is mon_take_hit's *fear out-param.
|
|
142
|
+
*/
|
|
143
|
+
export function pyAttackReal(rng, p, state, weapon, mon, brands, slays, opts = {}) {
|
|
144
|
+
const monVisible = opts.monVisible ?? true;
|
|
145
|
+
const h = opts.hooks;
|
|
146
|
+
/* An afraid player cannot attack (player-attack.c L752). */
|
|
147
|
+
if (opts.afraid) {
|
|
148
|
+
return {
|
|
149
|
+
hit: false, damage: 0, msg: "MISS", verb: "afraid",
|
|
150
|
+
brand: 0, slay: 0, monsterDied: false, stopAttack: false, fear: false,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/* Disturb the monster: monster_wake(mon, false, 100) + clear any Hold
|
|
154
|
+
* (player-attack.c L759-760). Draws randint0(100); mon_take_hit's own
|
|
155
|
+
* non-fatal wake later re-draws, exactly as upstream. */
|
|
156
|
+
monsterWake(rng, mon, false, 100);
|
|
157
|
+
monClearTimed(rng, mon, MON_TMD.HOLD, MON_TMD_FLG_NOTIFY);
|
|
158
|
+
const th = h?.takeHit;
|
|
159
|
+
/* See if the player hit. */
|
|
160
|
+
const success = testHit(rng, chanceOfMeleeHit(state, weapon, monVisible), mon.race.ac);
|
|
161
|
+
if (!success) {
|
|
162
|
+
/* Small chance of bloodlust side-effects on a miss (player-attack.c L770). */
|
|
163
|
+
if (h?.bloodlust && rng.oneIn(50))
|
|
164
|
+
h.overExertScramble?.();
|
|
165
|
+
return {
|
|
166
|
+
hit: false, damage: 0, msg: "MISS", verb: weapon ? "hit" : "punch",
|
|
167
|
+
brand: 0, slay: 0, monsterDied: false, stopAttack: false, fear: false,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const weight = weapon ? objectWeightOne(weapon) : 0;
|
|
171
|
+
const oCombat = opts.percentDamage ?? false;
|
|
172
|
+
/* Best attack from all slays or brands on all non-launcher equipment.
|
|
173
|
+
* improve_attack_modifier reads birth_percent_damage internally to pick the
|
|
174
|
+
* comparison multiplier, so the O flag is threaded here too (no RNG). */
|
|
175
|
+
const mod = { brand: 0, slay: 0, verb: weapon ? "hit" : "punch" };
|
|
176
|
+
for (const off of opts.offhand ?? []) {
|
|
177
|
+
improveAttackModifier(off, mon, brands, slays, mod, false, oCombat);
|
|
178
|
+
}
|
|
179
|
+
if (weapon) {
|
|
180
|
+
improveAttackModifier(weapon, mon, brands, slays, mod, false, oCombat);
|
|
181
|
+
}
|
|
182
|
+
/* improve_attack_modifier(p, NULL, ...) for temporary brands/slays. */
|
|
183
|
+
improveAttackModifier(null, mon, brands, slays, mod, false, oCombat, h?.temp);
|
|
184
|
+
/* Get the damage. The option gate matches upstream player-attack.c
|
|
185
|
+
* L803/L811/L826: the standard branch computes base damage, criticals, then
|
|
186
|
+
* adds player_damage_bonus; the O branch folds all of that into oMeleeDamage
|
|
187
|
+
* (to_d enters via deadliness) and skips the trailing state.toD. */
|
|
188
|
+
let dmg;
|
|
189
|
+
let msg;
|
|
190
|
+
if (!oCombat) {
|
|
191
|
+
dmg = meleeDamage(rng, mon, weapon, mod.brand, mod.slay, brands, slays);
|
|
192
|
+
msg = "HIT";
|
|
193
|
+
if (weapon) {
|
|
194
|
+
const crit = criticalMelee(rng, critActor(p, state), mon, weight, objectToHit(weapon), dmg);
|
|
195
|
+
dmg = crit.damage;
|
|
196
|
+
msg = crit.msg;
|
|
197
|
+
}
|
|
198
|
+
/* Apply the player damage bonus (player_damage_bonus = state->to_d). */
|
|
199
|
+
dmg += state.toD;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
const o = oMeleeDamage(rng, state, mon, weapon, mod.brand, mod.slay, brands, slays);
|
|
203
|
+
dmg = o.damage;
|
|
204
|
+
msg = o.msg;
|
|
205
|
+
}
|
|
206
|
+
/* Splash damage and earthquakes (player-attack.c L814): splash is computed
|
|
207
|
+
* upstream (weight * dmg / 100) but blow_after_effects ignores its splash
|
|
208
|
+
* parameter - an upstream quirk, so nothing to apply. do_quake needs
|
|
209
|
+
* OF_IMPACT and dmg > 50, and learns the flag immediately (L818). */
|
|
210
|
+
const doQuake = Boolean(h?.impact) && dmg > 50;
|
|
211
|
+
if (doQuake)
|
|
212
|
+
h?.learnImpact?.();
|
|
213
|
+
/* Substitute shape-specific blows for shapechanged players (L830): a random
|
|
214
|
+
* shape blow verb replaces the attack verb (drawn even at zero damage). */
|
|
215
|
+
if (h?.shapeBlows && h.shapeBlows.length > 0) {
|
|
216
|
+
mod.verb = h.shapeBlows[rng.randint0(h.shapeBlows.length)];
|
|
217
|
+
}
|
|
218
|
+
/* No negative damage; change verb if no damage done. */
|
|
219
|
+
if (dmg <= 0) {
|
|
220
|
+
dmg = 0;
|
|
221
|
+
msg = "MISS";
|
|
222
|
+
mod.verb = "fail to harm";
|
|
223
|
+
}
|
|
224
|
+
/* Pre-damage side effects: blow_side_effects (player-attack.c L864). The
|
|
225
|
+
* confusion brand clears itself and confuses the monster. */
|
|
226
|
+
if (h?.attConf) {
|
|
227
|
+
h.clearAttConf?.();
|
|
228
|
+
/* mon_inc_timed(mon, MON_TMD_CONF, 10 + randint0(p->lev) / 10, NOTIFY). */
|
|
229
|
+
const dur = 10 + Math.trunc(rng.randint0(p.lev) / 10);
|
|
230
|
+
h.confuseMonster?.(mon, dur);
|
|
231
|
+
}
|
|
232
|
+
/* Damage, check for hp drain, fear and death (player-attack.c L867). */
|
|
233
|
+
const drain = Math.min(mon.hp, dmg);
|
|
234
|
+
const res = monTakeHit(rng, mon, dmg, null, th ?? {});
|
|
235
|
+
const died = res.died;
|
|
236
|
+
let stop = died;
|
|
237
|
+
let fear = res.fear;
|
|
238
|
+
/* Small chance of bloodlust side-effects on a hit (player-attack.c L871). */
|
|
239
|
+
if (h?.bloodlust && rng.oneIn(50))
|
|
240
|
+
h.overExertCon?.();
|
|
241
|
+
/* Vampiric drain: heal by the damage drained if the monster lives (L877). */
|
|
242
|
+
if (!stop && h?.attVamp && monsterIsLiving(mon)) {
|
|
243
|
+
h.healPlayer?.(drain);
|
|
244
|
+
}
|
|
245
|
+
/* A dead monster is not frightened (player-attack.c L883). */
|
|
246
|
+
if (stop)
|
|
247
|
+
fear = false;
|
|
248
|
+
/* Post-damage effects: blow_after_effects earthquake (player-attack.c L887). */
|
|
249
|
+
if (doQuake && h?.earthquake) {
|
|
250
|
+
h.earthquake();
|
|
251
|
+
/* Monster may be dead or moved by the quake. */
|
|
252
|
+
if (h.monsterGone?.() ?? false)
|
|
253
|
+
stop = true;
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
hit: true,
|
|
257
|
+
damage: dmg,
|
|
258
|
+
msg,
|
|
259
|
+
verb: mod.verb,
|
|
260
|
+
brand: mod.brand,
|
|
261
|
+
slay: mod.slay,
|
|
262
|
+
monsterDied: died,
|
|
263
|
+
stopAttack: stop,
|
|
264
|
+
fear,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* attempt_shield_bash (player-attack.c L897): before the blows, a shield-bash
|
|
269
|
+
* character may slam the monster with the shield - damage, stun/confusion
|
|
270
|
+
* rolls, and a possible stumble that costs part of the turn. Duration rolls
|
|
271
|
+
* for stun/confusion are drawn whenever their condition trips, even if the
|
|
272
|
+
* caller supplies no monster-timed hook, keeping the RNG stream faithful.
|
|
273
|
+
*/
|
|
274
|
+
function attemptShieldBash(rng, p, state, weapon, mon, deps, takeHit, moveEnergy) {
|
|
275
|
+
const none = { died: false, fear: false, energyLost: 0 };
|
|
276
|
+
const shield = deps.shield;
|
|
277
|
+
const nblows = Math.trunc(state.numBlows / 100);
|
|
278
|
+
/* Bashing chance depends on melee skill, DEX, and a level bonus. */
|
|
279
|
+
let bashChance = Math.trunc(skill(state, SKILL.TO_HIT_MELEE) / 8) +
|
|
280
|
+
Math.trunc((adj_dex_th[deps.dexInd] ?? 0) / 2);
|
|
281
|
+
/* No shield, no bash. */
|
|
282
|
+
if (!shield)
|
|
283
|
+
return none;
|
|
284
|
+
/* Monster is too pathetic, don't bother. */
|
|
285
|
+
if (mon.race.level < Math.trunc(p.lev / 2))
|
|
286
|
+
return none;
|
|
287
|
+
/* Players bash more often when they see a real need. */
|
|
288
|
+
if (!weapon) {
|
|
289
|
+
/* Unarmed... */
|
|
290
|
+
bashChance *= 4;
|
|
291
|
+
}
|
|
292
|
+
else if (weapon.dd * weapon.ds * nblows < shield.dd * shield.ds * 3) {
|
|
293
|
+
/* ... or armed with a puny weapon. */
|
|
294
|
+
bashChance *= 2;
|
|
295
|
+
}
|
|
296
|
+
/* Try to get in a shield bash. */
|
|
297
|
+
if (bashChance <= rng.randint0(200 + mon.race.level)) {
|
|
298
|
+
return none;
|
|
299
|
+
}
|
|
300
|
+
/* Calculate attack quality, a mix of momentum and accuracy. */
|
|
301
|
+
const bashQuality = Math.trunc(skill(state, SKILL.TO_HIT_MELEE) / 4) +
|
|
302
|
+
Math.trunc(deps.playerWt / 8) +
|
|
303
|
+
Math.trunc(deps.totalWeight / 80) +
|
|
304
|
+
Math.trunc(objectWeightOne(shield) / 2);
|
|
305
|
+
/* Calculate damage. Big shields are deadly. */
|
|
306
|
+
let bashDam = rng.damroll(shield.dd, shield.ds);
|
|
307
|
+
/* Multiply by quality and experience factors. */
|
|
308
|
+
bashDam *= Math.trunc(bashQuality / 40) + Math.trunc(p.lev / 14);
|
|
309
|
+
/* Strength bonus. */
|
|
310
|
+
bashDam += adj_str_td[deps.strInd] ?? 0;
|
|
311
|
+
/* Paranoia. */
|
|
312
|
+
if (bashDam <= 0)
|
|
313
|
+
return none;
|
|
314
|
+
bashDam = Math.min(bashDam, 125);
|
|
315
|
+
deps.msg?.(deps.showDamage
|
|
316
|
+
? `You get in a shield bash! (${bashDam})`
|
|
317
|
+
: "You get in a shield bash!");
|
|
318
|
+
/* Encourage the player to keep wearing that heavy shield. */
|
|
319
|
+
if (rng.randint1(bashDam) > 30 + rng.randint1(Math.trunc(bashDam / 2))) {
|
|
320
|
+
deps.msg?.("WHAMM!");
|
|
321
|
+
}
|
|
322
|
+
/* Damage, check for fear and death. */
|
|
323
|
+
const res = monTakeHit(rng, mon, bashDam, null, takeHit);
|
|
324
|
+
if (res.died)
|
|
325
|
+
return { died: true, fear: false, energyLost: 0 };
|
|
326
|
+
const fear = res.fear;
|
|
327
|
+
/* Stunning (duration drawn whenever the condition trips). */
|
|
328
|
+
if (bashQuality + p.lev > rng.randint1(200 + mon.race.level * 8)) {
|
|
329
|
+
const dur = rng.randint0(Math.trunc(p.lev / 5)) + 4;
|
|
330
|
+
deps.stunMonster?.(mon, dur);
|
|
331
|
+
}
|
|
332
|
+
/* Confusion. */
|
|
333
|
+
if (bashQuality + p.lev > rng.randint1(300 + mon.race.level * 12)) {
|
|
334
|
+
const dur = rng.randint0(Math.trunc(p.lev / 5)) + 4;
|
|
335
|
+
deps.confuseMonster?.(mon, dur);
|
|
336
|
+
}
|
|
337
|
+
/* The player will sometimes stumble. */
|
|
338
|
+
let energyLost = 0;
|
|
339
|
+
if (35 + (adj_dex_th[deps.dexInd] ?? 0) < rng.randint1(60)) {
|
|
340
|
+
const lost = rng.randint1(50) + 25;
|
|
341
|
+
/* Lose 26-75% of a turn due to stumbling after shield bash. */
|
|
342
|
+
deps.msg?.("You stumble!");
|
|
343
|
+
energyLost = Math.trunc((lost * moveEnergy) / 100);
|
|
344
|
+
}
|
|
345
|
+
return { died: false, fear, energyLost };
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* py_attack (player-attack.c L988): land blows until the next blow would
|
|
349
|
+
* exceed the energy available for a single turn, or the monster dies.
|
|
350
|
+
* blow_energy = 100 * move_energy / num_blows; energy defaults to a full
|
|
351
|
+
* turn's worth. Runs the PF_COMBAT_REGEN mana reward and the shield bash
|
|
352
|
+
* before the blow loop, accumulates the fear flag across blows, and reports
|
|
353
|
+
* the delayed "flees in terror" condition and the energy actually used.
|
|
354
|
+
*/
|
|
355
|
+
export function pyAttack(rng, p, state, weapon, mon, brands, slays, opts = {}) {
|
|
356
|
+
const moveEnergy = opts.moveEnergy ?? 100;
|
|
357
|
+
const availEnergy = Math.min(opts.energy ?? moveEnergy, moveEnergy);
|
|
358
|
+
/* Guard a degenerate num_blows against a zero-energy infinite loop. */
|
|
359
|
+
const blowEnergy = Math.max(1, Math.trunc((100 * moveEnergy) / state.numBlows));
|
|
360
|
+
const h = opts.hooks;
|
|
361
|
+
const monVisible = opts.monVisible ?? true;
|
|
362
|
+
const blows = [];
|
|
363
|
+
let totalDamage = 0;
|
|
364
|
+
let slain = false;
|
|
365
|
+
let fear = false;
|
|
366
|
+
let used = 0;
|
|
367
|
+
/* Reward BGs with 5% of max SPs, min 1/2 point (player-attack.c L1002). */
|
|
368
|
+
h?.combatRegen?.();
|
|
369
|
+
/* Player attempts a shield bash if they can, and if monster is visible and
|
|
370
|
+
* not too pathetic (player-attack.c L1009). */
|
|
371
|
+
if (h?.shieldBash && monVisible) {
|
|
372
|
+
const bash = attemptShieldBash(rng, p, state, weapon, mon, h.shieldBash, h.takeHit ?? {}, moveEnergy);
|
|
373
|
+
if (bash.died) {
|
|
374
|
+
/* Monster may die: py_attack returns without any blows. */
|
|
375
|
+
return {
|
|
376
|
+
blows, totalDamage, monsterDied: true, monsterFled: false,
|
|
377
|
+
energyUsed: used,
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
fear = fear || bash.fear;
|
|
381
|
+
used += bash.energyLost;
|
|
382
|
+
}
|
|
383
|
+
let died = false;
|
|
384
|
+
while (availEnergy - used >= blowEnergy && !slain) {
|
|
385
|
+
const blow = pyAttackReal(rng, p, state, weapon, mon, brands, slays, opts);
|
|
386
|
+
blows.push(blow);
|
|
387
|
+
totalDamage += blow.damage;
|
|
388
|
+
fear = fear || blow.fear;
|
|
389
|
+
if (blow.monsterDied) {
|
|
390
|
+
died = true;
|
|
391
|
+
/* py_attack_real: if (stop) (*fear) = false clears the shared flag. */
|
|
392
|
+
fear = false;
|
|
393
|
+
}
|
|
394
|
+
if (blow.stopAttack)
|
|
395
|
+
slain = true;
|
|
396
|
+
used += blowEnergy;
|
|
397
|
+
}
|
|
398
|
+
/* Hack - delay fear messages (player-attack.c L1023). */
|
|
399
|
+
const monsterFled = fear && monVisible;
|
|
400
|
+
return { blows, totalDamage, monsterDied: died, monsterFled, energyUsed: used };
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=melee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"melee.js","sourceRoot":"","sources":["../../src/combat/melee.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monster melee attacks against the player, ported from
|
|
3
|
+
* reference/src/mon-attack.c (make_attack_normal, monster_critical, check_hit,
|
|
4
|
+
* chance_of_monster_hit, adjust_dam_armor) and the RBE_ blow-effect handlers
|
|
5
|
+
* in reference/src/mon-blows.c (Angband 4.2.6).
|
|
6
|
+
*
|
|
7
|
+
* The blow loop, to-hit test, monster critical, per-blow damage roll and the
|
|
8
|
+
* cut/stun rolls are ported faithfully. Blow EFFECTS resolve one of two ways:
|
|
9
|
+
*
|
|
10
|
+
* - When a world-touching MonBlowEnv is injected (the live game), every
|
|
11
|
+
* melee_effect_handler_* runs its real consequences inline in the EXACT
|
|
12
|
+
* upstream RNG order: adjust_dam elemental resist rolls (env.elementalDam),
|
|
13
|
+
* inven_damage, player_apply_damage_reduction on the HP dealt, and all the
|
|
14
|
+
* status / stat / exp / theft / disenchant / earthquake / knockback effects.
|
|
15
|
+
* This is the analog of project-player's onSideEffects seam: combat/ stays
|
|
16
|
+
* worldless, and game/mon-side.ts (makeMonBlowEnv) supplies the environment.
|
|
17
|
+
* The unreduced context->damage drives the side-effect math and the cut/stun
|
|
18
|
+
* critical; only the HP actually subtracted goes through damage reduction.
|
|
19
|
+
*
|
|
20
|
+
* - When no env is injected (the worldless harness / unit tests), the effects
|
|
21
|
+
* that need the player timed / resist / inventory / stat systems are recorded
|
|
22
|
+
* as structured BlowSideEffect intents (the "stub log"), exactly as before.
|
|
23
|
+
*
|
|
24
|
+
* Additional per-blow rolls now ported inside the blow loop: the protection
|
|
25
|
+
* from evil repel (randint0(100) drawn when PROTEVIL is up vs an evil monster),
|
|
26
|
+
* the PARALYZE damage=1 pre-clamp, and the "player moved" early-out (a blow that
|
|
27
|
+
* relocates the player via earthquake / knockback skips the remaining blows).
|
|
28
|
+
*
|
|
29
|
+
* DEFERRED (ledgered in parity/ledger/combat-melee.yaml): monster lore /
|
|
30
|
+
* smart-learn, monster-vs-monster melee (monster_attack_monster), react_to_slay
|
|
31
|
+
* blocking a theft (the item is stolen regardless; no RNG impact), and attaching
|
|
32
|
+
* stolen gold/items to the monster's held-object pile (monster_carry, coordinated
|
|
33
|
+
* with the loot-drops gap; the item/gold is still removed from the player and no
|
|
34
|
+
* RNG is drawn by the attach).
|
|
35
|
+
*/
|
|
36
|
+
import type { Rng, RandomValue } from "../rng.js";
|
|
37
|
+
import type { Loc } from "../loc.js";
|
|
38
|
+
import type { Monster } from "../mon/monster.js";
|
|
39
|
+
import type { Player } from "../player/player.js";
|
|
40
|
+
/** A defender's combat AC contribution (upstream p->state.ac + p->state.to_a). */
|
|
41
|
+
export interface DefenderState {
|
|
42
|
+
/** state->ac. */
|
|
43
|
+
ac: number;
|
|
44
|
+
/** state->to_a. */
|
|
45
|
+
toA: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A recorded blow side effect ("stub log"): the intent a fully-modelled
|
|
49
|
+
* player-timed / resist / inventory system would apply. `element` and status
|
|
50
|
+
* `amount` durations use the exact upstream formulas.
|
|
51
|
+
*/
|
|
52
|
+
export type BlowSideEffect = {
|
|
53
|
+
kind: "timed";
|
|
54
|
+
effect: string;
|
|
55
|
+
amount: number;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "drainStat";
|
|
58
|
+
stat: string;
|
|
59
|
+
} | {
|
|
60
|
+
kind: "loseExp";
|
|
61
|
+
holdChance: number;
|
|
62
|
+
amount: number;
|
|
63
|
+
} | {
|
|
64
|
+
kind: "drainCharges";
|
|
65
|
+
} | {
|
|
66
|
+
kind: "eatGold";
|
|
67
|
+
} | {
|
|
68
|
+
kind: "eatItem";
|
|
69
|
+
} | {
|
|
70
|
+
kind: "eatFood";
|
|
71
|
+
} | {
|
|
72
|
+
kind: "eatLight";
|
|
73
|
+
} | {
|
|
74
|
+
kind: "disenchant";
|
|
75
|
+
} | {
|
|
76
|
+
kind: "elemental";
|
|
77
|
+
element: string;
|
|
78
|
+
damage: number;
|
|
79
|
+
} | {
|
|
80
|
+
kind: "earthquake";
|
|
81
|
+
radius: number;
|
|
82
|
+
} | {
|
|
83
|
+
kind: "knockback";
|
|
84
|
+
distance: number;
|
|
85
|
+
};
|
|
86
|
+
/** The outcome of a single monster blow. */
|
|
87
|
+
export interface MonBlow {
|
|
88
|
+
hit: boolean;
|
|
89
|
+
/** RBE_ effect name (e.g. "HURT", "POISON"). */
|
|
90
|
+
effect: string;
|
|
91
|
+
/** RBM_ method name (e.g. "HIT", "CLAW"). */
|
|
92
|
+
method: string;
|
|
93
|
+
/** HP damage actually dealt to the player. */
|
|
94
|
+
damage: number;
|
|
95
|
+
sideEffects: BlowSideEffect[];
|
|
96
|
+
obvious: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** The outcome of a full monster attack (make_attack_normal). */
|
|
99
|
+
export interface MonMeleeAttack {
|
|
100
|
+
/** false only when RF_NEVER_BLOW blocked the attack entirely. */
|
|
101
|
+
attacked: boolean;
|
|
102
|
+
blows: MonBlow[];
|
|
103
|
+
totalDamage: number;
|
|
104
|
+
playerDied: boolean;
|
|
105
|
+
/** Aggregated side-effect intents across all blows. */
|
|
106
|
+
sideEffects: BlowSideEffect[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The world-touching environment a monster blow needs: the analog of
|
|
110
|
+
* project-player's onSideEffects hook. It keeps combat/ worldless - when
|
|
111
|
+
* absent, monMeleeAttack falls back to the stub-log intents. Implemented by
|
|
112
|
+
* game/mon-side.ts (makeMonBlowEnv), bound to the attacking monster.
|
|
113
|
+
*/
|
|
114
|
+
export interface MonBlowEnv {
|
|
115
|
+
/** p->grid, read to detect the "player moved" mid-loop break. */
|
|
116
|
+
playerGrid(): Loc;
|
|
117
|
+
/** player_apply_damage_reduction(p, dam): the HP actually taken. */
|
|
118
|
+
applyReduction(dam: number): number;
|
|
119
|
+
/** take_hit(p, reducedDam, ddesc): subtract HP, set is_dead. */
|
|
120
|
+
takeHit(reducedDam: number): void;
|
|
121
|
+
/** Flush pure-element smart-learn after the complete elemental sequence. */
|
|
122
|
+
finishElemental?: () => void;
|
|
123
|
+
/** p->is_dead after the last takeHit. */
|
|
124
|
+
readonly playerDied: boolean;
|
|
125
|
+
/** msg(): route a blow message to the game's sink. An optional msgt (the
|
|
126
|
+
* blow method's sound channel, e.g. MON_HIT) plays the typed sound. */
|
|
127
|
+
msg(text: string, msgt?: string): void;
|
|
128
|
+
/** monster_desc(mon, MDESC_STANDARD): "The kobold" / "Something", for the
|
|
129
|
+
* per-blow "m_name act." message (drawn once per attack, no RNG). */
|
|
130
|
+
readonly monName: string;
|
|
131
|
+
/** OPT(p, show_damage): append the " (N)" suffix to the blow message. */
|
|
132
|
+
readonly showDamage: boolean;
|
|
133
|
+
/** monster_is_visible(mon): gates the "%s misses you." message (a visible
|
|
134
|
+
* monster's missed blow is announced; an unseen one is silent). */
|
|
135
|
+
readonly monVisible: boolean;
|
|
136
|
+
/** adjust_dam(p, proj, dam, RANDOMISE): elemental damage after resists. */
|
|
137
|
+
elementalDam(proj: number, dam: number): number;
|
|
138
|
+
/** inven_damage(p, elem, cperc): pack casualties from an elemental hit. */
|
|
139
|
+
invenDamage(elem: number, cperc: number): void;
|
|
140
|
+
/** player_resists(p, elem): el_info[elem].res_level > 0. */
|
|
141
|
+
resists(elem: number): boolean;
|
|
142
|
+
/** player_inc_timed(p, tmd, amount, ..., check): returns whether noticed. */
|
|
143
|
+
incTimed(tmd: number, amount: number, check: boolean): boolean;
|
|
144
|
+
/** randint0(100) < p->state.skills[SKILL_SAVE] (the melee saving throw). */
|
|
145
|
+
saveVsSkill(): boolean;
|
|
146
|
+
/** effect_simple(EF_DRAIN_STAT): sustain check then player_stat_dec. */
|
|
147
|
+
drainStat(stat: number): void;
|
|
148
|
+
/** player_of_has(p, OF_HOLD_LIFE). */
|
|
149
|
+
hasHoldLife(): boolean;
|
|
150
|
+
/** melee_effect_experience's HOLD_LIFE gate and player_exp_lose. */
|
|
151
|
+
drainExp(chance: number, drainAmount: number): void;
|
|
152
|
+
/** DRAIN_CHARGES: drain a random charged wand/staff, healing the monster. */
|
|
153
|
+
drainCharges(rlev: number): void;
|
|
154
|
+
/** EAT_GOLD: save-or-steal the player's gold; returns context->blinked. */
|
|
155
|
+
eatGold(): boolean;
|
|
156
|
+
/** EAT_ITEM: save-or-steal a pack item; returns blinked / obvious. */
|
|
157
|
+
eatItem(): {
|
|
158
|
+
blinked: boolean;
|
|
159
|
+
obvious: boolean;
|
|
160
|
+
};
|
|
161
|
+
/** EAT_FOOD: eat a random edible pack item. */
|
|
162
|
+
eatFood(): void;
|
|
163
|
+
/** EAT_LIGHT: EF_DRAIN_LIGHT "250+1d250". */
|
|
164
|
+
eatLight(): void;
|
|
165
|
+
/** EF_DISENCHANT on the player's equipment. */
|
|
166
|
+
disenchant(): void;
|
|
167
|
+
/** EF_EARTHQUAKE centred on the monster, given radius. */
|
|
168
|
+
earthquake(radius: number): void;
|
|
169
|
+
/** thrust_away(monster grid, player grid, dist). */
|
|
170
|
+
thrust(dist: number): void;
|
|
171
|
+
/** Blink the monster away (EF_TELEPORT max_sight*2+5) after the blows. */
|
|
172
|
+
blinkAway(): void;
|
|
173
|
+
}
|
|
174
|
+
/** Options for a monster melee attack. */
|
|
175
|
+
export interface MonMeleeOptions {
|
|
176
|
+
/** monster_is_visible(mon); affects only messaging (DEFERRED). */
|
|
177
|
+
monVisible?: boolean;
|
|
178
|
+
/**
|
|
179
|
+
* The world-touching blow environment (game/mon-side.ts), bound to the
|
|
180
|
+
* attacking monster. When present, blow effects apply for real in upstream
|
|
181
|
+
* RNG order; the `rng` argument MUST be the same stream this env draws from
|
|
182
|
+
* (state.rng), because the env's reused helpers (adjust_dam, inven_damage,
|
|
183
|
+
* ...) draw from it and interleave with this driver's own rolls.
|
|
184
|
+
*/
|
|
185
|
+
env?: MonBlowEnv;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* chance_of_monster_hit_base: a monster's to-hit from race level and the
|
|
189
|
+
* blow's power.
|
|
190
|
+
*/
|
|
191
|
+
export declare function chanceOfMonsterHitBase(level: number, effectPower: number): number;
|
|
192
|
+
/**
|
|
193
|
+
* chance_of_monster_hit: the base value, reduced if the monster is stunned.
|
|
194
|
+
*/
|
|
195
|
+
export declare function chanceOfMonsterHit(mon: Monster, level: number, effectPower: number): number;
|
|
196
|
+
/**
|
|
197
|
+
* check_hit: does an attack with the given to-hit land on the player? Uses the
|
|
198
|
+
* player's total AC (state.ac + state.to_a).
|
|
199
|
+
*/
|
|
200
|
+
export declare function checkHit(rng: Rng, toHit: number, def: DefenderState): boolean;
|
|
201
|
+
/**
|
|
202
|
+
* adjust_dam_armor: physical damage remaining after armor (mon-attack.c).
|
|
203
|
+
*/
|
|
204
|
+
export declare function adjustDamArmor(damage: number, ac: number): number;
|
|
205
|
+
/**
|
|
206
|
+
* monster_critical: the "cut/stun" critical tier of a monster blow. All hits
|
|
207
|
+
* doing >= 95% of the maximum possible (and >= 20, or sometimes N) qualify.
|
|
208
|
+
* Returns a tier 0..(6+extra) used to index the cut/stun amount tables.
|
|
209
|
+
*/
|
|
210
|
+
export declare function monsterCritical(rng: Rng, dice: RandomValue, rlev: number, dam: number): number;
|
|
211
|
+
/**
|
|
212
|
+
* melee_handler_for_blow_effect (mon-blows.c:1191): upstream's name -> handler
|
|
213
|
+
* table, as a list. The two switch statements in this file (resolveBlowEffect
|
|
214
|
+
* for the recording path, resolveBlowEffectLive for the live path) are the
|
|
215
|
+
* handlers themselves; this list is the table's key set, so a test can prove the
|
|
216
|
+
* mapping total against the pack in both directions.
|
|
217
|
+
*
|
|
218
|
+
* Upstream's table has exactly these 30 entries (mon-blows.c:1197-1226) and
|
|
219
|
+
* blow_effects.txt defines exactly the same 30 names, so a NULL handler (which
|
|
220
|
+
* upstream reports as "ERROR: Effect handler not found", mon-attack.c:650/841)
|
|
221
|
+
* is unreachable with vanilla data.
|
|
222
|
+
*/
|
|
223
|
+
export declare const RESOLVED_BLOW_EFFECTS: readonly string[];
|
|
224
|
+
/**
|
|
225
|
+
* make_attack_normal: run all of the monster's blows against the player. When
|
|
226
|
+
* `opts.env` is supplied the blow effects apply for real (HP through
|
|
227
|
+
* player_apply_damage_reduction / take_hit, plus every status / stat / theft /
|
|
228
|
+
* terrain consequence in the exact upstream RNG order); otherwise HP damage is
|
|
229
|
+
* applied to `defender.chp` and the rest is recorded as BlowSideEffect intents.
|
|
230
|
+
* Stops early if the player dies or a blow relocates the player.
|
|
231
|
+
*/
|
|
232
|
+
export declare function monMeleeAttack(rng: Rng, mon: Monster, defender: Player, def: DefenderState, opts?: MonMeleeOptions): MonMeleeAttack;
|
|
233
|
+
//# sourceMappingURL=mon-melee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mon-melee.d.ts","sourceRoot":"","sources":["../../src/combat/mon-melee.ts"],"names":[],"mappings":"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"}
|