@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,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-score row formatting, ported from reference/src/ui-score.c
|
|
3
|
+
* (Angband 4.2.6) display_score_page (L30). The C draws three lines per record
|
|
4
|
+
* with Term calls; this produces the same strings as DATA (ScoreRow), leaving
|
|
5
|
+
* the Term paging/scroll/keypress loop (display_scores_aux, L117) to the shell.
|
|
6
|
+
*
|
|
7
|
+
* The number fields the C reads back from the fixed-width record (pts printed
|
|
8
|
+
* with "%9s"; user/gold/turns are the space-padded numbers with their leading
|
|
9
|
+
* whitespace stripped) are reconstructed here from the typed HighScore, giving
|
|
10
|
+
* byte-identical output.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { COLOUR_L_GREEN, COLOUR_WHITE } from "../color.js";
|
|
14
|
+
import { SCORES_PER_PAGE } from "./types.js";
|
|
15
|
+
import type { HighScore, ScoreRow } from "./types.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Resolvers for the race/class name a record's indices map to
|
|
19
|
+
* (player_id2race / player_id2class in display_score_page). Return null for an
|
|
20
|
+
* unknown index; the C prints "<none>" then. Supply from a PlayerRegistry:
|
|
21
|
+
* `{ raceName: (i) => reg.races[i]?.name ?? null, ... }`.
|
|
22
|
+
*/
|
|
23
|
+
export interface ScoreNameResolver {
|
|
24
|
+
raceName(ridx: number): string | null;
|
|
25
|
+
className(cidx: number): string | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** printf "%Ns": right-justify a string into at least N columns. */
|
|
29
|
+
function padStart(s: string, width: number): string {
|
|
30
|
+
return s.length >= width ? s : " ".repeat(width - s.length) + s;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Clean up the stored "when" for display (ui-score.c L100): an "@YYYYMMDD"
|
|
35
|
+
* stamp (a leading '@' with total length 9) becomes "YYYY-MM-DD"; anything
|
|
36
|
+
* else (e.g. "TODAY") is shown unchanged.
|
|
37
|
+
*/
|
|
38
|
+
function formatWhen(day: string): string {
|
|
39
|
+
if (day.startsWith("@") && day.length === 9) {
|
|
40
|
+
return `${day.slice(1, 5)}-${day.slice(5, 7)}-${day.slice(7, 9)}`;
|
|
41
|
+
}
|
|
42
|
+
return day;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Build the three display lines for a single record at `start`, highlighted
|
|
47
|
+
* when start === highlight. Faithful to the body of display_score_page's loop.
|
|
48
|
+
*/
|
|
49
|
+
export function scoreRow(
|
|
50
|
+
scores: readonly HighScore[],
|
|
51
|
+
start: number,
|
|
52
|
+
highlight: number,
|
|
53
|
+
names: ScoreNameResolver,
|
|
54
|
+
): ScoreRow {
|
|
55
|
+
const score = scores[start]!;
|
|
56
|
+
const highlighted = start === highlight;
|
|
57
|
+
const color = highlighted ? COLOUR_L_GREEN : COLOUR_WHITE;
|
|
58
|
+
|
|
59
|
+
const race = names.raceName(score.pRace);
|
|
60
|
+
const cls = names.className(score.pClass);
|
|
61
|
+
const clev = score.curLev;
|
|
62
|
+
const mlev = score.maxLev;
|
|
63
|
+
const cdun = score.curDun;
|
|
64
|
+
const mdun = score.maxDun;
|
|
65
|
+
|
|
66
|
+
// Line 1: "%3d.%9s %s the %s %s, level %d" (+ " (Max %d)" if mlev > clev).
|
|
67
|
+
let line1 =
|
|
68
|
+
`${padStart(String(start + 1), 3)}.${padStart(String(score.pts), 9)}` +
|
|
69
|
+
` ${score.who} the ${race ?? "<none>"} ${cls ?? "<none>"}, level ${clev}`;
|
|
70
|
+
if (mlev > clev) line1 += ` (Max ${mlev})`;
|
|
71
|
+
|
|
72
|
+
// Line 2: town vs dungeon death (+ " (Max %d)" if mdun > cdun).
|
|
73
|
+
let line2 = !cdun
|
|
74
|
+
? `Killed by ${score.how} in the town`
|
|
75
|
+
: `Killed by ${score.how} on dungeon level ${cdun}`;
|
|
76
|
+
if (mdun > cdun) line2 += ` (Max ${mdun})`;
|
|
77
|
+
|
|
78
|
+
// Line 3: "(User %s, Date %s, Gold %s, Turn %s)." - the numeric fields are
|
|
79
|
+
// the stripped (no leading space) decimal values.
|
|
80
|
+
const line3 =
|
|
81
|
+
`(User ${score.uid}, Date ${formatWhen(score.day)}, ` +
|
|
82
|
+
`Gold ${score.gold}, Turn ${score.turns}).`;
|
|
83
|
+
|
|
84
|
+
return { rank: start + 1, highlighted, color, line1, line2, line3 };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* display_score_page (ui-score.c L30): the rows for one page - up to 5 entries
|
|
89
|
+
* starting at `start`, stopping at `count`. `highlight` is the index to draw in
|
|
90
|
+
* L_GREEN (or -1 for none).
|
|
91
|
+
*/
|
|
92
|
+
export function scorePageRows(
|
|
93
|
+
scores: readonly HighScore[],
|
|
94
|
+
start: number,
|
|
95
|
+
count: number,
|
|
96
|
+
highlight: number,
|
|
97
|
+
names: ScoreNameResolver,
|
|
98
|
+
): ScoreRow[] {
|
|
99
|
+
const rows: ScoreRow[] = [];
|
|
100
|
+
for (let n = 0; start < count && n < SCORES_PER_PAGE; start++, n++) {
|
|
101
|
+
rows.push(scoreRow(scores, start, highlight, names));
|
|
102
|
+
}
|
|
103
|
+
return rows;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* All rows for the inclusive-exclusive range [from, to) clamped to the real
|
|
108
|
+
* record count, in one flat list (convenience over paging). `highlight` is the
|
|
109
|
+
* highlighted index or -1. Useful for a scroll surface that renders every row.
|
|
110
|
+
*/
|
|
111
|
+
export function scoreRows(
|
|
112
|
+
scores: readonly HighScore[],
|
|
113
|
+
from: number,
|
|
114
|
+
to: number,
|
|
115
|
+
highlight: number,
|
|
116
|
+
names: ScoreNameResolver,
|
|
117
|
+
): ScoreRow[] {
|
|
118
|
+
const start = Math.max(0, from);
|
|
119
|
+
const end = Math.min(to, scores.length);
|
|
120
|
+
const rows: ScoreRow[] = [];
|
|
121
|
+
for (let i = start; i < end; i++) {
|
|
122
|
+
rows.push(scoreRow(scores, i, highlight, names));
|
|
123
|
+
}
|
|
124
|
+
return rows;
|
|
125
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-score logic, ported from reference/src/score.c and score-util.c
|
|
3
|
+
* (Angband 4.2.6): the scoring formula, the build/where/add/count/regularize
|
|
4
|
+
* table operations, and the enter-score gating. All operations here are pure
|
|
5
|
+
* over an in-memory HighScore[]; persistence arrives through the injected
|
|
6
|
+
* ScoreStore seam (types.ts), never a filesystem.
|
|
7
|
+
*
|
|
8
|
+
* The port operates on a COMPACT list (only real records, no empty padding),
|
|
9
|
+
* capped at MAX_HISCORES, rather than the C's fixed array of MAX_HISCORES
|
|
10
|
+
* records with empty slots at the tail. The observable results (insert slot,
|
|
11
|
+
* shift-and-truncate on add, sort order, count) are identical; see
|
|
12
|
+
* parity/ledger/high-scores.yaml for the equivalence argument.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { Player } from "../player/player.js";
|
|
16
|
+
import { ENGINE_VERSION } from "../version.js";
|
|
17
|
+
import { MAX_HISCORES, WINNING_HOW } from "./types.js";
|
|
18
|
+
import type { HighScore, ScoreStore } from "./types.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Default build id stamped into a record's `what` (score.c build_score uses the
|
|
22
|
+
* global `buildid`). The web shell may pass a specific build id via
|
|
23
|
+
* BuildScoreDeps.buildid.
|
|
24
|
+
*
|
|
25
|
+
* This was a hardcoded copy of the version, on the reasoning that importing the
|
|
26
|
+
* barrel's ENGINE_VERSION would make a cycle. True of the barrel, but version.ts
|
|
27
|
+
* exists precisely so a core module can cite the version without it - and the
|
|
28
|
+
* copy did exactly what a copy does: the port went to 0.9.0 and every score kept
|
|
29
|
+
* being stamped 0.1.0.
|
|
30
|
+
*/
|
|
31
|
+
const DEFAULT_BUILDID = ENGINE_VERSION;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* total_points (score.c L28): the whole score is max experience plus a flat
|
|
35
|
+
* bonus per deepest dungeon level reached. Ported EXACTLY.
|
|
36
|
+
*/
|
|
37
|
+
export function totalPoints(p: Player): number {
|
|
38
|
+
return p.maxExp + 100 * p.maxDepth;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The non-Player state build_score reads (score.c build_score, L216). Upstream
|
|
43
|
+
* pulls these from globals (turn, player_uid, buildid) or the live world
|
|
44
|
+
* (p->depth is the current cave depth, distinct from p->max_depth). The port
|
|
45
|
+
* keeps them off Player, so buildScore takes them as deps, matching the
|
|
46
|
+
* char-sheet's deps idiom (game/char-sheet.ts).
|
|
47
|
+
*/
|
|
48
|
+
export interface BuildScoreDeps {
|
|
49
|
+
/** died_from: the method-of-death string (p->died_from, or "nobody (yet!)"). */
|
|
50
|
+
diedFrom: string;
|
|
51
|
+
/** turn (game-world.c): the game-turn counter at death. */
|
|
52
|
+
turn: number;
|
|
53
|
+
/** p->depth: the LIVE dungeon depth (cur_dun), not max_depth. */
|
|
54
|
+
depth: number;
|
|
55
|
+
/** p->full_name: the character's name (only first 15 chars are kept). */
|
|
56
|
+
fullName?: string;
|
|
57
|
+
/** player_uid: the OS player id. Default 0 (the port has no OS uid). */
|
|
58
|
+
uid?: number;
|
|
59
|
+
/** buildid the record is stamped with (what[]). Default ENGINE_VERSION. */
|
|
60
|
+
buildid?: string;
|
|
61
|
+
/**
|
|
62
|
+
* The time of death, for the "@YYYYMMDD" day stamp. NULL/undefined (the
|
|
63
|
+
* player is not dead) yields "TODAY", exactly as build_score.
|
|
64
|
+
*/
|
|
65
|
+
deathTime?: Date | null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** strftime "@%Y%m%d" in LOCAL time (build_score L235 uses localtime). */
|
|
69
|
+
function formatDay(deathTime: Date | null | undefined): string {
|
|
70
|
+
if (!deathTime) return "TODAY";
|
|
71
|
+
const y = String(deathTime.getFullYear()).padStart(4, "0");
|
|
72
|
+
const m = String(deathTime.getMonth() + 1).padStart(2, "0");
|
|
73
|
+
const d = String(deathTime.getDate()).padStart(2, "0");
|
|
74
|
+
return `@${y}${m}${d}`;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* build_score (score.c L216): fill a score record from the player plus the
|
|
79
|
+
* death-time and cause. The C truncates who to 15 chars ("%-.15s") and how to
|
|
80
|
+
* 31 (my_strcpy into how[32]); reproduced here. `what` marks the record in
|
|
81
|
+
* use (a non-empty build id).
|
|
82
|
+
*/
|
|
83
|
+
export function buildScore(p: Player, deps: BuildScoreDeps): HighScore {
|
|
84
|
+
return {
|
|
85
|
+
what: (deps.buildid ?? DEFAULT_BUILDID).slice(0, 7),
|
|
86
|
+
pts: totalPoints(p),
|
|
87
|
+
gold: p.au,
|
|
88
|
+
turns: deps.turn,
|
|
89
|
+
day: formatDay(deps.deathTime),
|
|
90
|
+
who: (deps.fullName ?? "").slice(0, 15),
|
|
91
|
+
uid: deps.uid ?? 0,
|
|
92
|
+
pRace: p.race.ridx,
|
|
93
|
+
pClass: p.cls.cidx,
|
|
94
|
+
curLev: p.lev,
|
|
95
|
+
curDun: deps.depth,
|
|
96
|
+
maxLev: p.maxLev,
|
|
97
|
+
maxDun: p.maxDepth,
|
|
98
|
+
how: deps.diedFrom.slice(0, 31),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** A record is "empty"/unused when its build-id marker is blank (what[0]). */
|
|
103
|
+
function isEmpty(s: HighScore): boolean {
|
|
104
|
+
return s.what.length === 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* highscore_valid (score-util.c L95): a non-empty record must have parseable
|
|
109
|
+
* numeric fields. With typed storage the only ways a record can be invalid are
|
|
110
|
+
* a blank build id (treated as empty) or a non-finite number in a numeric
|
|
111
|
+
* field; NaN/Infinity would break the strtol-equivalent ordering, so they are
|
|
112
|
+
* rejected exactly as an unparseable C field would be.
|
|
113
|
+
*/
|
|
114
|
+
export function highscoreValid(s: HighScore): boolean {
|
|
115
|
+
if (isEmpty(s)) return true; // an empty record is valid (all-empty in C)
|
|
116
|
+
const nums = [
|
|
117
|
+
s.pts,
|
|
118
|
+
s.gold,
|
|
119
|
+
s.turns,
|
|
120
|
+
s.uid,
|
|
121
|
+
s.pRace,
|
|
122
|
+
s.pClass,
|
|
123
|
+
s.curLev,
|
|
124
|
+
s.curDun,
|
|
125
|
+
s.maxLev,
|
|
126
|
+
s.maxDun,
|
|
127
|
+
];
|
|
128
|
+
return nums.every((n) => Number.isFinite(n));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* highscore_cmp (score-util.c L43): order two records best-first. Winners
|
|
133
|
+
* (how == WINNING_HOW) precede non-winners; then more points precede fewer;
|
|
134
|
+
* ties keep their existing order (the C uses the record address, which for a
|
|
135
|
+
* contiguous array is the current order - a stable sort reproduces this).
|
|
136
|
+
* Returns <0 if a precedes b, >0 if a follows b, 0 for a true tie.
|
|
137
|
+
*/
|
|
138
|
+
export function highscoreCmp(a: HighScore, b: HighScore): number {
|
|
139
|
+
const ae = isEmpty(a);
|
|
140
|
+
const be = isEmpty(b);
|
|
141
|
+
if (ae) return be ? 0 : 1; // empty records sort after non-empty ones
|
|
142
|
+
if (be) return -1;
|
|
143
|
+
|
|
144
|
+
const awinner = a.how === WINNING_HOW;
|
|
145
|
+
const bwinner = b.how === WINNING_HOW;
|
|
146
|
+
if (awinner !== bwinner) return awinner ? -1 : 1;
|
|
147
|
+
|
|
148
|
+
if (a.pts !== b.pts) return a.pts > b.pts ? -1 : 1;
|
|
149
|
+
return 0; // true tie: stable sort keeps current order
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* highscore_where (score-util.c L276): the index a new (valid, non-empty)
|
|
154
|
+
* entry would take in a best-first list. Ties prefer the NEW entry
|
|
155
|
+
* (entry_pts >= score_pts). If it does not fit before any existing record it
|
|
156
|
+
* takes the first free slot (list length while below the cap) or, when the
|
|
157
|
+
* list is full, replaces the last record (index MAX_HISCORES - 1).
|
|
158
|
+
*/
|
|
159
|
+
export function highscoreWhere(
|
|
160
|
+
entry: HighScore,
|
|
161
|
+
scores: readonly HighScore[],
|
|
162
|
+
): number {
|
|
163
|
+
const entryWinner = entry.how === WINNING_HOW;
|
|
164
|
+
const entryPts = entry.pts;
|
|
165
|
+
|
|
166
|
+
for (let i = 0; i < scores.length; i++) {
|
|
167
|
+
const s = scores[i]!;
|
|
168
|
+
const scoreWinner = s.how === WINNING_HOW;
|
|
169
|
+
if (entryWinner !== scoreWinner) {
|
|
170
|
+
if (entryWinner) return i;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (entryPts >= s.pts) return i;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Did not fit before any record: first free slot, else replace the last.
|
|
177
|
+
return scores.length < MAX_HISCORES ? scores.length : MAX_HISCORES - 1;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* highscore_add (score.c L72): insert an entry at its slot, shifting lower
|
|
182
|
+
* records down and dropping anything past MAX_HISCORES. Mutates `scores` in
|
|
183
|
+
* place (like the C on its array) and returns the slot used.
|
|
184
|
+
*
|
|
185
|
+
* The full-list case matches the C's memmove-with-zero-count: highscoreWhere
|
|
186
|
+
* returns MAX_HISCORES - 1, splicing there pushes the old last record off the
|
|
187
|
+
* end, and the truncation drops it - i.e. the last entry is replaced.
|
|
188
|
+
*/
|
|
189
|
+
export function highscoreAdd(entry: HighScore, scores: HighScore[]): number {
|
|
190
|
+
const slot = highscoreWhere(entry, scores);
|
|
191
|
+
scores.splice(slot, 0, entry);
|
|
192
|
+
if (scores.length > MAX_HISCORES) scores.length = MAX_HISCORES;
|
|
193
|
+
return slot;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** highscore_count (score.c L84): number of real records. */
|
|
197
|
+
export function highscoreCount(scores: readonly HighScore[]): number {
|
|
198
|
+
let n = 0;
|
|
199
|
+
for (const s of scores) {
|
|
200
|
+
if (isEmpty(s)) break; // empties are tail-only; stop at the first
|
|
201
|
+
n++;
|
|
202
|
+
}
|
|
203
|
+
return n;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* highscore_regularize (score-util.c L199): force the list valid and ordered.
|
|
208
|
+
* Invalid or empty records are dropped, and the remainder is stable-sorted
|
|
209
|
+
* best-first (winners, then points, ties in place). Returns a NEW list plus a
|
|
210
|
+
* flag reporting whether anything changed (the C's `irregular` return).
|
|
211
|
+
*/
|
|
212
|
+
export function highscoreRegularize(scores: readonly HighScore[]): {
|
|
213
|
+
scores: HighScore[];
|
|
214
|
+
irregular: boolean;
|
|
215
|
+
} {
|
|
216
|
+
const kept: HighScore[] = [];
|
|
217
|
+
let irregular = false;
|
|
218
|
+
for (const s of scores) {
|
|
219
|
+
if (!highscoreValid(s) || isEmpty(s)) {
|
|
220
|
+
irregular = true; // an invalid/empty record in the body is an irregularity
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
kept.push(s);
|
|
224
|
+
}
|
|
225
|
+
// Detect out-of-order before sorting (stable sort would otherwise hide it).
|
|
226
|
+
for (let i = 1; i < kept.length; i++) {
|
|
227
|
+
if (highscoreCmp(kept[i - 1]!, kept[i]!) > 0) {
|
|
228
|
+
irregular = true;
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
kept.sort(highscoreCmp);
|
|
233
|
+
return { scores: kept, irregular };
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* The outcome of enterScore: either entered (with its slot) or rejected with
|
|
238
|
+
* the reason the C would msg() about. The C is void + msg(); the port returns
|
|
239
|
+
* the decision so the shell owns the message.
|
|
240
|
+
*/
|
|
241
|
+
export type EnterScoreOutcome =
|
|
242
|
+
| { entered: true; slot: number }
|
|
243
|
+
| {
|
|
244
|
+
entered: false;
|
|
245
|
+
reason: "cheater" | "wizard" | "borg" | "interrupted" | "retired";
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* The gating inputs enter_score checks (score.c L272). The port has no options
|
|
250
|
+
* table or noscore flags on Player yet, so they arrive as an explicit seam
|
|
251
|
+
* (defaults = a clean, scored character).
|
|
252
|
+
*/
|
|
253
|
+
export interface EnterScoreGating {
|
|
254
|
+
/** Any OP_SCORE ("cheating") option is on (score.c L277 loop). */
|
|
255
|
+
cheated?: boolean;
|
|
256
|
+
/** p->noscore & (NOSCORE_WIZARD | NOSCORE_DEBUG): a wizard/debug character. */
|
|
257
|
+
noscore?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* p->noscore & NOSCORE_BORG (score.c:291, the !SCORE_BORGS branch): played by
|
|
260
|
+
* the Borg. Checked AFTER the wizard bits, so a character that is both is
|
|
261
|
+
* reported as a wizard, matching the C's else-if chain.
|
|
262
|
+
*/
|
|
263
|
+
borg?: boolean;
|
|
264
|
+
/** p->total_winner: a winner is scored even when interrupted/retiring. */
|
|
265
|
+
totalWinner?: boolean;
|
|
266
|
+
/** p->died_from (score.c L299/L302): "Interrupting" / "Retiring" are gated. */
|
|
267
|
+
diedFrom: string;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** The host's score gate: Angband NOSCORE bits plus the port-only mod ratchet. */
|
|
271
|
+
export function scoreGateNoscore(playerNoscore: boolean, modNoscore: boolean): boolean {
|
|
272
|
+
return playerNoscore || modNoscore;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* enter_score (score.c L272): enter a character on the high-score table "if
|
|
277
|
+
* legal". Cheaters, wizards/debug characters, and non-winning interrupted or
|
|
278
|
+
* retiring deaths are not scored (in that priority order). Otherwise the entry
|
|
279
|
+
* is built and added to the store's list.
|
|
280
|
+
*
|
|
281
|
+
* Faithful divergence from the C's read/add/write: here read/write go through
|
|
282
|
+
* the injected ScoreStore, and highscoreAdd already truncates at MAX_HISCORES.
|
|
283
|
+
*/
|
|
284
|
+
export function enterScore(
|
|
285
|
+
store: ScoreStore,
|
|
286
|
+
player: Player,
|
|
287
|
+
build: BuildScoreDeps,
|
|
288
|
+
gating: EnterScoreGating,
|
|
289
|
+
): EnterScoreOutcome {
|
|
290
|
+
if (gating.cheated) return { entered: false, reason: "cheater" };
|
|
291
|
+
if (gating.noscore) return { entered: false, reason: "wizard" };
|
|
292
|
+
if (gating.borg) return { entered: false, reason: "borg" };
|
|
293
|
+
if (!gating.totalWinner && gating.diedFrom === "Interrupting") {
|
|
294
|
+
return { entered: false, reason: "interrupted" };
|
|
295
|
+
}
|
|
296
|
+
if (!gating.totalWinner && gating.diedFrom === "Retiring") {
|
|
297
|
+
return { entered: false, reason: "retired" };
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const entry = buildScore(player, build);
|
|
301
|
+
const scores = store.read();
|
|
302
|
+
const slot = highscoreAdd(entry, scores);
|
|
303
|
+
store.write(scores);
|
|
304
|
+
return { entered: true, slot };
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/** The score range and highlight predict_score resolves for display. */
|
|
308
|
+
export interface PredictedScores {
|
|
309
|
+
/** The score list to page over (the provisional entry inserted if alive). */
|
|
310
|
+
scores: HighScore[];
|
|
311
|
+
/** First index to show (from). */
|
|
312
|
+
from: number;
|
|
313
|
+
/** One past the last index to show (to). */
|
|
314
|
+
to: number;
|
|
315
|
+
/** The index to highlight (the current character), or -1 for none. */
|
|
316
|
+
highlight: number;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* predict_score (ui-score.c L193): find where the current character sits and
|
|
321
|
+
* pick the neighbourhood to show. A dead character is already in `scores`
|
|
322
|
+
* (enter_score ran), so we only locate it (highscore_where); a live character
|
|
323
|
+
* is provisionally inserted (highscore_add) so it appears in the table. On the
|
|
324
|
+
* top ten we show ranks 1..15; otherwise a window around the entry.
|
|
325
|
+
*
|
|
326
|
+
* This is the DATA half; the shell (display_scores_aux) owns the paging loop.
|
|
327
|
+
*/
|
|
328
|
+
export function predictScore(
|
|
329
|
+
scores: HighScore[],
|
|
330
|
+
entry: HighScore,
|
|
331
|
+
isDead: boolean,
|
|
332
|
+
): PredictedScores {
|
|
333
|
+
const j = isDead
|
|
334
|
+
? highscoreWhere(entry, scores)
|
|
335
|
+
: highscoreAdd(entry, scores);
|
|
336
|
+
|
|
337
|
+
if (j < 10) {
|
|
338
|
+
return { scores, from: 0, to: 15, highlight: j };
|
|
339
|
+
}
|
|
340
|
+
return { scores, from: j - 2, to: j + 7, highlight: j };
|
|
341
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-score domain types, ported from reference/src/score.h (Angband 4.2.6).
|
|
3
|
+
*
|
|
4
|
+
* Upstream struct high_score packs every field as a fixed-width, null-
|
|
5
|
+
* terminated, space-padded ASCII string in a 128-byte record (the "number"
|
|
6
|
+
* fields right-justified so a strcmp on "pts" orders scores). This port keeps
|
|
7
|
+
* data as JSON with TYPED fields (PORT_PLAN.md decision 9): the numeric fields
|
|
8
|
+
* become numbers, the string fields stay strings. The LOGIC (scoring math,
|
|
9
|
+
* sort/insert order, gating, display formatting) is ported faithfully; only
|
|
10
|
+
* the on-disk representation diverges from the binary scores.raw file. See
|
|
11
|
+
* parity/ledger/high-scores.yaml.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** Maximum number of high scores kept (score.h MAX_HISCORES). */
|
|
15
|
+
export const MAX_HISCORES = 100;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The value the `how` (method-of-death) field holds for a winner (score.h
|
|
19
|
+
* WINNING_HOW). A winning record sorts before any non-winning record.
|
|
20
|
+
*/
|
|
21
|
+
export const WINNING_HOW = "Ripe Old Age";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* One high-score record (struct high_score). The fixed-width string fields of
|
|
25
|
+
* the C become typed fields here; the port reconstructs the exact display
|
|
26
|
+
* strings (see display.ts) from these values.
|
|
27
|
+
*
|
|
28
|
+
* `what` (upstream: version info) doubles as the "slot in use" marker in the C
|
|
29
|
+
* (an empty `what` marks an unused record). This port stores only real records
|
|
30
|
+
* in a compact array, so `what` is simply the build id; an empty string still
|
|
31
|
+
* counts as an empty/invalid record for regularize.
|
|
32
|
+
*/
|
|
33
|
+
export interface HighScore {
|
|
34
|
+
/** buildid the score was recorded under (score.h what[8], <= 7 chars). */
|
|
35
|
+
what: string;
|
|
36
|
+
/** total_points(): max_exp + 100 * max_depth (score.h pts). */
|
|
37
|
+
pts: number;
|
|
38
|
+
/** Gold at death (player->au; score.h gold). */
|
|
39
|
+
gold: number;
|
|
40
|
+
/** Game turn at death (the `turn` counter; score.h turns). */
|
|
41
|
+
turns: number;
|
|
42
|
+
/** Time stamp: "@YYYYMMDD" for a death, or "TODAY" (score.h day). */
|
|
43
|
+
day: string;
|
|
44
|
+
/** Player name, first 15 chars of full_name (score.h who[16]). */
|
|
45
|
+
who: string;
|
|
46
|
+
/** Player uid (score.h uid). */
|
|
47
|
+
uid: number;
|
|
48
|
+
/** Player race index (race->ridx; score.h p_r). */
|
|
49
|
+
pRace: number;
|
|
50
|
+
/** Player class index (class->cidx; score.h p_c). */
|
|
51
|
+
pClass: number;
|
|
52
|
+
/** Level at death (player->lev; score.h cur_lev). */
|
|
53
|
+
curLev: number;
|
|
54
|
+
/** Dungeon level at death (player->depth, the live cave depth; cur_dun). */
|
|
55
|
+
curDun: number;
|
|
56
|
+
/** Deepest character level reached (player->max_lev; max_lev). */
|
|
57
|
+
maxLev: number;
|
|
58
|
+
/** Deepest dungeon level reached (player->max_depth; max_dun). */
|
|
59
|
+
maxDun: number;
|
|
60
|
+
/** Method of death, first 31 chars of died_from (score.h how[32]). */
|
|
61
|
+
how: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The persistence seam. Core never touches storage directly (no filesystem,
|
|
66
|
+
* no localStorage); a platform supplies read/write of the compact score list.
|
|
67
|
+
* Mirrors highscore_read / highscore_write, minus the binary file, locking and
|
|
68
|
+
* setuid dance of score.c (all platform concerns).
|
|
69
|
+
*/
|
|
70
|
+
export interface ScoreStore {
|
|
71
|
+
/** Read the stored scores, best-first. Empty array when nothing is stored. */
|
|
72
|
+
read(): HighScore[];
|
|
73
|
+
/** Persist the (already ordered, already truncated) score list. */
|
|
74
|
+
write(scores: HighScore[]): void;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* One rendered score entry (the three text lines display_score_page draws per
|
|
79
|
+
* record, plus its colour and rank). The Term paging/scroll loop is the
|
|
80
|
+
* shell's; this is the front-end-agnostic row data.
|
|
81
|
+
*/
|
|
82
|
+
export interface ScoreRow {
|
|
83
|
+
/** 1-based rank (start + 1 in display_score_page). */
|
|
84
|
+
rank: number;
|
|
85
|
+
/** True when this row is the highlighted (current) entry. */
|
|
86
|
+
highlighted: boolean;
|
|
87
|
+
/** COLOUR_* attribute: L_GREEN when highlighted, else WHITE. */
|
|
88
|
+
color: number;
|
|
89
|
+
/** Line 1: " 1. <pts> <name> the <race> <class>, level N (Max M)". */
|
|
90
|
+
line1: string;
|
|
91
|
+
/** Line 2: "Killed by X on dungeon level N (Max M)" / "... in the town". */
|
|
92
|
+
line2: string;
|
|
93
|
+
/** Line 3: "(User u, Date d, Gold g, Turn t).". */
|
|
94
|
+
line3: string;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Column at which display_score_page draws the 2nd and 3rd lines of each entry
|
|
99
|
+
* (c_put_str(..., n * 4 + 3, 15) / (..., n * 4 + 4, 15)). Line 1 is at col 0.
|
|
100
|
+
*/
|
|
101
|
+
export const SCORE_DETAIL_INDENT = 15;
|
|
102
|
+
|
|
103
|
+
/** Entries shown per page (display_score_page dumps at most 5). */
|
|
104
|
+
export const SCORES_PER_PAGE = 5;
|