@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,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player damage, ported from reference/src/player-util.c (Angband 4.2.6):
|
|
3
|
+
* player_apply_damage_reduction (L167) and take_hit (L197). The player analog
|
|
4
|
+
* of mon_take_hit - the shared primitive that projections (project_p), melee
|
|
5
|
+
* and ranged monster attacks, traps, lava, poison ticks, and the EF_DAMAGE
|
|
6
|
+
* effect handler all route player damage through, so damage reduction, death,
|
|
7
|
+
* the bloodlust save, and the low-hitpoint warning behave identically no matter
|
|
8
|
+
* the source. It is the concrete backing for the effect interpreter's
|
|
9
|
+
* EffectPlayer.takeHit / applyDamageReduction capabilities.
|
|
10
|
+
*
|
|
11
|
+
* As with mon/take-hit.ts, the heavy / downstream consequences are injected as
|
|
12
|
+
* hooks so the damage-and-death arithmetic ships and is tested independently:
|
|
13
|
+
* - onDeath (the death routine: died_from, score entry, EVENT_DEATH) fires when
|
|
14
|
+
* the blow is fatal and not cheated; the target's isDead is already set.
|
|
15
|
+
* - combatRegenReward (player_adjust_mana_precise for PF_COMBAT_REGEN classes)
|
|
16
|
+
* is invoked only for non-excluded killers; the caller does the PF check and
|
|
17
|
+
* the mana maths.
|
|
18
|
+
* - cheatDeath is the wizard / cheat_live "Die?" escape; absent (the default)
|
|
19
|
+
* means death is final, matching the ratified no-save-scum policy.
|
|
20
|
+
* - disturb, the PR_HP redraw, and bell() are UI hooks (onDisturb, onRedrawHp,
|
|
21
|
+
* bell).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { TMD } from "../generated/index.js";
|
|
25
|
+
import type { Rng } from "../rng.js";
|
|
26
|
+
|
|
27
|
+
/** The player state take_hit reads and mutates (a narrow structural view). */
|
|
28
|
+
export interface TakeHitTarget {
|
|
29
|
+
/** Current hit points (mutated). */
|
|
30
|
+
chp: number;
|
|
31
|
+
/** Maximum hit points (for the warning threshold). */
|
|
32
|
+
mhp: number;
|
|
33
|
+
/** Character level (bloodlust save). */
|
|
34
|
+
lev: number;
|
|
35
|
+
/** player->is_dead (set true on a fatal, non-cheated blow). */
|
|
36
|
+
isDead: boolean;
|
|
37
|
+
/** timed[TMD_MAX]: read for INVULN and BLOODLUST. */
|
|
38
|
+
timed: Int16Array;
|
|
39
|
+
/** player->opts.hitpoint_warn (0..9): warn when chp < mhp * warn / 10. */
|
|
40
|
+
hitpointWarn: number;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** state.dam_red / state.perc_dam_red, from calc_bonuses. */
|
|
44
|
+
export interface DamageReduction {
|
|
45
|
+
/** Flat damage reduction. */
|
|
46
|
+
damRed: number;
|
|
47
|
+
/** Percentage damage reduction (after the flat cut). */
|
|
48
|
+
percDamRed: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* player_apply_damage_reduction: apply invulnerability, then the flat and
|
|
53
|
+
* percentage reductions. Not called by take_hit; the caller applies it first so
|
|
54
|
+
* it can show the post-reduction amount.
|
|
55
|
+
*/
|
|
56
|
+
export function playerApplyDamageReduction(
|
|
57
|
+
target: TakeHitTarget,
|
|
58
|
+
red: DamageReduction,
|
|
59
|
+
dam: number,
|
|
60
|
+
): number {
|
|
61
|
+
/* Mega-Hack -- apply "invulnerability". */
|
|
62
|
+
if (target.timed[TMD.INVULN] && dam < 9000) return 0;
|
|
63
|
+
|
|
64
|
+
dam -= red.damRed;
|
|
65
|
+
if (dam > 0 && red.percDamRed) {
|
|
66
|
+
dam -= Math.trunc((dam * red.percDamRed) / 100);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return dam < 0 ? 0 : dam;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** The consequences of a hit the caller supplies. */
|
|
73
|
+
export interface TakeHitHooks {
|
|
74
|
+
/** RNG for the bloodlust flavour roll; required only when bloodlust saves. */
|
|
75
|
+
rng?: Rng;
|
|
76
|
+
/** msg() / msgt(): status and death messages. */
|
|
77
|
+
onMessage?: (text: string, msgt?: string) => void;
|
|
78
|
+
/** disturb(p). */
|
|
79
|
+
onDisturb?: () => void;
|
|
80
|
+
/** PR_HP redraw. */
|
|
81
|
+
onRedrawHp?: () => void;
|
|
82
|
+
/** bell() on the first low-hitpoint notice. */
|
|
83
|
+
bell?: () => void;
|
|
84
|
+
/**
|
|
85
|
+
* The death routine (score, died_from, EVENT_DEATH). Called after isDead is
|
|
86
|
+
* set on a fatal, non-cheated blow.
|
|
87
|
+
*/
|
|
88
|
+
onDeath?: (target: TakeHitTarget, killer: string) => void;
|
|
89
|
+
/**
|
|
90
|
+
* PF_COMBAT_REGEN mana reward. Invoked with the raw damage only for killers
|
|
91
|
+
* that grant it (not poison / a fatal wound / starvation); the caller checks
|
|
92
|
+
* the player flag and performs player_adjust_mana_precise.
|
|
93
|
+
*/
|
|
94
|
+
combatRegenReward?: (dam: number) => void;
|
|
95
|
+
/**
|
|
96
|
+
* Wizard / cheat_live escape: return true to survive a fatal blow. Absent
|
|
97
|
+
* means death is final (the no-save-scum default).
|
|
98
|
+
*/
|
|
99
|
+
cheatDeath?: (killer: string) => boolean | "pending";
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Killers excluded from the COMBAT_REGEN mana reward. */
|
|
103
|
+
const COMBAT_REGEN_EXCLUDED = new Set(["poison", "a fatal wound", "starvation"]);
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* take_hit: reduce the player's hit points by `dam` and set the death flag if
|
|
107
|
+
* the blow is fatal. `dam` should already have passed through
|
|
108
|
+
* playerApplyDamageReduction. `killer` describes the cause of death.
|
|
109
|
+
*/
|
|
110
|
+
export function takeHit(
|
|
111
|
+
target: TakeHitTarget,
|
|
112
|
+
dam: number,
|
|
113
|
+
killer: string,
|
|
114
|
+
hooks: TakeHitHooks = {},
|
|
115
|
+
): void {
|
|
116
|
+
const oldChp = target.chp;
|
|
117
|
+
const warning = Math.trunc((target.mhp * target.hitpointWarn) / 10);
|
|
118
|
+
|
|
119
|
+
/* Paranoia */
|
|
120
|
+
if (target.isDead || dam <= 0) return;
|
|
121
|
+
|
|
122
|
+
/* Disturb */
|
|
123
|
+
hooks.onDisturb?.();
|
|
124
|
+
|
|
125
|
+
/* Hurt the player */
|
|
126
|
+
target.chp -= dam;
|
|
127
|
+
|
|
128
|
+
/* Reward COMBAT_REGEN characters with mana for their lost hitpoints. */
|
|
129
|
+
if (!COMBAT_REGEN_EXCLUDED.has(killer)) {
|
|
130
|
+
hooks.combatRegenReward?.(dam);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Display the hitpoints */
|
|
134
|
+
hooks.onRedrawHp?.();
|
|
135
|
+
|
|
136
|
+
/* Dead player */
|
|
137
|
+
if (target.chp < 0) {
|
|
138
|
+
/* From hell's heart I stab at thee -- bloodlust can save the player. */
|
|
139
|
+
if (
|
|
140
|
+
target.timed[TMD.BLOODLUST] &&
|
|
141
|
+
target.chp + target.timed[TMD.BLOODLUST]! + target.lev >= 0
|
|
142
|
+
) {
|
|
143
|
+
if (!hooks.rng || hooks.rng.randint0(10)) {
|
|
144
|
+
hooks.onMessage?.("Your lust for blood keeps you alive!");
|
|
145
|
+
} else {
|
|
146
|
+
hooks.onMessage?.(
|
|
147
|
+
"So great was his prowess and skill in warfare, the Elves said: ",
|
|
148
|
+
);
|
|
149
|
+
hooks.onMessage?.("'The Mormegil cannot be slain, save by mischance.'");
|
|
150
|
+
}
|
|
151
|
+
} else {
|
|
152
|
+
const cheat = hooks.cheatDeath?.(killer);
|
|
153
|
+
if (cheat === "pending") return;
|
|
154
|
+
if (cheat) {
|
|
155
|
+
/* Wizard / cheat death: survive (no is_dead). */
|
|
156
|
+
} else {
|
|
157
|
+
/* Note death */
|
|
158
|
+
hooks.onMessage?.("You die.", "DEATH");
|
|
159
|
+
target.isDead = true;
|
|
160
|
+
hooks.onDeath?.(target, killer);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Hitpoint warning */
|
|
167
|
+
if (target.chp < warning) {
|
|
168
|
+
/* Bell on first notice */
|
|
169
|
+
if (oldChp > warning) hooks.bell?.();
|
|
170
|
+
|
|
171
|
+
hooks.onMessage?.("*** LOW HITPOINT WARNING! ***", "HITPOINT_WARN");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player timed-effect runtime, ported from reference/src/player-timed.c
|
|
3
|
+
* (Angband 4.2.6): player_set_timed (L787), player_inc_check (L923),
|
|
4
|
+
* player_inc_timed (L1050), player_dec_timed (L1093), player_clear_timed
|
|
5
|
+
* (L1123) and player_timed_grade_eq (L734).
|
|
6
|
+
*
|
|
7
|
+
* This is the shared primitive that the effect handlers (EF_TIMED_*, EF_CURE),
|
|
8
|
+
* the game turn (poison/cut/stun ticks), combat, and monster attacks all funnel
|
|
9
|
+
* player status changes through, so grade transitions, messages, disturbance,
|
|
10
|
+
* and the NONSTACKING guard behave identically no matter the source. It backs
|
|
11
|
+
* the effect interpreter's TimedHost capability (effects/interpreter.ts).
|
|
12
|
+
*
|
|
13
|
+
* The bound timed-effect table (player/bind.ts TimedEffect[]) is passed in, so
|
|
14
|
+
* this module stays free of pack IO. player_inc_check's fail conditions resolve
|
|
15
|
+
* against injected queries (PlayerIncCheckQueries) because the resist / object /
|
|
16
|
+
* player-flag state they read lives in the player calc layer; a caller with no
|
|
17
|
+
* queries lets every effect through, matching a bare, resistance-less player.
|
|
18
|
+
*
|
|
19
|
+
* Faithful deferrals (all notify-only or downstream, none change durations):
|
|
20
|
+
* - The on_begin_effect / on_end_effect chains dispatched on a 0<->positive
|
|
21
|
+
* transition (they would recurse into the effect interpreter) are invoked via
|
|
22
|
+
* the optional onTransition hook.
|
|
23
|
+
* - disturb + PR_/PU_ redraw + handle_stuff collapse into the onNotify hook.
|
|
24
|
+
*
|
|
25
|
+
* Ported (obj-util.c:1118 print_custom_message, player-timed.c:828-843,945-953):
|
|
26
|
+
* - print_custom_message's {name}/{kind}/{s}/{is} weapon-name substitution
|
|
27
|
+
* (obj-util.c:1118) runs on every emitted message via the optional
|
|
28
|
+
* hooks.weapon descriptor; with no weapon the tags resolve to the obj == NULL
|
|
29
|
+
* forms ("hands", no "s", "are"), matching a bare-handed player.
|
|
30
|
+
* - The temp_resist / oflag_syn "already matches known state" notify
|
|
31
|
+
* suppression (player-timed.c:828-843) runs when hooks supplies the obj_k
|
|
32
|
+
* knowledge queries; absent them (obj_k twin deferred, gap 4.8) no message is
|
|
33
|
+
* suppressed. It only silences a message, never changes the value.
|
|
34
|
+
* - player_inc_check's equip_learn / update_smart_learn / "You resist the
|
|
35
|
+
* effect!" side effects (player-timed.c:945-953) run through the optional
|
|
36
|
+
* PlayerIncCheckHooks; absent them the check stays a pure predicate.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
import type { TimedEffect, TimedGrade } from "./types.js";
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The equipped-weapon descriptor print_custom_message (obj-util.c:1118)
|
|
43
|
+
* substitutes into a status message's {tags}. `name` is object_desc(
|
|
44
|
+
* ODESC_PREFIX | ODESC_BASE), `kind` is object_kind_name, `number` is the
|
|
45
|
+
* stack size (drives {s} / {is}). Undefined means no weapon (the obj == NULL
|
|
46
|
+
* path: "hands", no verb "s", "are").
|
|
47
|
+
*/
|
|
48
|
+
export interface TimedWeaponDesc {
|
|
49
|
+
name: string;
|
|
50
|
+
kind: string;
|
|
51
|
+
number: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* print_custom_message (obj-util.c:1118): substitute the object tags in a
|
|
56
|
+
* status string. {name} -> weapon name or "hands"; {kind} -> weapon kind or
|
|
57
|
+
* "hands"; {s} -> "s" for a single weapon, else ""; {is} -> "is" for a single
|
|
58
|
+
* weapon, else "are" (also "are" with no weapon). Text without tags is returned
|
|
59
|
+
* unchanged.
|
|
60
|
+
*/
|
|
61
|
+
export function substituteTimedMessage(
|
|
62
|
+
text: string,
|
|
63
|
+
weapon?: TimedWeaponDesc,
|
|
64
|
+
): string {
|
|
65
|
+
if (text.indexOf("{") < 0) return text;
|
|
66
|
+
let out = "";
|
|
67
|
+
let i = 0;
|
|
68
|
+
while (i < text.length) {
|
|
69
|
+
const open = text.indexOf("{", i);
|
|
70
|
+
if (open < 0) {
|
|
71
|
+
out += text.slice(i);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
out += text.slice(i, open);
|
|
75
|
+
/* Scan an all-alpha tag body ending in '}'. */
|
|
76
|
+
let j = open + 1;
|
|
77
|
+
while (j < text.length && /[A-Za-z]/.test(text[j]!)) j++;
|
|
78
|
+
if (text[j] === "}") {
|
|
79
|
+
const tag = text.slice(open + 1, j);
|
|
80
|
+
/* msg_tag_lookup: name/kind (4 chars), then "s", then "is". */
|
|
81
|
+
if (tag.startsWith("name")) {
|
|
82
|
+
out += weapon ? weapon.name : "hands";
|
|
83
|
+
} else if (tag.startsWith("kind")) {
|
|
84
|
+
out += weapon ? weapon.kind : "hands";
|
|
85
|
+
} else if (tag.startsWith("s")) {
|
|
86
|
+
if (weapon && weapon.number === 1) out += "s";
|
|
87
|
+
} else if (tag.startsWith("is")) {
|
|
88
|
+
out += !weapon || weapon.number > 1 ? "are" : "is";
|
|
89
|
+
}
|
|
90
|
+
i = j + 1;
|
|
91
|
+
} else {
|
|
92
|
+
/* Invalid tag: drop the '{' and continue after it (obj-util.c:1178
|
|
93
|
+
sets string = next + 1, never copying the stray brace). */
|
|
94
|
+
i = open + 1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** The minimal player shape this module mutates: the timed-duration array. */
|
|
101
|
+
export interface PlayerTimedTarget {
|
|
102
|
+
/** timed[TMD_MAX]: current durations, indexed by the TMD enum. */
|
|
103
|
+
timed: Int16Array;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** msg() sink for the status messages; msgt is the MSG_ type name. */
|
|
107
|
+
export type PlayerTimedMessageSink = (text: string, msgt: string) => void;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* player_inc_check's fail-condition resolvers. Each returns the player's
|
|
111
|
+
* current state for the named flag / element, so the check can decide whether
|
|
112
|
+
* an incoming effect is inhibited. Names are the upstream symbolic names as
|
|
113
|
+
* stored on TimedFail.flag (OF_ / element / PF_ / TMD_ without the prefix).
|
|
114
|
+
*/
|
|
115
|
+
export interface PlayerIncCheckQueries {
|
|
116
|
+
/** player_of_has: an intrinsic or worn object flag (OF_ name). */
|
|
117
|
+
objectFlag(name: string): boolean;
|
|
118
|
+
/** el_info[elem].res_level: > 0 resists, < 0 is vulnerable. */
|
|
119
|
+
resistLevel(name: string): number;
|
|
120
|
+
/** player_has: a player (class/race) flag (PF_ name). */
|
|
121
|
+
playerFlag(name: string): boolean;
|
|
122
|
+
/** whether another timed effect (TMD_ name) is currently active. */
|
|
123
|
+
timedActive(name: string): boolean;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* obj_k knowledge queries for player_set_timed's notify suppression
|
|
128
|
+
* (player-timed.c:828-843). When present, a message that only duplicates
|
|
129
|
+
* already-known player state is silenced. The obj_k twin is deferred (gap 4.8),
|
|
130
|
+
* so callers usually omit this and no message is suppressed.
|
|
131
|
+
*/
|
|
132
|
+
export interface TimedNotifyQueries {
|
|
133
|
+
/** p->obj_k->el_info[elem].res_level != 0 (element resist is known). */
|
|
134
|
+
knownResist(elem: number): boolean;
|
|
135
|
+
/** player_is_immune(p, elem). */
|
|
136
|
+
isImmune(elem: number): boolean;
|
|
137
|
+
/** of_has(p->obj_k->flags, of) (the object flag's presence is known). */
|
|
138
|
+
knownFlag(of: number): boolean;
|
|
139
|
+
/** player_of_has_not_timed(p, of): has the flag from a non-timed source. */
|
|
140
|
+
hasFlagNotTimed(of: number): boolean;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** The consequences a duration change can trigger, all optional. */
|
|
144
|
+
export interface PlayerTimedHooks {
|
|
145
|
+
/** Emit a status message (print_custom_message). */
|
|
146
|
+
onMessage?: PlayerTimedMessageSink;
|
|
147
|
+
/**
|
|
148
|
+
* The equipped weapon, for print_custom_message's {name}/{kind}/{s}/{is}
|
|
149
|
+
* substitution. Omit for a bare-handed player (the obj == NULL tag forms).
|
|
150
|
+
*/
|
|
151
|
+
weapon?: TimedWeaponDesc;
|
|
152
|
+
/**
|
|
153
|
+
* obj_k queries for the temp_resist / oflag_syn notify suppression. Omit to
|
|
154
|
+
* suppress nothing (the obj_k twin is deferred).
|
|
155
|
+
*/
|
|
156
|
+
notifyQueries?: TimedNotifyQueries;
|
|
157
|
+
/**
|
|
158
|
+
* disturb + redraw/update + handle_stuff, run once when notify is true;
|
|
159
|
+
* `disturb` (from can_disturb) says whether the player is actually disturbed.
|
|
160
|
+
*/
|
|
161
|
+
onNotify?: (idx: number, disturb: boolean) => void;
|
|
162
|
+
/**
|
|
163
|
+
* Dispatch the effect's on_begin_effect / on_end_effect chain on a
|
|
164
|
+
* 0 <-> positive transition (begin = true when the effect starts).
|
|
165
|
+
* canDisturb mirrors player_set_timed's argument: upstream runs the chain
|
|
166
|
+
* with source_none() when it is true and source_player() otherwise.
|
|
167
|
+
*/
|
|
168
|
+
onTransition?: (idx: number, begin: boolean, canDisturb: boolean) => void;
|
|
169
|
+
/** player_inc_check result; when absent, every increase is allowed. */
|
|
170
|
+
incCheck?: (idx: number) => boolean;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** TMD_FAIL_ codes (player-timed.h): the meaning of a TimedFail.code. */
|
|
174
|
+
const TMD_FAIL_FLAG_OBJECT = 1;
|
|
175
|
+
const TMD_FAIL_FLAG_RESIST = 2;
|
|
176
|
+
const TMD_FAIL_FLAG_VULN = 3;
|
|
177
|
+
const TMD_FAIL_FLAG_PLAYER = 4;
|
|
178
|
+
const TMD_FAIL_FLAG_TIMED_EFFECT = 5;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* The grade a duration `v` falls into for a timed effect, walking the ordered
|
|
182
|
+
* grade list exactly as player_set_timed / player_timed_grade_eq do (advance
|
|
183
|
+
* while v exceeds the current grade's max, stopping at the last grade).
|
|
184
|
+
*/
|
|
185
|
+
export function playerTimedGrade(effect: TimedEffect, v: number): TimedGrade {
|
|
186
|
+
const grades = effect.grades;
|
|
187
|
+
let i = 0;
|
|
188
|
+
while (v > grades[i]!.max) {
|
|
189
|
+
i++;
|
|
190
|
+
if (i >= grades.length - 1) break;
|
|
191
|
+
}
|
|
192
|
+
return grades[i]!;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** player_timed_grade_eq: whether the active grade's name matches `match`. */
|
|
196
|
+
export function playerTimedGradeEq(
|
|
197
|
+
p: PlayerTimedTarget,
|
|
198
|
+
effect: TimedEffect,
|
|
199
|
+
match: string,
|
|
200
|
+
): boolean {
|
|
201
|
+
const v = p.timed[effect.index]!;
|
|
202
|
+
if (!v) return false;
|
|
203
|
+
const grade = playerTimedGrade(effect, v);
|
|
204
|
+
return grade.name !== null && grade.name === match;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* The learning / message side effects of a non-lore player_inc_check
|
|
209
|
+
* (player-timed.c:945-953), all optional. Present them for a real effect
|
|
210
|
+
* application; omit them for a lore-only check (the port's lore path passes no
|
|
211
|
+
* hooks, matching the C `lore` branch that skips them).
|
|
212
|
+
*/
|
|
213
|
+
export interface PlayerIncCheckHooks {
|
|
214
|
+
/** cave->mon_current > 0: the effect originates from a monster action. */
|
|
215
|
+
monsterSource?: boolean;
|
|
216
|
+
/** equip_learn_flag(p, of): learn the object flag from worn gear. */
|
|
217
|
+
equipLearnFlag?: (name: string) => void;
|
|
218
|
+
/** equip_learn_element(p, elem): learn the element resist from worn gear. */
|
|
219
|
+
equipLearnElement?: (name: string) => void;
|
|
220
|
+
/** update_smart_learn(mon, p, of, 0, -1): teach the monster the player flag. */
|
|
221
|
+
updateSmartLearn?: (name: string) => void;
|
|
222
|
+
/** msg("You resist the effect!") when a monster's effect is resisted. */
|
|
223
|
+
resistMessage?: () => void;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* player_inc_check: whether a timed effect is allowed to increase, given the
|
|
228
|
+
* player's resistances and flags. Returns false when a fail condition inhibits
|
|
229
|
+
* it. With `hooks` (a real, non-lore check) it also runs the learning and
|
|
230
|
+
* "You resist the effect!" side effects (player-timed.c:945-953): the object /
|
|
231
|
+
* element flag is learned from worn gear on every OBJECT / RESIST / VULN check,
|
|
232
|
+
* a monster source is taught via update_smart_learn, and a resisted monster
|
|
233
|
+
* effect prints the resist message.
|
|
234
|
+
*/
|
|
235
|
+
export function playerIncCheck(
|
|
236
|
+
effect: TimedEffect,
|
|
237
|
+
queries: PlayerIncCheckQueries,
|
|
238
|
+
hooks?: PlayerIncCheckHooks,
|
|
239
|
+
): boolean {
|
|
240
|
+
for (const f of effect.fail) {
|
|
241
|
+
switch (f.code) {
|
|
242
|
+
case TMD_FAIL_FLAG_OBJECT:
|
|
243
|
+
/* Learn the flag from worn gear and teach a monster source, then
|
|
244
|
+
* inhibit if the player has the flag (with a message from a monster). */
|
|
245
|
+
hooks?.equipLearnFlag?.(f.flag);
|
|
246
|
+
if (hooks?.monsterSource) hooks.updateSmartLearn?.(f.flag);
|
|
247
|
+
if (queries.objectFlag(f.flag)) {
|
|
248
|
+
if (hooks?.monsterSource) hooks.resistMessage?.();
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
case TMD_FAIL_FLAG_RESIST:
|
|
253
|
+
hooks?.equipLearnElement?.(f.flag);
|
|
254
|
+
if (queries.resistLevel(f.flag) > 0) return false;
|
|
255
|
+
break;
|
|
256
|
+
case TMD_FAIL_FLAG_VULN:
|
|
257
|
+
hooks?.equipLearnElement?.(f.flag);
|
|
258
|
+
if (queries.resistLevel(f.flag) < 0) return false;
|
|
259
|
+
break;
|
|
260
|
+
case TMD_FAIL_FLAG_PLAYER:
|
|
261
|
+
if (queries.playerFlag(f.flag)) return false;
|
|
262
|
+
break;
|
|
263
|
+
case TMD_FAIL_FLAG_TIMED_EFFECT:
|
|
264
|
+
if (queries.timedActive(f.flag)) return false;
|
|
265
|
+
break;
|
|
266
|
+
default:
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* player_set_timed: set a timed effect to `v`, coercing it into the effect's
|
|
275
|
+
* valid range, emitting grade-transition / begin / end / increase / decrease
|
|
276
|
+
* messages, and notifying (disturb + redraw) as upstream does. Returns whether
|
|
277
|
+
* the player was notified.
|
|
278
|
+
*/
|
|
279
|
+
export function playerSetTimed(
|
|
280
|
+
p: PlayerTimedTarget,
|
|
281
|
+
effect: TimedEffect,
|
|
282
|
+
v: number,
|
|
283
|
+
notify: boolean,
|
|
284
|
+
canDisturb: boolean,
|
|
285
|
+
hooks: PlayerTimedHooks = {},
|
|
286
|
+
): boolean {
|
|
287
|
+
const idx = effect.index;
|
|
288
|
+
const old = p.timed[idx]!;
|
|
289
|
+
|
|
290
|
+
/* Lower bound */
|
|
291
|
+
v = Math.max(v, effect.lowerBound);
|
|
292
|
+
|
|
293
|
+
/* No change */
|
|
294
|
+
if (old === v) return false;
|
|
295
|
+
|
|
296
|
+
/* Find the grade we will be going to, and the current one. */
|
|
297
|
+
const newGrade = playerTimedGrade(effect, v);
|
|
298
|
+
const currentGrade = playerTimedGrade(effect, old);
|
|
299
|
+
|
|
300
|
+
/* Upper bound */
|
|
301
|
+
if (v > newGrade.max) {
|
|
302
|
+
if (old === newGrade.max) {
|
|
303
|
+
/* Already at the maximum possible; no change. */
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
v = newGrade.max;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/*
|
|
310
|
+
* Don't mention effects which already match the known player state
|
|
311
|
+
* (player-timed.c:828-843): a temporary resist the player is known to be
|
|
312
|
+
* immune to, or a flag synonym the player is known to have from worn gear.
|
|
313
|
+
* Only silences a message; never changes the value. Requires the obj_k twin
|
|
314
|
+
* queries (deferred, gap 4.8), so with none supplied nothing is suppressed.
|
|
315
|
+
*/
|
|
316
|
+
const q = hooks.notifyQueries;
|
|
317
|
+
if (q) {
|
|
318
|
+
if (
|
|
319
|
+
effect.tempResist !== -1 &&
|
|
320
|
+
q.knownResist(effect.tempResist) &&
|
|
321
|
+
q.isImmune(effect.tempResist)
|
|
322
|
+
) {
|
|
323
|
+
notify = false;
|
|
324
|
+
}
|
|
325
|
+
if (
|
|
326
|
+
effect.oflagSyn &&
|
|
327
|
+
effect.oflagDup !== 0 &&
|
|
328
|
+
q.knownFlag(effect.oflagDup) &&
|
|
329
|
+
q.hasFlagNotTimed(effect.oflagDup)
|
|
330
|
+
) {
|
|
331
|
+
notify = false;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/* print_custom_message: substitute weapon-name tags in every status line. */
|
|
336
|
+
const say = (text: string, msgt: string): void =>
|
|
337
|
+
hooks.onMessage?.(substituteTimedMessage(text, hooks.weapon), msgt);
|
|
338
|
+
|
|
339
|
+
/* Always mention going up a grade, otherwise on request. */
|
|
340
|
+
if (newGrade.grade > currentGrade.grade) {
|
|
341
|
+
if (newGrade.upMsg) say(newGrade.upMsg, effect.msgt);
|
|
342
|
+
notify = true;
|
|
343
|
+
} else if (newGrade.grade < currentGrade.grade && newGrade.downMsg) {
|
|
344
|
+
say(newGrade.downMsg, effect.msgt);
|
|
345
|
+
notify = true;
|
|
346
|
+
} else if (notify) {
|
|
347
|
+
if (v === 0) {
|
|
348
|
+
/* Finishing */
|
|
349
|
+
if (effect.onEnd) say(effect.onEnd, "RECOVER");
|
|
350
|
+
} else if (old > v && effect.onDecrease) {
|
|
351
|
+
/* Decrementing */
|
|
352
|
+
say(effect.onDecrease, effect.msgt);
|
|
353
|
+
} else if (v > old && effect.onIncrease) {
|
|
354
|
+
/* Incrementing */
|
|
355
|
+
say(effect.onIncrease, effect.msgt);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/* Dispatch effects for 0 <-> positive transitions (player-timed.c:873-891). */
|
|
360
|
+
if (v > 0 && !old) {
|
|
361
|
+
hooks.onTransition?.(idx, true, canDisturb);
|
|
362
|
+
} else if (v === 0) {
|
|
363
|
+
hooks.onTransition?.(idx, false, canDisturb);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/* Use the value */
|
|
367
|
+
p.timed[idx] = v;
|
|
368
|
+
|
|
369
|
+
if (notify) hooks.onNotify?.(idx, canDisturb);
|
|
370
|
+
|
|
371
|
+
return notify;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* player_inc_timed: increase a timed effect by `v`. When `check` is true the
|
|
376
|
+
* increase can be resisted (hooks.incCheck); NONSTACKING effects already active
|
|
377
|
+
* block the increase entirely.
|
|
378
|
+
*/
|
|
379
|
+
export function playerIncTimed(
|
|
380
|
+
p: PlayerTimedTarget,
|
|
381
|
+
effect: TimedEffect,
|
|
382
|
+
v: number,
|
|
383
|
+
notify: boolean,
|
|
384
|
+
canDisturb: boolean,
|
|
385
|
+
check: boolean,
|
|
386
|
+
hooks: PlayerTimedHooks = {},
|
|
387
|
+
): boolean {
|
|
388
|
+
if (check === false || (hooks.incCheck ? hooks.incCheck(effect.index) : true)) {
|
|
389
|
+
if (effect.nonStacking && p.timed[effect.index]! > 0) {
|
|
390
|
+
/* Nonstacking and already active: block the increase. */
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
return playerSetTimed(
|
|
394
|
+
p,
|
|
395
|
+
effect,
|
|
396
|
+
p.timed[effect.index]! + v,
|
|
397
|
+
notify,
|
|
398
|
+
canDisturb,
|
|
399
|
+
hooks,
|
|
400
|
+
);
|
|
401
|
+
}
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/** player_dec_timed: reduce a timed effect by `v` (always notifies if finishing). */
|
|
406
|
+
export function playerDecTimed(
|
|
407
|
+
p: PlayerTimedTarget,
|
|
408
|
+
effect: TimedEffect,
|
|
409
|
+
v: number,
|
|
410
|
+
notify: boolean,
|
|
411
|
+
canDisturb: boolean,
|
|
412
|
+
hooks: PlayerTimedHooks = {},
|
|
413
|
+
): boolean {
|
|
414
|
+
const newValue = p.timed[effect.index]! - v;
|
|
415
|
+
if (newValue > 0) {
|
|
416
|
+
return playerSetTimed(p, effect, newValue, notify, canDisturb, hooks);
|
|
417
|
+
}
|
|
418
|
+
return playerSetTimed(p, effect, newValue, true, canDisturb, hooks);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/** player_clear_timed: clear a timed effect (set to 0). */
|
|
422
|
+
export function playerClearTimed(
|
|
423
|
+
p: PlayerTimedTarget,
|
|
424
|
+
effect: TimedEffect,
|
|
425
|
+
notify: boolean,
|
|
426
|
+
canDisturb: boolean,
|
|
427
|
+
hooks: PlayerTimedHooks = {},
|
|
428
|
+
): boolean {
|
|
429
|
+
return playerSetTimed(p, effect, 0, notify, canDisturb, hooks);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/* ------------------------------------------------------------------ *
|
|
433
|
+
* Temporary brands and slays (obj-slays.c:287-317).
|
|
434
|
+
* ------------------------------------------------------------------ */
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* The raw player_timed pack fields naming a temporary brand/slay (the
|
|
438
|
+
* `brand:` / `slay:` directives, player-timed.c:361-405). The bound
|
|
439
|
+
* TimedEffect does not carry them, so the wiring passes the raw pack records
|
|
440
|
+
* (in TMD order) alongside the brand/slay tables.
|
|
441
|
+
*/
|
|
442
|
+
export interface TimedTempBrandSlayRecord {
|
|
443
|
+
brand?: readonly string[];
|
|
444
|
+
slay?: readonly string[];
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* player_has_temporary_brand / player_has_temporary_slay (obj-slays.c:287-317)
|
|
449
|
+
* over the live timed array: an active timed effect whose data binds the
|
|
450
|
+
* brand/slay index grants it temporarily. The records' brand/slay codes are
|
|
451
|
+
* resolved against the bound tables once, mirroring the temp_brand/temp_slay
|
|
452
|
+
* fields upstream stamps at parse time (player-timed.c:380,403).
|
|
453
|
+
*/
|
|
454
|
+
export function buildTempBrandSlay(
|
|
455
|
+
p: PlayerTimedTarget,
|
|
456
|
+
records: readonly TimedTempBrandSlayRecord[],
|
|
457
|
+
brands: readonly ({ code: string } | null)[],
|
|
458
|
+
slays: readonly ({ code: string } | null)[],
|
|
459
|
+
): { hasBrand(idx: number): boolean; hasSlay(idx: number): boolean } {
|
|
460
|
+
const tempBrand = records.map((r) => {
|
|
461
|
+
const code = r.brand?.[0];
|
|
462
|
+
return code ? brands.findIndex((b) => b !== null && b.code === code) : -1;
|
|
463
|
+
});
|
|
464
|
+
const tempSlay = records.map((r) => {
|
|
465
|
+
const code = r.slay?.[0];
|
|
466
|
+
return code ? slays.findIndex((s) => s !== null && s.code === code) : -1;
|
|
467
|
+
});
|
|
468
|
+
return {
|
|
469
|
+
hasBrand(idx: number): boolean {
|
|
470
|
+
for (let i = 0; i < tempBrand.length; i++) {
|
|
471
|
+
if (tempBrand[i] === idx && p.timed[i]) return true;
|
|
472
|
+
}
|
|
473
|
+
return false;
|
|
474
|
+
},
|
|
475
|
+
hasSlay(idx: number): boolean {
|
|
476
|
+
for (let i = 0; i < tempSlay.length; i++) {
|
|
477
|
+
if (tempSlay[i] === idx && p.timed[i]) return true;
|
|
478
|
+
}
|
|
479
|
+
return false;
|
|
480
|
+
},
|
|
481
|
+
};
|
|
482
|
+
}
|