@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,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared to-hit and critical-hit machinery, ported VERBATIM from
|
|
3
|
+
* reference/src/player-attack.c and reference/src/mon-attack.c (Angband
|
|
4
|
+
* 4.2.6), with the critical constant tables from
|
|
5
|
+
* reference/lib/gamedata/constants.txt.
|
|
6
|
+
*
|
|
7
|
+
* This module ports the DEFAULT (non-O) combat path: test_hit / hit_chance,
|
|
8
|
+
* the melee/ranged critical chance-and-power formulas, and the critical-level
|
|
9
|
+
* cutoff tables. It also ports the alternative "O-combat" path
|
|
10
|
+
* (birth_percent_damage): o_critical_melee / o_critical_shot, the o-*-critical
|
|
11
|
+
* constants (constants.txt), and apply_deadliness. The O path is a birth
|
|
12
|
+
* option, off by default; oMeleeDamage / oRangedDamage (melee.ts / ranged.ts)
|
|
13
|
+
* consume these behind that gate.
|
|
14
|
+
*
|
|
15
|
+
* All integer arithmetic reproduces C semantics (Math.trunc for the C `/`).
|
|
16
|
+
*/
|
|
17
|
+
import { MON_TMD } from "../generated/index.js";
|
|
18
|
+
/** Adjust BTH per plus-to-hit (player.h BTH_PLUS_ADJ). */
|
|
19
|
+
export const BTH_PLUS_ADJ = 3;
|
|
20
|
+
/** Percentage reduction in accuracy for a stunned combatant (mon-timed.h). */
|
|
21
|
+
export const STUN_HIT_REDUCTION = 25;
|
|
22
|
+
/** Percentage reduction in damage for a stunned combatant (mon-timed.h). */
|
|
23
|
+
export const STUN_DAM_REDUCTION = 25;
|
|
24
|
+
/* ------------------------------------------------------------------ *
|
|
25
|
+
* test_hit / hit_chance (player-attack.c)
|
|
26
|
+
* ------------------------------------------------------------------ */
|
|
27
|
+
const HUNDRED_PCT = 10000;
|
|
28
|
+
const ALWAYS_HIT = 1200;
|
|
29
|
+
const ALWAYS_MISS = 500;
|
|
30
|
+
/**
|
|
31
|
+
* hit_chance: the likelihood of a hit roll succeeding for the given to_hit and
|
|
32
|
+
* ac. Scaled to a denominator of 10,000 to avoid rounding error.
|
|
33
|
+
*
|
|
34
|
+
* Always hit 12% of the time, always miss 5% of the time, floor the to-hit at
|
|
35
|
+
* 9, roll 0..to_hit, and require the roll to reach ac*2/3.
|
|
36
|
+
*/
|
|
37
|
+
export function hitChance(toHit, ac) {
|
|
38
|
+
/* Put a floor on the to_hit */
|
|
39
|
+
const th = Math.max(9, toHit);
|
|
40
|
+
/* Calculate the hit percentage */
|
|
41
|
+
let numerator = Math.max(0, th - Math.trunc((ac * 2) / 3));
|
|
42
|
+
const denominator = th;
|
|
43
|
+
/* Convert the ratio to a scaled percentage */
|
|
44
|
+
numerator = Math.trunc((HUNDRED_PCT * numerator) / denominator);
|
|
45
|
+
/* The calculated rate only applies when the guaranteed hit/miss don't */
|
|
46
|
+
numerator = Math.trunc((numerator * (HUNDRED_PCT - ALWAYS_MISS - ALWAYS_HIT)) / HUNDRED_PCT);
|
|
47
|
+
/* Add in the guaranteed hit */
|
|
48
|
+
numerator += ALWAYS_HIT;
|
|
49
|
+
return { numerator, denominator: HUNDRED_PCT };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* test_hit: determine if a hit roll succeeds against the target AC. Uses the
|
|
53
|
+
* port's random_chance_check (rng.randomChanceCheck), which is the faithful
|
|
54
|
+
* WELL-stream equivalent of upstream random_chance_check.
|
|
55
|
+
*/
|
|
56
|
+
export function testHit(rng, toHit, ac) {
|
|
57
|
+
return rng.randomChanceCheck(hitChance(toHit, ac));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Success percentage (0..100) for the given to_hit and ac, derived from
|
|
61
|
+
* hit_chance. Upstream ui-player.c reports the same ratio (numerator / 100).
|
|
62
|
+
*/
|
|
63
|
+
export function getHitChance(toHit, ac) {
|
|
64
|
+
return Math.trunc(hitChance(toHit, ac).numerator / 100);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* is_debuffed: whether a monster is confused, held, afraid or stunned - any
|
|
68
|
+
* of which makes a critical hit more likely.
|
|
69
|
+
*/
|
|
70
|
+
export function isDebuffed(mon) {
|
|
71
|
+
return ((mon.mTimed[MON_TMD.CONF] ?? 0) > 0 ||
|
|
72
|
+
(mon.mTimed[MON_TMD.HOLD] ?? 0) > 0 ||
|
|
73
|
+
(mon.mTimed[MON_TMD.FEAR] ?? 0) > 0 ||
|
|
74
|
+
(mon.mTimed[MON_TMD.STUN] ?? 0) > 0);
|
|
75
|
+
}
|
|
76
|
+
/** melee-critical chance/power scale factors (constants.txt). */
|
|
77
|
+
export const MELEE_CRIT = {
|
|
78
|
+
debuffToh: 10,
|
|
79
|
+
chanceWeightScl: 1,
|
|
80
|
+
chanceTohScl: 5,
|
|
81
|
+
chanceLevelScl: 0,
|
|
82
|
+
chanceTohSkillScl: 1,
|
|
83
|
+
chanceOffset: -60,
|
|
84
|
+
chanceRange: 5000,
|
|
85
|
+
powerWeightScl: 1,
|
|
86
|
+
powerRandom: 650,
|
|
87
|
+
};
|
|
88
|
+
/** melee-critical-level cutoffs (constants.txt), in file order (head first). */
|
|
89
|
+
export const MELEE_CRIT_LEVELS = [
|
|
90
|
+
{ cutoff: 400, mult: 2, add: 5, msg: "HIT_GOOD" },
|
|
91
|
+
{ cutoff: 700, mult: 2, add: 10, msg: "HIT_GREAT" },
|
|
92
|
+
{ cutoff: 900, mult: 3, add: 15, msg: "HIT_SUPERB" },
|
|
93
|
+
{ cutoff: 1300, mult: 3, add: 20, msg: "HIT_HI_GREAT" },
|
|
94
|
+
{ cutoff: -1, mult: 4, add: 20, msg: "HIT_HI_SUPERB" },
|
|
95
|
+
];
|
|
96
|
+
/** ranged-critical chance/power scale factors (constants.txt). */
|
|
97
|
+
export const RANGED_CRIT = {
|
|
98
|
+
debuffToh: 10,
|
|
99
|
+
chanceWeightScl: 1,
|
|
100
|
+
chanceTohScl: 4,
|
|
101
|
+
chanceLevelScl: 2,
|
|
102
|
+
chanceLaunchedTohSkillScl: 0,
|
|
103
|
+
chanceThrownTohSkillScl: 0,
|
|
104
|
+
chanceOffset: 0,
|
|
105
|
+
chanceRange: 5000,
|
|
106
|
+
powerWeightScl: 1,
|
|
107
|
+
powerRandom: 500,
|
|
108
|
+
};
|
|
109
|
+
/** ranged-critical-level cutoffs (constants.txt), in file order. */
|
|
110
|
+
export const RANGED_CRIT_LEVELS = [
|
|
111
|
+
{ cutoff: 500, mult: 2, add: 5, msg: "HIT_GOOD" },
|
|
112
|
+
{ cutoff: 1000, mult: 2, add: 10, msg: "HIT_GREAT" },
|
|
113
|
+
{ cutoff: -1, mult: 3, add: 15, msg: "HIT_SUPERB" },
|
|
114
|
+
];
|
|
115
|
+
/**
|
|
116
|
+
* Walk the critical-level list for a given power, exactly as the upstream
|
|
117
|
+
* `while (power >= this_l->cutoff && this_l->next) this_l = this_l->next`.
|
|
118
|
+
* The head level is the "below the first cutoff" bucket; each cutoff is the
|
|
119
|
+
* threshold to advance to the next, sharper level; the final entry (cutoff
|
|
120
|
+
* -1) is the catch-all.
|
|
121
|
+
*/
|
|
122
|
+
export function selectCritLevel(power, levels) {
|
|
123
|
+
let i = 0;
|
|
124
|
+
const last = levels.length - 1;
|
|
125
|
+
while (i < last && power >= levels[i].cutoff) {
|
|
126
|
+
i++;
|
|
127
|
+
}
|
|
128
|
+
return levels[i];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* critical_melee: factor weapon weight, total plusses and player level into a
|
|
132
|
+
* chance of a critical, then a power that selects a severity level.
|
|
133
|
+
*
|
|
134
|
+
* NB: in 4.2.6 the melee critical is critical_melee(); earlier releases named
|
|
135
|
+
* the equivalent routine critical_norm(). criticalMelee is the faithful port.
|
|
136
|
+
*/
|
|
137
|
+
export function criticalMelee(rng, actor, mon, weight, plus, dam) {
|
|
138
|
+
let toH = actor.toH + plus;
|
|
139
|
+
if (isDebuffed(mon))
|
|
140
|
+
toH += MELEE_CRIT.debuffToh;
|
|
141
|
+
const chance = MELEE_CRIT.chanceWeightScl * weight +
|
|
142
|
+
MELEE_CRIT.chanceTohScl * toH +
|
|
143
|
+
MELEE_CRIT.chanceLevelScl * actor.lev +
|
|
144
|
+
MELEE_CRIT.chanceTohSkillScl * actor.meleeSkill +
|
|
145
|
+
MELEE_CRIT.chanceOffset;
|
|
146
|
+
if (rng.randint1(MELEE_CRIT.chanceRange) > chance) {
|
|
147
|
+
return { damage: dam, msg: "HIT" };
|
|
148
|
+
}
|
|
149
|
+
const power = MELEE_CRIT.powerWeightScl * weight + rng.randint1(MELEE_CRIT.powerRandom);
|
|
150
|
+
const level = selectCritLevel(power, MELEE_CRIT_LEVELS);
|
|
151
|
+
return { damage: level.add + level.mult * dam, msg: level.msg };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* critical_shot: as critical_melee but for shooting/throwing. `launched` is
|
|
155
|
+
* true for a launcher shot, false for a thrown object. The non-critical
|
|
156
|
+
* message is SHOOT_HIT (not HIT).
|
|
157
|
+
*/
|
|
158
|
+
export function criticalShot(rng, actor, mon, weight, plus, dam, launched) {
|
|
159
|
+
let toH = actor.toH + plus;
|
|
160
|
+
if (isDebuffed(mon))
|
|
161
|
+
toH += RANGED_CRIT.debuffToh;
|
|
162
|
+
let chance = RANGED_CRIT.chanceWeightScl * weight +
|
|
163
|
+
RANGED_CRIT.chanceTohScl * toH +
|
|
164
|
+
RANGED_CRIT.chanceLevelScl * actor.lev +
|
|
165
|
+
RANGED_CRIT.chanceOffset;
|
|
166
|
+
if (launched) {
|
|
167
|
+
chance += RANGED_CRIT.chanceLaunchedTohSkillScl * actor.bowSkill;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
chance += RANGED_CRIT.chanceThrownTohSkillScl * actor.throwSkill;
|
|
171
|
+
}
|
|
172
|
+
if (rng.randint1(RANGED_CRIT.chanceRange) > chance) {
|
|
173
|
+
return { damage: dam, msg: "SHOOT_HIT" };
|
|
174
|
+
}
|
|
175
|
+
const power = RANGED_CRIT.powerWeightScl * weight + rng.randint1(RANGED_CRIT.powerRandom);
|
|
176
|
+
const level = selectCritLevel(power, RANGED_CRIT_LEVELS);
|
|
177
|
+
return { damage: level.add + level.mult * dam, msg: level.msg };
|
|
178
|
+
}
|
|
179
|
+
/** o-melee-critical scale factors (constants.txt). */
|
|
180
|
+
export const O_MELEE_CRIT = {
|
|
181
|
+
debuffToh: 10,
|
|
182
|
+
powerTohScaleNum: 1,
|
|
183
|
+
powerTohScaleDen: 3,
|
|
184
|
+
chancePowerScaleNum: 1,
|
|
185
|
+
chancePowerScaleDen: 1,
|
|
186
|
+
chanceAddDen: 240,
|
|
187
|
+
};
|
|
188
|
+
/** o-melee-critical-level rows (constants.txt), head first. */
|
|
189
|
+
export const O_MELEE_CRIT_LEVELS = [
|
|
190
|
+
{ chance: 40, dice: 5, msg: "HIT_HI_SUPERB" },
|
|
191
|
+
{ chance: 12, dice: 4, msg: "HIT_HI_GREAT" },
|
|
192
|
+
{ chance: 3, dice: 3, msg: "HIT_SUPERB" },
|
|
193
|
+
{ chance: 2, dice: 2, msg: "HIT_GREAT" },
|
|
194
|
+
{ chance: 1, dice: 1, msg: "HIT_GOOD" },
|
|
195
|
+
];
|
|
196
|
+
/** o-ranged-critical scale factors (constants.txt). */
|
|
197
|
+
export const O_RANGED_CRIT = {
|
|
198
|
+
debuffToh: 10,
|
|
199
|
+
powerLaunchedTohScaleNum: 1,
|
|
200
|
+
powerLaunchedTohScaleDen: 1,
|
|
201
|
+
powerThrownTohScaleNum: 3,
|
|
202
|
+
powerThrownTohScaleDen: 2,
|
|
203
|
+
chancePowerScaleNum: 1,
|
|
204
|
+
chancePowerScaleDen: 1,
|
|
205
|
+
chanceAddDen: 360,
|
|
206
|
+
};
|
|
207
|
+
/** o-ranged-critical-level rows (constants.txt), head first. */
|
|
208
|
+
export const O_RANGED_CRIT_LEVELS = [
|
|
209
|
+
{ chance: 50, dice: 3, msg: "HIT_SUPERB" },
|
|
210
|
+
{ chance: 10, dice: 2, msg: "HIT_GREAT" },
|
|
211
|
+
{ chance: 1, dice: 1, msg: "HIT_GOOD" },
|
|
212
|
+
];
|
|
213
|
+
/**
|
|
214
|
+
* Walk the O-critical-level list, exactly as upstream
|
|
215
|
+
* `while (this_l->next && !one_in_(this_l->chance)) this_l = this_l->next;`.
|
|
216
|
+
* Draws one_in_ (a randint0) at each non-terminal level until it stops.
|
|
217
|
+
*/
|
|
218
|
+
function selectOCritLevel(rng, levels) {
|
|
219
|
+
let i = 0;
|
|
220
|
+
const last = levels.length - 1;
|
|
221
|
+
while (i < last && !rng.oneIn(levels[i].chance)) {
|
|
222
|
+
i++;
|
|
223
|
+
}
|
|
224
|
+
const lvl = levels[i];
|
|
225
|
+
return { addDice: lvl.dice, msg: lvl.msg };
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* o_critical_melee (player-attack.c L439): the crit-chance is a rational
|
|
229
|
+
* a*power / (b*power + c); on success, walk the level list for the added dice.
|
|
230
|
+
* `powerBase` is chance_of_melee_hit_base(p, obj) (computed by the caller).
|
|
231
|
+
*
|
|
232
|
+
* RNG: one randint1(chance_den) for the crit test, then (on a crit) the
|
|
233
|
+
* one_in_ level walk. Non-crit returns msg SHOOT_HIT, faithful to upstream.
|
|
234
|
+
*/
|
|
235
|
+
export function oCriticalMelee(rng, powerBase, mon) {
|
|
236
|
+
let power = powerBase;
|
|
237
|
+
if (isDebuffed(mon))
|
|
238
|
+
power += O_MELEE_CRIT.debuffToh;
|
|
239
|
+
power = Math.trunc((power * O_MELEE_CRIT.powerTohScaleNum) / O_MELEE_CRIT.powerTohScaleDen);
|
|
240
|
+
const chanceNum = power * O_MELEE_CRIT.chancePowerScaleNum;
|
|
241
|
+
const chanceDen = power * O_MELEE_CRIT.chancePowerScaleDen + O_MELEE_CRIT.chanceAddDen;
|
|
242
|
+
if (rng.randint1(chanceDen) <= chanceNum) {
|
|
243
|
+
return selectOCritLevel(rng, O_MELEE_CRIT_LEVELS);
|
|
244
|
+
}
|
|
245
|
+
return { addDice: 0, msg: "SHOOT_HIT" };
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* o_critical_shot (player-attack.c L351): as oCriticalMelee for shooting
|
|
249
|
+
* (launched) / throwing. `powerBase` is chance_of_missile_hit_base(p, missile,
|
|
250
|
+
* launcher). The power scale factor differs for launched vs thrown.
|
|
251
|
+
*/
|
|
252
|
+
export function oCriticalShot(rng, powerBase, mon, launched) {
|
|
253
|
+
let power = powerBase;
|
|
254
|
+
if (isDebuffed(mon))
|
|
255
|
+
power += O_RANGED_CRIT.debuffToh;
|
|
256
|
+
const num = launched
|
|
257
|
+
? O_RANGED_CRIT.powerLaunchedTohScaleNum
|
|
258
|
+
: O_RANGED_CRIT.powerThrownTohScaleNum;
|
|
259
|
+
const den = launched
|
|
260
|
+
? O_RANGED_CRIT.powerLaunchedTohScaleDen
|
|
261
|
+
: O_RANGED_CRIT.powerThrownTohScaleDen;
|
|
262
|
+
power = Math.trunc((power * num) / den);
|
|
263
|
+
const chanceNum = power * O_RANGED_CRIT.chancePowerScaleNum;
|
|
264
|
+
const chanceDen = power * O_RANGED_CRIT.chancePowerScaleDen + O_RANGED_CRIT.chanceAddDen;
|
|
265
|
+
if (rng.randint1(chanceDen) <= chanceNum) {
|
|
266
|
+
return selectOCritLevel(rng, O_RANGED_CRIT_LEVELS);
|
|
267
|
+
}
|
|
268
|
+
return { addDice: 0, msg: "SHOOT_HIT" };
|
|
269
|
+
}
|
|
270
|
+
/* ------------------------------------------------------------------ *
|
|
271
|
+
* apply_deadliness (player-attack.c L231/L261)
|
|
272
|
+
*
|
|
273
|
+
* Ported faithfully here (rather than reused) because obj/object-info.ts - the
|
|
274
|
+
* display estimate's home for the same table - imports from this combat module,
|
|
275
|
+
* so combat cannot import back from it without a cycle. Both copies are
|
|
276
|
+
* verified against the constants; keep them in step.
|
|
277
|
+
* ------------------------------------------------------------------ */
|
|
278
|
+
/** deadliness_conversion[151] (player-attack.c L231). */
|
|
279
|
+
export const DEADLINESS_CONVERSION = [
|
|
280
|
+
0, 5, 10, 14, 18, 22, 26, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66,
|
|
281
|
+
69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 104, 107, 109, 112, 114, 117,
|
|
282
|
+
119, 122, 124, 127, 129, 132, 134, 137, 139, 142, 144, 147, 149, 152, 154,
|
|
283
|
+
157, 159, 162, 164, 167, 169, 172, 174, 176, 178, 180, 182, 184, 186, 188,
|
|
284
|
+
190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218,
|
|
285
|
+
220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248,
|
|
286
|
+
250, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
287
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
288
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
289
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
290
|
+
];
|
|
291
|
+
/**
|
|
292
|
+
* apply_deadliness (player-attack.c L261): scale die_average (x100) by the
|
|
293
|
+
* deadliness bonus. Returns the scaled value (upstream mutates in place).
|
|
294
|
+
*/
|
|
295
|
+
export function applyDeadliness(dieAverage, deadliness) {
|
|
296
|
+
let dl = deadliness;
|
|
297
|
+
if (dl > 150)
|
|
298
|
+
dl = 150;
|
|
299
|
+
if (dl < -150)
|
|
300
|
+
dl = -150;
|
|
301
|
+
if (dl >= 0) {
|
|
302
|
+
const i = DEADLINESS_CONVERSION[dl];
|
|
303
|
+
return dieAverage * (100 + i);
|
|
304
|
+
}
|
|
305
|
+
const i = DEADLINESS_CONVERSION[Math.abs(dl)];
|
|
306
|
+
if (i >= 100)
|
|
307
|
+
return 0;
|
|
308
|
+
return dieAverage * (100 - i);
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=hit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hit.js","sourceRoot":"","sources":["../../src/combat/hit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The combat domain: shared to-hit / critical math (hit.ts), brand and slay
|
|
3
|
+
* selection (brand-slay.ts), player melee (melee.ts), monster melee against
|
|
4
|
+
* the player (mon-melee.ts), and player ranged attacks (ranged.ts). Ported
|
|
5
|
+
* from Angband 4.2.6 (player-attack.c, mon-attack.c, mon-blows.c, obj-slays.c).
|
|
6
|
+
*
|
|
7
|
+
* Not wired into the package barrel (packages/core/src/index.ts) yet; import
|
|
8
|
+
* directly from "./combat".
|
|
9
|
+
*/
|
|
10
|
+
export * from "./hit.js";
|
|
11
|
+
export * from "./brand-slay.js";
|
|
12
|
+
export * from "./melee.js";
|
|
13
|
+
export * from "./mon-melee.js";
|
|
14
|
+
export * from "./ranged.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The combat domain: shared to-hit / critical math (hit.ts), brand and slay
|
|
3
|
+
* selection (brand-slay.ts), player melee (melee.ts), monster melee against
|
|
4
|
+
* the player (mon-melee.ts), and player ranged attacks (ranged.ts). Ported
|
|
5
|
+
* from Angband 4.2.6 (player-attack.c, mon-attack.c, mon-blows.c, obj-slays.c).
|
|
6
|
+
*
|
|
7
|
+
* Not wired into the package barrel (packages/core/src/index.ts) yet; import
|
|
8
|
+
* directly from "./combat".
|
|
9
|
+
*/
|
|
10
|
+
export * from "./hit.js";
|
|
11
|
+
export * from "./brand-slay.js";
|
|
12
|
+
export * from "./melee.js";
|
|
13
|
+
export * from "./mon-melee.js";
|
|
14
|
+
export * from "./ranged.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
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 type { Rng } from "../rng.js";
|
|
34
|
+
import type { Brand, Slay } from "../obj/types.js";
|
|
35
|
+
import type { GameObject } from "../obj/object.js";
|
|
36
|
+
import type { Monster } from "../mon/monster.js";
|
|
37
|
+
import type { MonTakeHitHooks } from "../mon/take-hit.js";
|
|
38
|
+
import type { Player } from "../player/player.js";
|
|
39
|
+
import type { HitType } from "./hit.js";
|
|
40
|
+
import type { TempBrandSlay } from "./brand-slay.js";
|
|
41
|
+
/**
|
|
42
|
+
* The subset of upstream `struct player_state` that combat reads. Supplied by
|
|
43
|
+
* the caller (calc_bonuses is deferred in player/calcs.ts).
|
|
44
|
+
*/
|
|
45
|
+
export interface PlayerCombatState {
|
|
46
|
+
/** state->to_h. */
|
|
47
|
+
toH: number;
|
|
48
|
+
/** state->to_d. */
|
|
49
|
+
toD: number;
|
|
50
|
+
/** state->ac. */
|
|
51
|
+
ac: number;
|
|
52
|
+
/** state->to_a. */
|
|
53
|
+
toA: number;
|
|
54
|
+
/** state->skills[SKILL_MAX], indexed by SKILL. */
|
|
55
|
+
skills: readonly number[];
|
|
56
|
+
/** state->num_blows, in hundredths of a blow (100 = one blow). */
|
|
57
|
+
numBlows: number;
|
|
58
|
+
/** state->ammo_mult (ranged). */
|
|
59
|
+
ammoMult: number;
|
|
60
|
+
/** state->num_shots, in tenths of a shot (10 = one shot). */
|
|
61
|
+
numShots: number;
|
|
62
|
+
/** state->ammo_tval: the ammo tval the equipped launcher fires (0 = none). */
|
|
63
|
+
ammoTval: number;
|
|
64
|
+
/** state->bless_wield (blessed weapon / holy-wield bonus). */
|
|
65
|
+
blessWield: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The state-mutating side effects of a melee blow (player-attack.c:669-978),
|
|
69
|
+
* all optional. combat/melee.ts draws every RNG at the faithful point whenever
|
|
70
|
+
* the triggering condition (the boolean flags below) is met, keeping the stream
|
|
71
|
+
* faithful; the callback then applies the game-state change. A caller that
|
|
72
|
+
* omits a callback leaves that effect's state change a no-op while still
|
|
73
|
+
* drawing its RNG, matching the simplified effect-handler melee paths.
|
|
74
|
+
*/
|
|
75
|
+
export interface MeleeEffectHooks {
|
|
76
|
+
/** mon_take_hit hooks (kill / become_aware / cover-tracks / arena death). */
|
|
77
|
+
takeHit?: MonTakeHitHooks;
|
|
78
|
+
/** p->timed[TMD_ATT_CONF] > 0: the confusion-brand side effect is armed. */
|
|
79
|
+
attConf?: boolean;
|
|
80
|
+
/** player_clear_timed(p, TMD_ATT_CONF): spend the confusion brand. */
|
|
81
|
+
clearAttConf?: () => void;
|
|
82
|
+
/** mon_inc_timed(mon, MON_TMD_CONF, dur, NOTIFY). */
|
|
83
|
+
confuseMonster?: (mon: Monster, dur: number) => void;
|
|
84
|
+
/** p->timed[TMD_ATT_VAMP] > 0: the vampiric drain is armed. */
|
|
85
|
+
attVamp?: boolean;
|
|
86
|
+
/** effect_simple(EF_HEAL_HP, drain): heal the player by the amount drained. */
|
|
87
|
+
healPlayer?: (amount: number) => void;
|
|
88
|
+
/** p->timed[TMD_BLOODLUST] > 0: bloodlust over-exertion is armed. */
|
|
89
|
+
bloodlust?: boolean;
|
|
90
|
+
/** player_over_exert(p, PY_EXERT_SCRAMBLE, 20, 20) on a missed bloodlust blow. */
|
|
91
|
+
overExertScramble?: () => void;
|
|
92
|
+
/** player_over_exert(p, PY_EXERT_CON, 20, 0) on a landed bloodlust blow. */
|
|
93
|
+
overExertCon?: () => void;
|
|
94
|
+
/** player_of_has(p, OF_IMPACT): earthquake brand present. */
|
|
95
|
+
impact?: boolean;
|
|
96
|
+
/** equip_learn_flag(p, OF_IMPACT), run when the quake condition trips. */
|
|
97
|
+
learnImpact?: () => void;
|
|
98
|
+
/** effect_simple(EF_EARTHQUAKE, rad 10) at the player; draws its own RNG. */
|
|
99
|
+
earthquake?: () => void;
|
|
100
|
+
/** square_monster(cave, grid) == null after the quake (monster gone/moved). */
|
|
101
|
+
monsterGone?: () => boolean;
|
|
102
|
+
/**
|
|
103
|
+
* PF_COMBAT_REGEN: reward the player with 5% of max SP before the blows
|
|
104
|
+
* (player-attack.c L1002); present only when the player has the flag.
|
|
105
|
+
*/
|
|
106
|
+
combatRegen?: () => void;
|
|
107
|
+
/**
|
|
108
|
+
* PF_SHIELD_BASH (player-attack.c L1009): present only when the player has
|
|
109
|
+
* the flag; the bash also needs a visible monster.
|
|
110
|
+
*/
|
|
111
|
+
shieldBash?: ShieldBashDeps;
|
|
112
|
+
/**
|
|
113
|
+
* player_is_shapechanged: the shape's blow verbs (p->shape->blows). When
|
|
114
|
+
* present a random one replaces the attack verb, drawing randint0(len).
|
|
115
|
+
*/
|
|
116
|
+
shapeBlows?: readonly string[];
|
|
117
|
+
/**
|
|
118
|
+
* Temporary brands/slays (improve_attack_modifier(p, NULL, ...)); consulted
|
|
119
|
+
* only on the melee path, exactly as upstream.
|
|
120
|
+
*/
|
|
121
|
+
temp?: TempBrandSlay;
|
|
122
|
+
}
|
|
123
|
+
/** Options for a melee attack. */
|
|
124
|
+
export interface MeleeOptions {
|
|
125
|
+
/** monster_is_visible(mon); a non-visible target halves the to-hit. */
|
|
126
|
+
monVisible?: boolean;
|
|
127
|
+
/** player_of_has(p, OF_AFRAID); an afraid player cannot attack. */
|
|
128
|
+
afraid?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Off-weapon equipped items (body slots >= 2) carrying brands/slays, in
|
|
131
|
+
* slot order. Upstream iterates these before the weapon.
|
|
132
|
+
*/
|
|
133
|
+
offhand?: readonly GameObject[];
|
|
134
|
+
/** p->energy for the blow loop (defaults to moveEnergy: one full turn). */
|
|
135
|
+
energy?: number;
|
|
136
|
+
/** z_info->move_energy (constants.txt; 100 upstream). */
|
|
137
|
+
moveEnergy?: number;
|
|
138
|
+
/**
|
|
139
|
+
* OPT(p, birth_percent_damage): route damage through the O-combat path
|
|
140
|
+
* (oMeleeDamage) instead of the standard melee_damage + critical_melee.
|
|
141
|
+
* Off by default; when off, RNG draws are byte-identical to the standard
|
|
142
|
+
* path (the gate adds/reorders nothing).
|
|
143
|
+
*/
|
|
144
|
+
percentDamage?: boolean;
|
|
145
|
+
/** The blow side effects (gap 2.5); omitted by pure-math / effect callers. */
|
|
146
|
+
hooks?: MeleeEffectHooks;
|
|
147
|
+
}
|
|
148
|
+
/** The outcome of a single blow (py_attack_real). */
|
|
149
|
+
export interface MeleeBlow {
|
|
150
|
+
hit: boolean;
|
|
151
|
+
damage: number;
|
|
152
|
+
msg: HitType;
|
|
153
|
+
verb: string;
|
|
154
|
+
/** Brand index used (0 = none). */
|
|
155
|
+
brand: number;
|
|
156
|
+
/** Slay index used (0 = none). */
|
|
157
|
+
slay: number;
|
|
158
|
+
/** The monster was killed by the blow (mon_take_hit died). */
|
|
159
|
+
monsterDied: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* The upstream `stop` value: the monster died, OR the impact quake removed
|
|
162
|
+
* or moved it (blow_after_effects). Ends the blow loop; equals monsterDied
|
|
163
|
+
* whenever no earthquake hook fires.
|
|
164
|
+
*/
|
|
165
|
+
stopAttack: boolean;
|
|
166
|
+
/** The blow newly frightened the monster (mon_take_hit's *fear out-param). */
|
|
167
|
+
fear: boolean;
|
|
168
|
+
}
|
|
169
|
+
/** The outcome of a full attack (py_attack). */
|
|
170
|
+
export interface MeleeAttack {
|
|
171
|
+
blows: MeleeBlow[];
|
|
172
|
+
totalDamage: number;
|
|
173
|
+
monsterDied: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* The monster survived and was left frightened and visible: py_attack's
|
|
176
|
+
* end-of-loop add_monster_message(MON_MSG_FLEE_IN_TERROR). The caller emits
|
|
177
|
+
* the "flees in terror" line.
|
|
178
|
+
*/
|
|
179
|
+
monsterFled: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* p->upkeep->energy_use as py_attack leaves it: blow_energy per blow landed
|
|
182
|
+
* plus any shield-bash stumble. May be less than a full move_energy (e.g.
|
|
183
|
+
* two 40-energy blows leave 80), exactly as upstream.
|
|
184
|
+
*/
|
|
185
|
+
energyUsed: number;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* chance_of_melee_hit_base: the player's melee to-hit before the target.
|
|
189
|
+
*/
|
|
190
|
+
export declare function chanceOfMeleeHitBase(state: PlayerCombatState, weapon: GameObject | null): number;
|
|
191
|
+
/**
|
|
192
|
+
* chance_of_melee_hit: to-hit against a specific monster (half if unseen).
|
|
193
|
+
*/
|
|
194
|
+
export declare function chanceOfMeleeHit(state: PlayerCombatState, weapon: GameObject | null, monVisible: boolean): number;
|
|
195
|
+
/**
|
|
196
|
+
* melee_damage: base weapon dice, times the best slay or brand multiplier,
|
|
197
|
+
* plus the weapon's to-dam. Standard (non-O) combat.
|
|
198
|
+
*/
|
|
199
|
+
export declare function meleeDamage(rng: Rng, mon: Monster, weapon: GameObject | null, brand: number, slay: number, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[]): number;
|
|
200
|
+
/** The (possibly critical-boosted) damage of a single blow plus its message. */
|
|
201
|
+
export interface DamageOutcome {
|
|
202
|
+
damage: number;
|
|
203
|
+
msg: HitType;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* o_melee_damage (player-attack.c L501): the birth_percent_damage melee path.
|
|
207
|
+
* Deadliness and the slay/brand o_multiplier add extra SIDES to the damage
|
|
208
|
+
* dice; criticals add extra DICE. Unlike the standard path, the player's
|
|
209
|
+
* to-dam (player_damage_bonus) is folded in here via deadliness, so the caller
|
|
210
|
+
* must NOT add state.toD afterwards (upstream skips it under the option gate).
|
|
211
|
+
*
|
|
212
|
+
* RNG order, matching upstream exactly:
|
|
213
|
+
* 1. randint0(10000) - the fractional-sides roll (drawn even when unarmed).
|
|
214
|
+
* 2. (weapon only) o_critical_melee: randint1(chance_den) crit test, then on
|
|
215
|
+
* a crit the one_in_ level walk.
|
|
216
|
+
* 3. damroll(dice, sides).
|
|
217
|
+
*/
|
|
218
|
+
export declare function oMeleeDamage(rng: Rng, state: PlayerCombatState, mon: Monster, weapon: GameObject | null, brand: number, slay: number, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[]): DamageOutcome;
|
|
219
|
+
/**
|
|
220
|
+
* py_attack_real: a single melee blow against the monster (player-attack.c
|
|
221
|
+
* L717). Mutates mon.hp on a damaging hit (through mon_take_hit, which also
|
|
222
|
+
* rolls fear), and interleaves the blow side effects via opts.hooks at the
|
|
223
|
+
* faithful RNG points. Returns the blow outcome; blow.monsterDied is the
|
|
224
|
+
* upstream `stop` value and blow.fear is mon_take_hit's *fear out-param.
|
|
225
|
+
*/
|
|
226
|
+
export declare function pyAttackReal(rng: Rng, p: Player, state: PlayerCombatState, weapon: GameObject | null, mon: Monster, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[], opts?: MeleeOptions): MeleeBlow;
|
|
227
|
+
/**
|
|
228
|
+
* The player-state / equipment inputs attempt_shield_bash reads beyond the
|
|
229
|
+
* combat state (player-attack.c:897-978). Present on MeleeEffectHooks only when
|
|
230
|
+
* the player has PF_SHIELD_BASH.
|
|
231
|
+
*/
|
|
232
|
+
export interface ShieldBashDeps {
|
|
233
|
+
/** slot_object(p, slot_by_name(p, "arm")): the equipped shield, if any. */
|
|
234
|
+
shield: GameObject | null;
|
|
235
|
+
/** state->stat_ind[STAT_DEX] (indexes adj_dex_th). */
|
|
236
|
+
dexInd: number;
|
|
237
|
+
/** state->stat_ind[STAT_STR] (indexes adj_str_td). */
|
|
238
|
+
strInd: number;
|
|
239
|
+
/** p->wt: the player's body weight. */
|
|
240
|
+
playerWt: number;
|
|
241
|
+
/** p->upkeep->total_weight: carried weight. */
|
|
242
|
+
totalWeight: number;
|
|
243
|
+
/** OPT(p, show_damage): append " (N)" to the bash message. */
|
|
244
|
+
showDamage?: boolean;
|
|
245
|
+
/** msg sink for "You get in a shield bash!" / "WHAMM!" / "You stumble!". */
|
|
246
|
+
msg?: (text: string) => void;
|
|
247
|
+
/** mon_inc_timed(mon, MON_TMD_STUN, dur, 0). */
|
|
248
|
+
stunMonster?: (mon: Monster, dur: number) => void;
|
|
249
|
+
/** mon_inc_timed(mon, MON_TMD_CONF, dur, 0). */
|
|
250
|
+
confuseMonster?: (mon: Monster, dur: number) => void;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* py_attack (player-attack.c L988): land blows until the next blow would
|
|
254
|
+
* exceed the energy available for a single turn, or the monster dies.
|
|
255
|
+
* blow_energy = 100 * move_energy / num_blows; energy defaults to a full
|
|
256
|
+
* turn's worth. Runs the PF_COMBAT_REGEN mana reward and the shield bash
|
|
257
|
+
* before the blow loop, accumulates the fear flag across blows, and reports
|
|
258
|
+
* the delayed "flees in terror" condition and the energy actually used.
|
|
259
|
+
*/
|
|
260
|
+
export declare function pyAttack(rng: Rng, p: Player, state: PlayerCombatState, weapon: GameObject | null, mon: Monster, brands: readonly (Brand | null)[], slays: readonly (Slay | null)[], opts?: MeleeOptions): MeleeAttack;
|
|
261
|
+
//# sourceMappingURL=melee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"melee.d.ts","sourceRoot":"","sources":["../../src/combat/melee.ts"],"names":[],"mappings":"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"}
|