@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,642 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-cave monster placement, ported from the placement half of
|
|
3
|
+
* reference/src/mon-make.c (place_monster, place_new_monster_one,
|
|
4
|
+
* place_new_monster_group, place_friends, place_new_monster,
|
|
5
|
+
* pick_and_place_monster) and the world half of reference/src/mon-summon.c
|
|
6
|
+
* (summon_specific, call_monster, select_shape), Angband 4.2.6.
|
|
7
|
+
*
|
|
8
|
+
* The generation-time twin of this family lives in gen/util.ts and operates
|
|
9
|
+
* on the Gen context; this module operates on a running GameState, so
|
|
10
|
+
* summons, breeders and other mid-game arrivals join the live monster list,
|
|
11
|
+
* the group structures and the square occupancy exactly as the generated
|
|
12
|
+
* population did. Monster construction (RNG order: sleep, hp, speed
|
|
13
|
+
* variation, energy, random attr) is the shared mon/make.ts createMonster.
|
|
14
|
+
*
|
|
15
|
+
* Racial population counts (race->cur_num) are live here: placement
|
|
16
|
+
* increments them and deleteMonster (game/context.ts) decrements, so the
|
|
17
|
+
* "only one unique at a time" rule holds across summoning and death. The
|
|
18
|
+
* session layer keeps the counts consistent across level changes
|
|
19
|
+
* (wipe_mon_list decrements for every live monster).
|
|
20
|
+
*
|
|
21
|
+
* Placement-time monster drops (mon_create_drop) ARE wired here: placeMonsterLive
|
|
22
|
+
* calls the shared createDrop core (game/mon-death.ts) when origin != 0, exactly
|
|
23
|
+
* as place_monster does (mon-make.c L1044-1046), filling the monster's held pile
|
|
24
|
+
* so monster_death can spill it on death. Live callers thread the true origin
|
|
25
|
+
* (ORIGIN_DROP for ambient spawns and pickAndPlaceDistantMonster, DROP_SUMMON for
|
|
26
|
+
* summons, DROP_BREED for breeders, DROP_WIZARD for the debug spawn). Inert when
|
|
27
|
+
* the caller omits MonPlaceDeps.makeDeps (monster-only harnesses). The cheat_hear
|
|
28
|
+
* messages are UI-only; update_mon / monster-light view refresh rides the FOV
|
|
29
|
+
* consumers.
|
|
30
|
+
*
|
|
31
|
+
* Object-mimic placement (mon_create_mimicked_object) IS ported here and
|
|
32
|
+
* fires from placeMonsterLive for live-placed (summoned / bred) mimics when
|
|
33
|
+
* the caller supplies MonPlaceDeps.mimic. Generation-spawned mimics ARE built by
|
|
34
|
+
* gen/util.ts placeNewMonsterOne (createMimickedObject) and installed by
|
|
35
|
+
* session/game.ts populateFromLevel; the two paths draw at the same RNG-stream
|
|
36
|
+
* position because every vanilla mimic race carries no drops.
|
|
37
|
+
*
|
|
38
|
+
* add_to_monster_rating IS wired here (mon-make.c L1112-1126), matching
|
|
39
|
+
* upstream's single place_new_monster_one for both generation and live
|
|
40
|
+
* summons/breeders. Since chunk.feeling is computed once at gen-end
|
|
41
|
+
* (gen/generate.ts generateLevel) and never recomputed, these post-gen
|
|
42
|
+
* accumulations are harmless bookkeeping: they keep chunk.mon_rating byte-
|
|
43
|
+
* faithful to upstream but have no effect on an already-shown feeling.
|
|
44
|
+
*/
|
|
45
|
+
import { MON_TMD, ORIGIN, RF } from "../generated/index.js";
|
|
46
|
+
import { DDGRID_DDD, distance, locEq, locSum } from "../loc.js";
|
|
47
|
+
import { MON_GROUP } from "../mon/types.js";
|
|
48
|
+
import { turnEnergy } from "../mon/monster.js";
|
|
49
|
+
import { createMonster, monsterCarry } from "../mon/make.js";
|
|
50
|
+
import { monsterIsCamouflaged, monsterIsShapeUnique } from "../mon/predicate.js";
|
|
51
|
+
import { monsterWake } from "../mon/take-hit.js";
|
|
52
|
+
import { summonSpecificOkay } from "../mon/summon.js";
|
|
53
|
+
import { applyMagic, makeGold, objectPrep } from "../obj/make.js";
|
|
54
|
+
import { createDrop } from "./mon-death.js";
|
|
55
|
+
import { tvalIsMoney } from "../obj/object.js";
|
|
56
|
+
import { tvalFindIdx } from "../obj/bind.js";
|
|
57
|
+
import { scatterExt } from "../world/scatter.js";
|
|
58
|
+
import { los } from "../world/view.js";
|
|
59
|
+
import { monPop, monsterMax, monsterSwap, squareMonster } from "./context.js";
|
|
60
|
+
import { floorCarry } from "./floor.js";
|
|
61
|
+
import { monsterGroupAssign, summonGroup } from "./mon-group.js";
|
|
62
|
+
/** square_isopen on the live cave: floor with no occupant (player counts). */
|
|
63
|
+
export function squareIsOpenLive(state, grid) {
|
|
64
|
+
if (!state.chunk.inBounds(grid))
|
|
65
|
+
return false;
|
|
66
|
+
return state.chunk.isFloor(grid) && state.chunk.mon(grid) === 0;
|
|
67
|
+
}
|
|
68
|
+
/** square_isempty on the live cave: open, no objects, no player trap / web. */
|
|
69
|
+
export function squareIsEmptyLive(state, grid, preds) {
|
|
70
|
+
if (!state.chunk.inBounds(grid))
|
|
71
|
+
return false;
|
|
72
|
+
if (preds?.isPlayerTrap(grid))
|
|
73
|
+
return false;
|
|
74
|
+
if (preds?.isWebbed(grid))
|
|
75
|
+
return false;
|
|
76
|
+
if (!squareIsOpenLive(state, grid))
|
|
77
|
+
return false;
|
|
78
|
+
const pile = state.floor.get(grid.y * state.chunk.width + grid.x);
|
|
79
|
+
return !pile || pile.length === 0;
|
|
80
|
+
}
|
|
81
|
+
/** square_allows_summon: empty and neither warded nor decoyed. */
|
|
82
|
+
export function squareAllowsSummon(state, grid, preds) {
|
|
83
|
+
if (!squareIsEmptyLive(state, grid, preds))
|
|
84
|
+
return false;
|
|
85
|
+
if (preds?.isWarded(grid))
|
|
86
|
+
return false;
|
|
87
|
+
return !(state.decoy && locEq(state.decoy, grid));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The slot allocation and placement bookkeeping of place_new_monster_one
|
|
91
|
+
* (mon-make.c L1010 onwards): ask mon_pop for a slot, mark the square, join the
|
|
92
|
+
* group and count the race. Returns the midx, or 0 when the monster list is
|
|
93
|
+
* full - which the caller MUST propagate as a failed placement, as upstream's
|
|
94
|
+
* `if (!m_idx) return 0` does.
|
|
95
|
+
*
|
|
96
|
+
* The slot scan that used to live here reused the first hole; mon_pop appends
|
|
97
|
+
* below level_monster_max and only recycles at the cap. See monPop.
|
|
98
|
+
*/
|
|
99
|
+
function placeMonsterLive(state, grid, mon, deps, origin) {
|
|
100
|
+
/* `loading` (mon-make.c L1006, L1011-1014): a monster read back from a save
|
|
101
|
+
* keeps its stored slot rather than drawing a new one. Live callers build the
|
|
102
|
+
* monster with createMonster, whose midx is 0; the port's load path appends
|
|
103
|
+
* in stored order through addMonster, which is the same assignment. */
|
|
104
|
+
const loading = mon.midx > 0;
|
|
105
|
+
const midx = loading ? mon.midx : monPop(state);
|
|
106
|
+
if (!midx)
|
|
107
|
+
return 0;
|
|
108
|
+
if (loading && state.monsters.length <= midx) {
|
|
109
|
+
state.monsters.length = midx + 1;
|
|
110
|
+
}
|
|
111
|
+
mon.midx = midx;
|
|
112
|
+
mon.grid = grid;
|
|
113
|
+
state.monsters[midx] = mon;
|
|
114
|
+
state.chunk.setMon(grid, midx);
|
|
115
|
+
/* Assign monster to its monster group. */
|
|
116
|
+
monsterGroupAssign(state, mon, mon.groupInfo, false);
|
|
117
|
+
/* update_mon's distance bookkeeping (visibility rides FOV consumers). */
|
|
118
|
+
mon.cdis = distance(grid, state.actor.grid);
|
|
119
|
+
/* Count the number of "reproducers" (mon-make.c L1038): current race flag. */
|
|
120
|
+
if (mon.race.flags.has(RF.MULTIPLY)) {
|
|
121
|
+
state.numRepro = (state.numRepro ?? 0) + 1;
|
|
122
|
+
}
|
|
123
|
+
/* Count racial occurrences. */
|
|
124
|
+
(mon.originalRace ?? mon.race).curNum++;
|
|
125
|
+
/* Create the monster's drop, if any (mon-make.c place_monster L1044-1046):
|
|
126
|
+
* generate the held-object pile at placement when origin != 0, exactly where
|
|
127
|
+
* upstream draws it - BEFORE mon_create_mimicked_object below. Inert unless
|
|
128
|
+
* the caller supplies object-make deps. */
|
|
129
|
+
if (origin !== ORIGIN.NONE && deps.makeDeps) {
|
|
130
|
+
createDrop({
|
|
131
|
+
rng: state.rng,
|
|
132
|
+
depth: state.chunk.depth,
|
|
133
|
+
makeDeps: deps.makeDeps,
|
|
134
|
+
lore: deps.lore ?? null,
|
|
135
|
+
}, mon, origin);
|
|
136
|
+
}
|
|
137
|
+
/* Make mimics start mimicking (mon-make.c place_monster L1048-1051). The
|
|
138
|
+
* upstream origin gate is implicit here: every live placement carries an
|
|
139
|
+
* origin (ORIGIN_DROP etc.), and generated mimics ride the generation
|
|
140
|
+
* handoff seam. Object-mimic races carry no RF_DROP_* / drops in vanilla, so
|
|
141
|
+
* mon_create_drop above draws zero RNG for them - the mimic object's draws
|
|
142
|
+
* land at the same stream position as upstream for every mimic race. Inert
|
|
143
|
+
* unless the caller supplies object-make deps. */
|
|
144
|
+
if (deps.mimic && mon.race.mimicKinds.length > 0) {
|
|
145
|
+
monCreateMimickedObject(state, mon, deps.mimic);
|
|
146
|
+
}
|
|
147
|
+
return midx;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* mon_create_mimicked_object (mon-make.c L899): create the fake floor item an
|
|
151
|
+
* object-mimic imitates and link it to the monster. Reservoir-samples one of
|
|
152
|
+
* the race's mimic_kinds (one_in_(i) over i = 1..n; the first draw, one_in_(1),
|
|
153
|
+
* draws no RNG and always selects the first kind), makes a gold object for a
|
|
154
|
+
* money kind or a prepped-and-magicked item otherwise (RNG order identical to
|
|
155
|
+
* upstream), links both sides of the mimicry, and drops it on the monster's
|
|
156
|
+
* grid via floor_carry. If the floor cannot hold it the mimicry is cleared and
|
|
157
|
+
* the item is either given to the monster (RF_MIMIC_INV) or discarded.
|
|
158
|
+
*
|
|
159
|
+
* The port has no object oidx registry, so mon.mimickedObj is a nonzero
|
|
160
|
+
* presence marker (1); the live mon<->obj link is carried by
|
|
161
|
+
* obj.mimickingMIdx === mon.midx, which is what become_aware reads and the save
|
|
162
|
+
* format persists. C's list_object (oidx bookkeeping) is DEFERRED with the
|
|
163
|
+
* floor object list (game/floor.ts module docs). convert_depth_to_origin(
|
|
164
|
+
* c->depth) is the port's direct state.chunk.depth (matching mon-death.ts /
|
|
165
|
+
* effect-item.ts). Draws RNG exactly as upstream.
|
|
166
|
+
*/
|
|
167
|
+
export function createMimickedObject(target, mon) {
|
|
168
|
+
const { reg, constants } = target.makeDeps;
|
|
169
|
+
/* Resolve a MonsterMimic (tval/sval names) to an object kind. Upstream
|
|
170
|
+
* resolves these to object_kind pointers at parse time; the port stores the
|
|
171
|
+
* names (mon/bind.ts) and looks them up here. */
|
|
172
|
+
const resolveKind = (m) => {
|
|
173
|
+
const tval = tvalFindIdx(m.tval);
|
|
174
|
+
const sval = tval >= 0 ? reg.lookupSval(tval, m.sval) : -1;
|
|
175
|
+
const kind = tval >= 0 ? reg.lookupKind(tval, sval) : null;
|
|
176
|
+
if (!kind)
|
|
177
|
+
throw new Error(`mon: mimic kind ${m.tval}:${m.sval} not found`);
|
|
178
|
+
return kind;
|
|
179
|
+
};
|
|
180
|
+
/* Pick a random object kind to mimic (reservoir sample, i starts at 1). */
|
|
181
|
+
const kinds = mon.race.mimicKinds;
|
|
182
|
+
let kind = resolveKind(kinds[0]);
|
|
183
|
+
let i = 1;
|
|
184
|
+
for (const mk of kinds) {
|
|
185
|
+
if (target.rng.oneIn(i))
|
|
186
|
+
kind = resolveKind(mk);
|
|
187
|
+
i++;
|
|
188
|
+
}
|
|
189
|
+
let obj;
|
|
190
|
+
if (tvalIsMoney(kind.tval)) {
|
|
191
|
+
obj = makeGold(target.rng, target.makeDeps, target.depth, kind.name);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
obj = objectPrep(target.rng, reg, constants, kind, mon.race.level, "randomise");
|
|
195
|
+
applyMagic(target.rng, target.makeDeps, obj, mon.race.level, true, false, false, false, target.depth);
|
|
196
|
+
obj.number = 1;
|
|
197
|
+
obj.origin = ORIGIN.DROP_MIMIC;
|
|
198
|
+
obj.originDepth = target.depth;
|
|
199
|
+
}
|
|
200
|
+
obj.mimickingMIdx = mon.midx;
|
|
201
|
+
mon.mimickedObj = 1;
|
|
202
|
+
/* Put the object on the floor if it goes, otherwise no mimicry. */
|
|
203
|
+
if (target.carry(mon.grid, obj)) {
|
|
204
|
+
/* list_object: oidx bookkeeping DEFERRED (game/floor.ts). */
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
/* Clear the mimicry. */
|
|
208
|
+
obj.mimickingMIdx = 0;
|
|
209
|
+
mon.mimickedObj = 0;
|
|
210
|
+
if (mon.race.flags.has(RF.MIMIC_INV)) {
|
|
211
|
+
/* Give the object to the monster if appropriate. */
|
|
212
|
+
monsterCarry(mon.heldObj, obj, mon.midx);
|
|
213
|
+
}
|
|
214
|
+
/* Otherwise object_delete: drop the reference (no pile to excise). */
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Live-cave mon_create_mimicked_object: a thin wrapper that binds the running
|
|
219
|
+
* GameState to the shared, GameState-free createMimickedObject core. The carry
|
|
220
|
+
* is the live floor_carry (no RNG), so this stays byte- and RNG-identical to
|
|
221
|
+
* the pre-refactor function for every live-placed mimic.
|
|
222
|
+
*/
|
|
223
|
+
export function monCreateMimickedObject(state, mon, deps) {
|
|
224
|
+
createMimickedObject({
|
|
225
|
+
depth: state.chunk.depth,
|
|
226
|
+
rng: state.rng,
|
|
227
|
+
makeDeps: deps.makeDeps,
|
|
228
|
+
carry: (grid, obj) => floorCarry(state, grid, obj, deps.floorEnv),
|
|
229
|
+
}, mon);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* place_new_monster_one on the live cave: legality checks, monster
|
|
233
|
+
* construction (shared RNG order) and placement.
|
|
234
|
+
*/
|
|
235
|
+
export function placeNewMonsterOne(state, grid, race, sleep, info, deps, origin = ORIGIN.DROP) {
|
|
236
|
+
if (!state.chunk.inBounds(grid))
|
|
237
|
+
return false;
|
|
238
|
+
/* Not where monsters already are. */
|
|
239
|
+
if (squareMonster(state, grid))
|
|
240
|
+
return false;
|
|
241
|
+
/* Not where the player already is. */
|
|
242
|
+
if (locEq(state.actor.grid, grid))
|
|
243
|
+
return false;
|
|
244
|
+
/* Prevent monsters from being placed where they cannot walk. */
|
|
245
|
+
if (!state.chunk.isPassable(grid))
|
|
246
|
+
return false;
|
|
247
|
+
/* No creation on glyphs or the decoy. */
|
|
248
|
+
if (deps.preds?.isWarded(grid))
|
|
249
|
+
return false;
|
|
250
|
+
if (state.decoy && locEq(state.decoy, grid))
|
|
251
|
+
return false;
|
|
252
|
+
/* "unique" monsters must be "unique". */
|
|
253
|
+
if (race.flags.has(RF.UNIQUE) && race.curNum >= race.maxNum)
|
|
254
|
+
return false;
|
|
255
|
+
/* Depth monsters may NOT be created out of depth. */
|
|
256
|
+
if (race.flags.has(RF.FORCE_DEPTH) && state.chunk.depth < race.level) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
/* Add to level feeling, note uniques for cheaters (mon-make.c
|
|
260
|
+
* L1112-1126). See the module docstring: harmless post-gen bookkeeping. */
|
|
261
|
+
state.chunk.addToMonsterRating(race.level * race.level);
|
|
262
|
+
/* cheat_hear (mon-make.c:1116-1128): the option is in scope per the
|
|
263
|
+
* exact-parity mandate, and it announces every out-of-depth spawn and every
|
|
264
|
+
* unique as it is placed. Nothing reported through it before. */
|
|
265
|
+
const cheatHear = state.options?.get("cheat_hear") ?? false;
|
|
266
|
+
if (race.level > state.chunk.depth) {
|
|
267
|
+
if (cheatHear) {
|
|
268
|
+
state.msg?.(race.flags.has(RF.UNIQUE)
|
|
269
|
+
? `Deep unique (${race.name}).`
|
|
270
|
+
: `Deep monster (${race.name}).`);
|
|
271
|
+
}
|
|
272
|
+
state.chunk.addToMonsterRating((race.level - state.chunk.depth) * race.level * race.level);
|
|
273
|
+
}
|
|
274
|
+
else if (race.flags.has(RF.UNIQUE) && cheatHear) {
|
|
275
|
+
state.msg?.(`Unique (${race.name}).`);
|
|
276
|
+
}
|
|
277
|
+
const mon = createMonster(state.rng, race, {
|
|
278
|
+
sleep,
|
|
279
|
+
moveEnergy: state.z.moveEnergy,
|
|
280
|
+
groupIndex: info.index,
|
|
281
|
+
groupRole: info.role,
|
|
282
|
+
});
|
|
283
|
+
/* mon-make.c L1017-1018: no free slot means no monster. */
|
|
284
|
+
return placeMonsterLive(state, grid, mon, deps, origin) !== 0;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* place_new_monster_group: puddle up to `total` monsters of one race around
|
|
288
|
+
* grid, breadth first over the 8 neighbours of each placed monster.
|
|
289
|
+
*/
|
|
290
|
+
function placeNewMonsterGroup(state, grid, race, sleep, info, total, deps, origin) {
|
|
291
|
+
total = Math.min(total, deps.groupMax ?? 25);
|
|
292
|
+
/* Start on the monster. */
|
|
293
|
+
const locList = [grid];
|
|
294
|
+
/* Puddle monsters, breadth first, up to total. */
|
|
295
|
+
for (let n = 0; n < locList.length && locList.length < total; n++) {
|
|
296
|
+
for (let i = 0; i < 8 && locList.length < total; i++) {
|
|
297
|
+
const tryGrid = locSum(locList[n], DDGRID_DDD[i]);
|
|
298
|
+
/* Walls and monsters block flow. */
|
|
299
|
+
if (!squareIsEmptyLive(state, tryGrid, deps.preds))
|
|
300
|
+
continue;
|
|
301
|
+
if (placeNewMonsterOne(state, tryGrid, race, sleep, info, deps, origin)) {
|
|
302
|
+
locList.push(tryGrid);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
/** place_friends: place a friend or escort race near the original monster. */
|
|
309
|
+
function placeFriends(state, grid, race, friendsRace, total, sleep, info, deps, origin) {
|
|
310
|
+
/* Find the difference between current dungeon depth and monster level. */
|
|
311
|
+
const levelDifference = state.chunk.depth - friendsRace.level + 5;
|
|
312
|
+
/* Handle unique monsters. */
|
|
313
|
+
const isUnique = friendsRace.flags.has(RF.UNIQUE);
|
|
314
|
+
/* Make sure the unique hasn't been killed already. */
|
|
315
|
+
if (isUnique && friendsRace.curNum >= friendsRace.maxNum)
|
|
316
|
+
return false;
|
|
317
|
+
/* More than 4 levels OoD, no groups allowed. */
|
|
318
|
+
if (levelDifference <= 0 && !isUnique)
|
|
319
|
+
return false;
|
|
320
|
+
/* Reduce group size within 5 levels of natural depth. */
|
|
321
|
+
if (levelDifference < 10 && !isUnique) {
|
|
322
|
+
const extraChance = (total * levelDifference) % 10;
|
|
323
|
+
total = Math.trunc((total * levelDifference) / 10);
|
|
324
|
+
/* Instead of flooring the group value, we use the decimal place
|
|
325
|
+
* as a chance of an extra monster. */
|
|
326
|
+
if (state.rng.randint0(10) > extraChance)
|
|
327
|
+
total += 1;
|
|
328
|
+
}
|
|
329
|
+
if (total > 0) {
|
|
330
|
+
/* Handle friends same as original monster. */
|
|
331
|
+
if (race.ridx === friendsRace.ridx) {
|
|
332
|
+
return placeNewMonsterGroup(state, grid, race, sleep, info, total, deps, origin);
|
|
333
|
+
}
|
|
334
|
+
/* Find a nearby place to put the other groups. */
|
|
335
|
+
const spots = scatterExt(state.chunk, state.rng, 1, grid, deps.groupDist ?? 5, false, (_c, gr) => squareIsOpenLive(state, gr));
|
|
336
|
+
if (spots.length > 0) {
|
|
337
|
+
const start = spots[0];
|
|
338
|
+
/* Place the monsters. */
|
|
339
|
+
let success = placeNewMonsterOne(state, start, friendsRace, sleep, info, deps, origin);
|
|
340
|
+
if (total > 1) {
|
|
341
|
+
success = placeNewMonsterGroup(state, start, friendsRace, sleep, info, total, deps, origin);
|
|
342
|
+
}
|
|
343
|
+
return success;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* monster_group_index_new: the next free group slot on the live state
|
|
350
|
+
* (mon-group.ts owns the group model; this mirrors its allocator so the
|
|
351
|
+
* pre-allocated index and the one monsterGroupStart picks agree).
|
|
352
|
+
*/
|
|
353
|
+
function nextGroupIndex(state) {
|
|
354
|
+
for (let i = 1; i < state.groups.length; i++) {
|
|
355
|
+
if (!state.groups[i])
|
|
356
|
+
return i;
|
|
357
|
+
}
|
|
358
|
+
return Math.max(state.groups.length, 1);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* place_new_monster: place a monster of the given race at the given
|
|
362
|
+
* location, with its friends and escorts when `groupOk` is set. The first
|
|
363
|
+
* monster of a fresh group is its leader.
|
|
364
|
+
*/
|
|
365
|
+
export function placeNewMonster(state, grid, race, sleep, groupOk, groupInfo, deps, origin = ORIGIN.DROP) {
|
|
366
|
+
const info = { ...groupInfo };
|
|
367
|
+
/* If we don't have a group index already, make one; our first monster
|
|
368
|
+
* will be the leader. */
|
|
369
|
+
if (!info.index)
|
|
370
|
+
info.index = nextGroupIndex(state);
|
|
371
|
+
/* Place one monster, or fail. */
|
|
372
|
+
if (!placeNewMonsterOne(state, grid, race, sleep, info, deps, origin)) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
/* We're done unless the group flag is set. */
|
|
376
|
+
if (!groupOk)
|
|
377
|
+
return true;
|
|
378
|
+
/* Go through friends flags. */
|
|
379
|
+
for (const friends of race.friends) {
|
|
380
|
+
if (state.rng.randint0(100) >= friends.percentChance)
|
|
381
|
+
continue;
|
|
382
|
+
/* Calculate the base number of monsters to place. */
|
|
383
|
+
const total = state.rng.damroll(friends.numberDice, friends.numberSide);
|
|
384
|
+
/* Set group role. */
|
|
385
|
+
info.role = friends.role;
|
|
386
|
+
/* Place them. */
|
|
387
|
+
if (friends.race) {
|
|
388
|
+
placeFriends(state, grid, race, friends.race, total, sleep, info, deps, origin);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/* Go through the friends_base flags. */
|
|
392
|
+
for (const friendsBase of race.friendsBase) {
|
|
393
|
+
/* Check if we pass chance for the monster appearing. */
|
|
394
|
+
if (state.rng.randint0(100) >= friendsBase.percentChance)
|
|
395
|
+
continue;
|
|
396
|
+
const total = state.rng.damroll(friendsBase.numberDice, friendsBase.numberSide);
|
|
397
|
+
/* Prepare allocation table for the escort base (no uniques). */
|
|
398
|
+
deps.table.prep((r) => r.base === friendsBase.base && !r.flags.has(RF.UNIQUE));
|
|
399
|
+
/* Pick a random race, then reset the allocation table. */
|
|
400
|
+
const friendsRace = deps.table.getMonNum(state.rng, race.level, state.chunk.depth);
|
|
401
|
+
deps.table.prep(null);
|
|
402
|
+
/* Handle failure. */
|
|
403
|
+
if (!friendsRace)
|
|
404
|
+
break;
|
|
405
|
+
/* Set group role. */
|
|
406
|
+
info.role = friendsBase.role;
|
|
407
|
+
/* Place them. */
|
|
408
|
+
placeFriends(state, grid, race, friendsRace, total, sleep, info, deps, origin);
|
|
409
|
+
}
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* multiply_monster (mon-make.c L983): a breeder tries to spawn a copy of
|
|
414
|
+
* itself in a nearby empty grid. Returns true on a successful spawn.
|
|
415
|
+
*
|
|
416
|
+
* RNG order is preserved exactly: monster_is_shape_unique short-circuits
|
|
417
|
+
* before any draw (uniques never multiply and never touch the stream), then
|
|
418
|
+
* scatter_ext draws (distance 1, needs LOS, square_isempty), then
|
|
419
|
+
* place_new_monster (groupOk = false, so no friends/escort table draws - only
|
|
420
|
+
* createMonster's sleep/hp/speed/energy/attr draws). Fixing so multiplying a
|
|
421
|
+
* revealed camouflaged monster creates another revealed camouflaged monster
|
|
422
|
+
* (mon-move.c L1002-1011) draws no RNG - it just looks up the child that was
|
|
423
|
+
* placed a moment ago via square_monster, exactly as upstream does.
|
|
424
|
+
*/
|
|
425
|
+
export function multiplyMonster(state, mon, deps) {
|
|
426
|
+
/* Uniques can never multiply - tested before any RNG is drawn. */
|
|
427
|
+
if (monsterIsShapeUnique(mon))
|
|
428
|
+
return false;
|
|
429
|
+
/* Pick an empty location adjacent to the breeder. */
|
|
430
|
+
const spots = scatterExt(state.chunk, state.rng, 1, mon.grid, 1, true, (_c, g) => squareIsEmptyLive(state, g, deps.preds));
|
|
431
|
+
if (spots.length === 0)
|
|
432
|
+
return false;
|
|
433
|
+
/* Create a new monster (awake, no groups). */
|
|
434
|
+
const info = { index: 0, role: MON_GROUP.LEADER };
|
|
435
|
+
const grid = spots[0];
|
|
436
|
+
const result = placeNewMonster(state, grid, mon.race, false, false, info, deps,
|
|
437
|
+
/* multiply_monster (mon-move.c L999-1000): breeder spawns carry
|
|
438
|
+
* ORIGIN_DROP_BREED. */
|
|
439
|
+
ORIGIN.DROP_BREED);
|
|
440
|
+
if (result) {
|
|
441
|
+
const child = squareMonster(state, grid);
|
|
442
|
+
if (child && monsterIsCamouflaged(child) && !monsterIsCamouflaged(mon)) {
|
|
443
|
+
state.becomeAware?.(child);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return result;
|
|
447
|
+
}
|
|
448
|
+
/** pick_and_place_monster: place an appropriate monster (and group) at grid. */
|
|
449
|
+
export function pickAndPlaceMonster(state, grid, depth, sleep, groupOkay, deps, origin = ORIGIN.DROP) {
|
|
450
|
+
const race = deps.table.getMonNum(state.rng, depth, state.chunk.depth);
|
|
451
|
+
if (!race)
|
|
452
|
+
return false;
|
|
453
|
+
const info = { index: 0, role: MON_GROUP.LEADER };
|
|
454
|
+
return placeNewMonster(state, grid, race, sleep, groupOkay, info, deps, origin);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* pick_and_place_distant_monster (mon-make.c L1483): pick a monster race and
|
|
458
|
+
* place it on a naked floor grid at least `dis` away from `toAvoid`, allowing
|
|
459
|
+
* groups. Up to 10000 attempts, each drawing randint0(width) THEN
|
|
460
|
+
* randint0(height) (x before y - a chosen canonical order; C leaves the two
|
|
461
|
+
* argument evaluations unspecified and the port targets its own save
|
|
462
|
+
* determinism, not binary C-save compatibility). In a running game
|
|
463
|
+
* character_dungeon is true, so the "no random monsters in marked rooms" test
|
|
464
|
+
* is skipped. Returns whether a monster was placed.
|
|
465
|
+
*/
|
|
466
|
+
export function pickAndPlaceDistantMonster(state, toAvoid, dis, sleep, depth, deps) {
|
|
467
|
+
let grid = toAvoid;
|
|
468
|
+
let attemptsLeft = 10000;
|
|
469
|
+
/* Find a legal, distant, unoccupied space. */
|
|
470
|
+
while (--attemptsLeft) {
|
|
471
|
+
/* Pick a location (x drawn before y). */
|
|
472
|
+
const x = state.rng.randint0(state.chunk.width);
|
|
473
|
+
const y = state.rng.randint0(state.chunk.height);
|
|
474
|
+
grid = { x, y };
|
|
475
|
+
/* Require "naked" floor grid. */
|
|
476
|
+
if (!squareIsEmptyLive(state, grid, deps.preds))
|
|
477
|
+
continue;
|
|
478
|
+
/* Accept far away grids. */
|
|
479
|
+
if (distance(grid, toAvoid) > dis)
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
if (!attemptsLeft) {
|
|
483
|
+
/* mon-make.c:1507-1509: the cheat options report a failed allocation. */
|
|
484
|
+
if ((state.options?.get("cheat_xtra") ?? false) ||
|
|
485
|
+
(state.options?.get("cheat_hear") ?? false)) {
|
|
486
|
+
state.msg?.("Warning! Could not allocate a new monster.");
|
|
487
|
+
}
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
/* Attempt to place the monster, allow groups. */
|
|
491
|
+
return pickAndPlaceMonster(state, grid, depth, sleep, true, deps);
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* can_call_monster: alive, eligible for the summon type, and NOT in line
|
|
495
|
+
* of sight of the summon point.
|
|
496
|
+
*/
|
|
497
|
+
function canCallMonster(state, grid, mon, type, deps) {
|
|
498
|
+
if (!summonSpecificOkay(deps.summons, type, mon.race, deps.kinBase ?? null)) {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
return !los(state.chunk, grid, mon.grid);
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* call_monster: move an eligible off-screen monster to the summon point,
|
|
505
|
+
* wake it and zero its energy. Returns its race level, or 0.
|
|
506
|
+
*/
|
|
507
|
+
function callMonster(state, grid, type, deps) {
|
|
508
|
+
const eligible = [];
|
|
509
|
+
const max = monsterMax(state);
|
|
510
|
+
for (let i = 1; i < max; i++) {
|
|
511
|
+
const mon = state.monsters[i];
|
|
512
|
+
if (!mon)
|
|
513
|
+
continue;
|
|
514
|
+
if (canCallMonster(state, grid, mon, type, deps))
|
|
515
|
+
eligible.push(i);
|
|
516
|
+
}
|
|
517
|
+
/* There were no good monsters on the level. */
|
|
518
|
+
if (eligible.length === 0)
|
|
519
|
+
return 0;
|
|
520
|
+
/* Pick one (upstream rolls randint0(count - 1), quirk preserved). */
|
|
521
|
+
const choice = state.rng.randint0(eligible.length - 1);
|
|
522
|
+
const mon = state.monsters[eligible[choice]];
|
|
523
|
+
/* Swap the monster. */
|
|
524
|
+
monsterSwap(state, mon.grid, grid);
|
|
525
|
+
/* Wake it up, make it aware. */
|
|
526
|
+
monsterWake(state.rng, mon, false, 100);
|
|
527
|
+
/* Set its energy to 0. */
|
|
528
|
+
mon.energy = 0;
|
|
529
|
+
return mon.race.level;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* summon_specific: place a monster of the given summon type near the grid,
|
|
533
|
+
* trying progressively wider scatters (1..4). Returns the summoned
|
|
534
|
+
* monster's race level iff a monster was actually summoned.
|
|
535
|
+
*/
|
|
536
|
+
export function summonSpecific(state, grid, lev, type, delay, call, deps) {
|
|
537
|
+
/* Look for a location, allow up to 4 squares away. */
|
|
538
|
+
let near = null;
|
|
539
|
+
for (let d = 1; d < 5; d++) {
|
|
540
|
+
const found = scatterExt(state.chunk, state.rng, 1, grid, d, true, (_c, g) => squareAllowsSummon(state, g, deps.preds));
|
|
541
|
+
if (found.length > 0) {
|
|
542
|
+
near = found[0];
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
/* Failure. */
|
|
547
|
+
if (!near)
|
|
548
|
+
return 0;
|
|
549
|
+
/* Use the new calling scheme if requested. */
|
|
550
|
+
if (call &&
|
|
551
|
+
type !== deps.summons.nameToIdx("UNIQUE") &&
|
|
552
|
+
type !== deps.summons.nameToIdx("WRAITH")) {
|
|
553
|
+
return callMonster(state, near, type, deps);
|
|
554
|
+
}
|
|
555
|
+
/* Prepare allocation table. */
|
|
556
|
+
deps.table.prep((race) => summonSpecificOkay(deps.summons, type, race, deps.kinBase ?? null));
|
|
557
|
+
/* Pick a monster, using the level calculation. */
|
|
558
|
+
const race = deps.table.getMonNum(state.rng, Math.trunc((state.chunk.depth + lev) / 2) + 5, state.chunk.depth);
|
|
559
|
+
/* Prepare allocation table. */
|
|
560
|
+
deps.table.prep(null);
|
|
561
|
+
/* Handle failure. */
|
|
562
|
+
if (!race)
|
|
563
|
+
return 0;
|
|
564
|
+
/* Put summons in the group of any summoner. */
|
|
565
|
+
const info = { index: 0, role: MON_GROUP.MEMBER };
|
|
566
|
+
if (deps.monCurrent && deps.monCurrent > 0) {
|
|
567
|
+
const group = summonGroup(state, deps.monCurrent);
|
|
568
|
+
if (group) {
|
|
569
|
+
info.index = group.index;
|
|
570
|
+
info.role = MON_GROUP.SUMMON;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
/* Attempt to place the monster (awake, don't allow groups). Summons carry
|
|
574
|
+
* ORIGIN_DROP_SUMMON (mon-summon.c L449-450). */
|
|
575
|
+
if (!placeNewMonster(state, near, race, false, false, info, deps, ORIGIN.DROP_SUMMON)) {
|
|
576
|
+
return 0;
|
|
577
|
+
}
|
|
578
|
+
/* Success: the monster is on the summon grid. */
|
|
579
|
+
const mon = squareMonster(state, near);
|
|
580
|
+
/* If delay, try to let the player act before the summoned monsters,
|
|
581
|
+
* including holding faster monsters for the required number of turns. */
|
|
582
|
+
if (delay) {
|
|
583
|
+
const pEPerTurn = turnEnergy(state.actor.speed, state.z.moveEnergy);
|
|
584
|
+
const mEPerTurn = turnEnergy(mon.mspeed, state.z.moveEnergy);
|
|
585
|
+
/*
|
|
586
|
+
* Number of turns for the player to move from zero energy is
|
|
587
|
+
* move_energy / p_e_per_turn; for the monster, move_energy /
|
|
588
|
+
* m_e_per_turn. Hold the monster for the difference, rounding up.
|
|
589
|
+
*/
|
|
590
|
+
const turns = Math.trunc((state.z.moveEnergy * (mEPerTurn - pEPerTurn) + mEPerTurn * pEPerTurn - 1) /
|
|
591
|
+
(mEPerTurn * pEPerTurn));
|
|
592
|
+
mon.energy = 0;
|
|
593
|
+
if (turns > 0) {
|
|
594
|
+
/* Set timer directly to avoid resistance. */
|
|
595
|
+
mon.mTimed[MON_TMD.HOLD] = Math.min(turns, 32767);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
return mon.race.level;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* select_shape: a race for a monster shapechange, drawn from the summon
|
|
602
|
+
* type's eligible races at the current depth (+5).
|
|
603
|
+
*/
|
|
604
|
+
export function selectShape(state, type, deps) {
|
|
605
|
+
deps.table.prep((race) => summonSpecificOkay(deps.summons, type, race, deps.kinBase ?? null));
|
|
606
|
+
const race = deps.table.getMonNum(state.rng, state.chunk.depth + 5, state.chunk.depth);
|
|
607
|
+
deps.table.prep(null);
|
|
608
|
+
return race;
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* wipe_mon_list's racial-count half: forget every live monster's racial
|
|
612
|
+
* occurrence before the level's monster list is discarded. The session's
|
|
613
|
+
* level change calls this so cur_num stays balanced across levels.
|
|
614
|
+
*/
|
|
615
|
+
export function wipeMonsterCounts(state) {
|
|
616
|
+
for (let i = 1; i < state.monsters.length; i++) {
|
|
617
|
+
const mon = state.monsters[i];
|
|
618
|
+
if (!mon)
|
|
619
|
+
continue;
|
|
620
|
+
const race = mon.originalRace ?? mon.race;
|
|
621
|
+
if (race.curNum > 0)
|
|
622
|
+
race.curNum--;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Re-count racial occurrences from a freshly populated monster list, and
|
|
627
|
+
* rebuild cave->num_repro (mon-make.c wipe_mon_list sets it to 0 at wipe; the
|
|
628
|
+
* generated / loaded breeders are counted here so the reproduction cap sees
|
|
629
|
+
* every RF_MULTIPLY monster on the level, not only mid-game arrivals).
|
|
630
|
+
*/
|
|
631
|
+
export function countMonsterRaces(state) {
|
|
632
|
+
state.numRepro = 0;
|
|
633
|
+
for (let i = 1; i < state.monsters.length; i++) {
|
|
634
|
+
const mon = state.monsters[i];
|
|
635
|
+
if (!mon)
|
|
636
|
+
continue;
|
|
637
|
+
(mon.originalRace ?? mon.race).curNum++;
|
|
638
|
+
if (mon.race.flags.has(RF.MULTIPLY))
|
|
639
|
+
state.numRepro++;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
//# sourceMappingURL=mon-place.js.map
|