@rpgm-tools/neo-angband-core 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +43 -0
- package/README.md +80 -0
- package/dist/agent/act.d.ts +22 -0
- package/dist/agent/act.d.ts.map +1 -0
- package/dist/agent/act.js +88 -0
- package/dist/agent/act.js.map +1 -0
- package/dist/agent/controller.d.ts +34 -0
- package/dist/agent/controller.d.ts.map +1 -0
- package/dist/agent/controller.js +90 -0
- package/dist/agent/controller.js.map +1 -0
- package/dist/agent/events.d.ts +27 -0
- package/dist/agent/events.d.ts.map +1 -0
- package/dist/agent/events.js +31 -0
- package/dist/agent/events.js.map +1 -0
- package/dist/agent/index.d.ts +17 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +15 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/perceive.d.ts +21 -0
- package/dist/agent/perceive.d.ts.map +1 -0
- package/dist/agent/perceive.js +386 -0
- package/dist/agent/perceive.js.map +1 -0
- package/dist/agent/types.d.ts +436 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +63 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bitflag.d.ts +199 -0
- package/dist/bitflag.d.ts.map +1 -0
- package/dist/bitflag.js +478 -0
- package/dist/bitflag.js.map +1 -0
- package/dist/cmd.d.ts +164 -0
- package/dist/cmd.d.ts.map +1 -0
- package/dist/cmd.js +350 -0
- package/dist/cmd.js.map +1 -0
- package/dist/color.d.ts +104 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +240 -0
- package/dist/color.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +119 -0
- package/dist/combat/brand-slay.d.ts.map +1 -0
- package/dist/combat/brand-slay.js +264 -0
- package/dist/combat/brand-slay.js.map +1 -0
- package/dist/combat/hit.d.ts +198 -0
- package/dist/combat/hit.d.ts.map +1 -0
- package/dist/combat/hit.js +310 -0
- package/dist/combat/hit.js.map +1 -0
- package/dist/combat/index.d.ts +15 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +15 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/combat/melee.d.ts +261 -0
- package/dist/combat/melee.d.ts.map +1 -0
- package/dist/combat/melee.js +402 -0
- package/dist/combat/melee.js.map +1 -0
- package/dist/combat/mon-melee.d.ts +233 -0
- package/dist/combat/mon-melee.d.ts.map +1 -0
- package/dist/combat/mon-melee.js +883 -0
- package/dist/combat/mon-melee.js.map +1 -0
- package/dist/combat/ranged.d.ts +89 -0
- package/dist/combat/ranged.d.ts.map +1 -0
- package/dist/combat/ranged.js +253 -0
- package/dist/combat/ranged.js.map +1 -0
- package/dist/constants.d.ts +134 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +171 -0
- package/dist/constants.js.map +1 -0
- package/dist/dice.d.ts +91 -0
- package/dist/dice.d.ts.map +1 -0
- package/dist/dice.js +424 -0
- package/dist/dice.js.map +1 -0
- package/dist/effects/effect-choice.d.ts +15 -0
- package/dist/effects/effect-choice.d.ts.map +1 -0
- package/dist/effects/effect-choice.js +18 -0
- package/dist/effects/effect-choice.js.map +1 -0
- package/dist/effects/effect-info.d.ts +124 -0
- package/dist/effects/effect-info.d.ts.map +1 -0
- package/dist/effects/effect-info.js +706 -0
- package/dist/effects/effect-info.js.map +1 -0
- package/dist/effects/effect.d.ts +165 -0
- package/dist/effects/effect.d.ts.map +1 -0
- package/dist/effects/effect.js +452 -0
- package/dist/effects/effect.js.map +1 -0
- package/dist/effects/handlers.d.ts +70 -0
- package/dist/effects/handlers.d.ts.map +1 -0
- package/dist/effects/handlers.js +394 -0
- package/dist/effects/handlers.js.map +1 -0
- package/dist/effects/interpreter.d.ts +291 -0
- package/dist/effects/interpreter.d.ts.map +1 -0
- package/dist/effects/interpreter.js +325 -0
- package/dist/effects/interpreter.js.map +1 -0
- package/dist/events.d.ts +188 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +138 -0
- package/dist/events.js.map +1 -0
- package/dist/expression.d.ts +83 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +333 -0
- package/dist/expression.js.map +1 -0
- package/dist/game/cave-cmd.d.ts +195 -0
- package/dist/game/cave-cmd.d.ts.map +1 -0
- package/dist/game/cave-cmd.js +968 -0
- package/dist/game/cave-cmd.js.map +1 -0
- package/dist/game/char-sheet.d.ts +189 -0
- package/dist/game/char-sheet.d.ts.map +1 -0
- package/dist/game/char-sheet.js +381 -0
- package/dist/game/char-sheet.js.map +1 -0
- package/dist/game/chest.d.ts +94 -0
- package/dist/game/chest.d.ts.map +1 -0
- package/dist/game/chest.js +267 -0
- package/dist/game/chest.js.map +1 -0
- package/dist/game/context.d.ts +970 -0
- package/dist/game/context.d.ts.map +1 -0
- package/dist/game/context.js +353 -0
- package/dist/game/context.js.map +1 -0
- package/dist/game/curse-tick.d.ts +35 -0
- package/dist/game/curse-tick.d.ts.map +1 -0
- package/dist/game/curse-tick.js +100 -0
- package/dist/game/curse-tick.js.map +1 -0
- package/dist/game/describe.d.ts +20 -0
- package/dist/game/describe.d.ts.map +1 -0
- package/dist/game/describe.js +45 -0
- package/dist/game/describe.js.map +1 -0
- package/dist/game/display.d.ts +196 -0
- package/dist/game/display.d.ts.map +1 -0
- package/dist/game/display.js +684 -0
- package/dist/game/display.js.map +1 -0
- package/dist/game/dump-level.d.ts +37 -0
- package/dist/game/dump-level.d.ts.map +1 -0
- package/dist/game/dump-level.js +110 -0
- package/dist/game/dump-level.js.map +1 -0
- package/dist/game/effect-attack.d.ts +36 -0
- package/dist/game/effect-attack.d.ts.map +1 -0
- package/dist/game/effect-attack.js +694 -0
- package/dist/game/effect-attack.js.map +1 -0
- package/dist/game/effect-detect.d.ts +34 -0
- package/dist/game/effect-detect.d.ts.map +1 -0
- package/dist/game/effect-detect.js +456 -0
- package/dist/game/effect-detect.js.map +1 -0
- package/dist/game/effect-env.d.ts +77 -0
- package/dist/game/effect-env.d.ts.map +1 -0
- package/dist/game/effect-env.js +166 -0
- package/dist/game/effect-env.js.map +1 -0
- package/dist/game/effect-game-env.d.ts +76 -0
- package/dist/game/effect-game-env.d.ts.map +1 -0
- package/dist/game/effect-game-env.js +23 -0
- package/dist/game/effect-game-env.js.map +1 -0
- package/dist/game/effect-general.d.ts +98 -0
- package/dist/game/effect-general.d.ts.map +1 -0
- package/dist/game/effect-general.js +914 -0
- package/dist/game/effect-general.js.map +1 -0
- package/dist/game/effect-item.d.ts +124 -0
- package/dist/game/effect-item.d.ts.map +1 -0
- package/dist/game/effect-item.js +789 -0
- package/dist/game/effect-item.js.map +1 -0
- package/dist/game/effect-melee.d.ts +43 -0
- package/dist/game/effect-melee.d.ts.map +1 -0
- package/dist/game/effect-melee.js +477 -0
- package/dist/game/effect-melee.js.map +1 -0
- package/dist/game/effect-mon-origin.d.ts +67 -0
- package/dist/game/effect-mon-origin.d.ts.map +1 -0
- package/dist/game/effect-mon-origin.js +164 -0
- package/dist/game/effect-mon-origin.js.map +1 -0
- package/dist/game/effect-monster.d.ts +29 -0
- package/dist/game/effect-monster.d.ts.map +1 -0
- package/dist/game/effect-monster.js +281 -0
- package/dist/game/effect-monster.js.map +1 -0
- package/dist/game/effect-summon.d.ts +37 -0
- package/dist/game/effect-summon.d.ts.map +1 -0
- package/dist/game/effect-summon.js +113 -0
- package/dist/game/effect-summon.js.map +1 -0
- package/dist/game/effect-teleport.d.ts +130 -0
- package/dist/game/effect-teleport.d.ts.map +1 -0
- package/dist/game/effect-teleport.js +529 -0
- package/dist/game/effect-teleport.js.map +1 -0
- package/dist/game/effect-terrain.d.ts +91 -0
- package/dist/game/effect-terrain.d.ts.map +1 -0
- package/dist/game/effect-terrain.js +812 -0
- package/dist/game/effect-terrain.js.map +1 -0
- package/dist/game/energy.d.ts +45 -0
- package/dist/game/energy.d.ts.map +1 -0
- package/dist/game/energy.js +51 -0
- package/dist/game/energy.js.map +1 -0
- package/dist/game/equip-cmp.d.ts +138 -0
- package/dist/game/equip-cmp.d.ts.map +1 -0
- package/dist/game/equip-cmp.js +363 -0
- package/dist/game/equip-cmp.js.map +1 -0
- package/dist/game/floor.d.ts +182 -0
- package/dist/game/floor.d.ts.map +1 -0
- package/dist/game/floor.js +435 -0
- package/dist/game/floor.js.map +1 -0
- package/dist/game/gear.d.ts +408 -0
- package/dist/game/gear.d.ts.map +1 -0
- package/dist/game/gear.js +1037 -0
- package/dist/game/gear.js.map +1 -0
- package/dist/game/harness.d.ts +61 -0
- package/dist/game/harness.d.ts.map +1 -0
- package/dist/game/harness.js +198 -0
- package/dist/game/harness.js.map +1 -0
- package/dist/game/history.d.ts +49 -0
- package/dist/game/history.d.ts.map +1 -0
- package/dist/game/history.js +55 -0
- package/dist/game/history.js.map +1 -0
- package/dist/game/ignore-cmd.d.ts +42 -0
- package/dist/game/ignore-cmd.d.ts.map +1 -0
- package/dist/game/ignore-cmd.js +59 -0
- package/dist/game/ignore-cmd.js.map +1 -0
- package/dist/game/inscription-confirm.d.ts +80 -0
- package/dist/game/inscription-confirm.d.ts.map +1 -0
- package/dist/game/inscription-confirm.js +95 -0
- package/dist/game/inscription-confirm.js.map +1 -0
- package/dist/game/known.d.ts +297 -0
- package/dist/game/known.d.ts.map +1 -0
- package/dist/game/known.js +849 -0
- package/dist/game/known.js.map +1 -0
- package/dist/game/loop.d.ts +139 -0
- package/dist/game/loop.d.ts.map +1 -0
- package/dist/game/loop.js +631 -0
- package/dist/game/loop.js.map +1 -0
- package/dist/game/lore-color.d.ts +25 -0
- package/dist/game/lore-color.d.ts.map +1 -0
- package/dist/game/lore-color.js +95 -0
- package/dist/game/lore-color.js.map +1 -0
- package/dist/game/mon-cast.d.ts +150 -0
- package/dist/game/mon-cast.d.ts.map +1 -0
- package/dist/game/mon-cast.js +301 -0
- package/dist/game/mon-cast.js.map +1 -0
- package/dist/game/mon-cmd.d.ts +51 -0
- package/dist/game/mon-cmd.d.ts.map +1 -0
- package/dist/game/mon-cmd.js +670 -0
- package/dist/game/mon-cmd.js.map +1 -0
- package/dist/game/mon-death.d.ts +143 -0
- package/dist/game/mon-death.d.ts.map +1 -0
- package/dist/game/mon-death.js +328 -0
- package/dist/game/mon-death.js.map +1 -0
- package/dist/game/mon-group.d.ts +81 -0
- package/dist/game/mon-group.d.ts.map +1 -0
- package/dist/game/mon-group.js +323 -0
- package/dist/game/mon-group.js.map +1 -0
- package/dist/game/mon-list.d.ts +85 -0
- package/dist/game/mon-list.d.ts.map +1 -0
- package/dist/game/mon-list.js +154 -0
- package/dist/game/mon-list.js.map +1 -0
- package/dist/game/mon-message.d.ts +100 -0
- package/dist/game/mon-message.d.ts.map +1 -0
- package/dist/game/mon-message.js +336 -0
- package/dist/game/mon-message.js.map +1 -0
- package/dist/game/mon-place.d.ts +226 -0
- package/dist/game/mon-place.d.ts.map +1 -0
- package/dist/game/mon-place.js +642 -0
- package/dist/game/mon-place.js.map +1 -0
- package/dist/game/mon-ranged.d.ts +87 -0
- package/dist/game/mon-ranged.d.ts.map +1 -0
- package/dist/game/mon-ranged.js +353 -0
- package/dist/game/mon-ranged.js.map +1 -0
- package/dist/game/mon-shape.d.ts +43 -0
- package/dist/game/mon-shape.d.ts.map +1 -0
- package/dist/game/mon-shape.js +115 -0
- package/dist/game/mon-shape.js.map +1 -0
- package/dist/game/mon-side.d.ts +63 -0
- package/dist/game/mon-side.d.ts.map +1 -0
- package/dist/game/mon-side.js +403 -0
- package/dist/game/mon-side.js.map +1 -0
- package/dist/game/monster-turn.d.ts +195 -0
- package/dist/game/monster-turn.d.ts.map +1 -0
- package/dist/game/monster-turn.js +1560 -0
- package/dist/game/monster-turn.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +453 -0
- package/dist/game/obj-cmd.d.ts.map +1 -0
- package/dist/game/obj-cmd.js +1530 -0
- package/dist/game/obj-cmd.js.map +1 -0
- package/dist/game/obj-list.d.ts +92 -0
- package/dist/game/obj-list.d.ts.map +1 -0
- package/dist/game/obj-list.js +251 -0
- package/dist/game/obj-list.js.map +1 -0
- package/dist/game/object-inspect.d.ts +37 -0
- package/dist/game/object-inspect.d.ts.map +1 -0
- package/dist/game/object-inspect.js +106 -0
- package/dist/game/object-inspect.js.map +1 -0
- package/dist/game/pickup.d.ts +126 -0
- package/dist/game/pickup.d.ts.map +1 -0
- package/dist/game/pickup.js +367 -0
- package/dist/game/pickup.js.map +1 -0
- package/dist/game/player-path.d.ts +133 -0
- package/dist/game/player-path.d.ts.map +1 -0
- package/dist/game/player-path.js +1268 -0
- package/dist/game/player-path.js.map +1 -0
- package/dist/game/player-side.d.ts +59 -0
- package/dist/game/player-side.d.ts.map +1 -0
- package/dist/game/player-side.js +506 -0
- package/dist/game/player-side.js.map +1 -0
- package/dist/game/player-turn.d.ts +161 -0
- package/dist/game/player-turn.d.ts.map +1 -0
- package/dist/game/player-turn.js +739 -0
- package/dist/game/player-turn.js.map +1 -0
- package/dist/game/project-cast.d.ts +268 -0
- package/dist/game/project-cast.d.ts.map +1 -0
- package/dist/game/project-cast.js +496 -0
- package/dist/game/project-cast.js.map +1 -0
- package/dist/game/project-feat.d.ts +47 -0
- package/dist/game/project-feat.d.ts.map +1 -0
- package/dist/game/project-feat.js +350 -0
- package/dist/game/project-feat.js.map +1 -0
- package/dist/game/project-monster.d.ts +106 -0
- package/dist/game/project-monster.d.ts.map +1 -0
- package/dist/game/project-monster.js +272 -0
- package/dist/game/project-monster.js.map +1 -0
- package/dist/game/project-obj.d.ts +60 -0
- package/dist/game/project-obj.d.ts.map +1 -0
- package/dist/game/project-obj.js +245 -0
- package/dist/game/project-obj.js.map +1 -0
- package/dist/game/project-player.d.ts +120 -0
- package/dist/game/project-player.d.ts.map +1 -0
- package/dist/game/project-player.js +108 -0
- package/dist/game/project-player.js.map +1 -0
- package/dist/game/quest.d.ts +101 -0
- package/dist/game/quest.d.ts.map +1 -0
- package/dist/game/quest.js +192 -0
- package/dist/game/quest.js.map +1 -0
- package/dist/game/ranged-cmd.d.ts +32 -0
- package/dist/game/ranged-cmd.d.ts.map +1 -0
- package/dist/game/ranged-cmd.js +372 -0
- package/dist/game/ranged-cmd.js.map +1 -0
- package/dist/game/scheduler.d.ts +47 -0
- package/dist/game/scheduler.d.ts.map +1 -0
- package/dist/game/scheduler.js +141 -0
- package/dist/game/scheduler.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +104 -0
- package/dist/game/spell-cmd.d.ts.map +1 -0
- package/dist/game/spell-cmd.js +320 -0
- package/dist/game/spell-cmd.js.map +1 -0
- package/dist/game/spoil.d.ts +28 -0
- package/dist/game/spoil.d.ts.map +1 -0
- package/dist/game/spoil.js +435 -0
- package/dist/game/spoil.js.map +1 -0
- package/dist/game/steal.d.ts +35 -0
- package/dist/game/steal.d.ts.map +1 -0
- package/dist/game/steal.js +145 -0
- package/dist/game/steal.js.map +1 -0
- package/dist/game/take-hit-hooks.d.ts +52 -0
- package/dist/game/take-hit-hooks.d.ts.map +1 -0
- package/dist/game/take-hit-hooks.js +127 -0
- package/dist/game/take-hit-hooks.js.map +1 -0
- package/dist/game/target-loop.d.ts +119 -0
- package/dist/game/target-loop.d.ts.map +1 -0
- package/dist/game/target-loop.js +408 -0
- package/dist/game/target-loop.js.map +1 -0
- package/dist/game/target.d.ts +133 -0
- package/dist/game/target.d.ts.map +1 -0
- package/dist/game/target.js +353 -0
- package/dist/game/target.js.map +1 -0
- package/dist/game/thrust.d.ts +37 -0
- package/dist/game/thrust.d.ts.map +1 -0
- package/dist/game/thrust.js +155 -0
- package/dist/game/thrust.js.map +1 -0
- package/dist/game/trap.d.ts +218 -0
- package/dist/game/trap.d.ts.map +1 -0
- package/dist/game/trap.js +618 -0
- package/dist/game/trap.js.map +1 -0
- package/dist/game/ui-entry.d.ts +282 -0
- package/dist/game/ui-entry.d.ts.map +1 -0
- package/dist/game/ui-entry.js +1838 -0
- package/dist/game/ui-entry.js.map +1 -0
- package/dist/game/wizard.d.ts +654 -0
- package/dist/game/wizard.d.ts.map +1 -0
- package/dist/game/wizard.js +1323 -0
- package/dist/game/wizard.js.map +1 -0
- package/dist/game/world.d.ts +183 -0
- package/dist/game/world.d.ts.map +1 -0
- package/dist/game/world.js +685 -0
- package/dist/game/world.js.map +1 -0
- package/dist/gen/cave.d.ts +247 -0
- package/dist/gen/cave.d.ts.map +1 -0
- package/dist/gen/cave.js +2406 -0
- package/dist/gen/cave.js.map +1 -0
- package/dist/gen/gen-monster.d.ts +151 -0
- package/dist/gen/gen-monster.d.ts.map +1 -0
- package/dist/gen/gen-monster.js +473 -0
- package/dist/gen/gen-monster.js.map +1 -0
- package/dist/gen/generate.d.ts +240 -0
- package/dist/gen/generate.d.ts.map +1 -0
- package/dist/gen/generate.js +358 -0
- package/dist/gen/generate.js.map +1 -0
- package/dist/gen/room.d.ts +160 -0
- package/dist/gen/room.d.ts.map +1 -0
- package/dist/gen/room.js +1910 -0
- package/dist/gen/room.js.map +1 -0
- package/dist/gen/util.d.ts +466 -0
- package/dist/gen/util.d.ts.map +1 -0
- package/dist/gen/util.js +1553 -0
- package/dist/gen/util.js.map +1 -0
- package/dist/generated/dun-profiles.d.ts +44 -0
- package/dist/generated/dun-profiles.d.ts.map +1 -0
- package/dist/generated/dun-profiles.js +28 -0
- package/dist/generated/dun-profiles.js.map +1 -0
- package/dist/generated/effects.d.ts +1021 -0
- package/dist/generated/effects.d.ts.map +1 -0
- package/dist/generated/effects.js +239 -0
- package/dist/generated/effects.js.map +1 -0
- package/dist/generated/elements.d.ts +83 -0
- package/dist/generated/elements.d.ts.map +1 -0
- package/dist/generated/elements.js +60 -0
- package/dist/generated/elements.js.map +1 -0
- package/dist/generated/equip-slots.d.ts +104 -0
- package/dist/generated/equip-slots.d.ts.map +1 -0
- package/dist/generated/equip-slots.js +34 -0
- package/dist/generated/equip-slots.js.map +1 -0
- package/dist/generated/history-types.d.ts +52 -0
- package/dist/generated/history-types.d.ts.map +1 -0
- package/dist/generated/history-types.js +32 -0
- package/dist/generated/history-types.js.map +1 -0
- package/dist/generated/ignore-types.d.ts +116 -0
- package/dist/generated/ignore-types.d.ts.map +1 -0
- package/dist/generated/ignore-types.js +64 -0
- package/dist/generated/ignore-types.js.map +1 -0
- package/dist/generated/index.d.ts +32 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +33 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/kind-flags.d.ts +72 -0
- package/dist/generated/kind-flags.d.ts.map +1 -0
- package/dist/generated/kind-flags.js +42 -0
- package/dist/generated/kind-flags.js.map +1 -0
- package/dist/generated/message.d.ts +624 -0
- package/dist/generated/message.d.ts.map +1 -0
- package/dist/generated/message.js +318 -0
- package/dist/generated/message.js.map +1 -0
- package/dist/generated/mon-message.d.ts +386 -0
- package/dist/generated/mon-message.d.ts.map +1 -0
- package/dist/generated/mon-message.js +136 -0
- package/dist/generated/mon-message.js.map +1 -0
- package/dist/generated/mon-race-flags.d.ts +433 -0
- package/dist/generated/mon-race-flags.d.ts.map +1 -0
- package/dist/generated/mon-race-flags.js +180 -0
- package/dist/generated/mon-race-flags.js.map +1 -0
- package/dist/generated/mon-spells.d.ts +380 -0
- package/dist/generated/mon-spells.d.ts.map +1 -0
- package/dist/generated/mon-spells.js +196 -0
- package/dist/generated/mon-spells.js.map +1 -0
- package/dist/generated/mon-temp-flags.d.ts +52 -0
- package/dist/generated/mon-temp-flags.d.ts.map +1 -0
- package/dist/generated/mon-temp-flags.js +32 -0
- package/dist/generated/mon-temp-flags.js.map +1 -0
- package/dist/generated/mon-timed.d.ts +118 -0
- package/dist/generated/mon-timed.d.ts.map +1 -0
- package/dist/generated/mon-timed.js +32 -0
- package/dist/generated/mon-timed.js.map +1 -0
- package/dist/generated/object-flags.d.ts +169 -0
- package/dist/generated/object-flags.d.ts.map +1 -0
- package/dist/generated/object-flags.js +93 -0
- package/dist/generated/object-flags.js.map +1 -0
- package/dist/generated/object-modifiers.d.ts +50 -0
- package/dist/generated/object-modifiers.d.ts.map +1 -0
- package/dist/generated/object-modifiers.js +41 -0
- package/dist/generated/object-modifiers.js.map +1 -0
- package/dist/generated/options.d.ts +284 -0
- package/dist/generated/options.d.ts.map +1 -0
- package/dist/generated/options.js +102 -0
- package/dist/generated/options.js.map +1 -0
- package/dist/generated/origins.d.ts +138 -0
- package/dist/generated/origins.d.ts.map +1 -0
- package/dist/generated/origins.js +62 -0
- package/dist/generated/origins.js.map +1 -0
- package/dist/generated/parser-errors.d.ts +264 -0
- package/dist/generated/parser-errors.d.ts.map +1 -0
- package/dist/generated/parser-errors.js +138 -0
- package/dist/generated/parser-errors.js.map +1 -0
- package/dist/generated/player-flags.d.ts +62 -0
- package/dist/generated/player-flags.d.ts.map +1 -0
- package/dist/generated/player-flags.js +46 -0
- package/dist/generated/player-flags.js.map +1 -0
- package/dist/generated/player-timed.d.ts +273 -0
- package/dist/generated/player-timed.d.ts.map +1 -0
- package/dist/generated/player-timed.js +116 -0
- package/dist/generated/player-timed.js.map +1 -0
- package/dist/generated/projections.d.ts +130 -0
- package/dist/generated/projections.d.ts.map +1 -0
- package/dist/generated/projections.js +101 -0
- package/dist/generated/projections.js.map +1 -0
- package/dist/generated/randart-properties.d.ts +388 -0
- package/dist/generated/randart-properties.d.ts.map +1 -0
- package/dist/generated/randart-properties.js +200 -0
- package/dist/generated/randart-properties.js.map +1 -0
- package/dist/generated/room-flags.d.ts +21 -0
- package/dist/generated/room-flags.d.ts.map +1 -0
- package/dist/generated/room-flags.js +19 -0
- package/dist/generated/room-flags.js.map +1 -0
- package/dist/generated/rooms.d.ts +122 -0
- package/dist/generated/rooms.d.ts.map +1 -0
- package/dist/generated/rooms.js +48 -0
- package/dist/generated/rooms.js.map +1 -0
- package/dist/generated/square-flags.d.ts +96 -0
- package/dist/generated/square-flags.d.ts.map +1 -0
- package/dist/generated/square-flags.js +54 -0
- package/dist/generated/square-flags.js.map +1 -0
- package/dist/generated/stats.d.ts +23 -0
- package/dist/generated/stats.d.ts.map +1 -0
- package/dist/generated/stats.js +20 -0
- package/dist/generated/stats.js.map +1 -0
- package/dist/generated/terrain-flags.d.ts +136 -0
- package/dist/generated/terrain-flags.d.ts.map +1 -0
- package/dist/generated/terrain-flags.js +74 -0
- package/dist/generated/terrain-flags.js.map +1 -0
- package/dist/generated/terrain.d.ts +83 -0
- package/dist/generated/terrain.d.ts.map +1 -0
- package/dist/generated/terrain.js +60 -0
- package/dist/generated/terrain.js.map +1 -0
- package/dist/generated/trap-flags.d.ts +68 -0
- package/dist/generated/trap-flags.d.ts.map +1 -0
- package/dist/generated/trap-flags.js +40 -0
- package/dist/generated/trap-flags.js.map +1 -0
- package/dist/generated/tvals.d.ts +152 -0
- package/dist/generated/tvals.d.ts.map +1 -0
- package/dist/generated/tvals.js +82 -0
- package/dist/generated/tvals.js.map +1 -0
- package/dist/generated/ui-entry-renderers.d.ts +62 -0
- package/dist/generated/ui-entry-renderers.d.ts.map +1 -0
- package/dist/generated/ui-entry-renderers.js +22 -0
- package/dist/generated/ui-entry-renderers.js.map +1 -0
- package/dist/guard.d.ts +43 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +65 -0
- package/dist/guard.js.map +1 -0
- package/dist/host/args.d.ts +129 -0
- package/dist/host/args.d.ts.map +1 -0
- package/dist/host/args.js +251 -0
- package/dist/host/args.js.map +1 -0
- package/dist/host/bridge.d.ts +61 -0
- package/dist/host/bridge.d.ts.map +1 -0
- package/dist/host/bridge.js +176 -0
- package/dist/host/bridge.js.map +1 -0
- package/dist/host/index.d.ts +18 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +18 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/io.d.ts +169 -0
- package/dist/host/io.d.ts.map +1 -0
- package/dist/host/io.js +137 -0
- package/dist/host/io.js.map +1 -0
- package/dist/host/memory.d.ts +56 -0
- package/dist/host/memory.d.ts.map +1 -0
- package/dist/host/memory.js +105 -0
- package/dist/host/memory.js.map +1 -0
- package/dist/host/raw.d.ts +114 -0
- package/dist/host/raw.d.ts.map +1 -0
- package/dist/host/raw.js +107 -0
- package/dist/host/raw.js.map +1 -0
- package/dist/index.d.ts +180 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -0
- package/dist/index.js.map +1 -0
- package/dist/loc.d.ts +63 -0
- package/dist/loc.d.ts.map +1 -0
- package/dist/loc.js +128 -0
- package/dist/loc.js.map +1 -0
- package/dist/mod/hooks.d.ts +204 -0
- package/dist/mod/hooks.d.ts.map +1 -0
- package/dist/mod/hooks.js +161 -0
- package/dist/mod/hooks.js.map +1 -0
- package/dist/mod/ids.d.ts +160 -0
- package/dist/mod/ids.d.ts.map +1 -0
- package/dist/mod/ids.js +343 -0
- package/dist/mod/ids.js.map +1 -0
- package/dist/mod/registry-host.d.ts +156 -0
- package/dist/mod/registry-host.d.ts.map +1 -0
- package/dist/mod/registry-host.js +142 -0
- package/dist/mod/registry-host.js.map +1 -0
- package/dist/mod/save-blocks.d.ts +201 -0
- package/dist/mod/save-blocks.d.ts.map +1 -0
- package/dist/mod/save-blocks.js +640 -0
- package/dist/mod/save-blocks.js.map +1 -0
- package/dist/mod/vocabulary.d.ts +104 -0
- package/dist/mod/vocabulary.d.ts.map +1 -0
- package/dist/mod/vocabulary.js +0 -0
- package/dist/mod/vocabulary.js.map +1 -0
- package/dist/mon/bind.d.ts +266 -0
- package/dist/mon/bind.d.ts.map +1 -0
- package/dist/mon/bind.js +610 -0
- package/dist/mon/bind.js.map +1 -0
- package/dist/mon/desc.d.ts +72 -0
- package/dist/mon/desc.d.ts.map +1 -0
- package/dist/mon/desc.js +237 -0
- package/dist/mon/desc.js.map +1 -0
- package/dist/mon/knowledge-groups.d.ts +61 -0
- package/dist/mon/knowledge-groups.d.ts.map +1 -0
- package/dist/mon/knowledge-groups.js +121 -0
- package/dist/mon/knowledge-groups.js.map +1 -0
- package/dist/mon/lore-describe.d.ts +216 -0
- package/dist/mon/lore-describe.d.ts.map +1 -0
- package/dist/mon/lore-describe.js +1105 -0
- package/dist/mon/lore-describe.js.map +1 -0
- package/dist/mon/lore.d.ts +117 -0
- package/dist/mon/lore.d.ts.map +1 -0
- package/dist/mon/lore.js +221 -0
- package/dist/mon/lore.js.map +1 -0
- package/dist/mon/make.d.ts +147 -0
- package/dist/mon/make.d.ts.map +1 -0
- package/dist/mon/make.js +353 -0
- package/dist/mon/make.js.map +1 -0
- package/dist/mon/monster.d.ts +94 -0
- package/dist/mon/monster.d.ts.map +1 -0
- package/dist/mon/monster.js +90 -0
- package/dist/mon/monster.js.map +1 -0
- package/dist/mon/predicate.d.ts +87 -0
- package/dist/mon/predicate.d.ts.map +1 -0
- package/dist/mon/predicate.js +190 -0
- package/dist/mon/predicate.js.map +1 -0
- package/dist/mon/project-mon.d.ts +129 -0
- package/dist/mon/project-mon.d.ts.map +1 -0
- package/dist/mon/project-mon.js +652 -0
- package/dist/mon/project-mon.js.map +1 -0
- package/dist/mon/spell.d.ts +155 -0
- package/dist/mon/spell.d.ts.map +1 -0
- package/dist/mon/spell.js +355 -0
- package/dist/mon/spell.js.map +1 -0
- package/dist/mon/steal.d.ts +112 -0
- package/dist/mon/steal.d.ts.map +1 -0
- package/dist/mon/steal.js +163 -0
- package/dist/mon/steal.js.map +1 -0
- package/dist/mon/summon.d.ts +62 -0
- package/dist/mon/summon.d.ts.map +1 -0
- package/dist/mon/summon.js +111 -0
- package/dist/mon/summon.js.map +1 -0
- package/dist/mon/take-hit.d.ts +75 -0
- package/dist/mon/take-hit.d.ts.map +1 -0
- package/dist/mon/take-hit.js +122 -0
- package/dist/mon/take-hit.js.map +1 -0
- package/dist/mon/timed.d.ts +74 -0
- package/dist/mon/timed.d.ts.map +1 -0
- package/dist/mon/timed.js +219 -0
- package/dist/mon/timed.js.map +1 -0
- package/dist/mon/types.d.ts +252 -0
- package/dist/mon/types.d.ts.map +1 -0
- package/dist/mon/types.js +46 -0
- package/dist/mon/types.js.map +1 -0
- package/dist/msg.d.ts +71 -0
- package/dist/msg.d.ts.map +1 -0
- package/dist/msg.js +126 -0
- package/dist/msg.js.map +1 -0
- package/dist/obj/artifact-fake.d.ts +39 -0
- package/dist/obj/artifact-fake.d.ts.map +1 -0
- package/dist/obj/artifact-fake.js +52 -0
- package/dist/obj/artifact-fake.js.map +1 -0
- package/dist/obj/artifact-known.d.ts +50 -0
- package/dist/obj/artifact-known.d.ts.map +1 -0
- package/dist/obj/artifact-known.js +55 -0
- package/dist/obj/artifact-known.js.map +1 -0
- package/dist/obj/bind.d.ts +219 -0
- package/dist/obj/bind.d.ts.map +1 -0
- package/dist/obj/bind.js +1239 -0
- package/dist/obj/bind.js.map +1 -0
- package/dist/obj/chest.d.ts +91 -0
- package/dist/obj/chest.d.ts.map +1 -0
- package/dist/obj/chest.js +220 -0
- package/dist/obj/chest.js.map +1 -0
- package/dist/obj/desc.d.ts +79 -0
- package/dist/obj/desc.d.ts.map +1 -0
- package/dist/obj/desc.js +602 -0
- package/dist/obj/desc.js.map +1 -0
- package/dist/obj/effects-info.d.ts +78 -0
- package/dist/obj/effects-info.d.ts.map +1 -0
- package/dist/obj/effects-info.js +240 -0
- package/dist/obj/effects-info.js.map +1 -0
- package/dist/obj/flavor.d.ts +68 -0
- package/dist/obj/flavor.d.ts.map +1 -0
- package/dist/obj/flavor.js +201 -0
- package/dist/obj/flavor.js.map +1 -0
- package/dist/obj/ignore.d.ts +143 -0
- package/dist/obj/ignore.d.ts.map +1 -0
- package/dist/obj/ignore.js +345 -0
- package/dist/obj/ignore.js.map +1 -0
- package/dist/obj/knowledge.d.ts +520 -0
- package/dist/obj/knowledge.d.ts.map +1 -0
- package/dist/obj/knowledge.js +1364 -0
- package/dist/obj/knowledge.js.map +1 -0
- package/dist/obj/known-object.d.ts +293 -0
- package/dist/obj/known-object.d.ts.map +1 -0
- package/dist/obj/known-object.js +532 -0
- package/dist/obj/known-object.js.map +1 -0
- package/dist/obj/make.d.ts +292 -0
- package/dist/obj/make.d.ts.map +1 -0
- package/dist/obj/make.js +1055 -0
- package/dist/obj/make.js.map +1 -0
- package/dist/obj/object-info.d.ts +188 -0
- package/dist/obj/object-info.d.ts.map +1 -0
- package/dist/obj/object-info.js +1407 -0
- package/dist/obj/object-info.js.map +1 -0
- package/dist/obj/object.d.ts +335 -0
- package/dist/obj/object.d.ts.map +1 -0
- package/dist/obj/object.js +1051 -0
- package/dist/obj/object.js.map +1 -0
- package/dist/obj/power.d.ts +65 -0
- package/dist/obj/power.d.ts.map +1 -0
- package/dist/obj/power.js +580 -0
- package/dist/obj/power.js.map +1 -0
- package/dist/obj/randart-build.d.ts +223 -0
- package/dist/obj/randart-build.d.ts.map +1 -0
- package/dist/obj/randart-build.js +1444 -0
- package/dist/obj/randart-build.js.map +1 -0
- package/dist/obj/randart-data.d.ts +179 -0
- package/dist/obj/randart-data.d.ts.map +1 -0
- package/dist/obj/randart-data.js +1153 -0
- package/dist/obj/randart-data.js.map +1 -0
- package/dist/obj/randart.d.ts +128 -0
- package/dist/obj/randart.d.ts.map +1 -0
- package/dist/obj/randart.js +458 -0
- package/dist/obj/randart.js.map +1 -0
- package/dist/obj/randname.d.ts +33 -0
- package/dist/obj/randname.d.ts.map +1 -0
- package/dist/obj/randname.js +116 -0
- package/dist/obj/randname.js.map +1 -0
- package/dist/obj/recharge.d.ts +28 -0
- package/dist/obj/recharge.d.ts.map +1 -0
- package/dist/obj/recharge.js +52 -0
- package/dist/obj/recharge.js.map +1 -0
- package/dist/obj/types.d.ts +584 -0
- package/dist/obj/types.d.ts.map +1 -0
- package/dist/obj/types.js +104 -0
- package/dist/obj/types.js.map +1 -0
- package/dist/obj/value.d.ts +64 -0
- package/dist/obj/value.d.ts.map +1 -0
- package/dist/obj/value.js +176 -0
- package/dist/obj/value.js.map +1 -0
- package/dist/player/abilities.d.ts +57 -0
- package/dist/player/abilities.d.ts.map +1 -0
- package/dist/player/abilities.js +118 -0
- package/dist/player/abilities.js.map +1 -0
- package/dist/player/best-digger.d.ts +42 -0
- package/dist/player/best-digger.d.ts.map +1 -0
- package/dist/player/best-digger.js +89 -0
- package/dist/player/best-digger.js.map +1 -0
- package/dist/player/bind.d.ts +270 -0
- package/dist/player/bind.d.ts.map +1 -0
- package/dist/player/bind.js +698 -0
- package/dist/player/bind.js.map +1 -0
- package/dist/player/birth.d.ts +258 -0
- package/dist/player/birth.d.ts.map +1 -0
- package/dist/player/birth.js +639 -0
- package/dist/player/birth.js.map +1 -0
- package/dist/player/calcs.d.ts +403 -0
- package/dist/player/calcs.d.ts.map +1 -0
- package/dist/player/calcs.js +1189 -0
- package/dist/player/calcs.js.map +1 -0
- package/dist/player/combat-regen.d.ts +14 -0
- package/dist/player/combat-regen.d.ts.map +1 -0
- package/dist/player/combat-regen.js +29 -0
- package/dist/player/combat-regen.js.map +1 -0
- package/dist/player/exp.d.ts +96 -0
- package/dist/player/exp.d.ts.map +1 -0
- package/dist/player/exp.js +229 -0
- package/dist/player/exp.js.map +1 -0
- package/dist/player/history.d.ts +91 -0
- package/dist/player/history.d.ts.map +1 -0
- package/dist/player/history.js +145 -0
- package/dist/player/history.js.map +1 -0
- package/dist/player/options.d.ts +123 -0
- package/dist/player/options.d.ts.map +1 -0
- package/dist/player/options.js +199 -0
- package/dist/player/options.js.map +1 -0
- package/dist/player/player.d.ts +242 -0
- package/dist/player/player.d.ts.map +1 -0
- package/dist/player/player.js +119 -0
- package/dist/player/player.js.map +1 -0
- package/dist/player/shape-lore.d.ts +56 -0
- package/dist/player/shape-lore.d.ts.map +1 -0
- package/dist/player/shape-lore.js +221 -0
- package/dist/player/shape-lore.js.map +1 -0
- package/dist/player/spell.d.ts +146 -0
- package/dist/player/spell.d.ts.map +1 -0
- package/dist/player/spell.js +519 -0
- package/dist/player/spell.js.map +1 -0
- package/dist/player/take-hit.d.ts +87 -0
- package/dist/player/take-hit.d.ts.map +1 -0
- package/dist/player/take-hit.js +99 -0
- package/dist/player/take-hit.js.map +1 -0
- package/dist/player/timed.d.ts +205 -0
- package/dist/player/timed.d.ts.map +1 -0
- package/dist/player/timed.js +310 -0
- package/dist/player/timed.js.map +1 -0
- package/dist/player/types.d.ts +390 -0
- package/dist/player/types.d.ts.map +1 -0
- package/dist/player/types.js +51 -0
- package/dist/player/types.js.map +1 -0
- package/dist/rational.d.ts +99 -0
- package/dist/rational.d.ts.map +1 -0
- package/dist/rational.js +345 -0
- package/dist/rational.js.map +1 -0
- package/dist/rng.d.ts +168 -0
- package/dist/rng.d.ts.map +1 -0
- package/dist/rng.js +404 -0
- package/dist/rng.js.map +1 -0
- package/dist/save/buffer.d.ts +120 -0
- package/dist/save/buffer.d.ts.map +1 -0
- package/dist/save/buffer.js +238 -0
- package/dist/save/buffer.js.map +1 -0
- package/dist/save/compress.d.ts +79 -0
- package/dist/save/compress.d.ts.map +1 -0
- package/dist/save/compress.js +97 -0
- package/dist/save/compress.js.map +1 -0
- package/dist/save/description.d.ts +61 -0
- package/dist/save/description.d.ts.map +1 -0
- package/dist/save/description.js +51 -0
- package/dist/save/description.js.map +1 -0
- package/dist/save/integrity.d.ts +59 -0
- package/dist/save/integrity.d.ts.map +1 -0
- package/dist/save/integrity.js +103 -0
- package/dist/save/integrity.js.map +1 -0
- package/dist/score/display.d.ts +40 -0
- package/dist/score/display.d.ts.map +1 -0
- package/dist/score/display.js +86 -0
- package/dist/score/display.js.map +1 -0
- package/dist/score/score.d.ts +166 -0
- package/dist/score/score.d.ts.map +1 -0
- package/dist/score/score.js +244 -0
- package/dist/score/score.js.map +1 -0
- package/dist/score/types.d.ts +98 -0
- package/dist/score/types.d.ts.map +1 -0
- package/dist/score/types.js +27 -0
- package/dist/score/types.js.map +1 -0
- package/dist/session/boot.d.ts +207 -0
- package/dist/session/boot.d.ts.map +1 -0
- package/dist/session/boot.js +151 -0
- package/dist/session/boot.js.map +1 -0
- package/dist/session/game.d.ts +257 -0
- package/dist/session/game.d.ts.map +1 -0
- package/dist/session/game.js +2880 -0
- package/dist/session/game.js.map +1 -0
- package/dist/session/save.d.ts +847 -0
- package/dist/session/save.d.ts.map +1 -0
- package/dist/session/save.js +1306 -0
- package/dist/session/save.js.map +1 -0
- package/dist/sound/engine.d.ts +146 -0
- package/dist/sound/engine.d.ts.map +1 -0
- package/dist/sound/engine.js +332 -0
- package/dist/sound/engine.js.map +1 -0
- package/dist/sound/index.d.ts +13 -0
- package/dist/sound/index.d.ts.map +1 -0
- package/dist/sound/index.js +13 -0
- package/dist/sound/index.js.map +1 -0
- package/dist/sound/sound-prefs-data.d.ts +10 -0
- package/dist/sound/sound-prefs-data.d.ts.map +1 -0
- package/dist/sound/sound-prefs-data.js +165 -0
- package/dist/sound/sound-prefs-data.js.map +1 -0
- package/dist/sound/types.d.ts +64 -0
- package/dist/sound/types.d.ts.map +1 -0
- package/dist/sound/types.js +23 -0
- package/dist/sound/types.js.map +1 -0
- package/dist/store/bind.d.ts +43 -0
- package/dist/store/bind.d.ts.map +1 -0
- package/dist/store/bind.js +130 -0
- package/dist/store/bind.js.map +1 -0
- package/dist/store/price.d.ts +27 -0
- package/dist/store/price.d.ts.map +1 -0
- package/dist/store/price.js +81 -0
- package/dist/store/price.js.map +1 -0
- package/dist/store/store-cmd.d.ts +51 -0
- package/dist/store/store-cmd.d.ts.map +1 -0
- package/dist/store/store-cmd.js +73 -0
- package/dist/store/store-cmd.js.map +1 -0
- package/dist/store/store.d.ts +156 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +616 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/transact.d.ts +198 -0
- package/dist/store/transact.d.ts.map +1 -0
- package/dist/store/transact.js +383 -0
- package/dist/store/transact.js.map +1 -0
- package/dist/store/types.d.ts +101 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/version.d.ts +25 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/dist/visuals/engine.d.ts +223 -0
- package/dist/visuals/engine.d.ts.map +1 -0
- package/dist/visuals/engine.js +357 -0
- package/dist/visuals/engine.js.map +1 -0
- package/dist/visuals/glyph-table.d.ts +112 -0
- package/dist/visuals/glyph-table.d.ts.map +1 -0
- package/dist/visuals/glyph-table.js +156 -0
- package/dist/visuals/glyph-table.js.map +1 -0
- package/dist/visuals/grafmode-data.d.ts +4 -0
- package/dist/visuals/grafmode-data.d.ts.map +1 -0
- package/dist/visuals/grafmode-data.js +88 -0
- package/dist/visuals/grafmode-data.js.map +1 -0
- package/dist/visuals/grafmode.d.ts +83 -0
- package/dist/visuals/grafmode.d.ts.map +1 -0
- package/dist/visuals/grafmode.js +82 -0
- package/dist/visuals/grafmode.js.map +1 -0
- package/dist/visuals/index.d.ts +19 -0
- package/dist/visuals/index.d.ts.map +1 -0
- package/dist/visuals/index.js +19 -0
- package/dist/visuals/index.js.map +1 -0
- package/dist/visuals/map-text.d.ts +79 -0
- package/dist/visuals/map-text.d.ts.map +1 -0
- package/dist/visuals/map-text.js +122 -0
- package/dist/visuals/map-text.js.map +1 -0
- package/dist/visuals/pref-expr.d.ts +56 -0
- package/dist/visuals/pref-expr.d.ts.map +1 -0
- package/dist/visuals/pref-expr.js +173 -0
- package/dist/visuals/pref-expr.js.map +1 -0
- package/dist/visuals/prefs.d.ts +280 -0
- package/dist/visuals/prefs.d.ts.map +1 -0
- package/dist/visuals/prefs.js +835 -0
- package/dist/visuals/prefs.js.map +1 -0
- package/dist/visuals/tile-prefs.d.ts +132 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -0
- package/dist/visuals/tile-prefs.js +105 -0
- package/dist/visuals/tile-prefs.js.map +1 -0
- package/dist/world/chunk.d.ts +195 -0
- package/dist/world/chunk.d.ts.map +1 -0
- package/dist/world/chunk.js +422 -0
- package/dist/world/chunk.js.map +1 -0
- package/dist/world/feature.d.ts +86 -0
- package/dist/world/feature.d.ts.map +1 -0
- package/dist/world/feature.js +153 -0
- package/dist/world/feature.js.map +1 -0
- package/dist/world/flow.d.ts +33 -0
- package/dist/world/flow.d.ts.map +1 -0
- package/dist/world/flow.js +115 -0
- package/dist/world/flow.js.map +1 -0
- package/dist/world/project.d.ts +176 -0
- package/dist/world/project.d.ts.map +1 -0
- package/dist/world/project.js +543 -0
- package/dist/world/project.js.map +1 -0
- package/dist/world/projection.d.ts +100 -0
- package/dist/world/projection.d.ts.map +1 -0
- package/dist/world/projection.js +152 -0
- package/dist/world/projection.js.map +1 -0
- package/dist/world/scatter.d.ts +25 -0
- package/dist/world/scatter.d.ts.map +1 -0
- package/dist/world/scatter.js +54 -0
- package/dist/world/scatter.js.map +1 -0
- package/dist/world/trap.d.ts +84 -0
- package/dist/world/trap.d.ts.map +1 -0
- package/dist/world/trap.js +106 -0
- package/dist/world/trap.js.map +1 -0
- package/dist/world/view.d.ts +60 -0
- package/dist/world/view.d.ts.map +1 -0
- package/dist/world/view.js +436 -0
- package/dist/world/view.js.map +1 -0
- package/dist/z-queue.d.ts +133 -0
- package/dist/z-queue.d.ts.map +1 -0
- package/dist/z-queue.js +283 -0
- package/dist/z-queue.js.map +1 -0
- package/package.json +75 -0
- package/src/agent/act.ts +114 -0
- package/src/agent/controller.ts +109 -0
- package/src/agent/events.ts +47 -0
- package/src/agent/index.ts +36 -0
- package/src/agent/perceive.ts +440 -0
- package/src/agent/types.ts +464 -0
- package/src/bitflag.ts +536 -0
- package/src/cmd.ts +547 -0
- package/src/color.ts +267 -0
- package/src/combat/brand-slay.ts +360 -0
- package/src/combat/hit.ts +471 -0
- package/src/combat/index.ts +15 -0
- package/src/combat/melee.ts +728 -0
- package/src/combat/mon-melee.ts +1153 -0
- package/src/combat/ranged.ts +397 -0
- package/src/constants.ts +324 -0
- package/src/dice.ts +467 -0
- package/src/effects/effect-choice.ts +32 -0
- package/src/effects/effect-info.ts +859 -0
- package/src/effects/effect.ts +560 -0
- package/src/effects/handlers.ts +452 -0
- package/src/effects/interpreter.ts +603 -0
- package/src/events.ts +317 -0
- package/src/expression.ts +360 -0
- package/src/game/cave-cmd.ts +1147 -0
- package/src/game/char-sheet.ts +557 -0
- package/src/game/chest.ts +348 -0
- package/src/game/context.ts +1218 -0
- package/src/game/curse-tick.ts +130 -0
- package/src/game/describe.ts +62 -0
- package/src/game/display.ts +838 -0
- package/src/game/dump-level.ts +114 -0
- package/src/game/effect-attack.ts +746 -0
- package/src/game/effect-detect.ts +542 -0
- package/src/game/effect-env.ts +252 -0
- package/src/game/effect-game-env.ts +86 -0
- package/src/game/effect-general.ts +1122 -0
- package/src/game/effect-item.ts +999 -0
- package/src/game/effect-melee.ts +557 -0
- package/src/game/effect-mon-origin.ts +196 -0
- package/src/game/effect-monster.ts +310 -0
- package/src/game/effect-summon.ts +161 -0
- package/src/game/effect-teleport.ts +645 -0
- package/src/game/effect-terrain.ts +881 -0
- package/src/game/energy.ts +61 -0
- package/src/game/equip-cmp.ts +476 -0
- package/src/game/floor.ts +524 -0
- package/src/game/gear.ts +1352 -0
- package/src/game/harness.ts +270 -0
- package/src/game/history.ts +78 -0
- package/src/game/ignore-cmd.ts +68 -0
- package/src/game/inscription-confirm.ts +115 -0
- package/src/game/known.ts +960 -0
- package/src/game/loop.ts +671 -0
- package/src/game/lore-color.ts +108 -0
- package/src/game/mon-cast.ts +409 -0
- package/src/game/mon-cmd.ts +767 -0
- package/src/game/mon-death.ts +459 -0
- package/src/game/mon-group.ts +368 -0
- package/src/game/mon-list.ts +213 -0
- package/src/game/mon-message.ts +359 -0
- package/src/game/mon-place.ts +1012 -0
- package/src/game/mon-ranged.ts +405 -0
- package/src/game/mon-shape.ts +161 -0
- package/src/game/mon-side.ts +511 -0
- package/src/game/monster-turn.ts +1750 -0
- package/src/game/obj-cmd.ts +1970 -0
- package/src/game/obj-list.ts +302 -0
- package/src/game/object-inspect.ts +162 -0
- package/src/game/pickup.ts +483 -0
- package/src/game/player-path.ts +1434 -0
- package/src/game/player-side.ts +555 -0
- package/src/game/player-turn.ts +852 -0
- package/src/game/project-cast.ts +766 -0
- package/src/game/project-feat.ts +386 -0
- package/src/game/project-monster.ts +407 -0
- package/src/game/project-obj.ts +298 -0
- package/src/game/project-player.ts +236 -0
- package/src/game/quest.ts +248 -0
- package/src/game/ranged-cmd.ts +417 -0
- package/src/game/scheduler.ts +150 -0
- package/src/game/spell-cmd.ts +404 -0
- package/src/game/spoil.ts +562 -0
- package/src/game/steal.ts +169 -0
- package/src/game/take-hit-hooks.ts +152 -0
- package/src/game/target-loop.ts +501 -0
- package/src/game/target.ts +424 -0
- package/src/game/thrust.ts +174 -0
- package/src/game/trap.ts +791 -0
- package/src/game/ui-entry.ts +2075 -0
- package/src/game/wizard.ts +1760 -0
- package/src/game/world.ts +786 -0
- package/src/gen/cave.ts +2858 -0
- package/src/gen/gen-monster.ts +592 -0
- package/src/gen/generate.ts +523 -0
- package/src/gen/room.ts +2213 -0
- package/src/gen/util.ts +1958 -0
- package/src/generated/dun-profiles.ts +30 -0
- package/src/generated/effects.ts +241 -0
- package/src/generated/elements.ts +62 -0
- package/src/generated/equip-slots.ts +36 -0
- package/src/generated/history-types.ts +34 -0
- package/src/generated/ignore-types.ts +66 -0
- package/src/generated/index.ts +33 -0
- package/src/generated/kind-flags.ts +44 -0
- package/src/generated/message.ts +320 -0
- package/src/generated/mon-message.ts +138 -0
- package/src/generated/mon-race-flags.ts +182 -0
- package/src/generated/mon-spells.ts +198 -0
- package/src/generated/mon-temp-flags.ts +34 -0
- package/src/generated/mon-timed.ts +34 -0
- package/src/generated/object-flags.ts +95 -0
- package/src/generated/object-modifiers.ts +43 -0
- package/src/generated/options.ts +104 -0
- package/src/generated/origins.ts +64 -0
- package/src/generated/parser-errors.ts +140 -0
- package/src/generated/player-flags.ts +48 -0
- package/src/generated/player-timed.ts +118 -0
- package/src/generated/projections.ts +103 -0
- package/src/generated/randart-properties.ts +202 -0
- package/src/generated/room-flags.ts +21 -0
- package/src/generated/rooms.ts +50 -0
- package/src/generated/square-flags.ts +56 -0
- package/src/generated/stats.ts +22 -0
- package/src/generated/terrain-flags.ts +76 -0
- package/src/generated/terrain.ts +62 -0
- package/src/generated/trap-flags.ts +42 -0
- package/src/generated/tvals.ts +84 -0
- package/src/generated/ui-entry-renderers.ts +24 -0
- package/src/guard.ts +70 -0
- package/src/host/args.ts +334 -0
- package/src/host/bridge.ts +193 -0
- package/src/host/index.ts +18 -0
- package/src/host/io.ts +239 -0
- package/src/host/memory.ts +134 -0
- package/src/host/raw.ts +190 -0
- package/src/index.ts +250 -0
- package/src/loc.ts +157 -0
- package/src/mod/hooks.ts +278 -0
- package/src/mod/ids.ts +390 -0
- package/src/mod/registry-host.ts +258 -0
- package/src/mod/save-blocks.ts +787 -0
- package/src/mod/vocabulary.ts +0 -0
- package/src/mon/bind.ts +899 -0
- package/src/mon/desc.ts +212 -0
- package/src/mon/knowledge-groups.ts +164 -0
- package/src/mon/lore-describe.ts +1414 -0
- package/src/mon/lore.ts +306 -0
- package/src/mon/make.ts +422 -0
- package/src/mon/monster.ts +161 -0
- package/src/mon/predicate.ts +220 -0
- package/src/mon/project-mon.ts +855 -0
- package/src/mon/spell.ts +418 -0
- package/src/mon/steal.ts +246 -0
- package/src/mon/summon.ts +145 -0
- package/src/mon/take-hit.ts +195 -0
- package/src/mon/timed.ts +300 -0
- package/src/mon/types.ts +286 -0
- package/src/msg.ts +146 -0
- package/src/obj/artifact-fake.ts +63 -0
- package/src/obj/artifact-known.ts +69 -0
- package/src/obj/bind.ts +1345 -0
- package/src/obj/chest.ts +249 -0
- package/src/obj/desc.ts +699 -0
- package/src/obj/effects-info.ts +349 -0
- package/src/obj/flavor.ts +256 -0
- package/src/obj/ignore.ts +387 -0
- package/src/obj/knowledge.ts +1577 -0
- package/src/obj/known-object.ts +718 -0
- package/src/obj/make.ts +1367 -0
- package/src/obj/object-info.ts +1737 -0
- package/src/obj/object.ts +1296 -0
- package/src/obj/power.ts +674 -0
- package/src/obj/randart-build.ts +1705 -0
- package/src/obj/randart-data.ts +1344 -0
- package/src/obj/randart.ts +552 -0
- package/src/obj/randname.ts +128 -0
- package/src/obj/recharge.ts +62 -0
- package/src/obj/types.ts +559 -0
- package/src/obj/value.ts +215 -0
- package/src/player/abilities.ts +142 -0
- package/src/player/best-digger.ts +118 -0
- package/src/player/bind.ts +1021 -0
- package/src/player/birth.ts +794 -0
- package/src/player/calcs.ts +1522 -0
- package/src/player/combat-regen.ts +33 -0
- package/src/player/exp.ts +275 -0
- package/src/player/history.ts +211 -0
- package/src/player/options.ts +244 -0
- package/src/player/player.ts +356 -0
- package/src/player/shape-lore.ts +250 -0
- package/src/player/spell.ts +627 -0
- package/src/player/take-hit.ts +173 -0
- package/src/player/timed.ts +482 -0
- package/src/player/types.ts +415 -0
- package/src/rational.ts +388 -0
- package/src/rng.ts +476 -0
- package/src/save/buffer.ts +287 -0
- package/src/save/compress.ts +132 -0
- package/src/save/description.ts +70 -0
- package/src/save/integrity.ts +133 -0
- package/src/score/display.ts +125 -0
- package/src/score/score.ts +341 -0
- package/src/score/types.ts +104 -0
- package/src/session/boot.ts +338 -0
- package/src/session/game.ts +3712 -0
- package/src/session/save.ts +2074 -0
- package/src/sound/engine.ts +375 -0
- package/src/sound/index.ts +13 -0
- package/src/sound/sound-prefs-data.ts +173 -0
- package/src/sound/types.ts +68 -0
- package/src/store/bind.ts +145 -0
- package/src/store/price.ts +97 -0
- package/src/store/store-cmd.ts +73 -0
- package/src/store/store.ts +723 -0
- package/src/store/transact.ts +644 -0
- package/src/store/types.ts +110 -0
- package/src/version.ts +26 -0
- package/src/visuals/engine.ts +444 -0
- package/src/visuals/glyph-table.ts +191 -0
- package/src/visuals/grafmode-data.ts +90 -0
- package/src/visuals/grafmode.ts +123 -0
- package/src/visuals/index.ts +19 -0
- package/src/visuals/map-text.ts +152 -0
- package/src/visuals/pref-expr.ts +182 -0
- package/src/visuals/prefs.ts +981 -0
- package/src/visuals/tile-prefs.ts +183 -0
- package/src/world/chunk.ts +531 -0
- package/src/world/feature.ts +215 -0
- package/src/world/flow.ts +128 -0
- package/src/world/project.ts +687 -0
- package/src/world/projection.ts +228 -0
- package/src/world/scatter.ts +72 -0
- package/src/world/trap.ts +155 -0
- package/src/world/view.ts +513 -0
- package/src/z-queue.ts +300 -0
|
@@ -0,0 +1,718 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-object "known shadow" synthesis, ported from
|
|
3
|
+
* reference/src/obj-knowledge.c (Angband 4.2.6).
|
|
4
|
+
*
|
|
5
|
+
* Upstream every live object carries a twin `obj->known`: a stripped struct
|
|
6
|
+
* object holding only what the player has learned about it. object_desc reads
|
|
7
|
+
* that twin wherever a value or a name must be gated by knowledge (the ego
|
|
8
|
+
* name shows only if known->ego, the combat numbers come from known->to_h and
|
|
9
|
+
* friends, etc.). The port DEFERRED the persistent twin; this module
|
|
10
|
+
* synthesises an equivalent shadow ON DEMAND from the port's cumulative rune
|
|
11
|
+
* knowledge model (Player.objKnown, i.e. upstream p->obj_k), by porting
|
|
12
|
+
* object_set_base_known (L820) and player_know_object (L1022) line-for-line
|
|
13
|
+
* onto the port's fields. desc.ts then reads the shadow exactly where upstream
|
|
14
|
+
* reads obj->known, so names come out identical for identical knowledge.
|
|
15
|
+
*
|
|
16
|
+
* The progressive-ID entry points (obj-knowledge.c L860-1013) are ported to fit
|
|
17
|
+
* this on-demand model:
|
|
18
|
+
* - object_set_base_known is exported here for callers/tests.
|
|
19
|
+
* - object_touch / object_grab (objectTouch / objectGrab) mark the live object
|
|
20
|
+
* ASSESSED - the bit that gates the fuller shadow - and fire the artifact-log
|
|
21
|
+
* and flavour-awareness side effects; the twin's own field writes are
|
|
22
|
+
* subsumed by objectKnownShadow. Their live call sites (stepping onto / over
|
|
23
|
+
* a floor pile, grabbing a monster's drop, quake/destruction object rubble)
|
|
24
|
+
* live in the world/game layer -> emitted as WIRING-NEEDED.
|
|
25
|
+
* - object_see / object_sense are ported here (objectSee / objectSense) as
|
|
26
|
+
* obj-layer bodies over an injected KnownFloorDeps, matching the
|
|
27
|
+
* objectTouch / objectGrab pattern: the object-knowledge decisions (new exact
|
|
28
|
+
* memory vs upgrade-from-sensed vs number refresh; the money/item sensed
|
|
29
|
+
* marker) live here, while the world layer (game/known.ts squareKnowPile /
|
|
30
|
+
* squareSensePile) supplies the reduced grid-keyed floor memory the deps
|
|
31
|
+
* read and write. Their live call sites are emitted as WIRING-NEEDED.
|
|
32
|
+
* update_player_object_knowledge (the twin re-sync + autoinscribe + inventory
|
|
33
|
+
* redraw) remains a world/UI concern handled at the port's knowledge-update
|
|
34
|
+
* sites, not a per-object twin.
|
|
35
|
+
* - The progressive-sensing gate player_know_object applies before any ID
|
|
36
|
+
* (obj-knowledge.c L1027-1035: unseen / only-sensed objects get nothing, seen
|
|
37
|
+
* objects get base properties) is modelled by objectKnownShadow's optional
|
|
38
|
+
* KnownState argument (default SEEN keeps the pre-existing behaviour).
|
|
39
|
+
*
|
|
40
|
+
* Synthesis notes (each ledgered inline):
|
|
41
|
+
* - p->obj_k->dd/ds/ac (the "know dice"/"know ac" runes) are now real fields on
|
|
42
|
+
* Player.objKnown, ALWAYS 1: player_outfit (player-birth.c L584-596) grants
|
|
43
|
+
* them as obvious knowledge at birth and nothing ever learns them by use. The
|
|
44
|
+
* shadow multiplies the object's base dd/ds/ac by them exactly as upstream
|
|
45
|
+
* (obj-knowledge.c L830-838, L1039-1041), so base dice and armour of even an
|
|
46
|
+
* unidentified item are known from the start. See objectSetBaseKnown.
|
|
47
|
+
* - The shadow has no independent `notice`; upstream obj->known->notice's
|
|
48
|
+
* ASSESSED bit is mirrored from the real object's notice. Under on-demand
|
|
49
|
+
* synthesis this is provably byte-identical to a persistent twin that carried
|
|
50
|
+
* its own notice: the only consumer of shadow.notice is its ASSESSED bit,
|
|
51
|
+
* read back within this same call, and it equals obj's ASSESSED bit because
|
|
52
|
+
* the port keeps the assessed state on the live object. So this is exact, not
|
|
53
|
+
* an approximation.
|
|
54
|
+
* - object_flavor_aware side effects in player_know_object's jewelry and
|
|
55
|
+
* special-artifact branches (L1163-1175) are a knowledge-UPDATE, not part of
|
|
56
|
+
* describing an object. Firing them here would let a display path mutate the
|
|
57
|
+
* player's knowledge, so they are deliberately NOT fired in this synthesis;
|
|
58
|
+
* they are wired into the port's knowledge-update sites instead
|
|
59
|
+
* (playerKnowObjectAwareness in knowledge.ts, called from
|
|
60
|
+
* objectLearnUnknownRune). The shadow's own fields are unaffected.
|
|
61
|
+
* - known->artifact: upstream object_touch (L963) sets it when the object is
|
|
62
|
+
* ASSESSED (touched / picked up), so the shadow gates obj.artifact on the
|
|
63
|
+
* ASSESSED notice bit - the artifact name reveals on touch while its powers
|
|
64
|
+
* stay hidden until their runes are learned, exactly as upstream.
|
|
65
|
+
* - The is_unknown() placeholder path (obj->kind != obj->known->kind) is a
|
|
66
|
+
* game-list-layer concern in the port; object_desc always gets a real
|
|
67
|
+
* object, so it is not modelled here.
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
import type { RandomValue } from "../rng.js";
|
|
71
|
+
import type { Player } from "../player/player.js";
|
|
72
|
+
import type { CurseData, GameObject } from "./object.js";
|
|
73
|
+
import {
|
|
74
|
+
objectNew,
|
|
75
|
+
cursesAreEqual,
|
|
76
|
+
tvalCanHaveFlavor,
|
|
77
|
+
tvalIsChest,
|
|
78
|
+
tvalIsJewelry,
|
|
79
|
+
tvalIsLauncher,
|
|
80
|
+
tvalIsMoney,
|
|
81
|
+
tvalIsWearable,
|
|
82
|
+
} from "./object.js";
|
|
83
|
+
import type { RuneEnv } from "./knowledge.js";
|
|
84
|
+
import {
|
|
85
|
+
OBJ_NOTICE,
|
|
86
|
+
objectHasStandardToH,
|
|
87
|
+
playerKnowsBrand,
|
|
88
|
+
playerKnowsCurse,
|
|
89
|
+
playerKnowsSlay,
|
|
90
|
+
} from "./knowledge.js";
|
|
91
|
+
import type { ObjectKind, EgoItem, ElementInfo } from "./types.js";
|
|
92
|
+
import { ELEM_MAX, OBJ_MOD_MAX } from "./types.js";
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The player's floor-knowledge state for a single object, the three cases
|
|
96
|
+
* player_know_object branches on before granting any ID (obj-knowledge.c
|
|
97
|
+
* L1027-1035): UNSEEN is obj->known == NULL (nothing recorded), SENSED is
|
|
98
|
+
* obj->known->kind != obj->kind (a fake unknown-item / unknown-treasure marker
|
|
99
|
+
* from object_sense), SEEN is an exact memory whose kind matches. Only SEEN
|
|
100
|
+
* objects reach object_set_base_known and the fuller rune-knowledge fill.
|
|
101
|
+
*/
|
|
102
|
+
export const KNOWN_STATE = {
|
|
103
|
+
UNSEEN: 0,
|
|
104
|
+
SENSED: 1,
|
|
105
|
+
SEEN: 2,
|
|
106
|
+
} as const;
|
|
107
|
+
export type KnownState = (typeof KNOWN_STATE)[keyof typeof KNOWN_STATE];
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The flavour-awareness view object_desc / the shadow synthesis need. Upstream
|
|
111
|
+
* awareness lives on the shared object_kind template (kind->aware / kind->tried);
|
|
112
|
+
* the port keeps it in a per-game FlavorKnowledge (obj/knowledge.ts) keyed by
|
|
113
|
+
* kidx, so it is injected rather than read off the object or player.
|
|
114
|
+
*/
|
|
115
|
+
export interface KnownDesc {
|
|
116
|
+
/** object_flavor_is_aware(obj): player knows this flavoured kind's identity. */
|
|
117
|
+
isAware(kind: ObjectKind): boolean;
|
|
118
|
+
/** object_flavor_was_tried(obj): a kind of this flavour has been tried. */
|
|
119
|
+
isTried(kind: ObjectKind): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* obj->kind->flavor != NULL: whether flavor_init assigned this kind a
|
|
122
|
+
* flavour. Optional; when absent the tval-only kindHasFlavor is used (the
|
|
123
|
+
* behaviour before flavor_init was wired). Every flavoured tval's kinds are
|
|
124
|
+
* assigned a flavour, so the two agree in practice.
|
|
125
|
+
*/
|
|
126
|
+
hasFlavor?(kind: ObjectKind): boolean;
|
|
127
|
+
/** obj->kind->flavor->text: the "Smoky" adjective or scroll title. */
|
|
128
|
+
flavorText?(kind: ObjectKind): string;
|
|
129
|
+
/**
|
|
130
|
+
* OPT(p, show_flavors): show the flavour even once aware. Defaults to true
|
|
131
|
+
* (the upstream default), matching a game whose option is unset.
|
|
132
|
+
*/
|
|
133
|
+
showFlavors?(): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* ignore_item_ok(p, obj) (obj-ignore.c L622): whether the object is eligible
|
|
136
|
+
* for ignoring right now, for the " {ignore}" / "ignore" description markers
|
|
137
|
+
* (obj-desc.c L537, L630). Optional; when absent the markers are omitted (a
|
|
138
|
+
* caller with no ignore environment, e.g. an omniscient/spoiled describe).
|
|
139
|
+
*/
|
|
140
|
+
ignoreItemOk?(obj: GameObject): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* obj->kind->everseen = true (obj-desc.c L637): mark the kind as seen once the
|
|
143
|
+
* player is aware of its flavour. Optional; when absent (omniscient/spoiled or
|
|
144
|
+
* a caller with no EverseenKnowledge) the mutation is skipped, matching the
|
|
145
|
+
* upstream `!spoil` guard. A pure Set insert - no RNG, no ordering dependency.
|
|
146
|
+
*/
|
|
147
|
+
markKindSeen?(kind: ObjectKind): void;
|
|
148
|
+
/**
|
|
149
|
+
* obj->ego->everseen = true (obj-desc.c L634): mark the ego as seen once the
|
|
150
|
+
* known shadow carries an ego (the ego's name is known). Optional; same
|
|
151
|
+
* skip-on-absent semantics as markKindSeen.
|
|
152
|
+
*/
|
|
153
|
+
markEgoSeen?(ego: EgoItem): void;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Whether an object's kind carries a flavour (upstream obj->kind->flavor, a
|
|
158
|
+
* struct flavor pointer). The port does NOT bind the flavour<->kind link onto
|
|
159
|
+
* ObjectKind, so this is approximated by tval_can_have_flavor_k (obj-tval.c
|
|
160
|
+
* L322), which is exactly the set of tvals every kind of which is assigned a
|
|
161
|
+
* flavour by flavor_init. DEFERRED: the flavour TEXT (adjective / scroll title)
|
|
162
|
+
* remains unavailable; see desc.ts for how the missing '#' modstr is handled.
|
|
163
|
+
*/
|
|
164
|
+
export function kindHasFlavor(obj: GameObject): boolean {
|
|
165
|
+
return tvalCanHaveFlavor(obj.tval);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* randcalc(v, MAX_RAND_DEPTH, MAXIMISE) for a RandomValue, evaluated purely
|
|
170
|
+
* (the maximise aspect is deterministic: damcalc = dice*sides, mBonusCalc =
|
|
171
|
+
* mBonus). rng.ts owns the general randcalc; this avoids threading an Rng.
|
|
172
|
+
*/
|
|
173
|
+
function randcalcMax(v: RandomValue): number {
|
|
174
|
+
return v.base + v.dice * v.sides + v.mBonus;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* randcalc(v, MAX_RAND_DEPTH, MINIMISE), evaluated purely (damcalc minimise =
|
|
179
|
+
* dice, mBonusCalc minimise = 0).
|
|
180
|
+
*/
|
|
181
|
+
function randcalcMin(v: RandomValue): number {
|
|
182
|
+
return v.base + v.dice;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** Allocate a zeroed curse-data array of `n` entries (mem_zalloc twin). */
|
|
186
|
+
function newCurseData(n: number): CurseData[] {
|
|
187
|
+
const out: CurseData[] = [];
|
|
188
|
+
for (let i = 0; i < n; i++) out.push({ power: 0, timeout: 0 });
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* object_set_base_known (obj-knowledge.c L820): set the basic details a player
|
|
194
|
+
* always knows once an object is seen - kind/tval/sval/weight/number, the
|
|
195
|
+
* generic dice and ac (gated by the "know dice"/"know ac" runes p->obj_k->dd/
|
|
196
|
+
* ds/ac, which are always 1 from birth), the standard to-hit for armour,
|
|
197
|
+
* launcher multipliers, and the pval/effect for aware flavours and unflavored
|
|
198
|
+
* non-wearables.
|
|
199
|
+
*
|
|
200
|
+
* Mutates `shadow` in place.
|
|
201
|
+
*/
|
|
202
|
+
export function objectSetBaseKnown(
|
|
203
|
+
shadow: GameObject,
|
|
204
|
+
obj: GameObject,
|
|
205
|
+
p: Player,
|
|
206
|
+
env: RuneEnv,
|
|
207
|
+
deps: KnownDesc,
|
|
208
|
+
): void {
|
|
209
|
+
shadow.kind = obj.kind; // L823
|
|
210
|
+
shadow.tval = obj.tval; // L824
|
|
211
|
+
shadow.sval = obj.sval; // L825
|
|
212
|
+
shadow.weight = obj.weight; // L826
|
|
213
|
+
shadow.number = obj.number; // L827
|
|
214
|
+
|
|
215
|
+
/* Generic dice and ac, gated by the dd/ds/ac runes (always 1 from birth). */
|
|
216
|
+
if (!shadow.dd) shadow.dd = obj.kind.dd * p.objKnown.dd; // L830-832
|
|
217
|
+
if (!shadow.ds) shadow.ds = obj.kind.ds * p.objKnown.ds; // L833-835
|
|
218
|
+
if (!shadow.ac) shadow.ac = obj.kind.ac * p.objKnown.ac; // L836-838
|
|
219
|
+
if (objectHasStandardToH(env, obj)) {
|
|
220
|
+
shadow.toH = obj.kind.toH.base; // L839-841
|
|
221
|
+
}
|
|
222
|
+
if (tvalIsLauncher(obj.tval)) {
|
|
223
|
+
shadow.pval = obj.pval; // L842-844
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* Aware flavours and unflavored non-wearables get info now (L846-851). */
|
|
227
|
+
const flavored = kindHasFlavor(obj);
|
|
228
|
+
if (
|
|
229
|
+
(deps.isAware(obj.kind) && flavored) ||
|
|
230
|
+
(!tvalIsWearable(obj.tval) && !flavored)
|
|
231
|
+
) {
|
|
232
|
+
shadow.pval = obj.pval;
|
|
233
|
+
shadow.effect = obj.effect;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Know standard activations for wearables (L853-856). */
|
|
237
|
+
if (tvalIsWearable(obj.tval) && obj.kind.effect && deps.isAware(obj.kind)) {
|
|
238
|
+
shadow.effect = obj.effect;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* player_knows_ego (obj-knowledge.c L475): is `ego` known to the player, for
|
|
244
|
+
* the specific object `obj` (obj lets a zero-valued modifier count as known
|
|
245
|
+
* when the ego's modifier range straddles zero)?
|
|
246
|
+
*/
|
|
247
|
+
export function playerKnowsEgo(
|
|
248
|
+
p: Player,
|
|
249
|
+
ego: GameObject["ego"],
|
|
250
|
+
obj: GameObject,
|
|
251
|
+
env: RuneEnv,
|
|
252
|
+
): boolean {
|
|
253
|
+
if (!ego) return false; // L480
|
|
254
|
+
|
|
255
|
+
/* All flags known (L483): ego->flags subset of p->obj_k->flags. */
|
|
256
|
+
if (!p.objKnown.flags.isSubset(ego.flags)) return false;
|
|
257
|
+
|
|
258
|
+
/* All modifiers known (L486-504). */
|
|
259
|
+
for (let i = 0; i < OBJ_MOD_MAX; i++) {
|
|
260
|
+
const mod = ego.modifiers[i];
|
|
261
|
+
if (!mod) continue;
|
|
262
|
+
const modmax = randcalcMax(mod);
|
|
263
|
+
const modmin = randcalcMin(mod);
|
|
264
|
+
if ((modmax > 0 || modmin < 0) && !(p.objKnown.modifiers[i] ?? 0)) {
|
|
265
|
+
if (!obj || modmax * modmin > 0 || (obj.modifiers[i] ?? 0) !== 0) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/* All elements known (L507-509). */
|
|
272
|
+
for (let i = 0; i < ELEM_MAX; i++) {
|
|
273
|
+
if (
|
|
274
|
+
(ego.elInfo[i]?.resLevel ?? 0) &&
|
|
275
|
+
!(p.objKnown.elInfo[i]?.resLevel ?? 0)
|
|
276
|
+
) {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* All brands known (L512-516). */
|
|
282
|
+
for (let i = 1; i < env.brands.length; i++) {
|
|
283
|
+
if (ego.brands && ego.brands[i] && !playerKnowsBrand(p, i)) return false;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* All slays known (L519-523). */
|
|
287
|
+
for (let i = 1; i < env.slays.length; i++) {
|
|
288
|
+
if (ego.slays && ego.slays[i] && !playerKnowsSlay(p, i)) return false;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* All curses known (L526-530). */
|
|
292
|
+
for (let i = 1; i < env.curses.length; i++) {
|
|
293
|
+
if (ego.curses && ego.curses[i] && !playerKnowsCurse(p, i)) return false;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* object_effect_is_known (obj-knowledge.c L540): the player knows the object's
|
|
301
|
+
* effect when the shadow's effect chain is the real one. GameObject.effect is a
|
|
302
|
+
* shared reference to the same EffectRecordJson[] (or null), so reference
|
|
303
|
+
* equality matches upstream's obj->effect == obj->known->effect pointer test.
|
|
304
|
+
*/
|
|
305
|
+
export function objectEffectIsKnown(obj: GameObject, shadow: GameObject): boolean {
|
|
306
|
+
return obj.effect === shadow.effect;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* object_non_curse_runes_known (obj-knowledge.c L678): are all non-curse runes
|
|
311
|
+
* on `obj` reflected in its `shadow`?
|
|
312
|
+
*/
|
|
313
|
+
function objectNonCurseRunesKnown(
|
|
314
|
+
obj: GameObject,
|
|
315
|
+
shadow: GameObject,
|
|
316
|
+
env: RuneEnv,
|
|
317
|
+
): boolean {
|
|
318
|
+
/* Not all combat details known (L686-688). */
|
|
319
|
+
if (shadow.toA !== obj.toA) return false;
|
|
320
|
+
if (shadow.toH !== obj.toH) return false;
|
|
321
|
+
if (shadow.toD !== obj.toD) return false;
|
|
322
|
+
|
|
323
|
+
/* Not all modifiers known (L691-693). */
|
|
324
|
+
for (let i = 0; i < OBJ_MOD_MAX; i++) {
|
|
325
|
+
if ((obj.modifiers[i] ?? 0) !== (shadow.modifiers[i] ?? 0)) return false;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* Not all elements known (L696-699). */
|
|
329
|
+
for (let i = 0; i < ELEM_MAX; i++) {
|
|
330
|
+
if (
|
|
331
|
+
(obj.elInfo[i]?.resLevel ?? 0) !== 0 &&
|
|
332
|
+
(shadow.elInfo[i]?.resLevel ?? 0) === 0
|
|
333
|
+
) {
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* Not all brands known (L702-710). */
|
|
339
|
+
if (obj.brands) {
|
|
340
|
+
if (!shadow.brands) return false;
|
|
341
|
+
for (let i = 0; i < env.brands.length; i++) {
|
|
342
|
+
if (obj.brands[i] && !shadow.brands[i]) return false;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/* Not all slays known (L713-721). */
|
|
347
|
+
if (obj.slays) {
|
|
348
|
+
if (!shadow.slays) return false;
|
|
349
|
+
for (let i = 0; i < env.slays.length; i++) {
|
|
350
|
+
if (obj.slays[i] && !shadow.slays[i]) return false;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/* Not all flags known (L724): obj->flags subset of obj->known->flags. */
|
|
355
|
+
if (!shadow.flags.isSubset(obj.flags)) return false;
|
|
356
|
+
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* object_runes_known (obj-knowledge.c L734), ported to compare the real object
|
|
362
|
+
* against its synthesised shadow (upstream compares obj->known, which is filled
|
|
363
|
+
* from the same rune knowledge). Named ...Upstream to distinguish it from the
|
|
364
|
+
* existing reduced objectRunesKnown in knowledge.ts, which walks the rune list
|
|
365
|
+
* over the player's knowledge directly rather than a per-object twin.
|
|
366
|
+
*/
|
|
367
|
+
export function objectRunesKnownUpstream(
|
|
368
|
+
obj: GameObject,
|
|
369
|
+
shadow: GameObject,
|
|
370
|
+
_p: Player,
|
|
371
|
+
env: RuneEnv,
|
|
372
|
+
): boolean {
|
|
373
|
+
/* Not all curses known (L740-742). */
|
|
374
|
+
if (!cursesAreEqual(obj, shadow)) return false;
|
|
375
|
+
|
|
376
|
+
/* Answer is now the same as for non-curse runes (L745). */
|
|
377
|
+
return objectNonCurseRunesKnown(obj, shadow, env);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* object_fully_known (obj-knowledge.c L754): all runes known AND the effect
|
|
382
|
+
* known.
|
|
383
|
+
*/
|
|
384
|
+
export function objectFullyKnown(
|
|
385
|
+
obj: GameObject,
|
|
386
|
+
shadow: GameObject,
|
|
387
|
+
p: Player,
|
|
388
|
+
env: RuneEnv,
|
|
389
|
+
): boolean {
|
|
390
|
+
if (!objectRunesKnownUpstream(obj, shadow, p, env)) return false; // L757
|
|
391
|
+
if (!objectEffectIsKnown(obj, shadow)) return false; // L760
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Synthesise the per-object known shadow (upstream obj->known) from the
|
|
397
|
+
* player's cumulative rune knowledge. Ports object_set_base_known (L820) then
|
|
398
|
+
* player_know_object (L1022) onto the port's fields; the shadow is a fresh
|
|
399
|
+
* GameObject holding only what the player knows.
|
|
400
|
+
*
|
|
401
|
+
* `state` is the object's floor-knowledge state (player_know_object's L1027-1035
|
|
402
|
+
* pre-ID gate): an UNSEEN or only-SENSED object gets no ID at all - upstream
|
|
403
|
+
* returns before object_set_base_known, so its shadow is a bare object_new with
|
|
404
|
+
* nothing known. Defaults to SEEN, the state of every object the current callers
|
|
405
|
+
* describe (a pack / store / targeted object always has an exact known twin), so
|
|
406
|
+
* the pre-existing behaviour is unchanged.
|
|
407
|
+
*
|
|
408
|
+
* @returns a shadow GameObject to be read wherever upstream reads obj->known.
|
|
409
|
+
*/
|
|
410
|
+
export function objectKnownShadow(
|
|
411
|
+
obj: GameObject,
|
|
412
|
+
p: Player,
|
|
413
|
+
env: RuneEnv,
|
|
414
|
+
deps: KnownDesc,
|
|
415
|
+
state: KnownState = KNOWN_STATE.SEEN,
|
|
416
|
+
): GameObject {
|
|
417
|
+
const shadow = objectNew(obj.kind);
|
|
418
|
+
|
|
419
|
+
/* Unseen (obj->known == NULL) or only-sensed (obj->known->kind != obj->kind):
|
|
420
|
+
* player_know_object returns before object_set_base_known (L1029-1030), so no
|
|
421
|
+
* property - not even the base dice/ac - is known. object_set_base_known runs
|
|
422
|
+
* only once object_see has recorded the real kind (L916 / L936). */
|
|
423
|
+
if (state !== KNOWN_STATE.SEEN) return shadow;
|
|
424
|
+
|
|
425
|
+
const assessed = (obj.notice & OBJ_NOTICE.ASSESSED) !== 0;
|
|
426
|
+
/* The port keeps assessed state on the live object; mirror it (see docs -
|
|
427
|
+
* byte-identical to a twin's own notice under on-demand synthesis). */
|
|
428
|
+
shadow.notice = obj.notice;
|
|
429
|
+
|
|
430
|
+
objectSetBaseKnown(shadow, obj, p, env, deps);
|
|
431
|
+
|
|
432
|
+
/* search() writes obj->known->pval for a discovered chest trap
|
|
433
|
+
* (player-util.c:1709-1712), independently of assessment. */
|
|
434
|
+
if (tvalIsChest(obj.tval)) shadow.pval = obj.knownPval ?? 0;
|
|
435
|
+
|
|
436
|
+
/* Distant / unassessed objects just get base properties (L1033-1035). */
|
|
437
|
+
if (!assessed) return shadow;
|
|
438
|
+
|
|
439
|
+
/* Dice (gated by the dd/ds/ac runes, always 1), and the pval for anything but
|
|
440
|
+
* chests (L1039-1043). */
|
|
441
|
+
shadow.dd = obj.dd * p.objKnown.dd;
|
|
442
|
+
shadow.ds = obj.ds * p.objKnown.ds;
|
|
443
|
+
shadow.ac = obj.ac * p.objKnown.ac;
|
|
444
|
+
if (!tvalIsChest(obj.tval)) shadow.pval = obj.pval;
|
|
445
|
+
|
|
446
|
+
/* Combat details (L1046-1049). */
|
|
447
|
+
shadow.toA = (p.objKnown.toA ? 1 : 0) * obj.toA;
|
|
448
|
+
if (!objectHasStandardToH(env, obj)) {
|
|
449
|
+
shadow.toH = (p.objKnown.toH ? 1 : 0) * obj.toH;
|
|
450
|
+
}
|
|
451
|
+
shadow.toD = (p.objKnown.toD ? 1 : 0) * obj.toD;
|
|
452
|
+
|
|
453
|
+
/* Modifiers (L1052-1058). */
|
|
454
|
+
for (let i = 0; i < OBJ_MOD_MAX; i++) {
|
|
455
|
+
shadow.modifiers[i] = (p.objKnown.modifiers[i] ?? 0)
|
|
456
|
+
? (obj.modifiers[i] ?? 0)
|
|
457
|
+
: 0;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/* Elements (L1061-1069). */
|
|
461
|
+
for (let i = 0; i < ELEM_MAX; i++) {
|
|
462
|
+
const se = shadow.elInfo[i];
|
|
463
|
+
if (!se) continue;
|
|
464
|
+
if ((p.objKnown.elInfo[i]?.resLevel ?? 0) === 1) {
|
|
465
|
+
se.resLevel = obj.elInfo[i]?.resLevel ?? 0;
|
|
466
|
+
se.flags = obj.elInfo[i]?.flags ?? 0;
|
|
467
|
+
} else {
|
|
468
|
+
se.resLevel = 0;
|
|
469
|
+
se.flags = 0;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/* Object flags (L1072-1078): shadow.flags = obj.flags intersect obj_k. */
|
|
474
|
+
shadow.flags.wipe();
|
|
475
|
+
for (const flag of p.objKnown.flags) {
|
|
476
|
+
if (obj.flags.has(flag)) shadow.flags.on(flag);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/* Brands (L1086-1106). */
|
|
480
|
+
if (obj.brands) {
|
|
481
|
+
let knownBrand = false;
|
|
482
|
+
for (let i = 1; i < env.brands.length; i++) {
|
|
483
|
+
if (playerKnowsBrand(p, i) && obj.brands[i]) {
|
|
484
|
+
if (!shadow.brands) {
|
|
485
|
+
shadow.brands = new Array<boolean>(env.brands.length).fill(false);
|
|
486
|
+
}
|
|
487
|
+
shadow.brands[i] = true;
|
|
488
|
+
knownBrand = true;
|
|
489
|
+
} else if (shadow.brands) {
|
|
490
|
+
shadow.brands[i] = false;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
if (!knownBrand) shadow.brands = null;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
/* Slays (L1109-1129). */
|
|
497
|
+
if (obj.slays) {
|
|
498
|
+
let knownSlay = false;
|
|
499
|
+
for (let i = 1; i < env.slays.length; i++) {
|
|
500
|
+
if (playerKnowsSlay(p, i) && obj.slays[i]) {
|
|
501
|
+
if (!shadow.slays) {
|
|
502
|
+
shadow.slays = new Array<boolean>(env.slays.length).fill(false);
|
|
503
|
+
}
|
|
504
|
+
shadow.slays[i] = true;
|
|
505
|
+
knownSlay = true;
|
|
506
|
+
} else if (shadow.slays) {
|
|
507
|
+
shadow.slays[i] = false;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
if (!knownSlay) shadow.slays = null;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/* Curses (L1131-1153). */
|
|
514
|
+
if (obj.curses) {
|
|
515
|
+
let knownCursed = false;
|
|
516
|
+
for (let i = 1; i < env.curses.length; i++) {
|
|
517
|
+
if ((p.objKnown.curses[i] ?? 0) && (obj.curses[i]?.power ?? 0)) {
|
|
518
|
+
if (!shadow.curses) shadow.curses = newCurseData(env.curses.length);
|
|
519
|
+
const sc = shadow.curses[i];
|
|
520
|
+
if (sc) sc.power = obj.curses[i]?.power ?? 0;
|
|
521
|
+
knownCursed = true;
|
|
522
|
+
} else if (shadow.curses) {
|
|
523
|
+
const sc = shadow.curses[i];
|
|
524
|
+
if (sc) sc.power = 0;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
if (!knownCursed) shadow.curses = null;
|
|
528
|
+
} else if (shadow.curses) {
|
|
529
|
+
shadow.curses = null;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/* Ego type, if known (L1156-1161). */
|
|
533
|
+
shadow.ego = playerKnowsEgo(p, obj.ego, obj, env) ? obj.ego : null;
|
|
534
|
+
|
|
535
|
+
/* Jewellery / special-artifact awareness (L1163-1175): the
|
|
536
|
+
* object_flavor_aware side effect is a knowledge-UPDATE and is deliberately
|
|
537
|
+
* NOT fired here - this is a display-only synthesis and must never mutate the
|
|
538
|
+
* player's knowledge. It is wired at the knowledge-update sites instead
|
|
539
|
+
* (playerKnowObjectAwareness, knowledge.ts). The shadow's fields are
|
|
540
|
+
* unaffected by it. */
|
|
541
|
+
|
|
542
|
+
/* Ensure effect is known as if object_set_base_known had run (L1178-1182). */
|
|
543
|
+
const flavored = kindHasFlavor(obj);
|
|
544
|
+
if (
|
|
545
|
+
(deps.isAware(obj.kind) && flavored) ||
|
|
546
|
+
(!tvalIsWearable(obj.tval) && !flavored) ||
|
|
547
|
+
(tvalIsWearable(obj.tval) && obj.kind.effect && deps.isAware(obj.kind))
|
|
548
|
+
) {
|
|
549
|
+
shadow.effect = obj.effect;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/* known->artifact (object_touch L963): the artifact is automatically
|
|
553
|
+
* noticed when the object is ASSESSED (touched / picked up), NOT when its
|
|
554
|
+
* runes are fully known - so an assessed artifact shows its name while its
|
|
555
|
+
* powers stay hidden until learned, exactly as upstream. */
|
|
556
|
+
shadow.artifact = obj.artifact && assessed ? obj.artifact : null;
|
|
557
|
+
const fullyKnown = objectFullyKnown(obj, shadow, p, env);
|
|
558
|
+
|
|
559
|
+
/* Fully known objects mirror the real element and flag info (L1203-1210). */
|
|
560
|
+
if (fullyKnown) {
|
|
561
|
+
for (let i = 0; i < ELEM_MAX; i++) {
|
|
562
|
+
const se = shadow.elInfo[i];
|
|
563
|
+
const oe = obj.elInfo[i];
|
|
564
|
+
if (se && oe) {
|
|
565
|
+
se.resLevel = oe.resLevel;
|
|
566
|
+
se.flags = oe.flags;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
shadow.flags.copy(obj.flags);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
return shadow;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* object_is_known_artifact (obj-knowledge.c L552): whether the object is known
|
|
577
|
+
* to be an artifact. Reads the shadow's artifact field (set from the ASSESSED
|
|
578
|
+
* bit in objectKnownShadow), matching upstream's obj->known->artifact.
|
|
579
|
+
*/
|
|
580
|
+
export function objectIsKnownArtifact(shadow: GameObject): boolean {
|
|
581
|
+
return shadow.artifact !== null;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/* ------------------------------------------------------------------ */
|
|
585
|
+
/* Progressive object-knowledge hooks (obj-knowledge.c L860-1013) */
|
|
586
|
+
/* ------------------------------------------------------------------ */
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
* The side effects object_touch / object_grab fire beyond marking the object
|
|
590
|
+
* assessed, injected so this obj-layer helper stays free of the player-history
|
|
591
|
+
* ledger and the flavour/rune knowledge-update path.
|
|
592
|
+
*/
|
|
593
|
+
export interface ObjectTouchDeps {
|
|
594
|
+
/**
|
|
595
|
+
* history_find_artifact (obj-knowledge.c L971): log that the player has now
|
|
596
|
+
* seen artifact `aidx`. Fired only for an artifact object.
|
|
597
|
+
*/
|
|
598
|
+
onArtifactFound?(aidx: number): void;
|
|
599
|
+
/**
|
|
600
|
+
* player_know_object's flavour-awareness side effect (obj-knowledge.c
|
|
601
|
+
* L967 -> L1163-1175), i.e. playerKnowObjectAwareness(p, env, obj, ...) built
|
|
602
|
+
* by the caller. The rest of player_know_object (the obj->known twin writes)
|
|
603
|
+
* is synthesised on demand by objectKnownShadow, so only this awareness half
|
|
604
|
+
* needs firing here.
|
|
605
|
+
*/
|
|
606
|
+
onKnow?(obj: GameObject): void;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* object_touch (obj-knowledge.c L960): gain knowledge from being on the same
|
|
611
|
+
* square as an object (or picking it up). Upstream sets obj->known->artifact,
|
|
612
|
+
* marks obj->known ASSESSED, runs player_know_object, and logs a found artifact.
|
|
613
|
+
*
|
|
614
|
+
* The port keeps ASSESSED on the LIVE object (the fuller known shadow is gated
|
|
615
|
+
* by it - objectKnownShadow L350, desc.ts) and synthesises obj->known on
|
|
616
|
+
* demand, so this reduces to: set ASSESSED (which also reveals the artifact
|
|
617
|
+
* name via the shadow's assessed gate), fire the awareness half of
|
|
618
|
+
* player_know_object, then log the artifact. Draws no RNG.
|
|
619
|
+
*/
|
|
620
|
+
export function objectTouch(obj: GameObject, deps: ObjectTouchDeps = {}): void {
|
|
621
|
+
/* obj->known->artifact = obj->artifact (L963) is subsumed by the shadow's
|
|
622
|
+
* ASSESSED gate (objectKnownShadow L477); marking ASSESSED is enough. */
|
|
623
|
+
obj.notice |= OBJ_NOTICE.ASSESSED; // L964
|
|
624
|
+
|
|
625
|
+
/* player_know_object(p, obj) (L967): only the awareness side effect needs a
|
|
626
|
+
* home here (the twin is on-demand). */
|
|
627
|
+
deps.onKnow?.(obj);
|
|
628
|
+
|
|
629
|
+
/* Log artifacts if found (L970-971). */
|
|
630
|
+
if (obj.artifact) deps.onArtifactFound?.(obj.artifact.aidx);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* object_grab (obj-knowledge.c L978): gain knowledge from grabbing an object
|
|
635
|
+
* off a monster. Upstream's body is known-cave floor-list bookkeeping (making /
|
|
636
|
+
* relocating the obj->known twin and its object_set_base_known fill) followed by
|
|
637
|
+
* object_touch (L1012). In the port the known-cave floor list is maintained by
|
|
638
|
+
* the world layer (game/known.ts squareKnowPile / object_see) and the twin is
|
|
639
|
+
* on demand, so grabbing reduces to object_touch. Draws no RNG.
|
|
640
|
+
*/
|
|
641
|
+
export function objectGrab(obj: GameObject, deps: ObjectTouchDeps = {}): void {
|
|
642
|
+
objectTouch(obj, deps);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
/* ------------------------------------------------------------------ */
|
|
646
|
+
/* Progressive floor-item sensing (obj-knowledge.c L862-955) */
|
|
647
|
+
/* ------------------------------------------------------------------ */
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* The reduced known-cave floor accessor object_see / object_sense operate
|
|
651
|
+
* through. Upstream both walk p->cave->objects[obj->oidx] (the per-object known
|
|
652
|
+
* twin) and the known floor piles (square_holds_object / pile_insert_end /
|
|
653
|
+
* square_excise_object). The port keeps the player's floor knowledge as a
|
|
654
|
+
* grid-keyed glyph memory (game/known.ts KnownObjectMemory) rather than a
|
|
655
|
+
* per-object twin, so the world layer supplies these operations; the
|
|
656
|
+
* object-knowledge decisions stay here, matching the objectTouch pattern.
|
|
657
|
+
*/
|
|
658
|
+
export interface KnownFloorDeps {
|
|
659
|
+
/**
|
|
660
|
+
* The knowledge state recorded for obj's grid: UNSEEN (no memory /
|
|
661
|
+
* p->cave->objects[obj->oidx] absent or moved off this pile), SENSED (a fake
|
|
662
|
+
* unknown-item / unknown-treasure marker), or SEEN (an exact memory whose
|
|
663
|
+
* kind matches obj).
|
|
664
|
+
*/
|
|
665
|
+
state(obj: GameObject): KnownState;
|
|
666
|
+
/**
|
|
667
|
+
* object_set_base_known + list the known object (obj-knowledge.c L914-927 /
|
|
668
|
+
* L936): record an EXACT memory of obj at its grid, replacing any sensed
|
|
669
|
+
* marker and relocating it onto the current floor pile.
|
|
670
|
+
*/
|
|
671
|
+
setSeen(obj: GameObject): void;
|
|
672
|
+
/**
|
|
673
|
+
* object_sense's fake-kind assignment (L884-896): record a SENSED marker at
|
|
674
|
+
* obj's grid - unknown_gold_kind for money, unknown_item_kind otherwise.
|
|
675
|
+
*/
|
|
676
|
+
setSensed(obj: GameObject, isMoney: boolean): void;
|
|
677
|
+
/**
|
|
678
|
+
* known_obj->number = obj->number (L938): refresh the remembered count of an
|
|
679
|
+
* already-exact memory whose kind still matches.
|
|
680
|
+
*/
|
|
681
|
+
setNumber(obj: GameObject): void;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* object_sense (obj-knowledge.c L862): gain knowledge from SENSING an object on
|
|
686
|
+
* the floor (detection / telepathy of an item you cannot see). Upstream makes a
|
|
687
|
+
* new fake "unknown item" / "unknown treasure" known-object where none exists
|
|
688
|
+
* (or the old one has moved) and attaches it to the known floor pile; a grid
|
|
689
|
+
* that already carries an exact or sensed memory is left as is. Draws no RNG.
|
|
690
|
+
*/
|
|
691
|
+
export function objectSense(obj: GameObject, deps: KnownFloorDeps): void {
|
|
692
|
+
/* Make a new sensed marker only where nothing is recorded (L868-897); an
|
|
693
|
+
* existing exact or sensed memory already covers this grid. tval_is_money
|
|
694
|
+
* chooses unknown_gold_kind over unknown_item_kind (L886-892). */
|
|
695
|
+
if (deps.state(obj) === KNOWN_STATE.UNSEEN) {
|
|
696
|
+
deps.setSensed(obj, tvalIsMoney(obj.tval));
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* object_see (obj-knowledge.c L903): gain knowledge from SEEING an object on the
|
|
702
|
+
* floor. Upstream makes a new exact known-object (object_set_base_known) where
|
|
703
|
+
* none exists (L909-927), upgrades a sensed marker to exact when the real kind
|
|
704
|
+
* is now visible (known_obj->kind != obj->kind, L934-936), or just refreshes the
|
|
705
|
+
* remembered number when an exact memory already matches (L937-939); then it
|
|
706
|
+
* relocates the memory onto the current floor pile. Draws no RNG.
|
|
707
|
+
*/
|
|
708
|
+
export function objectSee(obj: GameObject, deps: KnownFloorDeps): void {
|
|
709
|
+
switch (deps.state(obj)) {
|
|
710
|
+
case KNOWN_STATE.UNSEEN: /* Brand-new exact memory (L909-927). */
|
|
711
|
+
case KNOWN_STATE.SENSED: /* Sensed -> exact: the kind is now known (L934-936). */
|
|
712
|
+
deps.setSeen(obj);
|
|
713
|
+
break;
|
|
714
|
+
default: /* SEEN: same kind, just refresh the count (L937-939). */
|
|
715
|
+
deps.setNumber(obj);
|
|
716
|
+
break;
|
|
717
|
+
}
|
|
718
|
+
}
|