@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,458 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Random artifact generation: the top-level design loop and entry point,
|
|
3
|
+
* ported from reference/src/obj-randart.c (Angband 4.2.6) lines 2672-3219.
|
|
4
|
+
* This module ports copy_artifact (L2676), artifact_gen_name (L2713),
|
|
5
|
+
* design_artifact (L2751), create_artifact_set (L2954), artifact_set_data_new
|
|
6
|
+
* (via artifactSetDataNew in randart-data.ts) and do_randart (L3154). It drives
|
|
7
|
+
* the measurement half (collectArtifactData, artifactPower in randart-data.ts)
|
|
8
|
+
* and the building primitives (getBaseItem, artifactPrep, buildFreqTable,
|
|
9
|
+
* trySupercharge, addAbility, removeContradictory, makeBad in randart-build.ts).
|
|
10
|
+
*
|
|
11
|
+
* do_randart is pure with respect to its seed: the same seed always yields the
|
|
12
|
+
* same (Artifact|null)[] set. It measures the registry's standard artifact set
|
|
13
|
+
* to build the generation frequencies, then designs a fresh copy of every
|
|
14
|
+
* artifact into a new array, leaving ObjRegistry.artifacts untouched.
|
|
15
|
+
*
|
|
16
|
+
* Faithful notes / deferrals / approximations:
|
|
17
|
+
* - RNG mode: upstream do_randart sets Rand_quick = true and seeds Rand_value
|
|
18
|
+
* with randart_seed, i.e. it draws from the "quick" LCRNG, not the WELL
|
|
19
|
+
* stream. This port creates its Rng in quick mode to match the draw stream
|
|
20
|
+
* (new Rng(seed, { quick: true })).
|
|
21
|
+
* - artifact_gen_name / wordlist (FAITHFUL when the TOLKIEN corpus is supplied):
|
|
22
|
+
* upstream builds a Markov-chain name from the RANDNAME_TOLKIEN word list in
|
|
23
|
+
* the names datafile (randname.c randname_make + name_sections). randname_make
|
|
24
|
+
* and build_prob are ported faithfully in randname.ts, and the corpus ships in
|
|
25
|
+
* the content pack as names.json section 1 (loaded into
|
|
26
|
+
* CoreRegistries.nameSections at boot). doRandart now accepts that word list
|
|
27
|
+
* (tolkienWords); artifactGenName then calls randnameMake(RANDNAME_TOLKIEN,
|
|
28
|
+
* MIN_NAME_LEN, MAX_NAME_LEN) exactly like upstream artifact_gen_name
|
|
29
|
+
* (obj-randart.c L2713), so the name draws consume the same RNG values in the
|
|
30
|
+
* same order and the generated names match upstream. This is verified against
|
|
31
|
+
* an independent Python oracle in randart.test.ts.
|
|
32
|
+
*
|
|
33
|
+
* Game path: session/game.ts swapRandartSet() threads the corpus -
|
|
34
|
+
* doRandart(reg.objects, seed, reg.nameSections.get(RANDNAME_TOLKIEN))
|
|
35
|
+
* (game.ts:2511-2514) - so the in-game randart names draw faithfully too.
|
|
36
|
+
* randNameFallback (a local syllable table) is retained only as a defensive
|
|
37
|
+
* guard for callers that pass no corpus (it never runs on the wired paths).
|
|
38
|
+
* - Spoiler file (DEFERRED): upstream do_randart optionally writes randart.txt
|
|
39
|
+
* (create_file / write_randart_entry, obj-randart.c L3057-L3215) and always
|
|
40
|
+
* writes randart.log. Both are spoiler/log dumps that never affect any
|
|
41
|
+
* artifact field or RNG draw; they are dropped. do_randart therefore takes
|
|
42
|
+
* no create_file argument and returns the artifact array directly. Noted as
|
|
43
|
+
* a deferral. The second measurement pass upstream runs after generation
|
|
44
|
+
* (store_base_power/parse_frequencies on the finished set, L3184-L3187) exists
|
|
45
|
+
* only to populate the log and consumes no RNG, so it is dropped too.
|
|
46
|
+
* - copy_artifact activation/alt_msg quirk (FAITHFUL): upstream copy_artifact
|
|
47
|
+
* memcpy's the whole struct and then explicitly nulls a_dst->activation and
|
|
48
|
+
* a_dst->alt_msg (obj-randart.c L2689-L2690). copyArtifact reproduces this:
|
|
49
|
+
* the destination always loses its activation (set null) and alt_msg (set "")
|
|
50
|
+
* even though every other field is copied. This means a rollback in the
|
|
51
|
+
* design loop can drop an activation that add_activation had added. Faithful.
|
|
52
|
+
* - design_artifact stale-kind quirk (FAITHFUL): upstream looks up `kind` once
|
|
53
|
+
* before the fixed-artifact skip loop and never refreshes it inside the loop
|
|
54
|
+
* (obj-randart.c L2754, L2778). The QUEST_ART test therefore keeps reading
|
|
55
|
+
* the initial artifact's kind while the name test tracks the advancing
|
|
56
|
+
* artifact. In the standard set the quest artifacts are last and contiguous,
|
|
57
|
+
* so this is unobservable, but it is reproduced exactly. Noted.
|
|
58
|
+
*/
|
|
59
|
+
import { KF, TV } from "../generated/index.js";
|
|
60
|
+
import { Rng } from "../rng.js";
|
|
61
|
+
import { tvalFindName } from "./bind.js";
|
|
62
|
+
import { buildProb, randnameMake } from "./randname.js";
|
|
63
|
+
import { addAbility, getBaseItem, artifactPrep, buildFreqTable, makeBad, removeContradictory, trySupercharge, } from "./randart-build.js";
|
|
64
|
+
import { artifactPower, collectArtifactData, getBaseItemTval, } from "./randart-data.js";
|
|
65
|
+
import { TV_MAX } from "./types.js";
|
|
66
|
+
/* Re-export makeBad so consumers can reach it from the top-level module. */
|
|
67
|
+
export { makeBad };
|
|
68
|
+
/* ------------------------------------------------------------------ */
|
|
69
|
+
/* Constants (obj-randart.h) */
|
|
70
|
+
/* ------------------------------------------------------------------ */
|
|
71
|
+
/** MAX_TRIES (obj-randart.h L28). */
|
|
72
|
+
const MAX_TRIES = 200;
|
|
73
|
+
/** MIN_NAME_LEN / MAX_NAME_LEN (obj-randart.h L31-L32). */
|
|
74
|
+
const MIN_NAME_LEN = 5;
|
|
75
|
+
const MAX_NAME_LEN = 9;
|
|
76
|
+
/**
|
|
77
|
+
* RANDNAME_TOLKIEN (randname.h L26): the names.txt section index whose word list
|
|
78
|
+
* feeds artifact_gen_name (obj-randart.c L2717). Section 1 in names.json.
|
|
79
|
+
*/
|
|
80
|
+
export const RANDNAME_TOLKIEN = 1;
|
|
81
|
+
/* ------------------------------------------------------------------ */
|
|
82
|
+
/* copy_artifact (obj-randart.c L2676) */
|
|
83
|
+
/* ------------------------------------------------------------------ */
|
|
84
|
+
/**
|
|
85
|
+
* copy_artifact (obj-randart.c L2676): copy every artifact field from src to
|
|
86
|
+
* dst in place. Faithful to the upstream memcpy-then-null: the destination's
|
|
87
|
+
* activation is always cleared to null and its alt_msg to "" (obj-randart.c
|
|
88
|
+
* L2689-L2690), even though all other fields (name, text, combat, flags,
|
|
89
|
+
* modifiers, element info, deep copies of slays/brands/curses, time) are
|
|
90
|
+
* copied. dst keeps its own identity so array references stay valid.
|
|
91
|
+
*/
|
|
92
|
+
export function copyArtifact(src, dst) {
|
|
93
|
+
dst.name = src.name;
|
|
94
|
+
dst.text = src.text;
|
|
95
|
+
dst.aidx = src.aidx;
|
|
96
|
+
dst.tval = src.tval;
|
|
97
|
+
dst.sval = src.sval;
|
|
98
|
+
dst.toH = src.toH;
|
|
99
|
+
dst.toD = src.toD;
|
|
100
|
+
dst.toA = src.toA;
|
|
101
|
+
dst.ac = src.ac;
|
|
102
|
+
dst.dd = src.dd;
|
|
103
|
+
dst.ds = src.ds;
|
|
104
|
+
dst.weight = src.weight;
|
|
105
|
+
dst.cost = src.cost;
|
|
106
|
+
dst.flags = src.flags.clone();
|
|
107
|
+
dst.modifiers = src.modifiers.slice();
|
|
108
|
+
dst.elInfo = src.elInfo.map((e) => ({ resLevel: e.resLevel, flags: e.flags }));
|
|
109
|
+
dst.brands = src.brands ? src.brands.slice() : null;
|
|
110
|
+
dst.slays = src.slays ? src.slays.slice() : null;
|
|
111
|
+
dst.curses = src.curses ? src.curses.slice() : null;
|
|
112
|
+
dst.level = src.level;
|
|
113
|
+
dst.allocProb = src.allocProb;
|
|
114
|
+
dst.allocMin = src.allocMin;
|
|
115
|
+
dst.allocMax = src.allocMax;
|
|
116
|
+
dst.time = { ...src.time };
|
|
117
|
+
/* Upstream nulls these after the memcpy (obj-randart.c L2689-L2690). */
|
|
118
|
+
dst.activation = null;
|
|
119
|
+
dst.altMsg = "";
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A full deep copy of an artifact, preserving activation and alt_msg. Used to
|
|
123
|
+
* snapshot the registry's standard artifacts into a mutable working set so
|
|
124
|
+
* do_randart never mutates ObjRegistry.artifacts. This is NOT copy_artifact
|
|
125
|
+
* (which deliberately drops activation/alt_msg); it is the honest clone the
|
|
126
|
+
* working array needs.
|
|
127
|
+
*/
|
|
128
|
+
function cloneArtifact(src) {
|
|
129
|
+
return {
|
|
130
|
+
name: src.name,
|
|
131
|
+
text: src.text,
|
|
132
|
+
aidx: src.aidx,
|
|
133
|
+
tval: src.tval,
|
|
134
|
+
sval: src.sval,
|
|
135
|
+
toH: src.toH,
|
|
136
|
+
toD: src.toD,
|
|
137
|
+
toA: src.toA,
|
|
138
|
+
ac: src.ac,
|
|
139
|
+
dd: src.dd,
|
|
140
|
+
ds: src.ds,
|
|
141
|
+
weight: src.weight,
|
|
142
|
+
cost: src.cost,
|
|
143
|
+
flags: src.flags.clone(),
|
|
144
|
+
modifiers: src.modifiers.slice(),
|
|
145
|
+
elInfo: src.elInfo.map((e) => ({ resLevel: e.resLevel, flags: e.flags })),
|
|
146
|
+
brands: src.brands ? src.brands.slice() : null,
|
|
147
|
+
slays: src.slays ? src.slays.slice() : null,
|
|
148
|
+
curses: src.curses ? src.curses.slice() : null,
|
|
149
|
+
level: src.level,
|
|
150
|
+
allocProb: src.allocProb,
|
|
151
|
+
allocMin: src.allocMin,
|
|
152
|
+
allocMax: src.allocMax,
|
|
153
|
+
activation: src.activation,
|
|
154
|
+
altMsg: src.altMsg,
|
|
155
|
+
time: { ...src.time },
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/* ------------------------------------------------------------------ */
|
|
159
|
+
/* artifact_gen_name (obj-randart.c L2713) */
|
|
160
|
+
/* ------------------------------------------------------------------ */
|
|
161
|
+
/**
|
|
162
|
+
* my_strcap (z-util.c L529): capitalize only the first character, leaving the
|
|
163
|
+
* rest untouched. randnameMake returns an all-lowercase word, so this matches
|
|
164
|
+
* upstream exactly.
|
|
165
|
+
*/
|
|
166
|
+
function myStrcap(word) {
|
|
167
|
+
if (word.length === 0)
|
|
168
|
+
return word;
|
|
169
|
+
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Tolkien-flavoured syllable fragments used ONLY as the seam fallback when no
|
|
173
|
+
* RANDNAME_TOLKIEN corpus is supplied to doRandart (see module SEAM note). This
|
|
174
|
+
* is NOT the upstream algorithm; it keeps the game path deterministic and
|
|
175
|
+
* crash-free until game.ts threads the real corpus.
|
|
176
|
+
*/
|
|
177
|
+
const NAME_SYLLABLES = [
|
|
178
|
+
"an", "ar", "el", "en", "or", "ith", "gal", "dor", "mir", "las",
|
|
179
|
+
"thal", "rond", "wen", "dil", "beth", "ath", "ien", "ael", "uin", "gorn",
|
|
180
|
+
"iel", "und", "ost", "loth", "mor", "fin", "hir", "eth", "ond", "aur",
|
|
181
|
+
];
|
|
182
|
+
/**
|
|
183
|
+
* Seam fallback (non-faithful): assemble a plausible name from the syllable
|
|
184
|
+
* table. Fragments are drawn until the length reaches MIN_NAME_LEN, then clamped
|
|
185
|
+
* to MAX_NAME_LEN. Deterministic and bounded; used only when doRandart has no
|
|
186
|
+
* corpus.
|
|
187
|
+
*/
|
|
188
|
+
function randNameFallback(rng) {
|
|
189
|
+
let word = "";
|
|
190
|
+
while (word.length < MIN_NAME_LEN) {
|
|
191
|
+
word += NAME_SYLLABLES[rng.randint0(NAME_SYLLABLES.length)];
|
|
192
|
+
}
|
|
193
|
+
if (word.length > MAX_NAME_LEN)
|
|
194
|
+
word = word.slice(0, MAX_NAME_LEN);
|
|
195
|
+
return word;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* artifact_gen_name (obj-randart.c L2713): generate a random artifact name.
|
|
199
|
+
* Faithful to upstream: draw a Markov word from the RANDNAME_TOLKIEN corpus via
|
|
200
|
+
* randnameMake(MIN_NAME_LEN, MAX_NAME_LEN) (obj-randart.c L2717), my_strcap the
|
|
201
|
+
* first letter (L2719), then one_in_(3) selects the "'Name'" form over
|
|
202
|
+
* "of Name" (L2721-L2724). The upstream `struct artifact *a` argument is unused.
|
|
203
|
+
*
|
|
204
|
+
* `probs` is the precomputed transition table (build_prob over the corpus). When
|
|
205
|
+
* null (seam fallback, no corpus), the syllable table is used instead - this is
|
|
206
|
+
* NOT upstream-faithful and consumes a different number of RNG draws.
|
|
207
|
+
*/
|
|
208
|
+
export function artifactGenName(rng, probs) {
|
|
209
|
+
const word = probs !== null
|
|
210
|
+
? randnameMake(rng, MIN_NAME_LEN, MAX_NAME_LEN, probs)
|
|
211
|
+
: randNameFallback(rng);
|
|
212
|
+
const capped = myStrcap(word);
|
|
213
|
+
if (rng.oneIn(3))
|
|
214
|
+
return `'${capped}'`;
|
|
215
|
+
return `of ${capped}`;
|
|
216
|
+
}
|
|
217
|
+
/* ------------------------------------------------------------------ */
|
|
218
|
+
/* describe_artifact (obj-randart.c L2731) */
|
|
219
|
+
/* ------------------------------------------------------------------ */
|
|
220
|
+
/**
|
|
221
|
+
* describe_artifact (obj-randart.c L2731): give the artifact a boring
|
|
222
|
+
* "Random <type> of power <n>" description. Consumes no RNG.
|
|
223
|
+
*/
|
|
224
|
+
function describeArtifact(art, power) {
|
|
225
|
+
art.text = `Random ${tvalFindName(art.tval)} of power ${power}`;
|
|
226
|
+
}
|
|
227
|
+
/* ------------------------------------------------------------------ */
|
|
228
|
+
/* design_artifact (obj-randart.c L2751) */
|
|
229
|
+
/* ------------------------------------------------------------------ */
|
|
230
|
+
/**
|
|
231
|
+
* design_artifact (obj-randart.c L2751): design a random artifact into
|
|
232
|
+
* arts[aidx], possibly skipping forward past fixed artifacts. Returns the
|
|
233
|
+
* (possibly advanced) working index, matching upstream's *aidx after return;
|
|
234
|
+
* the caller then increments it. `tv` is TV_NULL to pick a tval from the
|
|
235
|
+
* learned frequencies, or a specific tval to force.
|
|
236
|
+
*
|
|
237
|
+
* The artifact is assigned a target power from the range of powers for its
|
|
238
|
+
* tval, given a suitable base item, optionally supercharged, then has abilities
|
|
239
|
+
* (or, for a cursed artifact, curses) added until its power lands between 19/20
|
|
240
|
+
* and 23/20 of the target.
|
|
241
|
+
*/
|
|
242
|
+
export function designArtifact(reg, arts, data, tv, aidx, rng, nameProbs) {
|
|
243
|
+
/* Defensive guard (upstream relies on aidx staying in range). */
|
|
244
|
+
if (aidx < 1 || aidx >= arts.length)
|
|
245
|
+
return aidx;
|
|
246
|
+
let art = arts[aidx];
|
|
247
|
+
/* Upstream captures kind once and never refreshes it in the skip loop. */
|
|
248
|
+
let kind = reg.lookupKind(art.tval, art.sval);
|
|
249
|
+
const kindAtEntry = kind;
|
|
250
|
+
let artLevel = art.level;
|
|
251
|
+
/* Set tval if necessary. */
|
|
252
|
+
let tval = tv === TV.NULL ? getBaseItemTval(data, rng) : tv;
|
|
253
|
+
/* Choose a power for the artifact. */
|
|
254
|
+
let power = rng.randSample(data.avgTvPower[tval], data.maxTvPower[tval], data.minTvPower[tval], 20, 20);
|
|
255
|
+
/* Choose a name. */
|
|
256
|
+
const newName = artifactGenName(rng, nameProbs);
|
|
257
|
+
/* Skip fixed artifacts (stale-kind quirk preserved: kindAtEntry). */
|
|
258
|
+
while (art.name.includes("The One Ring") ||
|
|
259
|
+
(kindAtEntry !== null && kindAtEntry.kindFlags.has(KF.QUEST_ART))) {
|
|
260
|
+
aidx++;
|
|
261
|
+
if (aidx >= arts.length)
|
|
262
|
+
return aidx;
|
|
263
|
+
art = arts[aidx];
|
|
264
|
+
artLevel = art.level;
|
|
265
|
+
}
|
|
266
|
+
/* Apply the new name. */
|
|
267
|
+
art.name = newName;
|
|
268
|
+
/* Flip the sign on power if it's negative (unlikely) and damage. */
|
|
269
|
+
let hurtMe = false;
|
|
270
|
+
if (power < 0) {
|
|
271
|
+
hurtMe = true;
|
|
272
|
+
power = -power;
|
|
273
|
+
}
|
|
274
|
+
/* Structure to hold the old artifact for rollbacks. */
|
|
275
|
+
const aOld = cloneArtifact(art);
|
|
276
|
+
let tries;
|
|
277
|
+
let ap = 0;
|
|
278
|
+
/* Choose a base item not too powerful, so we'll have to add to it. */
|
|
279
|
+
for (tries = 0; tries < MAX_TRIES; tries++) {
|
|
280
|
+
if (tval === TV.NULL)
|
|
281
|
+
tval = getBaseItemTval(data, rng);
|
|
282
|
+
kind = getBaseItem(reg, tval, rng);
|
|
283
|
+
artifactPrep(reg, art, kind, data, rng);
|
|
284
|
+
/* Get the kind again in case it's changed. */
|
|
285
|
+
kind = reg.lookupKind(art.tval, art.sval);
|
|
286
|
+
const basePower = artifactPower(reg, art);
|
|
287
|
+
/* New base item power too close to target artifact power. */
|
|
288
|
+
if (basePower > Math.trunc((power * 6) / 10) + 1 && power - basePower < 20) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
/* Acceptable. */
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
/* Generate the cumulative frequency table for this base item type. */
|
|
295
|
+
const artFreq = buildFreqTable(art, data);
|
|
296
|
+
/* Copy artifact info temporarily. */
|
|
297
|
+
copyArtifact(art, aOld);
|
|
298
|
+
/* Give this artifact a shot at being supercharged. */
|
|
299
|
+
trySupercharge(reg, art, power, data, rng);
|
|
300
|
+
ap = artifactPower(reg, art);
|
|
301
|
+
if (ap > Math.trunc((power * 23) / 20) + 1) {
|
|
302
|
+
/* Too powerful -- put it back. */
|
|
303
|
+
copyArtifact(aOld, art);
|
|
304
|
+
}
|
|
305
|
+
/* Give this artifact a chance to be cursed - note it retains its power. */
|
|
306
|
+
if (rng.oneIn(Math.trunc(arts.length / Math.max(2, data.negPowerTotal)))) {
|
|
307
|
+
hurtMe = true;
|
|
308
|
+
}
|
|
309
|
+
/* Do the actual artifact design. */
|
|
310
|
+
for (tries = 0; tries < MAX_TRIES; tries++) {
|
|
311
|
+
/* Copy artifact info temporarily. */
|
|
312
|
+
copyArtifact(art, aOld);
|
|
313
|
+
/* Add an ability. */
|
|
314
|
+
addAbility(reg, art, power, artFreq, data, rng);
|
|
315
|
+
removeContradictory(reg, art, data.timedFoil, data.activationSummarize);
|
|
316
|
+
/* Check the power, handle negative power. */
|
|
317
|
+
ap = artifactPower(reg, art);
|
|
318
|
+
if (ap < 0) {
|
|
319
|
+
ap = -ap;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
/* Curse the designated artifacts. */
|
|
323
|
+
if (hurtMe) {
|
|
324
|
+
makeBad(reg, art, artLevel, rng, data.timedFoil);
|
|
325
|
+
if (rng.oneIn(3)) {
|
|
326
|
+
hurtMe = false;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/* Check power. */
|
|
330
|
+
if (ap > Math.trunc((power * 23) / 20) + 1) {
|
|
331
|
+
/* Too powerful -- put it back. */
|
|
332
|
+
copyArtifact(aOld, art);
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
else if (ap >= Math.trunc((power * 19) / 20)) {
|
|
336
|
+
/* Just right. */
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
/* Set rarity based on power. kind is the final base item kind. */
|
|
341
|
+
const baseKind = kind;
|
|
342
|
+
let allocNew = Math.trunc(4000000 / (ap * ap));
|
|
343
|
+
allocNew = Math.trunc(allocNew / (baseKind.allocProb ? baseKind.allocProb : 20));
|
|
344
|
+
if (allocNew > 99)
|
|
345
|
+
allocNew = 99;
|
|
346
|
+
if (allocNew < 1)
|
|
347
|
+
allocNew = 1;
|
|
348
|
+
art.allocProb = allocNew;
|
|
349
|
+
/* Set depth according to power. */
|
|
350
|
+
art.allocMax = Math.min(127, Math.trunc((ap * 3) / 5));
|
|
351
|
+
art.allocMin = Math.min(100, Math.trunc(((ap + 100) * 100) / data.maxPower));
|
|
352
|
+
/* Have a chance to be less rare or deep, more likely the less power. */
|
|
353
|
+
if (rng.oneIn(5 + Math.trunc(power / 20))) {
|
|
354
|
+
art.allocProb += rng.randint1(20);
|
|
355
|
+
if (art.allocProb > 99)
|
|
356
|
+
art.allocProb = 99;
|
|
357
|
+
}
|
|
358
|
+
else if (rng.oneIn(5 + Math.trunc(power / 20))) {
|
|
359
|
+
art.allocMin = Math.trunc(art.allocMin / 2);
|
|
360
|
+
if (art.allocMin < 1)
|
|
361
|
+
art.allocMin = 1;
|
|
362
|
+
}
|
|
363
|
+
/* Sanity check. */
|
|
364
|
+
art.allocMax = Math.max(art.allocMax, Math.min(art.allocMin * 2, 127));
|
|
365
|
+
/*
|
|
366
|
+
* If there is no activation or effect from the kind, level currently does
|
|
367
|
+
* nothing. Set it to alloc_min in case changes elsewhere start using level.
|
|
368
|
+
*/
|
|
369
|
+
if (!art.activation && !baseKind.activation && !baseKind.effect) {
|
|
370
|
+
art.level = art.allocMin;
|
|
371
|
+
}
|
|
372
|
+
/* Describe it. */
|
|
373
|
+
describeArtifact(art, ap);
|
|
374
|
+
return aidx;
|
|
375
|
+
}
|
|
376
|
+
/* ------------------------------------------------------------------ */
|
|
377
|
+
/* create_artifact_set (obj-randart.c L2954) */
|
|
378
|
+
/* ------------------------------------------------------------------ */
|
|
379
|
+
/**
|
|
380
|
+
* create_artifact_set (obj-randart.c L2954): design a full set of random
|
|
381
|
+
* artifacts into `arts`. The resulting set has at least 80% as many artifacts
|
|
382
|
+
* of any given tval as the original set (tvals with fewer than 5 original
|
|
383
|
+
* artifacts get equal or more). Remaining slots are filled with random-tval
|
|
384
|
+
* artifacts. The final slot (index arts.length - 1) is left as the original,
|
|
385
|
+
* matching the upstream `aidx < z_info->a_max - 1` bound.
|
|
386
|
+
*/
|
|
387
|
+
export function createArtifactSet(reg, arts, data, rng, nameProbs) {
|
|
388
|
+
let aidx = 1;
|
|
389
|
+
const tvalTotal = new Array(TV_MAX).fill(0);
|
|
390
|
+
let notDone = true;
|
|
391
|
+
/* Get min tval frequencies for the new artifacts (at least 80% each). */
|
|
392
|
+
for (let i = 0; i < TV_MAX; i++) {
|
|
393
|
+
tvalTotal[i] = Math.trunc((4 * (data.tvNum[i] + 1)) / 5);
|
|
394
|
+
}
|
|
395
|
+
/* Allocate a minimal set of artifacts to the tvals. */
|
|
396
|
+
while (notDone) {
|
|
397
|
+
notDone = false;
|
|
398
|
+
/* Multiple passes through tvals until all have enough artifacts. */
|
|
399
|
+
for (let i = 0; i < TV_MAX; i++) {
|
|
400
|
+
if (tvalTotal[i] > 0) {
|
|
401
|
+
aidx = designArtifact(reg, arts, data, i, aidx, rng, nameProbs);
|
|
402
|
+
tvalTotal[i]--;
|
|
403
|
+
aidx++;
|
|
404
|
+
notDone = true;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/* Allocate remaining artifacts at random. */
|
|
409
|
+
while (aidx < arts.length - 1) {
|
|
410
|
+
aidx = designArtifact(reg, arts, data, TV.NULL, aidx, rng, nameProbs);
|
|
411
|
+
aidx++;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
/* ------------------------------------------------------------------ */
|
|
415
|
+
/* do_randart (obj-randart.c L3154) */
|
|
416
|
+
/* ------------------------------------------------------------------ */
|
|
417
|
+
/**
|
|
418
|
+
* do_randart (obj-randart.c L3154): generate a full random artifact set from a
|
|
419
|
+
* seed and return it as a fresh (Artifact|null)[] array (index 0 null),
|
|
420
|
+
* leaving ObjRegistry.artifacts untouched. Pure with respect to the seed.
|
|
421
|
+
*
|
|
422
|
+
* Upstream seeds the "quick" LCRNG (Rand_value = seed, Rand_quick = true), so
|
|
423
|
+
* this port creates its Rng in quick mode and draws in upstream order:
|
|
424
|
+
* measure the standard set (store_base_power + parse_frequencies via
|
|
425
|
+
* collectArtifactData), then design every artifact (create_artifact_set). The
|
|
426
|
+
* upstream log file, the post-generation measurement pass, and the optional
|
|
427
|
+
* spoiler file (create_file / write_randart_entry) are all dropped as they
|
|
428
|
+
* never affect an artifact field or an RNG draw (see module note).
|
|
429
|
+
*/
|
|
430
|
+
export function doRandart(reg, randartSeed, tolkienWords, extras) {
|
|
431
|
+
/* Prepare to use the Angband "simple" (quick LCRNG) RNG. */
|
|
432
|
+
const rng = new Rng(randartSeed, { quick: true });
|
|
433
|
+
/*
|
|
434
|
+
* Build the RANDNAME_TOLKIEN transition table once (build_prob is cached
|
|
435
|
+
* per-type upstream, randname.c L94-L103; here we build it once per run).
|
|
436
|
+
* When no corpus is supplied (the current game-path seam), fall back to the
|
|
437
|
+
* non-faithful syllable generator (see module SEAM note). An empty word list
|
|
438
|
+
* is treated as "no corpus" because build_prob/randname_make would otherwise
|
|
439
|
+
* loop forever on an empty table.
|
|
440
|
+
*/
|
|
441
|
+
const nameProbs = tolkienWords && tolkienWords.length > 0 ? buildProb(tolkienWords) : null;
|
|
442
|
+
/* Store the original power ratings and determine generation probabilities.
|
|
443
|
+
* `extras` threads the curse TIMED_INC foil tables (gap 3.3) and the
|
|
444
|
+
* activation redundancy summarizer (gap 3.8); absent, both checks are
|
|
445
|
+
* skipped as before. */
|
|
446
|
+
const data = collectArtifactData(reg, rng);
|
|
447
|
+
if (extras?.timedFoil)
|
|
448
|
+
data.timedFoil = extras.timedFoil;
|
|
449
|
+
if (extras?.activationSummarize) {
|
|
450
|
+
data.activationSummarize = extras.activationSummarize;
|
|
451
|
+
}
|
|
452
|
+
/* Work on a fresh copy so the registry's standard artifacts are preserved. */
|
|
453
|
+
const arts = reg.artifacts.map((a) => a ? cloneArtifact(a) : null);
|
|
454
|
+
/* Generate the random artifacts. */
|
|
455
|
+
createArtifactSet(reg, arts, data, rng, nameProbs);
|
|
456
|
+
return arts;
|
|
457
|
+
}
|
|
458
|
+
//# sourceMappingURL=randart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randart.js","sourceRoot":"","sources":["../../src/obj/randart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Random name generation, ported from reference/src/randname.c (Angband
|
|
3
|
+
* 4.2.6): W. Sheldon Simms' Markov-chain word generator. build_prob learns a
|
|
4
|
+
* letter-transition frequency table from a corpus of lowercase words;
|
|
5
|
+
* randnameMake walks that table to emit a fresh word of a bounded length.
|
|
6
|
+
*
|
|
7
|
+
* Used by flavor_init for scroll titles (RANDNAME_SCROLL). The generator is a
|
|
8
|
+
* pure function of the supplied Rng, so it is deterministic given a seed - the
|
|
9
|
+
* flavour system re-derives identical scroll titles across a save/reload from
|
|
10
|
+
* the persisted seed_flavor (session/game.ts).
|
|
11
|
+
*
|
|
12
|
+
* Faithful details kept: the S_WORD/E_WORD/TOTAL markers, the "10 tries" and
|
|
13
|
+
* "min length + must-contain-a-vowel" acceptance conditions, and the exact
|
|
14
|
+
* weighted-pick loop (so the RNG draw sequence matches upstream for a corpus).
|
|
15
|
+
*/
|
|
16
|
+
import type { Rng } from "../rng.js";
|
|
17
|
+
/** A built probability table (name_probs), flattened row-major. */
|
|
18
|
+
export type NameProbs = Uint16Array;
|
|
19
|
+
/**
|
|
20
|
+
* build_prob (randname.c L41): accumulate the raw letter-transition
|
|
21
|
+
* frequencies from a list of purely alphabetical lowercase words. Any
|
|
22
|
+
* non a-z character is skipped defensively (the corpus is clean a-z, so this
|
|
23
|
+
* never triggers on the shipped names data).
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildProb(words: readonly string[]): NameProbs;
|
|
26
|
+
/**
|
|
27
|
+
* randname_make (randname.c L77): generate one word of length in [min, max]
|
|
28
|
+
* that contains at least one vowel, using the probability table. Faithful to
|
|
29
|
+
* the upstream loop, including the "start over after 10 failed tries or on
|
|
30
|
+
* overflow" behaviour, so the RNG draws line up with the C generator.
|
|
31
|
+
*/
|
|
32
|
+
export declare function randnameMake(rng: Rng, min: number, max: number, probs: NameProbs): string;
|
|
33
|
+
//# sourceMappingURL=randname.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randname.d.ts","sourceRoot":"","sources":["../../src/obj/randname.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAcrC,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC;AAapC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAqB7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,GACf,MAAM,CA2CR"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Random name generation, ported from reference/src/randname.c (Angband
|
|
3
|
+
* 4.2.6): W. Sheldon Simms' Markov-chain word generator. build_prob learns a
|
|
4
|
+
* letter-transition frequency table from a corpus of lowercase words;
|
|
5
|
+
* randnameMake walks that table to emit a fresh word of a bounded length.
|
|
6
|
+
*
|
|
7
|
+
* Used by flavor_init for scroll titles (RANDNAME_SCROLL). The generator is a
|
|
8
|
+
* pure function of the supplied Rng, so it is deterministic given a seed - the
|
|
9
|
+
* flavour system re-derives identical scroll titles across a save/reload from
|
|
10
|
+
* the persisted seed_flavor (session/game.ts).
|
|
11
|
+
*
|
|
12
|
+
* Faithful details kept: the S_WORD/E_WORD/TOTAL markers, the "10 tries" and
|
|
13
|
+
* "min length + must-contain-a-vowel" acceptance conditions, and the exact
|
|
14
|
+
* weighted-pick loop (so the RNG draw sequence matches upstream for a corpus).
|
|
15
|
+
*/
|
|
16
|
+
/* Markers for the start and end of words (randname.c L23-25). E_WORD aliases
|
|
17
|
+
* S_WORD; TOTAL is the running-sum slot appended after the 27 letter/end
|
|
18
|
+
* columns. */
|
|
19
|
+
const S_WORD = 26;
|
|
20
|
+
const E_WORD = S_WORD;
|
|
21
|
+
const TOTAL = 27;
|
|
22
|
+
/* Table dimensions: probs[c_prev][c_cur][c_next] with c_prev,c_cur in
|
|
23
|
+
* 0..S_WORD (27 rows) and c_next in 0..TOTAL (28 columns). */
|
|
24
|
+
const DIM1 = S_WORD + 1; // 27
|
|
25
|
+
const DIM2 = TOTAL + 1; // 28
|
|
26
|
+
function idx(cPrev, cCur, cNext) {
|
|
27
|
+
return (cPrev * DIM1 + cCur) * DIM2 + cNext;
|
|
28
|
+
}
|
|
29
|
+
/** is_a_vowel (z-util.c): the five basic English vowels. */
|
|
30
|
+
function isAVowel(ch) {
|
|
31
|
+
return (ch === "a" || ch === "e" || ch === "i" || ch === "o" || ch === "u");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* build_prob (randname.c L41): accumulate the raw letter-transition
|
|
35
|
+
* frequencies from a list of purely alphabetical lowercase words. Any
|
|
36
|
+
* non a-z character is skipped defensively (the corpus is clean a-z, so this
|
|
37
|
+
* never triggers on the shipped names data).
|
|
38
|
+
*/
|
|
39
|
+
export function buildProb(words) {
|
|
40
|
+
const probs = new Uint16Array(DIM1 * DIM1 * DIM2);
|
|
41
|
+
const bump = (i) => {
|
|
42
|
+
probs[i] = (probs[i] ?? 0) + 1;
|
|
43
|
+
};
|
|
44
|
+
for (const raw of words) {
|
|
45
|
+
let cPrev = S_WORD;
|
|
46
|
+
let cCur = S_WORD;
|
|
47
|
+
const word = raw.toLowerCase();
|
|
48
|
+
for (let k = 0; k < word.length; k++) {
|
|
49
|
+
const cNext = word.charCodeAt(k) - 97; // A2I
|
|
50
|
+
if (cNext < 0 || cNext >= S_WORD)
|
|
51
|
+
continue;
|
|
52
|
+
bump(idx(cPrev, cCur, cNext));
|
|
53
|
+
bump(idx(cPrev, cCur, TOTAL));
|
|
54
|
+
cPrev = cCur;
|
|
55
|
+
cCur = cNext;
|
|
56
|
+
}
|
|
57
|
+
bump(idx(cPrev, cCur, E_WORD));
|
|
58
|
+
bump(idx(cPrev, cCur, TOTAL));
|
|
59
|
+
}
|
|
60
|
+
return probs;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* randname_make (randname.c L77): generate one word of length in [min, max]
|
|
64
|
+
* that contains at least one vowel, using the probability table. Faithful to
|
|
65
|
+
* the upstream loop, including the "start over after 10 failed tries or on
|
|
66
|
+
* overflow" behaviour, so the RNG draws line up with the C generator.
|
|
67
|
+
*/
|
|
68
|
+
export function randnameMake(rng, min, max, probs) {
|
|
69
|
+
let out = "";
|
|
70
|
+
let foundWord = false;
|
|
71
|
+
while (!foundWord) {
|
|
72
|
+
out = "";
|
|
73
|
+
let cPrev = S_WORD;
|
|
74
|
+
let cCur = S_WORD;
|
|
75
|
+
let tries = 0;
|
|
76
|
+
let containsVowel = false;
|
|
77
|
+
let lnum = 0;
|
|
78
|
+
while (tries < 10 && lnum <= max && !foundWord) {
|
|
79
|
+
const total = probs[idx(cPrev, cCur, TOTAL)];
|
|
80
|
+
let cNext = 0;
|
|
81
|
+
if (total === 0) {
|
|
82
|
+
/* Defensive: a state with no learned transitions cannot occur with
|
|
83
|
+
* the shipped a-z corpus; treat it as a word end rather than run
|
|
84
|
+
* off the table. */
|
|
85
|
+
cNext = E_WORD;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
let r = rng.randint0(total);
|
|
89
|
+
while (r >= probs[idx(cPrev, cCur, cNext)]) {
|
|
90
|
+
r -= probs[idx(cPrev, cCur, cNext)];
|
|
91
|
+
cNext++;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (cNext === E_WORD) {
|
|
95
|
+
/* At a word end: accept if long enough and voweled, else retry. */
|
|
96
|
+
if (lnum >= min && containsVowel) {
|
|
97
|
+
foundWord = true;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
tries++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const ch = String.fromCharCode(97 + cNext); // I2A
|
|
105
|
+
out += ch;
|
|
106
|
+
if (isAVowel(ch))
|
|
107
|
+
containsVowel = true;
|
|
108
|
+
lnum++;
|
|
109
|
+
cPrev = cCur;
|
|
110
|
+
cCur = cNext;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=randname.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randname.js","sourceRoot":"","sources":["../../src/obj/randname.ts"],"names":[],"mappings":"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"}
|