@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,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player ranged commands: fire (do_cmd_fire) and throw (do_cmd_throw), the
|
|
3
|
+
* command front-ends of reference/src/player-attack.c (Angband 4.2.6). The hit
|
|
4
|
+
* math is combat/ranged.ts (make_ranged_shot / make_ranged_throw); this is
|
|
5
|
+
* ranged_helper - resolve the target, walk the missile along project_path, land
|
|
6
|
+
* a hit on the first monster in the way, then drop the missile (subject to
|
|
7
|
+
* breakage) where it comes to rest.
|
|
8
|
+
*
|
|
9
|
+
* The missile addresses its object by gear handle (args.handle) and its target
|
|
10
|
+
* by args.dir (keypad 1-9, or DIR_TARGET = 5 to use the current target), which
|
|
11
|
+
* the UI resolves before the command runs, exactly as cmd_get_item /
|
|
12
|
+
* cmd_get_target do upstream.
|
|
13
|
+
*
|
|
14
|
+
* Ported here (player-attack.c ranged_helper): TMD_POWERSHOT piercing
|
|
15
|
+
* (player-attack.c:1092-1095,1198-1201,1217-1219), the ay+ax/2 distance to-hit
|
|
16
|
+
* penalty (cave-view.c:38 via loc.ts distance, gap 2.6), and the full
|
|
17
|
+
* mon_take_hit routing so ranged hits generate fear, "flees in terror", and
|
|
18
|
+
* message_pain (player-attack.c:1191-1195, gap 2.4).
|
|
19
|
+
*
|
|
20
|
+
* DEFERRED (ledgered in parity/ledger/ranged-cmd.yaml): the out-of-range "Fire
|
|
21
|
+
* anyway?" prompt (UI) and the crit-flavour line (the hit verb still varies).
|
|
22
|
+
* The show_damage " (N)" suffix is now wired (player-attack.c:1168-1170), and
|
|
23
|
+
* the invisible-monster "finds a mark" branch is now ported
|
|
24
|
+
* (player-attack.c:1156-1159) - it had been listed here as deferred, which is
|
|
25
|
+
* exactly how a missing player-visible message stays missing.
|
|
26
|
+
* Missile / equipment / brand-slay learn-on-attack is wired below (W2-001/002/
|
|
27
|
+
* 010/011; player-attack.c:1137-1140, 1255-1259, 1296-1299).
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
import { MON_MSG, MSG, RF, STAT, TMD } from "../generated/index.js";
|
|
31
|
+
import { distance, loc } from "../loc.js";
|
|
32
|
+
import type { Loc } from "../loc.js";
|
|
33
|
+
import { adj_str_blow } from "../player/calcs.js";
|
|
34
|
+
import { makeRangedShot, makeRangedThrow, breakageChance } from "../combat/ranged.js";
|
|
35
|
+
import {
|
|
36
|
+
learnBrandSlayFromLaunch,
|
|
37
|
+
learnBrandSlayFromThrow,
|
|
38
|
+
} from "../combat/brand-slay.js";
|
|
39
|
+
import {
|
|
40
|
+
equipLearnOnRangedAttack,
|
|
41
|
+
missileLearnOnRangedAttack,
|
|
42
|
+
} from "../obj/knowledge.js";
|
|
43
|
+
import { objectWeightOne, tvalIsAmmo, tvalIsSharpMissile } from "../obj/object.js";
|
|
44
|
+
import type { GameObject } from "../obj/object.js";
|
|
45
|
+
import { ODESC } from "../obj/desc.js";
|
|
46
|
+
import { projectPath } from "../world/project.js";
|
|
47
|
+
import { monsterIsObvious, monsterIsDestroyed, monsterIsVisible } from "../mon/predicate.js";
|
|
48
|
+
import { getLore } from "../mon/lore.js";
|
|
49
|
+
import { monTakeHit } from "../mon/take-hit.js";
|
|
50
|
+
import { playerClearTimed } from "../player/timed.js";
|
|
51
|
+
import { gearGet, gearObjectForUse } from "./gear.js";
|
|
52
|
+
import { dropNear, floorPile, floorObjectForUse, itemIsAvailable } from "./floor.js";
|
|
53
|
+
import { invenTakeoff, playerConfuseDir } from "./obj-cmd.js";
|
|
54
|
+
import { squareMonster, deleteMonster, arenaInterceptDeath } from "./context.js";
|
|
55
|
+
import type { GameState, PlayerCommand } from "./context.js";
|
|
56
|
+
import { targetOkay, targetGet, targetSetClosest, TARGET } from "./target.js";
|
|
57
|
+
import { describeObject } from "./describe.js";
|
|
58
|
+
import { formatMonsterMessage, formatPainMessage, monMessageSoundType } from "./mon-message.js";
|
|
59
|
+
import type { ActionRegistry } from "./player-turn.js";
|
|
60
|
+
|
|
61
|
+
/* Keypad direction deltas (ddx/ddy), indexed by keypad digit 1..9. */
|
|
62
|
+
const DDX = [0, -1, 0, 1, -1, 0, 1, -1, 0, 1];
|
|
63
|
+
const DDY = [0, 1, 1, 1, 0, 0, 0, -1, -1, -1];
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* ranged_helper (player-attack.c L34): fly the missile from the player toward
|
|
67
|
+
* `target`, attacking the first monster along the path. `throwing` selects the
|
|
68
|
+
* thrown vs launcher hit resolver. Returns whether a monster was struck (so the
|
|
69
|
+
* missile's breakage uses the higher hit-chance) and where the missile landed.
|
|
70
|
+
*/
|
|
71
|
+
function rangedHelper(
|
|
72
|
+
state: GameState,
|
|
73
|
+
missile: GameObject,
|
|
74
|
+
launcher: GameObject | null,
|
|
75
|
+
dir: number,
|
|
76
|
+
range: number,
|
|
77
|
+
throwing: boolean,
|
|
78
|
+
): { hit: boolean; landing: Loc } {
|
|
79
|
+
const player = state.actor.player;
|
|
80
|
+
const start = state.actor.grid;
|
|
81
|
+
|
|
82
|
+
/* Predict the target grid: the current target for DIR_TARGET, else far along
|
|
83
|
+
* the chosen direction. */
|
|
84
|
+
let target: Loc;
|
|
85
|
+
if (dir === 5 && targetOkay(state)) {
|
|
86
|
+
target = targetGet(state);
|
|
87
|
+
} else {
|
|
88
|
+
/* KNOWN LIMIT, not a fix: an unusable DIR_TARGET arriving here aims at the
|
|
89
|
+
* player's OWN grid, because DDX[5]/DDY[5] are both 0 - a missile spent on a
|
|
90
|
+
* zero-length path. Upstream cannot reach this state: cmd_get_target
|
|
91
|
+
* (cmd-core.c:955-969) re-validates a stored direction and RE-PROMPTS when
|
|
92
|
+
* `*target == DIR_TARGET && !target_okay()`. Core has no prompt to re-open, so
|
|
93
|
+
* closing this properly means the caller re-validating before it queues the
|
|
94
|
+
* command, not clamping here (clamping would fire in a direction the player
|
|
95
|
+
* never chose). The web shell's aimDir does validate, so no live path reaches
|
|
96
|
+
* it today; the agent/borg act seams are what could. */
|
|
97
|
+
const dd = dir >= 1 && dir <= 9 ? dir : 5;
|
|
98
|
+
target = loc(start.x + 99 * DDX[dd]!, start.y + 99 * DDY[dd]!);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* sound(MSG_SHOOT): the loose (do_cmd_fire / do_cmd_throw). */
|
|
102
|
+
state.sound?.(MSG.SHOOT);
|
|
103
|
+
|
|
104
|
+
const path = projectPath(state.chunk, range, start, target, 0);
|
|
105
|
+
|
|
106
|
+
/* Piercing: TMD_POWERSHOT lets a sharp missile pass through ammo_mult
|
|
107
|
+
* monsters (player-attack.c:1092-1095); every other shot stops at one. */
|
|
108
|
+
let pierce = 1;
|
|
109
|
+
if ((player.timed[TMD.POWERSHOT] ?? 0) > 0 && tvalIsSharpMissile(missile.tval)) {
|
|
110
|
+
pierce = state.actor.combat.ammoMult;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
let hit = false;
|
|
114
|
+
let landing = start;
|
|
115
|
+
for (const grid of path) {
|
|
116
|
+
/* Stop before hitting an impassable, non-projectable wall. */
|
|
117
|
+
if (!state.chunk.isPassable(grid) && !state.chunk.isProjectable(grid)) break;
|
|
118
|
+
landing = grid;
|
|
119
|
+
|
|
120
|
+
const mon = squareMonster(state, grid);
|
|
121
|
+
if (!mon) {
|
|
122
|
+
/* Stop if non-projectable but passable (player-attack.c:1204-1206): the
|
|
123
|
+
* missile breaks against terrain it cannot pass through, e.g. rubble. */
|
|
124
|
+
if (!state.chunk.isProjectable(grid)) break;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const monObvious = monsterIsObvious(mon);
|
|
129
|
+
/* Distance penalty uses the ay + ax/2 metric (cave-view.c:38), not the
|
|
130
|
+
* Chebyshev max, so diagonal shots are penalized faithfully (gap 2.6). */
|
|
131
|
+
const dist = distance(start, grid);
|
|
132
|
+
const percentDamage = state.options?.get("birth_percent_damage") ?? false;
|
|
133
|
+
const result = throwing
|
|
134
|
+
? makeRangedThrow(
|
|
135
|
+
state.rng, player, state.actor.combat, missile, mon,
|
|
136
|
+
state.brands, state.slays, dist, monObvious, percentDamage,
|
|
137
|
+
)
|
|
138
|
+
: makeRangedShot(
|
|
139
|
+
state.rng, player, state.actor.combat, missile, launcher!, mon,
|
|
140
|
+
state.brands, state.slays, dist, monObvious, percentDamage,
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
if (result.success) {
|
|
144
|
+
hit = true;
|
|
145
|
+
|
|
146
|
+
/*
|
|
147
|
+
* Learn-on-hit (player-attack.c). All learning is RNG-free; it sits after
|
|
148
|
+
* make_ranged_*'s to-hit/damage/crit draws and before mon_take_hit's fear
|
|
149
|
+
* roll, matching the C draw order:
|
|
150
|
+
* make_ranged_shot: missile_learn(bow) then learn_brand_slay_from_launch
|
|
151
|
+
* make_ranged_throw: learn_brand_slay_from_throw
|
|
152
|
+
* ranged_helper: missile_learn(obj) then equip_learn_on_ranged_attack
|
|
153
|
+
* then object_desc (with up-to-date knowledge) then mon_take_hit
|
|
154
|
+
*/
|
|
155
|
+
const monVisible = monsterIsVisible(mon);
|
|
156
|
+
const learnMon = {
|
|
157
|
+
race: mon.race,
|
|
158
|
+
visible: monVisible,
|
|
159
|
+
lore: getLore(state.lore, mon.race),
|
|
160
|
+
};
|
|
161
|
+
if (throwing) {
|
|
162
|
+
learnBrandSlayFromThrow(player, state.runeEnv, missile, learnMon);
|
|
163
|
+
} else {
|
|
164
|
+
if (launcher) missileLearnOnRangedAttack(player, state.runeEnv, launcher);
|
|
165
|
+
learnBrandSlayFromLaunch(player, state.runeEnv, missile, launcher, learnMon);
|
|
166
|
+
}
|
|
167
|
+
missileLearnOnRangedAttack(player, state.runeEnv, missile);
|
|
168
|
+
equipLearnOnRangedAttack(player, state.runeEnv);
|
|
169
|
+
|
|
170
|
+
/* Describe after learning so the message reflects new knowledge
|
|
171
|
+
* (player-attack.c:1137-1147). */
|
|
172
|
+
const oName = describeObject(state, missile, ODESC.FULL | ODESC.SINGULAR);
|
|
173
|
+
const mName = mon.race.flags.has(RF.UNIQUE)
|
|
174
|
+
? mon.race.name
|
|
175
|
+
: `the ${mon.race.name}`;
|
|
176
|
+
|
|
177
|
+
let dmg = result.damage;
|
|
178
|
+
if (dmg <= 0) dmg = 0;
|
|
179
|
+
/* OPT(player, show_damage) (player-attack.c:1168-1170): the hit line
|
|
180
|
+
* carries " (N)". Built after the dmg<=0 clamp, as upstream is, so a
|
|
181
|
+
* harmless hit reads " (0)". */
|
|
182
|
+
const dmgText = state.options?.get("show_damage") ? ` (${dmg})` : "";
|
|
183
|
+
/* `visible` in the C is monster_is_obvious (player-attack.c:1120), NOT
|
|
184
|
+
* monster_is_visible: a mimic still camouflaged as an item is "seen" but
|
|
185
|
+
* is not obviously a monster, so upstream will not name it. The learn
|
|
186
|
+
* paths above are the ones that use monster_is_visible (obj-slays.c:568),
|
|
187
|
+
* which is why the two are kept apart here. */
|
|
188
|
+
if (!monsterIsObvious(mon)) {
|
|
189
|
+
/* Invisible monster (player-attack.c:1156-1159). The port had no such
|
|
190
|
+
* branch, so shooting something unseen produced a message naming a
|
|
191
|
+
* monster the player has no business knowing about. */
|
|
192
|
+
state.msg?.(`The ${oName} finds a mark.`, MSG.SHOOT_HIT);
|
|
193
|
+
} else if (dmg <= 0) {
|
|
194
|
+
state.msg?.(`Your ${oName} fails to harm ${mName}${dmgText}.`, MSG.SHOOT_HIT);
|
|
195
|
+
} else {
|
|
196
|
+
state.msg?.(`Your ${oName} ${result.verb} ${mName}${dmgText}.`, MSG.SHOOT_HIT);
|
|
197
|
+
}
|
|
198
|
+
state.sound?.(MSG.SHOOT_HIT);
|
|
199
|
+
|
|
200
|
+
/* health_track (player-attack.c:1183-1187): an OBVIOUS hit - not merely a
|
|
201
|
+
* visible one - makes the victim the tracked monster. Covers fire AND
|
|
202
|
+
* throw, since both route through here. Upstream's order is after the
|
|
203
|
+
* message and before mon_take_hit. */
|
|
204
|
+
if (monObvious) state.healthWho = mon;
|
|
205
|
+
|
|
206
|
+
/* Route damage through mon_take_hit so a survivor rolls fear and a kill
|
|
207
|
+
* is handled uniformly (player-attack.c:1191). Death messaging stays
|
|
208
|
+
* explicit here (empty note), matching the port's ranged death lines. */
|
|
209
|
+
const res = monTakeHit(state.rng, mon, dmg, "", {
|
|
210
|
+
...(state.becomeAware ? { becomeAware: state.becomeAware } : {}),
|
|
211
|
+
...(state.arenaLevel
|
|
212
|
+
? { onArenaDeath: (m) => void arenaInterceptDeath(state, m) }
|
|
213
|
+
: {}),
|
|
214
|
+
});
|
|
215
|
+
if (res.died) {
|
|
216
|
+
if (!state.arenaLevel) {
|
|
217
|
+
const dieMsg = monsterIsDestroyed(mon) ? MON_MSG.DESTROYED : MON_MSG.DIE;
|
|
218
|
+
const text = formatMonsterMessage(mon, dieMsg);
|
|
219
|
+
/* get_message_type (mon-msg.c:450): a unique's death plays
|
|
220
|
+
* MSG_KILL_UNIQUE (MSG_KILL_KING for Morgoth's base). */
|
|
221
|
+
const type = monMessageSoundType(dieMsg, mon.race);
|
|
222
|
+
if (text) state.msg?.(text, type);
|
|
223
|
+
state.sound?.(type);
|
|
224
|
+
state.onPlayerKill?.(mon);
|
|
225
|
+
deleteMonster(state, mon.midx);
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
/* message_pain, then the delayed flee message (player-attack.c:1192). */
|
|
229
|
+
const pain = formatPainMessage(mon, dmg);
|
|
230
|
+
if (pain) state.msg?.(pain);
|
|
231
|
+
if (res.fear && monsterIsObvious(mon)) {
|
|
232
|
+
const flee = formatMonsterMessage(mon, MON_MSG.FLEE_IN_TERROR);
|
|
233
|
+
if (flee) state.msg?.(flee);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/* No else: ranged_helper prints nothing on a miss (player-attack.c:1132
|
|
238
|
+
* has an if(result.success) block and no else branch), R3. */
|
|
239
|
+
|
|
240
|
+
/* Stop the missile, or reduce its piercing effect (player-attack.c:1198). */
|
|
241
|
+
pierce--;
|
|
242
|
+
if (pierce > 0) continue;
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Terminate piercing (player-attack.c:1217): player_clear_timed(p,
|
|
247
|
+
* TMD_POWERSHOT, true, false) - routed through the grade machinery for the
|
|
248
|
+
* on-end message when the world env is wired (RNG-free either way). */
|
|
249
|
+
if ((player.timed[TMD.POWERSHOT] ?? 0) > 0) {
|
|
250
|
+
const eff = state.world?.timedTable?.[TMD.POWERSHOT];
|
|
251
|
+
if (eff) {
|
|
252
|
+
playerClearTimed(player, eff, true, false, state.world?.timedHooks ?? {});
|
|
253
|
+
} else {
|
|
254
|
+
player.timed[TMD.POWERSHOT] = 0;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return { hit, landing };
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** Install the fire and throw commands over the live action registry. */
|
|
262
|
+
export function installRangedCommands(registry: ActionRegistry): void {
|
|
263
|
+
registry.register("fire", (state, cmd: PlayerCommand) => {
|
|
264
|
+
const player = state.actor.player;
|
|
265
|
+
const args = cmd.args ?? {};
|
|
266
|
+
|
|
267
|
+
/* The equipped launcher. do_cmd_fire duplicates player_can_fire's body
|
|
268
|
+
* inline (player-attack.c:1334-1338 vs player-util.c:1206) rather than
|
|
269
|
+
* calling it; player_can_fire itself is only reached through
|
|
270
|
+
* player_can_fire_prereq (the 'f'/'t' key, ui-game.c:124) and the
|
|
271
|
+
* context-menu row check (ui-context.c:508). */
|
|
272
|
+
const bowSlot = player.body.slots.findIndex((s) => s.type === "BOW");
|
|
273
|
+
const launcher =
|
|
274
|
+
bowSlot >= 0 ? gearGet(state.gear, player.equipment[bowSlot] ?? 0) : null;
|
|
275
|
+
if (!launcher || !state.actor.combat.ammoTval) {
|
|
276
|
+
state.msg?.("You have nothing to fire with.");
|
|
277
|
+
return 0;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const handle = typeof args["handle"] === "number" ? args["handle"] : -1;
|
|
281
|
+
const src = handle >= 0 ? gearGet(state.gear, handle) : null;
|
|
282
|
+
if (!src || !tvalIsAmmo(src.tval)) {
|
|
283
|
+
/* player-attack.c:1325 cmd_get_item error string (obj_can_fire filter). */
|
|
284
|
+
state.msg?.("You have no suitable ammunition to fire.");
|
|
285
|
+
return 0;
|
|
286
|
+
}
|
|
287
|
+
/* item_is_available (player-attack.c:1338): the ammo must still be within
|
|
288
|
+
* reach. This is the "two fire commands queued for the same stack" case -
|
|
289
|
+
* the second one names ammo that is already gone, and the port reported it
|
|
290
|
+
* as unsuitable ammunition rather than out of reach. */
|
|
291
|
+
if (!itemIsAvailable(state, src)) {
|
|
292
|
+
state.msg?.("That item is not within your reach.");
|
|
293
|
+
return 0;
|
|
294
|
+
}
|
|
295
|
+
if (src.tval !== state.actor.combat.ammoTval) {
|
|
296
|
+
state.msg?.("That ammo cannot be fired by your current weapon.");
|
|
297
|
+
return 0;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
let dir = typeof args["dir"] === "number" ? args["dir"] : (cmd.dir ?? 5);
|
|
301
|
+
/* do_cmd_fire calls player_confuse_dir immediately after cmd_get_target
|
|
302
|
+
* (player-attack.c:1349-1352), including its confusion RNG draw. */
|
|
303
|
+
dir = playerConfuseDir(state, dir);
|
|
304
|
+
/* Take one missile out of the stack. */
|
|
305
|
+
const { obj: missile } = gearObjectForUse(state.gear, player, handle, 1);
|
|
306
|
+
|
|
307
|
+
/* Fire range (player-attack.c:1310): MIN(6 + 2 * ammo_mult, max_range) -
|
|
308
|
+
* the LAUNCHER damage multiplier (state.ammo_mult), not the shots-per-turn
|
|
309
|
+
* rate of fire. */
|
|
310
|
+
const range = Math.min(
|
|
311
|
+
6 + 2 * state.actor.combat.ammoMult,
|
|
312
|
+
state.z.maxRange,
|
|
313
|
+
);
|
|
314
|
+
const { hit, landing } = rangedHelper(state, missile, launcher, dir, range, false);
|
|
315
|
+
|
|
316
|
+
/* Drop the (surviving) missile where it landed. */
|
|
317
|
+
dropNear(state, missile, breakageChance(missile, hit), landing, true, false, {});
|
|
318
|
+
|
|
319
|
+
const shots = Math.max(10, state.actor.combat.numShots);
|
|
320
|
+
return Math.trunc((state.z.moveEnergy * 10) / shots);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* do_cmd_fire_at_nearest (player-attack.c:1412): the "fire at nearest visible
|
|
325
|
+
* monster" convenience (h in the original keyset, TAB in roguelike). Requires
|
|
326
|
+
* a usable launcher, picks the first eligible ammo from the quiver, targets
|
|
327
|
+
* the closest valid foe with TARGET_KILL | TARGET_QUIET (no "No Available
|
|
328
|
+
* Target." message on failure), then reuses do_cmd_fire with DIR_TARGET.
|
|
329
|
+
*/
|
|
330
|
+
const fireHandler = registry.get("fire");
|
|
331
|
+
registry.register("fire-at-nearest", (state, _cmd: PlayerCommand) => {
|
|
332
|
+
const player = state.actor.player;
|
|
333
|
+
|
|
334
|
+
/* Require a usable launcher (player-attack.c:1417-1421). */
|
|
335
|
+
const bowSlot = player.body.slots.findIndex((s) => s.type === "BOW");
|
|
336
|
+
const launcher =
|
|
337
|
+
bowSlot >= 0 ? gearGet(state.gear, player.equipment[bowSlot] ?? 0) : null;
|
|
338
|
+
if (!launcher || !state.actor.combat.ammoTval) {
|
|
339
|
+
state.msg?.("You have nothing to fire with.");
|
|
340
|
+
return 0;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* Find first eligible ammo in the quiver (player-attack.c:1423-1431). */
|
|
344
|
+
let ammoHandle = -1;
|
|
345
|
+
for (const h of state.gear.quiver ?? []) {
|
|
346
|
+
if (!h) continue;
|
|
347
|
+
const o = gearGet(state.gear, h);
|
|
348
|
+
if (!o || o.tval !== state.actor.combat.ammoTval) continue;
|
|
349
|
+
ammoHandle = h;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
if (ammoHandle < 0) {
|
|
353
|
+
state.msg?.("You have no ammunition in the quiver to fire.");
|
|
354
|
+
return 0;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/* Require a foe (player-attack.c:1440). */
|
|
358
|
+
if (!targetSetClosest(state, TARGET.KILL | TARGET.QUIET)) return 0;
|
|
359
|
+
|
|
360
|
+
/* Fire! dir = DIR_TARGET (player-attack.c:1413,1443-1445). */
|
|
361
|
+
return fireHandler
|
|
362
|
+
? fireHandler(state, { code: "fire", args: { handle: ammoHandle, dir: 5 } })
|
|
363
|
+
: 0;
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
registry.register("throw", (state, cmd: PlayerCommand) => {
|
|
367
|
+
const player = state.actor.player;
|
|
368
|
+
const args = cmd.args ?? {};
|
|
369
|
+
|
|
370
|
+
/* do_cmd_throw resolves the missile from equip | quiver | inven | floor
|
|
371
|
+
* (player-attack.c:1384-1389). A floor index takes USE_FLOOR; otherwise a
|
|
372
|
+
* gear handle covers pack/quiver/equipment. */
|
|
373
|
+
const floorIdx = typeof args["floor"] === "number" ? args["floor"] : -1;
|
|
374
|
+
const handle = typeof args["handle"] === "number" ? args["handle"] : -1;
|
|
375
|
+
let dir = typeof args["dir"] === "number" ? args["dir"] : (cmd.dir ?? 5);
|
|
376
|
+
/* do_cmd_throw calls player_confuse_dir immediately after cmd_get_target
|
|
377
|
+
* (player-attack.c:1392-1395), including its confusion RNG draw. */
|
|
378
|
+
dir = playerConfuseDir(state, dir);
|
|
379
|
+
|
|
380
|
+
let missile: GameObject;
|
|
381
|
+
if (floorIdx >= 0) {
|
|
382
|
+
const src = floorPile(state, state.actor.grid)[floorIdx] ?? null;
|
|
383
|
+
if (!src) {
|
|
384
|
+
state.msg?.("You have nothing to throw.");
|
|
385
|
+
return 0;
|
|
386
|
+
}
|
|
387
|
+
missile = floorObjectForUse(state, src, 1).usable;
|
|
388
|
+
} else {
|
|
389
|
+
const src = handle >= 0 ? gearGet(state.gear, handle) : null;
|
|
390
|
+
if (!src) {
|
|
391
|
+
state.msg?.("You have nothing to throw.");
|
|
392
|
+
return 0;
|
|
393
|
+
}
|
|
394
|
+
/* Auto-takeoff a wielded weapon before throwing it (player-attack.c:1397-
|
|
395
|
+
* 1400): obj_can_throw only lets an equipped melee weapon through, so a
|
|
396
|
+
* hit here is exactly that case. */
|
|
397
|
+
if (player.equipment.includes(handle)) {
|
|
398
|
+
invenTakeoff(state, handle);
|
|
399
|
+
}
|
|
400
|
+
missile = gearObjectForUse(state.gear, player, handle, 1).obj;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/* Throw range (player-attack.c:1366,1402-1403): str = adj_str_blow[
|
|
404
|
+
* stat_ind[STAT_STR]]; weight = MAX(object_weight_one(obj), 10); range =
|
|
405
|
+
* MIN(((str + 20) * 10) / weight, 10). Heavier objects fly less far. The
|
|
406
|
+
* hard cap is 10 (NOT z_info->max_range), and the STR-blow adjustment - not
|
|
407
|
+
* player level - drives it. */
|
|
408
|
+
const str = adj_str_blow[state.statInd?.[STAT.STR] ?? 0] ?? 0;
|
|
409
|
+
const weight = Math.max(objectWeightOne(missile), 10);
|
|
410
|
+
const range = Math.min(Math.trunc(((str + 20) * 10) / weight), 10);
|
|
411
|
+
|
|
412
|
+
const { hit, landing } = rangedHelper(state, missile, null, dir, range, true);
|
|
413
|
+
dropNear(state, missile, breakageChance(missile, hit), landing, true, false, {});
|
|
414
|
+
|
|
415
|
+
return state.z.moveEnergy;
|
|
416
|
+
});
|
|
417
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creature scheduling, ported from process_monsters() and reset_monsters()
|
|
3
|
+
* in reference/src/mon-move.c plus the player-energy / turn-counter steps of
|
|
4
|
+
* run_game_loop() in reference/src/game-world.c (Angband 4.2.6).
|
|
5
|
+
*
|
|
6
|
+
* Each pass, every live monster is energised by its net speed and, once it
|
|
7
|
+
* has reached move_energy, spends a turn (in the upstream backwards scan
|
|
8
|
+
* order, highest slot first). process_monsters(minimum_energy) only touches
|
|
9
|
+
* monsters that already hold at least `minimum_energy`, which is how the loop
|
|
10
|
+
* lets monsters "with even more energy than the player" act before the
|
|
11
|
+
* player: it calls process_monsters(player_energy + 1) first. MFLAG_HANDLED
|
|
12
|
+
* stops a monster acting twice in one game turn; reset_monsters() clears it.
|
|
13
|
+
*
|
|
14
|
+
* The actual monster turn (the AI) is delegated to monster-turn.ts; the
|
|
15
|
+
* energy/regen/active/timed bookkeeping around it is here, exactly as the
|
|
16
|
+
* upstream process_monsters loop nests it.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { MFLAG, MON_TMD, RF } from "../generated/index.js";
|
|
20
|
+
import type { Monster } from "../mon/monster.js";
|
|
21
|
+
import { monsterIsMimicking } from "../mon/predicate.js";
|
|
22
|
+
import { turnEnergy } from "./energy.js";
|
|
23
|
+
import type { GameState } from "./context.js";
|
|
24
|
+
import { updateMonsterDistances } from "./context.js";
|
|
25
|
+
import { monDecTimed, monsterEffectLevel } from "../mon/timed.js";
|
|
26
|
+
import { getNonplayerHitDeps, monsterTakeTerrainDamage } from "./mon-death.js";
|
|
27
|
+
import {
|
|
28
|
+
monsterCheckActive,
|
|
29
|
+
monsterTurn,
|
|
30
|
+
processMonsterTimed,
|
|
31
|
+
} from "./monster-turn.js";
|
|
32
|
+
|
|
33
|
+
/** regen_monster: heal 1/100 of max hp per regeneration (doubled by REGEN). */
|
|
34
|
+
export function regenMonster(mon: Monster, num: number): void {
|
|
35
|
+
if (mon.hp >= mon.maxhp) return;
|
|
36
|
+
let frac = Math.trunc(mon.maxhp / 100);
|
|
37
|
+
if (!frac) frac = 1;
|
|
38
|
+
if (mon.race.flags.has(RF.REGENERATE)) frac *= 2;
|
|
39
|
+
frac *= num;
|
|
40
|
+
mon.hp += frac;
|
|
41
|
+
if (mon.hp > mon.maxhp) mon.hp = mon.maxhp;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* restore_monsters (mon-move.c L2007): let the monsters on a level that was
|
|
46
|
+
* frozen under birth_levels_persist recover over the turns that elapsed while
|
|
47
|
+
* it was out of play. `numTurns = turn - cave->turn` (the game turn now minus
|
|
48
|
+
* the freeze turn stamped on the chunk). Each monster regenerates 1/100-hp per
|
|
49
|
+
* 100 elapsed turns, and its timed effects are reduced by the energy it would
|
|
50
|
+
* have gained over the elapsed turns (num_turns * turn_energy(mspeed) /
|
|
51
|
+
* move_energy). Processed high slot to low, exactly as upstream. Only called
|
|
52
|
+
* on the persist restore path; the numTurns <= 0 guard is defensive (the game
|
|
53
|
+
* turn never runs backwards, and status_red > 0 already gates the timed loop).
|
|
54
|
+
*/
|
|
55
|
+
export function restoreMonsters(state: GameState, numTurns: number): void {
|
|
56
|
+
if (numTurns <= 0) return;
|
|
57
|
+
const moveEnergy = state.z.moveEnergy;
|
|
58
|
+
for (let i = state.monsters.length - 1; i >= 1; i--) {
|
|
59
|
+
const mon = state.monsters[i];
|
|
60
|
+
if (!mon) continue;
|
|
61
|
+
|
|
62
|
+
/* Regenerate. */
|
|
63
|
+
regenMonster(mon, Math.trunc(numTurns / 100));
|
|
64
|
+
|
|
65
|
+
/* Handle timed effects. */
|
|
66
|
+
const statusRed = Math.trunc(
|
|
67
|
+
(numTurns * turnEnergy(mon.mspeed, moveEnergy)) / moveEnergy,
|
|
68
|
+
);
|
|
69
|
+
if (statusRed > 0) {
|
|
70
|
+
for (let status = 0; status < mon.mTimed.length; status++) {
|
|
71
|
+
if (mon.mTimed[status]) {
|
|
72
|
+
monDecTimed(state.rng, mon, status, statusRed, 0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** The monster's net speed after FAST / SLOW timed effects. */
|
|
80
|
+
function netSpeed(mon: Monster): number {
|
|
81
|
+
let mspeed = mon.mspeed;
|
|
82
|
+
if (mon.mTimed[MON_TMD.FAST] ?? 0) mspeed += 10;
|
|
83
|
+
if (mon.mTimed[MON_TMD.SLOW] ?? 0) {
|
|
84
|
+
mspeed -= 2 * monsterEffectLevel(mon, MON_TMD.SLOW);
|
|
85
|
+
}
|
|
86
|
+
return mspeed;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* process_monsters(minimum_energy): energise and run every monster holding at
|
|
91
|
+
* least `minimum_energy`. Monsters are scanned high slot to low so a freshly
|
|
92
|
+
* killed monster (its slot cleared) is simply skipped.
|
|
93
|
+
*/
|
|
94
|
+
export function processMonsters(state: GameState, minimumEnergy: number): void {
|
|
95
|
+
const regen = state.turn % 100 === 0;
|
|
96
|
+
|
|
97
|
+
/* update_mon keeps cdis current upstream; refresh it here before the AI
|
|
98
|
+
* (and the active/range checks) read it. */
|
|
99
|
+
updateMonsterDistances(state);
|
|
100
|
+
|
|
101
|
+
for (let i = state.monsters.length - 1; i >= 1; i--) {
|
|
102
|
+
if (state.isDead || state.generateLevel) break;
|
|
103
|
+
|
|
104
|
+
const mon = state.monsters[i];
|
|
105
|
+
if (!mon) continue;
|
|
106
|
+
if (mon.mflag.has(MFLAG.HANDLED)) continue;
|
|
107
|
+
if (mon.energy < minimumEnergy) continue;
|
|
108
|
+
|
|
109
|
+
const moving = mon.energy >= state.z.moveEnergy;
|
|
110
|
+
mon.mflag.on(MFLAG.HANDLED);
|
|
111
|
+
|
|
112
|
+
if (regen) regenMonster(mon, 1);
|
|
113
|
+
|
|
114
|
+
mon.energy += turnEnergy(netSpeed(mon), state.z.moveEnergy);
|
|
115
|
+
|
|
116
|
+
if (!moving) continue;
|
|
117
|
+
|
|
118
|
+
/* Use up "some" energy. */
|
|
119
|
+
mon.energy -= state.z.moveEnergy;
|
|
120
|
+
|
|
121
|
+
/* Mimics lie in wait (mon-move.c L1947). */
|
|
122
|
+
if (monsterIsMimicking(mon)) continue;
|
|
123
|
+
|
|
124
|
+
if (monsterCheckActive(mon, state)) {
|
|
125
|
+
if (processMonsterTimed(mon, state)) continue;
|
|
126
|
+
monsterTurn(mon, state);
|
|
127
|
+
/* For symmetry with the player, the monster takes terrain damage
|
|
128
|
+
* after its turn (mon-move.c L1972). Needs the death deps installed
|
|
129
|
+
* by the session (installNonplayerHitDeps); inert otherwise. */
|
|
130
|
+
const deps = getNonplayerHitDeps(state);
|
|
131
|
+
if (deps) monsterTakeTerrainDamage(state, mon, deps);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** reset_monsters: clear MFLAG_HANDLED so every monster can act again. */
|
|
137
|
+
export function resetMonsters(state: GameState): void {
|
|
138
|
+
for (let i = state.monsters.length - 1; i >= 1; i--) {
|
|
139
|
+
const mon = state.monsters[i];
|
|
140
|
+
if (mon) mon.mflag.off(MFLAG.HANDLED);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Give the player a game turn's worth of energy
|
|
146
|
+
* (player->energy += turn_energy(player->state.speed)).
|
|
147
|
+
*/
|
|
148
|
+
export function givePlayerEnergy(state: GameState): void {
|
|
149
|
+
state.actor.energy += turnEnergy(state.actor.speed, state.z.moveEnergy);
|
|
150
|
+
}
|