@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,292 @@
|
|
|
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
|
+
import { ELEM, PROJ, TMD } from "../generated/index.js";
|
|
34
|
+
import { loc } from "../loc.js";
|
|
35
|
+
import { makePlayerSideEffects } from "./player-side.js";
|
|
36
|
+
/**
|
|
37
|
+
* The projections worth recording: every arm of the switch, plus three that
|
|
38
|
+
* fall to the empty default. The default group is sampled rather than
|
|
39
|
+
* enumerated because the vectors would then be measuring `PROJ`'s size rather
|
|
40
|
+
* than project_p's behaviour - its membership is asserted separately by the
|
|
41
|
+
* coverage guard in the test.
|
|
42
|
+
*/
|
|
43
|
+
export const VECTOR_PROJECTIONS = [
|
|
44
|
+
["ACID", PROJ.ACID],
|
|
45
|
+
["ELEC", PROJ.ELEC],
|
|
46
|
+
["FIRE", PROJ.FIRE],
|
|
47
|
+
["COLD", PROJ.COLD],
|
|
48
|
+
["POIS", PROJ.POIS],
|
|
49
|
+
["LIGHT", PROJ.LIGHT],
|
|
50
|
+
["DARK", PROJ.DARK],
|
|
51
|
+
["DARK_WEAK", PROJ.DARK_WEAK],
|
|
52
|
+
["SOUND", PROJ.SOUND],
|
|
53
|
+
["SHARD", PROJ.SHARD],
|
|
54
|
+
["NEXUS", PROJ.NEXUS],
|
|
55
|
+
["NETHER", PROJ.NETHER],
|
|
56
|
+
["CHAOS", PROJ.CHAOS],
|
|
57
|
+
["DISEN", PROJ.DISEN],
|
|
58
|
+
["WATER", PROJ.WATER],
|
|
59
|
+
["ICE", PROJ.ICE],
|
|
60
|
+
["GRAVITY", PROJ.GRAVITY],
|
|
61
|
+
["INERTIA", PROJ.INERTIA],
|
|
62
|
+
["FORCE", PROJ.FORCE],
|
|
63
|
+
["TIME", PROJ.TIME],
|
|
64
|
+
["PLASMA", PROJ.PLASMA],
|
|
65
|
+
/* The empty-handler group: no player side effect at all. */
|
|
66
|
+
["METEOR", PROJ.METEOR],
|
|
67
|
+
["MISSILE", PROJ.MISSILE],
|
|
68
|
+
["MANA", PROJ.MANA],
|
|
69
|
+
];
|
|
70
|
+
/**
|
|
71
|
+
* Damage values. The `randint0(dam) > 500` gates in FIRE, COLD and DARK cannot
|
|
72
|
+
* fire below 501 at all, so a grid that only ran small hits would record the
|
|
73
|
+
* powerful-attack arms as dead code. 5000 clears every threshold in the file.
|
|
74
|
+
*/
|
|
75
|
+
export const VECTOR_DAMAGE = [10, 5000];
|
|
76
|
+
/**
|
|
77
|
+
* Monster spell power. The bonus arms gate on >= 60 (POIS), >= 70 (DARK) and
|
|
78
|
+
* >= 80 (FIRE, COLD, NETHER); 0 is below all of them and 80 is above all.
|
|
79
|
+
*/
|
|
80
|
+
export const VECTOR_POWER = [0, 80];
|
|
81
|
+
/**
|
|
82
|
+
* res_level the projection actor reports for EVERY element. 3 is immunity,
|
|
83
|
+
* which is what ACID / ELEC / FIRE / COLD / ICE check before touching the pack;
|
|
84
|
+
* 1 is the plain resist that makes nine handlers bail with "You resist the
|
|
85
|
+
* effect!" - and those early breaks are exactly what a mis-keyed registry would
|
|
86
|
+
* skip.
|
|
87
|
+
*/
|
|
88
|
+
export const VECTOR_RESISTS = [
|
|
89
|
+
["none", 0],
|
|
90
|
+
["resist", 1],
|
|
91
|
+
["immune", 3],
|
|
92
|
+
];
|
|
93
|
+
/**
|
|
94
|
+
* The seeds the grid runs.
|
|
95
|
+
*
|
|
96
|
+
* SIX, NOT TWO, and the reason is worth keeping. Seven handlers ignore `power`
|
|
97
|
+
* and NEXUS ignores `dam` as well, so for those the whole rest of the grid
|
|
98
|
+
* collapses onto ONE rng stream per seed - two seeds gave NEXUS four distinct
|
|
99
|
+
* paths and its 1-in-4 teleport-level arm came up empty in all 96 of its rows.
|
|
100
|
+
* A dimension that does not vary the handler's input does not sample it.
|
|
101
|
+
*/
|
|
102
|
+
export const VECTOR_SEEDS = [1, 7, 16, 29, 43, 61];
|
|
103
|
+
/** Where a monster-sourced projection comes from: away from the player. */
|
|
104
|
+
const CASTER_GRID = loc(7, 7);
|
|
105
|
+
/** Name by index for a TMD value, so a vector reads as an effect not a number. */
|
|
106
|
+
function timedName(idx) {
|
|
107
|
+
for (const [name, value] of Object.entries(TMD)) {
|
|
108
|
+
if (value === idx)
|
|
109
|
+
return name;
|
|
110
|
+
}
|
|
111
|
+
return `TMD_${String(idx)}`;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A stub projection actor reporting one res_level for every element.
|
|
115
|
+
*
|
|
116
|
+
* FLAT ON PURPOSE. Per-element resist profiles would multiply the grid by the
|
|
117
|
+
* element count to separate handlers that are already separated by `proj`; what
|
|
118
|
+
* the vectors need is that each handler's resisted and unresisted arms are both
|
|
119
|
+
* reached, and one level applied to all elements does that in three rows.
|
|
120
|
+
*/
|
|
121
|
+
function stubActor(level, energyRef) {
|
|
122
|
+
return {
|
|
123
|
+
resistLevel: () => level,
|
|
124
|
+
get energy() {
|
|
125
|
+
return energyRef.value;
|
|
126
|
+
},
|
|
127
|
+
set energy(v) {
|
|
128
|
+
energyRef.value = v;
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Run one scenario and record it.
|
|
134
|
+
*
|
|
135
|
+
* Built fresh from a seeded state each time, so a vector is a function of its
|
|
136
|
+
* own inputs alone - no ordering between rows, which is what lets one `it()`
|
|
137
|
+
* per row report a divergence by name.
|
|
138
|
+
*/
|
|
139
|
+
export function recordPlayerSide(fx, projName, proj, dam, power, resistName, resistLevel, warded, originName, seed) {
|
|
140
|
+
const state = fx.makeState(seed);
|
|
141
|
+
const p = state.actor.player;
|
|
142
|
+
/* A level and an experience total, because four handlers drain experience and
|
|
143
|
+
* a level-1 player with 0 exp records every drain as a no-op. GRAVITY's blink
|
|
144
|
+
* also compares randint1(127) against p->lev. */
|
|
145
|
+
p.lev = 20;
|
|
146
|
+
p.exp = 50_000;
|
|
147
|
+
p.maxExp = 50_000;
|
|
148
|
+
p.msp = 40;
|
|
149
|
+
p.csp = 40;
|
|
150
|
+
/* Stats above the floor, so a drain has somewhere to go. */
|
|
151
|
+
for (let i = 0; i < p.statCur.length; i++) {
|
|
152
|
+
p.statCur[i] = 15;
|
|
153
|
+
p.statMax[i] = 15;
|
|
154
|
+
}
|
|
155
|
+
fx.equipArmour(state, warded);
|
|
156
|
+
fx.fillPack(state);
|
|
157
|
+
const monsterIdx = originName === "monster" ? fx.addMonster(state, CASTER_GRID) : 0;
|
|
158
|
+
const messages = [];
|
|
159
|
+
/* state.actor.energy is a live field on the harness actor; the stub reads and
|
|
160
|
+
* writes THROUGH it so NETHER's "Your energy is sapped!" stays observable. */
|
|
161
|
+
const energyRef = { value: 100 };
|
|
162
|
+
state.actor.energy = 100;
|
|
163
|
+
/* The teleport seams GRAVITY, NEXUS and FORCE reach through. Recorded rather
|
|
164
|
+
* than omitted: `changeLevel` is the ONLY observable half of NEXUS's
|
|
165
|
+
* teleport-level arm - the harness has no session to change level for - and
|
|
166
|
+
* without it that arm looks identical to a no-op. */
|
|
167
|
+
let levelChangeTo = null;
|
|
168
|
+
let postMoves = 0;
|
|
169
|
+
const deps = {
|
|
170
|
+
timed: fx.timed,
|
|
171
|
+
actor: stubActor(resistLevel, energyRef),
|
|
172
|
+
projections: fx.projections,
|
|
173
|
+
expDeps: { rng: state.rng },
|
|
174
|
+
lifeDrainPercent: 2,
|
|
175
|
+
teleport: {
|
|
176
|
+
changeLevel: (depth) => {
|
|
177
|
+
levelChangeTo = depth;
|
|
178
|
+
},
|
|
179
|
+
onPlayerPostMove: () => {
|
|
180
|
+
postMoves++;
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
msg: (t) => messages.push(t),
|
|
184
|
+
};
|
|
185
|
+
const hook = makePlayerSideEffects(state, deps);
|
|
186
|
+
const xtra = hook({
|
|
187
|
+
origin: originName === "monster"
|
|
188
|
+
? {
|
|
189
|
+
isPlayer: false,
|
|
190
|
+
isMonster: true,
|
|
191
|
+
monster: monsterIdx,
|
|
192
|
+
grid: CASTER_GRID,
|
|
193
|
+
killer: "a recorded caster",
|
|
194
|
+
}
|
|
195
|
+
: {
|
|
196
|
+
isPlayer: false,
|
|
197
|
+
isMonster: false,
|
|
198
|
+
isTrap: true,
|
|
199
|
+
/* On the player's OWN grid: FORCE's trap arm reads exactly that,
|
|
200
|
+
* and pushes them in a random direction when it holds. */
|
|
201
|
+
grid: state.actor.grid,
|
|
202
|
+
killer: "a recorded trap",
|
|
203
|
+
},
|
|
204
|
+
r: 0,
|
|
205
|
+
grid: state.actor.grid,
|
|
206
|
+
dam,
|
|
207
|
+
typ: proj,
|
|
208
|
+
power,
|
|
209
|
+
obvious: true,
|
|
210
|
+
});
|
|
211
|
+
const timedOn = [];
|
|
212
|
+
for (let i = 0; i < p.timed.length; i++) {
|
|
213
|
+
if ((p.timed[i] ?? 0) > 0)
|
|
214
|
+
timedOn.push(`${timedName(i)}=${String(p.timed[i])}`);
|
|
215
|
+
}
|
|
216
|
+
let packItems = 0;
|
|
217
|
+
for (const handle of state.gear.pack) {
|
|
218
|
+
packItems += state.gear.store.get(handle)?.number ?? 0;
|
|
219
|
+
}
|
|
220
|
+
let gearEnchant = 0;
|
|
221
|
+
for (const handle of [...state.gear.pack, ...p.equipment]) {
|
|
222
|
+
const obj = state.gear.store.get(handle);
|
|
223
|
+
if (obj)
|
|
224
|
+
gearEnchant += obj.toH + obj.toD + obj.toA;
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
id: `${projName}/dam${String(dam)}/pow${String(power)}/${resistName}` +
|
|
228
|
+
`/${warded ? "warded" : "bare"}/${originName}/seed${String(seed)}`,
|
|
229
|
+
proj: projName,
|
|
230
|
+
dam,
|
|
231
|
+
power,
|
|
232
|
+
resist: resistName,
|
|
233
|
+
warded,
|
|
234
|
+
origin: originName,
|
|
235
|
+
seed,
|
|
236
|
+
xtra,
|
|
237
|
+
messages,
|
|
238
|
+
timed: timedOn.sort(),
|
|
239
|
+
statCur: [...p.statCur],
|
|
240
|
+
statMax: [...p.statMax],
|
|
241
|
+
exp: p.exp,
|
|
242
|
+
maxExp: p.maxExp,
|
|
243
|
+
csp: p.csp,
|
|
244
|
+
energy: state.actor.energy,
|
|
245
|
+
grid: [state.actor.grid.x, state.actor.grid.y],
|
|
246
|
+
levelChangeTo,
|
|
247
|
+
postMoves,
|
|
248
|
+
packStacks: state.gear.pack.length,
|
|
249
|
+
packItems,
|
|
250
|
+
gearEnchant,
|
|
251
|
+
/* Nearly every arm teaches a rune - the sustains, HOLD_LIFE, PROT_STUN -
|
|
252
|
+
* and equip_learn_flag is a real side effect upstream performs whether or
|
|
253
|
+
* not the effect landed. Counting them makes a dropped learn visible. */
|
|
254
|
+
learnedFlags: p.objKnown.flags.count(),
|
|
255
|
+
/* Capped well under Rand_div's 0x10000000 limit. */
|
|
256
|
+
rngProbe: state.rng.randint0(100_000_000),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/** Every scenario in the grid, in a fixed order. */
|
|
260
|
+
export function recordAllPlayerSide(fx) {
|
|
261
|
+
const out = [];
|
|
262
|
+
for (const [projName, proj] of VECTOR_PROJECTIONS) {
|
|
263
|
+
for (const dam of VECTOR_DAMAGE) {
|
|
264
|
+
for (const power of VECTOR_POWER) {
|
|
265
|
+
for (const [resistName, resistLevel] of VECTOR_RESISTS) {
|
|
266
|
+
for (const warded of [false, true]) {
|
|
267
|
+
for (const originName of ["monster", "trap"]) {
|
|
268
|
+
for (const seed of VECTOR_SEEDS) {
|
|
269
|
+
out.push(recordPlayerSide(fx, projName, proj, dam, power, resistName, resistLevel, warded, originName, seed));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return out;
|
|
278
|
+
}
|
|
279
|
+
/** The elements whose immunity gates a pack-damage arm, for the coverage guard. */
|
|
280
|
+
export const PACK_DAMAGE_ELEMENTS = [
|
|
281
|
+
ELEM.ACID,
|
|
282
|
+
ELEM.ELEC,
|
|
283
|
+
ELEM.FIRE,
|
|
284
|
+
ELEM.COLD,
|
|
285
|
+
];
|
|
286
|
+
/**
|
|
287
|
+
* The dungeon depth every scenario runs at. Not incidental: the harness builds
|
|
288
|
+
* at depth 0, the TOWN, and teleport_player_level cannot go up from there - so
|
|
289
|
+
* its up/down coin flip, a real RNG draw, never happened on the first pass.
|
|
290
|
+
*/
|
|
291
|
+
export const VECTOR_DEPTH = 5;
|
|
292
|
+
//# sourceMappingURL=player-side-vectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player-side-vectors.js","sourceRoot":"","sources":["../../src/game/player-side-vectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,11 +22,33 @@
|
|
|
22
22
|
* distinct: drainStat is effect_simple(EF_DRAIN_STAT) (sustain saves with the
|
|
23
23
|
* "You feel very %s..." messages), drainStatsRandom is
|
|
24
24
|
* project_player_drain_stats (no sustain, always "You're not as %s...").
|
|
25
|
+
*
|
|
26
|
+
* THE DISPATCH IS A REGISTRY, as of 2026-08-09. It was a 21-case switch, and
|
|
27
|
+
* the last of the three - project_f's 37 and project_o's 11 were converted the
|
|
28
|
+
* day before, so a mod's projection reached terrain and objects but not the
|
|
29
|
+
* player, which is the half that matters. PLAYER_SIDE_HANDLERS is keyed by
|
|
30
|
+
* projection CODE exactly as the other two are, and `deps.playerHandlers` is
|
|
31
|
+
* the table the game actually dispatches through - supplied by wireGame from
|
|
32
|
+
* the per-game ProjectionHandlerRegistry (game/projection-handlers.ts), which a
|
|
33
|
+
* mod writes one code at a time through "registry:projection".
|
|
34
|
+
*
|
|
35
|
+
* What made this one a real refactor rather than a mechanical lift: the arms
|
|
36
|
+
* read ten helpers built per game, and `incCheck` reads a `currentSource`
|
|
37
|
+
* stamped per PROJECTION. `PlayerSideCtx` is those helpers made explicit, which
|
|
38
|
+
* is what lets the arms be ordinary top-level functions.
|
|
39
|
+
*
|
|
40
|
+
* The 6,912 vectors in player-side-vectors.json were recorded from the SWITCH
|
|
41
|
+
* and are replayed against the table, because the conversion bought moddability
|
|
42
|
+
* and was required to change nothing else - including the number of rng draws,
|
|
43
|
+
* which no visible value would have shown.
|
|
25
44
|
*/
|
|
26
45
|
import type { ProjectionInfo } from "../world/projection.js";
|
|
27
46
|
import type { TimedEffect } from "../player/types.js";
|
|
28
|
-
import type { PlayerIncCheckQueries } from "../player/timed.js";
|
|
47
|
+
import type { PlayerIncCheckHooks, PlayerIncCheckQueries, TimedNotifyQueries } from "../player/timed.js";
|
|
48
|
+
import type { Monster } from "../mon/monster.js";
|
|
49
|
+
import type { Player } from "../player/player.js";
|
|
29
50
|
import type { ExpDeps } from "../player/exp.js";
|
|
51
|
+
import type { Rng } from "../rng.js";
|
|
30
52
|
import type { GameState } from "./context.js";
|
|
31
53
|
import type { PlayerProjActor, ProjectPlayerSideContext } from "./project-player.js";
|
|
32
54
|
import type { TeleportEnv } from "./effect-teleport.js";
|
|
@@ -39,6 +61,92 @@ import type { TeleportEnv } from "./effect-teleport.js";
|
|
|
39
61
|
* the timed check reads the live duration array.
|
|
40
62
|
*/
|
|
41
63
|
export declare function makeIncCheckQueries(state: GameState): PlayerIncCheckQueries;
|
|
64
|
+
/**
|
|
65
|
+
* makeTimedNotifyQueries: the obj_k reads player_set_timed's notify suppression
|
|
66
|
+
* needs (player-timed.c:828-839).
|
|
67
|
+
*
|
|
68
|
+
* "Don't mention effects which already match the known player state" - a
|
|
69
|
+
* temporary resist you are KNOWN to be immune to, or a flag synonym you are
|
|
70
|
+
* KNOWN to have from worn gear. It silences a message and never changes the
|
|
71
|
+
* duration, which is why it went unnoticed: nothing supplied these queries in
|
|
72
|
+
* production, so every such effect announced itself.
|
|
73
|
+
*
|
|
74
|
+
* hasFlagNotTimed is player_of_has_not_timed (player-timed.c:747-763): the
|
|
75
|
+
* player's own flags UNION every equipped object's, deliberately WITHOUT timed
|
|
76
|
+
* effects - that exclusion is the whole point of the predicate.
|
|
77
|
+
*/
|
|
78
|
+
export declare function makeTimedNotifyQueries(state: GameState): TimedNotifyQueries;
|
|
79
|
+
/**
|
|
80
|
+
* makeIncCheckHooks: player_inc_check's SIDE EFFECTS over the live state
|
|
81
|
+
* (player-timed.c:945-953 for object flags, :967 and :985 for resists and
|
|
82
|
+
* vulnerabilities).
|
|
83
|
+
*
|
|
84
|
+
* The two equip-learn calls are UNCONDITIONAL in upstream's non-lore branch -
|
|
85
|
+
* a trap you are immune to, a potion, a monster's breath and a monster's blow
|
|
86
|
+
* all teach the rune the same way. Only update_smart_learn and the "You resist
|
|
87
|
+
* the effect!" line are gated on `cave->mon_current > 0`, which is what
|
|
88
|
+
* `monster` supplies here.
|
|
89
|
+
*
|
|
90
|
+
* Everything below is RNG-free: equipLearnFlag / equipLearnElement walk the
|
|
91
|
+
* worn slots and write knowledge (obj/knowledge.ts:773, :795), and neither they
|
|
92
|
+
* nor playerLearnFlagRune / objectCursesFindFlags draw. That was measured
|
|
93
|
+
* rather than assumed, because supplying these on paths that previously had no
|
|
94
|
+
* hooks would otherwise move the RNG stream under every seeded test.
|
|
95
|
+
*/
|
|
96
|
+
export declare function makeIncCheckHooks(state: GameState, opts?: {
|
|
97
|
+
/** The message sink for "You resist the effect!" (monster sources only). */
|
|
98
|
+
msg?: (text: string) => void;
|
|
99
|
+
/** cave->mon_current: the acting monster, when one is acting. */
|
|
100
|
+
monster?: Monster | null;
|
|
101
|
+
}): PlayerIncCheckHooks;
|
|
102
|
+
/**
|
|
103
|
+
* What one per-projection player handler is handed: the projection being
|
|
104
|
+
* resolved, and the toolkit the arms used to close over.
|
|
105
|
+
*
|
|
106
|
+
* THE TOOLKIT IS THE WHOLE REASON THIS TYPE EXISTS. project_f's and project_o's
|
|
107
|
+
* handlers took (state, grid, dam) and a bag of env, so lifting them to module
|
|
108
|
+
* level was mechanical. project_p's arms read ten helpers built per game -
|
|
109
|
+
* player_inc_timed bound to the timed registry, player_inc_check bound to the
|
|
110
|
+
* live derived state, the two distinct stat drains, the HOLD_LIFE life drain -
|
|
111
|
+
* and one of them, `incCheck`, reads a `currentSource` that is stamped per
|
|
112
|
+
* PROJECTION. Passing those in explicitly is what lets the arms below be
|
|
113
|
+
* ordinary top-level functions, and lets a mod supply its own.
|
|
114
|
+
*/
|
|
115
|
+
export interface PlayerSideCtx {
|
|
116
|
+
readonly state: GameState;
|
|
117
|
+
readonly deps: PlayerSideDeps;
|
|
118
|
+
/** The upstream handler context: origin, grid, typ, power, obvious. */
|
|
119
|
+
readonly proj: ProjectPlayerSideContext;
|
|
120
|
+
/** context->dam, which nine arms scale their effects off. */
|
|
121
|
+
readonly dam: number;
|
|
122
|
+
/** Monster spell power: the >= 60 / 70 / 80 gates on the bonus arms. */
|
|
123
|
+
readonly power: number;
|
|
124
|
+
readonly rng: Rng;
|
|
125
|
+
/** The player, so an arm does not spell out state.actor.player every line. */
|
|
126
|
+
p(): Player;
|
|
127
|
+
msg(text: string): void;
|
|
128
|
+
/** player_inc_timed through the bound registry. */
|
|
129
|
+
incTimed(idx: number, v: number, check: boolean): boolean;
|
|
130
|
+
/** player_inc_check as a pure predicate, for the pre-message resist test. */
|
|
131
|
+
incCheck(idx: number): boolean;
|
|
132
|
+
/** el_info[elem].res_level === 3. */
|
|
133
|
+
isImmune(elem: number): boolean;
|
|
134
|
+
/** el_info[elem].res_level > 0. */
|
|
135
|
+
resists(elem: number): boolean;
|
|
136
|
+
/** effect_simple(EF_DRAIN_STAT): the sustain saves it. */
|
|
137
|
+
drainStat(stat: number): void;
|
|
138
|
+
/** project_player_drain_stats(num): no sustain, always the message. */
|
|
139
|
+
drainStatsRandom(num: number): void;
|
|
140
|
+
/** Experience drain with the HOLD_LIFE gate. */
|
|
141
|
+
drainLife(amount: number, text: string): void;
|
|
142
|
+
/**
|
|
143
|
+
* Extra damage applied after damage reduction. Mutable and written in place,
|
|
144
|
+
* exactly as `ProjectObjCtx.out` is - POIS's acid sting is the only writer.
|
|
145
|
+
*/
|
|
146
|
+
xtra: number;
|
|
147
|
+
}
|
|
148
|
+
/** One projection's side effects on the player. Writes `ctx.xtra` if any. */
|
|
149
|
+
export type PlayerSideHandler = (ctx: PlayerSideCtx) => void;
|
|
42
150
|
/** Everything the side-effect handlers need beyond the GameState. */
|
|
43
151
|
export interface PlayerSideDeps {
|
|
44
152
|
/** The bound timed-effect registry (players.timed), TMD-indexed. */
|
|
@@ -53,7 +161,27 @@ export interface PlayerSideDeps {
|
|
|
53
161
|
lifeDrainPercent: number;
|
|
54
162
|
/** The teleport seams (no-teleport curse, post-move) for GRAVITY's blink. */
|
|
55
163
|
teleport?: TeleportEnv;
|
|
164
|
+
/**
|
|
165
|
+
* The player-handler table to dispatch through, defaulting to
|
|
166
|
+
* PLAYER_SIDE_HANDLERS. Supplied by wireGame from
|
|
167
|
+
* `GameState.projectionHandlers`, by identity, exactly as `featHandlers` and
|
|
168
|
+
* `objHandlers` are - see game/projection-handlers.ts.
|
|
169
|
+
*/
|
|
170
|
+
playerHandlers?: ReadonlyMap<string, PlayerSideHandler>;
|
|
56
171
|
msg?(text: string): void;
|
|
57
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* project_player_handler_f[]: the per-projection player side effects, keyed by
|
|
175
|
+
* projection CODE.
|
|
176
|
+
*
|
|
177
|
+
* KEYED BY CODE, NOT BY PROJ VALUE, and the same way project_f's and
|
|
178
|
+
* project_o's tables are. A mod's own projection is appended to the bound
|
|
179
|
+
* projection table at a slot core never compiled in, so a numeric key would put
|
|
180
|
+
* its handler somewhere nothing looks; the code is the identity that survives.
|
|
181
|
+
*
|
|
182
|
+
* A projection with NO entry does nothing to the player, which is upstream's
|
|
183
|
+
* empty handler and is why there is no default arm here to write.
|
|
184
|
+
*/
|
|
185
|
+
export declare const PLAYER_SIDE_HANDLERS: ReadonlyMap<string, PlayerSideHandler>;
|
|
58
186
|
export declare function makePlayerSideEffects(state: GameState, deps: PlayerSideDeps): (ctx: ProjectPlayerSideContext) => number;
|
|
59
187
|
//# sourceMappingURL=player-side.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-side.d.ts","sourceRoot":"","sources":["../../src/game/player-side.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"player-side.d.ts","sourceRoot":"","sources":["../../src/game/player-side.ts"],"names":[],"mappings":"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"}
|