@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
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Golden vectors for project_p: what EVERY projection does to the PLAYER,
|
|
3
|
+
* recorded from the code BEFORE the dispatch switch became a registry.
|
|
4
|
+
*
|
|
5
|
+
* WHY A RECORDING AND NOT "THE TESTS STILL PASS". player-side.test.ts asserts
|
|
6
|
+
* particular behaviours - SHARD cuts, PROT_STUN blocks a SOUND stun, a resisted
|
|
7
|
+
* breath still teaches its rune - and those were written to pin the bugs they
|
|
8
|
+
* were found by, not the cross product. Converting a 21-case switch over
|
|
9
|
+
* faithful behaviour to a registry buys moddability and nothing else, so the
|
|
10
|
+
* standard is "nothing moved", and only a recording of the producer can say so.
|
|
11
|
+
*
|
|
12
|
+
* WHAT A SCENARIO CAPTURES. project_p is the widest-reaching of the three
|
|
13
|
+
* projection handlers: it damages the pack, drains stats and experience, sets
|
|
14
|
+
* nine timed effects, disenchants worn gear, spends mana and energy, and
|
|
15
|
+
* teleports the player outright. So the snapshot is broad on purpose - every
|
|
16
|
+
* message in order, the extra damage returned, the whole timed array, both stat
|
|
17
|
+
* arrays, exp / mana / energy, where the player ended up, and what is left of
|
|
18
|
+
* the pack and the worn armour.
|
|
19
|
+
*
|
|
20
|
+
* AND THE RNG POSITION. `rngProbe` is one draw taken after the scenario. Two
|
|
21
|
+
* implementations can agree on every visible value while drawing a different
|
|
22
|
+
* NUMBER of randoms, and here that is not hypothetical: FIRE, COLD, DARK,
|
|
23
|
+
* NETHER and POIS all roll `randint0(dam)` and then decide, TIME picks a branch
|
|
24
|
+
* with two draws before doing anything, and POIS's acid sting runs adjust_dam,
|
|
25
|
+
* which evaluates a dice denominator. Every one of those is invisible in the
|
|
26
|
+
* result and diverges the whole game a few turns later.
|
|
27
|
+
*
|
|
28
|
+
* The fixtures are INJECTED (`PlayerSideFixtures`) so this module needs no
|
|
29
|
+
* node:fs and stays importable anywhere; the one copy that reads the disk is
|
|
30
|
+
* `player-side-vectors.fixtures.ts`, shared by the test and the generator so
|
|
31
|
+
* they cannot disagree about what they are measuring.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
import { ELEM, PROJ, TMD } from "../generated/index.js";
|
|
35
|
+
import { loc } from "../loc.js";
|
|
36
|
+
import type { GameState } from "./context.js";
|
|
37
|
+
import type { ProjectionInfo } from "../world/projection.js";
|
|
38
|
+
import type { PlayerProjActor } from "./project-player.js";
|
|
39
|
+
import { makePlayerSideEffects } from "./player-side.js";
|
|
40
|
+
import type { PlayerSideDeps } from "./player-side.js";
|
|
41
|
+
import type { TimedEffect } from "../player/types.js";
|
|
42
|
+
|
|
43
|
+
/** What the recorder needs from the real content pack and the real harness. */
|
|
44
|
+
export interface PlayerSideFixtures {
|
|
45
|
+
/** A fresh game state on a given seed; the same one the game tests use. */
|
|
46
|
+
makeState: (seed: number) => GameState;
|
|
47
|
+
/** The bound player_timed table, so the timed effects are the shipped ones. */
|
|
48
|
+
timed: readonly TimedEffect[];
|
|
49
|
+
/**
|
|
50
|
+
* The bound projection table. POIS's acid sting runs adjust_dam through it,
|
|
51
|
+
* and adjust_dam EVALUATES A DICE DENOMINATOR - so a stubbed table would
|
|
52
|
+
* record a different draw count than the game makes.
|
|
53
|
+
*/
|
|
54
|
+
projections: readonly ProjectionInfo[];
|
|
55
|
+
/** Fill the pack with real kinds that real elements really destroy. */
|
|
56
|
+
fillPack: (state: GameState) => void;
|
|
57
|
+
/**
|
|
58
|
+
* The kind inven_damage really destroys, per element, as the fixture derived
|
|
59
|
+
* it. Exposed so the coverage guard can fail when an element found none -
|
|
60
|
+
* an empty pack would make every ACID row record an untouched pack forever.
|
|
61
|
+
*/
|
|
62
|
+
destroyedByElement: ReadonlyMap<number, unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Fill every weapon and armour slot, optionally with every protective flag
|
|
65
|
+
* project_p reads. Not optional and not one item: minus_ac and
|
|
66
|
+
* disenchant_equipment both pick a random slot BY TYPE and then look for an
|
|
67
|
+
* item in it, so a single suit in the wrong slot is invisible to both.
|
|
68
|
+
*/
|
|
69
|
+
equipArmour: (state: GameState, warded: boolean) => void;
|
|
70
|
+
/** Put a real monster at `grid`; returns its index, or 0 if it could not. */
|
|
71
|
+
addMonster: (state: GameState, grid: ReturnType<typeof loc>) => number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** One recorded scenario: its inputs, and everything observable afterwards. */
|
|
75
|
+
export interface PlayerSideVector {
|
|
76
|
+
/** Stable identity for the row, so a divergence names the case. */
|
|
77
|
+
readonly id: string;
|
|
78
|
+
readonly proj: string;
|
|
79
|
+
readonly dam: number;
|
|
80
|
+
readonly power: number;
|
|
81
|
+
/** "none" | "resist" | "immune": the res_level the actor reports for all. */
|
|
82
|
+
readonly resist: string;
|
|
83
|
+
/** Whether the worn armour carries the protective flags. */
|
|
84
|
+
readonly warded: boolean;
|
|
85
|
+
/** "monster" | "trap": what cave->mon_current and origin.grid resolve to. */
|
|
86
|
+
readonly origin: string;
|
|
87
|
+
readonly seed: number;
|
|
88
|
+
/** The extra damage the handler returned (POIS's acid sting). */
|
|
89
|
+
readonly xtra: number;
|
|
90
|
+
/** Every message, in order. */
|
|
91
|
+
readonly messages: readonly string[];
|
|
92
|
+
/** Non-zero timed effects afterwards, by name, sorted. */
|
|
93
|
+
readonly timed: readonly string[];
|
|
94
|
+
/** p->stat_cur, then p->stat_max: drains show in one or both. */
|
|
95
|
+
readonly statCur: readonly number[];
|
|
96
|
+
readonly statMax: readonly number[];
|
|
97
|
+
readonly exp: number;
|
|
98
|
+
readonly maxExp: number;
|
|
99
|
+
readonly csp: number;
|
|
100
|
+
/** p->energy: NETHER's "Your energy is sapped!" zeroes it. */
|
|
101
|
+
readonly energy: number;
|
|
102
|
+
/** Where the player ended up: GRAVITY, NEXUS and FORCE all move them. */
|
|
103
|
+
readonly grid: readonly [number, number];
|
|
104
|
+
/** The depth teleport_player_level asked for, or null if it did not. */
|
|
105
|
+
readonly levelChangeTo: number | null;
|
|
106
|
+
/** How many times the post-move seam fired (teleports and FORCE's thrust). */
|
|
107
|
+
readonly postMoves: number;
|
|
108
|
+
/** How many stacks remain in the pack, and how many items in total. */
|
|
109
|
+
readonly packStacks: number;
|
|
110
|
+
readonly packItems: number;
|
|
111
|
+
/**
|
|
112
|
+
* The summed to_h + to_d + to_a over EVERY carried and worn object.
|
|
113
|
+
*
|
|
114
|
+
* One number rather than one slot, because the three ways project_p writes
|
|
115
|
+
* enchantment land in different places: disenchant_equipment picks a random
|
|
116
|
+
* worn slot, minus_ac picks a random ARMOUR slot, and inven_damage's damage
|
|
117
|
+
* arm decrements a PACK weapon or suit. Reading slot 0 saw only the first of
|
|
118
|
+
* those, and reported 8 in all 2,304 rows of the first recording.
|
|
119
|
+
*/
|
|
120
|
+
readonly gearEnchant: number;
|
|
121
|
+
/** Object flags the player has LEARNED: every arm here teaches runes. */
|
|
122
|
+
readonly learnedFlags: number;
|
|
123
|
+
/** ONE draw taken after the scenario: catches a changed DRAW COUNT. */
|
|
124
|
+
readonly rngProbe: number;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* The projections worth recording: every arm of the switch, plus three that
|
|
129
|
+
* fall to the empty default. The default group is sampled rather than
|
|
130
|
+
* enumerated because the vectors would then be measuring `PROJ`'s size rather
|
|
131
|
+
* than project_p's behaviour - its membership is asserted separately by the
|
|
132
|
+
* coverage guard in the test.
|
|
133
|
+
*/
|
|
134
|
+
export const VECTOR_PROJECTIONS: readonly (readonly [string, number])[] = [
|
|
135
|
+
["ACID", PROJ.ACID],
|
|
136
|
+
["ELEC", PROJ.ELEC],
|
|
137
|
+
["FIRE", PROJ.FIRE],
|
|
138
|
+
["COLD", PROJ.COLD],
|
|
139
|
+
["POIS", PROJ.POIS],
|
|
140
|
+
["LIGHT", PROJ.LIGHT],
|
|
141
|
+
["DARK", PROJ.DARK],
|
|
142
|
+
["DARK_WEAK", PROJ.DARK_WEAK],
|
|
143
|
+
["SOUND", PROJ.SOUND],
|
|
144
|
+
["SHARD", PROJ.SHARD],
|
|
145
|
+
["NEXUS", PROJ.NEXUS],
|
|
146
|
+
["NETHER", PROJ.NETHER],
|
|
147
|
+
["CHAOS", PROJ.CHAOS],
|
|
148
|
+
["DISEN", PROJ.DISEN],
|
|
149
|
+
["WATER", PROJ.WATER],
|
|
150
|
+
["ICE", PROJ.ICE],
|
|
151
|
+
["GRAVITY", PROJ.GRAVITY],
|
|
152
|
+
["INERTIA", PROJ.INERTIA],
|
|
153
|
+
["FORCE", PROJ.FORCE],
|
|
154
|
+
["TIME", PROJ.TIME],
|
|
155
|
+
["PLASMA", PROJ.PLASMA],
|
|
156
|
+
/* The empty-handler group: no player side effect at all. */
|
|
157
|
+
["METEOR", PROJ.METEOR],
|
|
158
|
+
["MISSILE", PROJ.MISSILE],
|
|
159
|
+
["MANA", PROJ.MANA],
|
|
160
|
+
];
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Damage values. The `randint0(dam) > 500` gates in FIRE, COLD and DARK cannot
|
|
164
|
+
* fire below 501 at all, so a grid that only ran small hits would record the
|
|
165
|
+
* powerful-attack arms as dead code. 5000 clears every threshold in the file.
|
|
166
|
+
*/
|
|
167
|
+
export const VECTOR_DAMAGE: readonly number[] = [10, 5000];
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Monster spell power. The bonus arms gate on >= 60 (POIS), >= 70 (DARK) and
|
|
171
|
+
* >= 80 (FIRE, COLD, NETHER); 0 is below all of them and 80 is above all.
|
|
172
|
+
*/
|
|
173
|
+
export const VECTOR_POWER: readonly number[] = [0, 80];
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* res_level the projection actor reports for EVERY element. 3 is immunity,
|
|
177
|
+
* which is what ACID / ELEC / FIRE / COLD / ICE check before touching the pack;
|
|
178
|
+
* 1 is the plain resist that makes nine handlers bail with "You resist the
|
|
179
|
+
* effect!" - and those early breaks are exactly what a mis-keyed registry would
|
|
180
|
+
* skip.
|
|
181
|
+
*/
|
|
182
|
+
export const VECTOR_RESISTS: readonly (readonly [string, number])[] = [
|
|
183
|
+
["none", 0],
|
|
184
|
+
["resist", 1],
|
|
185
|
+
["immune", 3],
|
|
186
|
+
];
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* The seeds the grid runs.
|
|
190
|
+
*
|
|
191
|
+
* SIX, NOT TWO, and the reason is worth keeping. Seven handlers ignore `power`
|
|
192
|
+
* and NEXUS ignores `dam` as well, so for those the whole rest of the grid
|
|
193
|
+
* collapses onto ONE rng stream per seed - two seeds gave NEXUS four distinct
|
|
194
|
+
* paths and its 1-in-4 teleport-level arm came up empty in all 96 of its rows.
|
|
195
|
+
* A dimension that does not vary the handler's input does not sample it.
|
|
196
|
+
*/
|
|
197
|
+
export const VECTOR_SEEDS: readonly number[] = [1, 7, 16, 29, 43, 61];
|
|
198
|
+
|
|
199
|
+
/** Where a monster-sourced projection comes from: away from the player. */
|
|
200
|
+
const CASTER_GRID = loc(7, 7);
|
|
201
|
+
|
|
202
|
+
/** Name by index for a TMD value, so a vector reads as an effect not a number. */
|
|
203
|
+
function timedName(idx: number): string {
|
|
204
|
+
for (const [name, value] of Object.entries(TMD)) {
|
|
205
|
+
if (value === idx) return name;
|
|
206
|
+
}
|
|
207
|
+
return `TMD_${String(idx)}`;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* A stub projection actor reporting one res_level for every element.
|
|
212
|
+
*
|
|
213
|
+
* FLAT ON PURPOSE. Per-element resist profiles would multiply the grid by the
|
|
214
|
+
* element count to separate handlers that are already separated by `proj`; what
|
|
215
|
+
* the vectors need is that each handler's resisted and unresisted arms are both
|
|
216
|
+
* reached, and one level applied to all elements does that in three rows.
|
|
217
|
+
*/
|
|
218
|
+
function stubActor(level: number, energyRef: { value: number }): PlayerProjActor {
|
|
219
|
+
return {
|
|
220
|
+
resistLevel: () => level,
|
|
221
|
+
get energy(): number {
|
|
222
|
+
return energyRef.value;
|
|
223
|
+
},
|
|
224
|
+
set energy(v: number) {
|
|
225
|
+
energyRef.value = v;
|
|
226
|
+
},
|
|
227
|
+
} as unknown as PlayerProjActor;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Run one scenario and record it.
|
|
232
|
+
*
|
|
233
|
+
* Built fresh from a seeded state each time, so a vector is a function of its
|
|
234
|
+
* own inputs alone - no ordering between rows, which is what lets one `it()`
|
|
235
|
+
* per row report a divergence by name.
|
|
236
|
+
*/
|
|
237
|
+
export function recordPlayerSide(
|
|
238
|
+
fx: PlayerSideFixtures,
|
|
239
|
+
projName: string,
|
|
240
|
+
proj: number,
|
|
241
|
+
dam: number,
|
|
242
|
+
power: number,
|
|
243
|
+
resistName: string,
|
|
244
|
+
resistLevel: number,
|
|
245
|
+
warded: boolean,
|
|
246
|
+
originName: string,
|
|
247
|
+
seed: number,
|
|
248
|
+
): PlayerSideVector {
|
|
249
|
+
const state = fx.makeState(seed);
|
|
250
|
+
const p = state.actor.player;
|
|
251
|
+
|
|
252
|
+
/* A level and an experience total, because four handlers drain experience and
|
|
253
|
+
* a level-1 player with 0 exp records every drain as a no-op. GRAVITY's blink
|
|
254
|
+
* also compares randint1(127) against p->lev. */
|
|
255
|
+
p.lev = 20;
|
|
256
|
+
p.exp = 50_000;
|
|
257
|
+
p.maxExp = 50_000;
|
|
258
|
+
p.msp = 40;
|
|
259
|
+
p.csp = 40;
|
|
260
|
+
/* Stats above the floor, so a drain has somewhere to go. */
|
|
261
|
+
for (let i = 0; i < p.statCur.length; i++) {
|
|
262
|
+
p.statCur[i] = 15;
|
|
263
|
+
p.statMax[i] = 15;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
fx.equipArmour(state, warded);
|
|
267
|
+
fx.fillPack(state);
|
|
268
|
+
|
|
269
|
+
const monsterIdx =
|
|
270
|
+
originName === "monster" ? fx.addMonster(state, CASTER_GRID) : 0;
|
|
271
|
+
|
|
272
|
+
const messages: string[] = [];
|
|
273
|
+
/* state.actor.energy is a live field on the harness actor; the stub reads and
|
|
274
|
+
* writes THROUGH it so NETHER's "Your energy is sapped!" stays observable. */
|
|
275
|
+
const energyRef = { value: 100 };
|
|
276
|
+
state.actor.energy = 100;
|
|
277
|
+
|
|
278
|
+
/* The teleport seams GRAVITY, NEXUS and FORCE reach through. Recorded rather
|
|
279
|
+
* than omitted: `changeLevel` is the ONLY observable half of NEXUS's
|
|
280
|
+
* teleport-level arm - the harness has no session to change level for - and
|
|
281
|
+
* without it that arm looks identical to a no-op. */
|
|
282
|
+
let levelChangeTo: number | null = null;
|
|
283
|
+
let postMoves = 0;
|
|
284
|
+
const deps: PlayerSideDeps = {
|
|
285
|
+
timed: fx.timed,
|
|
286
|
+
actor: stubActor(resistLevel, energyRef),
|
|
287
|
+
projections: fx.projections,
|
|
288
|
+
expDeps: { rng: state.rng },
|
|
289
|
+
lifeDrainPercent: 2,
|
|
290
|
+
teleport: {
|
|
291
|
+
changeLevel: (depth: number) => {
|
|
292
|
+
levelChangeTo = depth;
|
|
293
|
+
},
|
|
294
|
+
onPlayerPostMove: () => {
|
|
295
|
+
postMoves++;
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
msg: (t: string) => messages.push(t),
|
|
299
|
+
};
|
|
300
|
+
const hook = makePlayerSideEffects(state, deps);
|
|
301
|
+
|
|
302
|
+
const xtra = hook({
|
|
303
|
+
origin:
|
|
304
|
+
originName === "monster"
|
|
305
|
+
? {
|
|
306
|
+
isPlayer: false,
|
|
307
|
+
isMonster: true,
|
|
308
|
+
monster: monsterIdx,
|
|
309
|
+
grid: CASTER_GRID,
|
|
310
|
+
killer: "a recorded caster",
|
|
311
|
+
}
|
|
312
|
+
: {
|
|
313
|
+
isPlayer: false,
|
|
314
|
+
isMonster: false,
|
|
315
|
+
isTrap: true,
|
|
316
|
+
/* On the player's OWN grid: FORCE's trap arm reads exactly that,
|
|
317
|
+
* and pushes them in a random direction when it holds. */
|
|
318
|
+
grid: state.actor.grid,
|
|
319
|
+
killer: "a recorded trap",
|
|
320
|
+
},
|
|
321
|
+
r: 0,
|
|
322
|
+
grid: state.actor.grid,
|
|
323
|
+
dam,
|
|
324
|
+
typ: proj,
|
|
325
|
+
power,
|
|
326
|
+
obvious: true,
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
const timedOn: string[] = [];
|
|
330
|
+
for (let i = 0; i < p.timed.length; i++) {
|
|
331
|
+
if ((p.timed[i] ?? 0) > 0) timedOn.push(`${timedName(i)}=${String(p.timed[i])}`);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
let packItems = 0;
|
|
335
|
+
for (const handle of state.gear.pack) {
|
|
336
|
+
packItems += state.gear.store.get(handle)?.number ?? 0;
|
|
337
|
+
}
|
|
338
|
+
let gearEnchant = 0;
|
|
339
|
+
for (const handle of [...state.gear.pack, ...p.equipment]) {
|
|
340
|
+
const obj = state.gear.store.get(handle);
|
|
341
|
+
if (obj) gearEnchant += obj.toH + obj.toD + obj.toA;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
return {
|
|
345
|
+
id:
|
|
346
|
+
`${projName}/dam${String(dam)}/pow${String(power)}/${resistName}` +
|
|
347
|
+
`/${warded ? "warded" : "bare"}/${originName}/seed${String(seed)}`,
|
|
348
|
+
proj: projName,
|
|
349
|
+
dam,
|
|
350
|
+
power,
|
|
351
|
+
resist: resistName,
|
|
352
|
+
warded,
|
|
353
|
+
origin: originName,
|
|
354
|
+
seed,
|
|
355
|
+
xtra,
|
|
356
|
+
messages,
|
|
357
|
+
timed: timedOn.sort(),
|
|
358
|
+
statCur: [...p.statCur],
|
|
359
|
+
statMax: [...p.statMax],
|
|
360
|
+
exp: p.exp,
|
|
361
|
+
maxExp: p.maxExp,
|
|
362
|
+
csp: p.csp,
|
|
363
|
+
energy: state.actor.energy,
|
|
364
|
+
grid: [state.actor.grid.x, state.actor.grid.y],
|
|
365
|
+
levelChangeTo,
|
|
366
|
+
postMoves,
|
|
367
|
+
packStacks: state.gear.pack.length,
|
|
368
|
+
packItems,
|
|
369
|
+
gearEnchant,
|
|
370
|
+
/* Nearly every arm teaches a rune - the sustains, HOLD_LIFE, PROT_STUN -
|
|
371
|
+
* and equip_learn_flag is a real side effect upstream performs whether or
|
|
372
|
+
* not the effect landed. Counting them makes a dropped learn visible. */
|
|
373
|
+
learnedFlags: p.objKnown.flags.count(),
|
|
374
|
+
/* Capped well under Rand_div's 0x10000000 limit. */
|
|
375
|
+
rngProbe: state.rng.randint0(100_000_000),
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/** Every scenario in the grid, in a fixed order. */
|
|
380
|
+
export function recordAllPlayerSide(
|
|
381
|
+
fx: PlayerSideFixtures,
|
|
382
|
+
): PlayerSideVector[] {
|
|
383
|
+
const out: PlayerSideVector[] = [];
|
|
384
|
+
for (const [projName, proj] of VECTOR_PROJECTIONS) {
|
|
385
|
+
for (const dam of VECTOR_DAMAGE) {
|
|
386
|
+
for (const power of VECTOR_POWER) {
|
|
387
|
+
for (const [resistName, resistLevel] of VECTOR_RESISTS) {
|
|
388
|
+
for (const warded of [false, true]) {
|
|
389
|
+
for (const originName of ["monster", "trap"]) {
|
|
390
|
+
for (const seed of VECTOR_SEEDS) {
|
|
391
|
+
out.push(
|
|
392
|
+
recordPlayerSide(
|
|
393
|
+
fx, projName, proj, dam, power, resistName, resistLevel,
|
|
394
|
+
warded, originName, seed,
|
|
395
|
+
),
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return out;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/** The elements whose immunity gates a pack-damage arm, for the coverage guard. */
|
|
408
|
+
export const PACK_DAMAGE_ELEMENTS: readonly number[] = [
|
|
409
|
+
ELEM.ACID,
|
|
410
|
+
ELEM.ELEC,
|
|
411
|
+
ELEM.FIRE,
|
|
412
|
+
ELEM.COLD,
|
|
413
|
+
];
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* The dungeon depth every scenario runs at. Not incidental: the harness builds
|
|
417
|
+
* at depth 0, the TOWN, and teleport_player_level cannot go up from there - so
|
|
418
|
+
* its up/down coin flip, a real RNG draw, never happened on the first pass.
|
|
419
|
+
*/
|
|
420
|
+
export const VECTOR_DEPTH = 5;
|