@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
package/dist/obj/power.js
CHANGED
|
@@ -5,8 +5,18 @@
|
|
|
5
5
|
* (object_value_real) and randart balance.
|
|
6
6
|
*
|
|
7
7
|
* Faithful notes / deferrals (ledgered in parity/ledger/obj-power.yaml):
|
|
8
|
-
* - The upstream `verbose`/`log_file` logging
|
|
9
|
-
*
|
|
8
|
+
* - The upstream `verbose`/`log_file` logging IS ported (PORT_TODO 5.5). All 59
|
|
9
|
+
* `log_obj` sites narrate into obj/randart-log.ts's sink, which is a
|
|
10
|
+
* module-level static exactly as upstream's `object_log` is - NULL for the
|
|
11
|
+
* whole game except inside do_randart, so objectPower on the item-pricing
|
|
12
|
+
* path pays nothing for it. object_power's signature stays (reg, obj): the
|
|
13
|
+
* `log_file` argument is what SETS that static in the C, and there is only
|
|
14
|
+
* ever one log. `verbose` is likewise not a parameter here - it gates four
|
|
15
|
+
* lines in slay_power, every randart evaluation passes it, and nothing else
|
|
16
|
+
* calls slayPower with a log open, so an open log is the flag.
|
|
17
|
+
* This note used to say the logging was dropped "because it never affects
|
|
18
|
+
* the returned power". That is true, and it was never the question: the
|
|
19
|
+
* maintainer's disposition is pursue parity.
|
|
10
20
|
* - Every `wield_slot(obj) == slot_by_name(player, "shooting")` test in
|
|
11
21
|
* upstream is exactly `obj->tval == TV_BOW` for the standard body (only a bow
|
|
12
22
|
* maps to the shooting slot), so it is ported as tvalIsLauncher(obj.tval).
|
|
@@ -18,6 +28,7 @@
|
|
|
18
28
|
* a bare curse template (curse->obj, which has no kind/ac/dd/ds/brands/slays)
|
|
19
29
|
* can be valued; a curse template is adapted by cursePowerObject.
|
|
20
30
|
*/
|
|
31
|
+
import { randartLog, randartLogOpen, randartLogf } from "./randart-log.js";
|
|
21
32
|
import { KF, OBJ_MOD, OF, TV } from "../generated/index.js";
|
|
22
33
|
import { addGuardi, INT_MAX, INT_MIN, subGuardi } from "../guard.js";
|
|
23
34
|
import { applyCurseAttributes, objectWeightOne, tvalIsAmmo, tvalIsJewelry, tvalIsLauncher, tvalIsMeleeWeapon, } from "./object.js";
|
|
@@ -57,31 +68,31 @@ const ARCHERY = [
|
|
|
57
68
|
{ ammoDam: 14, launchDam: 9, launchMult: 7 }, // bolt
|
|
58
69
|
];
|
|
59
70
|
const FLAG_SETS = [
|
|
60
|
-
{ type: OFT.SUST, factor: 1, bonus: 10, size: 5 },
|
|
61
|
-
{ type: OFT.PROT, factor: 3, bonus: 15, size: 4 },
|
|
62
|
-
{ type: OFT.MISC, factor: 1, bonus: 25, size: 8 },
|
|
71
|
+
{ type: OFT.SUST, factor: 1, bonus: 10, size: 5, desc: "sustains" },
|
|
72
|
+
{ type: OFT.PROT, factor: 3, bonus: 15, size: 4, desc: "protections" },
|
|
73
|
+
{ type: OFT.MISC, factor: 1, bonus: 25, size: 8, desc: "misc abilities" },
|
|
63
74
|
];
|
|
64
75
|
const T_LRES = 0;
|
|
65
76
|
const T_HRES = 1;
|
|
66
77
|
const ELEMENT_SETS = [
|
|
67
|
-
{ type: T_LRES, resLevel: 3, factor: 6, bonus: INHIBIT_POWER, size: 4 },
|
|
68
|
-
{ type: T_LRES, resLevel: 1, factor: 1, bonus: 10, size: 4 },
|
|
69
|
-
{ type: T_HRES, resLevel: 1, factor: 2, bonus: 10, size: 9 },
|
|
78
|
+
{ type: T_LRES, resLevel: 3, factor: 6, bonus: INHIBIT_POWER, size: 4, desc: "immunities" },
|
|
79
|
+
{ type: T_LRES, resLevel: 1, factor: 1, bonus: 10, size: 4, desc: "low resists" },
|
|
80
|
+
{ type: T_HRES, resLevel: 1, factor: 2, bonus: 10, size: 9, desc: "high resists" },
|
|
70
81
|
];
|
|
71
82
|
const EL_POWERS = [
|
|
72
|
-
{ type: T_LRES, ignorePower: 3, vulnPower: -6, resPower: 5, imPower: 38 },
|
|
73
|
-
{ type: T_LRES, ignorePower: 1, vulnPower: -6, resPower: 6, imPower: 35 },
|
|
74
|
-
{ type: T_LRES, ignorePower: 3, vulnPower: -6, resPower: 6, imPower: 40 },
|
|
75
|
-
{ type: T_LRES, ignorePower: 1, vulnPower: -6, resPower: 6, imPower: 37 },
|
|
76
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 28, imPower: 0 },
|
|
77
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 6, imPower: 0 },
|
|
78
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 16, imPower: 0 },
|
|
79
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 14, imPower: 0 },
|
|
80
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 8, imPower: 0 },
|
|
81
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 15, imPower: 0 },
|
|
82
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
83
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
84
|
-
{ type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
83
|
+
{ name: "acid", type: T_LRES, ignorePower: 3, vulnPower: -6, resPower: 5, imPower: 38 },
|
|
84
|
+
{ name: "electricity", type: T_LRES, ignorePower: 1, vulnPower: -6, resPower: 6, imPower: 35 },
|
|
85
|
+
{ name: "fire", type: T_LRES, ignorePower: 3, vulnPower: -6, resPower: 6, imPower: 40 },
|
|
86
|
+
{ name: "cold", type: T_LRES, ignorePower: 1, vulnPower: -6, resPower: 6, imPower: 37 },
|
|
87
|
+
{ name: "poison", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 28, imPower: 0 },
|
|
88
|
+
{ name: "light", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 6, imPower: 0 },
|
|
89
|
+
{ name: "dark", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 16, imPower: 0 },
|
|
90
|
+
{ name: "sound", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 14, imPower: 0 },
|
|
91
|
+
{ name: "shards", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 8, imPower: 0 },
|
|
92
|
+
{ name: "nexus", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 15, imPower: 0 },
|
|
93
|
+
{ name: "nether", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
94
|
+
{ name: "chaos", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
95
|
+
{ name: "disenchantment", type: T_HRES, ignorePower: 0, vulnPower: 0, resPower: 20, imPower: 0 },
|
|
85
96
|
];
|
|
86
97
|
/** Boost ratings for combinations of ability bonuses (index bonus/10). */
|
|
87
98
|
const ABILITY_POWER = [
|
|
@@ -133,15 +144,23 @@ function powerClone(obj) {
|
|
|
133
144
|
/* Property lookup (obj-properties.c L24) */
|
|
134
145
|
/* ------------------------------------------------------------------ */
|
|
135
146
|
/**
|
|
136
|
-
* lookup_obj_property:
|
|
137
|
-
*
|
|
147
|
+
* lookup_obj_property (obj-properties.c:196) over a bare property table: the
|
|
148
|
+
* property whose type and stored index match, PLUS upstream's "special case -
|
|
149
|
+
* stats count as mods" (:207), which is the half that is easy to leave out and
|
|
150
|
+
* costs a NAME when you do.
|
|
151
|
+
*
|
|
152
|
+
* THE ONE IMPLEMENTATION. player/shape-lore.ts had a second copy that omitted
|
|
153
|
+
* the special case, so every shape's stat line rendered as "Adds -3 to ." with
|
|
154
|
+
* an empty name - a screen-visible blank that the copy with the special case
|
|
155
|
+
* could never have produced. Anything needing this lookup calls here.
|
|
138
156
|
*/
|
|
139
|
-
export function
|
|
140
|
-
for (const prop of
|
|
157
|
+
export function lookupObjPropertyIn(properties, type, index) {
|
|
158
|
+
for (const prop of properties) {
|
|
141
159
|
if (!prop)
|
|
142
160
|
continue;
|
|
143
161
|
if (prop.type === type && prop.propIndex === index)
|
|
144
162
|
return prop;
|
|
163
|
+
/* Special case - stats count as mods (obj-properties.c:207). */
|
|
145
164
|
if (type === OBJ_PROPERTY.MOD &&
|
|
146
165
|
prop.type === OBJ_PROPERTY.STAT &&
|
|
147
166
|
prop.propIndex === index) {
|
|
@@ -150,21 +169,32 @@ export function lookupObjProperty(reg, type, index) {
|
|
|
150
169
|
}
|
|
151
170
|
return null;
|
|
152
171
|
}
|
|
172
|
+
/** lookup_obj_property against an ObjRegistry's table. */
|
|
173
|
+
export function lookupObjProperty(reg, type, index) {
|
|
174
|
+
return lookupObjPropertyIn(reg.properties, type, index);
|
|
175
|
+
}
|
|
153
176
|
/* ------------------------------------------------------------------ */
|
|
154
177
|
/* Power helper ratings (obj-power.c) */
|
|
155
178
|
/* ------------------------------------------------------------------ */
|
|
156
179
|
function bowMultiplier(obj) {
|
|
157
180
|
if (obj.tval !== TV.BOW)
|
|
158
181
|
return 1;
|
|
159
|
-
|
|
182
|
+
const mult = obj.pval;
|
|
183
|
+
randartLogf(() => `Base mult for this weapon is ${mult}\n`);
|
|
184
|
+
return mult;
|
|
160
185
|
}
|
|
161
186
|
function toDamagePower(obj) {
|
|
162
187
|
let p = Math.trunc((obj.toD * DAMAGE_POWER) / 2);
|
|
188
|
+
if (p)
|
|
189
|
+
randartLogf(() => `${p} power from to_dam\n`);
|
|
163
190
|
/* Add a second lot of damage power for non-weapons. */
|
|
164
191
|
if (!tvalIsLauncher(obj.tval) &&
|
|
165
192
|
!tvalIsMeleeWeapon(obj.tval) &&
|
|
166
193
|
!tvalIsAmmo(obj.tval)) {
|
|
167
|
-
|
|
194
|
+
const q = obj.toD * DAMAGE_POWER;
|
|
195
|
+
p += q;
|
|
196
|
+
if (q)
|
|
197
|
+
randartLogf(() => `Add ${q} from non-weapon to_dam, total ${p}\n`);
|
|
168
198
|
}
|
|
169
199
|
return p;
|
|
170
200
|
}
|
|
@@ -172,6 +202,9 @@ function damageDicePower(obj) {
|
|
|
172
202
|
let dice = 0;
|
|
173
203
|
if (tvalIsMeleeWeapon(obj.tval) || tvalIsAmmo(obj.tval)) {
|
|
174
204
|
dice = Math.trunc((obj.dd * (obj.ds + 1) * DAMAGE_POWER) / 4);
|
|
205
|
+
/* No newline, deliberately: object_power continues the line with
|
|
206
|
+
* "total is %d" once damage_dice_power returns (obj-power.c L1017). */
|
|
207
|
+
randartLogf(() => `Add ${dice} power for damage dice, `);
|
|
175
208
|
}
|
|
176
209
|
else if (!tvalIsLauncher(obj.tval)) {
|
|
177
210
|
/* Power boost for nonweapons with combat flags. */
|
|
@@ -181,11 +214,12 @@ function damageDicePower(obj) {
|
|
|
181
214
|
(obj.modifiers[OBJ_MOD.SHOTS] ?? 0) > 0 ||
|
|
182
215
|
(obj.modifiers[OBJ_MOD.MIGHT] ?? 0) > 0) {
|
|
183
216
|
dice = WEAP_DAMAGE * DAMAGE_POWER;
|
|
217
|
+
randartLogf(() => `Add ${dice} power for non-weapon combat bonuses, `);
|
|
184
218
|
}
|
|
185
219
|
}
|
|
186
220
|
return dice;
|
|
187
221
|
}
|
|
188
|
-
function ammoDamagePower(obj) {
|
|
222
|
+
function ammoDamagePower(obj, p) {
|
|
189
223
|
if (!tvalIsLauncher(obj.tval))
|
|
190
224
|
return 0;
|
|
191
225
|
let launcher = -1;
|
|
@@ -198,7 +232,11 @@ function ammoDamagePower(obj) {
|
|
|
198
232
|
launcher = 2;
|
|
199
233
|
if (launcher === -1)
|
|
200
234
|
return 0;
|
|
201
|
-
|
|
235
|
+
const q = Math.trunc((ARCHERY[launcher].ammoDam * DAMAGE_POWER) / 2);
|
|
236
|
+
/* Logs p + q, the running total, not the return value - which is why this
|
|
237
|
+
* function takes p at all (obj-power.c L239). */
|
|
238
|
+
randartLogf(() => `Adding ${q} power from ammo, total is ${p + q}\n`);
|
|
239
|
+
return q;
|
|
202
240
|
}
|
|
203
241
|
function launcherAmmoDamagePower(obj, p) {
|
|
204
242
|
if (!tvalIsAmmo(obj.tval))
|
|
@@ -212,37 +250,50 @@ function launcherAmmoDamagePower(obj, p) {
|
|
|
212
250
|
if (obj.ego)
|
|
213
251
|
p += Math.trunc((a.launchDam * DAMAGE_POWER) / 2);
|
|
214
252
|
p = Math.trunc((p * a.launchMult) / (2 * MAX_BLOWS));
|
|
253
|
+
randartLogf(() => `After multiplying ammo and rescaling, power is ${p}\n`);
|
|
215
254
|
return p;
|
|
216
255
|
}
|
|
217
256
|
function extraBlowsPower(obj, p) {
|
|
218
257
|
const blows = obj.modifiers[OBJ_MOD.BLOWS] ?? 0;
|
|
219
258
|
if (blows === 0)
|
|
220
259
|
return p;
|
|
221
|
-
|
|
260
|
+
const before = p;
|
|
261
|
+
if (blows >= INHIBIT_BLOWS) {
|
|
262
|
+
randartLog(`INHIBITING - too many extra blows - quitting\n`);
|
|
222
263
|
return p + INHIBIT_POWER;
|
|
264
|
+
}
|
|
223
265
|
p = Math.trunc((p * (MAX_BLOWS + blows)) / MAX_BLOWS);
|
|
224
266
|
/* Add boost for assumed off-weapon damage. */
|
|
225
267
|
p += Math.trunc((NONWEAP_DAMAGE * blows * DAMAGE_POWER) / 2);
|
|
268
|
+
randartLogf(() => `Add ${p - before} power for extra blows, total is ${p}\n`);
|
|
226
269
|
return p;
|
|
227
270
|
}
|
|
228
271
|
function extraShotsPower(obj, p) {
|
|
229
272
|
const shots = obj.modifiers[OBJ_MOD.SHOTS] ?? 0;
|
|
230
273
|
if (shots === 0)
|
|
231
274
|
return p;
|
|
232
|
-
if (shots >= INHIBIT_SHOTS)
|
|
275
|
+
if (shots >= INHIBIT_SHOTS) {
|
|
276
|
+
randartLog(`INHIBITING - too many extra shots - quitting\n`);
|
|
233
277
|
return p + INHIBIT_POWER;
|
|
278
|
+
}
|
|
234
279
|
if (shots > 0) {
|
|
235
280
|
p *= 10 + shots;
|
|
236
281
|
p = Math.trunc(p / 10);
|
|
282
|
+
/* "%d%%" is a literal percent sign in the C. */
|
|
283
|
+
randartLogf(() => `Adding ${10 * shots}% power for extra shots, total is ${p}\n`);
|
|
237
284
|
}
|
|
238
285
|
return p;
|
|
239
286
|
}
|
|
240
287
|
function extraMightPower(obj, p, mult) {
|
|
241
288
|
const might = obj.modifiers[OBJ_MOD.MIGHT] ?? 0;
|
|
242
|
-
if (might >= INHIBIT_MIGHT)
|
|
289
|
+
if (might >= INHIBIT_MIGHT) {
|
|
290
|
+
randartLog(`INHIBITING - too much extra might - quitting\n`);
|
|
243
291
|
return p + INHIBIT_POWER;
|
|
292
|
+
}
|
|
244
293
|
mult += might;
|
|
294
|
+
randartLogf(() => `Mult after extra might is ${mult}\n`);
|
|
245
295
|
p *= mult;
|
|
296
|
+
randartLogf(() => `After multiplying power for might, total is ${p}\n`);
|
|
246
297
|
return p;
|
|
247
298
|
}
|
|
248
299
|
function slayPower(reg, obj, p, dicePwr) {
|
|
@@ -275,45 +326,88 @@ function slayPower(reg, obj, p, dicePwr) {
|
|
|
275
326
|
}
|
|
276
327
|
if (numSlays + numBrands + numKills === 0)
|
|
277
328
|
return p;
|
|
329
|
+
/* The `verbose` half (obj-power.c L370-393). Upstream threads a bool from
|
|
330
|
+
* object_power's caller purely to gate these four lines; every randart
|
|
331
|
+
* evaluation passes it, and nothing else in the port calls slayPower with a
|
|
332
|
+
* log open, so an open log IS the verbose flag here. */
|
|
333
|
+
if (randartLogOpen()) {
|
|
334
|
+
randartLog(`Slay and brands: `);
|
|
335
|
+
if (obj.brands) {
|
|
336
|
+
for (let i = 1; i < reg.brands.length; i++) {
|
|
337
|
+
if (obj.brands[i]) {
|
|
338
|
+
const b = reg.brands[i];
|
|
339
|
+
randartLog(`${b.name}x${b.multiplier} `);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (obj.slays) {
|
|
344
|
+
for (let i = 1; i < reg.slays.length; i++) {
|
|
345
|
+
if (obj.slays[i]) {
|
|
346
|
+
const sl = reg.slays[i];
|
|
347
|
+
randartLog(`${sl.name}x${sl.multiplier} `);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
randartLog(`\nbest power is : ${bestPower}\n`);
|
|
352
|
+
}
|
|
278
353
|
let q = Math.trunc((dicePwr * dicePwr * (bestPower - 100)) / 2500);
|
|
279
354
|
p += q;
|
|
355
|
+
randartLogf(() => `Add ${q} for slay power, total is ${p}\n`);
|
|
280
356
|
if (numSlays > 1) {
|
|
281
357
|
q = Math.trunc((numSlays * numSlays * dicePwr) / (DAMAGE_POWER * 5));
|
|
282
358
|
p += q;
|
|
359
|
+
randartLogf(() => `Add ${q} power for multiple slays, total is ${p}\n`);
|
|
283
360
|
}
|
|
284
361
|
if (numBrands > 1) {
|
|
285
362
|
q = Math.trunc((2 * numBrands * numBrands * dicePwr) / (DAMAGE_POWER * 5));
|
|
286
363
|
p += q;
|
|
364
|
+
randartLogf(() => `Add ${q} power for multiple brands, total is ${p}\n`);
|
|
287
365
|
}
|
|
288
366
|
if (numSlays && numBrands) {
|
|
289
367
|
q = Math.trunc((numSlays * numBrands * dicePwr) / (DAMAGE_POWER * 5));
|
|
290
368
|
p += q;
|
|
369
|
+
randartLogf(() => `Add ${q} power for slay and brand, total is ${p}\n`);
|
|
291
370
|
}
|
|
292
371
|
if (numKills > 1) {
|
|
293
372
|
q = Math.trunc((3 * numKills * numKills * dicePwr) / (DAMAGE_POWER * 5));
|
|
294
373
|
p += q;
|
|
374
|
+
randartLogf(() => `Add ${q} power for multiple kills, total is ${p}\n`);
|
|
295
375
|
}
|
|
296
|
-
if (numSlays === 8)
|
|
376
|
+
if (numSlays === 8) {
|
|
297
377
|
p += 10;
|
|
298
|
-
|
|
378
|
+
randartLogf(() => `Add 10 power for full set of slays, total is ${p}\n`);
|
|
379
|
+
}
|
|
380
|
+
if (numBrands === 5) {
|
|
299
381
|
p += 20;
|
|
300
|
-
|
|
382
|
+
randartLogf(() => `Add 20 power for full set of brands, total is ${p}\n`);
|
|
383
|
+
}
|
|
384
|
+
if (numKills === 3) {
|
|
301
385
|
p += 20;
|
|
386
|
+
randartLogf(() => `Add 20 power for full set of kills, total is ${p}\n`);
|
|
387
|
+
}
|
|
302
388
|
return p;
|
|
303
389
|
}
|
|
304
390
|
function rescaleBowPower(obj, p) {
|
|
305
|
-
if (tvalIsLauncher(obj.tval))
|
|
391
|
+
if (tvalIsLauncher(obj.tval)) {
|
|
306
392
|
p = Math.trunc(p / MAX_BLOWS);
|
|
393
|
+
randartLogf(() => `Rescaling bow power, total is ${p}\n`);
|
|
394
|
+
}
|
|
307
395
|
return p;
|
|
308
396
|
}
|
|
309
397
|
function toHitPower(obj, p) {
|
|
310
|
-
|
|
398
|
+
const q = Math.trunc((obj.toH * TO_HIT_POWER) / 2);
|
|
399
|
+
p += q;
|
|
400
|
+
/* Gated on the TOTAL being non-zero, not the addend (obj-power.c L458). */
|
|
401
|
+
if (p)
|
|
402
|
+
randartLogf(() => `Add ${q} power for to hit, total is ${p}\n`);
|
|
403
|
+
return p;
|
|
311
404
|
}
|
|
312
405
|
function acPower(reg, obj, p) {
|
|
313
406
|
if (obj.ac) {
|
|
314
407
|
const weight = objectWeightOne(obj, reg.curses);
|
|
315
408
|
p += BASE_ARMOUR_POWER;
|
|
316
409
|
let q = Math.trunc((obj.ac * BASE_AC_POWER) / 2);
|
|
410
|
+
randartLogf(() => `Adding ${q} power for base AC value\n`);
|
|
317
411
|
if (weight > 0) {
|
|
318
412
|
let i = Math.trunc((750 * (obj.ac + obj.toA)) / weight);
|
|
319
413
|
/* Avoid overpricing Elven Cloaks. */
|
|
@@ -327,26 +421,37 @@ function acPower(reg, obj, p) {
|
|
|
327
421
|
q *= 5;
|
|
328
422
|
}
|
|
329
423
|
p += q;
|
|
424
|
+
randartLogf(() => `Add ${q} power for AC per unit weight, now ${p}\n`);
|
|
330
425
|
}
|
|
331
426
|
return p;
|
|
332
427
|
}
|
|
333
428
|
function toAcPower(obj, p) {
|
|
334
429
|
if (obj.toA === 0)
|
|
335
430
|
return p;
|
|
336
|
-
|
|
431
|
+
let q = Math.trunc((obj.toA * TO_AC_POWER) / 2);
|
|
432
|
+
p += q;
|
|
433
|
+
randartLogf(() => `Add ${q} power for to_ac of ${obj.toA}, total is ${p}\n`);
|
|
337
434
|
if (obj.toA > HIGH_TO_AC) {
|
|
338
|
-
|
|
435
|
+
q = (obj.toA - (HIGH_TO_AC - 1)) * TO_AC_POWER;
|
|
436
|
+
p += q;
|
|
437
|
+
randartLogf(() => `Add ${q} power for high to_ac, total is ${p}\n`);
|
|
339
438
|
}
|
|
340
439
|
if (obj.toA > VERYHIGH_TO_AC) {
|
|
341
|
-
|
|
440
|
+
q = (obj.toA - (VERYHIGH_TO_AC - 1)) * TO_AC_POWER * 2;
|
|
441
|
+
p += q;
|
|
442
|
+
randartLogf(() => `Add ${q} power for very high to_ac, total is ${p}\n`);
|
|
342
443
|
}
|
|
343
|
-
if (obj.toA >= INHIBIT_AC)
|
|
444
|
+
if (obj.toA >= INHIBIT_AC) {
|
|
344
445
|
p += INHIBIT_POWER;
|
|
446
|
+
randartLog(`INHIBITING: AC bonus too high\n`);
|
|
447
|
+
}
|
|
345
448
|
return p;
|
|
346
449
|
}
|
|
347
450
|
function jewelryPower(obj, p) {
|
|
348
|
-
if (tvalIsJewelry(obj.tval))
|
|
451
|
+
if (tvalIsJewelry(obj.tval)) {
|
|
349
452
|
p += BASE_JEWELRY_POWER;
|
|
453
|
+
randartLogf(() => `Adding ${BASE_JEWELRY_POWER} power for jewelry, total is ${p}\n`);
|
|
454
|
+
}
|
|
350
455
|
return p;
|
|
351
456
|
}
|
|
352
457
|
function modifierPower(reg, obj, p) {
|
|
@@ -358,10 +463,15 @@ function modifierPower(reg, obj, p) {
|
|
|
358
463
|
const k = obj.modifiers[i] ?? 0;
|
|
359
464
|
extraStatBonus += k * mod.mult;
|
|
360
465
|
if (mod.power) {
|
|
361
|
-
|
|
466
|
+
const q = k * mod.power * (mod.typeMult[obj.tval] ?? 1);
|
|
467
|
+
p += q;
|
|
468
|
+
if (q) {
|
|
469
|
+
randartLogf(() => `Add ${q} power for ${k} ${mod.name}, total is ${p}\n`);
|
|
470
|
+
}
|
|
362
471
|
}
|
|
363
472
|
}
|
|
364
473
|
if (extraStatBonus > 249) {
|
|
474
|
+
randartLogf(() => `Inhibiting - Total ability bonus of ${extraStatBonus} is too high\n`);
|
|
365
475
|
p += INHIBIT_POWER;
|
|
366
476
|
}
|
|
367
477
|
else if (extraStatBonus > 0) {
|
|
@@ -369,6 +479,7 @@ function modifierPower(reg, obj, p) {
|
|
|
369
479
|
if (!q)
|
|
370
480
|
return p;
|
|
371
481
|
p += q;
|
|
482
|
+
randartLogf(() => `Add ${q} power for modifier total of ${extraStatBonus}, total is ${p}\n`);
|
|
372
483
|
}
|
|
373
484
|
return p;
|
|
374
485
|
}
|
|
@@ -380,7 +491,9 @@ function flagsPower(reg, obj, p) {
|
|
|
380
491
|
if (!flag)
|
|
381
492
|
continue;
|
|
382
493
|
if (flag.power) {
|
|
383
|
-
|
|
494
|
+
const q = flag.power * (flag.typeMult[obj.tval] ?? 1);
|
|
495
|
+
p += q;
|
|
496
|
+
randartLogf(() => `Add ${q} power for ${flag.name}, total is ${p}\n`);
|
|
384
497
|
}
|
|
385
498
|
for (let j = 0; j < FLAG_SETS.length; j++) {
|
|
386
499
|
if (FLAG_SETS[j].type === flag.subtype)
|
|
@@ -390,10 +503,16 @@ function flagsPower(reg, obj, p) {
|
|
|
390
503
|
for (let i = 0; i < FLAG_SETS.length; i++) {
|
|
391
504
|
const set = FLAG_SETS[i];
|
|
392
505
|
const count = counts[i];
|
|
393
|
-
if (count > 1)
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
506
|
+
if (count > 1) {
|
|
507
|
+
const q = set.factor * count * count;
|
|
508
|
+
p += q;
|
|
509
|
+
randartLogf(() => `Add ${q} power for multiple ${set.desc}, total is ${p}\n`);
|
|
510
|
+
}
|
|
511
|
+
if (count === set.size) {
|
|
512
|
+
const q = set.bonus;
|
|
513
|
+
p += q;
|
|
514
|
+
randartLogf(() => `Add ${q} power for full set of ${set.desc}, total is ${p}\n`);
|
|
515
|
+
}
|
|
397
516
|
}
|
|
398
517
|
return p;
|
|
399
518
|
}
|
|
@@ -403,19 +522,30 @@ function elementPower(obj, p) {
|
|
|
403
522
|
const el = EL_POWERS[i];
|
|
404
523
|
const ei = obj.elInfo[i];
|
|
405
524
|
if ((ei.flags & EL_INFO_IGNORE) !== 0 && el.ignorePower !== 0) {
|
|
406
|
-
|
|
525
|
+
const q = el.ignorePower;
|
|
526
|
+
p += q;
|
|
527
|
+
randartLogf(() => `Add ${q} power for ignoring ${el.name}, total is ${p}\n`);
|
|
407
528
|
}
|
|
408
529
|
if (ei.resLevel === -1) {
|
|
409
|
-
if (el.vulnPower !== 0)
|
|
410
|
-
|
|
530
|
+
if (el.vulnPower !== 0) {
|
|
531
|
+
const q = el.vulnPower;
|
|
532
|
+
p += q;
|
|
533
|
+
randartLogf(() => `Add ${q} power for vulnerability to ${el.name}, total is ${p}\n`);
|
|
534
|
+
}
|
|
411
535
|
}
|
|
412
536
|
else if (ei.resLevel === 1) {
|
|
413
|
-
if (el.resPower !== 0)
|
|
414
|
-
|
|
537
|
+
if (el.resPower !== 0) {
|
|
538
|
+
const q = el.resPower;
|
|
539
|
+
p += q;
|
|
540
|
+
randartLogf(() => `Add ${q} power for resistance to ${el.name}, total is ${p}\n`);
|
|
541
|
+
}
|
|
415
542
|
}
|
|
416
543
|
else if (ei.resLevel === 3) {
|
|
417
|
-
if (el.imPower !== 0)
|
|
418
|
-
|
|
544
|
+
if (el.imPower !== 0) {
|
|
545
|
+
const q = el.imPower + el.resPower;
|
|
546
|
+
p += q;
|
|
547
|
+
randartLogf(() => `Add ${q} power for immunity to ${el.name}, total is ${p}\n`);
|
|
548
|
+
}
|
|
419
549
|
}
|
|
420
550
|
for (let j = 0; j < ELEMENT_SETS.length; j++) {
|
|
421
551
|
const set = ELEMENT_SETS[j];
|
|
@@ -426,10 +556,16 @@ function elementPower(obj, p) {
|
|
|
426
556
|
for (let i = 0; i < ELEMENT_SETS.length; i++) {
|
|
427
557
|
const set = ELEMENT_SETS[i];
|
|
428
558
|
const count = counts[i];
|
|
429
|
-
if (count > 1)
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
559
|
+
if (count > 1) {
|
|
560
|
+
const q = set.factor * count * count;
|
|
561
|
+
p += q;
|
|
562
|
+
randartLogf(() => `Add ${q} power for multiple ${set.desc}, total is ${p}\n`);
|
|
563
|
+
}
|
|
564
|
+
if (count === set.size) {
|
|
565
|
+
const q = set.bonus;
|
|
566
|
+
p += q;
|
|
567
|
+
randartLogf(() => `Add ${q} power for full set of ${set.desc}, total is ${p}\n`);
|
|
568
|
+
}
|
|
433
569
|
}
|
|
434
570
|
return p;
|
|
435
571
|
}
|
|
@@ -439,8 +575,10 @@ function effectsPower(obj, p) {
|
|
|
439
575
|
q = obj.activation.power;
|
|
440
576
|
else if (obj.kind && obj.kind.power)
|
|
441
577
|
q = obj.kind.power;
|
|
442
|
-
if (q)
|
|
578
|
+
if (q) {
|
|
443
579
|
p += q;
|
|
580
|
+
randartLogf(() => `Add ${q} power for item activation, total is ${p}\n`);
|
|
581
|
+
}
|
|
444
582
|
return p;
|
|
445
583
|
}
|
|
446
584
|
/** Scale v by num with the same INT_MIN/INT_MAX clamp as upstream. */
|
|
@@ -469,8 +607,11 @@ function cursePower(reg, obj, p) {
|
|
|
469
607
|
weightAffecting = true;
|
|
470
608
|
continue;
|
|
471
609
|
}
|
|
610
|
+
const cname = reg.curses[i].name;
|
|
611
|
+
randartLogf(() => `Calculating ${cname} curse power...\n`);
|
|
472
612
|
let cp = objectPower(reg, cursePowerObject(cobj));
|
|
473
613
|
cp -= Math.trunc(power / 10);
|
|
614
|
+
randartLogf(() => `Adjust for strength of curse, ${cp} for ${cname} curse power\n`);
|
|
474
615
|
q += cp;
|
|
475
616
|
}
|
|
476
617
|
/* Pass 2: weight-affecting curses, valued by difference of merged power. */
|
|
@@ -479,6 +620,7 @@ function cursePower(reg, obj, p) {
|
|
|
479
620
|
applyCurseAttributes(reg.curses, -1, objLocal);
|
|
480
621
|
objLocal.curses = null;
|
|
481
622
|
const pAllCurse = objectPower(reg, objLocal);
|
|
623
|
+
randartLogf(() => `Power is ${pAllCurse} with all curses applied\n`);
|
|
482
624
|
for (let i = 1; i < reg.curses.length; i++) {
|
|
483
625
|
const power = obj.curses[i]?.power ?? 0;
|
|
484
626
|
if (!power)
|
|
@@ -495,18 +637,23 @@ function cursePower(reg, obj, p) {
|
|
|
495
637
|
applyCurseAttributes(reg.curses, i, objLocal);
|
|
496
638
|
objLocal.curses = null;
|
|
497
639
|
const pAllButI = objectPower(reg, objLocal);
|
|
640
|
+
const cname = reg.curses[i].name;
|
|
641
|
+
randartLogf(() => `Power is ${pAllButI} with all but ${cname} curse applied\n`);
|
|
498
642
|
let pCurse = subGuardi(pAllCurse, pAllButI);
|
|
499
643
|
if (pCurse < 0) {
|
|
500
644
|
const resistance = Math.max(20, Math.min(100, power));
|
|
501
645
|
pCurse = scaleGuarded(pCurse, resistance);
|
|
502
646
|
pCurse = Math.trunc(pCurse / 100);
|
|
503
647
|
}
|
|
648
|
+
randartLogf(() => `Adjusted power is ${pCurse} for ${cname} curse\n`);
|
|
504
649
|
q = addGuardi(q, pCurse);
|
|
505
650
|
}
|
|
506
651
|
}
|
|
507
652
|
}
|
|
508
|
-
if (q !== 0)
|
|
653
|
+
if (q !== 0) {
|
|
509
654
|
p += q;
|
|
655
|
+
randartLogf(() => `Total of ${q} power added for curses, total is ${p}\n`);
|
|
656
|
+
}
|
|
510
657
|
return p;
|
|
511
658
|
}
|
|
512
659
|
function nonstandardWeightPower(reg, obj, p) {
|
|
@@ -526,16 +673,31 @@ function nonstandardWeightPower(reg, obj, p) {
|
|
|
526
673
|
/* ac_power already accounted for weight when the object provides base AC. */
|
|
527
674
|
if (!obj.ac) {
|
|
528
675
|
const adjWc = Math.trunc((stdWeight - nonstdWeight) / WGT_POWER_DEN_NOBASEAC);
|
|
529
|
-
|
|
676
|
+
const scaled = scaleGuarded(adjWc, WGT_POWER_NUM_NOBASEAC);
|
|
677
|
+
randartLogf(() => `Add ${scaled} power for non-standard weight of object not affecting base armor.\n`);
|
|
678
|
+
adj = addGuardi(adj, scaled);
|
|
530
679
|
}
|
|
531
680
|
/* THROWING items can gain damage with weight. */
|
|
532
681
|
if (flags.has(OF.THROWING)) {
|
|
533
682
|
const adjTh = Math.trunc(nonstdWeight / WGT_POWER_DEN_THROW) -
|
|
534
683
|
Math.trunc(stdWeight / WGT_POWER_DEN_THROW);
|
|
535
|
-
|
|
684
|
+
const scaled = scaleGuarded(adjTh, WGT_POWER_NUM_THROW);
|
|
685
|
+
randartLogf(() => `Add ${scaled} power for non-standard weight of object good for throwing.\n`);
|
|
686
|
+
adj = addGuardi(adj, scaled);
|
|
536
687
|
}
|
|
537
|
-
if (adj)
|
|
688
|
+
if (adj) {
|
|
538
689
|
p = addGuardi(p, adj);
|
|
690
|
+
/* UPSTREAM TYPO, NOT REPRODUCED. obj-power.c:994 passes an int to "%p":
|
|
691
|
+
* log_obj("Add %d power combined for non-standard weight; "
|
|
692
|
+
* "total is %p\n", adj, p);
|
|
693
|
+
* That is undefined behaviour with no portable output - glibc prints a
|
|
694
|
+
* pointer-formatted value of whatever ends up in the register - so there
|
|
695
|
+
* is nothing here to be byte-identical TO. The port prints the number the
|
|
696
|
+
* line plainly means. Recorded in parity/ledger/obj-power.yaml rather
|
|
697
|
+
* than silently normalised, because a wart this port would usually keep
|
|
698
|
+
* (see the staircase invariant) is being dropped on purpose. */
|
|
699
|
+
randartLogf(() => `Add ${adj} power combined for non-standard weight; total is ${p}\n`);
|
|
700
|
+
}
|
|
539
701
|
return p;
|
|
540
702
|
}
|
|
541
703
|
/* ------------------------------------------------------------------ */
|
|
@@ -549,7 +711,10 @@ export function objectPower(reg, obj) {
|
|
|
549
711
|
let p = toDamagePower(obj);
|
|
550
712
|
const dicePwr = damageDicePower(obj);
|
|
551
713
|
p += dicePwr;
|
|
552
|
-
|
|
714
|
+
/* Completes damage_dice_power's trailing "Add %d power for damage dice, ". */
|
|
715
|
+
if (dicePwr)
|
|
716
|
+
randartLogf(() => `total is ${p}\n`);
|
|
717
|
+
p += ammoDamagePower(obj, p);
|
|
553
718
|
const mult = bowMultiplier(obj);
|
|
554
719
|
p = launcherAmmoDamagePower(obj, p);
|
|
555
720
|
p = extraBlowsPower(obj, p);
|
|
@@ -576,6 +741,7 @@ export function objectPower(reg, obj) {
|
|
|
576
741
|
p = effectsPower(obj, p);
|
|
577
742
|
p = cursePower(reg, obj, p);
|
|
578
743
|
p = nonstandardWeightPower(reg, obj, p);
|
|
744
|
+
randartLogf(() => `FINAL POWER IS ${p}\n`);
|
|
579
745
|
return p;
|
|
580
746
|
}
|
|
581
747
|
//# sourceMappingURL=power.js.map
|