@rpgm-tools/neo-angband-core 0.18.0 → 0.19.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/README.md +1 -1
- package/dist/agent/perceive.d.ts.map +1 -1
- package/dist/agent/perceive.js +2 -2
- package/dist/agent/perceive.js.map +1 -1
- package/dist/combat/blow-vectors.d.ts +78 -0
- package/dist/combat/blow-vectors.d.ts.map +1 -0
- package/dist/combat/blow-vectors.fixtures.d.ts +19 -0
- package/dist/combat/blow-vectors.fixtures.d.ts.map +1 -0
- package/dist/combat/blow-vectors.fixtures.js +81 -0
- package/dist/combat/blow-vectors.fixtures.js.map +1 -0
- package/dist/combat/blow-vectors.js +195 -0
- package/dist/combat/blow-vectors.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +22 -9
- package/dist/combat/brand-slay.d.ts.map +1 -1
- package/dist/combat/brand-slay.js +37 -10
- package/dist/combat/brand-slay.js.map +1 -1
- package/dist/combat/index.d.ts +1 -1
- package/dist/combat/index.js +1 -1
- package/dist/combat/melee.d.ts +25 -13
- package/dist/combat/melee.d.ts.map +1 -1
- package/dist/combat/melee.js +23 -19
- package/dist/combat/melee.js.map +1 -1
- package/dist/combat/mon-melee.d.ts +166 -7
- package/dist/combat/mon-melee.d.ts.map +1 -1
- package/dist/combat/mon-melee.js +469 -338
- package/dist/combat/mon-melee.js.map +1 -1
- package/dist/combat/ranged.d.ts +15 -13
- package/dist/combat/ranged.d.ts.map +1 -1
- package/dist/combat/ranged.js +31 -29
- package/dist/combat/ranged.js.map +1 -1
- package/dist/constants.d.ts +14 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -1
- package/dist/datafile.d.ts +48 -0
- package/dist/datafile.d.ts.map +1 -0
- package/dist/datafile.js +102 -0
- package/dist/datafile.js.map +1 -0
- package/dist/effects/effect-info-registry.d.ts +237 -0
- package/dist/effects/effect-info-registry.d.ts.map +1 -0
- package/dist/effects/effect-info-registry.js +138 -0
- package/dist/effects/effect-info-registry.js.map +1 -0
- package/dist/effects/effect-info-vectors.d.ts +92 -0
- package/dist/effects/effect-info-vectors.d.ts.map +1 -0
- package/dist/effects/effect-info-vectors.fixtures.d.ts +18 -0
- package/dist/effects/effect-info-vectors.fixtures.d.ts.map +1 -0
- package/dist/effects/effect-info-vectors.fixtures.js +51 -0
- package/dist/effects/effect-info-vectors.fixtures.js.map +1 -0
- package/dist/effects/effect-info-vectors.js +315 -0
- package/dist/effects/effect-info-vectors.js.map +1 -0
- package/dist/effects/effect-info.d.ts +5 -1
- package/dist/effects/effect-info.d.ts.map +1 -1
- package/dist/effects/effect-info.js +245 -143
- package/dist/effects/effect-info.js.map +1 -1
- package/dist/effects/effect.d.ts +4 -3
- package/dist/effects/effect.d.ts.map +1 -1
- package/dist/effects/effect.js +88 -70
- package/dist/effects/effect.js.map +1 -1
- package/dist/effects/handlers.d.ts +1 -1
- package/dist/effects/handlers.d.ts.map +1 -1
- package/dist/effects/handlers.js +5 -2
- package/dist/effects/handlers.js.map +1 -1
- package/dist/effects/interpreter.d.ts +11 -0
- package/dist/effects/interpreter.d.ts.map +1 -1
- package/dist/effects/interpreter.js +13 -0
- package/dist/effects/interpreter.js.map +1 -1
- package/dist/game/cave-cmd.d.ts +9 -5
- package/dist/game/cave-cmd.d.ts.map +1 -1
- package/dist/game/cave-cmd.js +56 -11
- package/dist/game/cave-cmd.js.map +1 -1
- package/dist/game/cave-square.d.ts +42 -0
- package/dist/game/cave-square.d.ts.map +1 -0
- package/dist/game/cave-square.js +73 -0
- package/dist/game/cave-square.js.map +1 -0
- package/dist/game/char-sheet.d.ts +12 -8
- package/dist/game/char-sheet.d.ts.map +1 -1
- package/dist/game/char-sheet.js +41 -8
- package/dist/game/char-sheet.js.map +1 -1
- package/dist/game/chest.d.ts +2 -3
- package/dist/game/chest.d.ts.map +1 -1
- package/dist/game/chest.js +17 -6
- package/dist/game/chest.js.map +1 -1
- package/dist/game/context.d.ts +213 -22
- package/dist/game/context.d.ts.map +1 -1
- package/dist/game/context.js +109 -17
- package/dist/game/context.js.map +1 -1
- package/dist/game/describe.d.ts +13 -0
- package/dist/game/describe.d.ts.map +1 -1
- package/dist/game/describe.js +32 -4
- package/dist/game/describe.js.map +1 -1
- package/dist/game/display.d.ts +97 -8
- package/dist/game/display.d.ts.map +1 -1
- package/dist/game/display.js +157 -13
- package/dist/game/display.js.map +1 -1
- package/dist/game/dump-level.d.ts.map +1 -1
- package/dist/game/dump-level.js +3 -2
- package/dist/game/dump-level.js.map +1 -1
- package/dist/game/effect-attack.d.ts.map +1 -1
- package/dist/game/effect-attack.js +36 -27
- package/dist/game/effect-attack.js.map +1 -1
- package/dist/game/effect-detect.d.ts +4 -4
- package/dist/game/effect-detect.d.ts.map +1 -1
- package/dist/game/effect-detect.js +42 -9
- package/dist/game/effect-detect.js.map +1 -1
- package/dist/game/effect-env.d.ts +7 -1
- package/dist/game/effect-env.d.ts.map +1 -1
- package/dist/game/effect-env.js +1 -0
- package/dist/game/effect-env.js.map +1 -1
- package/dist/game/effect-general.d.ts +5 -3
- package/dist/game/effect-general.d.ts.map +1 -1
- package/dist/game/effect-general.js +94 -43
- package/dist/game/effect-general.js.map +1 -1
- package/dist/game/effect-item.d.ts +2 -1
- package/dist/game/effect-item.d.ts.map +1 -1
- package/dist/game/effect-item.js +136 -82
- package/dist/game/effect-item.js.map +1 -1
- package/dist/game/effect-melee.d.ts +10 -4
- package/dist/game/effect-melee.d.ts.map +1 -1
- package/dist/game/effect-melee.js +44 -19
- package/dist/game/effect-melee.js.map +1 -1
- package/dist/game/effect-monster.d.ts +26 -4
- package/dist/game/effect-monster.d.ts.map +1 -1
- package/dist/game/effect-monster.js +52 -9
- package/dist/game/effect-monster.js.map +1 -1
- package/dist/game/effect-teleport.d.ts +58 -19
- package/dist/game/effect-teleport.d.ts.map +1 -1
- package/dist/game/effect-teleport.js +143 -27
- package/dist/game/effect-teleport.js.map +1 -1
- package/dist/game/effect-terrain.d.ts +1 -3
- package/dist/game/effect-terrain.d.ts.map +1 -1
- package/dist/game/effect-terrain.js +38 -22
- package/dist/game/effect-terrain.js.map +1 -1
- package/dist/game/equip-cmp.d.ts.map +1 -1
- package/dist/game/equip-cmp.js +10 -7
- package/dist/game/equip-cmp.js.map +1 -1
- package/dist/game/floor.d.ts +16 -4
- package/dist/game/floor.d.ts.map +1 -1
- package/dist/game/floor.js +22 -4
- package/dist/game/floor.js.map +1 -1
- package/dist/game/gear.d.ts +101 -13
- package/dist/game/gear.d.ts.map +1 -1
- package/dist/game/gear.js +183 -24
- package/dist/game/gear.js.map +1 -1
- package/dist/game/harness.d.ts +2 -1
- package/dist/game/harness.d.ts.map +1 -1
- package/dist/game/harness.js +12 -1
- package/dist/game/harness.js.map +1 -1
- package/dist/game/ignore-cmd.d.ts +47 -8
- package/dist/game/ignore-cmd.d.ts.map +1 -1
- package/dist/game/ignore-cmd.js +76 -8
- package/dist/game/ignore-cmd.js.map +1 -1
- package/dist/game/known.d.ts +223 -34
- package/dist/game/known.d.ts.map +1 -1
- package/dist/game/known.js +301 -67
- package/dist/game/known.js.map +1 -1
- package/dist/game/loop.d.ts +4 -3
- package/dist/game/loop.d.ts.map +1 -1
- package/dist/game/loop.js +49 -29
- package/dist/game/loop.js.map +1 -1
- package/dist/game/lore-color.d.ts.map +1 -1
- package/dist/game/lore-color.js +13 -1
- package/dist/game/lore-color.js.map +1 -1
- package/dist/game/mon-cast.d.ts +3 -4
- package/dist/game/mon-cast.d.ts.map +1 -1
- package/dist/game/mon-cast.js +30 -2
- package/dist/game/mon-cast.js.map +1 -1
- package/dist/game/mon-cmd.d.ts +4 -5
- package/dist/game/mon-cmd.d.ts.map +1 -1
- package/dist/game/mon-cmd.js +80 -27
- package/dist/game/mon-cmd.js.map +1 -1
- package/dist/game/mon-death.d.ts +8 -4
- package/dist/game/mon-death.d.ts.map +1 -1
- package/dist/game/mon-death.js +6 -9
- package/dist/game/mon-death.js.map +1 -1
- package/dist/game/mon-group.d.ts +9 -5
- package/dist/game/mon-group.d.ts.map +1 -1
- package/dist/game/mon-group.js +9 -5
- package/dist/game/mon-group.js.map +1 -1
- package/dist/game/mon-message.d.ts +90 -40
- package/dist/game/mon-message.d.ts.map +1 -1
- package/dist/game/mon-message.js +267 -59
- package/dist/game/mon-message.js.map +1 -1
- package/dist/game/mon-place.d.ts +11 -1
- package/dist/game/mon-place.d.ts.map +1 -1
- package/dist/game/mon-place.js +15 -3
- package/dist/game/mon-place.js.map +1 -1
- package/dist/game/mon-ranged.d.ts +2 -1
- package/dist/game/mon-ranged.d.ts.map +1 -1
- package/dist/game/mon-ranged.js +11 -5
- package/dist/game/mon-ranged.js.map +1 -1
- package/dist/game/mon-side.d.ts +3 -2
- package/dist/game/mon-side.d.ts.map +1 -1
- package/dist/game/mon-side.js +15 -14
- package/dist/game/mon-side.js.map +1 -1
- package/dist/game/monster-turn.d.ts +20 -10
- package/dist/game/monster-turn.d.ts.map +1 -1
- package/dist/game/monster-turn.js +110 -83
- package/dist/game/monster-turn.js.map +1 -1
- package/dist/game/notice.d.ts +36 -0
- package/dist/game/notice.d.ts.map +1 -0
- package/dist/game/notice.js +79 -0
- package/dist/game/notice.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +14 -3
- package/dist/game/obj-cmd.d.ts.map +1 -1
- package/dist/game/obj-cmd.js +109 -35
- package/dist/game/obj-cmd.js.map +1 -1
- package/dist/game/obj-list.d.ts +13 -2
- package/dist/game/obj-list.d.ts.map +1 -1
- package/dist/game/obj-list.js +42 -27
- package/dist/game/obj-list.js.map +1 -1
- package/dist/game/object-inspect.d.ts +9 -0
- package/dist/game/object-inspect.d.ts.map +1 -1
- package/dist/game/object-inspect.js +4 -0
- package/dist/game/object-inspect.js.map +1 -1
- package/dist/game/pickup.d.ts +0 -2
- package/dist/game/pickup.d.ts.map +1 -1
- package/dist/game/pickup.js +18 -3
- package/dist/game/pickup.js.map +1 -1
- package/dist/game/player-side-vectors.d.ts +174 -0
- package/dist/game/player-side-vectors.d.ts.map +1 -0
- package/dist/game/player-side-vectors.fixtures.d.ts +33 -0
- package/dist/game/player-side-vectors.fixtures.d.ts.map +1 -0
- package/dist/game/player-side-vectors.fixtures.js +191 -0
- package/dist/game/player-side-vectors.fixtures.js.map +1 -0
- package/dist/game/player-side-vectors.js +292 -0
- package/dist/game/player-side-vectors.js.map +1 -0
- package/dist/game/player-side.d.ts +129 -1
- package/dist/game/player-side.d.ts.map +1 -1
- package/dist/game/player-side.js +520 -338
- package/dist/game/player-side.js.map +1 -1
- package/dist/game/player-turn.d.ts +26 -7
- package/dist/game/player-turn.d.ts.map +1 -1
- package/dist/game/player-turn.js +180 -33
- package/dist/game/player-turn.js.map +1 -1
- package/dist/game/poly.d.ts +38 -0
- package/dist/game/poly.d.ts.map +1 -0
- package/dist/game/poly.js +82 -0
- package/dist/game/poly.js.map +1 -0
- package/dist/game/project-cast.d.ts +20 -3
- package/dist/game/project-cast.d.ts.map +1 -1
- package/dist/game/project-cast.js +49 -6
- package/dist/game/project-cast.js.map +1 -1
- package/dist/game/project-feat-vectors.d.ts +124 -0
- package/dist/game/project-feat-vectors.d.ts.map +1 -0
- package/dist/game/project-feat-vectors.fixtures.d.ts +13 -0
- package/dist/game/project-feat-vectors.fixtures.d.ts.map +1 -0
- package/dist/game/project-feat-vectors.fixtures.js +94 -0
- package/dist/game/project-feat-vectors.fixtures.js.map +1 -0
- package/dist/game/project-feat-vectors.js +229 -0
- package/dist/game/project-feat-vectors.js.map +1 -0
- package/dist/game/project-feat.d.ts +53 -1
- package/dist/game/project-feat.d.ts.map +1 -1
- package/dist/game/project-feat.js +374 -247
- package/dist/game/project-feat.js.map +1 -1
- package/dist/game/project-monster.d.ts +21 -8
- package/dist/game/project-monster.d.ts.map +1 -1
- package/dist/game/project-monster.js +45 -21
- package/dist/game/project-monster.js.map +1 -1
- package/dist/game/project-obj.d.ts +62 -0
- package/dist/game/project-obj.d.ts.map +1 -1
- package/dist/game/project-obj.js +72 -41
- package/dist/game/project-obj.js.map +1 -1
- package/dist/game/project-player.d.ts +8 -0
- package/dist/game/project-player.d.ts.map +1 -1
- package/dist/game/project-player.js.map +1 -1
- package/dist/game/projection-handlers.d.ts +81 -0
- package/dist/game/projection-handlers.d.ts.map +1 -0
- package/dist/game/projection-handlers.js +93 -0
- package/dist/game/projection-handlers.js.map +1 -0
- package/dist/game/quest.d.ts +23 -0
- package/dist/game/quest.d.ts.map +1 -1
- package/dist/game/quest.js +42 -0
- package/dist/game/quest.js.map +1 -1
- package/dist/game/ranged-cmd.d.ts +13 -2
- package/dist/game/ranged-cmd.d.ts.map +1 -1
- package/dist/game/ranged-cmd.js +32 -15
- package/dist/game/ranged-cmd.js.map +1 -1
- package/dist/game/repeat.d.ts +78 -0
- package/dist/game/repeat.d.ts.map +1 -0
- package/dist/game/repeat.js +88 -0
- package/dist/game/repeat.js.map +1 -0
- package/dist/game/shape-inspect.d.ts +74 -0
- package/dist/game/shape-inspect.d.ts.map +1 -0
- package/dist/game/shape-inspect.js +114 -0
- package/dist/game/shape-inspect.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +15 -4
- package/dist/game/spell-cmd.d.ts.map +1 -1
- package/dist/game/spell-cmd.js +35 -6
- package/dist/game/spell-cmd.js.map +1 -1
- package/dist/game/spoil.d.ts.map +1 -1
- package/dist/game/spoil.js +89 -40
- package/dist/game/spoil.js.map +1 -1
- package/dist/game/steal.d.ts +3 -3
- package/dist/game/steal.d.ts.map +1 -1
- package/dist/game/steal.js +9 -4
- package/dist/game/steal.js.map +1 -1
- package/dist/game/target-loop.d.ts +10 -4
- package/dist/game/target-loop.d.ts.map +1 -1
- package/dist/game/target-loop.js +14 -8
- package/dist/game/target-loop.js.map +1 -1
- package/dist/game/target.d.ts +4 -4
- package/dist/game/target.d.ts.map +1 -1
- package/dist/game/target.js +19 -8
- package/dist/game/target.js.map +1 -1
- package/dist/game/ui-entry.d.ts +63 -4
- package/dist/game/ui-entry.d.ts.map +1 -1
- package/dist/game/ui-entry.js +151 -23
- package/dist/game/ui-entry.js.map +1 -1
- package/dist/game/wizard.d.ts +23 -5
- package/dist/game/wizard.d.ts.map +1 -1
- package/dist/game/wizard.js +93 -11
- package/dist/game/wizard.js.map +1 -1
- package/dist/game/world.d.ts.map +1 -1
- package/dist/game/world.js +6 -0
- package/dist/game/world.js.map +1 -1
- package/dist/gen/cave.d.ts +49 -8
- package/dist/gen/cave.d.ts.map +1 -1
- package/dist/gen/cave.js +200 -28
- package/dist/gen/cave.js.map +1 -1
- package/dist/gen/generate.d.ts +54 -9
- package/dist/gen/generate.d.ts.map +1 -1
- package/dist/gen/generate.js +55 -8
- package/dist/gen/generate.js.map +1 -1
- package/dist/gen/glyph-vectors.d.ts +109 -0
- package/dist/gen/glyph-vectors.d.ts.map +1 -0
- package/dist/gen/glyph-vectors.fixtures.d.ts +18 -0
- package/dist/gen/glyph-vectors.fixtures.d.ts.map +1 -0
- package/dist/gen/glyph-vectors.fixtures.js +94 -0
- package/dist/gen/glyph-vectors.fixtures.js.map +1 -0
- package/dist/gen/glyph-vectors.js +218 -0
- package/dist/gen/glyph-vectors.js.map +1 -0
- package/dist/gen/glyph.d.ts +104 -0
- package/dist/gen/glyph.d.ts.map +1 -0
- package/dist/gen/glyph.js +72 -0
- package/dist/gen/glyph.js.map +1 -0
- package/dist/gen/room.d.ts +26 -2
- package/dist/gen/room.d.ts.map +1 -1
- package/dist/gen/room.js +414 -264
- package/dist/gen/room.js.map +1 -1
- package/dist/gen/util.d.ts +11 -2
- package/dist/gen/util.d.ts.map +1 -1
- package/dist/gen/util.js +31 -9
- package/dist/gen/util.js.map +1 -1
- package/dist/i18n/i18n.d.ts +207 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +405 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/text.d.ts +62 -0
- package/dist/i18n/text.d.ts.map +1 -0
- package/dist/i18n/text.js +120 -0
- package/dist/i18n/text.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/mod/extension.d.ts +115 -0
- package/dist/mod/extension.d.ts.map +1 -0
- package/dist/mod/extension.js +85 -0
- package/dist/mod/extension.js.map +1 -0
- package/dist/mod/ids.d.ts +10 -0
- package/dist/mod/ids.d.ts.map +1 -1
- package/dist/mod/ids.js +90 -21
- package/dist/mod/ids.js.map +1 -1
- package/dist/mod/record-keys.d.ts +43 -0
- package/dist/mod/record-keys.d.ts.map +1 -0
- package/dist/mod/record-keys.js +100 -0
- package/dist/mod/record-keys.js.map +1 -0
- package/dist/mod/registry-host.d.ts +472 -0
- package/dist/mod/registry-host.d.ts.map +1 -1
- package/dist/mod/registry-host.js +313 -0
- package/dist/mod/registry-host.js.map +1 -1
- package/dist/mod/save-blocks.d.ts +1 -1
- package/dist/mon/bind.d.ts.map +1 -1
- package/dist/mon/bind.js +6 -3
- package/dist/mon/bind.js.map +1 -1
- package/dist/mon/knowledge-groups.d.ts +0 -6
- package/dist/mon/knowledge-groups.d.ts.map +1 -1
- package/dist/mon/knowledge-groups.js +12 -8
- package/dist/mon/knowledge-groups.js.map +1 -1
- package/dist/mon/lore-describe.d.ts +46 -10
- package/dist/mon/lore-describe.d.ts.map +1 -1
- package/dist/mon/lore-describe.js +74 -22
- package/dist/mon/lore-describe.js.map +1 -1
- package/dist/mon/lore-file.d.ts +126 -0
- package/dist/mon/lore-file.d.ts.map +1 -0
- package/dist/mon/lore-file.js +291 -0
- package/dist/mon/lore-file.js.map +1 -0
- package/dist/mon/lore.d.ts +9 -3
- package/dist/mon/lore.d.ts.map +1 -1
- package/dist/mon/lore.js +9 -3
- package/dist/mon/lore.js.map +1 -1
- package/dist/mon/make.d.ts +4 -2
- package/dist/mon/make.d.ts.map +1 -1
- package/dist/mon/make.js +4 -2
- package/dist/mon/make.js.map +1 -1
- package/dist/mon/monster.d.ts +1 -1
- package/dist/mon/monster.js +1 -1
- package/dist/mon/predicate.d.ts +14 -9
- package/dist/mon/predicate.d.ts.map +1 -1
- package/dist/mon/predicate.js +14 -9
- package/dist/mon/predicate.js.map +1 -1
- package/dist/mon/project-mon.d.ts +16 -3
- package/dist/mon/project-mon.d.ts.map +1 -1
- package/dist/mon/project-mon.js +14 -5
- package/dist/mon/project-mon.js.map +1 -1
- package/dist/mon/steal.d.ts +31 -4
- package/dist/mon/steal.d.ts.map +1 -1
- package/dist/mon/steal.js +20 -7
- package/dist/mon/steal.js.map +1 -1
- package/dist/mon/take-hit.d.ts +8 -3
- package/dist/mon/take-hit.d.ts.map +1 -1
- package/dist/mon/take-hit.js +8 -3
- package/dist/mon/take-hit.js.map +1 -1
- package/dist/mon/timed.d.ts +15 -9
- package/dist/mon/timed.d.ts.map +1 -1
- package/dist/mon/timed.js +13 -8
- package/dist/mon/timed.js.map +1 -1
- package/dist/mon/types.d.ts +11 -4
- package/dist/mon/types.d.ts.map +1 -1
- package/dist/mon/types.js.map +1 -1
- package/dist/msg.d.ts +40 -1
- package/dist/msg.d.ts.map +1 -1
- package/dist/msg.js +42 -1
- package/dist/msg.js.map +1 -1
- package/dist/obj/artifact-fake.d.ts +46 -14
- package/dist/obj/artifact-fake.d.ts.map +1 -1
- package/dist/obj/artifact-fake.js +46 -17
- package/dist/obj/artifact-fake.js.map +1 -1
- package/dist/obj/bind.d.ts +23 -0
- package/dist/obj/bind.d.ts.map +1 -1
- package/dist/obj/bind.js +49 -9
- package/dist/obj/bind.js.map +1 -1
- package/dist/obj/desc-vectors.d.ts +68 -0
- package/dist/obj/desc-vectors.d.ts.map +1 -0
- package/dist/obj/desc-vectors.fixtures.d.ts +12 -0
- package/dist/obj/desc-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/desc-vectors.fixtures.js +95 -0
- package/dist/obj/desc-vectors.fixtures.js.map +1 -0
- package/dist/obj/desc-vectors.js +86 -0
- package/dist/obj/desc-vectors.js.map +1 -0
- package/dist/obj/desc.d.ts +17 -2
- package/dist/obj/desc.d.ts.map +1 -1
- package/dist/obj/desc.js +129 -54
- package/dist/obj/desc.js.map +1 -1
- package/dist/obj/effects-info.d.ts.map +1 -1
- package/dist/obj/effects-info.js +87 -58
- package/dist/obj/effects-info.js.map +1 -1
- package/dist/obj/fake-object.d.ts +70 -0
- package/dist/obj/fake-object.d.ts.map +1 -0
- package/dist/obj/fake-object.js +104 -0
- package/dist/obj/fake-object.js.map +1 -0
- package/dist/obj/ignore.d.ts +55 -12
- package/dist/obj/ignore.d.ts.map +1 -1
- package/dist/obj/ignore.js +68 -31
- package/dist/obj/ignore.js.map +1 -1
- package/dist/obj/knowledge.d.ts +46 -3
- package/dist/obj/knowledge.d.ts.map +1 -1
- package/dist/obj/knowledge.js +169 -151
- package/dist/obj/knowledge.js.map +1 -1
- package/dist/obj/known-object.d.ts +68 -8
- package/dist/obj/known-object.d.ts.map +1 -1
- package/dist/obj/known-object.js +90 -10
- package/dist/obj/known-object.js.map +1 -1
- package/dist/obj/make.d.ts +15 -4
- package/dist/obj/make.d.ts.map +1 -1
- package/dist/obj/make.js +49 -27
- package/dist/obj/make.js.map +1 -1
- package/dist/obj/object-info.d.ts +10 -0
- package/dist/obj/object-info.d.ts.map +1 -1
- package/dist/obj/object-info.js +93 -7
- package/dist/obj/object-info.js.map +1 -1
- package/dist/obj/object.d.ts +42 -4
- package/dist/obj/object.d.ts.map +1 -1
- package/dist/obj/object.js +362 -147
- package/dist/obj/object.js.map +1 -1
- package/dist/obj/power.d.ts +23 -4
- package/dist/obj/power.d.ts.map +1 -1
- package/dist/obj/power.js +231 -65
- package/dist/obj/power.js.map +1 -1
- package/dist/obj/randart-build.d.ts +27 -22
- package/dist/obj/randart-build.d.ts.map +1 -1
- package/dist/obj/randart-build.js +435 -357
- package/dist/obj/randart-build.js.map +1 -1
- package/dist/obj/randart-data.d.ts +62 -24
- package/dist/obj/randart-data.d.ts.map +1 -1
- package/dist/obj/randart-data.js +333 -189
- package/dist/obj/randart-data.js.map +1 -1
- package/dist/obj/randart-file.d.ts +21 -0
- package/dist/obj/randart-file.d.ts.map +1 -0
- package/dist/obj/randart-file.js +119 -0
- package/dist/obj/randart-file.js.map +1 -0
- package/dist/obj/randart-log.d.ts +63 -0
- package/dist/obj/randart-log.d.ts.map +1 -0
- package/dist/obj/randart-log.js +72 -0
- package/dist/obj/randart-log.js.map +1 -0
- package/dist/obj/randart-registry.d.ts +178 -0
- package/dist/obj/randart-registry.d.ts.map +1 -0
- package/dist/obj/randart-registry.js +140 -0
- package/dist/obj/randart-registry.js.map +1 -0
- package/dist/obj/randart-vectors.d.ts +97 -0
- package/dist/obj/randart-vectors.d.ts.map +1 -0
- package/dist/obj/randart-vectors.fixtures.d.ts +18 -0
- package/dist/obj/randart-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/randart-vectors.fixtures.js +50 -0
- package/dist/obj/randart-vectors.fixtures.js.map +1 -0
- package/dist/obj/randart-vectors.js +311 -0
- package/dist/obj/randart-vectors.js.map +1 -0
- package/dist/obj/randart.d.ts +53 -15
- package/dist/obj/randart.d.ts.map +1 -1
- package/dist/obj/randart.js +166 -44
- package/dist/obj/randart.js.map +1 -1
- package/dist/obj/rune-registry.d.ts +180 -0
- package/dist/obj/rune-registry.d.ts.map +1 -0
- package/dist/obj/rune-registry.js +161 -0
- package/dist/obj/rune-registry.js.map +1 -0
- package/dist/obj/rune-vectors.d.ts +99 -0
- package/dist/obj/rune-vectors.d.ts.map +1 -0
- package/dist/obj/rune-vectors.fixtures.d.ts +44 -0
- package/dist/obj/rune-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/rune-vectors.fixtures.js +125 -0
- package/dist/obj/rune-vectors.fixtures.js.map +1 -0
- package/dist/obj/rune-vectors.js +159 -0
- package/dist/obj/rune-vectors.js.map +1 -0
- package/dist/obj/tval-registry.d.ts +174 -0
- package/dist/obj/tval-registry.d.ts.map +1 -0
- package/dist/obj/tval-registry.js +151 -0
- package/dist/obj/tval-registry.js.map +1 -0
- package/dist/obj/tval-vectors.d.ts +85 -0
- package/dist/obj/tval-vectors.d.ts.map +1 -0
- package/dist/obj/tval-vectors.fixtures.d.ts +24 -0
- package/dist/obj/tval-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/tval-vectors.fixtures.js +41 -0
- package/dist/obj/tval-vectors.fixtures.js.map +1 -0
- package/dist/obj/tval-vectors.js +76 -0
- package/dist/obj/tval-vectors.js.map +1 -0
- package/dist/obj/types.d.ts +18 -7
- package/dist/obj/types.d.ts.map +1 -1
- package/dist/obj/types.js.map +1 -1
- package/dist/obj/value.d.ts.map +1 -1
- package/dist/obj/value.js +23 -20
- package/dist/obj/value.js.map +1 -1
- package/dist/parser.d.ts +116 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +205 -0
- package/dist/parser.js.map +1 -0
- package/dist/player/bind.d.ts.map +1 -1
- package/dist/player/bind.js +3 -2
- package/dist/player/bind.js.map +1 -1
- package/dist/player/birth.d.ts +2 -1
- package/dist/player/birth.d.ts.map +1 -1
- package/dist/player/birth.js +2 -1
- package/dist/player/birth.js.map +1 -1
- package/dist/player/calcs.d.ts +58 -23
- package/dist/player/calcs.d.ts.map +1 -1
- package/dist/player/calcs.js +93 -36
- package/dist/player/calcs.js.map +1 -1
- package/dist/player/death.d.ts +50 -0
- package/dist/player/death.d.ts.map +1 -0
- package/dist/player/death.js +46 -0
- package/dist/player/death.js.map +1 -0
- package/dist/player/options-file.d.ts +129 -0
- package/dist/player/options-file.d.ts.map +1 -0
- package/dist/player/options-file.js +309 -0
- package/dist/player/options-file.js.map +1 -0
- package/dist/player/options.d.ts +2 -1
- package/dist/player/options.d.ts.map +1 -1
- package/dist/player/options.js +2 -1
- package/dist/player/options.js.map +1 -1
- package/dist/player/player.d.ts +50 -3
- package/dist/player/player.d.ts.map +1 -1
- package/dist/player/player.js +10 -1
- package/dist/player/player.js.map +1 -1
- package/dist/player/shape-lore.d.ts +11 -7
- package/dist/player/shape-lore.d.ts.map +1 -1
- package/dist/player/shape-lore.js +24 -11
- package/dist/player/shape-lore.js.map +1 -1
- package/dist/player/timed.d.ts +5 -3
- package/dist/player/timed.d.ts.map +1 -1
- package/dist/player/timed.js +11 -2
- package/dist/player/timed.js.map +1 -1
- package/dist/player/types.d.ts +29 -4
- package/dist/player/types.d.ts.map +1 -1
- package/dist/player/types.js +24 -1
- package/dist/player/types.js.map +1 -1
- package/dist/session/boot.d.ts +26 -2
- package/dist/session/boot.d.ts.map +1 -1
- package/dist/session/boot.js +21 -2
- package/dist/session/boot.js.map +1 -1
- package/dist/session/game.d.ts +15 -0
- package/dist/session/game.d.ts.map +1 -1
- package/dist/session/game.js +616 -140
- package/dist/session/game.js.map +1 -1
- package/dist/session/save-migrate.d.ts.map +1 -1
- package/dist/session/save-migrate.js +76 -1
- package/dist/session/save-migrate.js.map +1 -1
- package/dist/session/save.d.ts +75 -12
- package/dist/session/save.d.ts.map +1 -1
- package/dist/session/save.js +177 -18
- package/dist/session/save.js.map +1 -1
- package/dist/store/bind.d.ts +1 -1
- package/dist/store/bind.d.ts.map +1 -1
- package/dist/store/bind.js +4 -3
- package/dist/store/bind.js.map +1 -1
- package/dist/store/mass-produce-vectors.d.ts +40 -0
- package/dist/store/mass-produce-vectors.d.ts.map +1 -0
- package/dist/store/mass-produce-vectors.fixtures.d.ts +13 -0
- package/dist/store/mass-produce-vectors.fixtures.d.ts.map +1 -0
- package/dist/store/mass-produce-vectors.fixtures.js +52 -0
- package/dist/store/mass-produce-vectors.fixtures.js.map +1 -0
- package/dist/store/mass-produce-vectors.js +44 -0
- package/dist/store/mass-produce-vectors.js.map +1 -0
- package/dist/store/store.d.ts +104 -7
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +199 -77
- package/dist/store/store.js.map +1 -1
- package/dist/store/transact.d.ts +14 -5
- package/dist/store/transact.d.ts.map +1 -1
- package/dist/store/transact.js +17 -16
- package/dist/store/transact.js.map +1 -1
- package/dist/store/types.d.ts +3 -2
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/types.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visuals/index.d.ts +1 -0
- package/dist/visuals/index.d.ts.map +1 -1
- package/dist/visuals/index.js +1 -0
- package/dist/visuals/index.js.map +1 -1
- package/dist/visuals/map-text.d.ts +8 -0
- package/dist/visuals/map-text.d.ts.map +1 -1
- package/dist/visuals/map-text.js +1 -1
- package/dist/visuals/map-text.js.map +1 -1
- package/dist/visuals/object-glyph.d.ts +56 -0
- package/dist/visuals/object-glyph.d.ts.map +1 -0
- package/dist/visuals/object-glyph.js +52 -0
- package/dist/visuals/object-glyph.js.map +1 -0
- package/dist/visuals/prefs.d.ts +14 -22
- package/dist/visuals/prefs.d.ts.map +1 -1
- package/dist/visuals/prefs.js +4 -23
- package/dist/visuals/prefs.js.map +1 -1
- package/dist/visuals/tile-prefs.d.ts +26 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -1
- package/dist/visuals/tile-prefs.js +28 -0
- package/dist/visuals/tile-prefs.js.map +1 -1
- package/dist/world/feature.d.ts +2 -1
- package/dist/world/feature.d.ts.map +1 -1
- package/dist/world/feature.js +2 -0
- package/dist/world/feature.js.map +1 -1
- package/dist/world/project.d.ts +10 -2
- package/dist/world/project.d.ts.map +1 -1
- package/dist/world/project.js +18 -6
- package/dist/world/project.js.map +1 -1
- package/dist/world/projection.d.ts +37 -3
- package/dist/world/projection.d.ts.map +1 -1
- package/dist/world/projection.js +69 -7
- package/dist/world/projection.js.map +1 -1
- package/dist/world/trap.d.ts +2 -1
- package/dist/world/trap.d.ts.map +1 -1
- package/dist/world/trap.js +2 -1
- package/dist/world/trap.js.map +1 -1
- package/dist/world/view.d.ts +1 -1
- package/dist/world/view.d.ts.map +1 -1
- package/dist/world/view.js +11 -3
- package/dist/world/view.js.map +1 -1
- package/package.json +1 -1
- package/src/agent/perceive.ts +2 -3
- package/src/combat/blow-vectors.fixtures.ts +99 -0
- package/src/combat/blow-vectors.json +482 -0
- package/src/combat/blow-vectors.ts +280 -0
- package/src/combat/brand-slay.ts +42 -11
- package/src/combat/index.ts +1 -1
- package/src/combat/melee.ts +37 -19
- package/src/combat/mon-melee.ts +611 -364
- package/src/combat/ranged.ts +43 -26
- package/src/constants.ts +15 -0
- package/src/datafile.ts +148 -0
- package/src/effects/effect-info-registry.ts +313 -0
- package/src/effects/effect-info-vectors.fixtures.ts +61 -0
- package/src/effects/effect-info-vectors.json +11532 -0
- package/src/effects/effect-info-vectors.ts +376 -0
- package/src/effects/effect-info.ts +1005 -859
- package/src/effects/effect.ts +96 -62
- package/src/effects/handlers.ts +5 -2
- package/src/effects/interpreter.ts +14 -0
- package/src/game/cave-cmd.ts +54 -11
- package/src/game/cave-square.ts +80 -0
- package/src/game/char-sheet.ts +59 -16
- package/src/game/chest.ts +25 -8
- package/src/game/context.ts +293 -27
- package/src/game/describe.ts +34 -4
- package/src/game/display.ts +215 -19
- package/src/game/dump-level.ts +3 -2
- package/src/game/effect-attack.ts +41 -28
- package/src/game/effect-detect.ts +45 -8
- package/src/game/effect-env.ts +8 -0
- package/src/game/effect-general.ts +110 -47
- package/src/game/effect-item.ts +1075 -999
- package/src/game/effect-melee.ts +51 -18
- package/src/game/effect-monster.ts +55 -9
- package/src/game/effect-teleport.ts +173 -38
- package/src/game/effect-terrain.ts +38 -22
- package/src/game/equip-cmp.ts +483 -480
- package/src/game/floor.ts +22 -4
- package/src/game/gear.ts +210 -21
- package/src/game/harness.ts +12 -1
- package/src/game/ignore-cmd.ts +96 -8
- package/src/game/known.ts +392 -73
- package/src/game/loop.ts +52 -27
- package/src/game/lore-color.ts +13 -1
- package/src/game/mon-cast.ts +31 -6
- package/src/game/mon-cmd.ts +95 -30
- package/src/game/mon-death.ts +14 -12
- package/src/game/mon-group.ts +9 -5
- package/src/game/mon-message.ts +363 -65
- package/src/game/mon-place.ts +15 -3
- package/src/game/mon-ranged.ts +14 -5
- package/src/game/mon-side.ts +16 -12
- package/src/game/monster-turn.ts +120 -87
- package/src/game/notice.ts +85 -0
- package/src/game/obj-cmd.ts +126 -37
- package/src/game/obj-list.ts +44 -26
- package/src/game/object-inspect.ts +13 -0
- package/src/game/pickup.ts +29 -5
- package/src/game/player-side-vectors.fixtures.ts +215 -0
- package/src/game/player-side-vectors.json +6914 -0
- package/src/game/player-side-vectors.ts +420 -0
- package/src/game/player-side.ts +622 -340
- package/src/game/player-turn.ts +228 -31
- package/src/game/poly.ts +107 -0
- package/src/game/project-cast.ts +63 -6
- package/src/game/project-feat-vectors.fixtures.ts +106 -0
- package/src/game/project-feat-vectors.json +6554 -0
- package/src/game/project-feat-vectors.ts +323 -0
- package/src/game/project-feat.ts +417 -248
- package/src/game/project-monster.ts +69 -30
- package/src/game/project-obj-vectors.json +1 -0
- package/src/game/project-obj.ts +115 -47
- package/src/game/project-player.ts +8 -0
- package/src/game/projection-handlers.ts +110 -0
- package/src/game/quest.ts +48 -0
- package/src/game/ranged-cmd.ts +45 -11
- package/src/game/repeat.ts +92 -0
- package/src/game/shape-inspect.ts +166 -0
- package/src/game/spell-cmd.ts +39 -6
- package/src/game/spoil.ts +92 -39
- package/src/game/steal.ts +9 -4
- package/src/game/target-loop.ts +14 -7
- package/src/game/target.ts +18 -7
- package/src/game/ui-entry.ts +172 -22
- package/src/game/wizard.ts +97 -10
- package/src/game/world.ts +6 -0
- package/src/gen/cave.ts +225 -26
- package/src/gen/generate.ts +62 -9
- package/src/gen/glyph-vectors.fixtures.ts +122 -0
- package/src/gen/glyph-vectors.json +5996 -0
- package/src/gen/glyph-vectors.ts +280 -0
- package/src/gen/glyph.ts +132 -0
- package/src/gen/room.ts +446 -265
- package/src/gen/util.ts +32 -9
- package/src/i18n/i18n.ts +492 -0
- package/src/i18n/text.ts +117 -0
- package/src/index.ts +307 -254
- package/src/mod/extension.ts +136 -0
- package/src/mod/ids.ts +92 -21
- package/src/mod/record-keys.ts +102 -0
- package/src/mod/registry-host.ts +1063 -234
- package/src/mon/bind.ts +14 -8
- package/src/mon/knowledge-groups.ts +12 -12
- package/src/mon/lore-describe.ts +93 -26
- package/src/mon/lore-file.ts +365 -0
- package/src/mon/lore.ts +9 -3
- package/src/mon/make.ts +4 -2
- package/src/mon/monster.ts +1 -1
- package/src/mon/predicate.ts +14 -9
- package/src/mon/project-mon.ts +23 -5
- package/src/mon/steal.ts +39 -7
- package/src/mon/take-hit.ts +8 -3
- package/src/mon/timed.ts +15 -9
- package/src/mon/types.ts +11 -4
- package/src/msg.ts +55 -1
- package/src/obj/artifact-fake.ts +47 -17
- package/src/obj/bind.ts +52 -9
- package/src/obj/desc-vectors.fixtures.ts +119 -0
- package/src/obj/desc-vectors.json +2360 -0
- package/src/obj/desc-vectors.ts +128 -0
- package/src/obj/desc.ts +159 -55
- package/src/obj/effects-info.ts +90 -59
- package/src/obj/fake-object.ts +135 -0
- package/src/obj/ignore.ts +95 -28
- package/src/obj/knowledge.ts +291 -139
- package/src/obj/known-object.ts +126 -11
- package/src/obj/make.ts +53 -29
- package/src/obj/object-info.ts +103 -6
- package/src/obj/object.ts +392 -151
- package/src/obj/power.ts +297 -59
- package/src/obj/randart-build.ts +1875 -1705
- package/src/obj/randart-data.ts +1547 -1344
- package/src/obj/randart-file.ts +130 -0
- package/src/obj/randart-log.ts +78 -0
- package/src/obj/randart-registry.ts +247 -0
- package/src/obj/randart-vectors.fixtures.ts +61 -0
- package/src/obj/randart-vectors.json +836 -0
- package/src/obj/randart-vectors.ts +369 -0
- package/src/obj/randart.ts +722 -552
- package/src/obj/rune-registry.ts +270 -0
- package/src/obj/rune-vectors.fixtures.ts +164 -0
- package/src/obj/rune-vectors.json +121 -0
- package/src/obj/rune-vectors.ts +229 -0
- package/src/obj/tval-kind-vectors.json +391 -0
- package/src/obj/tval-registry.ts +243 -0
- package/src/obj/tval-vectors.fixtures.ts +50 -0
- package/src/obj/tval-vectors.json +38 -0
- package/src/obj/tval-vectors.ts +126 -0
- package/src/obj/types.ts +18 -7
- package/src/obj/value.ts +26 -20
- package/src/parser.ts +214 -0
- package/src/player/bind.ts +5 -2
- package/src/player/birth.ts +2 -1
- package/src/player/calcs.ts +123 -42
- package/src/player/death.ts +78 -0
- package/src/player/options-file.ts +387 -0
- package/src/player/options.ts +2 -1
- package/src/player/player.ts +60 -4
- package/src/player/shape-lore.ts +33 -14
- package/src/player/timed.ts +14 -4
- package/src/player/types.ts +30 -4
- package/src/session/boot.ts +51 -1
- package/src/session/game.ts +720 -163
- package/src/session/save-migrate.ts +81 -1
- package/src/session/save.ts +264 -22
- package/src/store/bind.ts +4 -3
- package/src/store/mass-produce-vectors.fixtures.ts +64 -0
- package/src/store/mass-produce-vectors.json +1169 -0
- package/src/store/mass-produce-vectors.ts +67 -0
- package/src/store/store.ts +266 -63
- package/src/store/transact.ts +39 -16
- package/src/store/types.ts +3 -2
- package/src/version.ts +1 -1
- package/src/visuals/index.ts +1 -0
- package/src/visuals/map-text.ts +1 -1
- package/src/visuals/object-glyph.ts +76 -0
- package/src/visuals/prefs.ts +22 -32
- package/src/visuals/tile-prefs.ts +32 -0
- package/src/world/feature.ts +4 -1
- package/src/world/project.ts +19 -4
- package/src/world/projection.ts +79 -8
- package/src/world/trap.ts +25 -21
- package/src/world/view.ts +11 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/gen/generate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/gen/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/gen/generate.js
CHANGED
|
@@ -8,10 +8,22 @@
|
|
|
8
8
|
* returns the Gen context, which exposes the finished Chunk, the placed
|
|
9
9
|
* objects and monsters, and the player start location.
|
|
10
10
|
*
|
|
11
|
-
* DEFERRED (ledgered in parity/ledger/gen-framework.yaml):
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* DEFERRED (ledgered in parity/ledger/gen-framework.yaml): the known-level
|
|
12
|
+
* ("player cave") duplicate. Monster-count overflow is the one upstream
|
|
13
|
+
* post-build regeneration trigger that is kept.
|
|
14
|
+
*
|
|
15
|
+
* Neither arena nor quest levels are deferred, and neither has been for some
|
|
16
|
+
* time. Arena levels are built by arenaGen and driven by session/game.ts
|
|
17
|
+
* (PORT_TODO 4.1). Quest levels are `options.quest`, which forces the classic
|
|
18
|
+
* profile exactly as choose_profile does (generate.c L841), reaches every
|
|
19
|
+
* builder as `dun.quest` - the size_percent = 100 override, handle_level_stairs
|
|
20
|
+
* and every alloc_stairs / place_random_stairs call - and drives the quest
|
|
21
|
+
* guardian placement below (PORT_TODO 4.2).
|
|
22
|
+
*
|
|
23
|
+
* Persistent-level connectors are not deferred either (PORT_TODO 4.3):
|
|
24
|
+
* getJoinInfo, getMinLevelSize and collectJoins are here, the builders honour
|
|
25
|
+
* dun.persist, and session/changeLevel drives all three off the frozen-level
|
|
26
|
+
* cache.
|
|
15
27
|
*
|
|
16
28
|
* NO ADDITIONS BEYOND UPSTREAM. This file holds no fix and no mod's name. It
|
|
17
29
|
* offers ONE extension point - the levelGenerated hook (mod/hooks.ts), consulted
|
|
@@ -79,12 +91,47 @@ export function getJoinInfo(adj) {
|
|
|
79
91
|
}
|
|
80
92
|
return { join, oneOffAbove, oneOffBelow };
|
|
81
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* get_min_level_size (generate.c L997-1013): the minimum dimensions a level
|
|
96
|
+
* must be generated at so that the stairs of an already-frozen neighbour can
|
|
97
|
+
* be reproduced on it. Each relevant connector needs its grid to exist with a
|
|
98
|
+
* wall beyond it, hence `+ 2`.
|
|
99
|
+
*
|
|
100
|
+
* `above` selects which neighbour is being measured, exactly as upstream: for
|
|
101
|
+
* the level ABOVE the target we take its DOWN staircases (FEAT_MORE), because
|
|
102
|
+
* those become our up staircases; for the level BELOW, its up staircases.
|
|
103
|
+
*
|
|
104
|
+
* Called by prepare_next_level (L1531-1546) only on the persistent first-visit
|
|
105
|
+
* path, and threaded into the builders as ctx.minHeight / ctx.minWidth. It is
|
|
106
|
+
* NOT decoration: build_staircase_rooms quits outright when a seeded connector
|
|
107
|
+
* has no room on the level (gen-cave.c L925-934, `quit("Failed to place
|
|
108
|
+
* stairs")`), so a level generated smaller than its neighbour's deepest stair
|
|
109
|
+
* is an abort, not a cosmetic mismatch.
|
|
110
|
+
*/
|
|
111
|
+
export function getMinLevelSize(join, above, min = { height: 0, width: 0 }) {
|
|
112
|
+
const want = above ? FEAT.MORE : FEAT.LESS;
|
|
113
|
+
let { height, width } = min;
|
|
114
|
+
for (const j of join) {
|
|
115
|
+
if (j.feat !== want)
|
|
116
|
+
continue;
|
|
117
|
+
height = Math.max(height, j.grid.y + 2);
|
|
118
|
+
width = Math.max(width, j.grid.x + 2);
|
|
119
|
+
}
|
|
120
|
+
return { height, width };
|
|
121
|
+
}
|
|
82
122
|
/**
|
|
83
123
|
* Collect the finished level's staircases as join connectors
|
|
84
|
-
* (generate.c L1203-1214 populating chunk->join): each stair grid
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
124
|
+
* (generate.c L1203-1214 populating chunk->join): each stair grid, its feature
|
|
125
|
+
* and a copy of its SQUARE info bytes (L1208-1211). Feeds the next level's
|
|
126
|
+
* getJoinInfo.
|
|
127
|
+
*
|
|
128
|
+
* The info copy has no reader in 4.2.6 - get_join_info builds fresh connectors
|
|
129
|
+
* and sets only grid/feat, transform_join_list does the same, and build_staircase
|
|
130
|
+
* reads only the grid; the bytes exist to be written to and read back from the
|
|
131
|
+
* savefile (save.c L850-866 / load.c L1366-1379) and are then freed. It is
|
|
132
|
+
* carried here anyway because that is what the original stores, and an absent
|
|
133
|
+
* field invites the same "is this a gap?" question every time somebody reads
|
|
134
|
+
* this function.
|
|
88
135
|
*
|
|
89
136
|
* Order matters: upstream PREPENDS each stair (new->next = chunk->join;
|
|
90
137
|
* chunk->join = new, L1212-1213), so chunk->join ends up in reverse scan order
|
package/dist/gen/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/gen/generate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/gen/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Golden vectors for room-template and vault GLYPH decoding.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS. `build_room_template` and `build_vault` (gen-room.c) each
|
|
5
|
+
* decode their template text twice - once for terrain, once for the monsters
|
|
6
|
+
* and objects - and the port carried all three of the large loops as closed
|
|
7
|
+
* `switch` statements. Converting them into a keyed registry so a mod can teach
|
|
8
|
+
* the game a NEW glyph is a refactor of level generation, and the thing that
|
|
9
|
+
* has to be proven is not "the gen tests still pass" but "every template and
|
|
10
|
+
* every vault of the shipped pack lays down exactly the same level, and leaves
|
|
11
|
+
* the RNG in exactly the same place".
|
|
12
|
+
*
|
|
13
|
+
* So the ground truth is DERIVED, not declared: this module lays every real
|
|
14
|
+
* room template and every real vault of the shipped pack onto a blank chunk at
|
|
15
|
+
* fixed seeds and records everything observable - the chunk itself, hashed
|
|
16
|
+
* grid by grid, the objects, monsters and traps that were placed, and a probe
|
|
17
|
+
* draw taken from the RNG afterwards. `glyph-vectors.json` beside it was
|
|
18
|
+
* recorded from the code as it stood BEFORE the registry existed, so a vector
|
|
19
|
+
* that still matches is evidence the refactor changed nothing, and one that
|
|
20
|
+
* does not names the template, the seed and the count that moved.
|
|
21
|
+
*
|
|
22
|
+
* THE PROBE IS THE POINT. A level can come out identical while the build drew
|
|
23
|
+
* a different NUMBER of random values, and that difference is invisible in the
|
|
24
|
+
* finished room - it diverges the rest of the dungeon instead. `rngProbe` is
|
|
25
|
+
* one draw taken after the build: it can only match if the stream is at the
|
|
26
|
+
* same position.
|
|
27
|
+
*
|
|
28
|
+
* The real pack does not use every glyph upstream defines, so SYNTHETIC_ROOMS
|
|
29
|
+
* and SYNTHETIC_VAULTS below spell out the alphabet directly - `x`, `(`, `)`
|
|
30
|
+
* and the `1`-`6` door positions in a template, `/` and `;` in a vault - each
|
|
31
|
+
* run over enough seeds to land on both sides of the `rndwalls` and `rnddoors`
|
|
32
|
+
* coin flips. Those are declared here rather than loaded, because a glyph the
|
|
33
|
+
* pack never uses is exactly the one a refactor can drop unnoticed.
|
|
34
|
+
*
|
|
35
|
+
* Fixtures are INJECTED rather than loaded here, so this module pulls in no
|
|
36
|
+
* node:fs and no content pack, and can be imported from anywhere.
|
|
37
|
+
*
|
|
38
|
+
* Regenerate with `node packages/core/scripts/gen-glyph-vectors.mjs` - which
|
|
39
|
+
* OVERWRITES the evidence, so only do it when the change is intended and say so
|
|
40
|
+
* in the commit.
|
|
41
|
+
*/
|
|
42
|
+
import type { Gen } from "./util.js";
|
|
43
|
+
import type { RoomTemplate, Vault } from "./room.js";
|
|
44
|
+
/** How a vector's scenario is built, supplied by the caller (test or script). */
|
|
45
|
+
export interface GlyphVectorFixtures {
|
|
46
|
+
/**
|
|
47
|
+
* A Gen over a blank granite chunk of the given size at the given depth,
|
|
48
|
+
* seeded, with the REAL object and monster placement deps - a vault's `8`
|
|
49
|
+
* places a monster and an object, so a deps-less Gen would record nothing
|
|
50
|
+
* where the interesting draws are.
|
|
51
|
+
*/
|
|
52
|
+
makeGen(width: number, height: number, depth: number, seed: number): Gen;
|
|
53
|
+
/** Every room template of the shipped pack, in file order. */
|
|
54
|
+
templates(): readonly RoomTemplate[];
|
|
55
|
+
/** Every vault of the shipped pack, in file order. */
|
|
56
|
+
vaults(): readonly Vault[];
|
|
57
|
+
}
|
|
58
|
+
/** One recorded build of one template or vault at one seed. */
|
|
59
|
+
export interface GlyphVector {
|
|
60
|
+
kind: "template" | "vault";
|
|
61
|
+
name: string;
|
|
62
|
+
seed: number;
|
|
63
|
+
depth: number;
|
|
64
|
+
/** What the builder returned (false = could not find space). */
|
|
65
|
+
ok: boolean;
|
|
66
|
+
/** FNV-1a over every square's feature, info flags and light. */
|
|
67
|
+
grid: string;
|
|
68
|
+
/** Placed objects, as "x,y:kind". */
|
|
69
|
+
objects: string[];
|
|
70
|
+
/** Placed monsters, as "x,y:race". */
|
|
71
|
+
monsters: string[];
|
|
72
|
+
/** Generated traps, as "x,y:tidx:power" (or "x,y" when only marked). */
|
|
73
|
+
traps: string[];
|
|
74
|
+
/** One draw taken after the build: catches a changed DRAW COUNT. */
|
|
75
|
+
rngProbe: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A room template using every glyph `build_room_template` decodes. `dor` is 6
|
|
79
|
+
* so all six door positions are reachable, and the seeds below cover both
|
|
80
|
+
* values of `rndwalls`.
|
|
81
|
+
*/
|
|
82
|
+
export declare const SYNTHETIC_ROOMS: readonly RoomTemplate[];
|
|
83
|
+
/**
|
|
84
|
+
* A vault using every glyph `build_vault` decodes, including `/` and `;` (which
|
|
85
|
+
* upstream accepts and does nothing with) and the `<`/`>` stair glyphs. Alpha
|
|
86
|
+
* characters are the racial-monster mechanism rather than glyph handlers, so
|
|
87
|
+
* one is present to pin that the boundary between the two did not move.
|
|
88
|
+
*/
|
|
89
|
+
export declare const SYNTHETIC_VAULTS: readonly Vault[];
|
|
90
|
+
/** The seeds each scenario is run at. Two are enough to flip `rndwalls`. */
|
|
91
|
+
export declare const GLYPH_VECTOR_SEEDS: readonly number[];
|
|
92
|
+
/**
|
|
93
|
+
* The depths each scenario is run at.
|
|
94
|
+
*
|
|
95
|
+
* 127 is not decoration. A vault's `>` places a DOWN staircase everywhere
|
|
96
|
+
* except within one level of the dungeon bottom, where it places an up
|
|
97
|
+
* staircase instead - and with only 5 and 60 in this list that arm was never
|
|
98
|
+
* reached, so a control that broke it passed. `constants.max-depth` is 128,
|
|
99
|
+
* so 127 is the one depth that flips it. A grid dimension that does not vary
|
|
100
|
+
* the branch is not coverage.
|
|
101
|
+
*/
|
|
102
|
+
export declare const GLYPH_VECTOR_DEPTHS: readonly number[];
|
|
103
|
+
/**
|
|
104
|
+
* Lay every template and vault - the pack's and the synthetic ones - at every
|
|
105
|
+
* seed and depth, and record what came out. Deterministic and order-stable:
|
|
106
|
+
* the returned array is the fixture.
|
|
107
|
+
*/
|
|
108
|
+
export declare function computeGlyphVectors(fx: GlyphVectorFixtures): GlyphVector[];
|
|
109
|
+
//# sourceMappingURL=glyph-vectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyph-vectors.d.ts","sourceRoot":"","sources":["../../src/gen/glyph-vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAErD,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;IACzE,8DAA8D;IAC9D,SAAS,IAAI,SAAS,YAAY,EAAE,CAAC;IACrC,sDAAsD;IACtD,MAAM,IAAI,SAAS,KAAK,EAAE,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAmClD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,KAAK,EAmC5C,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAc,CAAC;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAiB,CAAC;AAuDnE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,GAAG,WAAW,EAAE,CAmC1E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generation context a glyph vector is recorded against, built from the
|
|
3
|
+
* real shipped content pack.
|
|
4
|
+
*
|
|
5
|
+
* SEPARATE FILE, and it reads the disk: keeping node:fs out of
|
|
6
|
+
* `glyph-vectors.ts` means that module stays importable from anywhere. ONE
|
|
7
|
+
* copy, shared by `glyph-vectors.test.ts` and by
|
|
8
|
+
* `scripts/gen-glyph-vectors.mjs`, so the test and the generator cannot
|
|
9
|
+
* disagree about what they are measuring.
|
|
10
|
+
*
|
|
11
|
+
* The deps are REAL - the object allocator, the monster allocation table, the
|
|
12
|
+
* trap kinds - because a vault's `8` places a monster and an object and rolls
|
|
13
|
+
* a trap's power, and a deps-less Gen would record nothing at exactly the
|
|
14
|
+
* glyphs whose decoding is most worth pinning.
|
|
15
|
+
*/
|
|
16
|
+
import type { GlyphVectorFixtures } from "./glyph-vectors.js";
|
|
17
|
+
export declare function glyphVectorFixtures(): GlyphVectorFixtures;
|
|
18
|
+
//# sourceMappingURL=glyph-vectors.fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyph-vectors.fixtures.d.ts","sourceRoot":"","sources":["../../src/gen/glyph-vectors.fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAY9D,wBAAgB,mBAAmB,IAAI,mBAAmB,CAuEzD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generation context a glyph vector is recorded against, built from the
|
|
3
|
+
* real shipped content pack.
|
|
4
|
+
*
|
|
5
|
+
* SEPARATE FILE, and it reads the disk: keeping node:fs out of
|
|
6
|
+
* `glyph-vectors.ts` means that module stays importable from anywhere. ONE
|
|
7
|
+
* copy, shared by `glyph-vectors.test.ts` and by
|
|
8
|
+
* `scripts/gen-glyph-vectors.mjs`, so the test and the generator cannot
|
|
9
|
+
* disagree about what they are measuring.
|
|
10
|
+
*
|
|
11
|
+
* The deps are REAL - the object allocator, the monster allocation table, the
|
|
12
|
+
* trap kinds - because a vault's `8` places a monster and an object and rolls
|
|
13
|
+
* a trap's power, and a deps-less Gen would record nothing at exactly the
|
|
14
|
+
* glyphs whose decoding is most worth pinning.
|
|
15
|
+
*/
|
|
16
|
+
import { readFileSync } from "node:fs";
|
|
17
|
+
import { bindConstants } from "../constants.js";
|
|
18
|
+
import { FEAT, SQUARE } from "../generated/index.js";
|
|
19
|
+
import { Rng } from "../rng.js";
|
|
20
|
+
import { Chunk } from "../world/chunk.js";
|
|
21
|
+
import { FeatureRegistry } from "../world/feature.js";
|
|
22
|
+
import { bindTraps } from "../world/trap.js";
|
|
23
|
+
import { ObjRegistry } from "../obj/bind.js";
|
|
24
|
+
import { ArtifactState, ObjAllocState } from "../obj/make.js";
|
|
25
|
+
import { bindMonsters } from "../mon/bind.js";
|
|
26
|
+
import { MonAllocTable } from "../mon/make.js";
|
|
27
|
+
import { resolvePits } from "./gen-monster.js";
|
|
28
|
+
import { Dun, Gen, fillRectangle } from "./util.js";
|
|
29
|
+
import { loadRoomTemplates, loadVaults } from "./room.js";
|
|
30
|
+
function loadJson(name) {
|
|
31
|
+
return JSON.parse(readFileSync(new URL(`../../../content/pack/${name}.json`, import.meta.url), "utf8"));
|
|
32
|
+
}
|
|
33
|
+
function loadRecords(name) {
|
|
34
|
+
return loadJson(name).records;
|
|
35
|
+
}
|
|
36
|
+
export function glyphVectorFixtures() {
|
|
37
|
+
const reg = new FeatureRegistry(loadRecords("terrain"));
|
|
38
|
+
const constants = bindConstants(loadJson("constants"));
|
|
39
|
+
const trapKinds = bindTraps(loadRecords("trap"));
|
|
40
|
+
const objPack = {
|
|
41
|
+
objectBase: loadJson("object_base"),
|
|
42
|
+
object: loadJson("object"),
|
|
43
|
+
egoItem: loadJson("ego_item"),
|
|
44
|
+
artifact: loadJson("artifact"),
|
|
45
|
+
curse: loadJson("curse"),
|
|
46
|
+
brand: loadJson("brand"),
|
|
47
|
+
slay: loadJson("slay"),
|
|
48
|
+
activation: loadJson("activation"),
|
|
49
|
+
objectProperty: loadJson("object_property"),
|
|
50
|
+
flavor: loadJson("flavor"),
|
|
51
|
+
};
|
|
52
|
+
const monPack = {
|
|
53
|
+
pain: loadRecords("pain"),
|
|
54
|
+
blowMethods: loadRecords("blow_methods"),
|
|
55
|
+
blowEffects: loadRecords("blow_effects"),
|
|
56
|
+
monsterSpells: loadRecords("monster_spell"),
|
|
57
|
+
monsterBases: loadRecords("monster_base"),
|
|
58
|
+
monsters: loadRecords("monster"),
|
|
59
|
+
summons: loadRecords("summon"),
|
|
60
|
+
pits: loadRecords("pit"),
|
|
61
|
+
};
|
|
62
|
+
const templates = loadRoomTemplates(loadRecords("room_template"));
|
|
63
|
+
const vaults = loadVaults(loadRecords("vault"), constants.maxDepth);
|
|
64
|
+
return {
|
|
65
|
+
makeGen(width, height, depth, seed) {
|
|
66
|
+
/* A fresh registry per Gen: the allocator and the artifact state both
|
|
67
|
+
* carry per-level memory, and a vector must not see the previous one. */
|
|
68
|
+
const objReg = new ObjRegistry(objPack);
|
|
69
|
+
const objDeps = {
|
|
70
|
+
reg: objReg,
|
|
71
|
+
alloc: new ObjAllocState(objReg, constants),
|
|
72
|
+
constants,
|
|
73
|
+
artifacts: new ArtifactState(objReg.artifacts.length),
|
|
74
|
+
noArtifacts: false,
|
|
75
|
+
};
|
|
76
|
+
const monReg = bindMonsters(monPack, { maxSight: constants.maxSight });
|
|
77
|
+
const monDeps = {
|
|
78
|
+
table: new MonAllocTable(monReg.races, {
|
|
79
|
+
maxDepth: constants.maxDepth,
|
|
80
|
+
oodChance: constants.oodMonsterChance,
|
|
81
|
+
oodAmount: constants.oodMonsterAmount,
|
|
82
|
+
}),
|
|
83
|
+
pits: resolvePits(monReg),
|
|
84
|
+
};
|
|
85
|
+
const c = new Chunk(reg, height, width);
|
|
86
|
+
c.depth = depth;
|
|
87
|
+
fillRectangle(c, 0, 0, height - 1, width - 1, FEAT.GRANITE, SQUARE.NONE);
|
|
88
|
+
return new Gen(c, new Rng(seed), reg, constants, new Dun(constants), objDeps, monDeps, trapKinds);
|
|
89
|
+
},
|
|
90
|
+
templates: () => templates,
|
|
91
|
+
vaults: () => vaults,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=glyph-vectors.fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyph-vectors.fixtures.js","sourceRoot":"","sources":["../../src/gen/glyph-vectors.fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Golden vectors for room-template and vault GLYPH decoding.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS. `build_room_template` and `build_vault` (gen-room.c) each
|
|
5
|
+
* decode their template text twice - once for terrain, once for the monsters
|
|
6
|
+
* and objects - and the port carried all three of the large loops as closed
|
|
7
|
+
* `switch` statements. Converting them into a keyed registry so a mod can teach
|
|
8
|
+
* the game a NEW glyph is a refactor of level generation, and the thing that
|
|
9
|
+
* has to be proven is not "the gen tests still pass" but "every template and
|
|
10
|
+
* every vault of the shipped pack lays down exactly the same level, and leaves
|
|
11
|
+
* the RNG in exactly the same place".
|
|
12
|
+
*
|
|
13
|
+
* So the ground truth is DERIVED, not declared: this module lays every real
|
|
14
|
+
* room template and every real vault of the shipped pack onto a blank chunk at
|
|
15
|
+
* fixed seeds and records everything observable - the chunk itself, hashed
|
|
16
|
+
* grid by grid, the objects, monsters and traps that were placed, and a probe
|
|
17
|
+
* draw taken from the RNG afterwards. `glyph-vectors.json` beside it was
|
|
18
|
+
* recorded from the code as it stood BEFORE the registry existed, so a vector
|
|
19
|
+
* that still matches is evidence the refactor changed nothing, and one that
|
|
20
|
+
* does not names the template, the seed and the count that moved.
|
|
21
|
+
*
|
|
22
|
+
* THE PROBE IS THE POINT. A level can come out identical while the build drew
|
|
23
|
+
* a different NUMBER of random values, and that difference is invisible in the
|
|
24
|
+
* finished room - it diverges the rest of the dungeon instead. `rngProbe` is
|
|
25
|
+
* one draw taken after the build: it can only match if the stream is at the
|
|
26
|
+
* same position.
|
|
27
|
+
*
|
|
28
|
+
* The real pack does not use every glyph upstream defines, so SYNTHETIC_ROOMS
|
|
29
|
+
* and SYNTHETIC_VAULTS below spell out the alphabet directly - `x`, `(`, `)`
|
|
30
|
+
* and the `1`-`6` door positions in a template, `/` and `;` in a vault - each
|
|
31
|
+
* run over enough seeds to land on both sides of the `rndwalls` and `rnddoors`
|
|
32
|
+
* coin flips. Those are declared here rather than loaded, because a glyph the
|
|
33
|
+
* pack never uses is exactly the one a refactor can drop unnoticed.
|
|
34
|
+
*
|
|
35
|
+
* Fixtures are INJECTED rather than loaded here, so this module pulls in no
|
|
36
|
+
* node:fs and no content pack, and can be imported from anywhere.
|
|
37
|
+
*
|
|
38
|
+
* Regenerate with `node packages/core/scripts/gen-glyph-vectors.mjs` - which
|
|
39
|
+
* OVERWRITES the evidence, so only do it when the change is intended and say so
|
|
40
|
+
* in the commit.
|
|
41
|
+
*/
|
|
42
|
+
import { loc } from "../loc.js";
|
|
43
|
+
import { buildRoomTemplate, buildVault } from "./room.js";
|
|
44
|
+
/* ------------------------------------------------------------------ *
|
|
45
|
+
* Synthetic templates and vaults: the glyphs the shipped pack may not use.
|
|
46
|
+
* ------------------------------------------------------------------ */
|
|
47
|
+
/**
|
|
48
|
+
* A room template using every glyph `build_room_template` decodes. `dor` is 6
|
|
49
|
+
* so all six door positions are reachable, and the seeds below cover both
|
|
50
|
+
* values of `rndwalls`.
|
|
51
|
+
*/
|
|
52
|
+
export const SYNTHETIC_ROOMS = [
|
|
53
|
+
{
|
|
54
|
+
name: "SYNTHETIC every glyph",
|
|
55
|
+
typ: 1,
|
|
56
|
+
rat: 0,
|
|
57
|
+
hgt: 9,
|
|
58
|
+
wid: 13,
|
|
59
|
+
dor: 6,
|
|
60
|
+
tval: 0,
|
|
61
|
+
fewEntrances: false,
|
|
62
|
+
rows: [
|
|
63
|
+
"%%%%%%%%%%%%%",
|
|
64
|
+
"%...x(x)x...%",
|
|
65
|
+
"%.#########.%",
|
|
66
|
+
"%.#8.....9#.%",
|
|
67
|
+
"%1#.......#2%",
|
|
68
|
+
"%3#..[.^..#4%",
|
|
69
|
+
"%5#########6%",
|
|
70
|
+
"%...+...+...%",
|
|
71
|
+
"%%%%%%%%%%%%%",
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
/* FEW_ENTRANCES changes what '%' does (append_entrance), and it is a flag
|
|
76
|
+
* the pack sets on few enough templates to be worth pinning separately. */
|
|
77
|
+
name: "SYNTHETIC few entrances",
|
|
78
|
+
typ: 1,
|
|
79
|
+
rat: 0,
|
|
80
|
+
hgt: 5,
|
|
81
|
+
wid: 7,
|
|
82
|
+
dor: 2,
|
|
83
|
+
tval: 0,
|
|
84
|
+
fewEntrances: true,
|
|
85
|
+
rows: ["%%%%%%%", "%..1..%", "%.[.^.%", "%..2..%", "%%%%%%%"],
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* A vault using every glyph `build_vault` decodes, including `/` and `;` (which
|
|
90
|
+
* upstream accepts and does nothing with) and the `<`/`>` stair glyphs. Alpha
|
|
91
|
+
* characters are the racial-monster mechanism rather than glyph handlers, so
|
|
92
|
+
* one is present to pin that the boundary between the two did not move.
|
|
93
|
+
*/
|
|
94
|
+
export const SYNTHETIC_VAULTS = [
|
|
95
|
+
{
|
|
96
|
+
name: "SYNTHETIC every glyph",
|
|
97
|
+
typ: "Lesser vault",
|
|
98
|
+
rat: 0,
|
|
99
|
+
hgt: 11,
|
|
100
|
+
wid: 15,
|
|
101
|
+
minLev: 1,
|
|
102
|
+
maxLev: 127,
|
|
103
|
+
fewEntrances: false,
|
|
104
|
+
rows: [
|
|
105
|
+
"%%%%%%%%%%%%%%%",
|
|
106
|
+
"%.....@@@.....%",
|
|
107
|
+
"%.***.:::.&&&.%",
|
|
108
|
+
"%.+++.^^^.///.%",
|
|
109
|
+
"%.;;;.<.>.```.%",
|
|
110
|
+
"%.1234567890.%%",
|
|
111
|
+
"%.~$..#####..%%",
|
|
112
|
+
"%.....#...#...%",
|
|
113
|
+
"%..p..#.8.#...%",
|
|
114
|
+
"%.....#####...%",
|
|
115
|
+
"%%%%%%%%%%%%%%%",
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: "SYNTHETIC few entrances",
|
|
120
|
+
typ: "Lesser vault",
|
|
121
|
+
rat: 0,
|
|
122
|
+
hgt: 5,
|
|
123
|
+
wid: 7,
|
|
124
|
+
minLev: 1,
|
|
125
|
+
maxLev: 127,
|
|
126
|
+
fewEntrances: true,
|
|
127
|
+
rows: ["%%%%%%%", "%.&.^.%", "%.1.3.%", "%.~.$.%", "%%%%%%%"],
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
/** The seeds each scenario is run at. Two are enough to flip `rndwalls`. */
|
|
131
|
+
export const GLYPH_VECTOR_SEEDS = [1, 2, 3];
|
|
132
|
+
/**
|
|
133
|
+
* The depths each scenario is run at.
|
|
134
|
+
*
|
|
135
|
+
* 127 is not decoration. A vault's `>` places a DOWN staircase everywhere
|
|
136
|
+
* except within one level of the dungeon bottom, where it places an up
|
|
137
|
+
* staircase instead - and with only 5 and 60 in this list that arm was never
|
|
138
|
+
* reached, so a control that broke it passed. `constants.max-depth` is 128,
|
|
139
|
+
* so 127 is the one depth that flips it. A grid dimension that does not vary
|
|
140
|
+
* the branch is not coverage.
|
|
141
|
+
*/
|
|
142
|
+
export const GLYPH_VECTOR_DEPTHS = [5, 60, 127];
|
|
143
|
+
/* ------------------------------------------------------------------ *
|
|
144
|
+
* Recording.
|
|
145
|
+
* ------------------------------------------------------------------ */
|
|
146
|
+
/** FNV-1a, 32-bit, hex. Stable across platforms and short enough to diff. */
|
|
147
|
+
function hash(parts) {
|
|
148
|
+
let h = 0x811c9dc5;
|
|
149
|
+
for (const n of parts) {
|
|
150
|
+
/* Mix all four bytes so a feature change in a high grid index cannot
|
|
151
|
+
* cancel a flag change in a low one. */
|
|
152
|
+
for (let s = 0; s < 32; s += 8) {
|
|
153
|
+
h ^= (n >>> s) & 0xff;
|
|
154
|
+
h = Math.imul(h, 0x01000193) >>> 0;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return h.toString(16).padStart(8, "0");
|
|
158
|
+
}
|
|
159
|
+
function gridHash(g) {
|
|
160
|
+
const snap = g.c.snapshotSquares();
|
|
161
|
+
const parts = [];
|
|
162
|
+
for (const f of snap.feats)
|
|
163
|
+
parts.push(f);
|
|
164
|
+
for (const bits of snap.infos)
|
|
165
|
+
for (const b of bits)
|
|
166
|
+
parts.push(b);
|
|
167
|
+
for (const l of snap.lights)
|
|
168
|
+
parts.push(l);
|
|
169
|
+
return hash(parts);
|
|
170
|
+
}
|
|
171
|
+
function record(g, kind, name, seed, depth, ok) {
|
|
172
|
+
const objects = g.objects.map((o) => `${o.grid.x},${o.grid.y}:${o.obj.kind?.name ?? "?"}`);
|
|
173
|
+
const monsters = g.monsters.map((m) => `${m.grid.x},${m.grid.y}:${m.mon.race?.name ?? "?"}`);
|
|
174
|
+
const traps = g.traps.map((t) => `${t.grid.x},${t.grid.y}:${t.tidx}:${t.power}`);
|
|
175
|
+
return {
|
|
176
|
+
kind,
|
|
177
|
+
name,
|
|
178
|
+
seed,
|
|
179
|
+
depth,
|
|
180
|
+
ok,
|
|
181
|
+
grid: gridHash(g),
|
|
182
|
+
objects,
|
|
183
|
+
monsters,
|
|
184
|
+
traps,
|
|
185
|
+
/* AFTER everything else is read: the probe must be the last draw. */
|
|
186
|
+
rngProbe: g.rng.randint0(1 << 24),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Lay every template and vault - the pack's and the synthetic ones - at every
|
|
191
|
+
* seed and depth, and record what came out. Deterministic and order-stable:
|
|
192
|
+
* the returned array is the fixture.
|
|
193
|
+
*/
|
|
194
|
+
export function computeGlyphVectors(fx) {
|
|
195
|
+
const out = [];
|
|
196
|
+
const templates = [...fx.templates(), ...SYNTHETIC_ROOMS];
|
|
197
|
+
const vaults = [...fx.vaults(), ...SYNTHETIC_VAULTS];
|
|
198
|
+
for (const depth of GLYPH_VECTOR_DEPTHS) {
|
|
199
|
+
for (const t of templates) {
|
|
200
|
+
for (const seed of GLYPH_VECTOR_SEEDS) {
|
|
201
|
+
/* Oversized chunk and a real centre, so find_space never runs and the
|
|
202
|
+
* vector measures the DECODE rather than the placement search. */
|
|
203
|
+
const g = fx.makeGen(160, 70, depth, seed);
|
|
204
|
+
const ok = buildRoomTemplate(g, loc(80, 35), t.hgt, t.wid, t.dor, t.rows, t.tval, t.fewEntrances);
|
|
205
|
+
out.push(record(g, "template", t.name, seed, depth, ok));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
for (const v of vaults) {
|
|
209
|
+
for (const seed of GLYPH_VECTOR_SEEDS) {
|
|
210
|
+
const g = fx.makeGen(160, 70, depth, seed);
|
|
211
|
+
const ok = buildVault(g, loc(80, 35), v);
|
|
212
|
+
out.push(record(g, "vault", v.name, seed, depth, ok));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return out;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=glyph-vectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyph-vectors.js","sourceRoot":"","sources":["../../src/gen/glyph-vectors.ts"],"names":[],"mappings":"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"}
|