@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,685 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The once-every-ten-game-turns world upkeep helpers, ported statement by
|
|
3
|
+
* statement from reference/src/game-world.c process_world (Angband 4.2.6) plus
|
|
4
|
+
* player_update_light / player_over_exert (player-util.c) and compact_monsters
|
|
5
|
+
* (mon-make.c). The orchestrating processWorld / decreaseTimeouts stay in
|
|
6
|
+
* game/loop.ts (where the turn loop and HP/mana regen live); this module holds
|
|
7
|
+
* the individual steps so loop.ts reads as the upstream statement list.
|
|
8
|
+
*
|
|
9
|
+
* Every RNG-drawing step is reproduced in exact upstream order so the seeded
|
|
10
|
+
* stream is faithful for save determinism:
|
|
11
|
+
* - ambient monster: one_in_(alloc_monster_chance), drawn UNCONDITIONALLY each
|
|
12
|
+
* world tick (spawnAmbientMonster in mon-place.ts draws x-then-y per attempt);
|
|
13
|
+
* - damage over time: poison / cut are RNG-free, but each take_hit can draw the
|
|
14
|
+
* bloodlust death-save randint0(10) (state.rng is always threaded in);
|
|
15
|
+
* - bloodlust over-exert: randint0(100) per set PY_EXERT_* flag in SOURCE order
|
|
16
|
+
* (CON, FAINT, SCRAMBLE, CUT, CONF, HALLU, SLOW, HP), then randint1(amount);
|
|
17
|
+
* - black breath: three one_in_(2) always drawn in order when active;
|
|
18
|
+
* - faint: one_in_(10) then randint0(5); starvation: RNG-free;
|
|
19
|
+
* - exp drain: one_in_(10) then damroll(10,6) only when gated;
|
|
20
|
+
* - recharge / trap timeouts / town clock: RNG-free (randcalc AVERAGE);
|
|
21
|
+
* - compact_monsters(c, 64) on an overcrowded level: randint0(100) per
|
|
22
|
+
* candidate in the vicious-iteration order.
|
|
23
|
+
*/
|
|
24
|
+
import { ELEM, MSG, OF, PF, PROJ, RF, STAT, TMD } from "../generated/index.js";
|
|
25
|
+
import { tvalIsLight } from "../obj/object.js";
|
|
26
|
+
import { equipLearnElement, equipLearnFlag } from "../obj/knowledge.js";
|
|
27
|
+
import { adjustDam } from "../world/projection.js";
|
|
28
|
+
import { invenDamage } from "./project-obj.js";
|
|
29
|
+
import { numberCharging, rechargeTimeout, tvalCanHaveTimeout, } from "../obj/recharge.js";
|
|
30
|
+
import { playerDecTimed, playerIncTimed, playerSetTimed, playerTimedGradeEq, } from "../player/timed.js";
|
|
31
|
+
import { playerApplyDamageReduction, takeHit } from "../player/take-hit.js";
|
|
32
|
+
import { playerExpLose, playerStatDec } from "../player/exp.js";
|
|
33
|
+
import { turnEnergy } from "../mon/monster.js";
|
|
34
|
+
import { monsterIsUnique } from "../mon/predicate.js";
|
|
35
|
+
import { gearGet, gearObjectForUse } from "./gear.js";
|
|
36
|
+
import { floorPile } from "./floor.js";
|
|
37
|
+
import { monsterGroupChangeIndex } from "./mon-group.js";
|
|
38
|
+
import { disturb } from "./player-path.js";
|
|
39
|
+
import { DEFAULT_HITPOINT_WARN } from "./project-cast.js";
|
|
40
|
+
import { deleteMonster } from "./context.js";
|
|
41
|
+
/** player-util.h PY_EXERT_* over-exertion bit flags. */
|
|
42
|
+
const PY_EXERT_CON = 0x01;
|
|
43
|
+
const PY_EXERT_FAINT = 0x02;
|
|
44
|
+
const PY_EXERT_SCRAMBLE = 0x04;
|
|
45
|
+
const PY_EXERT_CUT = 0x08;
|
|
46
|
+
const PY_EXERT_CONF = 0x10;
|
|
47
|
+
const PY_EXERT_HALLU = 0x20;
|
|
48
|
+
const PY_EXERT_SLOW = 0x40;
|
|
49
|
+
const PY_EXERT_HP = 0x80;
|
|
50
|
+
/** is_daytime (game-world.c L125): the first half of each day is daylight. */
|
|
51
|
+
export function isDaytime(turn, dayLength) {
|
|
52
|
+
return turn % (10 * dayLength) < (10 * dayLength) / 2;
|
|
53
|
+
}
|
|
54
|
+
/** A standalone world message ("The sun has risen.", "You faint...", ...). */
|
|
55
|
+
function worldMsg(state, text) {
|
|
56
|
+
const sink = state.world?.timedHooks?.onMessage;
|
|
57
|
+
if (sink)
|
|
58
|
+
sink(text, "");
|
|
59
|
+
else
|
|
60
|
+
state.msg?.(text);
|
|
61
|
+
}
|
|
62
|
+
/** player_of_has over the live derived state (racial + worn object flags). */
|
|
63
|
+
export function playerOfHasWorld(state, flag) {
|
|
64
|
+
return state.playerState?.flags.has(flag) ?? false;
|
|
65
|
+
}
|
|
66
|
+
/** player_has over the live derived state (class / race player flags). */
|
|
67
|
+
export function playerHasWorld(state, flag) {
|
|
68
|
+
return state.playerState?.pflags.has(flag) ?? false;
|
|
69
|
+
}
|
|
70
|
+
/** state.dam_red / state.perc_dam_red from the last calc_bonuses (else zero). */
|
|
71
|
+
function worldReduction(state) {
|
|
72
|
+
const ps = state.playerState;
|
|
73
|
+
if (!ps)
|
|
74
|
+
return { damRed: 0, percDamRed: 0 };
|
|
75
|
+
return { damRed: ps.damRed, percDamRed: ps.percDamRed };
|
|
76
|
+
}
|
|
77
|
+
/** A TakeHitTarget view whose chp / is_dead writes back to the state. */
|
|
78
|
+
function worldTakeHitTarget(state) {
|
|
79
|
+
const p = state.actor.player;
|
|
80
|
+
return {
|
|
81
|
+
get chp() {
|
|
82
|
+
return p.chp;
|
|
83
|
+
},
|
|
84
|
+
set chp(v) {
|
|
85
|
+
p.chp = v;
|
|
86
|
+
},
|
|
87
|
+
mhp: p.mhp,
|
|
88
|
+
lev: p.lev,
|
|
89
|
+
get isDead() {
|
|
90
|
+
return state.isDead;
|
|
91
|
+
},
|
|
92
|
+
set isDead(v) {
|
|
93
|
+
state.isDead = v;
|
|
94
|
+
},
|
|
95
|
+
timed: p.timed,
|
|
96
|
+
/* Bug fix (verify t2verify__options-settings-screen): "hitpoint_warn" is
|
|
97
|
+
* not a boolean option name (it is the scalar OptionState.hitpointWarn
|
|
98
|
+
* field), so the old `state.options?.get("hitpoint_warn")` always
|
|
99
|
+
* returned false and the low-hp warning threshold collapsed to 0. */
|
|
100
|
+
hitpointWarn: state.options?.hitpointWarn ?? DEFAULT_HITPOINT_WARN,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** player_apply_damage_reduction on the live player. */
|
|
104
|
+
export function applyWorldDamageReduction(state, dam) {
|
|
105
|
+
return playerApplyDamageReduction(worldTakeHitTarget(state), worldReduction(state), dam);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* take_hit on the live player, always threading state.rng so the bloodlust
|
|
109
|
+
* death-save randint0(10) (player-util.c L232) is drawn faithfully for every
|
|
110
|
+
* DoT source, not just the bloodlust over-exert block.
|
|
111
|
+
*/
|
|
112
|
+
export function worldTakeHit(state, dam, killer) {
|
|
113
|
+
const hooks = {
|
|
114
|
+
rng: state.rng,
|
|
115
|
+
...(state.world?.takeHitHooks ?? {}),
|
|
116
|
+
};
|
|
117
|
+
takeHit(worldTakeHitTarget(state), dam, killer, hooks);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* player_check_terrain_damage (player-util.c:913-935): the fire damage a step
|
|
121
|
+
* onto fiery terrain (lava) would inflict right now. base 100+randint1(100),
|
|
122
|
+
* adjust_dam for the live fire resistance, OF_FEATHER halves. `actual` mirrors
|
|
123
|
+
* C's parameter: when true the mitigating fire-resist rune is learned
|
|
124
|
+
* (equip_learn_element, the actual damage path); when false (move_player's
|
|
125
|
+
* pre-move threshold/confirm check) nothing is learned. The RNG drawn is
|
|
126
|
+
* IDENTICAL either way, so calling this once for the pre-move check and once for
|
|
127
|
+
* the post-turn damage reproduces C's faithful double draw. Zero when the grid
|
|
128
|
+
* is not fiery or without a bound projection table.
|
|
129
|
+
*/
|
|
130
|
+
export function playerCheckTerrainDamage(state, grid, actual) {
|
|
131
|
+
if (!state.chunk.isFiery(grid))
|
|
132
|
+
return 0;
|
|
133
|
+
const projections = state.world?.projections;
|
|
134
|
+
if (!projections)
|
|
135
|
+
return 0;
|
|
136
|
+
const res = state.playerState?.elInfo[ELEM.FIRE]?.resLevel ?? 0;
|
|
137
|
+
/* adjust_dam(actual=true): learn the fire-resist rune from the mitigation. */
|
|
138
|
+
if (actual)
|
|
139
|
+
equipLearnElement(state.actor.player, state.runeEnv, PROJ.FIRE);
|
|
140
|
+
let dam = adjustDam(state.rng, projections, PROJ.FIRE, 100 + state.rng.randint1(100), "randomise", res);
|
|
141
|
+
/* Feather fall makes one lightfooted (player-util.c:926). */
|
|
142
|
+
if (playerOfHasWorld(state, OF.FEATHER))
|
|
143
|
+
dam = Math.trunc(dam / 2);
|
|
144
|
+
return dam;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* player_take_terrain_damage (player-util.c:913-966): fiery terrain (lava) burns
|
|
148
|
+
* the player once per acted turn while they stand on it (called at the
|
|
149
|
+
* game-world.c:864 seam, after the command uses energy). Draws the actual fire
|
|
150
|
+
* damage via playerCheckTerrainDamage(actual=true), then damage reduction, the
|
|
151
|
+
* feature hurt message, inven_damage(PROJ_FIRE) on the RAW damage, and take_hit
|
|
152
|
+
* with the die message. Returns true if the player died.
|
|
153
|
+
*/
|
|
154
|
+
export function playerTakeTerrainDamage(state) {
|
|
155
|
+
const grid = state.actor.grid;
|
|
156
|
+
const dam = playerCheckTerrainDamage(state, grid, true);
|
|
157
|
+
if (dam <= 0)
|
|
158
|
+
return false;
|
|
159
|
+
const feat = state.chunk.feature(grid);
|
|
160
|
+
/* Inventory damage is on the RAW incoming damage; the player takes the
|
|
161
|
+
* reduced amount (player-util.c:954-965). */
|
|
162
|
+
const reduced = applyWorldDamageReduction(state, dam);
|
|
163
|
+
const damText = reduced > 0 && state.options?.get("show_damage") ? ` (${reduced})` : "";
|
|
164
|
+
worldMsg(state, `${feat.hurtMsg}${damText}`);
|
|
165
|
+
invenDamage(state, PROJ.FIRE, dam);
|
|
166
|
+
worldTakeHit(state, reduced, feat.dieMsg);
|
|
167
|
+
return state.isDead;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* player_over_exert (player-util.c L820): random bad stuff from over-exertion.
|
|
171
|
+
* Tests each PY_EXERT_* flag in SOURCE if-block order (CON, FAINT, SCRAMBLE,
|
|
172
|
+
* CUT, CONF, HALLU, SLOW, HP), drawing randint0(100) per set flag and, on a
|
|
173
|
+
* hit, randint1(amount) (or the CON perm sub-roll). Returns true if the player
|
|
174
|
+
* died in the HP branch.
|
|
175
|
+
*/
|
|
176
|
+
export function playerOverExert(state, flag, chance, amount) {
|
|
177
|
+
if (chance <= 0)
|
|
178
|
+
return false;
|
|
179
|
+
const p = state.actor.player;
|
|
180
|
+
const rng = state.rng;
|
|
181
|
+
const env = state.world;
|
|
182
|
+
const table = env?.timedTable;
|
|
183
|
+
const thooks = env?.timedHooks ?? {};
|
|
184
|
+
const inc = (idx, amt, check) => {
|
|
185
|
+
const eff = table?.[idx];
|
|
186
|
+
if (eff)
|
|
187
|
+
playerIncTimed(p, eff, amt, true, true, check, thooks);
|
|
188
|
+
};
|
|
189
|
+
/* CON damage. */
|
|
190
|
+
if (flag & PY_EXERT_CON) {
|
|
191
|
+
if (rng.randint0(100) < chance) {
|
|
192
|
+
const perm = rng.randint0(100) < Math.trunc(chance / 2) && chance >= 50;
|
|
193
|
+
worldMsg(state, "You have damaged your health!");
|
|
194
|
+
playerStatDec(p, STAT.CON, perm);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/* Fainting. */
|
|
198
|
+
if (flag & PY_EXERT_FAINT) {
|
|
199
|
+
if (rng.randint0(100) < chance) {
|
|
200
|
+
worldMsg(state, "You faint from the effort!");
|
|
201
|
+
inc(TMD.PARALYZED, rng.randint1(amount), false);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/* Scrambled stats. */
|
|
205
|
+
if (flag & PY_EXERT_SCRAMBLE) {
|
|
206
|
+
if (rng.randint0(100) < chance)
|
|
207
|
+
inc(TMD.SCRAMBLE, rng.randint1(amount), true);
|
|
208
|
+
}
|
|
209
|
+
/* Cut damage. */
|
|
210
|
+
if (flag & PY_EXERT_CUT) {
|
|
211
|
+
if (rng.randint0(100) < chance) {
|
|
212
|
+
worldMsg(state, "Wounds appear on your body!");
|
|
213
|
+
inc(TMD.CUT, rng.randint1(amount), false);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/* Confusion. */
|
|
217
|
+
if (flag & PY_EXERT_CONF) {
|
|
218
|
+
if (rng.randint0(100) < chance)
|
|
219
|
+
inc(TMD.CONFUSED, rng.randint1(amount), true);
|
|
220
|
+
}
|
|
221
|
+
/* Hallucination. */
|
|
222
|
+
if (flag & PY_EXERT_HALLU) {
|
|
223
|
+
if (rng.randint0(100) < chance)
|
|
224
|
+
inc(TMD.IMAGE, rng.randint1(amount), true);
|
|
225
|
+
}
|
|
226
|
+
/* Slowing. */
|
|
227
|
+
if (flag & PY_EXERT_SLOW) {
|
|
228
|
+
if (rng.randint0(100) < chance) {
|
|
229
|
+
worldMsg(state, "You feel suddenly lethargic.");
|
|
230
|
+
inc(TMD.SLOW, rng.randint1(amount), false);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/* HP. */
|
|
234
|
+
if (flag & PY_EXERT_HP) {
|
|
235
|
+
if (rng.randint0(100) < chance) {
|
|
236
|
+
const dam = applyWorldDamageReduction(state, rng.randint1(amount));
|
|
237
|
+
worldMsg(state, "You cry out in sudden pain!");
|
|
238
|
+
worldTakeHit(state, dam, "over-exertion");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return state.isDead;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Damage (or healing) over time (game-world.c L586-651): poison, cuts,
|
|
245
|
+
* bloodlust over-exert, timed heal and Black Breath, in order. Each take_hit
|
|
246
|
+
* can end the game; returns true when the player died so processWorld
|
|
247
|
+
* early-returns.
|
|
248
|
+
*/
|
|
249
|
+
export function processDamageOverTime(state) {
|
|
250
|
+
const p = state.actor.player;
|
|
251
|
+
const table = state.world?.timedTable;
|
|
252
|
+
/* Take damage from poison. */
|
|
253
|
+
if (p.timed[TMD.POISONED]) {
|
|
254
|
+
worldTakeHit(state, applyWorldDamageReduction(state, 1), "poison");
|
|
255
|
+
if (state.isDead)
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
/* Take damage from cuts, worse from serious cuts. */
|
|
259
|
+
if (p.timed[TMD.CUT]) {
|
|
260
|
+
let i;
|
|
261
|
+
const cut = table?.[TMD.CUT];
|
|
262
|
+
if (playerHasWorld(state, PF.ROCK)) {
|
|
263
|
+
/* Rock players just maintain. */
|
|
264
|
+
i = 0;
|
|
265
|
+
}
|
|
266
|
+
else if (cut &&
|
|
267
|
+
(playerTimedGradeEq(p, cut, "Mortal Wound") ||
|
|
268
|
+
playerTimedGradeEq(p, cut, "Deep Gash"))) {
|
|
269
|
+
i = 3;
|
|
270
|
+
}
|
|
271
|
+
else if (cut && playerTimedGradeEq(p, cut, "Severe Cut")) {
|
|
272
|
+
i = 2;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
i = 1;
|
|
276
|
+
}
|
|
277
|
+
worldTakeHit(state, applyWorldDamageReduction(state, i), "a fatal wound");
|
|
278
|
+
if (state.isDead)
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
/* Side effects of diminishing bloodlust. */
|
|
282
|
+
if (p.timed[TMD.BLOODLUST]) {
|
|
283
|
+
playerOverExert(state, PY_EXERT_HP | PY_EXERT_CUT | PY_EXERT_SLOW, Math.max(0, 10 - (p.timed[TMD.BLOODLUST] ?? 0)), Math.trunc(p.chp / 10));
|
|
284
|
+
if (state.isDead)
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
/* Timed healing (EF_HEAL_HP "30": a clamped 30-HP heal with its message). */
|
|
288
|
+
if (p.timed[TMD.HEAL]) {
|
|
289
|
+
if (p.chp < p.mhp) {
|
|
290
|
+
const num = 30;
|
|
291
|
+
p.chp += num;
|
|
292
|
+
if (p.chp >= p.mhp) {
|
|
293
|
+
p.chp = p.mhp;
|
|
294
|
+
p.chpFrac = 0;
|
|
295
|
+
}
|
|
296
|
+
/* 15 <= 30 < 35 grade bucket (effect-handler-attack.c L243). */
|
|
297
|
+
worldMsg(state, "You feel much better.");
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/* Effects of Black Breath: three separate one_in_(2) rolls in order. */
|
|
301
|
+
if (p.timed[TMD.BLACKBREATH]) {
|
|
302
|
+
if (state.rng.oneIn(2)) {
|
|
303
|
+
worldMsg(state, "The Black Breath sickens you.");
|
|
304
|
+
playerStatDec(p, STAT.CON, false);
|
|
305
|
+
}
|
|
306
|
+
if (state.rng.oneIn(2)) {
|
|
307
|
+
worldMsg(state, "The Black Breath saps your strength.");
|
|
308
|
+
playerStatDec(p, STAT.STR, false);
|
|
309
|
+
}
|
|
310
|
+
if (state.rng.oneIn(2)) {
|
|
311
|
+
/* Life draining. */
|
|
312
|
+
const drain = 100 + Math.trunc(p.exp / 100) * state.z.lifeDrainPercent;
|
|
313
|
+
worldMsg(state, "The Black Breath dims your life force.");
|
|
314
|
+
playerExpLose(p, drain, false, expDepsOf(state));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
/** A default ExpDeps ({ rng }) when the world env supplies none. */
|
|
320
|
+
function expDepsOf(state) {
|
|
321
|
+
return state.world?.expDeps ?? { rng: state.rng };
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Digest (game-world.c L656-692): the normal turn%100 digestion, the ungated
|
|
325
|
+
* fast-metabolism drain while TMD_HEAL is active, and the gorged branch. All
|
|
326
|
+
* decrements route through player_dec_timed so hunger grade messages fire.
|
|
327
|
+
* Returns true when the gorged branch ran (PU_BONUS).
|
|
328
|
+
*/
|
|
329
|
+
export function digestFood(state) {
|
|
330
|
+
const p = state.actor.player;
|
|
331
|
+
const table = state.world?.timedTable;
|
|
332
|
+
const foodEff = table?.[TMD.FOOD];
|
|
333
|
+
if (!foodEff)
|
|
334
|
+
return false;
|
|
335
|
+
const thooks = state.world?.timedHooks ?? {};
|
|
336
|
+
const dec = (v) => {
|
|
337
|
+
playerDecTimed(p, foodEff, v, false, true, thooks);
|
|
338
|
+
};
|
|
339
|
+
if (!playerTimedGradeEq(p, foodEff, "Full")) {
|
|
340
|
+
/* Digest normally. */
|
|
341
|
+
if (state.turn % 100 === 0) {
|
|
342
|
+
/* Basic digestion rate based on speed. */
|
|
343
|
+
let i = turnEnergy(state.actor.speed, state.z.moveEnergy);
|
|
344
|
+
/* Adjust for food value. */
|
|
345
|
+
i = Math.trunc((i * 100) / state.z.foodValue);
|
|
346
|
+
/* Regeneration takes more food. */
|
|
347
|
+
if (playerOfHasWorld(state, OF.REGEN))
|
|
348
|
+
i *= 2;
|
|
349
|
+
/* Slow digestion takes less food. */
|
|
350
|
+
if (playerOfHasWorld(state, OF.SLOW_DIGEST))
|
|
351
|
+
i = Math.trunc(i / 2);
|
|
352
|
+
/* Minimal digestion. */
|
|
353
|
+
if (i < 1)
|
|
354
|
+
i = 1;
|
|
355
|
+
dec(i);
|
|
356
|
+
}
|
|
357
|
+
/* Fast metabolism (ungated - runs every world tick while healing). */
|
|
358
|
+
if (p.timed[TMD.HEAL]) {
|
|
359
|
+
dec(8 * state.z.foodValue);
|
|
360
|
+
if ((p.timed[TMD.FOOD] ?? 0) < state.z.foodHungry) {
|
|
361
|
+
const healEff = table?.[TMD.HEAL];
|
|
362
|
+
if (healEff)
|
|
363
|
+
playerSetTimed(p, healEff, 0, true, true, thooks);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return false;
|
|
367
|
+
}
|
|
368
|
+
/* Digest quickly when gorged. */
|
|
369
|
+
dec(Math.trunc(5000 / state.z.foodValue));
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Faint or starving (game-world.c L694-716): a Faint player may pass out
|
|
374
|
+
* (one_in_(10) then randint0(5)); a Starving player takes take_hit. Returns
|
|
375
|
+
* true when the player died.
|
|
376
|
+
*/
|
|
377
|
+
export function processFaintOrStarve(state) {
|
|
378
|
+
const p = state.actor.player;
|
|
379
|
+
const table = state.world?.timedTable;
|
|
380
|
+
const foodEff = table?.[TMD.FOOD];
|
|
381
|
+
if (!foodEff)
|
|
382
|
+
return false;
|
|
383
|
+
if (playerTimedGradeEq(p, foodEff, "Faint")) {
|
|
384
|
+
/* Faint occasionally. */
|
|
385
|
+
if (!p.timed[TMD.PARALYZED] && state.rng.oneIn(10)) {
|
|
386
|
+
worldMsg(state, "You faint from the lack of food.");
|
|
387
|
+
disturb(state);
|
|
388
|
+
const paralyzed = table?.[TMD.PARALYZED];
|
|
389
|
+
if (paralyzed) {
|
|
390
|
+
/* Faint (bypass free action). */
|
|
391
|
+
playerIncTimed(p, paralyzed, 1 + state.rng.randint0(5), true, true, false, state.world?.timedHooks ?? {});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
else if (playerTimedGradeEq(p, foodEff, "Starving")) {
|
|
396
|
+
/* Calculate damage. */
|
|
397
|
+
const i = Math.trunc((state.z.foodStarve - (p.timed[TMD.FOOD] ?? 0)) / 10);
|
|
398
|
+
worldTakeHit(state, applyWorldDamageReduction(state, i), "starvation");
|
|
399
|
+
if (state.isDead)
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* player_update_light (player-util.c L682): burn one turn of fuel in the
|
|
406
|
+
* wielded light, dim / out messages, and delete a burnt-out torch. Draws no
|
|
407
|
+
* RNG. Returns true when the light state changed enough to want a bonus recalc
|
|
408
|
+
* (the light went out or a torch was consumed).
|
|
409
|
+
*/
|
|
410
|
+
export function playerUpdateLight(state) {
|
|
411
|
+
const p = state.actor.player;
|
|
412
|
+
const lightSlot = p.body.slots.findIndex((s) => s.type === "LIGHT");
|
|
413
|
+
if (lightSlot < 0)
|
|
414
|
+
return false;
|
|
415
|
+
const handle = p.equipment[lightSlot] ?? 0;
|
|
416
|
+
const obj = handle ? gearGet(state.gear, handle) : null;
|
|
417
|
+
let changed = false;
|
|
418
|
+
/* Burn some fuel in the current light. */
|
|
419
|
+
if (obj && tvalIsLight(obj.tval)) {
|
|
420
|
+
let burnFuel = true;
|
|
421
|
+
/* No wanton burning of light during the day in the town. */
|
|
422
|
+
if (state.chunk.depth === 0 && isDaytime(state.turn, state.z.dayLength)) {
|
|
423
|
+
burnFuel = false;
|
|
424
|
+
}
|
|
425
|
+
/* The NO_FUEL flag: well... */
|
|
426
|
+
if (obj.flags.has(OF.NO_FUEL))
|
|
427
|
+
burnFuel = false;
|
|
428
|
+
/* Use some fuel (except on artifacts, or during the day). */
|
|
429
|
+
if (burnFuel && obj.timeout > 0) {
|
|
430
|
+
obj.timeout--;
|
|
431
|
+
/* Special treatment when blind. */
|
|
432
|
+
if (p.timed[TMD.BLIND]) {
|
|
433
|
+
/* Save some light for later. */
|
|
434
|
+
if (obj.timeout === 0)
|
|
435
|
+
obj.timeout++;
|
|
436
|
+
}
|
|
437
|
+
else if (obj.timeout === 0) {
|
|
438
|
+
/* The light is now out. */
|
|
439
|
+
disturb(state);
|
|
440
|
+
worldMsg(state, "Your light has gone out!");
|
|
441
|
+
changed = true;
|
|
442
|
+
/* If it's a torch, now is the time to delete it. */
|
|
443
|
+
if (obj.flags.has(OF.BURNS_OUT)) {
|
|
444
|
+
gearObjectForUse(state.gear, p, handle, 1);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
else if (obj.timeout < 50 && obj.timeout % 20 === 0) {
|
|
448
|
+
/* The light is getting dim. */
|
|
449
|
+
disturb(state);
|
|
450
|
+
worldMsg(state, "Your light is growing faint.");
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/* Calculate torch radius (PU_TORCH). */
|
|
455
|
+
return changed;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* recharged_notice (game-world.c L147): tell the player when an inscribed ("!!")
|
|
459
|
+
* or (with notify_recharge) any item recharges. Message-only; no RNG.
|
|
460
|
+
*/
|
|
461
|
+
function rechargedNotice(state, obj, all) {
|
|
462
|
+
let notify = state.options?.get("notify_recharge") ?? false;
|
|
463
|
+
if (!notify && obj.note && obj.note.includes("!!"))
|
|
464
|
+
notify = true;
|
|
465
|
+
if (!notify)
|
|
466
|
+
return;
|
|
467
|
+
disturb(state);
|
|
468
|
+
const name = obj.kind.name;
|
|
469
|
+
if (obj.number > 1) {
|
|
470
|
+
worldMsg(state, all ? `Your ${name} have recharged.` : `One of your ${name} has recharged.`);
|
|
471
|
+
}
|
|
472
|
+
else if (obj.artifact) {
|
|
473
|
+
worldMsg(state, `The ${name} has recharged.`);
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
worldMsg(state, `Your ${name} has recharged.`);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* recharge_objects (game-world.c L197): recharge activatable equipment, rods in
|
|
481
|
+
* the pack and rods on the floor. randcalc AVERAGE is deterministic, so no RNG.
|
|
482
|
+
*/
|
|
483
|
+
export function rechargeObjects(state) {
|
|
484
|
+
const rng = state.rng;
|
|
485
|
+
const p = state.actor.player;
|
|
486
|
+
/* Recharge equipment (activatable objects). */
|
|
487
|
+
for (const handle of p.equipment) {
|
|
488
|
+
if (!handle)
|
|
489
|
+
continue;
|
|
490
|
+
const obj = gearGet(state.gear, handle);
|
|
491
|
+
if (!obj)
|
|
492
|
+
continue;
|
|
493
|
+
if (rechargeTimeout(rng, obj))
|
|
494
|
+
rechargedNotice(state, obj, true);
|
|
495
|
+
}
|
|
496
|
+
/* Recharge the pack (rods only). */
|
|
497
|
+
for (const handle of state.gear.pack) {
|
|
498
|
+
const obj = gearGet(state.gear, handle);
|
|
499
|
+
if (!obj)
|
|
500
|
+
continue;
|
|
501
|
+
const dischargedStack = numberCharging(rng, obj) === obj.number;
|
|
502
|
+
if (tvalCanHaveTimeout(obj.tval) && rechargeTimeout(rng, obj)) {
|
|
503
|
+
if (obj.timeout === 0)
|
|
504
|
+
rechargedNotice(state, obj, true);
|
|
505
|
+
else if (dischargedStack)
|
|
506
|
+
rechargedNotice(state, obj, false);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
/* Recharge other level objects (rods on the floor). */
|
|
510
|
+
for (const pile of state.floor.values()) {
|
|
511
|
+
for (const obj of pile) {
|
|
512
|
+
if (tvalCanHaveTimeout(obj.tval))
|
|
513
|
+
rechargeTimeout(rng, obj);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
/** equip_learn_flag(OF_DRAIN_EXP) through the live rune environment. */
|
|
518
|
+
export function processExpDrain(state) {
|
|
519
|
+
const p = state.actor.player;
|
|
520
|
+
if (!playerOfHasWorld(state, OF.DRAIN_EXP))
|
|
521
|
+
return;
|
|
522
|
+
if (p.exp > 0 && state.rng.oneIn(10)) {
|
|
523
|
+
const d = state.rng.damroll(10, 6) +
|
|
524
|
+
Math.trunc(p.exp / 100) * state.z.lifeDrainPercent;
|
|
525
|
+
playerExpLose(p, Math.trunc(d / 10), false, expDepsOf(state));
|
|
526
|
+
}
|
|
527
|
+
equipLearnFlag(p, state.runeEnv, OF.DRAIN_EXP);
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* play_ambient_sound (game-world.c L257): pick a MSG_AMBIENT_* by depth and
|
|
531
|
+
* day / night and emit it through state.sound.
|
|
532
|
+
*/
|
|
533
|
+
export function playAmbientSound(state) {
|
|
534
|
+
const depth = state.chunk.depth;
|
|
535
|
+
const day = isDaytime(state.turn, state.z.dayLength);
|
|
536
|
+
let msgt;
|
|
537
|
+
if (depth === 0)
|
|
538
|
+
msgt = day ? "AMBIENT_DAY" : "AMBIENT_NITE";
|
|
539
|
+
else if (depth <= 20)
|
|
540
|
+
msgt = "AMBIENT_DNG1";
|
|
541
|
+
else if (depth <= 40)
|
|
542
|
+
msgt = "AMBIENT_DNG2";
|
|
543
|
+
else if (depth <= 60)
|
|
544
|
+
msgt = "AMBIENT_DNG3";
|
|
545
|
+
else if (depth <= 80)
|
|
546
|
+
msgt = "AMBIENT_DNG4";
|
|
547
|
+
else
|
|
548
|
+
msgt = "AMBIENT_DNG5";
|
|
549
|
+
const idx = MSG[msgt];
|
|
550
|
+
if (idx !== undefined)
|
|
551
|
+
state.sound?.(idx);
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* monster_index_move (mon-make.c L418): move the monster in slot i1 into slot
|
|
555
|
+
* i2, repairing every reference that names it by index.
|
|
556
|
+
*
|
|
557
|
+
* Only compact_monsters' excise pass calls this upstream, and the port did not
|
|
558
|
+
* have it at all - see compactMonsters below for why that mattered.
|
|
559
|
+
*/
|
|
560
|
+
export function monsterIndexMove(state, i1, i2) {
|
|
561
|
+
/* Do nothing. */
|
|
562
|
+
if (i1 === i2)
|
|
563
|
+
return;
|
|
564
|
+
/* Old monster. */
|
|
565
|
+
const mon = state.monsters[i1];
|
|
566
|
+
if (!mon)
|
|
567
|
+
return;
|
|
568
|
+
/* Update the cave. */
|
|
569
|
+
state.chunk.setMon(mon.grid, i2);
|
|
570
|
+
/* Update midx. */
|
|
571
|
+
mon.midx = i2;
|
|
572
|
+
/* Update group. Upstream quit()s on a miss and the monster_groups_verify()
|
|
573
|
+
* after it is unreachable; throwing is the port's quit. */
|
|
574
|
+
if (!monsterGroupChangeIndex(state, i2, i1)) {
|
|
575
|
+
throw new Error(`mon: bad monster group info moving ${i1} -> ${i2}`);
|
|
576
|
+
}
|
|
577
|
+
/* Repair objects being carried by monster. */
|
|
578
|
+
for (const obj of mon.heldObj)
|
|
579
|
+
obj.heldMIdx = i2;
|
|
580
|
+
/* Move mimicked objects (heh). mon.mimickedObj is the port's presence
|
|
581
|
+
* marker; the live link is the floor object's mimickingMIdx (mon-place.ts
|
|
582
|
+
* createMimickedObject), and it sits on the monster's own grid. */
|
|
583
|
+
if (mon.mimickedObj) {
|
|
584
|
+
for (const obj of floorPile(state, mon.grid)) {
|
|
585
|
+
if (obj.mimickingMIdx === i1)
|
|
586
|
+
obj.mimickingMIdx = i2;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
/* Update the target, and the health bar. Upstream re-points both at
|
|
590
|
+
* cave_monster(c, i2), which after the memcpy below is this same monster; the
|
|
591
|
+
* port moves the object itself, so the Monster reference healthWho holds
|
|
592
|
+
* stays valid and only the numeric target needs rewriting. */
|
|
593
|
+
if (state.target.midx === i1)
|
|
594
|
+
state.target.midx = i2;
|
|
595
|
+
/* Move monster, and wipe the hole. */
|
|
596
|
+
state.monsters[i2] = mon;
|
|
597
|
+
state.monsters[i1] = null;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* compact_monsters (mon-make.c L482): when the monster list is overcrowded,
|
|
601
|
+
* delete num_to_compact monsters, getting more vicious each iteration, and then
|
|
602
|
+
* - ALWAYS - excise the holes so the list is dense again. Each candidate that
|
|
603
|
+
* survives the deletion pass draws randint0(100) (the saving throw), a variable
|
|
604
|
+
* number of draws that MUST be reproduced for save determinism on breeder-heavy
|
|
605
|
+
* levels.
|
|
606
|
+
*
|
|
607
|
+
* The excise pass at the bottom is not conditional on num_to_compact, and the
|
|
608
|
+
* port used to return early for num_to_compact == 0 on the reasoning that the
|
|
609
|
+
* "too many holes" call was RNG-free and "handled by slot reuse". Both halves
|
|
610
|
+
* were wrong: nothing reused slots (mon_pop appends below the cap, see
|
|
611
|
+
* context.ts), and so the port never excised a hole at all - under either
|
|
612
|
+
* argument. cave_monster_max therefore grew monotonically for the life of a
|
|
613
|
+
* level, which shifts every midx away from upstream's and, with mon_pop's bound
|
|
614
|
+
* in place, would hit level_monster_max far earlier than the C does.
|
|
615
|
+
*/
|
|
616
|
+
export function compactMonsters(state, numToCompact) {
|
|
617
|
+
/* Message, only if compacting (mon-make.c:489-491). */
|
|
618
|
+
if (numToCompact)
|
|
619
|
+
state.msg?.("Compacting monsters...");
|
|
620
|
+
let numCompacted = 0;
|
|
621
|
+
for (let iter = 1; numCompacted < numToCompact; iter++) {
|
|
622
|
+
/* Get more vicious each iteration. */
|
|
623
|
+
const maxLev = 5 * iter;
|
|
624
|
+
/* Get closer each iteration. */
|
|
625
|
+
const minDis = 5 * (20 - iter);
|
|
626
|
+
for (let mIdx = 1; mIdx < state.monsters.length; mIdx++) {
|
|
627
|
+
const mon = state.monsters[mIdx];
|
|
628
|
+
/* Skip dead / empty slots. */
|
|
629
|
+
if (!mon)
|
|
630
|
+
continue;
|
|
631
|
+
/* High level monsters start out immune. */
|
|
632
|
+
if (mon.race.level > maxLev)
|
|
633
|
+
continue;
|
|
634
|
+
/* Ignore nearby monsters. */
|
|
635
|
+
if (minDis > 0 && mon.cdis < minDis)
|
|
636
|
+
continue;
|
|
637
|
+
/* Saving throw chance. */
|
|
638
|
+
let chance = 90;
|
|
639
|
+
/* Only compact Quest monsters in emergencies. */
|
|
640
|
+
if (mon.race.flags.has(RF.QUESTOR) && iter < 1000)
|
|
641
|
+
chance = 100;
|
|
642
|
+
/* Try not to compact unique monsters. */
|
|
643
|
+
if (monsterIsUnique(mon))
|
|
644
|
+
chance = 99;
|
|
645
|
+
/* All monsters get a saving throw. */
|
|
646
|
+
if (state.rng.randint0(100) < chance)
|
|
647
|
+
continue;
|
|
648
|
+
/* Delete the monster. */
|
|
649
|
+
deleteMonster(state, mIdx);
|
|
650
|
+
numCompacted++;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
/* Excise dead monsters (backwards!). monsterMax shrinks as we go, exactly as
|
|
654
|
+
* c->mon_max-- does, so the monster pulled down into a hole always comes from
|
|
655
|
+
* a slot this scan has already passed. */
|
|
656
|
+
for (let mIdx = state.monsters.length - 1; mIdx >= 1; mIdx--) {
|
|
657
|
+
/* Skip real monsters. */
|
|
658
|
+
if (state.monsters[mIdx])
|
|
659
|
+
continue;
|
|
660
|
+
/* Move last monster into open hole, and compress mon_max. */
|
|
661
|
+
monsterIndexMove(state, state.monsters.length - 1, mIdx);
|
|
662
|
+
state.monsters.length--;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
/** cave_monster_count (cave.c): the number of live monsters. */
|
|
666
|
+
export function caveMonsterCount(state) {
|
|
667
|
+
let n = 0;
|
|
668
|
+
for (let i = 1; i < state.monsters.length; i++) {
|
|
669
|
+
if (state.monsters[i])
|
|
670
|
+
n++;
|
|
671
|
+
}
|
|
672
|
+
return n;
|
|
673
|
+
}
|
|
674
|
+
/** The PY_EXERT_* over-exertion flags, exported for callers and tests. */
|
|
675
|
+
export const PY_EXERT = {
|
|
676
|
+
CON: PY_EXERT_CON,
|
|
677
|
+
FAINT: PY_EXERT_FAINT,
|
|
678
|
+
SCRAMBLE: PY_EXERT_SCRAMBLE,
|
|
679
|
+
CUT: PY_EXERT_CUT,
|
|
680
|
+
CONF: PY_EXERT_CONF,
|
|
681
|
+
HALLU: PY_EXERT_HALLU,
|
|
682
|
+
SLOW: PY_EXERT_SLOW,
|
|
683
|
+
HP: PY_EXERT_HP,
|
|
684
|
+
};
|
|
685
|
+
//# sourceMappingURL=world.js.map
|