@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,644 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store transactions, ported from reference/src/store.c (Angband 4.2.6): the
|
|
3
|
+
* buy/sell/retrieve/stash commands and home_carry. This is the behavioural
|
|
4
|
+
* other half of the store subsystem, sitting on the stocking layer (store.ts),
|
|
5
|
+
* the pricing layer (price.ts), and the player pack model (game/gear.ts).
|
|
6
|
+
*
|
|
7
|
+
* The upstream commands are driven by the command queue (do_cmd_buy etc. read
|
|
8
|
+
* cmd_get_arg_item / cmd_get_arg_number); here each is a plain function that
|
|
9
|
+
* takes the object (or a pack handle) and amount directly, so the headless
|
|
10
|
+
* core can run a transaction without the UI command layer. The economic and
|
|
11
|
+
* inventory effects are faithful; the EVENT_* signals remain the caller's.
|
|
12
|
+
*
|
|
13
|
+
* LIVE vs DEFERRED (ledgered in parity/ledger/store-transact.yaml):
|
|
14
|
+
* - LIVE: the gold debit/credit, the pack-room gate (inven_carry_num), the
|
|
15
|
+
* price (price_item), the buy decision (store_will_buy), the stack split /
|
|
16
|
+
* excise (gear_object_for_use), store_carry / store_delete / store_check_num,
|
|
17
|
+
* the empty-store restock (store_maint x10 with the shopkeeper-shuffle roll),
|
|
18
|
+
* the ORIGIN_STORE stamp, the OF_STICKY "stuck" refusal, home_carry, and the
|
|
19
|
+
* comment_accept / purchase_analyze ONE_OF draws on the game RNG.
|
|
20
|
+
* - LIVE: the rune learn-on-transaction loop (object_learn_unknown_rune) on BOTH
|
|
21
|
+
* sides of the counter - selling (do_cmd_sell L1947-1953) and buying
|
|
22
|
+
* (do_cmd_buy L1736-1742) - plus flavor awareness when a FlavorKnowledge is
|
|
23
|
+
* supplied. The two were wired months apart, and while only the sell half
|
|
24
|
+
* existed a purchase left an item's runes unknown; the header said DEFERRED for
|
|
25
|
+
* both, which is how the asymmetry read as intentional.
|
|
26
|
+
* - Still DEFERRED: the obj->known twin, total_weight upkeep, autoinscription,
|
|
27
|
+
* and history_find/lose_artifact.
|
|
28
|
+
* - Deliberately ABSENT: the HOME teaches nothing (do_cmd_retrieve L1783-1851 and
|
|
29
|
+
* do_cmd_stash L2009 learn nothing at all), so homeRetrieve/homeStash have no
|
|
30
|
+
* learn block and must not gain one.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
import type { Constants } from "../constants.js";
|
|
34
|
+
import { FEAT, OF, ORIGIN } from "../generated/index.js";
|
|
35
|
+
import type { GameObject, StackLimits } from "../obj/object.js";
|
|
36
|
+
import {
|
|
37
|
+
distributeCharges,
|
|
38
|
+
objectAbsorb,
|
|
39
|
+
objectMergeable,
|
|
40
|
+
OSTACK_PACK,
|
|
41
|
+
tvalCanHaveCharges,
|
|
42
|
+
} from "../obj/object.js";
|
|
43
|
+
import {
|
|
44
|
+
NOOP_FLAVOR_AWARE_DEPS,
|
|
45
|
+
objectLearnUnknownRune,
|
|
46
|
+
objectRunesKnown,
|
|
47
|
+
} from "../obj/knowledge.js";
|
|
48
|
+
import type {
|
|
49
|
+
FlavorAwareDeps,
|
|
50
|
+
FlavorKnowledge,
|
|
51
|
+
Rune,
|
|
52
|
+
RuneEnv,
|
|
53
|
+
} from "../obj/knowledge.js";
|
|
54
|
+
import type { Gear } from "../game/gear.js";
|
|
55
|
+
import {
|
|
56
|
+
gearObjectForUse,
|
|
57
|
+
invenCarry,
|
|
58
|
+
invenCarryNum,
|
|
59
|
+
objectCopyAmt,
|
|
60
|
+
} from "../game/gear.js";
|
|
61
|
+
import type { Player } from "../player/player.js";
|
|
62
|
+
import { objectValue, objectValueReal } from "../obj/value.js";
|
|
63
|
+
import { priceItem } from "./price.js";
|
|
64
|
+
import {
|
|
65
|
+
storeCarry,
|
|
66
|
+
storeCheckNum,
|
|
67
|
+
storeDelete,
|
|
68
|
+
storeMaint,
|
|
69
|
+
storeSaleShouldReduceStock,
|
|
70
|
+
storeShuffle,
|
|
71
|
+
storeWillBuy,
|
|
72
|
+
} from "./store.js";
|
|
73
|
+
import type { Store, StoreMaintContext } from "./store.js";
|
|
74
|
+
|
|
75
|
+
/** Pack stacking limits derived from the bound constants. */
|
|
76
|
+
function packLimits(constants: Constants): StackLimits {
|
|
77
|
+
return {
|
|
78
|
+
quiverSlotSize: constants.quiverSlotSize,
|
|
79
|
+
thrownQuiverMult: constants.thrownQuiverMult,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** object_is_equipped: is the gear handle currently worn in a body slot? */
|
|
84
|
+
function isEquipped(player: Player, handle: number): boolean {
|
|
85
|
+
return player.equipment.includes(handle);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** obj_can_takeoff (obj-util.c L794): only non-sticky items come off. */
|
|
89
|
+
function objCanTakeoff(obj: GameObject): boolean {
|
|
90
|
+
return !obj.flags.has(OF.STICKY);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Knowledge learned by transacting an item; runes are DEFERRED (task #13). */
|
|
94
|
+
export interface TxnKnowledge {
|
|
95
|
+
/** When supplied, buying/selling makes the kind's flavor known. */
|
|
96
|
+
flavor?: FlavorKnowledge;
|
|
97
|
+
/**
|
|
98
|
+
* The ignore/notice side effects of becoming aware (object_flavor_aware
|
|
99
|
+
* L2276-2279, #89). Only meaningful alongside `flavor`; the in-play caller
|
|
100
|
+
* (session/game.ts) supplies the real ignore-settings-backed deps, tests
|
|
101
|
+
* and other non-interactive callers fall back to NOOP_FLAVOR_AWARE_DEPS.
|
|
102
|
+
*/
|
|
103
|
+
flavorDeps?: FlavorAwareDeps;
|
|
104
|
+
/** object_flavor_is_aware(obj), fed to object_value in price_item. */
|
|
105
|
+
aware: boolean;
|
|
106
|
+
/** OPT(player, birth_no_selling): the shop pays 0 and keeps the item. */
|
|
107
|
+
noSelling: boolean;
|
|
108
|
+
/** object_runes_known(obj), for store_will_buy's no-selling exception. */
|
|
109
|
+
runesKnown?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Selling TEACHES the object's runes (do_cmd_sell L1946-1951):
|
|
112
|
+
*
|
|
113
|
+
* object_flavor_aware(player, obj);
|
|
114
|
+
* obj->known->effect = obj->effect;
|
|
115
|
+
* while (!object_fully_known(obj)) {
|
|
116
|
+
* object_learn_unknown_rune(player, obj);
|
|
117
|
+
* player_know_object(player, obj);
|
|
118
|
+
* }
|
|
119
|
+
*
|
|
120
|
+
* The shopkeeper appraises the item and you learn what they learned - so an
|
|
121
|
+
* unidentified torch sold to the store leaves its rune in your knowledge, not
|
|
122
|
+
* just its name. The port had only the flavor half, which is exactly the
|
|
123
|
+
* reported symptom: the name appeared and the rune did not.
|
|
124
|
+
*
|
|
125
|
+
* Optional so a caller with no rune environment (a store-maintenance test)
|
|
126
|
+
* keeps the bare flavor learn. object_learn_unknown_rune draws from the game
|
|
127
|
+
* RNG to pick which rune, so a caller that supplies this changes the draw
|
|
128
|
+
* sequence - as upstream's does.
|
|
129
|
+
*/
|
|
130
|
+
learnRunes?: { env: RuneEnv; runes: readonly Rune[] };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* ------------------------------------------------------------------ */
|
|
134
|
+
/* do_cmd_buy (store.c L1650) */
|
|
135
|
+
/* ------------------------------------------------------------------ */
|
|
136
|
+
|
|
137
|
+
/** Why a purchase could not complete. */
|
|
138
|
+
export type BuyFailure = "not-in-stock" | "no-room" | "cannot-afford";
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* purchase_analyze's verbal-reaction bucket (store.c L491-508): how the paid
|
|
142
|
+
* price compared to the item's real value and the store's apparent guess.
|
|
143
|
+
*/
|
|
144
|
+
export type SaleReaction = "worthless" | "bad" | "good" | "great";
|
|
145
|
+
|
|
146
|
+
/** comment_accept (store.c L453-461): ONE_OF pool for a successful buy. */
|
|
147
|
+
const COMMENT_ACCEPT = ["Okay.", "Fine.", "Accepted!", "Agreed!", "Done!", "Taken!"];
|
|
148
|
+
|
|
149
|
+
/** purchase_analyze reaction arrays (store.c L435-479). */
|
|
150
|
+
const COMMENT_WORTHLESS = [
|
|
151
|
+
"Arrgghh!",
|
|
152
|
+
"You bastard!",
|
|
153
|
+
"You hear someone sobbing...",
|
|
154
|
+
"The shopkeeper howls in agony!",
|
|
155
|
+
"The shopkeeper wails in anguish!",
|
|
156
|
+
"The shopkeeper beats his head against the counter.",
|
|
157
|
+
];
|
|
158
|
+
const COMMENT_BAD = [
|
|
159
|
+
"Damn!",
|
|
160
|
+
"You fiend!",
|
|
161
|
+
"The shopkeeper curses at you.",
|
|
162
|
+
"The shopkeeper glares at you.",
|
|
163
|
+
];
|
|
164
|
+
const COMMENT_GOOD = [
|
|
165
|
+
"Cool!",
|
|
166
|
+
"You've made my day!",
|
|
167
|
+
"The shopkeeper sniggers.",
|
|
168
|
+
"The shopkeeper giggles.",
|
|
169
|
+
"The shopkeeper laughs loudly.",
|
|
170
|
+
];
|
|
171
|
+
const COMMENT_GREAT = [
|
|
172
|
+
"Yipee!",
|
|
173
|
+
"I think I'll retire!",
|
|
174
|
+
"The shopkeeper jumps for joy.",
|
|
175
|
+
"The shopkeeper smiles gleefully.",
|
|
176
|
+
"Wow. I'm going to name my new villa in your honour.",
|
|
177
|
+
];
|
|
178
|
+
const REACTION_COMMENTS: Record<SaleReaction, readonly string[]> = {
|
|
179
|
+
worthless: COMMENT_WORTHLESS,
|
|
180
|
+
bad: COMMENT_BAD,
|
|
181
|
+
good: COMMENT_GOOD,
|
|
182
|
+
great: COMMENT_GREAT,
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/** The outcome of storeBuy. */
|
|
186
|
+
export interface BuyResult {
|
|
187
|
+
ok: boolean;
|
|
188
|
+
failure?: BuyFailure;
|
|
189
|
+
/** Gold paid (present on success). */
|
|
190
|
+
price?: number;
|
|
191
|
+
/** The object added to the player's pack (present on success). */
|
|
192
|
+
bought?: GameObject;
|
|
193
|
+
/**
|
|
194
|
+
* comment_accept line (do_cmd_buy L1717): set when one_in_(3) fires, drawn
|
|
195
|
+
* from the game RNG BEFORE any empty-store shuffle/maint so the stream order
|
|
196
|
+
* matches C. Absent when the Home retrieves or the roll fails.
|
|
197
|
+
*/
|
|
198
|
+
acceptComment?: string;
|
|
199
|
+
/**
|
|
200
|
+
* store.c:1757-1763: when the purchase empties the store, the shopkeeper
|
|
201
|
+
* either retires (the shuffle roll) or brings out new stock, and SAYS so.
|
|
202
|
+
* "retired" | "restocked", absent when the store did not empty.
|
|
203
|
+
*/
|
|
204
|
+
emptied?: "retired" | "restocked";
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* do_cmd_buy (L1650): buy `amt` of the store-stock object `obj`. Copies the
|
|
209
|
+
* desired amount, checks pack room and affordability, pays, carries it to the
|
|
210
|
+
* player, and reduces the store stock (restocking an emptied store). Learns the
|
|
211
|
+
* flavour, and every rune, on the way out - the same identification do_cmd_sell
|
|
212
|
+
* grants (L1736-1742 / L1947-1953).
|
|
213
|
+
*/
|
|
214
|
+
export function storeBuy(
|
|
215
|
+
ctx: StoreMaintContext,
|
|
216
|
+
store: Store,
|
|
217
|
+
obj: GameObject,
|
|
218
|
+
amt: number,
|
|
219
|
+
player: Player,
|
|
220
|
+
gear: Gear,
|
|
221
|
+
know: TxnKnowledge,
|
|
222
|
+
): BuyResult {
|
|
223
|
+
const { rng, deps } = ctx;
|
|
224
|
+
const { reg, constants } = deps;
|
|
225
|
+
|
|
226
|
+
if (!store.stock.includes(obj)) return { ok: false, failure: "not-in-stock" };
|
|
227
|
+
|
|
228
|
+
/* Get the desired object. */
|
|
229
|
+
const bought = objectCopyAmt(obj, amt);
|
|
230
|
+
|
|
231
|
+
/* Ensure we have room. */
|
|
232
|
+
if (bought.number > invenCarryNum(gear, bought, constants)) {
|
|
233
|
+
return { ok: false, failure: "no-room" };
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Extract the price for the entire stack. */
|
|
237
|
+
const price = priceItem(
|
|
238
|
+
reg,
|
|
239
|
+
store,
|
|
240
|
+
store.owner,
|
|
241
|
+
bought,
|
|
242
|
+
false,
|
|
243
|
+
bought.number,
|
|
244
|
+
know.aware,
|
|
245
|
+
know.noSelling,
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
if (price > player.au) return { ok: false, failure: "cannot-afford" };
|
|
249
|
+
|
|
250
|
+
/* Spend the money. */
|
|
251
|
+
player.au -= price;
|
|
252
|
+
|
|
253
|
+
/* Erase the inscription; give it a store origin. */
|
|
254
|
+
bought.note = null;
|
|
255
|
+
if (bought.origin === ORIGIN.NONE) bought.origin = ORIGIN.STORE;
|
|
256
|
+
|
|
257
|
+
/* Reduce the number of charges in the original store stack. */
|
|
258
|
+
if (tvalCanHaveCharges(obj.tval)) obj.pval -= bought.pval;
|
|
259
|
+
|
|
260
|
+
/* comment_accept (do_cmd_buy L1717): one_in_(3) then ONE_OF. Upstream draws
|
|
261
|
+
* this BEFORE the rune learning at L1739-1741, and the rune loop draws from the
|
|
262
|
+
* main stream too - so this block has to stay ahead of it or a purchase that
|
|
263
|
+
* teaches a rune would put the port's stream out of step with the C. It was
|
|
264
|
+
* previously below, which was RNG-neutral only because nothing drew in between. */
|
|
265
|
+
let acceptComment: string | undefined;
|
|
266
|
+
if (rng.oneIn(3)) {
|
|
267
|
+
acceptComment = COMMENT_ACCEPT[rng.randint0(COMMENT_ACCEPT.length)];
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* "Learn flavor, any effect and all the runes" (do_cmd_buy L1736-1742).
|
|
271
|
+
*
|
|
272
|
+
* The rune half was missing, which is why buying an Amulet of Resist Acid left
|
|
273
|
+
* its rune unknown. This is byte-for-byte the block do_cmd_sell runs at
|
|
274
|
+
* L1947-1953 - the shopkeeper's counter teaches in BOTH directions - and the
|
|
275
|
+
* sell side was wired first (d2f7da13e), so only half the pair existed. The
|
|
276
|
+
* machinery was already being handed to this function: session/game.ts builds
|
|
277
|
+
* `learnRunes` for both directions and this one ignored it.
|
|
278
|
+
*
|
|
279
|
+
* Both halves must land BEFORE invenCarry below: the pack merge can absorb
|
|
280
|
+
* `bought` into an existing stack, and then there is no longer an object here to
|
|
281
|
+
* teach anything about.
|
|
282
|
+
*
|
|
283
|
+
* The home does NOT teach (do_cmd_retrieve L1783-1851 learns nothing at all),
|
|
284
|
+
* so homeRetrieve correctly has no equivalent of this block. */
|
|
285
|
+
if (know.flavor) {
|
|
286
|
+
know.flavor.objectFlavorAware(bought.kind, know.flavorDeps ?? NOOP_FLAVOR_AWARE_DEPS);
|
|
287
|
+
}
|
|
288
|
+
if (know.learnRunes) {
|
|
289
|
+
const { env, runes } = know.learnRunes;
|
|
290
|
+
while (!objectRunesKnown(player, env, bought, runes)) {
|
|
291
|
+
/* Each pass learns one rune. The bail-out is not upstream's (see the same
|
|
292
|
+
* loop in sellObject); a predicate disagreement would hang the game rather
|
|
293
|
+
* than mis-describe an item. */
|
|
294
|
+
if (!objectLearnUnknownRune(rng, player, env, bought, runes, know.flavor, know.flavorDeps)) {
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Give it to the player. */
|
|
301
|
+
invenCarry(gear, bought, packLimits(constants));
|
|
302
|
+
|
|
303
|
+
/* Remove the bought objects unless a readily-replaced staple. */
|
|
304
|
+
let emptied: "retired" | "restocked" | undefined;
|
|
305
|
+
if (storeSaleShouldReduceStock(store, obj)) {
|
|
306
|
+
storeDelete(store, obj, amt);
|
|
307
|
+
|
|
308
|
+
/* Store is empty: maybe shuffle the shopkeeper, then restock. */
|
|
309
|
+
if (store.stock.length === 0) {
|
|
310
|
+
if (rng.oneIn(constants.storeShuffle)) {
|
|
311
|
+
storeShuffle(rng, store);
|
|
312
|
+
emptied = "retired";
|
|
313
|
+
} else {
|
|
314
|
+
emptied = "restocked";
|
|
315
|
+
}
|
|
316
|
+
for (let i = 0; i < 10; i++) storeMaint(ctx, store);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
return {
|
|
321
|
+
ok: true,
|
|
322
|
+
price,
|
|
323
|
+
bought,
|
|
324
|
+
...(acceptComment ? { acceptComment } : {}),
|
|
325
|
+
...(emptied ? { emptied } : {}),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* ------------------------------------------------------------------ */
|
|
330
|
+
/* do_cmd_sell (store.c L1869) */
|
|
331
|
+
/* ------------------------------------------------------------------ */
|
|
332
|
+
|
|
333
|
+
/** Why a sale could not complete. */
|
|
334
|
+
export type SellFailure = "no-item" | "stuck" | "refused" | "no-room";
|
|
335
|
+
|
|
336
|
+
/** The outcome of storeSell. */
|
|
337
|
+
export interface SellResult {
|
|
338
|
+
ok: boolean;
|
|
339
|
+
failure?: SellFailure;
|
|
340
|
+
/** Gold received (0 under birth_no_selling; present on success). */
|
|
341
|
+
price?: number;
|
|
342
|
+
/** The object handed to the store (present on success). */
|
|
343
|
+
sold?: GameObject;
|
|
344
|
+
/** True when the whole pack stack was sold. */
|
|
345
|
+
noneLeft?: boolean;
|
|
346
|
+
/**
|
|
347
|
+
* Whether store_carry accepted the sold object (do_cmd_sell L1985-1998).
|
|
348
|
+
* false means the store discarded it as worthless / no-room; the caller uses
|
|
349
|
+
* this to fire history_lose_artifact for a sold artifact the store rejected.
|
|
350
|
+
*/
|
|
351
|
+
carried?: boolean;
|
|
352
|
+
/**
|
|
353
|
+
* purchase_analyze bucket (do_cmd_sell L1972): set on a successful non-Home
|
|
354
|
+
* sale when birth_no_selling is off. undefined for the Home, no-selling, or
|
|
355
|
+
* when no reaction fires.
|
|
356
|
+
*/
|
|
357
|
+
reaction?: SaleReaction;
|
|
358
|
+
/**
|
|
359
|
+
* ONE_OF(comment_*) line drawn from the game RNG when a reaction fires
|
|
360
|
+
* (purchase_analyze L491-508). The shell prints this; the draw is spent here
|
|
361
|
+
* so Math.random never touches the main stream.
|
|
362
|
+
*/
|
|
363
|
+
reactionComment?: string;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* purchase_analyze (store.c L491-508): classify the shopkeeper's reaction from
|
|
368
|
+
* the gold paid, the item's real value, and its apparent (guessed) value.
|
|
369
|
+
*/
|
|
370
|
+
export function purchaseAnalyze(price: number, value: number, guess: number): SaleReaction | undefined {
|
|
371
|
+
if (value <= 0 && price > value) return "worthless";
|
|
372
|
+
if (value < guess && price > value) return "bad";
|
|
373
|
+
if (value > guess && value < 4 * guess && price < value) return "good";
|
|
374
|
+
if (value > guess && price < value) return "great";
|
|
375
|
+
return undefined;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* do_cmd_sell (L1869): sell `amt` of the gear object at `handle` to the store.
|
|
380
|
+
* Refuses stuck equipped items and items the store will not buy, checks the
|
|
381
|
+
* store has room, pays the player, detaches the items, and hands them to the
|
|
382
|
+
* store. Flavor becomes known; rune learning is DEFERRED (task #13).
|
|
383
|
+
*/
|
|
384
|
+
export function storeSell(
|
|
385
|
+
ctx: StoreMaintContext,
|
|
386
|
+
store: Store,
|
|
387
|
+
handle: number,
|
|
388
|
+
amt: number,
|
|
389
|
+
player: Player,
|
|
390
|
+
gear: Gear,
|
|
391
|
+
know: TxnKnowledge,
|
|
392
|
+
): SellResult {
|
|
393
|
+
const obj = gear.store.get(handle);
|
|
394
|
+
if (!obj) return { ok: false, failure: "no-item" };
|
|
395
|
+
|
|
396
|
+
/* Cannot remove stuck (sticky-cursed) equipped objects (ui-store.c L522). */
|
|
397
|
+
if (isEquipped(player, handle) && !objCanTakeoff(obj)) {
|
|
398
|
+
return { ok: false, failure: "stuck" };
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* gear_object_for_use handles the pack / equipment / quiver split-or-excise. */
|
|
402
|
+
return sellObject(ctx, store, obj, amt, player, know, (n) =>
|
|
403
|
+
gearObjectForUse(gear, player, handle, n),
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* store_sell for a FLOOR object (USE_FLOOR, ui-store.c L487 get_mode): the
|
|
409
|
+
* player's own grid can hold a pile when a store is entered (entering does not
|
|
410
|
+
* move the player onto the store feature), so a floor item is a valid sell
|
|
411
|
+
* source. No equip/stuck guard applies (a floor object is never equipped); the
|
|
412
|
+
* caller supplies the floor_object_for_use detach (game.ts owns GameState, so
|
|
413
|
+
* transact.ts stays free of a game/floor import).
|
|
414
|
+
*/
|
|
415
|
+
export function storeSellFloor(
|
|
416
|
+
ctx: StoreMaintContext,
|
|
417
|
+
store: Store,
|
|
418
|
+
obj: GameObject,
|
|
419
|
+
amt: number,
|
|
420
|
+
player: Player,
|
|
421
|
+
know: TxnKnowledge,
|
|
422
|
+
detach: (n: number) => { obj: GameObject; noneLeft: boolean },
|
|
423
|
+
): SellResult {
|
|
424
|
+
return sellObject(ctx, store, obj, amt, player, know, detach);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* The shared body of do_cmd_sell (store.c L1869), after the source-specific item
|
|
429
|
+
* pick and stuck guard: check the store wants it, that it has room, pay the
|
|
430
|
+
* player, learn flavor, detach the sold copy from its source, hand it to the
|
|
431
|
+
* store, and classify the shopkeeper reaction. `detach` removes `amt` from the
|
|
432
|
+
* chosen source (gear_object_for_use for pack/equip/quiver, floor_object_for_use
|
|
433
|
+
* for a floor pile).
|
|
434
|
+
*/
|
|
435
|
+
function sellObject(
|
|
436
|
+
ctx: StoreMaintContext,
|
|
437
|
+
store: Store,
|
|
438
|
+
obj: GameObject,
|
|
439
|
+
amt: number,
|
|
440
|
+
player: Player,
|
|
441
|
+
know: TxnKnowledge,
|
|
442
|
+
detach: (n: number) => { obj: GameObject; noneLeft: boolean },
|
|
443
|
+
): SellResult {
|
|
444
|
+
const { rng, deps } = ctx;
|
|
445
|
+
const { reg, constants } = deps;
|
|
446
|
+
|
|
447
|
+
amt = Math.min(amt, obj.number);
|
|
448
|
+
|
|
449
|
+
/* Check the store wants the items being sold. */
|
|
450
|
+
if (!storeWillBuy(reg, store, obj, know.aware, know.noSelling, know.runesKnown ?? false)) {
|
|
451
|
+
return { ok: false, failure: "refused" };
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/* A copy representing the number being sold, to test store room. */
|
|
455
|
+
const dummy = objectCopyAmt(obj, amt);
|
|
456
|
+
if (!storeCheckNum(store, dummy)) return { ok: false, failure: "no-room" };
|
|
457
|
+
|
|
458
|
+
const price = priceItem(reg, store, store.owner, dummy, true, amt, know.aware, know.noSelling);
|
|
459
|
+
|
|
460
|
+
/* purchase_analyze's "apparent" value (do_cmd_sell L1940, object_value on the
|
|
461
|
+
* dummy): the guess, taken with the PRE-sale knowledge (know.aware) before the
|
|
462
|
+
* item becomes fully known below. The "actual" value is computed from the sold
|
|
463
|
+
* copy after the sale (L1959, object_value_real). */
|
|
464
|
+
const guess = objectValue(reg, obj, amt, know.aware);
|
|
465
|
+
|
|
466
|
+
/* Get some money. */
|
|
467
|
+
player.au += price;
|
|
468
|
+
|
|
469
|
+
/* Learn flavor (object_flavor_aware, including the #89 ignore fix). */
|
|
470
|
+
if (know.flavor) {
|
|
471
|
+
know.flavor.objectFlavorAware(obj.kind, know.flavorDeps ?? NOOP_FLAVOR_AWARE_DEPS);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/* ...then the runes (do_cmd_sell L1946-1951), BEFORE the detach below, so the
|
|
475
|
+
* sold copy is the fully-known object upstream describes at L1961 and values
|
|
476
|
+
* at L1956. object_fully_known is "all runes known AND the effect known", and
|
|
477
|
+
* upstream makes the effect half true unconditionally on the line above the
|
|
478
|
+
* loop (obj->known->effect = obj->effect); the port's known shadow derives the
|
|
479
|
+
* effect from awareness instead of storing it, which objectFlavorAware has just
|
|
480
|
+
* granted for a flavoured or non-wearable kind and for a wearable with a KIND
|
|
481
|
+
* effect (known-object.ts L226-239). An ego- or artifact-only activation is
|
|
482
|
+
* therefore not covered here - the port has no per-object effect-known bit to
|
|
483
|
+
* set, and adding one is a save-format change. So the loop condition below is
|
|
484
|
+
* the rune half alone, which is what terminates it upstream too. */
|
|
485
|
+
if (know.learnRunes) {
|
|
486
|
+
const { env, runes } = know.learnRunes;
|
|
487
|
+
while (!objectRunesKnown(player, env, obj, runes)) {
|
|
488
|
+
/* Each pass learns one rune. The bail-out is not upstream's - upstream
|
|
489
|
+
* cannot stall because object_find_unknown_rune and object_runes_known
|
|
490
|
+
* read the same predicates - but a disagreement here would hang the game
|
|
491
|
+
* rather than mis-describe an item. */
|
|
492
|
+
if (!objectLearnUnknownRune(rng, player, env, obj, runes, know.flavor, know.flavorDeps)) {
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* Take a proper copy of the now known-about object out of its source. */
|
|
499
|
+
const { obj: sold, noneLeft } = detach(amt);
|
|
500
|
+
|
|
501
|
+
/* The store gets that object (or, if worthless/no room, discards it). The
|
|
502
|
+
* caller reads `carried` (whether store_carry accepted it) so it can fire
|
|
503
|
+
* history_lose_artifact for a rejected artifact (do_cmd_sell L1985-1998). */
|
|
504
|
+
const carried = storeCarry(rng, reg, constants, store, sold, true) !== null;
|
|
505
|
+
|
|
506
|
+
/* purchase_analyze (do_cmd_sell L1966-1972): only a real store reacts, and
|
|
507
|
+
* only when birth_no_selling is off (the no-selling branch just says "You had
|
|
508
|
+
* ..."). value = object_value_real(sold, amt). ONE_OF(comment_*) draws from
|
|
509
|
+
* the game RNG at this position (store.c L495-507). */
|
|
510
|
+
let reaction: SaleReaction | undefined;
|
|
511
|
+
let reactionComment: string | undefined;
|
|
512
|
+
if (store.feat !== FEAT.HOME && !know.noSelling) {
|
|
513
|
+
reaction = purchaseAnalyze(price, objectValueReal(reg, sold, amt), guess);
|
|
514
|
+
if (reaction) {
|
|
515
|
+
const arr = REACTION_COMMENTS[reaction];
|
|
516
|
+
reactionComment = arr[rng.randint0(arr.length)];
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
return {
|
|
521
|
+
ok: true,
|
|
522
|
+
price,
|
|
523
|
+
sold,
|
|
524
|
+
noneLeft,
|
|
525
|
+
carried,
|
|
526
|
+
...(reaction ? { reaction } : {}),
|
|
527
|
+
...(reactionComment ? { reactionComment } : {}),
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/* ------------------------------------------------------------------ */
|
|
532
|
+
/* do_cmd_retrieve (store.c L1783) */
|
|
533
|
+
/* ------------------------------------------------------------------ */
|
|
534
|
+
|
|
535
|
+
/** The outcome of homeRetrieve / homeStash. */
|
|
536
|
+
export interface HomeResult {
|
|
537
|
+
ok: boolean;
|
|
538
|
+
failure?: "no-item" | "no-room" | "stuck";
|
|
539
|
+
/** The moved object (present on success). */
|
|
540
|
+
obj?: GameObject;
|
|
541
|
+
/** True when the whole source stack was moved. */
|
|
542
|
+
noneLeft?: boolean;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* do_cmd_retrieve (L1783): take `amt` of a home-stock object into the pack.
|
|
547
|
+
* Copies the amount, checks pack room, redistributes charges out of the home
|
|
548
|
+
* stack, carries it to the player, and reduces the home stock. No gold.
|
|
549
|
+
*/
|
|
550
|
+
export function homeRetrieve(
|
|
551
|
+
store: Store,
|
|
552
|
+
obj: GameObject,
|
|
553
|
+
amt: number,
|
|
554
|
+
gear: Gear,
|
|
555
|
+
constants: Constants,
|
|
556
|
+
): HomeResult {
|
|
557
|
+
if (!store.stock.includes(obj)) return { ok: false, failure: "no-item" };
|
|
558
|
+
|
|
559
|
+
/* Get the desired object. */
|
|
560
|
+
const picked = objectCopyAmt(obj, amt);
|
|
561
|
+
|
|
562
|
+
/* Ensure we have room. */
|
|
563
|
+
if (picked.number > invenCarryNum(gear, picked, constants)) {
|
|
564
|
+
return { ok: false, failure: "no-room" };
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/* Whether the whole home stack is leaving (before store_delete mutates it). */
|
|
568
|
+
const noneLeft = amt >= obj.number;
|
|
569
|
+
|
|
570
|
+
/* Distribute charges of wands, staves, or rods. */
|
|
571
|
+
distributeCharges(obj, picked, amt, true);
|
|
572
|
+
|
|
573
|
+
/* Give it to the player. */
|
|
574
|
+
invenCarry(gear, picked, packLimits(constants));
|
|
575
|
+
|
|
576
|
+
/* Reduce or remove the item. */
|
|
577
|
+
storeDelete(store, obj, amt);
|
|
578
|
+
|
|
579
|
+
return { ok: true, obj: picked, noneLeft };
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/* ------------------------------------------------------------------ */
|
|
583
|
+
/* do_cmd_stash / home_carry (store.c L2009 / L870) */
|
|
584
|
+
/* ------------------------------------------------------------------ */
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* home_carry (L870): add an object to the home's inventory, merging into a
|
|
588
|
+
* compatible stack (OSTACK_PACK - the home acts like the player) or taking a
|
|
589
|
+
* free slot. The object is dropped (lost) if the home is full.
|
|
590
|
+
*/
|
|
591
|
+
export function homeCarry(
|
|
592
|
+
store: Store,
|
|
593
|
+
obj: GameObject,
|
|
594
|
+
constants: Constants,
|
|
595
|
+
): void {
|
|
596
|
+
const limits = packLimits(constants);
|
|
597
|
+
|
|
598
|
+
/* Try to combine with an existing home stack. */
|
|
599
|
+
for (const stockObj of store.stock) {
|
|
600
|
+
if (objectMergeable(stockObj, obj, OSTACK_PACK, limits)) {
|
|
601
|
+
objectAbsorb(stockObj, obj, ORIGIN.MIXED);
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
/* No space? Then the object is lost (upstream frees it). */
|
|
607
|
+
if (store.stock.length >= store.stockSize) return;
|
|
608
|
+
|
|
609
|
+
store.stock.push(obj);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* do_cmd_stash (L2009): drop `amt` of the gear object at `handle` into the
|
|
614
|
+
* home. Refuses stuck equipped items, checks the home has room, detaches the
|
|
615
|
+
* items, and lets the home carry them. No gold.
|
|
616
|
+
*/
|
|
617
|
+
export function homeStash(
|
|
618
|
+
store: Store,
|
|
619
|
+
handle: number,
|
|
620
|
+
amt: number,
|
|
621
|
+
player: Player,
|
|
622
|
+
gear: Gear,
|
|
623
|
+
constants: Constants,
|
|
624
|
+
): HomeResult {
|
|
625
|
+
const obj = gear.store.get(handle);
|
|
626
|
+
if (!obj) return { ok: false, failure: "no-item" };
|
|
627
|
+
|
|
628
|
+
/* Cannot remove stuck (sticky-cursed) equipped objects. */
|
|
629
|
+
if (isEquipped(player, handle) && !objCanTakeoff(obj)) {
|
|
630
|
+
return { ok: false, failure: "stuck" };
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
amt = Math.min(amt, obj.number);
|
|
634
|
+
|
|
635
|
+
/* A copy representing the number being stashed, to test home room. */
|
|
636
|
+
const dummy = objectCopyAmt(obj, amt);
|
|
637
|
+
if (!storeCheckNum(store, dummy)) return { ok: false, failure: "no-room" };
|
|
638
|
+
|
|
639
|
+
/* Now get the real item and let the home carry it. */
|
|
640
|
+
const { obj: dropped, noneLeft } = gearObjectForUse(gear, player, handle, amt);
|
|
641
|
+
homeCarry(store, dropped, constants);
|
|
642
|
+
|
|
643
|
+
return { ok: true, obj: dropped, noneLeft };
|
|
644
|
+
}
|