@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,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The project_p driver, ported from reference/src/project-player.c (Angband
|
|
3
|
+
* 4.2.6): project_p (L800). The player-side counterpart of project_m.
|
|
4
|
+
*
|
|
5
|
+
* It applies a projection's damage to the player: resolve seen/blind, adjust
|
|
6
|
+
* the damage for resistance / immunity / vulnerability (adjust_dam), scale
|
|
7
|
+
* self-inflicted damage, apply the player's damage reduction, and deal it with
|
|
8
|
+
* take_hit - then run the per-type side effects and any extra damage they add.
|
|
9
|
+
* It implements the onPlayer seam of project() (world/project.ts).
|
|
10
|
+
*
|
|
11
|
+
* The damage core is fully portable (adjust_dam, player_apply_damage_reduction
|
|
12
|
+
* and take_hit are ported). The per-PROJ-type side effects
|
|
13
|
+
* (project_player_handler_*) are heavily entangled with subsystems not yet
|
|
14
|
+
* modelled - inven_damage (inventory, #20), EF_DRAIN_STAT (#18), player_exp_lose
|
|
15
|
+
* (experience) - so they are injected as the onSideEffects hook, the same seam
|
|
16
|
+
* discipline as the project_m driver's deferred consequences. The killer name
|
|
17
|
+
* (monster_desc / trap name / "yourself") is resolved by the caller, since it
|
|
18
|
+
* needs the monster-description and trap systems.
|
|
19
|
+
*/
|
|
20
|
+
import type { Loc } from "../loc.js";
|
|
21
|
+
import type { Rng } from "../rng.js";
|
|
22
|
+
import type { DamageReduction, TakeHitHooks, TakeHitTarget } from "../player/take-hit.js";
|
|
23
|
+
import type { ProjectionInfo } from "../world/projection.js";
|
|
24
|
+
/** The player state project_p reads and damages. */
|
|
25
|
+
export interface PlayerProjActor extends TakeHitTarget {
|
|
26
|
+
/** el_info[type].res_level (3 immune, -1 vulnerable, >0 resist). */
|
|
27
|
+
resistLevel(type: number): number;
|
|
28
|
+
/** state.dam_red / state.perc_dam_red. */
|
|
29
|
+
reduction: DamageReduction;
|
|
30
|
+
/**
|
|
31
|
+
* minus_ac(p) (obj-gear.c L376-438): attempt to damage a worn armour piece to
|
|
32
|
+
* an acid hit, returning whether acid damage should be halved. This is a
|
|
33
|
+
* callback, not a flag, because it has the armour-damage side effect and must
|
|
34
|
+
* fire exactly once per acid projection (project-player.c L69), so project_p
|
|
35
|
+
* calls it only inside adjust_dam's PROJ_ACID branch.
|
|
36
|
+
*/
|
|
37
|
+
minusAc: () => boolean;
|
|
38
|
+
}
|
|
39
|
+
/** The projection source, resolved for the player driver. */
|
|
40
|
+
export interface ProjectPlayerSource {
|
|
41
|
+
/** origin.what == SRC_PLAYER. */
|
|
42
|
+
isPlayer: boolean;
|
|
43
|
+
/** origin.what == SRC_MONSTER. */
|
|
44
|
+
isMonster: boolean;
|
|
45
|
+
/** Whether the source monster is visible (false hides the source). */
|
|
46
|
+
monsterVisible?: boolean;
|
|
47
|
+
/** The kb_str death cause ("yourself", a monster/trap name, "a bug"). */
|
|
48
|
+
killer: string;
|
|
49
|
+
/** origin_get_loc(origin): the projection's start grid (FORCE centre). */
|
|
50
|
+
grid?: Loc;
|
|
51
|
+
/** origin.what == SRC_TRAP (FORCE jitters an on-the-trap centre). */
|
|
52
|
+
isTrap?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** Context passed to the per-type side-effect hook (upstream handler context). */
|
|
55
|
+
export interface ProjectPlayerSideContext {
|
|
56
|
+
origin: ProjectPlayerSource;
|
|
57
|
+
/** Distance from the blast centre. */
|
|
58
|
+
r: number;
|
|
59
|
+
grid: Loc;
|
|
60
|
+
/** The adjusted (and self-scaled) damage the handler may key effects off. */
|
|
61
|
+
dam: number;
|
|
62
|
+
typ: number;
|
|
63
|
+
/** Monster spell power (0 for non-monster sources). */
|
|
64
|
+
power: number;
|
|
65
|
+
/** Mutable: the handler clears it if the effect was not obvious. */
|
|
66
|
+
obvious: boolean;
|
|
67
|
+
}
|
|
68
|
+
/** The consequences the driver defers to the caller. */
|
|
69
|
+
export interface ProjectPlayerHooks {
|
|
70
|
+
/** msg(). */
|
|
71
|
+
message?: (text: string) => void;
|
|
72
|
+
/** disturb(p). */
|
|
73
|
+
onDisturb?: () => void;
|
|
74
|
+
/**
|
|
75
|
+
* The per-PROJ-type player handler: inven damage, timed effects, stat / exp
|
|
76
|
+
* drain, etc. Returns extra damage to apply (after damage reduction).
|
|
77
|
+
*/
|
|
78
|
+
onSideEffects?: (ctx: ProjectPlayerSideContext) => number;
|
|
79
|
+
/** take_hit consequences (onDeath, combatRegen, ...). */
|
|
80
|
+
takeHit?: TakeHitHooks;
|
|
81
|
+
/** OPT(player, show_damage). */
|
|
82
|
+
showDamage?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* update_smart_learn(mon, player, 0, 0, typ) (project-player.c L852): the
|
|
85
|
+
* source monster learns the player's resist to this projection type. Injected
|
|
86
|
+
* (not done in the driver) because it needs the live monster and derived
|
|
87
|
+
* player state, and the driver is deliberately state-free. The engine
|
|
88
|
+
* (updateSmartLearn, mon/spell.ts) gates every action - and every RNG draw -
|
|
89
|
+
* on birth_ai_learn, so with the option off this is a pure no-op.
|
|
90
|
+
*/
|
|
91
|
+
smartLearn?: (typ: number) => void;
|
|
92
|
+
/**
|
|
93
|
+
* equip_learn_element(p, res_type) from adjust_dam(actual=true)
|
|
94
|
+
* (project-player.c L60-62): being hit by an element teaches the player the
|
|
95
|
+
* resist rune on worn gear that mitigated it (res_type is the ICE->COLD
|
|
96
|
+
* remapped type). No RNG. Injected because it needs the live player + runeEnv.
|
|
97
|
+
*/
|
|
98
|
+
equipLearnElement?: (resType: number) => void;
|
|
99
|
+
}
|
|
100
|
+
/** Everything the per-grid player driver needs. */
|
|
101
|
+
export interface ProjectPlayerCtx {
|
|
102
|
+
rng: Rng;
|
|
103
|
+
actor: PlayerProjActor;
|
|
104
|
+
/** The player's grid (square_isplayer check). */
|
|
105
|
+
playerGrid: Loc;
|
|
106
|
+
projections: readonly ProjectionInfo[];
|
|
107
|
+
origin: ProjectPlayerSource;
|
|
108
|
+
/** Monster spell power, passed to the side-effect handler. */
|
|
109
|
+
power: number;
|
|
110
|
+
hooks: ProjectPlayerHooks;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* project_p for one grid: affect the player (if they are in `grid`) with
|
|
114
|
+
* projection `typ` for `dam` damage at distance `dist`. `self` allows the
|
|
115
|
+
* caster to be hit by their own projection (self damage is scaled down).
|
|
116
|
+
* Returns whether the effect was obvious. Suitable as the onPlayer hook of
|
|
117
|
+
* project().
|
|
118
|
+
*/
|
|
119
|
+
export declare function projectPlayer(pctx: ProjectPlayerCtx, dist: number, grid: Loc, dam: number, typ: number, self: boolean): boolean;
|
|
120
|
+
//# sourceMappingURL=project-player.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-player.d.ts","sourceRoot":"","sources":["../../src/game/project-player.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,oDAAoD;AACpD,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,oEAAoE;IACpE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,0CAA0C;IAC1C,SAAS,EAAE,eAAe,CAAC;IAC3B;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,sCAAsC;IACtC,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,GAAG,CAAC;IACV,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,aAAa;IACb,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kBAAkB;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,MAAM,CAAC;IAC1D,yDAAyD;IACzD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,eAAe,CAAC;IACvB,iDAAiD;IACjD,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GACZ,OAAO,CA2FT"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The project_p driver, ported from reference/src/project-player.c (Angband
|
|
3
|
+
* 4.2.6): project_p (L800). The player-side counterpart of project_m.
|
|
4
|
+
*
|
|
5
|
+
* It applies a projection's damage to the player: resolve seen/blind, adjust
|
|
6
|
+
* the damage for resistance / immunity / vulnerability (adjust_dam), scale
|
|
7
|
+
* self-inflicted damage, apply the player's damage reduction, and deal it with
|
|
8
|
+
* take_hit - then run the per-type side effects and any extra damage they add.
|
|
9
|
+
* It implements the onPlayer seam of project() (world/project.ts).
|
|
10
|
+
*
|
|
11
|
+
* The damage core is fully portable (adjust_dam, player_apply_damage_reduction
|
|
12
|
+
* and take_hit are ported). The per-PROJ-type side effects
|
|
13
|
+
* (project_player_handler_*) are heavily entangled with subsystems not yet
|
|
14
|
+
* modelled - inven_damage (inventory, #20), EF_DRAIN_STAT (#18), player_exp_lose
|
|
15
|
+
* (experience) - so they are injected as the onSideEffects hook, the same seam
|
|
16
|
+
* discipline as the project_m driver's deferred consequences. The killer name
|
|
17
|
+
* (monster_desc / trap name / "yourself") is resolved by the caller, since it
|
|
18
|
+
* needs the monster-description and trap systems.
|
|
19
|
+
*/
|
|
20
|
+
import { PROJ, TMD } from "../generated/index.js";
|
|
21
|
+
import { locEq } from "../loc.js";
|
|
22
|
+
import { ELEM_MAX } from "../obj/types.js";
|
|
23
|
+
import { playerApplyDamageReduction, takeHit, } from "../player/take-hit.js";
|
|
24
|
+
import { adjustDam } from "../world/projection.js";
|
|
25
|
+
/**
|
|
26
|
+
* project_p for one grid: affect the player (if they are in `grid`) with
|
|
27
|
+
* projection `typ` for `dam` damage at distance `dist`. `self` allows the
|
|
28
|
+
* caster to be hit by their own projection (self damage is scaled down).
|
|
29
|
+
* Returns whether the effect was obvious. Suitable as the onPlayer hook of
|
|
30
|
+
* project().
|
|
31
|
+
*/
|
|
32
|
+
export function projectPlayer(pctx, dist, grid, dam, typ, self) {
|
|
33
|
+
const { rng, actor, hooks, origin } = pctx;
|
|
34
|
+
const blind = actor.timed[TMD.BLIND] > 0;
|
|
35
|
+
let seen = !blind;
|
|
36
|
+
/* The "decoy has been hit" branch (project-player.c L822) runs before the
|
|
37
|
+
* player-here check; it is applied at the cast layer (project-cast.ts
|
|
38
|
+
* castProjection onPlayer wrapper), which has the live GameState and the
|
|
39
|
+
* decoy grid, since this driver is deliberately state-free. */
|
|
40
|
+
/* No player here. */
|
|
41
|
+
if (!locEq(grid, pctx.playerGrid))
|
|
42
|
+
return false;
|
|
43
|
+
/* Don't affect the projector unless explicitly allowed. */
|
|
44
|
+
if (origin.isPlayer && !self)
|
|
45
|
+
return false;
|
|
46
|
+
/* A projection from an unseen monster is not seen. */
|
|
47
|
+
if (origin.isMonster && origin.monsterVisible === false)
|
|
48
|
+
seen = false;
|
|
49
|
+
/* "Monster sees what is going on": the source monster learns the player's
|
|
50
|
+
* resist to this projection type (update_smart_learn, project-player.c L852).
|
|
51
|
+
* Called here in the faithful position - inside the SRC_MONSTER branch, before
|
|
52
|
+
* the blind message and adjust_dam - so the engine's birth_ai_learn RNG draws
|
|
53
|
+
* keep upstream order. The binding to the live monster / player state is
|
|
54
|
+
* injected (game/project-cast.ts) because this driver is state-free. */
|
|
55
|
+
if (origin.isMonster)
|
|
56
|
+
hooks.smartLearn?.(typ);
|
|
57
|
+
/* Let the player know what is going on when they cannot see it. */
|
|
58
|
+
if (!seen) {
|
|
59
|
+
const bd = pctx.projections[typ]?.blindDesc ?? "something";
|
|
60
|
+
hooks.message?.(`You are hit by ${bd}!`);
|
|
61
|
+
}
|
|
62
|
+
/* Adjust damage for resistance/immunity/vulnerability (ICE uses COLD res). */
|
|
63
|
+
const resType = typ === PROJ.ICE ? PROJ.COLD : typ;
|
|
64
|
+
/* adjust_dam(actual=true) (project-player.c L60-62): learn the mitigating
|
|
65
|
+
* resist rune. Fired before the immune short-circuit, exactly as upstream. */
|
|
66
|
+
if (resType < ELEM_MAX)
|
|
67
|
+
hooks.equipLearnElement?.(resType);
|
|
68
|
+
const resLevel = typ < ELEM_MAX ? actor.resistLevel(resType) : 0;
|
|
69
|
+
/* minus_ac(p) is consulted only inside adjust_dam's PROJ_ACID branch, after
|
|
70
|
+
* the immune short-circuit (project-player.c L65-70); calling it here fires
|
|
71
|
+
* the armour-damage side effect exactly when upstream's does. resLevel 3 is
|
|
72
|
+
* immune (RESIST_IMMUNE), which returns 0 before minus_ac in the C. */
|
|
73
|
+
const acidMinusAc = typ === PROJ.ACID && resLevel !== 3 ? actor.minusAc() : false;
|
|
74
|
+
let d = adjustDam(rng, pctx.projections, typ, dam, "randomise", resLevel, acidMinusAc);
|
|
75
|
+
if (d) {
|
|
76
|
+
/* Self-inflicted damage is scaled down. */
|
|
77
|
+
if (self)
|
|
78
|
+
d = Math.trunc(d / 10);
|
|
79
|
+
/* Damage reduction affects only the dealt damage, not the side effects. */
|
|
80
|
+
const reduced = playerApplyDamageReduction(actor, actor.reduction, d);
|
|
81
|
+
if (reduced > 0 && hooks.showDamage) {
|
|
82
|
+
hooks.message?.(`You take ${reduced} damage.`);
|
|
83
|
+
}
|
|
84
|
+
takeHit(actor, reduced, origin.killer, hooks.takeHit);
|
|
85
|
+
}
|
|
86
|
+
/* Handle side effects, possibly including extra damage. */
|
|
87
|
+
const sideCtx = {
|
|
88
|
+
origin,
|
|
89
|
+
r: dist,
|
|
90
|
+
grid,
|
|
91
|
+
dam: d,
|
|
92
|
+
typ,
|
|
93
|
+
power: pctx.power,
|
|
94
|
+
obvious: true,
|
|
95
|
+
};
|
|
96
|
+
if (!actor.isDead && hooks.onSideEffects) {
|
|
97
|
+
let xtra = hooks.onSideEffects(sideCtx);
|
|
98
|
+
xtra = playerApplyDamageReduction(actor, actor.reduction, xtra);
|
|
99
|
+
if (xtra > 0 && hooks.showDamage) {
|
|
100
|
+
hooks.message?.(`You take an extra ${xtra} damage.`);
|
|
101
|
+
}
|
|
102
|
+
takeHit(actor, xtra, origin.killer, hooks.takeHit);
|
|
103
|
+
}
|
|
104
|
+
/* Disturb */
|
|
105
|
+
hooks.onDisturb?.();
|
|
106
|
+
return sideCtx.obvious;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=project-player.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-player.js","sourceRoot":"","sources":["../../src/game/project-player.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The quest system, ported from reference/src/player-quest.c (Angband 4.2.6):
|
|
3
|
+
* the standard quest table (bound from quest.json), the per-character quest
|
|
4
|
+
* history, and the on-death bookkeeping that culminates in the game's WIN
|
|
5
|
+
* CONDITION - slaying Morgoth.
|
|
6
|
+
*
|
|
7
|
+
* The base game ships two quests (quest.txt): Sauron on depth 99 and Morgoth
|
|
8
|
+
* on depth 100, each requiring a single kill. Killing the last incomplete
|
|
9
|
+
* quest's guardian sets player->total_winner and prints the victory message.
|
|
10
|
+
*
|
|
11
|
+
* Provenance and RNG: the whole subsystem is RNG-free EXCEPT build_quest_stairs
|
|
12
|
+
* (player-quest.c L187), whose scatter loop draws from the game RNG - and even
|
|
13
|
+
* that fires only when a quest is completed on a grid that cannot hold a
|
|
14
|
+
* staircase directly, staggering to a neighbouring grid. The common case (a
|
|
15
|
+
* guardian dying on open floor) consumes no RNG.
|
|
16
|
+
*
|
|
17
|
+
* The parser-side pieces of player-quest.c (init/finish_parse_quest,
|
|
18
|
+
* player_quests_free) have no analogue here: quest.json is already compiled and
|
|
19
|
+
* the player quest list is a plain array reset at birth, so there is nothing to
|
|
20
|
+
* free.
|
|
21
|
+
*/
|
|
22
|
+
import type { MonsterRegistry } from "../mon/bind.js";
|
|
23
|
+
import type { MonsterRace } from "../mon/types.js";
|
|
24
|
+
import type { Monster } from "../mon/monster.js";
|
|
25
|
+
import type { Player } from "../player/player.js";
|
|
26
|
+
import type { GameState } from "./context.js";
|
|
27
|
+
/** One record of quest.json (quest.txt): a guardian, its depth and count. */
|
|
28
|
+
export interface QuestRecordJson {
|
|
29
|
+
name: string;
|
|
30
|
+
level: number;
|
|
31
|
+
/** The guardian monster's name, resolved to a race at bind time. */
|
|
32
|
+
race: string;
|
|
33
|
+
/** max_num: kills needed to complete the quest. */
|
|
34
|
+
number: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A bound standard quest (struct quest): the registry template every new
|
|
38
|
+
* character's quest history is copied from (player_quests_reset).
|
|
39
|
+
*/
|
|
40
|
+
export interface Quest {
|
|
41
|
+
/** quest->index: position in the quest table (file order). */
|
|
42
|
+
index: number;
|
|
43
|
+
name: string;
|
|
44
|
+
level: number;
|
|
45
|
+
/** quest->race: the resolved guardian race. */
|
|
46
|
+
race: MonsterRace;
|
|
47
|
+
/** quest->max_num. */
|
|
48
|
+
maxNum: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* finish_parse_quest (player-quest.c L90): build the direct-access quest table
|
|
52
|
+
* from the compiled records, resolving each race by name (lookup_monster). The
|
|
53
|
+
* JSON records are already in file order, so `index` is just the array
|
|
54
|
+
* position - no linked-list reversal is needed.
|
|
55
|
+
*/
|
|
56
|
+
export declare function bindQuests(records: readonly QuestRecordJson[], monsters: MonsterRegistry): Quest[];
|
|
57
|
+
/**
|
|
58
|
+
* player_quests_reset (player-quest.c L157): copy the standard quest table into
|
|
59
|
+
* the player's quest history, with every kill count reset to zero. Called at
|
|
60
|
+
* birth (generatePlayer / startGame).
|
|
61
|
+
*/
|
|
62
|
+
export declare function playerQuestsReset(p: Player, quests: readonly Quest[]): void;
|
|
63
|
+
/**
|
|
64
|
+
* is_quest (player-quest.c L140): is `level` a quest level for this player?
|
|
65
|
+
* Town (level 0) is never a quest; otherwise true when any of the player's
|
|
66
|
+
* quests is fought on that depth.
|
|
67
|
+
*/
|
|
68
|
+
export declare function isQuest(p: Player, level: number): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* dungeon_get_next_level (player-util.c L1147): the depth `added` stair-steps
|
|
71
|
+
* from `dlev`, clamped to the world and STOPPED BY AN OUTSTANDING QUEST.
|
|
72
|
+
*
|
|
73
|
+
* Provenance is player-util.c, but it lives here because the quest scan is the
|
|
74
|
+
* whole point of it: the intermediate-level loop (L1163-1165) returns the first
|
|
75
|
+
* quest depth at or below `dlev`, so stairs down from 99 with Sauron alive land
|
|
76
|
+
* on 99 again rather than delivering the player to Morgoth. quest_check clears
|
|
77
|
+
* a finished quest's level to 0 (quest.ts:185, player-quest.c:232), which is
|
|
78
|
+
* what re-opens the descent.
|
|
79
|
+
*
|
|
80
|
+
* Every C caller of this goes through here (12 sites: the two stair commands,
|
|
81
|
+
* RECALL, DEEP_DESCENT and its countdown, TELEPORT_LEVEL, and TRF_DOWN traps).
|
|
82
|
+
* It is deliberately total - no seam, no default - because the previous shape,
|
|
83
|
+
* an injectable `getNextLevel` that nothing ever wired, silently degraded every
|
|
84
|
+
* one of those sites to a bare `depth + dir`.
|
|
85
|
+
*/
|
|
86
|
+
export declare function dungeonGetNextLevel(p: Player, dlev: number, added: number, z: {
|
|
87
|
+
readonly stairSkip: number;
|
|
88
|
+
readonly maxDepth: number;
|
|
89
|
+
}): number;
|
|
90
|
+
/**
|
|
91
|
+
* quest_check (player-quest.c L219): the now-dead monster `m` may be a quest
|
|
92
|
+
* guardian. Increments the matching quest's kill count when the current depth
|
|
93
|
+
* and race line up; on completion clears the quest (level = 0) and builds the
|
|
94
|
+
* escape staircase; and when no incomplete quests remain, wins the game.
|
|
95
|
+
*
|
|
96
|
+
* Returns whether a quest was completed by this death. The bookkeeping order
|
|
97
|
+
* (increment -> mark complete -> count remaining -> act) matches upstream
|
|
98
|
+
* exactly, so the "last quest" detection is identical.
|
|
99
|
+
*/
|
|
100
|
+
export declare function questCheck(state: GameState, p: Player, m: Monster): boolean;
|
|
101
|
+
//# sourceMappingURL=quest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quest.d.ts","sourceRoot":"","sources":["../../src/game/quest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,QAAQ,EAAE,eAAe,GACxB,KAAK,EAAE,CAUT;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAQ3E;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3D,MAAM,CAcR;AAyDD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAoC3E"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The quest system, ported from reference/src/player-quest.c (Angband 4.2.6):
|
|
3
|
+
* the standard quest table (bound from quest.json), the per-character quest
|
|
4
|
+
* history, and the on-death bookkeeping that culminates in the game's WIN
|
|
5
|
+
* CONDITION - slaying Morgoth.
|
|
6
|
+
*
|
|
7
|
+
* The base game ships two quests (quest.txt): Sauron on depth 99 and Morgoth
|
|
8
|
+
* on depth 100, each requiring a single kill. Killing the last incomplete
|
|
9
|
+
* quest's guardian sets player->total_winner and prints the victory message.
|
|
10
|
+
*
|
|
11
|
+
* Provenance and RNG: the whole subsystem is RNG-free EXCEPT build_quest_stairs
|
|
12
|
+
* (player-quest.c L187), whose scatter loop draws from the game RNG - and even
|
|
13
|
+
* that fires only when a quest is completed on a grid that cannot hold a
|
|
14
|
+
* staircase directly, staggering to a neighbouring grid. The common case (a
|
|
15
|
+
* guardian dying on open floor) consumes no RNG.
|
|
16
|
+
*
|
|
17
|
+
* The parser-side pieces of player-quest.c (init/finish_parse_quest,
|
|
18
|
+
* player_quests_free) have no analogue here: quest.json is already compiled and
|
|
19
|
+
* the player quest list is a plain array reset at birth, so there is nothing to
|
|
20
|
+
* free.
|
|
21
|
+
*/
|
|
22
|
+
import { FEAT } from "../generated/index.js";
|
|
23
|
+
import { scatter } from "../world/scatter.js";
|
|
24
|
+
import { pushObject } from "./project-feat.js";
|
|
25
|
+
import { floorPile } from "./floor.js";
|
|
26
|
+
/**
|
|
27
|
+
* finish_parse_quest (player-quest.c L90): build the direct-access quest table
|
|
28
|
+
* from the compiled records, resolving each race by name (lookup_monster). The
|
|
29
|
+
* JSON records are already in file order, so `index` is just the array
|
|
30
|
+
* position - no linked-list reversal is needed.
|
|
31
|
+
*/
|
|
32
|
+
export function bindQuests(records, monsters) {
|
|
33
|
+
return records.map((rec, index) => {
|
|
34
|
+
const race = monsters.raceByName(rec.race);
|
|
35
|
+
if (!race) {
|
|
36
|
+
throw new Error(`quest: could not find race '${rec.race}' for quest '${rec.name}'`);
|
|
37
|
+
}
|
|
38
|
+
return { index, name: rec.name, level: rec.level, race, maxNum: rec.number };
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* player_quests_reset (player-quest.c L157): copy the standard quest table into
|
|
43
|
+
* the player's quest history, with every kill count reset to zero. Called at
|
|
44
|
+
* birth (generatePlayer / startGame).
|
|
45
|
+
*/
|
|
46
|
+
export function playerQuestsReset(p, quests) {
|
|
47
|
+
p.quests = quests.map((q) => ({
|
|
48
|
+
name: q.name,
|
|
49
|
+
level: q.level,
|
|
50
|
+
race: q.race.ridx,
|
|
51
|
+
maxNum: q.maxNum,
|
|
52
|
+
curNum: 0,
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* is_quest (player-quest.c L140): is `level` a quest level for this player?
|
|
57
|
+
* Town (level 0) is never a quest; otherwise true when any of the player's
|
|
58
|
+
* quests is fought on that depth.
|
|
59
|
+
*/
|
|
60
|
+
export function isQuest(p, level) {
|
|
61
|
+
/* Town is never a quest. */
|
|
62
|
+
if (!level)
|
|
63
|
+
return false;
|
|
64
|
+
for (const q of p.quests) {
|
|
65
|
+
if (q.level === level)
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* dungeon_get_next_level (player-util.c L1147): the depth `added` stair-steps
|
|
72
|
+
* from `dlev`, clamped to the world and STOPPED BY AN OUTSTANDING QUEST.
|
|
73
|
+
*
|
|
74
|
+
* Provenance is player-util.c, but it lives here because the quest scan is the
|
|
75
|
+
* whole point of it: the intermediate-level loop (L1163-1165) returns the first
|
|
76
|
+
* quest depth at or below `dlev`, so stairs down from 99 with Sauron alive land
|
|
77
|
+
* on 99 again rather than delivering the player to Morgoth. quest_check clears
|
|
78
|
+
* a finished quest's level to 0 (quest.ts:185, player-quest.c:232), which is
|
|
79
|
+
* what re-opens the descent.
|
|
80
|
+
*
|
|
81
|
+
* Every C caller of this goes through here (12 sites: the two stair commands,
|
|
82
|
+
* RECALL, DEEP_DESCENT and its countdown, TELEPORT_LEVEL, and TRF_DOWN traps).
|
|
83
|
+
* It is deliberately total - no seam, no default - because the previous shape,
|
|
84
|
+
* an injectable `getNextLevel` that nothing ever wired, silently degraded every
|
|
85
|
+
* one of those sites to a bare `depth + dir`.
|
|
86
|
+
*/
|
|
87
|
+
export function dungeonGetNextLevel(p, dlev, added, z) {
|
|
88
|
+
/* Get target level. */
|
|
89
|
+
let target = dlev + added * z.stairSkip;
|
|
90
|
+
/* Don't allow levels below max, or above the town. */
|
|
91
|
+
if (target > z.maxDepth - 1)
|
|
92
|
+
target = z.maxDepth - 1;
|
|
93
|
+
if (target < 0)
|
|
94
|
+
target = 0;
|
|
95
|
+
/* Check intermediate levels for quests. */
|
|
96
|
+
for (let i = dlev; i <= target; i++) {
|
|
97
|
+
if (isQuest(p, i))
|
|
98
|
+
return i;
|
|
99
|
+
}
|
|
100
|
+
return target;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* square_changeable (cave-square.c L868): a grid that may be "destroyed" - no
|
|
104
|
+
* permanent walls, shops or stairs, and no artifact lying on it. Reimplemented
|
|
105
|
+
* locally (the effect-terrain.c copy is module-private) so build_quest_stairs
|
|
106
|
+
* matches upstream's staircase-placement guard exactly.
|
|
107
|
+
*/
|
|
108
|
+
function squareChangeable(state, grid) {
|
|
109
|
+
const c = state.chunk;
|
|
110
|
+
if (c.isPerm(grid) || c.isShop(grid) || c.isStairs(grid))
|
|
111
|
+
return false;
|
|
112
|
+
for (const obj of floorPile(state, grid)) {
|
|
113
|
+
if (obj.artifact)
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* build_quest_stairs (player-quest.c L187): create the magical down-staircase
|
|
120
|
+
* that appears when a quest guardian falls. Staggers away from a grid that
|
|
121
|
+
* cannot take a staircase (passable, not a door, but not changeable - e.g. a
|
|
122
|
+
* mineral vein or rubble) to a nearby one, pushes any objects off the chosen
|
|
123
|
+
* grid, announces the staircase and sets FEAT_MORE.
|
|
124
|
+
*
|
|
125
|
+
* The scatter(cave, ..., 1, false) draw is the only RNG in the quest system;
|
|
126
|
+
* it fires only while the loop guard holds (a rare death location), so a
|
|
127
|
+
* guardian dying on open floor - which is changeable - consumes no RNG.
|
|
128
|
+
*/
|
|
129
|
+
function buildQuestStairs(state, grid) {
|
|
130
|
+
const c = state.chunk;
|
|
131
|
+
/* Stagger around until the grid can hold a staircase. */
|
|
132
|
+
while (!squareChangeable(state, grid) &&
|
|
133
|
+
c.isPassable(grid) &&
|
|
134
|
+
!c.isDoor(grid)) {
|
|
135
|
+
const newGrid = scatter(c, state.rng, grid, 1, false);
|
|
136
|
+
/* scatter leaves the output untouched when no grid is feasible; mirror
|
|
137
|
+
* that by keeping the current grid rather than looping forever. */
|
|
138
|
+
if (!newGrid)
|
|
139
|
+
break;
|
|
140
|
+
grid = newGrid;
|
|
141
|
+
}
|
|
142
|
+
/* Push any objects. */
|
|
143
|
+
pushObject(state, grid);
|
|
144
|
+
/* Explain the staircase. */
|
|
145
|
+
state.msg?.("A magical staircase appears...");
|
|
146
|
+
/* Create stairs down. */
|
|
147
|
+
c.setFeat(grid, FEAT.MORE);
|
|
148
|
+
/* Update the visuals (PU_UPDATE_VIEW | PU_MONSTERS). */
|
|
149
|
+
state.updateFov?.(state);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* quest_check (player-quest.c L219): the now-dead monster `m` may be a quest
|
|
153
|
+
* guardian. Increments the matching quest's kill count when the current depth
|
|
154
|
+
* and race line up; on completion clears the quest (level = 0) and builds the
|
|
155
|
+
* escape staircase; and when no incomplete quests remain, wins the game.
|
|
156
|
+
*
|
|
157
|
+
* Returns whether a quest was completed by this death. The bookkeeping order
|
|
158
|
+
* (increment -> mark complete -> count remaining -> act) matches upstream
|
|
159
|
+
* exactly, so the "last quest" detection is identical.
|
|
160
|
+
*/
|
|
161
|
+
export function questCheck(state, p, m) {
|
|
162
|
+
let total = 0;
|
|
163
|
+
let completed = false;
|
|
164
|
+
/* Mark quests as complete. */
|
|
165
|
+
for (const q of p.quests) {
|
|
166
|
+
/* Note completed quests. */
|
|
167
|
+
if (state.chunk.depth === q.level && m.race.ridx === q.race) {
|
|
168
|
+
q.curNum++;
|
|
169
|
+
if (q.curNum === q.maxNum) {
|
|
170
|
+
q.level = 0;
|
|
171
|
+
completed = true;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/* Count incomplete quests. */
|
|
175
|
+
if (q.level)
|
|
176
|
+
total++;
|
|
177
|
+
}
|
|
178
|
+
if (completed) {
|
|
179
|
+
/* Build magical stairs. */
|
|
180
|
+
buildQuestStairs(state, m.grid);
|
|
181
|
+
/* Nothing left, game over... */
|
|
182
|
+
if (total === 0) {
|
|
183
|
+
p.totalWinner = true;
|
|
184
|
+
state.msg?.("*** CONGRATULATIONS ***");
|
|
185
|
+
state.msg?.("You have won the game!");
|
|
186
|
+
state.msg?.("You may retire (key is shift-q) when you are ready.");
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=quest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quest.js","sourceRoot":"","sources":["../../src/game/quest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player ranged commands: fire (do_cmd_fire) and throw (do_cmd_throw), the
|
|
3
|
+
* command front-ends of reference/src/player-attack.c (Angband 4.2.6). The hit
|
|
4
|
+
* math is combat/ranged.ts (make_ranged_shot / make_ranged_throw); this is
|
|
5
|
+
* ranged_helper - resolve the target, walk the missile along project_path, land
|
|
6
|
+
* a hit on the first monster in the way, then drop the missile (subject to
|
|
7
|
+
* breakage) where it comes to rest.
|
|
8
|
+
*
|
|
9
|
+
* The missile addresses its object by gear handle (args.handle) and its target
|
|
10
|
+
* by args.dir (keypad 1-9, or DIR_TARGET = 5 to use the current target), which
|
|
11
|
+
* the UI resolves before the command runs, exactly as cmd_get_item /
|
|
12
|
+
* cmd_get_target do upstream.
|
|
13
|
+
*
|
|
14
|
+
* Ported here (player-attack.c ranged_helper): TMD_POWERSHOT piercing
|
|
15
|
+
* (player-attack.c:1092-1095,1198-1201,1217-1219), the ay+ax/2 distance to-hit
|
|
16
|
+
* penalty (cave-view.c:38 via loc.ts distance, gap 2.6), and the full
|
|
17
|
+
* mon_take_hit routing so ranged hits generate fear, "flees in terror", and
|
|
18
|
+
* message_pain (player-attack.c:1191-1195, gap 2.4).
|
|
19
|
+
*
|
|
20
|
+
* DEFERRED (ledgered in parity/ledger/ranged-cmd.yaml): the out-of-range "Fire
|
|
21
|
+
* anyway?" prompt (UI) and the crit-flavour line (the hit verb still varies).
|
|
22
|
+
* The show_damage " (N)" suffix is now wired (player-attack.c:1168-1170), and
|
|
23
|
+
* the invisible-monster "finds a mark" branch is now ported
|
|
24
|
+
* (player-attack.c:1156-1159) - it had been listed here as deferred, which is
|
|
25
|
+
* exactly how a missing player-visible message stays missing.
|
|
26
|
+
* Missile / equipment / brand-slay learn-on-attack is wired below (W2-001/002/
|
|
27
|
+
* 010/011; player-attack.c:1137-1140, 1255-1259, 1296-1299).
|
|
28
|
+
*/
|
|
29
|
+
import type { ActionRegistry } from "./player-turn.js";
|
|
30
|
+
/** Install the fire and throw commands over the live action registry. */
|
|
31
|
+
export declare function installRangedCommands(registry: ActionRegistry): void;
|
|
32
|
+
//# sourceMappingURL=ranged-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranged-cmd.d.ts","sourceRoot":"","sources":["../../src/game/ranged-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA+BH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0MvD,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CA2JpE"}
|