playlist-data-engine 1.1.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 +21 -0
- package/README.md +352 -0
- package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
- package/dist/constants/DefaultClasses.d.ts +46 -0
- package/dist/constants/DefaultClasses.d.ts.map +1 -0
- package/dist/constants/DefaultEnchantments.d.ts +337 -0
- package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
- package/dist/constants/DefaultEnemies.d.ts +83 -0
- package/dist/constants/DefaultEnemies.d.ts.map +1 -0
- package/dist/constants/DefaultEquipment.d.ts +23 -0
- package/dist/constants/DefaultEquipment.d.ts.map +1 -0
- package/dist/constants/DefaultFeatures.d.ts +22 -0
- package/dist/constants/DefaultFeatures.d.ts.map +1 -0
- package/dist/constants/DefaultRaces.d.ts +102 -0
- package/dist/constants/DefaultRaces.d.ts.map +1 -0
- package/dist/constants/DefaultSkills.d.ts +26 -0
- package/dist/constants/DefaultSkills.d.ts.map +1 -0
- package/dist/constants/DefaultSpells.d.ts +41 -0
- package/dist/constants/DefaultSpells.d.ts.map +1 -0
- package/dist/constants/EncounterBalance.d.ts +208 -0
- package/dist/constants/EncounterBalance.d.ts.map +1 -0
- package/dist/constants/EnemyEquipment.d.ts +71 -0
- package/dist/constants/EnemyEquipment.d.ts.map +1 -0
- package/dist/constants/EnemyRarity.d.ts +79 -0
- package/dist/constants/EnemyRarity.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
- package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
- package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
- package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
- package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
- package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
- package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
- package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
- package/dist/constants/ItemTemplates.d.ts +40 -0
- package/dist/constants/ItemTemplates.d.ts.map +1 -0
- package/dist/constants/MagicItems.d.ts +30 -0
- package/dist/constants/MagicItems.d.ts.map +1 -0
- package/dist/constants/SpellSlots.d.ts +30 -0
- package/dist/constants/SpellSlots.d.ts.map +1 -0
- package/dist/constants/StatScaling.d.ts +113 -0
- package/dist/constants/StatScaling.d.ts.map +1 -0
- package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
- package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/ColorExtractor.d.ts +64 -0
- package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
- package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
- package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
- package/dist/core/analysis/LevelSerializer.d.ts +265 -0
- package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
- package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
- package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
- package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/MusicClassifier.d.ts +524 -0
- package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
- package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
- package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/PitchDetector.d.ts +251 -0
- package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
- package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
- package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
- package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
- package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
- package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
- package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
- package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
- package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
- package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
- package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
- package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
- package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
- package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
- package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
- package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
- package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
- package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
- package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
- package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
- package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
- package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
- package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
- package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
- package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
- package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
- package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
- package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
- package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
- package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
- package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
- package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
- package/dist/core/analysis/beat/index.d.ts +41 -0
- package/dist/core/analysis/beat/index.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
- package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
- package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
- package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
- package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
- package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
- package/dist/core/analysis/index.d.ts +18 -0
- package/dist/core/analysis/index.d.ts.map +1 -0
- package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
- package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
- package/dist/core/combat/AI/CombatAI.d.ts +179 -0
- package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
- package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
- package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
- package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
- package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
- package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
- package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
- package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
- package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
- package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
- package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
- package/dist/core/combat/AttackResolver.d.ts +220 -0
- package/dist/core/combat/AttackResolver.d.ts.map +1 -0
- package/dist/core/combat/CombatEngine.d.ts +388 -0
- package/dist/core/combat/CombatEngine.d.ts.map +1 -0
- package/dist/core/combat/DiceRoller.d.ts +115 -0
- package/dist/core/combat/DiceRoller.d.ts.map +1 -0
- package/dist/core/combat/InitiativeRoller.d.ts +62 -0
- package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
- package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
- package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
- package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
- package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
- package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
- package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
- package/dist/core/combat/SpellCaster.d.ts +113 -0
- package/dist/core/combat/SpellCaster.d.ts.map +1 -0
- package/dist/core/config/index.d.ts +24 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/progressionConfig.d.ts +73 -0
- package/dist/core/config/progressionConfig.d.ts.map +1 -0
- package/dist/core/config/sensorConfig.d.ts +134 -0
- package/dist/core/config/sensorConfig.d.ts.map +1 -0
- package/dist/core/equipment/BoxOpener.d.ts +175 -0
- package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
- package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
- package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
- package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
- package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
- package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
- package/dist/core/extensions/ExtensionManager.d.ts +517 -0
- package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
- package/dist/core/extensions/WeightedSelector.d.ts +156 -0
- package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
- package/dist/core/extensions/index.d.ts +11 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/initializeDefaults.d.ts +170 -0
- package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
- package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
- package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
- package/dist/core/features/FeatureQuery.d.ts +368 -0
- package/dist/core/features/FeatureQuery.d.ts.map +1 -0
- package/dist/core/features/FeatureTypes.d.ts +199 -0
- package/dist/core/features/FeatureTypes.d.ts.map +1 -0
- package/dist/core/features/FeatureValidator.d.ts +149 -0
- package/dist/core/features/FeatureValidator.d.ts.map +1 -0
- package/dist/core/features/index.d.ts +12 -0
- package/dist/core/features/index.d.ts.map +1 -0
- package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
- package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
- package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
- package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
- package/dist/core/generation/BeatConverter.d.ts +127 -0
- package/dist/core/generation/BeatConverter.d.ts.map +1 -0
- package/dist/core/generation/ButtonMapper.d.ts +346 -0
- package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
- package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
- package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
- package/dist/core/generation/CRLevelConverter.d.ts +242 -0
- package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
- package/dist/core/generation/CharacterGenerator.d.ts +194 -0
- package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
- package/dist/core/generation/ClassSuggester.d.ts +184 -0
- package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
- package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
- package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
- package/dist/core/generation/EnemyGenerator.d.ts +595 -0
- package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
- package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
- package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
- package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
- package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
- package/dist/core/generation/LevelGenerator.d.ts +390 -0
- package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
- package/dist/core/generation/NamingEngine.d.ts +136 -0
- package/dist/core/generation/NamingEngine.d.ts.map +1 -0
- package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
- package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
- package/dist/core/generation/RaceSelector.d.ts +58 -0
- package/dist/core/generation/RaceSelector.d.ts.map +1 -0
- package/dist/core/generation/RhythmGenerator.d.ts +597 -0
- package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
- package/dist/core/generation/SkillAssigner.d.ts +78 -0
- package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
- package/dist/core/generation/SpellManager.d.ts +132 -0
- package/dist/core/generation/SpellManager.d.ts.map +1 -0
- package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
- package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
- package/dist/core/generation/index.d.ts +41 -0
- package/dist/core/generation/index.d.ts.map +1 -0
- package/dist/core/parser/MetadataExtractor.d.ts +66 -0
- package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
- package/dist/core/parser/PlaylistParser.d.ts +45 -0
- package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
- package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
- package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
- package/dist/core/playback/index.d.ts +5 -0
- package/dist/core/playback/index.d.ts.map +1 -0
- package/dist/core/progression/CharacterUpdater.d.ts +203 -0
- package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
- package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
- package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
- package/dist/core/progression/PrestigeSystem.d.ts +217 -0
- package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
- package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
- package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
- package/dist/core/progression/SessionTracker.d.ts +169 -0
- package/dist/core/progression/SessionTracker.d.ts.map +1 -0
- package/dist/core/progression/XPCalculator.d.ts +128 -0
- package/dist/core/progression/XPCalculator.d.ts.map +1 -0
- package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
- package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
- package/dist/core/progression/stat/StatManager.d.ts +179 -0
- package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
- package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
- package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
- package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
- package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
- package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
- package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
- package/dist/core/sensors/MotionDetector.d.ts +58 -0
- package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
- package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
- package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
- package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
- package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
- package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
- package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
- package/dist/core/skills/SkillQuery.d.ts +159 -0
- package/dist/core/skills/SkillQuery.d.ts.map +1 -0
- package/dist/core/skills/SkillTypes.d.ts +233 -0
- package/dist/core/skills/SkillTypes.d.ts.map +1 -0
- package/dist/core/skills/SkillValidator.d.ts +146 -0
- package/dist/core/skills/SkillValidator.d.ts.map +1 -0
- package/dist/core/skills/index.d.ts +11 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/spells/SpellQuery.d.ts +194 -0
- package/dist/core/spells/SpellQuery.d.ts.map +1 -0
- package/dist/core/spells/SpellTypes.d.ts +71 -0
- package/dist/core/spells/SpellTypes.d.ts.map +1 -0
- package/dist/core/spells/SpellValidator.d.ts +129 -0
- package/dist/core/spells/SpellValidator.d.ts.map +1 -0
- package/dist/core/spells/index.d.ts +11 -0
- package/dist/core/spells/index.d.ts.map +1 -0
- package/dist/core/types/AudioProfile.d.ts +143 -0
- package/dist/core/types/AudioProfile.d.ts.map +1 -0
- package/dist/core/types/BeatMap.d.ts +1825 -0
- package/dist/core/types/BeatMap.d.ts.map +1 -0
- package/dist/core/types/ButtonMapping.d.ts +345 -0
- package/dist/core/types/ButtonMapping.d.ts.map +1 -0
- package/dist/core/types/Character.d.ts +397 -0
- package/dist/core/types/Character.d.ts.map +1 -0
- package/dist/core/types/ChartedBeatMap.d.ts +169 -0
- package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
- package/dist/core/types/Combat.d.ts +268 -0
- package/dist/core/types/Combat.d.ts.map +1 -0
- package/dist/core/types/CombatAI.d.ts +143 -0
- package/dist/core/types/CombatAI.d.ts.map +1 -0
- package/dist/core/types/Enemy.d.ts +447 -0
- package/dist/core/types/Enemy.d.ts.map +1 -0
- package/dist/core/types/Environmental.d.ts +213 -0
- package/dist/core/types/Environmental.d.ts.map +1 -0
- package/dist/core/types/Equipment.d.ts +309 -0
- package/dist/core/types/Equipment.d.ts.map +1 -0
- package/dist/core/types/ISessionTracker.d.ts +48 -0
- package/dist/core/types/ISessionTracker.d.ts.map +1 -0
- package/dist/core/types/LevelExport.d.ts +366 -0
- package/dist/core/types/LevelExport.d.ts.map +1 -0
- package/dist/core/types/Playlist.d.ts +70 -0
- package/dist/core/types/Playlist.d.ts.map +1 -0
- package/dist/core/types/Prestige.d.ts +94 -0
- package/dist/core/types/Prestige.d.ts.map +1 -0
- package/dist/core/types/Progression.d.ts +214 -0
- package/dist/core/types/Progression.d.ts.map +1 -0
- package/dist/core/types/RhythmXP.d.ts +398 -0
- package/dist/core/types/RhythmXP.d.ts.map +1 -0
- package/dist/core/utils/AbilityConstants.d.ts +31 -0
- package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
- package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
- package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
- package/dist/core/utils/ImageValidator.d.ts +66 -0
- package/dist/core/utils/ImageValidator.d.ts.map +1 -0
- package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
- package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
- package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
- package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/playlist-data-engine.js +124 -0
- package/dist/playlist-data-engine.mjs +49251 -0
- package/dist/utils/EnchantmentLibrary.d.ts +378 -0
- package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
- package/dist/utils/arweaveGatewayManager.d.ts +485 -0
- package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
- package/dist/utils/arweaveUtils.d.ts +118 -0
- package/dist/utils/arweaveUtils.d.ts.map +1 -0
- package/dist/utils/constants.d.ts +439 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/equipmentConstants.d.ts +60 -0
- package/dist/utils/equipmentConstants.d.ts.map +1 -0
- package/dist/utils/hash.d.ts +33 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +192 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/magicItemExamples.d.ts +46 -0
- package/dist/utils/magicItemExamples.d.ts.map +1 -0
- package/dist/utils/playlistUtils.d.ts +149 -0
- package/dist/utils/playlistUtils.d.ts.map +1 -0
- package/dist/utils/random.d.ts +34 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/sensorDashboard.d.ts +60 -0
- package/dist/utils/sensorDashboard.d.ts.map +1 -0
- package/dist/utils/validators.d.ts +189 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encounter Balance Constants
|
|
3
|
+
*
|
|
4
|
+
* D&D 5e official encounter building tables for calculating balanced encounters.
|
|
5
|
+
* Based on Dungeon Master's Guide (2014) Chapter 13: Building Combat Encounters.
|
|
6
|
+
*
|
|
7
|
+
* These tables provide:
|
|
8
|
+
* - XP thresholds per character level for each difficulty (easy/medium/hard/deadly)
|
|
9
|
+
* - CR to XP conversion for calculating monster strength
|
|
10
|
+
* - Encounter multipliers for adjusting XP budgets based on number of enemies
|
|
11
|
+
* - Tuning factors for fine-tuning encounter difficulty
|
|
12
|
+
*/
|
|
13
|
+
import type { EncounterDifficulty } from '../core/types/Enemy.js';
|
|
14
|
+
/**
|
|
15
|
+
* XP Budget Per Character Level
|
|
16
|
+
*
|
|
17
|
+
* For each character level and difficulty, defines the XP budget for a SINGLE character.
|
|
18
|
+
* Multiply by party size to get the total encounter XP budget.
|
|
19
|
+
*
|
|
20
|
+
* From D&D 5e Dungeon Master's Guide, page 82, "XP Thresholds by Character Level"
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* - Calculate party's average level
|
|
24
|
+
* - Look up threshold per character for desired difficulty
|
|
25
|
+
* - Multiply by number of party members
|
|
26
|
+
* - Result is the total XP budget for the encounter
|
|
27
|
+
*/
|
|
28
|
+
export declare const XP_BUDGET_PER_LEVEL: Record<number, Record<EncounterDifficulty, number>>;
|
|
29
|
+
/**
|
|
30
|
+
* CR to XP Mapping
|
|
31
|
+
*
|
|
32
|
+
* Maps Challenge Rating (CR) to Experience Point (XP) values.
|
|
33
|
+
* Used to determine the strength of monsters and calculate encounter budgets.
|
|
34
|
+
*
|
|
35
|
+
* From D&D 5e Monster Manual, "Monsters by Challenge Rating"
|
|
36
|
+
*
|
|
37
|
+
* Fractional CRs are supported as decimal values.
|
|
38
|
+
* Note: CR 0 creatures (commoners) are worth 0 or 10 XP depending on context.
|
|
39
|
+
* CR 25 does not exist in standard 5e (jumps from 24 to 26).
|
|
40
|
+
*/
|
|
41
|
+
export declare const CR_TO_XP: Record<number, number>;
|
|
42
|
+
/**
|
|
43
|
+
* Enemy Count Multiplier (Encounter Multipliers)
|
|
44
|
+
*
|
|
45
|
+
* Adjusts XP budget for encounters with multiple enemies.
|
|
46
|
+
* Accounts for action economy advantage and tactical complexity.
|
|
47
|
+
*
|
|
48
|
+
* From D&D 5e Dungeon Master's Guide, page 82, "Encounter Multipliers"
|
|
49
|
+
*
|
|
50
|
+
* IMPORTANT: These multipliers are applied to the ADJUSTED XP total, not base XP.
|
|
51
|
+
* Formula: (sum of monster XP) × (encounter multiplier) = adjusted XP
|
|
52
|
+
*
|
|
53
|
+
* Special rule: If the party has 6+ members, use the next lowest multiplier.
|
|
54
|
+
*
|
|
55
|
+
* The multiplier curve reflects:
|
|
56
|
+
* - 1 enemy: Full XP worth (×1), but some sources suggest ×1.5 for solo monsters
|
|
57
|
+
* - 2 enemies: Significantly harder due to action economy (×2)
|
|
58
|
+
* - 3-6 enemies: Peak action economy advantage (×2.5)
|
|
59
|
+
* - 7-10 enemies: Diminishing returns due to crowd control (×2)
|
|
60
|
+
* - 11-14 enemies: More manageable due to AOE effectiveness (×1.5)
|
|
61
|
+
* - 15+ enemies: Easy to manage with AOE and crowd control (×1)
|
|
62
|
+
*/
|
|
63
|
+
export declare const ENEMY_COUNT_MULTIPLIER: Record<number, number>;
|
|
64
|
+
/**
|
|
65
|
+
* Tuning Factors for encounter difficulty adjustment
|
|
66
|
+
*
|
|
67
|
+
* Allows fine-tuning of encounter difficulty beyond the standard D&D 5e calculations.
|
|
68
|
+
* These can be adjusted based on party composition, desired pacing, or game balance needs.
|
|
69
|
+
*/
|
|
70
|
+
export declare const TUNING_FACTORS: {
|
|
71
|
+
/** Default tuning factor (no adjustment) */
|
|
72
|
+
readonly DEFAULT: 1;
|
|
73
|
+
/** 10% easier encounters */
|
|
74
|
+
readonly EASIER: 0.9;
|
|
75
|
+
/** 20% easier encounters */
|
|
76
|
+
readonly MUCH_EASIER: 0.8;
|
|
77
|
+
/** 10% harder encounters */
|
|
78
|
+
readonly HARDER: 1.1;
|
|
79
|
+
/** 20% harder encounters */
|
|
80
|
+
readonly MUCH_HARDER: 1.2;
|
|
81
|
+
/** 50% harder encounters (for veteran players) */
|
|
82
|
+
readonly BRUTAL: 1.5;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Get the XP budget for a single character at a given level and difficulty
|
|
86
|
+
*
|
|
87
|
+
* @param level - Character level (1-20)
|
|
88
|
+
* @param difficulty - Encounter difficulty (easy/medium/hard/deadly)
|
|
89
|
+
* @returns XP budget for a single character, or 0 if level out of range
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const level5Medium = getXPBudgetPerLevel(5, 'medium'); // 500
|
|
94
|
+
* const level10Hard = getXPBudgetPerLevel(10, 'hard'); // 1800
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function getXPBudgetPerLevel(level: number, difficulty: EncounterDifficulty): number;
|
|
98
|
+
/**
|
|
99
|
+
* Get the total XP budget for a party based on levels and difficulty
|
|
100
|
+
*
|
|
101
|
+
* @param levels - Array of character levels in the party
|
|
102
|
+
* @param difficulty - Encounter difficulty (easy/medium/hard/deadly)
|
|
103
|
+
* @returns Total XP budget for the entire party
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const party = [3, 3, 4, 5]; // Mixed levels
|
|
108
|
+
* const budget = getXPBudgetForParty(party, 'medium'); // Sum of individual budgets
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function getXPBudgetForParty(levels: number[], difficulty: EncounterDifficulty): number;
|
|
112
|
+
/**
|
|
113
|
+
* Get the XP value for a given Challenge Rating
|
|
114
|
+
*
|
|
115
|
+
* @param cr - Challenge Rating (supports decimals like 0.125, 0.25, 0.5)
|
|
116
|
+
* @returns XP value for that CR, or 0 if CR not found
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* getXPForCR(1); // 200
|
|
121
|
+
* getXPForCR(0.25); // 50
|
|
122
|
+
* getXPForCR(5); // 1800
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function getXPForCR(cr: number): number;
|
|
126
|
+
/**
|
|
127
|
+
* Get the approximate Challenge Rating from an XP value
|
|
128
|
+
*
|
|
129
|
+
* Uses binary search to find the CR with closest XP value without exceeding.
|
|
130
|
+
*
|
|
131
|
+
* @param xp - Experience point value
|
|
132
|
+
* @returns CR value, or 0 if no match found
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* getCRFromXP(200); // 1
|
|
137
|
+
* getCRFromXP(1800); // 5
|
|
138
|
+
* getCRFromXP(3500); // ~7 (returns closest CR without exceeding)
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare function getCRFromXP(xp: number): number;
|
|
142
|
+
/**
|
|
143
|
+
* Apply a tuning factor to an XP budget
|
|
144
|
+
*
|
|
145
|
+
* @param xpBudget - Base XP budget
|
|
146
|
+
* @param tuningFactor - Multiplier to apply (default: 1.0)
|
|
147
|
+
* @returns Adjusted XP budget
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* applyTuning(1000, 1.2); // 1200 (20% harder)
|
|
152
|
+
* applyTuning(1000, TUNING_FACTORS.EASIER); // 900
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function applyTuning(xpBudget: number, tuningFactor?: number): number;
|
|
156
|
+
/**
|
|
157
|
+
* Get the encounter multiplier for a given number of enemies
|
|
158
|
+
*
|
|
159
|
+
* @param enemyCount - Number of enemies in the encounter
|
|
160
|
+
* @returns Encounter multiplier value
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* getEncounterMultiplier(1); // 1.0
|
|
165
|
+
* getEncounterMultiplier(5); // 2.0
|
|
166
|
+
* getEncounterMultiplier(15); // 1.0
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare function getEncounterMultiplier(enemyCount: number): number;
|
|
170
|
+
/**
|
|
171
|
+
* Calculate adjusted XP for a group of enemies
|
|
172
|
+
*
|
|
173
|
+
* Applies encounter multiplier to account for action economy.
|
|
174
|
+
*
|
|
175
|
+
* @param enemyCRs - Array of enemy Challenge Ratings
|
|
176
|
+
* @param enemyCountMultiplier - Optional override for enemy count multiplier
|
|
177
|
+
* @returns Adjusted XP value for encounter building
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* // Five CR 1/2 goblins
|
|
182
|
+
* calculateAdjustedXP([0.5, 0.5, 0.5, 0.5, 0.5]); // 500 (250 base × 2.0)
|
|
183
|
+
*
|
|
184
|
+
* // One CR 5 boss
|
|
185
|
+
* calculateAdjustedXP([5]); // 1800 (1800 base × 1.0)
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
export declare function calculateAdjustedXP(enemyCRs: number[], enemyCountMultiplier?: number): number;
|
|
189
|
+
/**
|
|
190
|
+
* Get average party level
|
|
191
|
+
*
|
|
192
|
+
* @param levels - Array of character levels
|
|
193
|
+
* @returns Average level (rounded down to integer)
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* getAveragePartyLevel([1, 2, 3, 5]); // 2 (11 / 4 = 2.75, rounded down)
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
export declare function getAveragePartyLevel(levels: number[]): number;
|
|
201
|
+
/**
|
|
202
|
+
* Type guard to validate a difficulty level
|
|
203
|
+
*
|
|
204
|
+
* @param value - Value to check
|
|
205
|
+
* @returns True if valid EncounterDifficulty
|
|
206
|
+
*/
|
|
207
|
+
export declare function isValidEncounterDifficulty(value: unknown): value is EncounterDifficulty;
|
|
208
|
+
//# sourceMappingURL=EncounterBalance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncounterBalance.d.ts","sourceRoot":"","sources":["../../src/constants/EncounterBalance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACpC,MAAM,EACN,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAsBtC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBzD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc;IACvB,4CAA4C;;IAG5C,4BAA4B;;IAG5B,4BAA4B;;IAG5B,4BAA4B;;IAG5B,4BAA4B;;IAG5B,kDAAkD;;CAE5C,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,mBAAmB,GAChC,MAAM,CAMR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,EAAE,mBAAmB,GAChC,MAAM,CAIR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CA2B9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAE,MAAY,GAAG,MAAM,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,oBAAoB,CAAC,EAAE,MAAM,GAC9B,MAAM,CAQR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAI7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAGvF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enemy Equipment Templates
|
|
3
|
+
*
|
|
4
|
+
* Equipment templates specifically designed for enemy generation.
|
|
5
|
+
* These templates map to equipment in the main DEFAULT_EQUIPMENT database
|
|
6
|
+
* but are organized by archetype and rarity for enemy generation.
|
|
7
|
+
*
|
|
8
|
+
* Equipment selection follows these rules:
|
|
9
|
+
* - Brute: Heavy damage weapons (greataxe, longsword), heavy armor (scale mail, chain mail)
|
|
10
|
+
* - Archer: Ranged weapons (longbow, light crossbow), light armor (leather), backup dagger
|
|
11
|
+
* - Support: Quarterstaff or mace, light armor with shield option
|
|
12
|
+
*
|
|
13
|
+
* Higher rarity enemies receive better equipment from their available pool.
|
|
14
|
+
*/
|
|
15
|
+
import type { EquipmentTemplate } from '../core/types/Enemy.js';
|
|
16
|
+
import type { EnemyArchetype, EnemyRarity } from '../core/types/Enemy.js';
|
|
17
|
+
/**
|
|
18
|
+
* Map equipment template to actual equipment name in DEFAULT_EQUIPMENT
|
|
19
|
+
*
|
|
20
|
+
* This is the bridge between enemy equipment templates and the actual
|
|
21
|
+
* equipment database. When generating an enemy, we look up the actual
|
|
22
|
+
* equipment by name.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ENEMY_EQUIPMENT_MAPPING: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Enemy equipment templates
|
|
27
|
+
*
|
|
28
|
+
* Organized by archetype with equipment options that scale by rarity.
|
|
29
|
+
* Higher rarity enemies get better equipment from the archetype pool.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ENEMY_EQUIPMENT_TEMPLATES: EquipmentTemplate[];
|
|
32
|
+
/**
|
|
33
|
+
* Get equipment templates by archetype
|
|
34
|
+
*
|
|
35
|
+
* @param archetype - The enemy archetype to filter by
|
|
36
|
+
* @returns Array of equipment templates for the archetype
|
|
37
|
+
*/
|
|
38
|
+
export declare function getEquipmentByArchetype(archetype: EnemyArchetype): EquipmentTemplate[];
|
|
39
|
+
/**
|
|
40
|
+
* Get equipment templates by archetype and rarity
|
|
41
|
+
*
|
|
42
|
+
* @param archetype - The enemy archetype to filter by
|
|
43
|
+
* @param rarity - The rarity tier to filter by
|
|
44
|
+
* @returns Array of equipment templates matching both criteria
|
|
45
|
+
*/
|
|
46
|
+
export declare function getEquipmentByArchetypeAndRarity(archetype: EnemyArchetype, rarity: EnemyRarity): EquipmentTemplate[];
|
|
47
|
+
/**
|
|
48
|
+
* Get weapons by archetype and rarity
|
|
49
|
+
*
|
|
50
|
+
* @param archetype - The enemy archetype to filter by
|
|
51
|
+
* @param rarity - The rarity tier to filter by
|
|
52
|
+
* @returns Array of weapon templates matching both criteria
|
|
53
|
+
*/
|
|
54
|
+
export declare function getWeaponsByArchetypeAndRarity(archetype: EnemyArchetype, rarity: EnemyRarity): EquipmentTemplate[];
|
|
55
|
+
/**
|
|
56
|
+
* Get armor by archetype and rarity
|
|
57
|
+
*
|
|
58
|
+
* @param archetype - The enemy archetype to filter by
|
|
59
|
+
* @param rarity - The rarity tier to filter by
|
|
60
|
+
* @returns Array of armor templates matching both criteria
|
|
61
|
+
*/
|
|
62
|
+
export declare function getArmorByArchetypeAndRarity(archetype: EnemyArchetype, rarity: EnemyRarity): EquipmentTemplate[];
|
|
63
|
+
/**
|
|
64
|
+
* Get shields by archetype and rarity
|
|
65
|
+
*
|
|
66
|
+
* @param archetype - The enemy archetype to filter by
|
|
67
|
+
* @param rarity - The rarity tier to filter by
|
|
68
|
+
* @returns Array of shield templates matching both criteria
|
|
69
|
+
*/
|
|
70
|
+
export declare function getShieldsByArchetypeAndRarity(archetype: EnemyArchetype, rarity: EnemyRarity): EquipmentTemplate[];
|
|
71
|
+
//# sourceMappingURL=EnemyEquipment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnemyEquipment.d.ts","sourceRoot":"","sources":["../../src/constants/EnemyEquipment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsB1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,EAoKxD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAItF;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,GACpB,iBAAiB,EAAE,CAKrB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,GACpB,iBAAiB,EAAE,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,GACpB,iBAAiB,EAAE,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,GACpB,iBAAiB,EAAE,CAIrB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enemy Rarity Configuration
|
|
3
|
+
*
|
|
4
|
+
* Defines scaling factors and properties for each enemy rarity tier.
|
|
5
|
+
* Rarity controls **complexity**, not power. CR handles power scaling.
|
|
6
|
+
*
|
|
7
|
+
* Design Principle: Any CR can combine with any rarity:
|
|
8
|
+
* - CR 0.25 + Boss = Goblin chieftain (weak but complex)
|
|
9
|
+
* - CR 20 + Common = Ancient beast (powerful but simple)
|
|
10
|
+
*
|
|
11
|
+
* Rarity progression (complexity-based, minimal stat impact):
|
|
12
|
+
* - Common: Base enemy with standard stats
|
|
13
|
+
* - Uncommon: Minor stat adjustment, stronger signature ability, 1 extra ability
|
|
14
|
+
* - Elite: Small stat adjustment, stronger signature ability, 2 extra abilities, gains resistances
|
|
15
|
+
* - Boss: Moderate stat adjustment, strongest signature ability, 3 extra abilities, legendary actions
|
|
16
|
+
*/
|
|
17
|
+
import type { EnemyRarity, RarityConfig } from '../core/types/Enemy.js';
|
|
18
|
+
/**
|
|
19
|
+
* Rarity configuration for each enemy tier
|
|
20
|
+
*
|
|
21
|
+
* These values define how enemies scale across rarity tiers:
|
|
22
|
+
* - statMultiplier: Multiplier applied to base ability scores
|
|
23
|
+
* - hpMultiplier: Separate HP multiplier for dramatic health differences between rarities
|
|
24
|
+
* - signatureDieSize: Number of sides on signature ability damage die (d6/d8/d10/d12)
|
|
25
|
+
* - extraAbilityCount: Number of additional abilities from FeatureQuery pool
|
|
26
|
+
* - hasResistances: Whether this rarity gains template resistances/immunities
|
|
27
|
+
*
|
|
28
|
+
* Common is the baseline. Higher rarities have meaningfully more HP and
|
|
29
|
+
* stronger ability scores, making them feel distinctly more powerful.
|
|
30
|
+
*/
|
|
31
|
+
export declare const RARITY_CONFIGS: Record<EnemyRarity, RarityConfig>;
|
|
32
|
+
/**
|
|
33
|
+
* Get the rarity configuration for a given rarity tier
|
|
34
|
+
*
|
|
35
|
+
* @param rarity - The enemy rarity tier
|
|
36
|
+
* @returns The configuration for that rarity, or undefined if invalid rarity
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const eliteConfig = getRarityConfig('elite');
|
|
41
|
+
* console.log(eliteConfig.statMultiplier); // 1.25
|
|
42
|
+
* console.log(eliteConfig.signatureDieSize); // 10
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function getRarityConfig(rarity: EnemyRarity): RarityConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Get the die notation string for a given rarity's signature ability
|
|
48
|
+
*
|
|
49
|
+
* @param rarity - The enemy rarity tier
|
|
50
|
+
* @returns Die notation string (e.g., 'd6', 'd8', 'd10', 'd12')
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const bossDie = getSignatureDie('boss'); // 'd12'
|
|
55
|
+
* const commonDie = getSignatureDie('common'); // 'd6'
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function getSignatureDie(rarity: EnemyRarity): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get all available rarity tiers
|
|
61
|
+
*
|
|
62
|
+
* @returns Array of all rarity tiers in ascending order of power
|
|
63
|
+
*/
|
|
64
|
+
export declare function getAllRarities(): EnemyRarity[];
|
|
65
|
+
/**
|
|
66
|
+
* Get the next higher rarity tier
|
|
67
|
+
*
|
|
68
|
+
* @param currentRarity - The current rarity tier
|
|
69
|
+
* @returns The next higher rarity, or undefined if already at boss
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* getHigherRarity('common'); // 'uncommon'
|
|
74
|
+
* getHigherRarity('elite'); // 'boss'
|
|
75
|
+
* getHigherRarity('boss'); // undefined
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function getHigherRarity(currentRarity: EnemyRarity): EnemyRarity | undefined;
|
|
79
|
+
//# sourceMappingURL=EnemyRarity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnemyRarity.d.ts","sourceRoot":"","sources":["../../src/constants/EnemyRarity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CA6B5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAE9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAOnF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Construct Enemy Templates
|
|
3
|
+
*
|
|
4
|
+
* Contains construct enemy templates with category-specific traits:
|
|
5
|
+
* - Poison immunity (immune to poison damage and poisoned condition)
|
|
6
|
+
* - Psychic immunity (immune to psychic damage)
|
|
7
|
+
* - No healing (constructs cannot recover hit points through magical healing)
|
|
8
|
+
*
|
|
9
|
+
* Constructs are artificial creatures, often animated objects or built beings.
|
|
10
|
+
* They are typically immune to poison and psychic effects, and cannot heal
|
|
11
|
+
* through normal magical means. They are often slow but durable.
|
|
12
|
+
*/
|
|
13
|
+
import type { EnemyTemplate } from '../../core/types/Enemy.js';
|
|
14
|
+
/**
|
|
15
|
+
* Construct enemy templates
|
|
16
|
+
*
|
|
17
|
+
* These 4 templates provide construct enemies with:
|
|
18
|
+
* - Poison immunity (all rarities)
|
|
19
|
+
* - Psychic immunity (all rarities)
|
|
20
|
+
* - Varied archetypes: Brute (Animated Armor, Golem), Archer (Flying Sword), Support (Shield Guardian)
|
|
21
|
+
*/
|
|
22
|
+
export declare const CONSTRUCT_TEMPLATES: EnemyTemplate[];
|
|
23
|
+
/**
|
|
24
|
+
* Helper function to get a construct template by ID
|
|
25
|
+
*
|
|
26
|
+
* @param id - The template ID (e.g., 'animated-armor', 'flying-sword', 'shield-guardian', 'golem')
|
|
27
|
+
* @returns The matching template, or undefined if not found
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const animatedArmor = getConstructTemplateById('animated-armor');
|
|
32
|
+
* if (animatedArmor) {
|
|
33
|
+
* console.log(animatedArmor.name); // 'Animated Armor'
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function getConstructTemplateById(id: string): EnemyTemplate | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Get all construct templates
|
|
40
|
+
*
|
|
41
|
+
* @returns Array of all construct templates
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const constructs = getConstructTemplates();
|
|
46
|
+
* console.log(constructs.length); // 4 (Animated Armor, Flying Sword, Shield Guardian, Golem)
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function getConstructTemplates(): EnemyTemplate[];
|
|
50
|
+
/**
|
|
51
|
+
* Get construct templates by archetype
|
|
52
|
+
*
|
|
53
|
+
* @param archetype - The enemy archetype ('brute', 'archer', 'support')
|
|
54
|
+
* @returns Array of construct templates with the specified archetype
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const constructBrutes = getConstructTemplatesByArchetype('brute');
|
|
59
|
+
* console.log(constructBrutes.length); // 2 (Animated Armor, Golem)
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function getConstructTemplatesByArchetype(archetype: string): EnemyTemplate[];
|
|
63
|
+
//# sourceMappingURL=Construct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Construct.d.ts","sourceRoot":"","sources":["../../../src/constants/EnemyTemplates/Construct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA8K9C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE9E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAEvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAEnF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dragon Enemy Templates
|
|
3
|
+
*
|
|
4
|
+
* Contains dragon enemy templates with category-specific traits:
|
|
5
|
+
* - Damage immunity (by dragon type)
|
|
6
|
+
* - Frightful presence (for higher rarity)
|
|
7
|
+
*
|
|
8
|
+
* Dragons are powerful, intelligent reptilian creatures with breath weapons
|
|
9
|
+
* and devastating physical attacks. Young dragons are formidable opponents,
|
|
10
|
+
* while wyrmlings and drakes provide lesser challenges. Each dragon type
|
|
11
|
+
* has immunity to its associated damage element.
|
|
12
|
+
*/
|
|
13
|
+
import type { EnemyTemplate } from '../../core/types/Enemy.js';
|
|
14
|
+
/**
|
|
15
|
+
* Dragon enemy templates
|
|
16
|
+
*
|
|
17
|
+
* These 4 templates provide dragon enemies with:
|
|
18
|
+
* - Young Red Dragon: Fire immunity, Fire Breath (AoE fire), bass audio preference
|
|
19
|
+
* - Young Blue Dragon: Lightning immunity, Lightning Breath (line lightning), treble audio preference
|
|
20
|
+
* - Dragon Wyrmling: Acid resistance, Bite + Claw (multiattack), mid audio preference
|
|
21
|
+
* - Drake: Cold resistance, Tail Swipe (knockback), bass audio preference
|
|
22
|
+
* - Varied archetypes: Brute (Young Red Dragon, Dragon Wyrmling, Drake), Archer (Young Blue Dragon)
|
|
23
|
+
*/
|
|
24
|
+
export declare const DRAGON_TEMPLATES: EnemyTemplate[];
|
|
25
|
+
/**
|
|
26
|
+
* Helper function to get a dragon template by ID
|
|
27
|
+
*
|
|
28
|
+
* @param id - The template ID (e.g., 'young-red-dragon', 'young-blue-dragon', 'dragon-wyrmling', 'drake')
|
|
29
|
+
* @returns The matching template, or undefined if not found
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const youngRedDragon = getDragonTemplateById('young-red-dragon');
|
|
34
|
+
* if (youngRedDragon) {
|
|
35
|
+
* console.log(youngRedDragon.name); // 'Young Red Dragon'
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function getDragonTemplateById(id: string): EnemyTemplate | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Get all dragon templates
|
|
42
|
+
*
|
|
43
|
+
* @returns Array of all dragon templates
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const dragons = getDragonTemplates();
|
|
48
|
+
* console.log(dragons.length); // 4 (Young Red Dragon, Young Blue Dragon, Dragon Wyrmling, Drake)
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function getDragonTemplates(): EnemyTemplate[];
|
|
52
|
+
/**
|
|
53
|
+
* Get dragon templates by archetype
|
|
54
|
+
*
|
|
55
|
+
* @param archetype - The enemy archetype ('brute', 'archer', 'support')
|
|
56
|
+
* @returns Array of dragon templates with the specified archetype
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const dragonBrutes = getDragonTemplatesByArchetype('brute');
|
|
61
|
+
* console.log(dragonBrutes.length); // 3 (Young Red Dragon, Dragon Wyrmling, Drake)
|
|
62
|
+
*
|
|
63
|
+
* const dragonArchers = getDragonTemplatesByArchetype('archer');
|
|
64
|
+
* console.log(dragonArchers.length); // 1 (Young Blue Dragon)
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function getDragonTemplatesByArchetype(archetype: string): EnemyTemplate[];
|
|
68
|
+
//# sourceMappingURL=Dragon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dragon.d.ts","sourceRoot":"","sources":["../../../src/constants/EnemyTemplates/Dragon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,EA8K3C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAEpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAEhF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Elemental Enemy Templates
|
|
3
|
+
*
|
|
4
|
+
* Contains elemental enemy templates with category-specific traits:
|
|
5
|
+
* - Immunity to their own element
|
|
6
|
+
* - Varied resistances based on element type
|
|
7
|
+
*
|
|
8
|
+
* Elementals are living manifestations of natural forces, often found
|
|
9
|
+
* near their native environments. They are immune to their element
|
|
10
|
+
* and typically have abilities that reflect their nature.
|
|
11
|
+
*/
|
|
12
|
+
import type { EnemyTemplate } from '../../core/types/Enemy.js';
|
|
13
|
+
/**
|
|
14
|
+
* Elemental enemy templates
|
|
15
|
+
*
|
|
16
|
+
* These 4 templates provide elemental enemies with:
|
|
17
|
+
* - Fire Elemental: Fire immunity, cold vulnerability
|
|
18
|
+
* - Water Elemental: Cold immunity, resistance to fire and necrotic
|
|
19
|
+
* - Air Elemental: Lightning immunity, resistance to thunder
|
|
20
|
+
* - Earth Elemental: Poison immunity, resistance to necrotic
|
|
21
|
+
* - Varied archetypes: Brute (Fire, Earth), Support (Water), Archer (Air)
|
|
22
|
+
*/
|
|
23
|
+
export declare const ELEMENTAL_TEMPLATES: EnemyTemplate[];
|
|
24
|
+
/**
|
|
25
|
+
* Helper function to get an elemental template by ID
|
|
26
|
+
*
|
|
27
|
+
* @param id - The template ID (e.g., 'fire-elemental', 'water-elemental', 'air-elemental', 'earth-elemental')
|
|
28
|
+
* @returns The matching template, or undefined if not found
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const fireElemental = getElementalTemplateById('fire-elemental');
|
|
33
|
+
* if (fireElemental) {
|
|
34
|
+
* console.log(fireElemental.name); // 'Fire Elemental'
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function getElementalTemplateById(id: string): EnemyTemplate | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get all elemental templates
|
|
41
|
+
*
|
|
42
|
+
* @returns Array of all elemental templates
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const elementals = getElementalTemplates();
|
|
47
|
+
* console.log(elementals.length); // 4 (Fire Elemental, Water Elemental, Air Elemental, Earth Elemental)
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function getElementalTemplates(): EnemyTemplate[];
|
|
51
|
+
/**
|
|
52
|
+
* Get elemental templates by archetype
|
|
53
|
+
*
|
|
54
|
+
* @param archetype - The enemy archetype ('brute', 'archer', 'support')
|
|
55
|
+
* @returns Array of elemental templates with the specified archetype
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const elementalBrutes = getElementalTemplatesByArchetype('brute');
|
|
60
|
+
* console.log(elementalBrutes.length); // 2 (Fire Elemental, Earth Elemental)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function getElementalTemplatesByArchetype(archetype: string): EnemyTemplate[];
|
|
64
|
+
//# sourceMappingURL=Elemental.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Elemental.d.ts","sourceRoot":"","sources":["../../../src/constants/EnemyTemplates/Elemental.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,EAkL9C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE9E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAEvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAEnF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fiend Enemy Templates
|
|
3
|
+
*
|
|
4
|
+
* Contains fiend enemy templates with category-specific traits:
|
|
5
|
+
* - Fire resistance (half damage from fire attacks)
|
|
6
|
+
* - Cold resistance (half damage from cold attacks)
|
|
7
|
+
*
|
|
8
|
+
* Fiends are malicious creatures from the lower planes, including demons,
|
|
9
|
+
* devils, and other evil outsiders. They are typically resistant to
|
|
10
|
+
* fire and cold, and often have poisonous or corrupting abilities.
|
|
11
|
+
*/
|
|
12
|
+
import type { EnemyTemplate } from '../../core/types/Enemy.js';
|
|
13
|
+
/**
|
|
14
|
+
* Fiend enemy templates
|
|
15
|
+
*
|
|
16
|
+
* These 4 templates provide fiend enemies with:
|
|
17
|
+
* - Fire resistance (all rarities)
|
|
18
|
+
* - Cold resistance (all rarities)
|
|
19
|
+
* - Varied archetypes: Archer (Imp), Support (Quasit), Brute (Lemure, Demon)
|
|
20
|
+
*/
|
|
21
|
+
export declare const FIEND_TEMPLATES: EnemyTemplate[];
|
|
22
|
+
/**
|
|
23
|
+
* Helper function to get a fiend template by ID
|
|
24
|
+
*
|
|
25
|
+
* @param id - The template ID (e.g., 'imp', 'quasit', 'lemure', 'demon')
|
|
26
|
+
* @returns The matching template, or undefined if not found
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const imp = getFiendTemplateById('imp');
|
|
31
|
+
* if (imp) {
|
|
32
|
+
* console.log(imp.name); // 'Imp'
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function getFiendTemplateById(id: string): EnemyTemplate | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Get all fiend templates
|
|
39
|
+
*
|
|
40
|
+
* @returns Array of all fiend templates
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const fiends = getFiendTemplates();
|
|
45
|
+
* console.log(fiends.length); // 4 (Imp, Quasit, Lemure, Demon)
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function getFiendTemplates(): EnemyTemplate[];
|
|
49
|
+
/**
|
|
50
|
+
* Get fiend templates by archetype
|
|
51
|
+
*
|
|
52
|
+
* @param archetype - The enemy archetype ('brute', 'archer', 'support')
|
|
53
|
+
* @returns Array of fiend templates with the specified archetype
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const fiendBrutes = getFiendTemplatesByArchetype('brute');
|
|
58
|
+
* console.log(fiendBrutes.length); // 2 (Lemure, Demon)
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function getFiendTemplatesByArchetype(archetype: string): EnemyTemplate[];
|
|
62
|
+
//# sourceMappingURL=Fiend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fiend.d.ts","sourceRoot":"","sources":["../../../src/constants/EnemyTemplates/Fiend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAkL1C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAE/E"}
|