@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,789 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The item-targeting effect handlers, ported from
|
|
3
|
+
* reference/src/effect-handler-general.c (Angband 4.2.6): EF_ENCHANT (L2095
|
|
4
|
+
* with enchant_spell / enchant / enchant_score, L255), EF_RECHARGE (L2127
|
|
5
|
+
* with recharge_failure_chance, effects.c L563), EF_REMOVE_CURSE (L1051 with
|
|
6
|
+
* uncurse_object, L179), EF_BRAND_WEAPON / EF_BRAND_AMMO / EF_BRAND_BOLTS
|
|
7
|
+
* (L3233 with brand_object, L427), EF_CURSE_ARMOR / EF_CURSE_WEAPON (L3103),
|
|
8
|
+
* EF_CREATE_ARROWS (L3315) and EF_TAP_DEVICE (L3370).
|
|
9
|
+
*
|
|
10
|
+
* These effects target an object the player chooses (upstream get_item /
|
|
11
|
+
* cmd_get_item "tgtitem"). The chooser is the injected
|
|
12
|
+
* ItemEffectEnv.getItem seam (the item menu rides presentation, #25); absent,
|
|
13
|
+
* the choosing handlers return false unused - exactly the upstream cancel
|
|
14
|
+
* path, so the scroll or spell is not consumed.
|
|
15
|
+
*
|
|
16
|
+
* Simplifications, ledgered in parity/ledger/game-effect-item.yaml:
|
|
17
|
+
* ODESC descriptions ride the display layer (the kind's base name is used);
|
|
18
|
+
* obj->known sync rides rune-based knowledge; EF_IDENTIFY needs the
|
|
19
|
+
* per-object rune enumeration (object_learn_unknown_rune) and rides the
|
|
20
|
+
* knowledge/detection batch (#24).
|
|
21
|
+
*/
|
|
22
|
+
import { EF, OF, ORIGIN, TMD, TV } from "../generated/index.js";
|
|
23
|
+
import { ENCH_TOAC, ENCH_TOBOTH, ENCH_TODAM, ENCH_TOHIT, } from "../effects/effect.js";
|
|
24
|
+
import { effectCalculateValue } from "../effects/interpreter.js";
|
|
25
|
+
import { appendObjectCurse, removeObjectCurse, tvalCanHaveCharges, tvalIsAmmo, tvalIsArmor, tvalIsBolt, tvalIsStaff, tvalIsWand, tvalIsWeapon, } from "../obj/object.js";
|
|
26
|
+
import { buildRuneList, objectLearnUnknownRune, objectRunesKnown, playerLearnFlagRune, } from "../obj/knowledge.js";
|
|
27
|
+
import { ODESC } from "../obj/desc.js";
|
|
28
|
+
import { describeObject } from "./describe.js";
|
|
29
|
+
import { updatePlayerObjectKnowledge } from "./known.js";
|
|
30
|
+
import { egoApplyMagic, makeObject } from "../obj/make.js";
|
|
31
|
+
import { gearObjectForUse } from "./gear.js";
|
|
32
|
+
import { dropNear, floorExcise } from "./floor.js";
|
|
33
|
+
import { gameEnv } from "./effect-game-env.js";
|
|
34
|
+
/**
|
|
35
|
+
* enchant_spell's get_item request (effect-handler-general.c L383): a weapon,
|
|
36
|
+
* or armour when the enchant targets AC only. Shared by the ENCHANT handler
|
|
37
|
+
* (enchantSpell) and the shell probe (requestForEffect) so the tval filter can
|
|
38
|
+
* never drift between them.
|
|
39
|
+
*/
|
|
40
|
+
function enchantRequest(numAc) {
|
|
41
|
+
return {
|
|
42
|
+
prompt: "Enchant which item? ",
|
|
43
|
+
reject: "You have nothing to enchant.",
|
|
44
|
+
tester: numAc
|
|
45
|
+
? (o) => tvalIsArmor(o.tval)
|
|
46
|
+
: (o) => tvalIsWeapon(o.tval),
|
|
47
|
+
mode: { equip: true, inven: true, quiver: true, floor: true },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** item_tester_uncursable (obj-util.c): a removable (power in (0,100)) curse. */
|
|
51
|
+
function uncursableTester(o) {
|
|
52
|
+
return !!o.curses?.some((c, i) => i > 0 && c.power > 0 && c.power < 100);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* requestForEffect (single source of truth): the ItemRequest a choosing handler
|
|
56
|
+
* uses for a given EF code and decoded subtype. Both each handler and the pure
|
|
57
|
+
* shell probe (itemTargetRequest) read it, so the prompt / reject / tval filter
|
|
58
|
+
* / item modes never drift. Returns null for non-choosing effects and for the
|
|
59
|
+
* auto-target ones (BRAND_WEAPON / CURSE_ARMOR / CURSE_WEAPON / ACQUIRE).
|
|
60
|
+
*/
|
|
61
|
+
export function requestForEffect(code, subtype, state) {
|
|
62
|
+
switch (code) {
|
|
63
|
+
case EF.ENCHANT:
|
|
64
|
+
/* enchant_spell L383: filter = num_ac ? armour : weapon. The first
|
|
65
|
+
* getItem targets a weapon unless the effect is AC-only. */
|
|
66
|
+
return enchantRequest((subtype & (ENCH_TOHIT | ENCH_TODAM)) === 0 ? 1 : 0);
|
|
67
|
+
case EF.RECHARGE:
|
|
68
|
+
return {
|
|
69
|
+
prompt: "Recharge which item? ",
|
|
70
|
+
reject: "You have nothing to recharge.",
|
|
71
|
+
tester: (o) => tvalCanHaveCharges(o.tval),
|
|
72
|
+
mode: { inven: true, floor: true },
|
|
73
|
+
};
|
|
74
|
+
case EF.REMOVE_CURSE:
|
|
75
|
+
return {
|
|
76
|
+
prompt: "Uncurse which item? ",
|
|
77
|
+
reject: "You have no curses to remove.",
|
|
78
|
+
tester: uncursableTester,
|
|
79
|
+
mode: { equip: true, inven: true, quiver: true, floor: true },
|
|
80
|
+
curses: true,
|
|
81
|
+
};
|
|
82
|
+
case EF.BRAND_AMMO:
|
|
83
|
+
return {
|
|
84
|
+
prompt: "Brand which kind of ammunition? ",
|
|
85
|
+
reject: "You have nothing to brand.",
|
|
86
|
+
tester: (o) => tvalIsAmmo(o.tval),
|
|
87
|
+
mode: { inven: true, quiver: true, floor: true },
|
|
88
|
+
};
|
|
89
|
+
case EF.BRAND_BOLTS:
|
|
90
|
+
return {
|
|
91
|
+
prompt: "Brand which bolts? ",
|
|
92
|
+
reject: "You have no bolts to brand.",
|
|
93
|
+
tester: (o) => tvalIsBolt(o.tval),
|
|
94
|
+
mode: { inven: true, quiver: true, floor: true },
|
|
95
|
+
};
|
|
96
|
+
case EF.CREATE_ARROWS:
|
|
97
|
+
return {
|
|
98
|
+
prompt: "Make arrows from which staff? ",
|
|
99
|
+
reject: "You have no staff to use.",
|
|
100
|
+
tester: (o) => tvalIsStaff(o.tval),
|
|
101
|
+
mode: { inven: true, floor: true },
|
|
102
|
+
};
|
|
103
|
+
case EF.TAP_DEVICE:
|
|
104
|
+
return {
|
|
105
|
+
prompt: "Drain charges from which item? ",
|
|
106
|
+
reject: "You have nothing to drain charges from.",
|
|
107
|
+
tester: (o) => tvalCanHaveCharges(o.tval),
|
|
108
|
+
mode: { inven: true, floor: true },
|
|
109
|
+
};
|
|
110
|
+
case EF.IDENTIFY: {
|
|
111
|
+
/* item_tester_unknown (L247): not all runes known. */
|
|
112
|
+
const runes = buildRuneList(state.runeEnv);
|
|
113
|
+
const player = state.actor.player;
|
|
114
|
+
return {
|
|
115
|
+
prompt: "Identify which item? ",
|
|
116
|
+
reject: "You have nothing to identify.",
|
|
117
|
+
tester: (o) => !objectRunesKnown(player, state.runeEnv, o, runes),
|
|
118
|
+
mode: { equip: true, inven: true, quiver: true, floor: true },
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* itemTargetRequest (the RNG-free shell probe): walk a built effect chain and
|
|
127
|
+
* return the ItemRequest the first item-choosing handler will use, decoding
|
|
128
|
+
* subtype exactly as the handler does. The shell calls this before running the
|
|
129
|
+
* effect so it can pre-resolve the target and the effect runs EXACTLY ONCE
|
|
130
|
+
* (preserving the pre-getItem RNG draw order); chain construction draws no RNG.
|
|
131
|
+
* Returns null for objects / spells with no item-target effect.
|
|
132
|
+
*/
|
|
133
|
+
export function itemTargetRequest(chain, state) {
|
|
134
|
+
for (let e = chain; e; e = e.next) {
|
|
135
|
+
if (typeof e.index !== "number")
|
|
136
|
+
continue;
|
|
137
|
+
const req = requestForEffect(e.index, e.subtype, state);
|
|
138
|
+
if (req)
|
|
139
|
+
return req;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The dice_string format built inline in effect_handler_REMOVE_CURSE
|
|
145
|
+
* (effect-handler-general.c L1071-1085), from the effect's un-rolled dice
|
|
146
|
+
* spec (base/dice/sides). Pure: does not draw the RNG (mirrors
|
|
147
|
+
* Dice.randomValue(), not Dice.roll()).
|
|
148
|
+
*/
|
|
149
|
+
function formatUncurseDiceString(v) {
|
|
150
|
+
if (v.dice === 1 && v.base)
|
|
151
|
+
return `${v.base}+d${v.sides}`;
|
|
152
|
+
if (v.dice && v.base)
|
|
153
|
+
return `${v.base}+${v.dice}d${v.sides}`;
|
|
154
|
+
if (v.dice === 1)
|
|
155
|
+
return `d${v.sides}`;
|
|
156
|
+
if (v.dice)
|
|
157
|
+
return `${v.dice}d${v.sides}`;
|
|
158
|
+
return `${v.base}`;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The curse-removal picker's header needs the spell's "strength" dice
|
|
162
|
+
* formula (ui-curse.c curse_menu's `dice_string` parameter) BEFORE the effect
|
|
163
|
+
* runs, so the shell can show "Remove which curse (spell strength <dice>)?"
|
|
164
|
+
* while still pre-resolving the item/curse pick (preserving RNG order). This
|
|
165
|
+
* walks the already-built chain to the REMOVE_CURSE node and formats its raw
|
|
166
|
+
* (un-rolled) dice spec - a pure read, no RNG draw. Returns null when the
|
|
167
|
+
* chain has no REMOVE_CURSE effect.
|
|
168
|
+
*/
|
|
169
|
+
export function removeCurseDiceString(chain) {
|
|
170
|
+
for (let e = chain; e; e = e.next) {
|
|
171
|
+
if (e.index !== EF.REMOVE_CURSE)
|
|
172
|
+
continue;
|
|
173
|
+
const rv = e.dice ? e.dice.randomValue() : { base: 0, dice: 0, sides: 0, mBonus: 0 };
|
|
174
|
+
return formatUncurseDiceString(rv);
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
/** msg() over the effect context's optional message sink. */
|
|
179
|
+
function say(ctx, text) {
|
|
180
|
+
ctx.env.messages?.msg(text);
|
|
181
|
+
}
|
|
182
|
+
/** object_is_carried: the object lives in the player's gear store. */
|
|
183
|
+
function objectIsCarried(state, obj) {
|
|
184
|
+
for (const o of state.gear.store.values()) {
|
|
185
|
+
if (o === obj)
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Destroy one item of the stack, wherever it lives (the recharge backfire /
|
|
192
|
+
* staff consumption path: gear_object_for_use or floor_object_for_use plus
|
|
193
|
+
* object_delete).
|
|
194
|
+
*/
|
|
195
|
+
function destroyOneItem(state, obj) {
|
|
196
|
+
for (const [handle, o] of state.gear.store) {
|
|
197
|
+
if (o === obj) {
|
|
198
|
+
gearObjectForUse(state.gear, state.actor.player, handle, 1);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/* On the floor: shrink the stack, or excise the last one. */
|
|
203
|
+
for (const [key, pile] of state.floor) {
|
|
204
|
+
if (!pile.includes(obj))
|
|
205
|
+
continue;
|
|
206
|
+
if (obj.number > 1) {
|
|
207
|
+
obj.number--;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const grid = {
|
|
211
|
+
x: key % state.chunk.width,
|
|
212
|
+
y: Math.trunc(key / state.chunk.width),
|
|
213
|
+
};
|
|
214
|
+
floorExcise(state, grid, obj);
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/* ------------------------------------------------------------------ *
|
|
220
|
+
* Enchantment (effect-handler-general.c L255)
|
|
221
|
+
* ------------------------------------------------------------------ */
|
|
222
|
+
/** Used by the enchant() function (chance of failure). */
|
|
223
|
+
const ENCHANT_TABLE = [
|
|
224
|
+
0, 10, 20, 40, 80, 160, 280, 400, 550, 700, 800, 900, 950, 970, 990, 1000,
|
|
225
|
+
];
|
|
226
|
+
/** enchant_score: try to increase one bonus score. */
|
|
227
|
+
function enchantScore(state, score, isArtifact) {
|
|
228
|
+
/* Artifacts resist enchantment half the time */
|
|
229
|
+
if (isArtifact && state.rng.randint0(100) < 50)
|
|
230
|
+
return { score, raised: false };
|
|
231
|
+
/* Figure out the chance to enchant */
|
|
232
|
+
let chance;
|
|
233
|
+
if (score < 0)
|
|
234
|
+
chance = 0;
|
|
235
|
+
else if (score > 15)
|
|
236
|
+
chance = 1000;
|
|
237
|
+
else
|
|
238
|
+
chance = ENCHANT_TABLE[score];
|
|
239
|
+
/* If we roll less-than-or-equal to chance, it fails */
|
|
240
|
+
if (state.rng.randint1(1000) <= chance)
|
|
241
|
+
return { score, raised: false };
|
|
242
|
+
return { score: score + 1, raised: true };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* enchant (L319): try `n` times to raise the item's to-hit / to-dam / to-ac
|
|
246
|
+
* per `eflag`, with pile resistance (ammo is 20x easier) and the artifact
|
|
247
|
+
* resist. Returns true if any bonus was raised. The obj->known display sync
|
|
248
|
+
* rides rune knowledge.
|
|
249
|
+
*/
|
|
250
|
+
export function enchant(state, obj, n, eflag) {
|
|
251
|
+
let res = false;
|
|
252
|
+
const isArtifact = !!obj.artifact;
|
|
253
|
+
/* Large piles resist enchantment */
|
|
254
|
+
let prob = obj.number * 100;
|
|
255
|
+
/* Missiles are easy to enchant */
|
|
256
|
+
if (tvalIsAmmo(obj.tval))
|
|
257
|
+
prob = Math.trunc(prob / 20);
|
|
258
|
+
/* Try "n" times */
|
|
259
|
+
for (let i = 0; i < n; i++) {
|
|
260
|
+
/* Roll for pile resistance */
|
|
261
|
+
if (prob > 100 && state.rng.randint0(prob) >= 100)
|
|
262
|
+
continue;
|
|
263
|
+
/* Try the three kinds of enchantment we can do */
|
|
264
|
+
/* enchant2 (effect-handler-general.c:294) */
|
|
265
|
+
if (eflag & ENCH_TOHIT) {
|
|
266
|
+
const r = enchantScore(state, obj.toH, isArtifact);
|
|
267
|
+
obj.toH = r.score;
|
|
268
|
+
if (r.raised)
|
|
269
|
+
res = true;
|
|
270
|
+
}
|
|
271
|
+
if (eflag & ENCH_TODAM) {
|
|
272
|
+
const r = enchantScore(state, obj.toD, isArtifact);
|
|
273
|
+
obj.toD = r.score;
|
|
274
|
+
if (r.raised)
|
|
275
|
+
res = true;
|
|
276
|
+
}
|
|
277
|
+
if (eflag & ENCH_TOAC) {
|
|
278
|
+
const r = enchantScore(state, obj.toA, isArtifact);
|
|
279
|
+
obj.toA = r.score;
|
|
280
|
+
if (r.raised)
|
|
281
|
+
res = true;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (!res)
|
|
285
|
+
return false;
|
|
286
|
+
/* Recalculate bonuses (PU_BONUS | PU_INVEN) */
|
|
287
|
+
state.updateBonuses?.();
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* enchant_spell (L373): choose a weapon (or armour when num_ac) and enchant
|
|
292
|
+
* it. Returns true if attempted, false if cancelled.
|
|
293
|
+
*/
|
|
294
|
+
function enchantSpell(ctx, env, numHit, numDam, numAc) {
|
|
295
|
+
const { state } = env;
|
|
296
|
+
const obj = env.item?.getItem?.(enchantRequest(numAc));
|
|
297
|
+
if (!obj)
|
|
298
|
+
return false;
|
|
299
|
+
/* Describe (ODESC_BASE, obj-desc gates the name by knowledge) */
|
|
300
|
+
const name = describeObject(state, obj, ODESC.BASE);
|
|
301
|
+
say(ctx, `${objectIsCarried(state, obj) ? "Your" : "The"} ${name} glow${obj.number > 1 ? "" : "s"} brightly!`);
|
|
302
|
+
/* Enchant */
|
|
303
|
+
let okay = false;
|
|
304
|
+
if (numDam && enchant(state, obj, numHit, ENCH_TOBOTH))
|
|
305
|
+
okay = true;
|
|
306
|
+
else if (enchant(state, obj, numHit, ENCH_TOHIT))
|
|
307
|
+
okay = true;
|
|
308
|
+
else if (enchant(state, obj, numDam, ENCH_TODAM))
|
|
309
|
+
okay = true;
|
|
310
|
+
if (enchant(state, obj, numAc, ENCH_TOAC))
|
|
311
|
+
okay = true;
|
|
312
|
+
/* Failure */
|
|
313
|
+
if (!okay)
|
|
314
|
+
say(ctx, "The enchantment failed.");
|
|
315
|
+
/* Something happened */
|
|
316
|
+
return true;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* brand_object (L427): turn a non-magical object into the "of `name`" ego,
|
|
320
|
+
* with its aura message and a 4-6 round hit/dam enchant. Artifacts, egos
|
|
321
|
+
* and worthless items cannot be branded. player_know_object rides rune
|
|
322
|
+
* knowledge.
|
|
323
|
+
*/
|
|
324
|
+
export function brandObject(ctx, env, obj, name) {
|
|
325
|
+
const { state } = env;
|
|
326
|
+
const egos = env.item?.reg?.egos;
|
|
327
|
+
if (obj && obj.kind.cost && !obj.artifact && !obj.ego && egos) {
|
|
328
|
+
/* Get the right ego type for the object */
|
|
329
|
+
const brand = `of ${name}`;
|
|
330
|
+
const ego = egos.find((e) => e.name === brand && e.possItems.has(obj.kind.kidx));
|
|
331
|
+
if (!ego) {
|
|
332
|
+
say(ctx, "The branding failed.");
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
/* Describe (ODESC_BASE) */
|
|
336
|
+
say(ctx, `The ${describeObject(state, obj, ODESC.BASE)} ${obj.number > 1 ? "are" : "is"} surrounded with an aura of ${name}.`);
|
|
337
|
+
/* Make it an ego item */
|
|
338
|
+
obj.ego = ego;
|
|
339
|
+
if (env.item?.reg)
|
|
340
|
+
egoApplyMagic(state.rng, env.item.reg, obj, 0);
|
|
341
|
+
state.updateBonuses?.();
|
|
342
|
+
/* Enchant */
|
|
343
|
+
enchant(state, obj, state.rng.randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
say(ctx, "The branding failed.");
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* recharge_failure_chance (effects.c L563): N for the 1-in-N backfire.
|
|
351
|
+
*/
|
|
352
|
+
export function rechargeFailureChance(obj, strength) {
|
|
353
|
+
/* Ease of recharge ranges from 9 down to 4 (wands) or 3 (staffs) */
|
|
354
|
+
const easeOfRecharge = Math.trunc((100 - obj.kind.level) / 10);
|
|
355
|
+
const rawChance = strength + easeOfRecharge - 2 * Math.trunc(obj.pval / obj.number);
|
|
356
|
+
return rawChance > 1 ? rawChance : 1;
|
|
357
|
+
}
|
|
358
|
+
/* ------------------------------------------------------------------ *
|
|
359
|
+
* The handlers
|
|
360
|
+
* ------------------------------------------------------------------ */
|
|
361
|
+
/**
|
|
362
|
+
* EF_ENCHANT: enchant an item per the subtype's ENCH_ flags, `value` times.
|
|
363
|
+
*/
|
|
364
|
+
const handleENCHANT = (ctx) => {
|
|
365
|
+
const env = gameEnv(ctx);
|
|
366
|
+
if (!env)
|
|
367
|
+
return true;
|
|
368
|
+
const value = env.state.rng.randcalc(ctx.value, env.state.chunk.depth, "randomise");
|
|
369
|
+
let used = false;
|
|
370
|
+
ctx.ident = true;
|
|
371
|
+
if ((ctx.subtype & ENCH_TOBOTH) === ENCH_TOBOTH) {
|
|
372
|
+
if (enchantSpell(ctx, env, value, value, 0))
|
|
373
|
+
used = true;
|
|
374
|
+
}
|
|
375
|
+
else if (ctx.subtype & ENCH_TOHIT) {
|
|
376
|
+
if (enchantSpell(ctx, env, value, 0, 0))
|
|
377
|
+
used = true;
|
|
378
|
+
}
|
|
379
|
+
else if (ctx.subtype & ENCH_TODAM) {
|
|
380
|
+
if (enchantSpell(ctx, env, 0, value, 0))
|
|
381
|
+
used = true;
|
|
382
|
+
}
|
|
383
|
+
if (ctx.subtype & ENCH_TOAC) {
|
|
384
|
+
if (enchantSpell(ctx, env, 0, 0, value))
|
|
385
|
+
used = true;
|
|
386
|
+
}
|
|
387
|
+
return used;
|
|
388
|
+
};
|
|
389
|
+
/**
|
|
390
|
+
* EF_RECHARGE: recharge a wand or staff; strength is value.base + the dice
|
|
391
|
+
* roll. High-level and highly-charged items are harder; a backfire destroys
|
|
392
|
+
* one item of the stack.
|
|
393
|
+
*/
|
|
394
|
+
const handleRECHARGE = (ctx) => {
|
|
395
|
+
const env = gameEnv(ctx);
|
|
396
|
+
if (!env)
|
|
397
|
+
return true;
|
|
398
|
+
const { state } = env;
|
|
399
|
+
const strength = ctx.value.base + state.rng.damroll(ctx.value.dice, ctx.value.sides);
|
|
400
|
+
/* Immediately obvious */
|
|
401
|
+
ctx.ident = true;
|
|
402
|
+
/* The recharge_pow failure-rate display rides presentation (#25). */
|
|
403
|
+
/* Get an item */
|
|
404
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.RECHARGE, 0, state));
|
|
405
|
+
if (!obj)
|
|
406
|
+
return false;
|
|
407
|
+
const i = rechargeFailureChance(obj, strength);
|
|
408
|
+
/* Back-fire */
|
|
409
|
+
if (i <= 1 || state.rng.oneIn(i)) {
|
|
410
|
+
say(ctx, "The recharge backfires!");
|
|
411
|
+
say(ctx, "There is a bright flash of light.");
|
|
412
|
+
destroyOneItem(state, obj);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
/* Extract a "power" */
|
|
416
|
+
const easeOfRecharge = Math.trunc((100 - obj.kind.level) / 10);
|
|
417
|
+
const t = Math.trunc(strength / (10 - easeOfRecharge)) + 1;
|
|
418
|
+
/* Recharge based on the power */
|
|
419
|
+
if (t > 0)
|
|
420
|
+
obj.pval += 2 + state.rng.randint1(t);
|
|
421
|
+
}
|
|
422
|
+
/* Something was done */
|
|
423
|
+
return true;
|
|
424
|
+
};
|
|
425
|
+
/**
|
|
426
|
+
* EF_REMOVE_CURSE: attempt to lift a curse from a chosen item
|
|
427
|
+
* (uncurse_object, L179). Success removes the curse; failure makes the item
|
|
428
|
+
* fragile, and a fragile item explodes one time in four.
|
|
429
|
+
*/
|
|
430
|
+
const handleREMOVE_CURSE = (ctx) => {
|
|
431
|
+
const env = gameEnv(ctx);
|
|
432
|
+
if (!env)
|
|
433
|
+
return true;
|
|
434
|
+
const { state } = env;
|
|
435
|
+
const strength = effectCalculateValue(ctx, false);
|
|
436
|
+
ctx.ident = true;
|
|
437
|
+
/* item_tester_uncursable: at least one removable (power < 100) curse.
|
|
438
|
+
* Upstream tests the known twin; knowledge is rune-based here. */
|
|
439
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.REMOVE_CURSE, 0, state));
|
|
440
|
+
if (!obj || !obj.curses)
|
|
441
|
+
return false;
|
|
442
|
+
/* get_curse: pick among the object's active curses. */
|
|
443
|
+
const active = [];
|
|
444
|
+
obj.curses.forEach((c, i) => {
|
|
445
|
+
if (i > 0 && c.power > 0)
|
|
446
|
+
active.push(i);
|
|
447
|
+
});
|
|
448
|
+
const pick = env.item?.chooseCurse
|
|
449
|
+
? env.item.chooseCurse(obj, active)
|
|
450
|
+
: (active[0] ?? null);
|
|
451
|
+
if (pick === null || pick === undefined)
|
|
452
|
+
return false;
|
|
453
|
+
const curse = obj.curses[pick];
|
|
454
|
+
if (curse.power >= 100) {
|
|
455
|
+
/* Curse is permanent */
|
|
456
|
+
return false;
|
|
457
|
+
}
|
|
458
|
+
else if (strength >= curse.power) {
|
|
459
|
+
/* Successfully removed this curse (effect-handler-general.c:193-196). The
|
|
460
|
+
* SECOND call passes message = true, so success does announce which curse
|
|
461
|
+
* went: obj-curse.c:231 "The %s curse is removed!". The message rides
|
|
462
|
+
* remove_object_curse's own power > 0 branch, so a pick the object does not
|
|
463
|
+
* actually carry announces nothing - which is why the string moved out of
|
|
464
|
+
* this call site. */
|
|
465
|
+
const curseReg = env.item?.reg?.curses;
|
|
466
|
+
removeObjectCurse(obj, pick, true, curseReg ? { curses: curseReg, msg: (text) => say(ctx, text) } : undefined);
|
|
467
|
+
}
|
|
468
|
+
else if (!obj.flags.has(OF.FRAGILE)) {
|
|
469
|
+
/* Failure to remove, object is now fragile */
|
|
470
|
+
say(ctx, `The spell fails; your ${describeObject(state, obj, ODESC.FULL)} is now fragile.`);
|
|
471
|
+
obj.flags.on(OF.FRAGILE);
|
|
472
|
+
playerLearnFlagRune(state.actor.player, state.runeEnv, OF.FRAGILE);
|
|
473
|
+
}
|
|
474
|
+
else if (state.rng.oneIn(4)) {
|
|
475
|
+
/* Failure - unlucky fragile object is destroyed */
|
|
476
|
+
let dam = state.rng.damroll(5, 5);
|
|
477
|
+
const player = ctx.env.player;
|
|
478
|
+
if (player?.applyDamageReduction)
|
|
479
|
+
dam = player.applyDamageReduction(dam);
|
|
480
|
+
/* show_damage " (N)" suffix (effect-handler-general.c L212-216). */
|
|
481
|
+
const damText = dam > 0 && ctx.env.showDamage ? ` (${dam})` : "";
|
|
482
|
+
say(ctx, `There is a bang and a flash!${damText}`);
|
|
483
|
+
/* Artifacts are marked as lost (effect-handler-general.c L220-222). */
|
|
484
|
+
if (obj.artifact)
|
|
485
|
+
state.onArtifactLost?.(obj.artifact);
|
|
486
|
+
destroyOneItem(state, obj);
|
|
487
|
+
player?.takeHit?.(dam, "Failed uncursing");
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
/* Non-destructive failure */
|
|
491
|
+
say(ctx, "The removal fails.");
|
|
492
|
+
}
|
|
493
|
+
/* Recalculate bonuses (PU_BONUS) */
|
|
494
|
+
state.updateBonuses?.();
|
|
495
|
+
return true;
|
|
496
|
+
};
|
|
497
|
+
/**
|
|
498
|
+
* EF_BRAND_WEAPON: brand the wielded weapon Flame or Frost.
|
|
499
|
+
*/
|
|
500
|
+
const handleBRAND_WEAPON = (ctx) => {
|
|
501
|
+
const env = gameEnv(ctx);
|
|
502
|
+
if (!env)
|
|
503
|
+
return true;
|
|
504
|
+
const { state } = env;
|
|
505
|
+
const slot = state.actor.player.body.slots.findIndex((s) => s.type === "WEAPON");
|
|
506
|
+
const obj = slot >= 0 ? state.runeEnv.slotObject(slot) : null;
|
|
507
|
+
/* Select the brand */
|
|
508
|
+
const brand = state.rng.oneIn(2) ? "Flame" : "Frost";
|
|
509
|
+
/* Brand the weapon */
|
|
510
|
+
brandObject(ctx, env, obj, brand);
|
|
511
|
+
ctx.ident = true;
|
|
512
|
+
return true;
|
|
513
|
+
};
|
|
514
|
+
/**
|
|
515
|
+
* EF_BRAND_AMMO: brand some non-magical ammo Flame, Frost or Venom.
|
|
516
|
+
*/
|
|
517
|
+
const handleBRAND_AMMO = (ctx) => {
|
|
518
|
+
const env = gameEnv(ctx);
|
|
519
|
+
if (!env)
|
|
520
|
+
return true;
|
|
521
|
+
const { state } = env;
|
|
522
|
+
/* Select the brand */
|
|
523
|
+
const brand = state.rng.oneIn(3)
|
|
524
|
+
? "Flame"
|
|
525
|
+
: state.rng.oneIn(2)
|
|
526
|
+
? "Frost"
|
|
527
|
+
: "Venom";
|
|
528
|
+
ctx.ident = true;
|
|
529
|
+
/* Get an item */
|
|
530
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.BRAND_AMMO, 0, state));
|
|
531
|
+
if (!obj)
|
|
532
|
+
return false;
|
|
533
|
+
/* Brand the ammo */
|
|
534
|
+
brandObject(ctx, env, obj, brand);
|
|
535
|
+
return true;
|
|
536
|
+
};
|
|
537
|
+
/**
|
|
538
|
+
* EF_BRAND_BOLTS: brand some non-magical bolts Flame.
|
|
539
|
+
*/
|
|
540
|
+
const handleBRAND_BOLTS = (ctx) => {
|
|
541
|
+
const env = gameEnv(ctx);
|
|
542
|
+
if (!env)
|
|
543
|
+
return true;
|
|
544
|
+
ctx.ident = true;
|
|
545
|
+
/* Get an item */
|
|
546
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.BRAND_BOLTS, 0, env.state));
|
|
547
|
+
if (!obj)
|
|
548
|
+
return false;
|
|
549
|
+
/* Brand the bolts */
|
|
550
|
+
brandObject(ctx, env, obj, "Flame");
|
|
551
|
+
return true;
|
|
552
|
+
};
|
|
553
|
+
/** The shared CURSE_ARMOR / CURSE_WEAPON body. */
|
|
554
|
+
function curseWorn(ctx, env, slotType, hurt, what) {
|
|
555
|
+
const { state } = env;
|
|
556
|
+
const slot = state.actor.player.body.slots.findIndex((s) => s.type === slotType);
|
|
557
|
+
const obj = slot >= 0 ? state.runeEnv.slotObject(slot) : null;
|
|
558
|
+
/* Nothing to curse */
|
|
559
|
+
if (!obj)
|
|
560
|
+
return true;
|
|
561
|
+
const name = describeObject(state, obj, ODESC.FULL);
|
|
562
|
+
/* Attempt a saving throw for artifacts */
|
|
563
|
+
if (obj.artifact && state.rng.randint0(100) < 50) {
|
|
564
|
+
say(ctx, `A terrible black aura tries to surround your ${what}, but your ${name} resists the effects!`);
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
const curses = env.item?.reg?.curses;
|
|
568
|
+
say(ctx, `A terrible black aura blasts your ${name}!`);
|
|
569
|
+
/* Take down bonus a wee bit */
|
|
570
|
+
hurt(obj);
|
|
571
|
+
/* Try to find enough appropriate curses */
|
|
572
|
+
if (curses) {
|
|
573
|
+
let num = state.rng.randint1(3);
|
|
574
|
+
let maxTries = 20;
|
|
575
|
+
while (num && maxTries) {
|
|
576
|
+
const pick = state.rng.randint1(curses.length - 1);
|
|
577
|
+
const power = 10 * state.rng.mBonus(9, state.chunk.depth);
|
|
578
|
+
if (!curses[pick]?.poss[obj.tval]) {
|
|
579
|
+
maxTries--;
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
appendObjectCurse(state.rng, obj, pick, power, curses);
|
|
583
|
+
num--;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
/* Recalculate bonuses (PU_BONUS | PU_MANA); weight upkeep rides gear. */
|
|
587
|
+
state.updateBonuses?.();
|
|
588
|
+
}
|
|
589
|
+
ctx.ident = true;
|
|
590
|
+
return true;
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* EF_CURSE_ARMOR: a terrible black aura blasts the body armour.
|
|
594
|
+
*/
|
|
595
|
+
const handleCURSE_ARMOR = (ctx) => {
|
|
596
|
+
const env = gameEnv(ctx);
|
|
597
|
+
if (!env)
|
|
598
|
+
return true;
|
|
599
|
+
return curseWorn(ctx, env, "BODY_ARMOR", (obj) => {
|
|
600
|
+
obj.toA -= env.state.rng.randint1(3);
|
|
601
|
+
}, "armor");
|
|
602
|
+
};
|
|
603
|
+
/**
|
|
604
|
+
* EF_CURSE_WEAPON: a terrible black aura blasts the wielded weapon.
|
|
605
|
+
*/
|
|
606
|
+
const handleCURSE_WEAPON = (ctx) => {
|
|
607
|
+
const env = gameEnv(ctx);
|
|
608
|
+
if (!env)
|
|
609
|
+
return true;
|
|
610
|
+
return curseWorn(ctx, env, "WEAPON", (obj) => {
|
|
611
|
+
obj.toH = 0 - env.state.rng.randint1(3);
|
|
612
|
+
obj.toD = 0 - env.state.rng.randint1(3);
|
|
613
|
+
}, "weapon");
|
|
614
|
+
};
|
|
615
|
+
/**
|
|
616
|
+
* EF_CREATE_ARROWS: turn a staff into arrows (better staves make better
|
|
617
|
+
* arrows).
|
|
618
|
+
*/
|
|
619
|
+
const handleCREATE_ARROWS = (ctx) => {
|
|
620
|
+
const env = gameEnv(ctx);
|
|
621
|
+
if (!env)
|
|
622
|
+
return true;
|
|
623
|
+
const { state } = env;
|
|
624
|
+
/* Get an item */
|
|
625
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.CREATE_ARROWS, 0, state));
|
|
626
|
+
if (!obj)
|
|
627
|
+
return false;
|
|
628
|
+
/* Extract the object "level" */
|
|
629
|
+
const lev = obj.kind.level;
|
|
630
|
+
/* Roll for good */
|
|
631
|
+
let good = false;
|
|
632
|
+
let great = false;
|
|
633
|
+
if (state.rng.randint1(lev) > 25) {
|
|
634
|
+
good = true;
|
|
635
|
+
/* Roll for great */
|
|
636
|
+
if (state.rng.randint1(lev) > 50)
|
|
637
|
+
great = true;
|
|
638
|
+
}
|
|
639
|
+
/* Destroy the staff */
|
|
640
|
+
destroyOneItem(state, obj);
|
|
641
|
+
/* Make some arrows */
|
|
642
|
+
if (env.item?.makeDeps) {
|
|
643
|
+
const arrows = makeObject(state.rng, env.item.makeDeps, state.actor.player.lev, good, great, false, TV.ARROW, state.chunk.depth);
|
|
644
|
+
if (arrows)
|
|
645
|
+
dropNear(state, arrows, 0, state.actor.grid, true, true);
|
|
646
|
+
}
|
|
647
|
+
return true;
|
|
648
|
+
};
|
|
649
|
+
/**
|
|
650
|
+
* EF_TAP_DEVICE: drain a wand or staff's charges into mana.
|
|
651
|
+
*/
|
|
652
|
+
const handleTAP_DEVICE = (ctx) => {
|
|
653
|
+
const env = gameEnv(ctx);
|
|
654
|
+
if (!env)
|
|
655
|
+
return true;
|
|
656
|
+
const { state } = env;
|
|
657
|
+
const p = state.actor.player;
|
|
658
|
+
let used = false;
|
|
659
|
+
/* Get an item */
|
|
660
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.TAP_DEVICE, 0, state));
|
|
661
|
+
if (!obj)
|
|
662
|
+
return false;
|
|
663
|
+
/* Extract the object "level" and its energy. */
|
|
664
|
+
const lev = obj.kind.level;
|
|
665
|
+
let energy = 0;
|
|
666
|
+
let item = "";
|
|
667
|
+
if (tvalIsStaff(obj.tval)) {
|
|
668
|
+
energy = Math.trunc(((5 + lev) * 3 * obj.pval) / 2);
|
|
669
|
+
item = "staff";
|
|
670
|
+
}
|
|
671
|
+
else if (tvalIsWand(obj.tval)) {
|
|
672
|
+
energy = Math.trunc(((5 + lev) * 3 * obj.pval) / 2);
|
|
673
|
+
item = "wand";
|
|
674
|
+
}
|
|
675
|
+
/* Turn energy into mana. */
|
|
676
|
+
if (energy < 36) {
|
|
677
|
+
/* Require a reasonable amount of energy */
|
|
678
|
+
say(ctx, `That ${item} had no useable energy`);
|
|
679
|
+
}
|
|
680
|
+
else if (p.csp < p.msp) {
|
|
681
|
+
/* Drain the object. */
|
|
682
|
+
obj.pval = 0;
|
|
683
|
+
/* Increase mana. */
|
|
684
|
+
p.csp += Math.trunc(energy / 6);
|
|
685
|
+
p.cspFrac = 0;
|
|
686
|
+
if (p.csp > p.msp)
|
|
687
|
+
p.csp = p.msp;
|
|
688
|
+
say(ctx, "You feel your head clear.");
|
|
689
|
+
used = true;
|
|
690
|
+
const stun = state.rng.randint1(2);
|
|
691
|
+
ctx.env.player?.timed?.incTimed(TMD.STUN, stun, true, ctx.origin.what !== "player" || !ctx.aware, true);
|
|
692
|
+
}
|
|
693
|
+
else {
|
|
694
|
+
const cap = item.charAt(0).toUpperCase() + item.slice(1);
|
|
695
|
+
say(ctx, `Your mana was already at its maximum. ${cap} not drained.`);
|
|
696
|
+
}
|
|
697
|
+
return used;
|
|
698
|
+
};
|
|
699
|
+
/**
|
|
700
|
+
* EF_ACQUIRE: conjure `value` great objects out of thin air (acquirement,
|
|
701
|
+
* obj-make.c L1240).
|
|
702
|
+
*/
|
|
703
|
+
const handleACQUIRE = (ctx) => {
|
|
704
|
+
const env = gameEnv(ctx);
|
|
705
|
+
if (!env)
|
|
706
|
+
return true;
|
|
707
|
+
const { state } = env;
|
|
708
|
+
let num = effectCalculateValue(ctx, false);
|
|
709
|
+
ctx.ident = true;
|
|
710
|
+
if (!env.item?.makeDeps)
|
|
711
|
+
return true;
|
|
712
|
+
while (num-- > 0) {
|
|
713
|
+
/* Make a good (or great) object (if possible) */
|
|
714
|
+
const nice = makeObject(state.rng, env.item.makeDeps, state.chunk.depth, true, true, true, 0, state.chunk.depth);
|
|
715
|
+
if (!nice)
|
|
716
|
+
continue;
|
|
717
|
+
nice.origin = ORIGIN.ACQUIRE;
|
|
718
|
+
nice.originDepth = state.chunk.depth;
|
|
719
|
+
/* Drop the object */
|
|
720
|
+
dropNear(state, nice, 0, state.actor.grid, true, false);
|
|
721
|
+
}
|
|
722
|
+
return true;
|
|
723
|
+
};
|
|
724
|
+
/**
|
|
725
|
+
* EF_IDENTIFY (effect-handler-general.c L1945): learn one random unknown
|
|
726
|
+
* rune of a chosen not-fully-known item (object_learn_unknown_rune over the
|
|
727
|
+
* rune list). Cancelling (or no chooser wired) leaves the effect unused.
|
|
728
|
+
*/
|
|
729
|
+
const handleIDENTIFY = (ctx) => {
|
|
730
|
+
const env = gameEnv(ctx);
|
|
731
|
+
if (!env)
|
|
732
|
+
return true;
|
|
733
|
+
const { state } = env;
|
|
734
|
+
ctx.ident = true;
|
|
735
|
+
const runes = buildRuneList(state.runeEnv);
|
|
736
|
+
const player = state.actor.player;
|
|
737
|
+
/* Get an item (item_tester_unknown: not all runes known). */
|
|
738
|
+
const obj = env.item?.getItem?.(requestForEffect(EF.IDENTIFY, 0, state)) ?? null;
|
|
739
|
+
if (!obj)
|
|
740
|
+
return false;
|
|
741
|
+
/* Identify the object. When flavor knowledge is wired (in-play), learning the
|
|
742
|
+
* rune also fires player_know_object's object_flavor_aware side effect for
|
|
743
|
+
* this object (jewelry with all non-curse runes known / a special artifact). */
|
|
744
|
+
objectLearnUnknownRune(state.rng, player, state.runeEnv, obj, runes, env.flavor, env.flavorDeps);
|
|
745
|
+
/* player_learn_rune's update_player_object_knowledge tail-call (L1373): the
|
|
746
|
+
* learned rune may now complete another carried/floor jewel's runes, so sweep
|
|
747
|
+
* all of them for awareness + the "You have ... (a)." reveal (KN-03/KN-04). */
|
|
748
|
+
updatePlayerObjectKnowledge(state);
|
|
749
|
+
return true;
|
|
750
|
+
};
|
|
751
|
+
/** The item-targeting handlers, keyed by upstream EF code. */
|
|
752
|
+
const ITEM_HANDLERS = new Map([
|
|
753
|
+
[EF.ENCHANT, handleENCHANT],
|
|
754
|
+
/* effect_handler_RECHARGE (effect-handler-general.c:2127) */
|
|
755
|
+
[EF.RECHARGE, handleRECHARGE],
|
|
756
|
+
[EF.REMOVE_CURSE, handleREMOVE_CURSE],
|
|
757
|
+
/* effect_handler_BRAND_WEAPON (effect-handler-general.c:3233) */
|
|
758
|
+
[EF.BRAND_WEAPON, handleBRAND_WEAPON],
|
|
759
|
+
/* effect_handler_BRAND_AMMO (effect-handler-general.c:3251) */
|
|
760
|
+
[EF.BRAND_AMMO, handleBRAND_AMMO],
|
|
761
|
+
/* effect_handler_BRAND_BOLTS (effect-handler-general.c:3284) */
|
|
762
|
+
[EF.BRAND_BOLTS, handleBRAND_BOLTS],
|
|
763
|
+
/* effect_handler_CURSE_ARMOR (effect-handler-general.c:3103) */
|
|
764
|
+
[EF.CURSE_ARMOR, handleCURSE_ARMOR],
|
|
765
|
+
/* effect_handler_CURSE_WEAPON (effect-handler-general.c:3167) */
|
|
766
|
+
[EF.CURSE_WEAPON, handleCURSE_WEAPON],
|
|
767
|
+
/* effect_handler_CREATE_ARROWS (effect-handler-general.c:3315) */
|
|
768
|
+
[EF.CREATE_ARROWS, handleCREATE_ARROWS],
|
|
769
|
+
/* effect_handler_TAP_DEVICE (effect-handler-general.c:3370) */
|
|
770
|
+
[EF.TAP_DEVICE, handleTAP_DEVICE],
|
|
771
|
+
/* effect_handler_ACQUIRE (effect-handler-general.c:2194) */
|
|
772
|
+
[EF.ACQUIRE, handleACQUIRE],
|
|
773
|
+
/* effect_handler_IDENTIFY (effect-handler-general.c:1945) */
|
|
774
|
+
[EF.IDENTIFY, handleIDENTIFY],
|
|
775
|
+
]);
|
|
776
|
+
/**
|
|
777
|
+
* Register the item-targeting handlers, overriding the stubs
|
|
778
|
+
* registerCoreHandlers installed. Call after registerCoreHandlers. Each
|
|
779
|
+
* handler reads its game environment from context.env.game (attach it with
|
|
780
|
+
* attachGameEnv) and no-ops when it is absent.
|
|
781
|
+
*/
|
|
782
|
+
export function registerItemHandlers(registry) {
|
|
783
|
+
for (const [code, handler] of ITEM_HANDLERS) {
|
|
784
|
+
registry.register(code, { handler, status: "implemented" });
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
/** The item-targeting EF codes this module registers. */
|
|
788
|
+
export const ITEM_HANDLER_CODES = [...ITEM_HANDLERS.keys()];
|
|
789
|
+
//# sourceMappingURL=effect-item.js.map
|