@rpgm-tools/neo-angband-core 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent/perceive.d.ts.map +1 -1
- package/dist/agent/perceive.js +2 -2
- package/dist/agent/perceive.js.map +1 -1
- package/dist/combat/blow-vectors.d.ts +78 -0
- package/dist/combat/blow-vectors.d.ts.map +1 -0
- package/dist/combat/blow-vectors.fixtures.d.ts +19 -0
- package/dist/combat/blow-vectors.fixtures.d.ts.map +1 -0
- package/dist/combat/blow-vectors.fixtures.js +81 -0
- package/dist/combat/blow-vectors.fixtures.js.map +1 -0
- package/dist/combat/blow-vectors.js +195 -0
- package/dist/combat/blow-vectors.js.map +1 -0
- package/dist/combat/brand-slay.d.ts +22 -9
- package/dist/combat/brand-slay.d.ts.map +1 -1
- package/dist/combat/brand-slay.js +37 -10
- package/dist/combat/brand-slay.js.map +1 -1
- package/dist/combat/index.d.ts +1 -1
- package/dist/combat/index.js +1 -1
- package/dist/combat/melee.d.ts +25 -13
- package/dist/combat/melee.d.ts.map +1 -1
- package/dist/combat/melee.js +23 -19
- package/dist/combat/melee.js.map +1 -1
- package/dist/combat/mon-melee.d.ts +166 -7
- package/dist/combat/mon-melee.d.ts.map +1 -1
- package/dist/combat/mon-melee.js +469 -338
- package/dist/combat/mon-melee.js.map +1 -1
- package/dist/combat/ranged.d.ts +15 -13
- package/dist/combat/ranged.d.ts.map +1 -1
- package/dist/combat/ranged.js +31 -29
- package/dist/combat/ranged.js.map +1 -1
- package/dist/constants.d.ts +14 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -1
- package/dist/datafile.d.ts +48 -0
- package/dist/datafile.d.ts.map +1 -0
- package/dist/datafile.js +102 -0
- package/dist/datafile.js.map +1 -0
- package/dist/effects/effect-info-registry.d.ts +237 -0
- package/dist/effects/effect-info-registry.d.ts.map +1 -0
- package/dist/effects/effect-info-registry.js +138 -0
- package/dist/effects/effect-info-registry.js.map +1 -0
- package/dist/effects/effect-info-vectors.d.ts +92 -0
- package/dist/effects/effect-info-vectors.d.ts.map +1 -0
- package/dist/effects/effect-info-vectors.fixtures.d.ts +18 -0
- package/dist/effects/effect-info-vectors.fixtures.d.ts.map +1 -0
- package/dist/effects/effect-info-vectors.fixtures.js +51 -0
- package/dist/effects/effect-info-vectors.fixtures.js.map +1 -0
- package/dist/effects/effect-info-vectors.js +315 -0
- package/dist/effects/effect-info-vectors.js.map +1 -0
- package/dist/effects/effect-info.d.ts +5 -1
- package/dist/effects/effect-info.d.ts.map +1 -1
- package/dist/effects/effect-info.js +245 -143
- package/dist/effects/effect-info.js.map +1 -1
- package/dist/effects/effect.d.ts +4 -3
- package/dist/effects/effect.d.ts.map +1 -1
- package/dist/effects/effect.js +88 -70
- package/dist/effects/effect.js.map +1 -1
- package/dist/effects/handlers.d.ts +1 -1
- package/dist/effects/handlers.d.ts.map +1 -1
- package/dist/effects/handlers.js +5 -2
- package/dist/effects/handlers.js.map +1 -1
- package/dist/effects/interpreter.d.ts +11 -0
- package/dist/effects/interpreter.d.ts.map +1 -1
- package/dist/effects/interpreter.js +13 -0
- package/dist/effects/interpreter.js.map +1 -1
- package/dist/game/cave-cmd.d.ts +9 -5
- package/dist/game/cave-cmd.d.ts.map +1 -1
- package/dist/game/cave-cmd.js +56 -11
- package/dist/game/cave-cmd.js.map +1 -1
- package/dist/game/cave-square.d.ts +42 -0
- package/dist/game/cave-square.d.ts.map +1 -0
- package/dist/game/cave-square.js +73 -0
- package/dist/game/cave-square.js.map +1 -0
- package/dist/game/char-sheet.d.ts +12 -8
- package/dist/game/char-sheet.d.ts.map +1 -1
- package/dist/game/char-sheet.js +41 -8
- package/dist/game/char-sheet.js.map +1 -1
- package/dist/game/chest.d.ts +2 -3
- package/dist/game/chest.d.ts.map +1 -1
- package/dist/game/chest.js +17 -6
- package/dist/game/chest.js.map +1 -1
- package/dist/game/context.d.ts +213 -22
- package/dist/game/context.d.ts.map +1 -1
- package/dist/game/context.js +109 -17
- package/dist/game/context.js.map +1 -1
- package/dist/game/describe.d.ts +13 -0
- package/dist/game/describe.d.ts.map +1 -1
- package/dist/game/describe.js +32 -4
- package/dist/game/describe.js.map +1 -1
- package/dist/game/display.d.ts +97 -8
- package/dist/game/display.d.ts.map +1 -1
- package/dist/game/display.js +157 -13
- package/dist/game/display.js.map +1 -1
- package/dist/game/dump-level.d.ts.map +1 -1
- package/dist/game/dump-level.js +3 -2
- package/dist/game/dump-level.js.map +1 -1
- package/dist/game/effect-attack.d.ts.map +1 -1
- package/dist/game/effect-attack.js +36 -27
- package/dist/game/effect-attack.js.map +1 -1
- package/dist/game/effect-detect.d.ts +4 -4
- package/dist/game/effect-detect.d.ts.map +1 -1
- package/dist/game/effect-detect.js +42 -9
- package/dist/game/effect-detect.js.map +1 -1
- package/dist/game/effect-env.d.ts +7 -1
- package/dist/game/effect-env.d.ts.map +1 -1
- package/dist/game/effect-env.js +1 -0
- package/dist/game/effect-env.js.map +1 -1
- package/dist/game/effect-general.d.ts +5 -3
- package/dist/game/effect-general.d.ts.map +1 -1
- package/dist/game/effect-general.js +94 -43
- package/dist/game/effect-general.js.map +1 -1
- package/dist/game/effect-item.d.ts +2 -1
- package/dist/game/effect-item.d.ts.map +1 -1
- package/dist/game/effect-item.js +136 -82
- package/dist/game/effect-item.js.map +1 -1
- package/dist/game/effect-melee.d.ts +10 -4
- package/dist/game/effect-melee.d.ts.map +1 -1
- package/dist/game/effect-melee.js +44 -19
- package/dist/game/effect-melee.js.map +1 -1
- package/dist/game/effect-monster.d.ts +26 -4
- package/dist/game/effect-monster.d.ts.map +1 -1
- package/dist/game/effect-monster.js +52 -9
- package/dist/game/effect-monster.js.map +1 -1
- package/dist/game/effect-teleport.d.ts +58 -19
- package/dist/game/effect-teleport.d.ts.map +1 -1
- package/dist/game/effect-teleport.js +143 -27
- package/dist/game/effect-teleport.js.map +1 -1
- package/dist/game/effect-terrain.d.ts +1 -3
- package/dist/game/effect-terrain.d.ts.map +1 -1
- package/dist/game/effect-terrain.js +38 -22
- package/dist/game/effect-terrain.js.map +1 -1
- package/dist/game/equip-cmp.d.ts.map +1 -1
- package/dist/game/equip-cmp.js +10 -7
- package/dist/game/equip-cmp.js.map +1 -1
- package/dist/game/floor.d.ts +16 -4
- package/dist/game/floor.d.ts.map +1 -1
- package/dist/game/floor.js +22 -4
- package/dist/game/floor.js.map +1 -1
- package/dist/game/gear.d.ts +101 -13
- package/dist/game/gear.d.ts.map +1 -1
- package/dist/game/gear.js +183 -24
- package/dist/game/gear.js.map +1 -1
- package/dist/game/harness.d.ts +2 -1
- package/dist/game/harness.d.ts.map +1 -1
- package/dist/game/harness.js +12 -1
- package/dist/game/harness.js.map +1 -1
- package/dist/game/ignore-cmd.d.ts +47 -8
- package/dist/game/ignore-cmd.d.ts.map +1 -1
- package/dist/game/ignore-cmd.js +76 -8
- package/dist/game/ignore-cmd.js.map +1 -1
- package/dist/game/known.d.ts +223 -34
- package/dist/game/known.d.ts.map +1 -1
- package/dist/game/known.js +301 -67
- package/dist/game/known.js.map +1 -1
- package/dist/game/loop.d.ts +4 -3
- package/dist/game/loop.d.ts.map +1 -1
- package/dist/game/loop.js +49 -29
- package/dist/game/loop.js.map +1 -1
- package/dist/game/lore-color.d.ts.map +1 -1
- package/dist/game/lore-color.js +13 -1
- package/dist/game/lore-color.js.map +1 -1
- package/dist/game/mon-cast.d.ts +3 -4
- package/dist/game/mon-cast.d.ts.map +1 -1
- package/dist/game/mon-cast.js +30 -2
- package/dist/game/mon-cast.js.map +1 -1
- package/dist/game/mon-cmd.d.ts +4 -5
- package/dist/game/mon-cmd.d.ts.map +1 -1
- package/dist/game/mon-cmd.js +80 -27
- package/dist/game/mon-cmd.js.map +1 -1
- package/dist/game/mon-death.d.ts +8 -4
- package/dist/game/mon-death.d.ts.map +1 -1
- package/dist/game/mon-death.js +6 -9
- package/dist/game/mon-death.js.map +1 -1
- package/dist/game/mon-group.d.ts +9 -5
- package/dist/game/mon-group.d.ts.map +1 -1
- package/dist/game/mon-group.js +9 -5
- package/dist/game/mon-group.js.map +1 -1
- package/dist/game/mon-message.d.ts +90 -40
- package/dist/game/mon-message.d.ts.map +1 -1
- package/dist/game/mon-message.js +267 -59
- package/dist/game/mon-message.js.map +1 -1
- package/dist/game/mon-place.d.ts +11 -1
- package/dist/game/mon-place.d.ts.map +1 -1
- package/dist/game/mon-place.js +15 -3
- package/dist/game/mon-place.js.map +1 -1
- package/dist/game/mon-ranged.d.ts +2 -1
- package/dist/game/mon-ranged.d.ts.map +1 -1
- package/dist/game/mon-ranged.js +11 -5
- package/dist/game/mon-ranged.js.map +1 -1
- package/dist/game/mon-side.d.ts +3 -2
- package/dist/game/mon-side.d.ts.map +1 -1
- package/dist/game/mon-side.js +15 -14
- package/dist/game/mon-side.js.map +1 -1
- package/dist/game/monster-turn.d.ts +20 -10
- package/dist/game/monster-turn.d.ts.map +1 -1
- package/dist/game/monster-turn.js +110 -83
- package/dist/game/monster-turn.js.map +1 -1
- package/dist/game/notice.d.ts +36 -0
- package/dist/game/notice.d.ts.map +1 -0
- package/dist/game/notice.js +79 -0
- package/dist/game/notice.js.map +1 -0
- package/dist/game/obj-cmd.d.ts +14 -3
- package/dist/game/obj-cmd.d.ts.map +1 -1
- package/dist/game/obj-cmd.js +109 -35
- package/dist/game/obj-cmd.js.map +1 -1
- package/dist/game/obj-list.d.ts +13 -2
- package/dist/game/obj-list.d.ts.map +1 -1
- package/dist/game/obj-list.js +42 -27
- package/dist/game/obj-list.js.map +1 -1
- package/dist/game/object-inspect.d.ts +9 -0
- package/dist/game/object-inspect.d.ts.map +1 -1
- package/dist/game/object-inspect.js +4 -0
- package/dist/game/object-inspect.js.map +1 -1
- package/dist/game/pickup.d.ts +0 -2
- package/dist/game/pickup.d.ts.map +1 -1
- package/dist/game/pickup.js +18 -3
- package/dist/game/pickup.js.map +1 -1
- package/dist/game/player-side-vectors.d.ts +174 -0
- package/dist/game/player-side-vectors.d.ts.map +1 -0
- package/dist/game/player-side-vectors.fixtures.d.ts +33 -0
- package/dist/game/player-side-vectors.fixtures.d.ts.map +1 -0
- package/dist/game/player-side-vectors.fixtures.js +191 -0
- package/dist/game/player-side-vectors.fixtures.js.map +1 -0
- package/dist/game/player-side-vectors.js +292 -0
- package/dist/game/player-side-vectors.js.map +1 -0
- package/dist/game/player-side.d.ts +129 -1
- package/dist/game/player-side.d.ts.map +1 -1
- package/dist/game/player-side.js +520 -338
- package/dist/game/player-side.js.map +1 -1
- package/dist/game/player-turn.d.ts +26 -7
- package/dist/game/player-turn.d.ts.map +1 -1
- package/dist/game/player-turn.js +180 -33
- package/dist/game/player-turn.js.map +1 -1
- package/dist/game/poly.d.ts +38 -0
- package/dist/game/poly.d.ts.map +1 -0
- package/dist/game/poly.js +82 -0
- package/dist/game/poly.js.map +1 -0
- package/dist/game/project-cast.d.ts +20 -3
- package/dist/game/project-cast.d.ts.map +1 -1
- package/dist/game/project-cast.js +49 -6
- package/dist/game/project-cast.js.map +1 -1
- package/dist/game/project-feat-vectors.d.ts +124 -0
- package/dist/game/project-feat-vectors.d.ts.map +1 -0
- package/dist/game/project-feat-vectors.fixtures.d.ts +13 -0
- package/dist/game/project-feat-vectors.fixtures.d.ts.map +1 -0
- package/dist/game/project-feat-vectors.fixtures.js +94 -0
- package/dist/game/project-feat-vectors.fixtures.js.map +1 -0
- package/dist/game/project-feat-vectors.js +229 -0
- package/dist/game/project-feat-vectors.js.map +1 -0
- package/dist/game/project-feat.d.ts +53 -1
- package/dist/game/project-feat.d.ts.map +1 -1
- package/dist/game/project-feat.js +374 -247
- package/dist/game/project-feat.js.map +1 -1
- package/dist/game/project-monster.d.ts +21 -8
- package/dist/game/project-monster.d.ts.map +1 -1
- package/dist/game/project-monster.js +45 -21
- package/dist/game/project-monster.js.map +1 -1
- package/dist/game/project-obj.d.ts +62 -0
- package/dist/game/project-obj.d.ts.map +1 -1
- package/dist/game/project-obj.js +72 -41
- package/dist/game/project-obj.js.map +1 -1
- package/dist/game/project-player.d.ts +8 -0
- package/dist/game/project-player.d.ts.map +1 -1
- package/dist/game/project-player.js.map +1 -1
- package/dist/game/projection-handlers.d.ts +81 -0
- package/dist/game/projection-handlers.d.ts.map +1 -0
- package/dist/game/projection-handlers.js +93 -0
- package/dist/game/projection-handlers.js.map +1 -0
- package/dist/game/quest.d.ts +23 -0
- package/dist/game/quest.d.ts.map +1 -1
- package/dist/game/quest.js +42 -0
- package/dist/game/quest.js.map +1 -1
- package/dist/game/ranged-cmd.d.ts +13 -2
- package/dist/game/ranged-cmd.d.ts.map +1 -1
- package/dist/game/ranged-cmd.js +32 -15
- package/dist/game/ranged-cmd.js.map +1 -1
- package/dist/game/repeat.d.ts +78 -0
- package/dist/game/repeat.d.ts.map +1 -0
- package/dist/game/repeat.js +88 -0
- package/dist/game/repeat.js.map +1 -0
- package/dist/game/shape-inspect.d.ts +74 -0
- package/dist/game/shape-inspect.d.ts.map +1 -0
- package/dist/game/shape-inspect.js +114 -0
- package/dist/game/shape-inspect.js.map +1 -0
- package/dist/game/spell-cmd.d.ts +15 -4
- package/dist/game/spell-cmd.d.ts.map +1 -1
- package/dist/game/spell-cmd.js +35 -6
- package/dist/game/spell-cmd.js.map +1 -1
- package/dist/game/spoil.d.ts.map +1 -1
- package/dist/game/spoil.js +89 -40
- package/dist/game/spoil.js.map +1 -1
- package/dist/game/steal.d.ts +3 -3
- package/dist/game/steal.d.ts.map +1 -1
- package/dist/game/steal.js +9 -4
- package/dist/game/steal.js.map +1 -1
- package/dist/game/target-loop.d.ts +10 -4
- package/dist/game/target-loop.d.ts.map +1 -1
- package/dist/game/target-loop.js +14 -8
- package/dist/game/target-loop.js.map +1 -1
- package/dist/game/target.d.ts +4 -4
- package/dist/game/target.d.ts.map +1 -1
- package/dist/game/target.js +19 -8
- package/dist/game/target.js.map +1 -1
- package/dist/game/ui-entry.d.ts +63 -4
- package/dist/game/ui-entry.d.ts.map +1 -1
- package/dist/game/ui-entry.js +151 -23
- package/dist/game/ui-entry.js.map +1 -1
- package/dist/game/wizard.d.ts +23 -5
- package/dist/game/wizard.d.ts.map +1 -1
- package/dist/game/wizard.js +93 -11
- package/dist/game/wizard.js.map +1 -1
- package/dist/game/world.d.ts.map +1 -1
- package/dist/game/world.js +6 -0
- package/dist/game/world.js.map +1 -1
- package/dist/gen/cave.d.ts +49 -8
- package/dist/gen/cave.d.ts.map +1 -1
- package/dist/gen/cave.js +200 -28
- package/dist/gen/cave.js.map +1 -1
- package/dist/gen/generate.d.ts +54 -9
- package/dist/gen/generate.d.ts.map +1 -1
- package/dist/gen/generate.js +55 -8
- package/dist/gen/generate.js.map +1 -1
- package/dist/gen/glyph-vectors.d.ts +109 -0
- package/dist/gen/glyph-vectors.d.ts.map +1 -0
- package/dist/gen/glyph-vectors.fixtures.d.ts +18 -0
- package/dist/gen/glyph-vectors.fixtures.d.ts.map +1 -0
- package/dist/gen/glyph-vectors.fixtures.js +94 -0
- package/dist/gen/glyph-vectors.fixtures.js.map +1 -0
- package/dist/gen/glyph-vectors.js +218 -0
- package/dist/gen/glyph-vectors.js.map +1 -0
- package/dist/gen/glyph.d.ts +104 -0
- package/dist/gen/glyph.d.ts.map +1 -0
- package/dist/gen/glyph.js +72 -0
- package/dist/gen/glyph.js.map +1 -0
- package/dist/gen/room.d.ts +26 -2
- package/dist/gen/room.d.ts.map +1 -1
- package/dist/gen/room.js +414 -264
- package/dist/gen/room.js.map +1 -1
- package/dist/gen/util.d.ts +11 -2
- package/dist/gen/util.d.ts.map +1 -1
- package/dist/gen/util.js +31 -9
- package/dist/gen/util.js.map +1 -1
- package/dist/i18n/i18n.d.ts +207 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +405 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/text.d.ts +62 -0
- package/dist/i18n/text.d.ts.map +1 -0
- package/dist/i18n/text.js +120 -0
- package/dist/i18n/text.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/mod/extension.d.ts +115 -0
- package/dist/mod/extension.d.ts.map +1 -0
- package/dist/mod/extension.js +85 -0
- package/dist/mod/extension.js.map +1 -0
- package/dist/mod/ids.d.ts +10 -0
- package/dist/mod/ids.d.ts.map +1 -1
- package/dist/mod/ids.js +90 -21
- package/dist/mod/ids.js.map +1 -1
- package/dist/mod/record-keys.d.ts +43 -0
- package/dist/mod/record-keys.d.ts.map +1 -0
- package/dist/mod/record-keys.js +100 -0
- package/dist/mod/record-keys.js.map +1 -0
- package/dist/mod/registry-host.d.ts +472 -0
- package/dist/mod/registry-host.d.ts.map +1 -1
- package/dist/mod/registry-host.js +313 -0
- package/dist/mod/registry-host.js.map +1 -1
- package/dist/mod/save-blocks.d.ts +1 -1
- package/dist/mon/bind.d.ts.map +1 -1
- package/dist/mon/bind.js +6 -3
- package/dist/mon/bind.js.map +1 -1
- package/dist/mon/knowledge-groups.d.ts +0 -6
- package/dist/mon/knowledge-groups.d.ts.map +1 -1
- package/dist/mon/knowledge-groups.js +12 -8
- package/dist/mon/knowledge-groups.js.map +1 -1
- package/dist/mon/lore-describe.d.ts +46 -10
- package/dist/mon/lore-describe.d.ts.map +1 -1
- package/dist/mon/lore-describe.js +74 -22
- package/dist/mon/lore-describe.js.map +1 -1
- package/dist/mon/lore-file.d.ts +126 -0
- package/dist/mon/lore-file.d.ts.map +1 -0
- package/dist/mon/lore-file.js +291 -0
- package/dist/mon/lore-file.js.map +1 -0
- package/dist/mon/lore.d.ts +9 -3
- package/dist/mon/lore.d.ts.map +1 -1
- package/dist/mon/lore.js +9 -3
- package/dist/mon/lore.js.map +1 -1
- package/dist/mon/make.d.ts +4 -2
- package/dist/mon/make.d.ts.map +1 -1
- package/dist/mon/make.js +4 -2
- package/dist/mon/make.js.map +1 -1
- package/dist/mon/monster.d.ts +1 -1
- package/dist/mon/monster.js +1 -1
- package/dist/mon/predicate.d.ts +14 -9
- package/dist/mon/predicate.d.ts.map +1 -1
- package/dist/mon/predicate.js +14 -9
- package/dist/mon/predicate.js.map +1 -1
- package/dist/mon/project-mon.d.ts +16 -3
- package/dist/mon/project-mon.d.ts.map +1 -1
- package/dist/mon/project-mon.js +14 -5
- package/dist/mon/project-mon.js.map +1 -1
- package/dist/mon/steal.d.ts +31 -4
- package/dist/mon/steal.d.ts.map +1 -1
- package/dist/mon/steal.js +20 -7
- package/dist/mon/steal.js.map +1 -1
- package/dist/mon/take-hit.d.ts +8 -3
- package/dist/mon/take-hit.d.ts.map +1 -1
- package/dist/mon/take-hit.js +8 -3
- package/dist/mon/take-hit.js.map +1 -1
- package/dist/mon/timed.d.ts +15 -9
- package/dist/mon/timed.d.ts.map +1 -1
- package/dist/mon/timed.js +13 -8
- package/dist/mon/timed.js.map +1 -1
- package/dist/mon/types.d.ts +11 -4
- package/dist/mon/types.d.ts.map +1 -1
- package/dist/mon/types.js.map +1 -1
- package/dist/msg.d.ts +40 -1
- package/dist/msg.d.ts.map +1 -1
- package/dist/msg.js +42 -1
- package/dist/msg.js.map +1 -1
- package/dist/obj/artifact-fake.d.ts +46 -14
- package/dist/obj/artifact-fake.d.ts.map +1 -1
- package/dist/obj/artifact-fake.js +46 -17
- package/dist/obj/artifact-fake.js.map +1 -1
- package/dist/obj/bind.d.ts +23 -0
- package/dist/obj/bind.d.ts.map +1 -1
- package/dist/obj/bind.js +49 -9
- package/dist/obj/bind.js.map +1 -1
- package/dist/obj/desc-vectors.d.ts +68 -0
- package/dist/obj/desc-vectors.d.ts.map +1 -0
- package/dist/obj/desc-vectors.fixtures.d.ts +12 -0
- package/dist/obj/desc-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/desc-vectors.fixtures.js +95 -0
- package/dist/obj/desc-vectors.fixtures.js.map +1 -0
- package/dist/obj/desc-vectors.js +86 -0
- package/dist/obj/desc-vectors.js.map +1 -0
- package/dist/obj/desc.d.ts +17 -2
- package/dist/obj/desc.d.ts.map +1 -1
- package/dist/obj/desc.js +129 -54
- package/dist/obj/desc.js.map +1 -1
- package/dist/obj/effects-info.d.ts.map +1 -1
- package/dist/obj/effects-info.js +87 -58
- package/dist/obj/effects-info.js.map +1 -1
- package/dist/obj/fake-object.d.ts +70 -0
- package/dist/obj/fake-object.d.ts.map +1 -0
- package/dist/obj/fake-object.js +104 -0
- package/dist/obj/fake-object.js.map +1 -0
- package/dist/obj/ignore.d.ts +55 -12
- package/dist/obj/ignore.d.ts.map +1 -1
- package/dist/obj/ignore.js +68 -31
- package/dist/obj/ignore.js.map +1 -1
- package/dist/obj/knowledge.d.ts +46 -3
- package/dist/obj/knowledge.d.ts.map +1 -1
- package/dist/obj/knowledge.js +169 -151
- package/dist/obj/knowledge.js.map +1 -1
- package/dist/obj/known-object.d.ts +68 -8
- package/dist/obj/known-object.d.ts.map +1 -1
- package/dist/obj/known-object.js +90 -10
- package/dist/obj/known-object.js.map +1 -1
- package/dist/obj/make.d.ts +15 -4
- package/dist/obj/make.d.ts.map +1 -1
- package/dist/obj/make.js +49 -27
- package/dist/obj/make.js.map +1 -1
- package/dist/obj/object-info.d.ts +10 -0
- package/dist/obj/object-info.d.ts.map +1 -1
- package/dist/obj/object-info.js +93 -7
- package/dist/obj/object-info.js.map +1 -1
- package/dist/obj/object.d.ts +42 -4
- package/dist/obj/object.d.ts.map +1 -1
- package/dist/obj/object.js +362 -147
- package/dist/obj/object.js.map +1 -1
- package/dist/obj/power.d.ts +23 -4
- package/dist/obj/power.d.ts.map +1 -1
- package/dist/obj/power.js +231 -65
- package/dist/obj/power.js.map +1 -1
- package/dist/obj/randart-build.d.ts +27 -22
- package/dist/obj/randart-build.d.ts.map +1 -1
- package/dist/obj/randart-build.js +435 -357
- package/dist/obj/randart-build.js.map +1 -1
- package/dist/obj/randart-data.d.ts +62 -24
- package/dist/obj/randart-data.d.ts.map +1 -1
- package/dist/obj/randart-data.js +333 -189
- package/dist/obj/randart-data.js.map +1 -1
- package/dist/obj/randart-file.d.ts +21 -0
- package/dist/obj/randart-file.d.ts.map +1 -0
- package/dist/obj/randart-file.js +119 -0
- package/dist/obj/randart-file.js.map +1 -0
- package/dist/obj/randart-log.d.ts +63 -0
- package/dist/obj/randart-log.d.ts.map +1 -0
- package/dist/obj/randart-log.js +72 -0
- package/dist/obj/randart-log.js.map +1 -0
- package/dist/obj/randart-registry.d.ts +178 -0
- package/dist/obj/randart-registry.d.ts.map +1 -0
- package/dist/obj/randart-registry.js +140 -0
- package/dist/obj/randart-registry.js.map +1 -0
- package/dist/obj/randart-vectors.d.ts +97 -0
- package/dist/obj/randart-vectors.d.ts.map +1 -0
- package/dist/obj/randart-vectors.fixtures.d.ts +18 -0
- package/dist/obj/randart-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/randart-vectors.fixtures.js +50 -0
- package/dist/obj/randart-vectors.fixtures.js.map +1 -0
- package/dist/obj/randart-vectors.js +311 -0
- package/dist/obj/randart-vectors.js.map +1 -0
- package/dist/obj/randart.d.ts +53 -15
- package/dist/obj/randart.d.ts.map +1 -1
- package/dist/obj/randart.js +166 -44
- package/dist/obj/randart.js.map +1 -1
- package/dist/obj/rune-registry.d.ts +180 -0
- package/dist/obj/rune-registry.d.ts.map +1 -0
- package/dist/obj/rune-registry.js +161 -0
- package/dist/obj/rune-registry.js.map +1 -0
- package/dist/obj/rune-vectors.d.ts +99 -0
- package/dist/obj/rune-vectors.d.ts.map +1 -0
- package/dist/obj/rune-vectors.fixtures.d.ts +44 -0
- package/dist/obj/rune-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/rune-vectors.fixtures.js +125 -0
- package/dist/obj/rune-vectors.fixtures.js.map +1 -0
- package/dist/obj/rune-vectors.js +159 -0
- package/dist/obj/rune-vectors.js.map +1 -0
- package/dist/obj/tval-registry.d.ts +174 -0
- package/dist/obj/tval-registry.d.ts.map +1 -0
- package/dist/obj/tval-registry.js +151 -0
- package/dist/obj/tval-registry.js.map +1 -0
- package/dist/obj/tval-vectors.d.ts +85 -0
- package/dist/obj/tval-vectors.d.ts.map +1 -0
- package/dist/obj/tval-vectors.fixtures.d.ts +24 -0
- package/dist/obj/tval-vectors.fixtures.d.ts.map +1 -0
- package/dist/obj/tval-vectors.fixtures.js +41 -0
- package/dist/obj/tval-vectors.fixtures.js.map +1 -0
- package/dist/obj/tval-vectors.js +76 -0
- package/dist/obj/tval-vectors.js.map +1 -0
- package/dist/obj/types.d.ts +18 -7
- package/dist/obj/types.d.ts.map +1 -1
- package/dist/obj/types.js.map +1 -1
- package/dist/obj/value.d.ts.map +1 -1
- package/dist/obj/value.js +23 -20
- package/dist/obj/value.js.map +1 -1
- package/dist/parser.d.ts +116 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +205 -0
- package/dist/parser.js.map +1 -0
- package/dist/player/bind.d.ts.map +1 -1
- package/dist/player/bind.js +3 -2
- package/dist/player/bind.js.map +1 -1
- package/dist/player/birth.d.ts +2 -1
- package/dist/player/birth.d.ts.map +1 -1
- package/dist/player/birth.js +2 -1
- package/dist/player/birth.js.map +1 -1
- package/dist/player/calcs.d.ts +58 -23
- package/dist/player/calcs.d.ts.map +1 -1
- package/dist/player/calcs.js +93 -36
- package/dist/player/calcs.js.map +1 -1
- package/dist/player/death.d.ts +50 -0
- package/dist/player/death.d.ts.map +1 -0
- package/dist/player/death.js +46 -0
- package/dist/player/death.js.map +1 -0
- package/dist/player/options-file.d.ts +129 -0
- package/dist/player/options-file.d.ts.map +1 -0
- package/dist/player/options-file.js +309 -0
- package/dist/player/options-file.js.map +1 -0
- package/dist/player/options.d.ts +2 -1
- package/dist/player/options.d.ts.map +1 -1
- package/dist/player/options.js +2 -1
- package/dist/player/options.js.map +1 -1
- package/dist/player/player.d.ts +50 -3
- package/dist/player/player.d.ts.map +1 -1
- package/dist/player/player.js +10 -1
- package/dist/player/player.js.map +1 -1
- package/dist/player/shape-lore.d.ts +11 -7
- package/dist/player/shape-lore.d.ts.map +1 -1
- package/dist/player/shape-lore.js +24 -11
- package/dist/player/shape-lore.js.map +1 -1
- package/dist/player/timed.d.ts +5 -3
- package/dist/player/timed.d.ts.map +1 -1
- package/dist/player/timed.js +11 -2
- package/dist/player/timed.js.map +1 -1
- package/dist/player/types.d.ts +29 -4
- package/dist/player/types.d.ts.map +1 -1
- package/dist/player/types.js +24 -1
- package/dist/player/types.js.map +1 -1
- package/dist/session/boot.d.ts +26 -2
- package/dist/session/boot.d.ts.map +1 -1
- package/dist/session/boot.js +21 -2
- package/dist/session/boot.js.map +1 -1
- package/dist/session/game.d.ts +15 -0
- package/dist/session/game.d.ts.map +1 -1
- package/dist/session/game.js +616 -140
- package/dist/session/game.js.map +1 -1
- package/dist/session/save-migrate.d.ts.map +1 -1
- package/dist/session/save-migrate.js +76 -1
- package/dist/session/save-migrate.js.map +1 -1
- package/dist/session/save.d.ts +75 -12
- package/dist/session/save.d.ts.map +1 -1
- package/dist/session/save.js +177 -18
- package/dist/session/save.js.map +1 -1
- package/dist/store/bind.d.ts +1 -1
- package/dist/store/bind.d.ts.map +1 -1
- package/dist/store/bind.js +4 -3
- package/dist/store/bind.js.map +1 -1
- package/dist/store/mass-produce-vectors.d.ts +40 -0
- package/dist/store/mass-produce-vectors.d.ts.map +1 -0
- package/dist/store/mass-produce-vectors.fixtures.d.ts +13 -0
- package/dist/store/mass-produce-vectors.fixtures.d.ts.map +1 -0
- package/dist/store/mass-produce-vectors.fixtures.js +52 -0
- package/dist/store/mass-produce-vectors.fixtures.js.map +1 -0
- package/dist/store/mass-produce-vectors.js +44 -0
- package/dist/store/mass-produce-vectors.js.map +1 -0
- package/dist/store/store.d.ts +104 -7
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +199 -77
- package/dist/store/store.js.map +1 -1
- package/dist/store/transact.d.ts +14 -5
- package/dist/store/transact.d.ts.map +1 -1
- package/dist/store/transact.js +17 -16
- package/dist/store/transact.js.map +1 -1
- package/dist/store/types.d.ts +3 -2
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/types.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visuals/index.d.ts +1 -0
- package/dist/visuals/index.d.ts.map +1 -1
- package/dist/visuals/index.js +1 -0
- package/dist/visuals/index.js.map +1 -1
- package/dist/visuals/map-text.d.ts +8 -0
- package/dist/visuals/map-text.d.ts.map +1 -1
- package/dist/visuals/map-text.js +1 -1
- package/dist/visuals/map-text.js.map +1 -1
- package/dist/visuals/object-glyph.d.ts +56 -0
- package/dist/visuals/object-glyph.d.ts.map +1 -0
- package/dist/visuals/object-glyph.js +52 -0
- package/dist/visuals/object-glyph.js.map +1 -0
- package/dist/visuals/prefs.d.ts +14 -22
- package/dist/visuals/prefs.d.ts.map +1 -1
- package/dist/visuals/prefs.js +4 -23
- package/dist/visuals/prefs.js.map +1 -1
- package/dist/visuals/tile-prefs.d.ts +26 -0
- package/dist/visuals/tile-prefs.d.ts.map +1 -1
- package/dist/visuals/tile-prefs.js +28 -0
- package/dist/visuals/tile-prefs.js.map +1 -1
- package/dist/world/feature.d.ts +2 -1
- package/dist/world/feature.d.ts.map +1 -1
- package/dist/world/feature.js +2 -0
- package/dist/world/feature.js.map +1 -1
- package/dist/world/project.d.ts +10 -2
- package/dist/world/project.d.ts.map +1 -1
- package/dist/world/project.js +18 -6
- package/dist/world/project.js.map +1 -1
- package/dist/world/projection.d.ts +37 -3
- package/dist/world/projection.d.ts.map +1 -1
- package/dist/world/projection.js +69 -7
- package/dist/world/projection.js.map +1 -1
- package/dist/world/trap.d.ts +2 -1
- package/dist/world/trap.d.ts.map +1 -1
- package/dist/world/trap.js +2 -1
- package/dist/world/trap.js.map +1 -1
- package/dist/world/view.d.ts +1 -1
- package/dist/world/view.d.ts.map +1 -1
- package/dist/world/view.js +11 -3
- package/dist/world/view.js.map +1 -1
- package/package.json +1 -1
- package/src/agent/perceive.ts +2 -3
- package/src/combat/blow-vectors.fixtures.ts +99 -0
- package/src/combat/blow-vectors.json +482 -0
- package/src/combat/blow-vectors.ts +280 -0
- package/src/combat/brand-slay.ts +42 -11
- package/src/combat/index.ts +1 -1
- package/src/combat/melee.ts +37 -19
- package/src/combat/mon-melee.ts +611 -364
- package/src/combat/ranged.ts +43 -26
- package/src/constants.ts +15 -0
- package/src/datafile.ts +148 -0
- package/src/effects/effect-info-registry.ts +313 -0
- package/src/effects/effect-info-vectors.fixtures.ts +61 -0
- package/src/effects/effect-info-vectors.json +11532 -0
- package/src/effects/effect-info-vectors.ts +376 -0
- package/src/effects/effect-info.ts +1005 -859
- package/src/effects/effect.ts +96 -62
- package/src/effects/handlers.ts +5 -2
- package/src/effects/interpreter.ts +14 -0
- package/src/game/cave-cmd.ts +54 -11
- package/src/game/cave-square.ts +80 -0
- package/src/game/char-sheet.ts +59 -16
- package/src/game/chest.ts +25 -8
- package/src/game/context.ts +293 -27
- package/src/game/describe.ts +34 -4
- package/src/game/display.ts +215 -19
- package/src/game/dump-level.ts +3 -2
- package/src/game/effect-attack.ts +41 -28
- package/src/game/effect-detect.ts +45 -8
- package/src/game/effect-env.ts +8 -0
- package/src/game/effect-general.ts +110 -47
- package/src/game/effect-item.ts +1075 -999
- package/src/game/effect-melee.ts +51 -18
- package/src/game/effect-monster.ts +55 -9
- package/src/game/effect-teleport.ts +173 -38
- package/src/game/effect-terrain.ts +38 -22
- package/src/game/equip-cmp.ts +483 -480
- package/src/game/floor.ts +22 -4
- package/src/game/gear.ts +210 -21
- package/src/game/harness.ts +12 -1
- package/src/game/ignore-cmd.ts +96 -8
- package/src/game/known.ts +392 -73
- package/src/game/loop.ts +52 -27
- package/src/game/lore-color.ts +13 -1
- package/src/game/mon-cast.ts +31 -6
- package/src/game/mon-cmd.ts +95 -30
- package/src/game/mon-death.ts +14 -12
- package/src/game/mon-group.ts +9 -5
- package/src/game/mon-message.ts +363 -65
- package/src/game/mon-place.ts +15 -3
- package/src/game/mon-ranged.ts +14 -5
- package/src/game/mon-side.ts +16 -12
- package/src/game/monster-turn.ts +120 -87
- package/src/game/notice.ts +85 -0
- package/src/game/obj-cmd.ts +126 -37
- package/src/game/obj-list.ts +44 -26
- package/src/game/object-inspect.ts +13 -0
- package/src/game/pickup.ts +29 -5
- package/src/game/player-side-vectors.fixtures.ts +215 -0
- package/src/game/player-side-vectors.json +6914 -0
- package/src/game/player-side-vectors.ts +420 -0
- package/src/game/player-side.ts +622 -340
- package/src/game/player-turn.ts +228 -31
- package/src/game/poly.ts +107 -0
- package/src/game/project-cast.ts +63 -6
- package/src/game/project-feat-vectors.fixtures.ts +106 -0
- package/src/game/project-feat-vectors.json +6554 -0
- package/src/game/project-feat-vectors.ts +323 -0
- package/src/game/project-feat.ts +417 -248
- package/src/game/project-monster.ts +69 -30
- package/src/game/project-obj-vectors.json +1 -0
- package/src/game/project-obj.ts +115 -47
- package/src/game/project-player.ts +8 -0
- package/src/game/projection-handlers.ts +110 -0
- package/src/game/quest.ts +48 -0
- package/src/game/ranged-cmd.ts +45 -11
- package/src/game/repeat.ts +92 -0
- package/src/game/shape-inspect.ts +166 -0
- package/src/game/spell-cmd.ts +39 -6
- package/src/game/spoil.ts +92 -39
- package/src/game/steal.ts +9 -4
- package/src/game/target-loop.ts +14 -7
- package/src/game/target.ts +18 -7
- package/src/game/ui-entry.ts +172 -22
- package/src/game/wizard.ts +97 -10
- package/src/game/world.ts +6 -0
- package/src/gen/cave.ts +225 -26
- package/src/gen/generate.ts +62 -9
- package/src/gen/glyph-vectors.fixtures.ts +122 -0
- package/src/gen/glyph-vectors.json +5996 -0
- package/src/gen/glyph-vectors.ts +280 -0
- package/src/gen/glyph.ts +132 -0
- package/src/gen/room.ts +446 -265
- package/src/gen/util.ts +32 -9
- package/src/i18n/i18n.ts +492 -0
- package/src/i18n/text.ts +117 -0
- package/src/index.ts +307 -254
- package/src/mod/extension.ts +136 -0
- package/src/mod/ids.ts +92 -21
- package/src/mod/record-keys.ts +102 -0
- package/src/mod/registry-host.ts +1063 -234
- package/src/mon/bind.ts +14 -8
- package/src/mon/knowledge-groups.ts +12 -12
- package/src/mon/lore-describe.ts +93 -26
- package/src/mon/lore-file.ts +365 -0
- package/src/mon/lore.ts +9 -3
- package/src/mon/make.ts +4 -2
- package/src/mon/monster.ts +1 -1
- package/src/mon/predicate.ts +14 -9
- package/src/mon/project-mon.ts +23 -5
- package/src/mon/steal.ts +39 -7
- package/src/mon/take-hit.ts +8 -3
- package/src/mon/timed.ts +15 -9
- package/src/mon/types.ts +11 -4
- package/src/msg.ts +55 -1
- package/src/obj/artifact-fake.ts +47 -17
- package/src/obj/bind.ts +52 -9
- package/src/obj/desc-vectors.fixtures.ts +119 -0
- package/src/obj/desc-vectors.json +2360 -0
- package/src/obj/desc-vectors.ts +128 -0
- package/src/obj/desc.ts +159 -55
- package/src/obj/effects-info.ts +90 -59
- package/src/obj/fake-object.ts +135 -0
- package/src/obj/ignore.ts +95 -28
- package/src/obj/knowledge.ts +291 -139
- package/src/obj/known-object.ts +126 -11
- package/src/obj/make.ts +53 -29
- package/src/obj/object-info.ts +103 -6
- package/src/obj/object.ts +392 -151
- package/src/obj/power.ts +297 -59
- package/src/obj/randart-build.ts +1875 -1705
- package/src/obj/randart-data.ts +1547 -1344
- package/src/obj/randart-file.ts +130 -0
- package/src/obj/randart-log.ts +78 -0
- package/src/obj/randart-registry.ts +247 -0
- package/src/obj/randart-vectors.fixtures.ts +61 -0
- package/src/obj/randart-vectors.json +836 -0
- package/src/obj/randart-vectors.ts +369 -0
- package/src/obj/randart.ts +722 -552
- package/src/obj/rune-registry.ts +270 -0
- package/src/obj/rune-vectors.fixtures.ts +164 -0
- package/src/obj/rune-vectors.json +121 -0
- package/src/obj/rune-vectors.ts +229 -0
- package/src/obj/tval-kind-vectors.json +391 -0
- package/src/obj/tval-registry.ts +243 -0
- package/src/obj/tval-vectors.fixtures.ts +50 -0
- package/src/obj/tval-vectors.json +38 -0
- package/src/obj/tval-vectors.ts +126 -0
- package/src/obj/types.ts +18 -7
- package/src/obj/value.ts +26 -20
- package/src/parser.ts +214 -0
- package/src/player/bind.ts +5 -2
- package/src/player/birth.ts +2 -1
- package/src/player/calcs.ts +123 -42
- package/src/player/death.ts +78 -0
- package/src/player/options-file.ts +387 -0
- package/src/player/options.ts +2 -1
- package/src/player/player.ts +60 -4
- package/src/player/shape-lore.ts +33 -14
- package/src/player/timed.ts +14 -4
- package/src/player/types.ts +30 -4
- package/src/session/boot.ts +51 -1
- package/src/session/game.ts +720 -163
- package/src/session/save-migrate.ts +81 -1
- package/src/session/save.ts +264 -22
- package/src/store/bind.ts +4 -3
- package/src/store/mass-produce-vectors.fixtures.ts +64 -0
- package/src/store/mass-produce-vectors.json +1169 -0
- package/src/store/mass-produce-vectors.ts +67 -0
- package/src/store/store.ts +266 -63
- package/src/store/transact.ts +39 -16
- package/src/store/types.ts +3 -2
- package/src/version.ts +1 -1
- package/src/visuals/index.ts +1 -0
- package/src/visuals/map-text.ts +1 -1
- package/src/visuals/object-glyph.ts +76 -0
- package/src/visuals/prefs.ts +22 -32
- package/src/visuals/tile-prefs.ts +32 -0
- package/src/world/feature.ts +4 -1
- package/src/world/project.ts +19 -4
- package/src/world/projection.ts +79 -8
- package/src/world/trap.ts +25 -21
- package/src/world/view.ts +11 -1
package/dist/gen/room.js
CHANGED
|
@@ -25,15 +25,17 @@
|
|
|
25
25
|
import { FEAT, ORIGIN, SQUARE } from "../generated/index.js";
|
|
26
26
|
import { loc, DDGRID_DDD } from "../loc.js";
|
|
27
27
|
import { tvalFindIdx } from "../obj/bind.js";
|
|
28
|
+
import { GlyphRegistry } from "./glyph.js";
|
|
28
29
|
import { countNeighbors, drawRectangle, fillCircle, fillRectangle, generateHole, generateMark, generateOpen, generatePlus, generateRoom, generateStarburstRoom, locDiff, locSum, pickAndPlaceMonster, placeClosedDoor, placeNewMonster, placeObject, placeGold, placeRandomDoor, placeRandomStairs, placeSecretDoor, placeTrap, randDir, setBorderingWalls, setMarkedGranite, squareIsRoom, vaultMonsters, vaultObjects, vaultTraps, } from "./util.js";
|
|
29
30
|
import { getChamberMonsters, getVaultMonsters, monPitHook, setPitType } from "./gen-monster.js";
|
|
30
31
|
import { MON_GROUP } from "../mon/types.js";
|
|
32
|
+
import { attachExt } from "../mod/extension.js";
|
|
31
33
|
function hasFewEntrances(flags) {
|
|
32
34
|
return !!flags && flags.some((f) => f.split("|").some((n) => n.trim() === "FEW_ENTRANCES"));
|
|
33
35
|
}
|
|
34
36
|
/** Load room templates from parsed room_template.json records. */
|
|
35
37
|
export function loadRoomTemplates(records) {
|
|
36
|
-
return [...records].reverse().map((r) => ({
|
|
38
|
+
return [...records].reverse().map((r) => attachExt("room_template", r, {
|
|
37
39
|
name: r.name,
|
|
38
40
|
typ: r.type,
|
|
39
41
|
rat: r.rating,
|
|
@@ -58,7 +60,7 @@ export function loadRoomTemplates(records) {
|
|
|
58
60
|
* (128 of 161) from the dungeon.
|
|
59
61
|
*/
|
|
60
62
|
export function loadVaults(records, maxDepth) {
|
|
61
|
-
return [...records].reverse().map((r) => ({
|
|
63
|
+
return [...records].reverse().map((r) => attachExt("vault", r, {
|
|
62
64
|
name: r.name,
|
|
63
65
|
typ: r.type,
|
|
64
66
|
rat: r.rating,
|
|
@@ -260,6 +262,21 @@ function appendEntrance(g, grid) {
|
|
|
260
262
|
/* ------------------------------------------------------------------ *
|
|
261
263
|
* build_room_template / build_vault.
|
|
262
264
|
* ------------------------------------------------------------------ */
|
|
265
|
+
/**
|
|
266
|
+
* The glyph table a build uses: the level's own (so a mod's glyphs are in
|
|
267
|
+
* scope), or core's shared one for a bare Gen built by a unit test.
|
|
268
|
+
*
|
|
269
|
+
* Lazy and module-level rather than a default on `Gen`, because `Gen` lives in
|
|
270
|
+
* util.ts and seeding the table needs every placement helper in this file -
|
|
271
|
+
* a default there would be an import cycle.
|
|
272
|
+
*/
|
|
273
|
+
let CORE_GLYPHS = null;
|
|
274
|
+
function glyphsFor(g) {
|
|
275
|
+
if (g.glyphs)
|
|
276
|
+
return g.glyphs;
|
|
277
|
+
CORE_GLYPHS ??= createGlyphRegistry();
|
|
278
|
+
return CORE_GLYPHS;
|
|
279
|
+
}
|
|
263
280
|
export function buildRoomTemplate(g, centreIn, ymax, xmax, doors, rows, tval, fewEntrances) {
|
|
264
281
|
const c = g.c;
|
|
265
282
|
const light = c.depth <= g.rng.randint1(25);
|
|
@@ -289,6 +306,16 @@ export function buildRoomTemplate(g, centreIn, ymax, xmax, doors, rows, tval, fe
|
|
|
289
306
|
txmax = s.twidth;
|
|
290
307
|
}
|
|
291
308
|
centre = loc(centre.x - Math.trunc(txmax / 2), centre.y - Math.trunc(tymax / 2));
|
|
309
|
+
const glyphs = glyphsFor(g);
|
|
310
|
+
const ctxFor = (grid, glyph) => ({
|
|
311
|
+
g,
|
|
312
|
+
grid,
|
|
313
|
+
glyph,
|
|
314
|
+
fewEntrances,
|
|
315
|
+
rndDoors: rnddoors,
|
|
316
|
+
rndWalls: rndwalls,
|
|
317
|
+
tval,
|
|
318
|
+
});
|
|
292
319
|
/* First pass: features. */
|
|
293
320
|
for (let dy = 0; dy < ymax; dy++) {
|
|
294
321
|
for (let dx = 0; dx < xmax; dx++) {
|
|
@@ -297,65 +324,7 @@ export function buildRoomTemplate(g, centreIn, ymax, xmax, doors, rows, tval, fe
|
|
|
297
324
|
if (t === " ")
|
|
298
325
|
continue;
|
|
299
326
|
c.setFeat(grid, FEAT.FLOOR);
|
|
300
|
-
|
|
301
|
-
case "%":
|
|
302
|
-
setMarkedGranite(c, grid, SQUARE.WALL_OUTER);
|
|
303
|
-
if (fewEntrances)
|
|
304
|
-
appendEntrance(g, grid);
|
|
305
|
-
break;
|
|
306
|
-
case "#":
|
|
307
|
-
setMarkedGranite(c, grid, SQUARE.WALL_SOLID);
|
|
308
|
-
break;
|
|
309
|
-
case "+":
|
|
310
|
-
placeClosedDoor(g, grid);
|
|
311
|
-
break;
|
|
312
|
-
case "^":
|
|
313
|
-
if (g.rng.oneIn(4))
|
|
314
|
-
placeTrap(g, grid);
|
|
315
|
-
break;
|
|
316
|
-
case "x":
|
|
317
|
-
if (rndwalls)
|
|
318
|
-
setMarkedGranite(c, grid, SQUARE.WALL_SOLID);
|
|
319
|
-
break;
|
|
320
|
-
case "(":
|
|
321
|
-
if (rndwalls)
|
|
322
|
-
placeSecretDoor(c, grid);
|
|
323
|
-
break;
|
|
324
|
-
case ")":
|
|
325
|
-
if (!rndwalls)
|
|
326
|
-
placeSecretDoor(c, grid);
|
|
327
|
-
else
|
|
328
|
-
setMarkedGranite(c, grid, SQUARE.WALL_SOLID);
|
|
329
|
-
break;
|
|
330
|
-
case "8":
|
|
331
|
-
if (g.rng.randint0(100) < 80 || g.dun.persist) {
|
|
332
|
-
/* build_room_template '8' (gen-room.c L1211): ORIGIN_SPECIAL. */
|
|
333
|
-
placeObject(g, grid, c.depth, false, false, 0, ORIGIN.SPECIAL);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
placeRandomStairs(g, grid, g.dun.quest);
|
|
337
|
-
}
|
|
338
|
-
break;
|
|
339
|
-
case "9":
|
|
340
|
-
break;
|
|
341
|
-
case "[":
|
|
342
|
-
/* build_room_template '[' (gen-room.c L1226): ORIGIN_SPECIAL. */
|
|
343
|
-
placeObject(g, grid, c.depth, false, false, tval, ORIGIN.SPECIAL);
|
|
344
|
-
break;
|
|
345
|
-
case "1":
|
|
346
|
-
case "2":
|
|
347
|
-
case "3":
|
|
348
|
-
case "4":
|
|
349
|
-
case "5":
|
|
350
|
-
case "6": {
|
|
351
|
-
const doorpos = t.charCodeAt(0) - "0".charCodeAt(0);
|
|
352
|
-
if (doorpos === rnddoors)
|
|
353
|
-
placeSecretDoor(c, grid);
|
|
354
|
-
else
|
|
355
|
-
setMarkedGranite(c, grid, SQUARE.WALL_SOLID);
|
|
356
|
-
break;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
327
|
+
glyphs.handlerFor("template", t)?.terrain?.(ctxFor(grid, t));
|
|
359
328
|
c.sqinfoOn(grid, SQUARE.ROOM);
|
|
360
329
|
if (light)
|
|
361
330
|
c.sqinfoOn(grid, SQUARE.GLOW);
|
|
@@ -366,30 +335,7 @@ export function buildRoomTemplate(g, centreIn, ymax, xmax, doors, rows, tval, fe
|
|
|
366
335
|
for (let dx = 0; dx < xmax; dx++) {
|
|
367
336
|
const t = glyphAt(rows, dy, dx);
|
|
368
337
|
const grid = symmetryTransform(loc(dx, dy), centre.y, centre.x, ymax, xmax, rotate, reflect);
|
|
369
|
-
|
|
370
|
-
case "#":
|
|
371
|
-
if (countNeighbors(c, grid, squareIsRoom, false) === 8) {
|
|
372
|
-
c.sqinfoOff(grid, SQUARE.WALL_SOLID);
|
|
373
|
-
c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
374
|
-
}
|
|
375
|
-
break;
|
|
376
|
-
case "8":
|
|
377
|
-
vaultMonsters(g, grid, c.depth + 2, g.rng.randint0(2) + 3);
|
|
378
|
-
break;
|
|
379
|
-
case "9": {
|
|
380
|
-
const off2 = loc(2, -2);
|
|
381
|
-
const off3 = loc(3, 3);
|
|
382
|
-
vaultMonsters(g, locDiff(grid, off3), c.depth + g.rng.randint0(2), g.rng.randint1(2));
|
|
383
|
-
vaultMonsters(g, locSum(grid, off3), c.depth + g.rng.randint0(2), g.rng.randint1(2));
|
|
384
|
-
if (g.rng.oneIn(2))
|
|
385
|
-
vaultObjects(g, locSum(grid, off2), c.depth, 1 + g.rng.randint0(2));
|
|
386
|
-
if (g.rng.oneIn(2))
|
|
387
|
-
vaultObjects(g, locDiff(grid, off2), c.depth, 1 + g.rng.randint0(2));
|
|
388
|
-
break;
|
|
389
|
-
}
|
|
390
|
-
default:
|
|
391
|
-
break;
|
|
392
|
-
}
|
|
338
|
+
glyphs.handlerFor("template", t)?.populate?.(ctxFor(grid, t));
|
|
393
339
|
}
|
|
394
340
|
}
|
|
395
341
|
return true;
|
|
@@ -460,6 +406,18 @@ export function buildVault(g, centreIn, v) {
|
|
|
460
406
|
generateMark(c, y1, x1, y2, x2, SQUARE.MON_RESTRICT);
|
|
461
407
|
/* Racial monster symbols, collected in first-appearance order (max 30). */
|
|
462
408
|
const racialSymbol = [];
|
|
409
|
+
const glyphs = glyphsFor(g);
|
|
410
|
+
const ctxFor = (grid, glyph) => ({
|
|
411
|
+
g,
|
|
412
|
+
grid,
|
|
413
|
+
glyph,
|
|
414
|
+
fewEntrances: v.fewEntrances,
|
|
415
|
+
/* A vault has no door-position roll and no optional walls, and its objects
|
|
416
|
+
* are placed by glyph rather than from a template tval. */
|
|
417
|
+
rndDoors: 0,
|
|
418
|
+
rndWalls: false,
|
|
419
|
+
tval: 0,
|
|
420
|
+
});
|
|
463
421
|
/* First pass: features. */
|
|
464
422
|
for (let y = 0; y < v.hgt; y++) {
|
|
465
423
|
for (let x = 0; x < v.wid; x++) {
|
|
@@ -468,59 +426,8 @@ export function buildVault(g, centreIn, v) {
|
|
|
468
426
|
if (t === " ")
|
|
469
427
|
continue;
|
|
470
428
|
c.setFeat(grid, FEAT.FLOOR);
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
case "%":
|
|
474
|
-
setMarkedGranite(c, grid, SQUARE.WALL_OUTER);
|
|
475
|
-
if (v.fewEntrances)
|
|
476
|
-
appendEntrance(g, grid);
|
|
477
|
-
icky = false;
|
|
478
|
-
break;
|
|
479
|
-
case "#":
|
|
480
|
-
setMarkedGranite(c, grid, SQUARE.WALL_SOLID);
|
|
481
|
-
break;
|
|
482
|
-
case "@":
|
|
483
|
-
c.setFeat(grid, FEAT.PERM);
|
|
484
|
-
break;
|
|
485
|
-
case "*":
|
|
486
|
-
c.setFeat(grid, g.rng.oneIn(2) ? FEAT.MAGMA_K : FEAT.QUARTZ_K);
|
|
487
|
-
break;
|
|
488
|
-
case ":":
|
|
489
|
-
c.setFeat(grid, g.rng.oneIn(2) ? FEAT.PASS_RUBBLE : FEAT.RUBBLE);
|
|
490
|
-
break;
|
|
491
|
-
case "+":
|
|
492
|
-
placeSecretDoor(c, grid);
|
|
493
|
-
break;
|
|
494
|
-
case "^":
|
|
495
|
-
if (g.rng.oneIn(4))
|
|
496
|
-
placeTrap(g, grid);
|
|
497
|
-
break;
|
|
498
|
-
case "&":
|
|
499
|
-
/* build_vault '&' (gen-room.c L1474): ORIGIN_VAULT. */
|
|
500
|
-
if (g.rng.randint0(100) < 75)
|
|
501
|
-
placeObject(g, grid, c.depth, false, false, 0, ORIGIN.VAULT);
|
|
502
|
-
else if (g.rng.oneIn(4))
|
|
503
|
-
placeTrap(g, grid);
|
|
504
|
-
break;
|
|
505
|
-
case "<":
|
|
506
|
-
if (!g.dun.persist)
|
|
507
|
-
c.setFeat(grid, FEAT.LESS);
|
|
508
|
-
break;
|
|
509
|
-
case ">":
|
|
510
|
-
if (!g.dun.persist) {
|
|
511
|
-
if (g.dun.quest || c.depth >= g.constants.maxDepth - 1)
|
|
512
|
-
c.setFeat(grid, FEAT.LESS);
|
|
513
|
-
else
|
|
514
|
-
c.setFeat(grid, FEAT.MORE);
|
|
515
|
-
}
|
|
516
|
-
break;
|
|
517
|
-
case "`":
|
|
518
|
-
c.setFeat(grid, FEAT.LAVA);
|
|
519
|
-
break;
|
|
520
|
-
case "/":
|
|
521
|
-
case ";":
|
|
522
|
-
break;
|
|
523
|
-
}
|
|
429
|
+
/* Upstream's `icky`: every glyph but the outer wall stays in the vault. */
|
|
430
|
+
const icky = glyphs.handlerFor("vault", t)?.terrain?.(ctxFor(grid, t)) !== false;
|
|
524
431
|
c.sqinfoOn(grid, SQUARE.ROOM);
|
|
525
432
|
if (icky)
|
|
526
433
|
c.sqinfoOn(grid, SQUARE.VAULT);
|
|
@@ -541,132 +448,7 @@ export function buildVault(g, centreIn, v) {
|
|
|
541
448
|
}
|
|
542
449
|
continue;
|
|
543
450
|
}
|
|
544
|
-
|
|
545
|
-
case "1":
|
|
546
|
-
if (g.rng.oneIn(2)) {
|
|
547
|
-
/* build_vault '1' (gen-room.c L1540-1541): ORIGIN_DROP_VAULT. */
|
|
548
|
-
pickAndPlaceMonster(g, grid, c.depth, true, true, ORIGIN.DROP_VAULT);
|
|
549
|
-
}
|
|
550
|
-
else if (g.rng.oneIn(2)) {
|
|
551
|
-
/* build_vault '1' (gen-room.c L1543): ORIGIN_VAULT. */
|
|
552
|
-
placeObject(g, grid, c.depth, g.rng.oneIn(8), false, 0, ORIGIN.VAULT);
|
|
553
|
-
}
|
|
554
|
-
else if (g.rng.oneIn(4)) {
|
|
555
|
-
placeTrap(g, grid);
|
|
556
|
-
}
|
|
557
|
-
break;
|
|
558
|
-
case "2":
|
|
559
|
-
pickAndPlaceMonster(g, grid, c.depth + 5, true, true, ORIGIN.DROP_VAULT);
|
|
560
|
-
break;
|
|
561
|
-
case "3":
|
|
562
|
-
/* build_vault '3' (gen-room.c L1556): ORIGIN_VAULT. */
|
|
563
|
-
placeObject(g, grid, c.depth + 3, false, false, 0, ORIGIN.VAULT);
|
|
564
|
-
break;
|
|
565
|
-
case "4":
|
|
566
|
-
if (g.rng.oneIn(2)) {
|
|
567
|
-
pickAndPlaceMonster(g, grid, c.depth + 3, true, true, ORIGIN.DROP_VAULT);
|
|
568
|
-
}
|
|
569
|
-
/* build_vault '4' (gen-room.c L1564): ORIGIN_VAULT. */
|
|
570
|
-
if (g.rng.oneIn(2))
|
|
571
|
-
placeObject(g, grid, c.depth + 7, false, false, 0, ORIGIN.VAULT);
|
|
572
|
-
break;
|
|
573
|
-
case "5":
|
|
574
|
-
/* build_vault '5' (gen-room.c L1569): ORIGIN_VAULT. */
|
|
575
|
-
placeObject(g, grid, c.depth + 7, false, false, 0, ORIGIN.VAULT);
|
|
576
|
-
break;
|
|
577
|
-
case "6":
|
|
578
|
-
pickAndPlaceMonster(g, grid, c.depth + 11, true, true, ORIGIN.DROP_VAULT);
|
|
579
|
-
break;
|
|
580
|
-
case "7":
|
|
581
|
-
/* build_vault '7' (gen-room.c L1576): ORIGIN_VAULT. */
|
|
582
|
-
placeObject(g, grid, c.depth + 15, false, false, 0, ORIGIN.VAULT);
|
|
583
|
-
break;
|
|
584
|
-
case "0":
|
|
585
|
-
pickAndPlaceMonster(g, grid, c.depth + 20, true, true, ORIGIN.DROP_VAULT);
|
|
586
|
-
break;
|
|
587
|
-
case "9":
|
|
588
|
-
pickAndPlaceMonster(g, grid, c.depth + 9, true, true, ORIGIN.DROP_VAULT);
|
|
589
|
-
/* build_vault '9' (gen-room.c L1586): ORIGIN_VAULT. */
|
|
590
|
-
placeObject(g, grid, c.depth + 7, true, false, 0, ORIGIN.VAULT);
|
|
591
|
-
break;
|
|
592
|
-
case "8":
|
|
593
|
-
pickAndPlaceMonster(g, grid, c.depth + 40, true, true, ORIGIN.DROP_VAULT);
|
|
594
|
-
/* build_vault '8' (gen-room.c L1594): ORIGIN_VAULT. */
|
|
595
|
-
placeObject(g, grid, c.depth + 20, true, true, 0, ORIGIN.VAULT);
|
|
596
|
-
break;
|
|
597
|
-
case "~":
|
|
598
|
-
/* build_vault '~' (gen-room.c L1599): ORIGIN_VAULT. */
|
|
599
|
-
placeObject(g, grid, c.depth + 5, false, false, TV_CHEST, ORIGIN.VAULT);
|
|
600
|
-
break;
|
|
601
|
-
case "$":
|
|
602
|
-
/* build_vault '$' (gen-room.c L1602): ORIGIN_VAULT. */
|
|
603
|
-
placeGold(g, grid, c.depth, ORIGIN.VAULT);
|
|
604
|
-
break;
|
|
605
|
-
case "]": {
|
|
606
|
-
const temp = g.rng.oneIn(3) ? g.rng.randint1(9) : g.rng.randint1(8);
|
|
607
|
-
const tval = [
|
|
608
|
-
0,
|
|
609
|
-
TV_BOOTS,
|
|
610
|
-
TV_GLOVES,
|
|
611
|
-
TV_HELM,
|
|
612
|
-
TV_CROWN,
|
|
613
|
-
TV_SHIELD,
|
|
614
|
-
TV_CLOAK,
|
|
615
|
-
TV_SOFT_ARMOR,
|
|
616
|
-
TV_HARD_ARMOR,
|
|
617
|
-
TV_DRAG_ARMOR,
|
|
618
|
-
][temp];
|
|
619
|
-
/* build_vault ']' (gen-room.c L1617): ORIGIN_VAULT. */
|
|
620
|
-
placeObject(g, grid, c.depth + 3, true, false, tval, ORIGIN.VAULT);
|
|
621
|
-
break;
|
|
622
|
-
}
|
|
623
|
-
case "|": {
|
|
624
|
-
const temp = g.rng.randint1(4);
|
|
625
|
-
const tval = [0, TV_SWORD, TV_POLEARM, TV_HAFTED, TV_BOW][temp];
|
|
626
|
-
/* build_vault '|' (gen-room.c L1630): ORIGIN_VAULT. */
|
|
627
|
-
placeObject(g, grid, c.depth + 3, true, false, tval, ORIGIN.VAULT);
|
|
628
|
-
break;
|
|
629
|
-
}
|
|
630
|
-
case "=":
|
|
631
|
-
/* build_vault '=' (gen-room.c L1635): ORIGIN_VAULT. */
|
|
632
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_RING, ORIGIN.VAULT);
|
|
633
|
-
break;
|
|
634
|
-
case '"':
|
|
635
|
-
/* build_vault '"' (gen-room.c L1638): ORIGIN_VAULT. */
|
|
636
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_AMULET, ORIGIN.VAULT);
|
|
637
|
-
break;
|
|
638
|
-
case "!":
|
|
639
|
-
/* build_vault '!' (gen-room.c L1641): ORIGIN_VAULT. */
|
|
640
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_POTION, ORIGIN.VAULT);
|
|
641
|
-
break;
|
|
642
|
-
case "?":
|
|
643
|
-
/* build_vault '?' (gen-room.c L1644): ORIGIN_VAULT. */
|
|
644
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_SCROLL, ORIGIN.VAULT);
|
|
645
|
-
break;
|
|
646
|
-
case "_":
|
|
647
|
-
/* build_vault '_' (gen-room.c L1647): ORIGIN_VAULT. */
|
|
648
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_STAFF, ORIGIN.VAULT);
|
|
649
|
-
break;
|
|
650
|
-
case "-":
|
|
651
|
-
/* build_vault '-' (gen-room.c L1650): ORIGIN_VAULT. */
|
|
652
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, g.rng.oneIn(2) ? TV_WAND : TV_ROD, ORIGIN.VAULT);
|
|
653
|
-
break;
|
|
654
|
-
case ",":
|
|
655
|
-
/* build_vault ',' (gen-room.c L1655): ORIGIN_VAULT. */
|
|
656
|
-
placeObject(g, grid, c.depth + 3, g.rng.oneIn(4), false, TV_FOOD, ORIGIN.VAULT);
|
|
657
|
-
break;
|
|
658
|
-
case "#":
|
|
659
|
-
if (countNeighbors(c, grid, squareIsRoom, false) === 8) {
|
|
660
|
-
c.sqinfoOff(grid, SQUARE.WALL_SOLID);
|
|
661
|
-
c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
662
|
-
}
|
|
663
|
-
break;
|
|
664
|
-
case "@":
|
|
665
|
-
if (countNeighbors(c, grid, squareIsRoom, false) === 8) {
|
|
666
|
-
c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
667
|
-
}
|
|
668
|
-
break;
|
|
669
|
-
}
|
|
451
|
+
glyphs.handlerFor("vault", t)?.populate?.(ctxFor(grid, t));
|
|
670
452
|
}
|
|
671
453
|
}
|
|
672
454
|
/* Place specified monsters (get_vault_monsters). The upstream loop reads
|
|
@@ -675,6 +457,367 @@ export function buildVault(g, centreIn, v) {
|
|
|
675
457
|
getVaultMonsters(g, racialSymbol, v.typ, (i) => glyphAt(v.rows, Math.trunc(i / v.wid), i % v.wid), y1, y2, x1, x2);
|
|
676
458
|
return true;
|
|
677
459
|
}
|
|
460
|
+
/* ------------------------------------------------------------------ *
|
|
461
|
+
* Core's glyph table.
|
|
462
|
+
* ------------------------------------------------------------------ */
|
|
463
|
+
/**
|
|
464
|
+
* Every glyph `build_room_template` and `build_vault` decode upstream, as
|
|
465
|
+
* handlers. These are the case bodies of the three switches this file used to
|
|
466
|
+
* carry, lifted one at a time with nothing rewritten - including the places
|
|
467
|
+
* where the two decoders disagree (`+` is a closed door in a template and a
|
|
468
|
+
* SECRET door in a vault) and the places where upstream accepts a glyph and
|
|
469
|
+
* does nothing with it (`9` in a template's first pass; `/` and `;` in a
|
|
470
|
+
* vault). Those no-ops are registered explicitly rather than left to fall
|
|
471
|
+
* through, so `glyphs(kind)` reports the true upstream alphabet - an authoring
|
|
472
|
+
* tool that lists what a vault may contain would otherwise be missing them.
|
|
473
|
+
*
|
|
474
|
+
* A fresh registry per call: `RoomRegistry` owns one so a mod's registrations
|
|
475
|
+
* belong to the level's own table, not to a process-wide singleton.
|
|
476
|
+
*/
|
|
477
|
+
export function createGlyphRegistry() {
|
|
478
|
+
const r = new GlyphRegistry();
|
|
479
|
+
/* ---- Room templates: first pass (build_room_template, gen-room.c L1195). */
|
|
480
|
+
r.set("template", "%", {
|
|
481
|
+
terrain({ g, grid, fewEntrances }) {
|
|
482
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_OUTER);
|
|
483
|
+
if (fewEntrances)
|
|
484
|
+
appendEntrance(g, grid);
|
|
485
|
+
},
|
|
486
|
+
});
|
|
487
|
+
r.set("template", "+", {
|
|
488
|
+
terrain({ g, grid }) {
|
|
489
|
+
placeClosedDoor(g, grid);
|
|
490
|
+
},
|
|
491
|
+
});
|
|
492
|
+
r.set("template", "^", {
|
|
493
|
+
terrain({ g, grid }) {
|
|
494
|
+
if (g.rng.oneIn(4))
|
|
495
|
+
placeTrap(g, grid);
|
|
496
|
+
},
|
|
497
|
+
});
|
|
498
|
+
r.set("template", "x", {
|
|
499
|
+
terrain({ g, grid, rndWalls }) {
|
|
500
|
+
if (rndWalls)
|
|
501
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_SOLID);
|
|
502
|
+
},
|
|
503
|
+
});
|
|
504
|
+
r.set("template", "(", {
|
|
505
|
+
terrain({ g, grid, rndWalls }) {
|
|
506
|
+
if (rndWalls)
|
|
507
|
+
placeSecretDoor(g.c, grid);
|
|
508
|
+
},
|
|
509
|
+
});
|
|
510
|
+
r.set("template", ")", {
|
|
511
|
+
terrain({ g, grid, rndWalls }) {
|
|
512
|
+
if (!rndWalls)
|
|
513
|
+
placeSecretDoor(g.c, grid);
|
|
514
|
+
else
|
|
515
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_SOLID);
|
|
516
|
+
},
|
|
517
|
+
});
|
|
518
|
+
r.set("template", "[", {
|
|
519
|
+
terrain({ g, grid, tval }) {
|
|
520
|
+
/* build_room_template '[' (gen-room.c L1226): ORIGIN_SPECIAL. */
|
|
521
|
+
placeObject(g, grid, g.c.depth, false, false, tval, ORIGIN.SPECIAL);
|
|
522
|
+
},
|
|
523
|
+
});
|
|
524
|
+
/* '1'-'6': the door positions, one of which was rolled for this build. */
|
|
525
|
+
for (const digit of ["1", "2", "3", "4", "5", "6"]) {
|
|
526
|
+
r.set("template", digit, {
|
|
527
|
+
terrain({ g, grid, glyph, rndDoors }) {
|
|
528
|
+
const doorpos = glyph.charCodeAt(0) - "0".charCodeAt(0);
|
|
529
|
+
if (doorpos === rndDoors)
|
|
530
|
+
placeSecretDoor(g.c, grid);
|
|
531
|
+
else
|
|
532
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_SOLID);
|
|
533
|
+
},
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
/* ---- Room templates: both passes. */
|
|
537
|
+
r.set("template", "#", {
|
|
538
|
+
terrain({ g, grid }) {
|
|
539
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_SOLID);
|
|
540
|
+
},
|
|
541
|
+
populate({ g, grid }) {
|
|
542
|
+
if (countNeighbors(g.c, grid, squareIsRoom, false) === 8) {
|
|
543
|
+
g.c.sqinfoOff(grid, SQUARE.WALL_SOLID);
|
|
544
|
+
g.c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
});
|
|
548
|
+
r.set("template", "8", {
|
|
549
|
+
terrain({ g, grid }) {
|
|
550
|
+
if (g.rng.randint0(100) < 80 || g.dun.persist) {
|
|
551
|
+
/* build_room_template '8' (gen-room.c L1211): ORIGIN_SPECIAL. */
|
|
552
|
+
placeObject(g, grid, g.c.depth, false, false, 0, ORIGIN.SPECIAL);
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
placeRandomStairs(g, grid, g.dun.quest);
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
populate({ g, grid }) {
|
|
559
|
+
vaultMonsters(g, grid, g.c.depth + 2, g.rng.randint0(2) + 3);
|
|
560
|
+
},
|
|
561
|
+
});
|
|
562
|
+
r.set("template", "9", {
|
|
563
|
+
/* Upstream's first pass names '9' and does nothing: the grid is floor, and
|
|
564
|
+
* the monsters and objects arrive in the second pass. */
|
|
565
|
+
terrain() { },
|
|
566
|
+
populate({ g, grid }) {
|
|
567
|
+
const off2 = loc(2, -2);
|
|
568
|
+
const off3 = loc(3, 3);
|
|
569
|
+
vaultMonsters(g, locDiff(grid, off3), g.c.depth + g.rng.randint0(2), g.rng.randint1(2));
|
|
570
|
+
vaultMonsters(g, locSum(grid, off3), g.c.depth + g.rng.randint0(2), g.rng.randint1(2));
|
|
571
|
+
if (g.rng.oneIn(2))
|
|
572
|
+
vaultObjects(g, locSum(grid, off2), g.c.depth, 1 + g.rng.randint0(2));
|
|
573
|
+
if (g.rng.oneIn(2))
|
|
574
|
+
vaultObjects(g, locDiff(grid, off2), g.c.depth, 1 + g.rng.randint0(2));
|
|
575
|
+
},
|
|
576
|
+
});
|
|
577
|
+
/* ---- Vaults: first pass (build_vault, gen-room.c L1445). */
|
|
578
|
+
r.set("vault", "%", {
|
|
579
|
+
terrain({ g, grid, fewEntrances }) {
|
|
580
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_OUTER);
|
|
581
|
+
if (fewEntrances)
|
|
582
|
+
appendEntrance(g, grid);
|
|
583
|
+
/* The one glyph outside the vault proper: no SQUARE_VAULT. */
|
|
584
|
+
return false;
|
|
585
|
+
},
|
|
586
|
+
});
|
|
587
|
+
r.set("vault", "*", {
|
|
588
|
+
terrain({ g, grid }) {
|
|
589
|
+
g.c.setFeat(grid, g.rng.oneIn(2) ? FEAT.MAGMA_K : FEAT.QUARTZ_K);
|
|
590
|
+
},
|
|
591
|
+
});
|
|
592
|
+
r.set("vault", ":", {
|
|
593
|
+
terrain({ g, grid }) {
|
|
594
|
+
g.c.setFeat(grid, g.rng.oneIn(2) ? FEAT.PASS_RUBBLE : FEAT.RUBBLE);
|
|
595
|
+
},
|
|
596
|
+
});
|
|
597
|
+
r.set("vault", "+", {
|
|
598
|
+
terrain({ g, grid }) {
|
|
599
|
+
placeSecretDoor(g.c, grid);
|
|
600
|
+
},
|
|
601
|
+
});
|
|
602
|
+
r.set("vault", "^", {
|
|
603
|
+
terrain({ g, grid }) {
|
|
604
|
+
if (g.rng.oneIn(4))
|
|
605
|
+
placeTrap(g, grid);
|
|
606
|
+
},
|
|
607
|
+
});
|
|
608
|
+
r.set("vault", "&", {
|
|
609
|
+
terrain({ g, grid }) {
|
|
610
|
+
/* build_vault '&' (gen-room.c L1474): ORIGIN_VAULT. */
|
|
611
|
+
if (g.rng.randint0(100) < 75) {
|
|
612
|
+
placeObject(g, grid, g.c.depth, false, false, 0, ORIGIN.VAULT);
|
|
613
|
+
}
|
|
614
|
+
else if (g.rng.oneIn(4)) {
|
|
615
|
+
placeTrap(g, grid);
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
});
|
|
619
|
+
r.set("vault", "<", {
|
|
620
|
+
terrain({ g, grid }) {
|
|
621
|
+
if (!g.dun.persist)
|
|
622
|
+
g.c.setFeat(grid, FEAT.LESS);
|
|
623
|
+
},
|
|
624
|
+
});
|
|
625
|
+
r.set("vault", ">", {
|
|
626
|
+
terrain({ g, grid }) {
|
|
627
|
+
if (g.dun.persist)
|
|
628
|
+
return;
|
|
629
|
+
if (g.dun.quest || g.c.depth >= g.constants.maxDepth - 1)
|
|
630
|
+
g.c.setFeat(grid, FEAT.LESS);
|
|
631
|
+
else
|
|
632
|
+
g.c.setFeat(grid, FEAT.MORE);
|
|
633
|
+
},
|
|
634
|
+
});
|
|
635
|
+
r.set("vault", "`", {
|
|
636
|
+
terrain({ g, grid }) {
|
|
637
|
+
g.c.setFeat(grid, FEAT.LAVA);
|
|
638
|
+
},
|
|
639
|
+
});
|
|
640
|
+
/* '/' and ';' are accepted and do nothing but floor + SQUARE_VAULT. */
|
|
641
|
+
r.set("vault", "/", { terrain() { } });
|
|
642
|
+
r.set("vault", ";", { terrain() { } });
|
|
643
|
+
/* ---- Vaults: both passes. */
|
|
644
|
+
r.set("vault", "#", {
|
|
645
|
+
terrain({ g, grid }) {
|
|
646
|
+
setMarkedGranite(g.c, grid, SQUARE.WALL_SOLID);
|
|
647
|
+
},
|
|
648
|
+
populate({ g, grid }) {
|
|
649
|
+
if (countNeighbors(g.c, grid, squareIsRoom, false) === 8) {
|
|
650
|
+
g.c.sqinfoOff(grid, SQUARE.WALL_SOLID);
|
|
651
|
+
g.c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
});
|
|
655
|
+
r.set("vault", "@", {
|
|
656
|
+
terrain({ g, grid }) {
|
|
657
|
+
g.c.setFeat(grid, FEAT.PERM);
|
|
658
|
+
},
|
|
659
|
+
populate({ g, grid }) {
|
|
660
|
+
if (countNeighbors(g.c, grid, squareIsRoom, false) === 8) {
|
|
661
|
+
g.c.sqinfoOn(grid, SQUARE.WALL_INNER);
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
});
|
|
665
|
+
/* ---- Vaults: second pass (build_vault, gen-room.c L1523). */
|
|
666
|
+
r.set("vault", "1", {
|
|
667
|
+
populate({ g, grid }) {
|
|
668
|
+
if (g.rng.oneIn(2)) {
|
|
669
|
+
/* build_vault '1' (gen-room.c L1540-1541): ORIGIN_DROP_VAULT. */
|
|
670
|
+
pickAndPlaceMonster(g, grid, g.c.depth, true, true, ORIGIN.DROP_VAULT);
|
|
671
|
+
}
|
|
672
|
+
else if (g.rng.oneIn(2)) {
|
|
673
|
+
/* build_vault '1' (gen-room.c L1543): ORIGIN_VAULT. */
|
|
674
|
+
placeObject(g, grid, g.c.depth, g.rng.oneIn(8), false, 0, ORIGIN.VAULT);
|
|
675
|
+
}
|
|
676
|
+
else if (g.rng.oneIn(4)) {
|
|
677
|
+
placeTrap(g, grid);
|
|
678
|
+
}
|
|
679
|
+
},
|
|
680
|
+
});
|
|
681
|
+
r.set("vault", "2", {
|
|
682
|
+
populate({ g, grid }) {
|
|
683
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 5, true, true, ORIGIN.DROP_VAULT);
|
|
684
|
+
},
|
|
685
|
+
});
|
|
686
|
+
r.set("vault", "3", {
|
|
687
|
+
populate({ g, grid }) {
|
|
688
|
+
/* build_vault '3' (gen-room.c L1556): ORIGIN_VAULT. */
|
|
689
|
+
placeObject(g, grid, g.c.depth + 3, false, false, 0, ORIGIN.VAULT);
|
|
690
|
+
},
|
|
691
|
+
});
|
|
692
|
+
r.set("vault", "4", {
|
|
693
|
+
populate({ g, grid }) {
|
|
694
|
+
if (g.rng.oneIn(2)) {
|
|
695
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 3, true, true, ORIGIN.DROP_VAULT);
|
|
696
|
+
}
|
|
697
|
+
/* build_vault '4' (gen-room.c L1564): ORIGIN_VAULT. */
|
|
698
|
+
if (g.rng.oneIn(2))
|
|
699
|
+
placeObject(g, grid, g.c.depth + 7, false, false, 0, ORIGIN.VAULT);
|
|
700
|
+
},
|
|
701
|
+
});
|
|
702
|
+
r.set("vault", "5", {
|
|
703
|
+
populate({ g, grid }) {
|
|
704
|
+
/* build_vault '5' (gen-room.c L1569): ORIGIN_VAULT. */
|
|
705
|
+
placeObject(g, grid, g.c.depth + 7, false, false, 0, ORIGIN.VAULT);
|
|
706
|
+
},
|
|
707
|
+
});
|
|
708
|
+
r.set("vault", "6", {
|
|
709
|
+
populate({ g, grid }) {
|
|
710
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 11, true, true, ORIGIN.DROP_VAULT);
|
|
711
|
+
},
|
|
712
|
+
});
|
|
713
|
+
r.set("vault", "7", {
|
|
714
|
+
populate({ g, grid }) {
|
|
715
|
+
/* build_vault '7' (gen-room.c L1576): ORIGIN_VAULT. */
|
|
716
|
+
placeObject(g, grid, g.c.depth + 15, false, false, 0, ORIGIN.VAULT);
|
|
717
|
+
},
|
|
718
|
+
});
|
|
719
|
+
r.set("vault", "8", {
|
|
720
|
+
populate({ g, grid }) {
|
|
721
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 40, true, true, ORIGIN.DROP_VAULT);
|
|
722
|
+
/* build_vault '8' (gen-room.c L1594): ORIGIN_VAULT. */
|
|
723
|
+
placeObject(g, grid, g.c.depth + 20, true, true, 0, ORIGIN.VAULT);
|
|
724
|
+
},
|
|
725
|
+
});
|
|
726
|
+
r.set("vault", "9", {
|
|
727
|
+
populate({ g, grid }) {
|
|
728
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 9, true, true, ORIGIN.DROP_VAULT);
|
|
729
|
+
/* build_vault '9' (gen-room.c L1586): ORIGIN_VAULT. */
|
|
730
|
+
placeObject(g, grid, g.c.depth + 7, true, false, 0, ORIGIN.VAULT);
|
|
731
|
+
},
|
|
732
|
+
});
|
|
733
|
+
r.set("vault", "0", {
|
|
734
|
+
populate({ g, grid }) {
|
|
735
|
+
pickAndPlaceMonster(g, grid, g.c.depth + 20, true, true, ORIGIN.DROP_VAULT);
|
|
736
|
+
},
|
|
737
|
+
});
|
|
738
|
+
r.set("vault", "~", {
|
|
739
|
+
populate({ g, grid }) {
|
|
740
|
+
/* build_vault '~' (gen-room.c L1599): ORIGIN_VAULT. */
|
|
741
|
+
placeObject(g, grid, g.c.depth + 5, false, false, TV_CHEST, ORIGIN.VAULT);
|
|
742
|
+
},
|
|
743
|
+
});
|
|
744
|
+
r.set("vault", "$", {
|
|
745
|
+
populate({ g, grid }) {
|
|
746
|
+
/* build_vault '$' (gen-room.c L1602): ORIGIN_VAULT. */
|
|
747
|
+
placeGold(g, grid, g.c.depth, ORIGIN.VAULT);
|
|
748
|
+
},
|
|
749
|
+
});
|
|
750
|
+
r.set("vault", "]", {
|
|
751
|
+
populate({ g, grid }) {
|
|
752
|
+
const temp = g.rng.oneIn(3) ? g.rng.randint1(9) : g.rng.randint1(8);
|
|
753
|
+
const tval = [
|
|
754
|
+
0,
|
|
755
|
+
TV_BOOTS,
|
|
756
|
+
TV_GLOVES,
|
|
757
|
+
TV_HELM,
|
|
758
|
+
TV_CROWN,
|
|
759
|
+
TV_SHIELD,
|
|
760
|
+
TV_CLOAK,
|
|
761
|
+
TV_SOFT_ARMOR,
|
|
762
|
+
TV_HARD_ARMOR,
|
|
763
|
+
TV_DRAG_ARMOR,
|
|
764
|
+
][temp];
|
|
765
|
+
/* build_vault ']' (gen-room.c L1617): ORIGIN_VAULT. */
|
|
766
|
+
placeObject(g, grid, g.c.depth + 3, true, false, tval, ORIGIN.VAULT);
|
|
767
|
+
},
|
|
768
|
+
});
|
|
769
|
+
r.set("vault", "|", {
|
|
770
|
+
populate({ g, grid }) {
|
|
771
|
+
const temp = g.rng.randint1(4);
|
|
772
|
+
const tval = [0, TV_SWORD, TV_POLEARM, TV_HAFTED, TV_BOW][temp];
|
|
773
|
+
/* build_vault '|' (gen-room.c L1630): ORIGIN_VAULT. */
|
|
774
|
+
placeObject(g, grid, g.c.depth + 3, true, false, tval, ORIGIN.VAULT);
|
|
775
|
+
},
|
|
776
|
+
});
|
|
777
|
+
r.set("vault", "=", {
|
|
778
|
+
populate({ g, grid }) {
|
|
779
|
+
/* build_vault '=' (gen-room.c L1635): ORIGIN_VAULT. */
|
|
780
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_RING, ORIGIN.VAULT);
|
|
781
|
+
},
|
|
782
|
+
});
|
|
783
|
+
r.set("vault", '"', {
|
|
784
|
+
populate({ g, grid }) {
|
|
785
|
+
/* build_vault '"' (gen-room.c L1638): ORIGIN_VAULT. */
|
|
786
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_AMULET, ORIGIN.VAULT);
|
|
787
|
+
},
|
|
788
|
+
});
|
|
789
|
+
r.set("vault", "!", {
|
|
790
|
+
populate({ g, grid }) {
|
|
791
|
+
/* build_vault '!' (gen-room.c L1641): ORIGIN_VAULT. */
|
|
792
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_POTION, ORIGIN.VAULT);
|
|
793
|
+
},
|
|
794
|
+
});
|
|
795
|
+
r.set("vault", "?", {
|
|
796
|
+
populate({ g, grid }) {
|
|
797
|
+
/* build_vault '?' (gen-room.c L1644): ORIGIN_VAULT. */
|
|
798
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_SCROLL, ORIGIN.VAULT);
|
|
799
|
+
},
|
|
800
|
+
});
|
|
801
|
+
r.set("vault", "_", {
|
|
802
|
+
populate({ g, grid }) {
|
|
803
|
+
/* build_vault '_' (gen-room.c L1647): ORIGIN_VAULT. */
|
|
804
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_STAFF, ORIGIN.VAULT);
|
|
805
|
+
},
|
|
806
|
+
});
|
|
807
|
+
r.set("vault", "-", {
|
|
808
|
+
populate({ g, grid }) {
|
|
809
|
+
/* build_vault '-' (gen-room.c L1650): ORIGIN_VAULT. */
|
|
810
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, g.rng.oneIn(2) ? TV_WAND : TV_ROD, ORIGIN.VAULT);
|
|
811
|
+
},
|
|
812
|
+
});
|
|
813
|
+
r.set("vault", ",", {
|
|
814
|
+
populate({ g, grid }) {
|
|
815
|
+
/* build_vault ',' (gen-room.c L1655): ORIGIN_VAULT. */
|
|
816
|
+
placeObject(g, grid, g.c.depth + 3, g.rng.oneIn(4), false, TV_FOOD, ORIGIN.VAULT);
|
|
817
|
+
},
|
|
818
|
+
});
|
|
819
|
+
return r;
|
|
820
|
+
}
|
|
678
821
|
/**
|
|
679
822
|
* build_vault_type (gen-room.c L1712): the shared body behind build_interesting
|
|
680
823
|
* (L2988), build_lesser_vault (L3001), build_lesser_new_vault (L3014),
|
|
@@ -1814,6 +1957,13 @@ function buildHuge(g, centreIn, _rating) {
|
|
|
1814
1957
|
export class RoomRegistry {
|
|
1815
1958
|
data;
|
|
1816
1959
|
map = new Map();
|
|
1960
|
+
/**
|
|
1961
|
+
* The glyph table every build on this level decodes against, seeded with
|
|
1962
|
+
* core's. It lives here rather than on `Gen` because a `Gen` is built per
|
|
1963
|
+
* level and a mod registers once at boot: the registry outlives the level,
|
|
1964
|
+
* and `makeGen` hands it down.
|
|
1965
|
+
*/
|
|
1966
|
+
glyphs = createGlyphRegistry();
|
|
1817
1967
|
constructor(data) {
|
|
1818
1968
|
this.data = data;
|
|
1819
1969
|
}
|