@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,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monster-spell substrate, ported from reference/src/mon-spell.c (Angband
|
|
3
|
+
* 4.2.6): the spell-type classification (the mon_spell_types table built from
|
|
4
|
+
* list-mon-spells.h), the spell-type predicates and masks, the spell-hit
|
|
5
|
+
* chance, and the breath-damage calculation. These are the pure computations
|
|
6
|
+
* over the bound spell / race data that both the spell executor (do_mon_spell,
|
|
7
|
+
* game/ layer) and the spell-selection AI (choose_attack_spell / remove_bad_
|
|
8
|
+
* spells, mon-attack.c) sit on; they do not touch the GameState, so they live
|
|
9
|
+
* here in mon/ below game/.
|
|
10
|
+
*
|
|
11
|
+
* The RST_ classification is generated as a string expression per spell
|
|
12
|
+
* (generated/mon-spells.ts keeps `type` as written, e.g. "RST_BREATH |
|
|
13
|
+
* RST_INNATE"); MON_SPELL_TYPES evaluates each once into a bitmask indexed by
|
|
14
|
+
* RSF value (index 0 is RSF_NONE, matching the enum), so the lookups mirror
|
|
15
|
+
* upstream's mon_spell_types[index] exactly.
|
|
16
|
+
*
|
|
17
|
+
* monSpellNonhpDamage (nonhp_dam, mon-spell.c L571) is the non-breath half of
|
|
18
|
+
* mon_spell_dam: the deterministic MAXIMISE sum of a spell's damaging effect
|
|
19
|
+
* dice, with each effect's SPELL_POWER expression (the only base value
|
|
20
|
+
* monster-spell damage dice reference) rebound to the calling race - upstream
|
|
21
|
+
* sets its global `ref_race` for the same duration. This is the seam the
|
|
22
|
+
* lore/recall layer (mon/lore-describe.ts) needed to wire mon_spell_lore_damage
|
|
23
|
+
* for real; breath damage keeps using breathDam below unchanged.
|
|
24
|
+
*/
|
|
25
|
+
import { FlagSet } from "../bitflag.js";
|
|
26
|
+
import type { Rng } from "../rng.js";
|
|
27
|
+
import type { TimedFailLike } from "../obj/object.js";
|
|
28
|
+
import type { MonsterRace, MonsterSpell, MonsterSpellEffect } from "./types.js";
|
|
29
|
+
import type { Monster } from "./monster.js";
|
|
30
|
+
/**
|
|
31
|
+
* RST_ spell-type bitflags (mon-spell.h). RST_DAMAGE is the composite of the
|
|
32
|
+
* four damaging categories.
|
|
33
|
+
*/
|
|
34
|
+
export declare const RST: {
|
|
35
|
+
readonly NONE: 0;
|
|
36
|
+
readonly BOLT: 1;
|
|
37
|
+
readonly BALL: 2;
|
|
38
|
+
readonly BREATH: 4;
|
|
39
|
+
readonly DIRECT: 8;
|
|
40
|
+
readonly ANNOY: 16;
|
|
41
|
+
readonly HASTE: 32;
|
|
42
|
+
readonly HEAL: 64;
|
|
43
|
+
readonly HEAL_OTHER: 128;
|
|
44
|
+
readonly TACTIC: 256;
|
|
45
|
+
readonly ESCAPE: 512;
|
|
46
|
+
readonly SUMMON: 1024;
|
|
47
|
+
readonly INNATE: 2048;
|
|
48
|
+
readonly ARCHERY: 4096;
|
|
49
|
+
};
|
|
50
|
+
/** #define RST_DAMAGE (RST_BOLT | RST_BALL | RST_BREATH | RST_DIRECT). */
|
|
51
|
+
export declare const RST_DAMAGE: number;
|
|
52
|
+
/** CONF_HIT_REDUCTION (mon-timed.h): accuracy loss per level of confusion. */
|
|
53
|
+
export declare const CONF_HIT_REDUCTION = 20;
|
|
54
|
+
/**
|
|
55
|
+
* The per-spell type bitmask, indexed by RSF value (mon_spell_types[]). Built
|
|
56
|
+
* once from the generated entries; index 0 (RSF_NONE) and the trailing MAX
|
|
57
|
+
* entry are 0.
|
|
58
|
+
*/
|
|
59
|
+
export declare const MON_SPELL_TYPES: readonly number[];
|
|
60
|
+
/** mon_spell_is_valid: a real RSF_ spell index. */
|
|
61
|
+
export declare function monSpellIsValid(index: number): boolean;
|
|
62
|
+
/** monster_spell_is_breath. */
|
|
63
|
+
export declare function monSpellIsBreath(index: number): boolean;
|
|
64
|
+
/** mon_spell_has_damage. */
|
|
65
|
+
export declare function monSpellHasDamage(index: number): boolean;
|
|
66
|
+
/** mon_spell_is_innate. */
|
|
67
|
+
export declare function monSpellIsInnate(index: number): boolean;
|
|
68
|
+
/** test_spells: whether any spell of a wanted type is set in the flagset. */
|
|
69
|
+
export declare function testSpells(f: FlagSet, types: number): boolean;
|
|
70
|
+
/** ignore_spells: clear every spell of the given type(s) from the flagset. */
|
|
71
|
+
export declare function ignoreSpells(f: FlagSet, types: number): void;
|
|
72
|
+
/** create_mon_spell_mask: a fresh flagset of every spell of the given type(s). */
|
|
73
|
+
export declare function createMonSpellMask(...types: number[]): FlagSet;
|
|
74
|
+
/**
|
|
75
|
+
* chance_of_spell_hit_base: MAX(race->level, 1) * 3 + spell->hit. See also the
|
|
76
|
+
* melee analogue chance_of_monster_hit_base.
|
|
77
|
+
*/
|
|
78
|
+
export declare function chanceOfSpellHitBase(race: MonsterRace, spell: MonsterSpell): number;
|
|
79
|
+
/** chance_of_spell_hit: the base to-hit reduced for each level of confusion. */
|
|
80
|
+
export declare function chanceOfSpellHit(mon: Monster, spell: MonsterSpell): number;
|
|
81
|
+
/** The projection fields breath_dam reads (a structural view of ProjectionInfo). */
|
|
82
|
+
export interface BreathProjection {
|
|
83
|
+
/** element->divisor: hp is divided by this. */
|
|
84
|
+
divisor: number;
|
|
85
|
+
/** element->damage_cap: the maximum breath damage. */
|
|
86
|
+
damageCap: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* breath_dam: a monster breath does hp / divisor damage, capped at the
|
|
90
|
+
* element's damage cap.
|
|
91
|
+
*/
|
|
92
|
+
export declare function breathDam(proj: BreathProjection, hp: number): number;
|
|
93
|
+
/**
|
|
94
|
+
* unset_spells (mon-spell.c L470): turn off spells with a side effect or
|
|
95
|
+
* projection type resisted by what the monster knows about the player, subject
|
|
96
|
+
* to intelligence and chance. `flags` / `pflags` / `el` are the monster's
|
|
97
|
+
* ai-memorized view of the player (known_pstate copies); `timedFail` resolves a
|
|
98
|
+
* TMD_ name to its fail-condition table (the bound player-timed data).
|
|
99
|
+
*
|
|
100
|
+
* RNG order preserved exactly, including the C short-circuit quirks:
|
|
101
|
+
* - every elemental (BOLT/BALL/BREATH) spell present draws one randint0(100),
|
|
102
|
+
* even when the learn chance is 0;
|
|
103
|
+
* - a non-smart monster draws one_in_(3) per EFFECT LINE of every non-elemental
|
|
104
|
+
* spell (the `(smart || !one_in_(3)) && index == EF_TIMED_INC` gate is
|
|
105
|
+
* evaluated left-to-right for every effect), and one_in_(2) likewise for the
|
|
106
|
+
* drain-mana gate.
|
|
107
|
+
* Upstream indexes el[] by the raw projection subtype; for the handful of
|
|
108
|
+
* non-element breath subtypes (TIME / INERTIA / GRAVITY / PLASMA / MANA /
|
|
109
|
+
* WATER) that read past the element table in C, the port treats the resist
|
|
110
|
+
* level as 0 (an unreproducible out-of-bounds read; the draw still happens).
|
|
111
|
+
*/
|
|
112
|
+
export declare function unsetSpells(rng: Rng, spells: FlagSet, flags: FlagSet, pflags: FlagSet, el: Int16Array, mon: Monster, spellTable: ReadonlyMap<number, MonsterSpell>, timedFail: (tmdName: string) => readonly TimedFailLike[] | null): void;
|
|
113
|
+
/** The player-side seams update_smart_learn drives (mon-util.c L788). */
|
|
114
|
+
export interface SmartLearnEnv {
|
|
115
|
+
/** OPT(p, birth_ai_learn). */
|
|
116
|
+
aiLearn: boolean;
|
|
117
|
+
/** equip_learn_flag(p, flag). */
|
|
118
|
+
equipLearnFlag: (of: number) => void;
|
|
119
|
+
/** equip_learn_element(p, element). */
|
|
120
|
+
equipLearnElement: (elem: number) => void;
|
|
121
|
+
/** player_of_has(p, flag). */
|
|
122
|
+
playerOfHas: (of: number) => boolean;
|
|
123
|
+
/** pf_has(p->state.pflags, pflag). */
|
|
124
|
+
playerPfHas: (pf: number) => boolean;
|
|
125
|
+
/** p->state.el_info[element].res_level. */
|
|
126
|
+
playerResLevel: (elem: number) => number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* update_smart_learn (mon-util.c L788): the monster learns an "observed"
|
|
130
|
+
* resistance or other player property (or its absence). The player always
|
|
131
|
+
* learns the corresponding rune (equip_learn_*); the monster's known_pstate is
|
|
132
|
+
* only updated under birth_ai_learn, for non-stupid monsters, with the
|
|
133
|
+
* one_in_(2) non-smart and one_in_(100) failure draws in upstream order.
|
|
134
|
+
* Robust to `element` being an arbitrary PROJ_ index, as upstream.
|
|
135
|
+
*/
|
|
136
|
+
export declare function updateSmartLearn(rng: Rng, mon: Monster, env: SmartLearnEnv, flag: number, pflag: number, element: number): void;
|
|
137
|
+
/**
|
|
138
|
+
* FLAGGED ADDITION (#lore-damage): nonhp_dam (mon-spell.c L571), restricted to
|
|
139
|
+
* the MAXIMISE aspect mon_spell_lore_damage needs - deterministic, no RNG.
|
|
140
|
+
*
|
|
141
|
+
* Sums the MAXIMISE damage of every effect line except EF_TIMED_INC ("Timed
|
|
142
|
+
* effects increases don't count as damage in lore", upstream comment).
|
|
143
|
+
* EF_LASH is special-cased exactly as upstream: full damage from the race's
|
|
144
|
+
* first blow plus half from each of the rest (integer division per term,
|
|
145
|
+
* summed - not the total divided by two).
|
|
146
|
+
*
|
|
147
|
+
* Each non-LASH effect's dice is parsed fresh from its raw string and any
|
|
148
|
+
* SPELL_POWER expression rebound to `race` (the only base value monster-spell
|
|
149
|
+
* damage dice reference - see reference/lib/gamedata/monster_spell.txt),
|
|
150
|
+
* mirroring upstream's do_mon_spell / mon-cast.ts buildSpellEffectChain
|
|
151
|
+
* pattern of rebuilding the bound dice per caster rather than mutating the
|
|
152
|
+
* shared MonsterSpell record (which every race with that spell shares).
|
|
153
|
+
*/
|
|
154
|
+
export declare function monSpellNonhpDamage(effects: readonly MonsterSpellEffect[], race: MonsterRace): number;
|
|
155
|
+
//# sourceMappingURL=spell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spell.d.ts","sourceRoot":"","sources":["../../src/mon/spell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monster-spell substrate, ported from reference/src/mon-spell.c (Angband
|
|
3
|
+
* 4.2.6): the spell-type classification (the mon_spell_types table built from
|
|
4
|
+
* list-mon-spells.h), the spell-type predicates and masks, the spell-hit
|
|
5
|
+
* chance, and the breath-damage calculation. These are the pure computations
|
|
6
|
+
* over the bound spell / race data that both the spell executor (do_mon_spell,
|
|
7
|
+
* game/ layer) and the spell-selection AI (choose_attack_spell / remove_bad_
|
|
8
|
+
* spells, mon-attack.c) sit on; they do not touch the GameState, so they live
|
|
9
|
+
* here in mon/ below game/.
|
|
10
|
+
*
|
|
11
|
+
* The RST_ classification is generated as a string expression per spell
|
|
12
|
+
* (generated/mon-spells.ts keeps `type` as written, e.g. "RST_BREATH |
|
|
13
|
+
* RST_INNATE"); MON_SPELL_TYPES evaluates each once into a bitmask indexed by
|
|
14
|
+
* RSF value (index 0 is RSF_NONE, matching the enum), so the lookups mirror
|
|
15
|
+
* upstream's mon_spell_types[index] exactly.
|
|
16
|
+
*
|
|
17
|
+
* monSpellNonhpDamage (nonhp_dam, mon-spell.c L571) is the non-breath half of
|
|
18
|
+
* mon_spell_dam: the deterministic MAXIMISE sum of a spell's damaging effect
|
|
19
|
+
* dice, with each effect's SPELL_POWER expression (the only base value
|
|
20
|
+
* monster-spell damage dice reference) rebound to the calling race - upstream
|
|
21
|
+
* sets its global `ref_race` for the same duration. This is the seam the
|
|
22
|
+
* lore/recall layer (mon/lore-describe.ts) needed to wire mon_spell_lore_damage
|
|
23
|
+
* for real; breath damage keeps using breathDam below unchanged.
|
|
24
|
+
*/
|
|
25
|
+
import { Dice } from "../dice.js";
|
|
26
|
+
import { Expression } from "../expression.js";
|
|
27
|
+
import { FlagSet } from "../bitflag.js";
|
|
28
|
+
import { ELEM, MON_SPELL_ENTRIES, MON_TMD, OF, PF, RSF } from "../generated/index.js";
|
|
29
|
+
import { ELEM_MAX } from "../obj/types.js";
|
|
30
|
+
import { RSF_SIZE } from "./types.js";
|
|
31
|
+
import { monsterEffectLevel } from "./timed.js";
|
|
32
|
+
import { monsterIsSmart, monsterIsStupid } from "./predicate.js";
|
|
33
|
+
/**
|
|
34
|
+
* RST_ spell-type bitflags (mon-spell.h). RST_DAMAGE is the composite of the
|
|
35
|
+
* four damaging categories.
|
|
36
|
+
*/
|
|
37
|
+
export const RST = {
|
|
38
|
+
NONE: 0x0000,
|
|
39
|
+
BOLT: 0x0001,
|
|
40
|
+
BALL: 0x0002,
|
|
41
|
+
BREATH: 0x0004,
|
|
42
|
+
DIRECT: 0x0008,
|
|
43
|
+
ANNOY: 0x0010,
|
|
44
|
+
HASTE: 0x0020,
|
|
45
|
+
HEAL: 0x0040,
|
|
46
|
+
HEAL_OTHER: 0x0080,
|
|
47
|
+
TACTIC: 0x0100,
|
|
48
|
+
ESCAPE: 0x0200,
|
|
49
|
+
SUMMON: 0x0400,
|
|
50
|
+
INNATE: 0x0800,
|
|
51
|
+
ARCHERY: 0x1000,
|
|
52
|
+
};
|
|
53
|
+
/** #define RST_DAMAGE (RST_BOLT | RST_BALL | RST_BREATH | RST_DIRECT). */
|
|
54
|
+
export const RST_DAMAGE = RST.BOLT | RST.BALL | RST.BREATH | RST.DIRECT;
|
|
55
|
+
/** CONF_HIT_REDUCTION (mon-timed.h): accuracy loss per level of confusion. */
|
|
56
|
+
export const CONF_HIT_REDUCTION = 20;
|
|
57
|
+
/** Evaluate a generated RST_ type expression ("RST_A | RST_B" or 0). */
|
|
58
|
+
function evalTypeExpr(expr) {
|
|
59
|
+
if (typeof expr === "number")
|
|
60
|
+
return expr;
|
|
61
|
+
let mask = 0;
|
|
62
|
+
for (const tok of expr.split("|")) {
|
|
63
|
+
const name = tok.trim().replace(/^RST_/, "");
|
|
64
|
+
const value = RST[name];
|
|
65
|
+
if (value === undefined)
|
|
66
|
+
throw new Error(`unknown RST token: ${tok}`);
|
|
67
|
+
mask |= value;
|
|
68
|
+
}
|
|
69
|
+
return mask;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The per-spell type bitmask, indexed by RSF value (mon_spell_types[]). Built
|
|
73
|
+
* once from the generated entries; index 0 (RSF_NONE) and the trailing MAX
|
|
74
|
+
* entry are 0.
|
|
75
|
+
*/
|
|
76
|
+
export const MON_SPELL_TYPES = MON_SPELL_ENTRIES.map((e) => evalTypeExpr(e.type));
|
|
77
|
+
/** mon_spell_is_valid: a real RSF_ spell index. */
|
|
78
|
+
export function monSpellIsValid(index) {
|
|
79
|
+
return index > RSF.NONE && index < RSF.MAX;
|
|
80
|
+
}
|
|
81
|
+
/** monster_spell_is_breath. */
|
|
82
|
+
export function monSpellIsBreath(index) {
|
|
83
|
+
return (MON_SPELL_TYPES[index] & RST.BREATH) !== 0;
|
|
84
|
+
}
|
|
85
|
+
/** mon_spell_has_damage. */
|
|
86
|
+
export function monSpellHasDamage(index) {
|
|
87
|
+
return (MON_SPELL_TYPES[index] & RST_DAMAGE) !== 0;
|
|
88
|
+
}
|
|
89
|
+
/** mon_spell_is_innate. */
|
|
90
|
+
export function monSpellIsInnate(index) {
|
|
91
|
+
return (MON_SPELL_TYPES[index] & RST.INNATE) !== 0;
|
|
92
|
+
}
|
|
93
|
+
/** test_spells: whether any spell of a wanted type is set in the flagset. */
|
|
94
|
+
export function testSpells(f, types) {
|
|
95
|
+
for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
|
|
96
|
+
if (f.has(index) && (MON_SPELL_TYPES[index] & types) !== 0)
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
/** ignore_spells: clear every spell of the given type(s) from the flagset. */
|
|
102
|
+
export function ignoreSpells(f, types) {
|
|
103
|
+
for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
|
|
104
|
+
if (f.has(index) && (MON_SPELL_TYPES[index] & types) !== 0)
|
|
105
|
+
f.off(index);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** create_mon_spell_mask: a fresh flagset of every spell of the given type(s). */
|
|
109
|
+
export function createMonSpellMask(...types) {
|
|
110
|
+
const f = new FlagSet(RSF_SIZE);
|
|
111
|
+
const wanted = types.reduce((a, b) => a | b, 0);
|
|
112
|
+
for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
|
|
113
|
+
if ((MON_SPELL_TYPES[index] & wanted) !== 0)
|
|
114
|
+
f.on(index);
|
|
115
|
+
}
|
|
116
|
+
return f;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* chance_of_spell_hit_base: MAX(race->level, 1) * 3 + spell->hit. See also the
|
|
120
|
+
* melee analogue chance_of_monster_hit_base.
|
|
121
|
+
*/
|
|
122
|
+
export function chanceOfSpellHitBase(race, spell) {
|
|
123
|
+
return Math.max(race.level, 1) * 3 + spell.hit;
|
|
124
|
+
}
|
|
125
|
+
/** chance_of_spell_hit: the base to-hit reduced for each level of confusion. */
|
|
126
|
+
export function chanceOfSpellHit(mon, spell) {
|
|
127
|
+
let toHit = chanceOfSpellHitBase(mon.race, spell);
|
|
128
|
+
const conf = monsterEffectLevel(mon, MON_TMD.CONF);
|
|
129
|
+
for (let i = 0; i < conf; i++) {
|
|
130
|
+
toHit = Math.trunc((toHit * (100 - CONF_HIT_REDUCTION)) / 100);
|
|
131
|
+
}
|
|
132
|
+
return toHit;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* breath_dam: a monster breath does hp / divisor damage, capped at the
|
|
136
|
+
* element's damage cap.
|
|
137
|
+
*/
|
|
138
|
+
export function breathDam(proj, hp) {
|
|
139
|
+
let dam = Math.trunc(hp / proj.divisor);
|
|
140
|
+
if (dam > proj.damageCap)
|
|
141
|
+
dam = proj.damageCap;
|
|
142
|
+
return dam;
|
|
143
|
+
}
|
|
144
|
+
/** TMD_FAIL_ codes (player-timed.h), for the unset_spells fail-table scan. */
|
|
145
|
+
const TMD_FAIL_FLAG_OBJECT = 1;
|
|
146
|
+
const TMD_FAIL_FLAG_RESIST = 2;
|
|
147
|
+
const TMD_FAIL_FLAG_VULN = 3;
|
|
148
|
+
const TMD_FAIL_FLAG_PLAYER = 4;
|
|
149
|
+
/**
|
|
150
|
+
* unset_spells (mon-spell.c L470): turn off spells with a side effect or
|
|
151
|
+
* projection type resisted by what the monster knows about the player, subject
|
|
152
|
+
* to intelligence and chance. `flags` / `pflags` / `el` are the monster's
|
|
153
|
+
* ai-memorized view of the player (known_pstate copies); `timedFail` resolves a
|
|
154
|
+
* TMD_ name to its fail-condition table (the bound player-timed data).
|
|
155
|
+
*
|
|
156
|
+
* RNG order preserved exactly, including the C short-circuit quirks:
|
|
157
|
+
* - every elemental (BOLT/BALL/BREATH) spell present draws one randint0(100),
|
|
158
|
+
* even when the learn chance is 0;
|
|
159
|
+
* - a non-smart monster draws one_in_(3) per EFFECT LINE of every non-elemental
|
|
160
|
+
* spell (the `(smart || !one_in_(3)) && index == EF_TIMED_INC` gate is
|
|
161
|
+
* evaluated left-to-right for every effect), and one_in_(2) likewise for the
|
|
162
|
+
* drain-mana gate.
|
|
163
|
+
* Upstream indexes el[] by the raw projection subtype; for the handful of
|
|
164
|
+
* non-element breath subtypes (TIME / INERTIA / GRAVITY / PLASMA / MANA /
|
|
165
|
+
* WATER) that read past the element table in C, the port treats the resist
|
|
166
|
+
* level as 0 (an unreproducible out-of-bounds read; the draw still happens).
|
|
167
|
+
*/
|
|
168
|
+
export function unsetSpells(rng, spells, flags, pflags, el, mon, spellTable, timedFail) {
|
|
169
|
+
const smart = monsterIsSmart(mon);
|
|
170
|
+
for (let index = RSF.NONE + 1; index < RSF.MAX; index++) {
|
|
171
|
+
const spell = spellTable.get(index);
|
|
172
|
+
if (!spell)
|
|
173
|
+
continue;
|
|
174
|
+
if (!spells.has(index))
|
|
175
|
+
continue;
|
|
176
|
+
const types = MON_SPELL_TYPES[index];
|
|
177
|
+
if (types & (RST.BOLT | RST.BALL | RST.BREATH)) {
|
|
178
|
+
/* First we test the elemental spells. */
|
|
179
|
+
const typeName = spell.effects[0]?.type ?? "";
|
|
180
|
+
const element = ELEM[typeName];
|
|
181
|
+
const resLevel = element !== undefined && element < ELEM_MAX ? (el[element] ?? 0) : 0;
|
|
182
|
+
const learnChance = resLevel * (smart ? 50 : 25);
|
|
183
|
+
if (rng.randint0(100) < learnChance) {
|
|
184
|
+
spells.off(index);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
/* Now others with resisted effects. */
|
|
189
|
+
let stopped = false;
|
|
190
|
+
for (const effect of spell.effects) {
|
|
191
|
+
/* Timed effects: the intelligence/chance gate draws for every
|
|
192
|
+
* effect line of a non-smart monster (C short-circuit order). */
|
|
193
|
+
const timedGate = smart || !rng.oneIn(3);
|
|
194
|
+
if (timedGate && effect.eff === "TIMED_INC") {
|
|
195
|
+
let resisted = false;
|
|
196
|
+
for (const f of timedFail(effect.type ?? "") ?? []) {
|
|
197
|
+
if (resisted)
|
|
198
|
+
break;
|
|
199
|
+
switch (f.code) {
|
|
200
|
+
case TMD_FAIL_FLAG_OBJECT: {
|
|
201
|
+
const of = OF[f.flag];
|
|
202
|
+
if (of !== undefined && flags.has(of))
|
|
203
|
+
resisted = true;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case TMD_FAIL_FLAG_RESIST: {
|
|
207
|
+
const e = ELEM[f.flag];
|
|
208
|
+
if (e !== undefined && (el[e] ?? 0) > 0)
|
|
209
|
+
resisted = true;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
case TMD_FAIL_FLAG_VULN: {
|
|
213
|
+
const e = ELEM[f.flag];
|
|
214
|
+
if (e !== undefined && (el[e] ?? 0) < 0)
|
|
215
|
+
resisted = true;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case TMD_FAIL_FLAG_PLAYER: {
|
|
219
|
+
const pf = PF[f.flag];
|
|
220
|
+
if (pf !== undefined && pflags.has(pf))
|
|
221
|
+
resisted = true;
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
/* TMD_FAIL_FLAG_TIMED_EFFECT: the monster does not track the
|
|
225
|
+
* player's timed effects; do nothing. */
|
|
226
|
+
default:
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (resisted) {
|
|
231
|
+
stopped = true;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/* Mana drain (the chance gate draws per effect for non-smart). */
|
|
236
|
+
const manaGate = smart || rng.oneIn(2);
|
|
237
|
+
if (manaGate &&
|
|
238
|
+
effect.eff === "DRAIN_MANA" &&
|
|
239
|
+
pflags.has(PF.NO_MANA)) {
|
|
240
|
+
stopped = true;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (stopped)
|
|
245
|
+
spells.off(index);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* update_smart_learn (mon-util.c L788): the monster learns an "observed"
|
|
251
|
+
* resistance or other player property (or its absence). The player always
|
|
252
|
+
* learns the corresponding rune (equip_learn_*); the monster's known_pstate is
|
|
253
|
+
* only updated under birth_ai_learn, for non-stupid monsters, with the
|
|
254
|
+
* one_in_(2) non-smart and one_in_(100) failure draws in upstream order.
|
|
255
|
+
* Robust to `element` being an arbitrary PROJ_ index, as upstream.
|
|
256
|
+
*/
|
|
257
|
+
export function updateSmartLearn(rng, mon, env, flag, pflag, element) {
|
|
258
|
+
const elementOk = element >= 0 && element < ELEM_MAX;
|
|
259
|
+
/* Sanity check. */
|
|
260
|
+
if (!flag && !elementOk)
|
|
261
|
+
return;
|
|
262
|
+
/* Anything a monster might learn, the player should learn. */
|
|
263
|
+
if (flag)
|
|
264
|
+
env.equipLearnFlag(flag);
|
|
265
|
+
if (elementOk)
|
|
266
|
+
env.equipLearnElement(element);
|
|
267
|
+
/* Not allowed to learn. */
|
|
268
|
+
if (!env.aiLearn)
|
|
269
|
+
return;
|
|
270
|
+
/* Too stupid to learn anything. */
|
|
271
|
+
if (monsterIsStupid(mon))
|
|
272
|
+
return;
|
|
273
|
+
/* Not intelligent, only learn sometimes. */
|
|
274
|
+
if (!monsterIsSmart(mon) && rng.oneIn(2))
|
|
275
|
+
return;
|
|
276
|
+
/* Analyze the knowledge; fail very rarely. */
|
|
277
|
+
if (rng.oneIn(100))
|
|
278
|
+
return;
|
|
279
|
+
/* Learn the flag. */
|
|
280
|
+
if (flag) {
|
|
281
|
+
if (env.playerOfHas(flag))
|
|
282
|
+
mon.knownPstate.flags.on(flag);
|
|
283
|
+
else
|
|
284
|
+
mon.knownPstate.flags.off(flag);
|
|
285
|
+
}
|
|
286
|
+
/* Learn the pflag (upstream writes it with of_on/of_off; same bit ops). */
|
|
287
|
+
if (pflag) {
|
|
288
|
+
if (env.playerPfHas(pflag))
|
|
289
|
+
mon.knownPstate.pflags.on(pflag);
|
|
290
|
+
else
|
|
291
|
+
mon.knownPstate.pflags.off(pflag);
|
|
292
|
+
}
|
|
293
|
+
/* Learn the element. */
|
|
294
|
+
if (elementOk) {
|
|
295
|
+
mon.knownPstate.elInfo[element] = env.playerResLevel(element);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* randcalc(v, 0, MAXIMISE): base + dice*sides + mBonus. Level and RNG never
|
|
300
|
+
* enter the MAXIMISE branch (rng.ts damcalc / mBonusCalc), so this mirrors
|
|
301
|
+
* that arithmetic directly rather than threading an Rng through a display
|
|
302
|
+
* path (the same choice obj/object-info.ts makes for its own rvMax).
|
|
303
|
+
*/
|
|
304
|
+
function maximiseRandomValue(rv) {
|
|
305
|
+
return rv.base + rv.dice * rv.sides + rv.mBonus;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* FLAGGED ADDITION (#lore-damage): nonhp_dam (mon-spell.c L571), restricted to
|
|
309
|
+
* the MAXIMISE aspect mon_spell_lore_damage needs - deterministic, no RNG.
|
|
310
|
+
*
|
|
311
|
+
* Sums the MAXIMISE damage of every effect line except EF_TIMED_INC ("Timed
|
|
312
|
+
* effects increases don't count as damage in lore", upstream comment).
|
|
313
|
+
* EF_LASH is special-cased exactly as upstream: full damage from the race's
|
|
314
|
+
* first blow plus half from each of the rest (integer division per term,
|
|
315
|
+
* summed - not the total divided by two).
|
|
316
|
+
*
|
|
317
|
+
* Each non-LASH effect's dice is parsed fresh from its raw string and any
|
|
318
|
+
* SPELL_POWER expression rebound to `race` (the only base value monster-spell
|
|
319
|
+
* damage dice reference - see reference/lib/gamedata/monster_spell.txt),
|
|
320
|
+
* mirroring upstream's do_mon_spell / mon-cast.ts buildSpellEffectChain
|
|
321
|
+
* pattern of rebuilding the bound dice per caster rather than mutating the
|
|
322
|
+
* shared MonsterSpell record (which every race with that spell shares).
|
|
323
|
+
*/
|
|
324
|
+
export function monSpellNonhpDamage(effects, race) {
|
|
325
|
+
let dam = 0;
|
|
326
|
+
for (const effect of effects) {
|
|
327
|
+
if (effect.eff === "LASH") {
|
|
328
|
+
for (let i = 0; i < race.blows.length; i++) {
|
|
329
|
+
const blowDice = race.blows[i].dice;
|
|
330
|
+
if (!blowDice)
|
|
331
|
+
continue;
|
|
332
|
+
const full = maximiseRandomValue(blowDice.randomValue());
|
|
333
|
+
dam += i === 0 ? full : Math.trunc(full / 2);
|
|
334
|
+
}
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
if (!effect.dice || effect.eff === "TIMED_INC" || effect.diceRaw === null) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
const dice = new Dice();
|
|
341
|
+
if (!dice.parseString(effect.diceRaw))
|
|
342
|
+
continue;
|
|
343
|
+
for (const x of effect.exprs) {
|
|
344
|
+
if (x.base.toUpperCase() !== "SPELL_POWER")
|
|
345
|
+
continue;
|
|
346
|
+
const expr = new Expression();
|
|
347
|
+
expr.setBaseValue(() => race.spellPower);
|
|
348
|
+
expr.addOperationsString(x.expr);
|
|
349
|
+
dice.bindExpression(x.name, expr);
|
|
350
|
+
}
|
|
351
|
+
dam += maximiseRandomValue(dice.randomValue());
|
|
352
|
+
}
|
|
353
|
+
return dam;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=spell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spell.js","sourceRoot":"","sources":["../../src/mon/spell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stealing objects from a monster, ported from reference/src/mon-util.c
|
|
3
|
+
* (Angband 4.2.6): get_random_monster_object (L1405) and steal_monster_item
|
|
4
|
+
* (L1430). This is the RNG core of the rogue / PF_STEAL "steal" command
|
|
5
|
+
* (do_cmd_steal, cmd-cave.c L1016) and, upstream, of the EAT_ITEM melee blow
|
|
6
|
+
* when the attacker's target is another monster (mon-blows.c L876).
|
|
7
|
+
*
|
|
8
|
+
* The heavy RNG order is the correctness crux, so it lives here worldless (like
|
|
9
|
+
* combat/mon-melee.ts): stealMonsterItem draws every roll in strict upstream
|
|
10
|
+
* order and mutates the monster's held pile directly, delegating the
|
|
11
|
+
* player-facing world work (gold gain, pack carry, drop_near, ignore checks,
|
|
12
|
+
* the hit-and-run teleport, EF_WAKE aggro) to the injected StealEnv. The game
|
|
13
|
+
* binding (game/steal.ts) supplies that env over the live GameState.
|
|
14
|
+
*
|
|
15
|
+
* RNG draw order (mon-util.c L1430-1539), verified against the C:
|
|
16
|
+
* 1. get_random_monster_object(mon): a reservoir pick over mon->held_obj -
|
|
17
|
+
* one_in_(i) for each non-quest-artifact held object, i counting from 1.
|
|
18
|
+
* 2. (no object) one_in_(3), then monster_wake(mon, false, 100) on success
|
|
19
|
+
* (which draws randint0(100) for awareness).
|
|
20
|
+
* 3. monster_reaction = guard/2 + randint1(MAX(guard, 1)); the item-weight
|
|
21
|
+
* term adds no RNG.
|
|
22
|
+
* 4. success (reaction < skill): pile_excise, then either gold gain, or a
|
|
23
|
+
* drop_near (its own breakage / grid RNG) when the item is ignored or the
|
|
24
|
+
* pack is full, or a plain inven_carry; then mon_dec_timed(SLEEP) (which
|
|
25
|
+
* may draw for its save), then the hit-and-run teleport when TMD_ATT_RUN.
|
|
26
|
+
* 5. decent fail (reaction/2 < skill): monster_wake(mon, true, 50).
|
|
27
|
+
* 6. bungle (else): monster_wake(mon, true, 100), then EF_WAKE aggro.
|
|
28
|
+
*
|
|
29
|
+
* DEFERRED (noted, no RNG impact): the object knowledge bookkeeping upstream
|
|
30
|
+
* threads here - object_grab / object_see / delist_object / object_delete - is
|
|
31
|
+
* the knowledge subsystem (#24), carried by the env's carry/gainGold seams; and
|
|
32
|
+
* react_to_slay blocking the monster-thief path (midx >= 0) is deferred exactly
|
|
33
|
+
* as the EAT_ITEM blow already defers it (game/mon-side.ts / mon-cmd.ts). The
|
|
34
|
+
* mon-vs-mon EAT_ITEM path wires stealMonsterItem from game/mon-cmd.ts.
|
|
35
|
+
*/
|
|
36
|
+
import type { Rng } from "../rng.js";
|
|
37
|
+
import type { GameObject } from "../obj/object.js";
|
|
38
|
+
import type { Monster } from "./monster.js";
|
|
39
|
+
import type { LoreStore } from "./lore.js";
|
|
40
|
+
/**
|
|
41
|
+
* get_random_monster_object (mon-util.c L1405): pick one object from the
|
|
42
|
+
* monster's held pile with uniform probability, skipping quest artifacts. The
|
|
43
|
+
* reservoir draw (one_in_(i), i from 1) matches upstream exactly, so the choice
|
|
44
|
+
* is the same for a given RNG stream.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getRandomMonsterObject(rng: Rng, mon: Monster): GameObject | null;
|
|
47
|
+
/**
|
|
48
|
+
* The world-facing operations steal_monster_item delegates, so the RNG core
|
|
49
|
+
* stays worldless. The game binding (game/steal.ts) supplies these over the
|
|
50
|
+
* live GameState; the RNG-drawing seams (dropStolen, wakeAll, hitAndRun) run at
|
|
51
|
+
* the exact point upstream draws them.
|
|
52
|
+
*/
|
|
53
|
+
export interface StealEnv {
|
|
54
|
+
/** msg(): route messages to the game's sink. */
|
|
55
|
+
msg(text: string): void;
|
|
56
|
+
/** monster_desc(mon, MDESC_TARG) (mon-util.c L1438): the victim's name. */
|
|
57
|
+
monName(mon: Monster): string;
|
|
58
|
+
/**
|
|
59
|
+
* monster_desc(mon, MDESC_STANDARD) (mon-util.c L1524): the re-described,
|
|
60
|
+
* capitalised name for the bungle "cries out in anger" line. Defaults to
|
|
61
|
+
* monName when absent.
|
|
62
|
+
*/
|
|
63
|
+
monNameStandard?(mon: Monster): string;
|
|
64
|
+
/** player->state.skills[SKILL_STEALTH]. */
|
|
65
|
+
readonly stealthSkill: number;
|
|
66
|
+
/** adj_dex_th[player->state.stat_ind[STAT_DEX]]. */
|
|
67
|
+
readonly dexToHit: number;
|
|
68
|
+
/** player->state.speed. */
|
|
69
|
+
readonly playerSpeed: number;
|
|
70
|
+
/** player->timed[TMD_BLIND] || [TMD_CONFUSED] || [TMD_IMAGE]. */
|
|
71
|
+
readonly statusPenalty: boolean;
|
|
72
|
+
/** player->timed[TMD_ATT_RUN] (the hit-and-run stance is active). */
|
|
73
|
+
readonly attRun: boolean;
|
|
74
|
+
/** object_weight_one(obj), curses folded in. */
|
|
75
|
+
objectWeight(obj: GameObject): number;
|
|
76
|
+
/** tval_is_money(obj). */
|
|
77
|
+
isMoney(obj: GameObject): boolean;
|
|
78
|
+
/** object_desc(obj, PREFIX|FULL): the display name for messages. */
|
|
79
|
+
objectName(obj: GameObject): string;
|
|
80
|
+
/** ignore_item_ok(player, obj). */
|
|
81
|
+
isIgnored(obj: GameObject): boolean;
|
|
82
|
+
/** inven_carry_okay(obj): the pack can accept it. */
|
|
83
|
+
canCarry(obj: GameObject): boolean;
|
|
84
|
+
/** player->au += obj->pval; PR_GOLD redraw; delist / object_delete. */
|
|
85
|
+
gainGold(obj: GameObject): void;
|
|
86
|
+
/** object_grab + inven_carry(player, obj, true, true). */
|
|
87
|
+
carry(obj: GameObject): void;
|
|
88
|
+
/**
|
|
89
|
+
* drop_near(cave, &obj, 0, player->grid, true, true) then "You drop X." -
|
|
90
|
+
* the name is captured before the drop (upstream order); draws drop_near RNG.
|
|
91
|
+
*/
|
|
92
|
+
dropStolen(obj: GameObject): void;
|
|
93
|
+
/** effect_simple(EF_WAKE, source_monster(mon)): aggro monsters in LOS. */
|
|
94
|
+
wakeAll?(mon: Monster): void;
|
|
95
|
+
/**
|
|
96
|
+
* The TMD_ATT_RUN hit-and-run: "You vanish into the shadows!", EF_TELEPORT
|
|
97
|
+
* "20", then clear TMD_ATT_RUN. Draws the teleport RNG.
|
|
98
|
+
*/
|
|
99
|
+
hitAndRun?(): void;
|
|
100
|
+
/** monster_desc for the thief (midx >= 0 path); the race name (#25). */
|
|
101
|
+
thiefName?(midx: number): string;
|
|
102
|
+
/** monster_carry(cave, thief, obj) (midx >= 0 path). */
|
|
103
|
+
thiefCarry?(midx: number, obj: GameObject): void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* steal_monster_item (mon-util.c L1430): the thief with index `midx` steals a
|
|
107
|
+
* random item from `mon`. `midx < 0` is the player (do_cmd_steal); `midx >= 0`
|
|
108
|
+
* is a monster thief (the EAT_ITEM blow against another monster). Every RNG
|
|
109
|
+
* draw is issued in strict upstream order; see the module header.
|
|
110
|
+
*/
|
|
111
|
+
export declare function stealMonsterItem(rng: Rng, lore: LoreStore, mon: Monster, midx: number, env: StealEnv): void;
|
|
112
|
+
//# sourceMappingURL=steal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steal.d.ts","sourceRoot":"","sources":["../../src/mon/steal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM3C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,GACX,UAAU,GAAG,IAAI,CAUnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;IACtC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IAClC,oEAAoE;IACpE,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;IACpC,mCAAmC;IACnC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,0DAA0D;IAC1D,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,wDAAwD;IACxD,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CAClD;AAQD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,GACZ,IAAI,CAoGN"}
|