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,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combat System Types
|
|
3
|
+
* D&D 5e-inspired turn-based combat mechanics
|
|
4
|
+
*/
|
|
5
|
+
import type { CharacterSheet, Attack, Spell } from './Character';
|
|
6
|
+
import type { EnvironmentalContext } from './Progression';
|
|
7
|
+
import type { Equipment } from '../../utils/constants.ts';
|
|
8
|
+
import type { LegendaryAction } from './Enemy';
|
|
9
|
+
import type { CombatantMetrics } from './CombatAI';
|
|
10
|
+
/**
|
|
11
|
+
* DiceRollerAPI - Common interface for dice rolling implementations.
|
|
12
|
+
* Both the static DiceRoller (via adapter) and instance-based SeededDiceRoller
|
|
13
|
+
* satisfy this interface, allowing CombatEngine to work in both live (random)
|
|
14
|
+
* and simulation (seeded) modes.
|
|
15
|
+
*/
|
|
16
|
+
export interface DiceRollerAPI {
|
|
17
|
+
rollDie(sides: number): number;
|
|
18
|
+
rollD20(): number;
|
|
19
|
+
rollWithAdvantage(): {
|
|
20
|
+
roll1: number;
|
|
21
|
+
roll2: number;
|
|
22
|
+
result: number;
|
|
23
|
+
};
|
|
24
|
+
rollWithDisadvantage(): {
|
|
25
|
+
roll1: number;
|
|
26
|
+
roll2: number;
|
|
27
|
+
result: number;
|
|
28
|
+
};
|
|
29
|
+
calculateDamage(formula: string, modifier: number, isCritical?: boolean): DamageRoll;
|
|
30
|
+
rollSavingThrow(abilityModifier: number, proficiencyBonus?: number): number;
|
|
31
|
+
rollAbilityCheck(abilityModifier: number, proficiencyBonus?: number): number;
|
|
32
|
+
isCriticalHit(d20Roll: number): boolean;
|
|
33
|
+
isCriticalMiss(d20Roll: number): boolean;
|
|
34
|
+
parseDiceFormula(formula: string): {
|
|
35
|
+
diceCount: number;
|
|
36
|
+
diceSides: number;
|
|
37
|
+
modifier: number;
|
|
38
|
+
rolls: number[];
|
|
39
|
+
total: number;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* StatusEffectMechanics - Mechanical impact of a status effect on combat
|
|
44
|
+
*
|
|
45
|
+
* Used by CombatEngine to enforce combat rules for conditions like
|
|
46
|
+
* Charmed (disadvantage on attacks vs non-source), Frightened (disadvantage
|
|
47
|
+
* on attacks/checks while source visible), Stunned (skip turn), etc.
|
|
48
|
+
*/
|
|
49
|
+
export interface StatusEffectMechanics {
|
|
50
|
+
/** Combatant has disadvantage on attack rolls against targets other than source */
|
|
51
|
+
disadvantageOnAttackNonSource?: boolean;
|
|
52
|
+
/** Combatant has disadvantage on attack rolls (unconditional) */
|
|
53
|
+
disadvantageOnAttack?: boolean;
|
|
54
|
+
/** Combatant has disadvantage on ability checks */
|
|
55
|
+
disadvantageOnAbilityChecks?: boolean;
|
|
56
|
+
/** Melee attacks against this combatant have advantage */
|
|
57
|
+
advantageOnMeleeAttackAgainst?: boolean;
|
|
58
|
+
/** Ranged attacks against this combatant have advantage */
|
|
59
|
+
advantageOnRangedAttackAgainst?: boolean;
|
|
60
|
+
/** Combatant has disadvantage on DEX saving throws */
|
|
61
|
+
disadvantageOnDexSaves?: boolean;
|
|
62
|
+
/** Combatant's speed is set to 0 */
|
|
63
|
+
speedZero?: boolean;
|
|
64
|
+
/** Combatant skips their turn entirely */
|
|
65
|
+
skipTurn?: boolean;
|
|
66
|
+
/** Combatant is immune to a specific damage type while this effect is active */
|
|
67
|
+
damageImmunity?: DamageType;
|
|
68
|
+
/** Combatant has resistance to a specific damage type while this effect is active */
|
|
69
|
+
damageResistance?: DamageType;
|
|
70
|
+
/** Combatant has vulnerability to a specific damage type while this effect is active */
|
|
71
|
+
damageVulnerability?: DamageType;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* StatusEffect - Temporary condition affecting a combatant
|
|
75
|
+
*/
|
|
76
|
+
export interface StatusEffect {
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
duration: number;
|
|
80
|
+
source?: string;
|
|
81
|
+
hasConcentration?: boolean;
|
|
82
|
+
/** Optional icon URL for small UI display */
|
|
83
|
+
icon?: string;
|
|
84
|
+
/** Optional image URL for larger display */
|
|
85
|
+
image?: string;
|
|
86
|
+
/** Damage dealt at the start of each of the affected combatant's turns (e.g., Burning) */
|
|
87
|
+
damage?: number;
|
|
88
|
+
/** Damage type for the effect's damage (e.g., 'fire' for Burning) */
|
|
89
|
+
damageType?: DamageType;
|
|
90
|
+
/** Mechanical effects that CombatEngine enforces during combat */
|
|
91
|
+
mechanicalEffects?: StatusEffectMechanics;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Combatant - A character participating in combat
|
|
95
|
+
*/
|
|
96
|
+
export interface Combatant {
|
|
97
|
+
id: string;
|
|
98
|
+
character: CharacterSheet;
|
|
99
|
+
initiative: number;
|
|
100
|
+
currentHP: number;
|
|
101
|
+
temporaryHP?: number;
|
|
102
|
+
statusEffects: StatusEffect[];
|
|
103
|
+
position?: {
|
|
104
|
+
x: number;
|
|
105
|
+
y: number;
|
|
106
|
+
};
|
|
107
|
+
isDefeated: boolean;
|
|
108
|
+
actionUsed: boolean;
|
|
109
|
+
bonusActionUsed: boolean;
|
|
110
|
+
reactionUsed: boolean;
|
|
111
|
+
spellSlots?: {
|
|
112
|
+
[level: number]: number;
|
|
113
|
+
};
|
|
114
|
+
/** Name of the status effect this combatant is concentrating on, if any */
|
|
115
|
+
concentratingOn?: string;
|
|
116
|
+
/** Legendary action points remaining this round (3 per round for bosses, 0 for non-bosses) */
|
|
117
|
+
legendaryActionsRemaining?: number;
|
|
118
|
+
/** Legendary resistances remaining (per-day resource for bosses) */
|
|
119
|
+
legendaryResistancesRemaining?: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* CombatAction - An action taken during combat
|
|
123
|
+
*/
|
|
124
|
+
export interface CombatAction {
|
|
125
|
+
type: 'attack' | 'spell' | 'dodge' | 'dash' | 'disengage' | 'help' | 'hide' | 'ready' | 'flee' | 'useItem' | 'legendaryAction' | 'statusEffectTick';
|
|
126
|
+
actor: Combatant;
|
|
127
|
+
target?: Combatant;
|
|
128
|
+
targets?: Combatant[];
|
|
129
|
+
attack?: Attack;
|
|
130
|
+
spell?: Spell;
|
|
131
|
+
item?: Equipment;
|
|
132
|
+
legendaryAction?: LegendaryAction;
|
|
133
|
+
result?: CombatActionResult;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* CombatActionResult - Outcome of a combat action
|
|
137
|
+
*/
|
|
138
|
+
export interface CombatActionResult {
|
|
139
|
+
success: boolean;
|
|
140
|
+
roll?: number;
|
|
141
|
+
isCritical?: boolean;
|
|
142
|
+
damage?: number;
|
|
143
|
+
damageType?: string;
|
|
144
|
+
targetHP?: number;
|
|
145
|
+
description: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* HitMode - Determines how attack rolls resolve hits and misses
|
|
149
|
+
*
|
|
150
|
+
* - 'dnd': Classic D&D 5e — d20 + bonus vs target AC. Below AC = miss.
|
|
151
|
+
* - 'scaled': AC reduces damage instead of determining hit/miss.
|
|
152
|
+
* Only natural 1 misses. Natural 20 is always a critical hit.
|
|
153
|
+
* For each point the total roll falls below AC, damage is reduced by 10%,
|
|
154
|
+
* down to a minimum of 1 damage.
|
|
155
|
+
*/
|
|
156
|
+
export type HitMode = 'dnd' | 'scaled';
|
|
157
|
+
/**
|
|
158
|
+
* AttackRoll - Result of an attack roll
|
|
159
|
+
*/
|
|
160
|
+
export interface AttackRoll {
|
|
161
|
+
d20Roll: number;
|
|
162
|
+
attackBonus: number;
|
|
163
|
+
totalRoll: number;
|
|
164
|
+
targetAC: number;
|
|
165
|
+
hit: boolean;
|
|
166
|
+
isCritical: boolean;
|
|
167
|
+
isMiss: boolean;
|
|
168
|
+
damageScale?: number;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* DamageRoll - Result of a damage roll
|
|
172
|
+
*
|
|
173
|
+
* Damage formula: totalDamage = max(1, baseDamage + weaponBonus)
|
|
174
|
+
* - baseDamage = max(0, attacker.STR - defender.AC)
|
|
175
|
+
* - weaponBonus = max(1, floor(rawDiceSum / 4))
|
|
176
|
+
*/
|
|
177
|
+
export interface DamageRoll {
|
|
178
|
+
diceFormula: string;
|
|
179
|
+
rolls: number[];
|
|
180
|
+
modifier?: number;
|
|
181
|
+
total: number;
|
|
182
|
+
isCritical: boolean;
|
|
183
|
+
baseDamage?: number;
|
|
184
|
+
weaponRoll?: number;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* SpellCastResult - Outcome of casting a spell
|
|
188
|
+
*/
|
|
189
|
+
export interface SpellCastResult {
|
|
190
|
+
success: boolean;
|
|
191
|
+
spellName: string;
|
|
192
|
+
caster: Combatant;
|
|
193
|
+
targets: Combatant[];
|
|
194
|
+
saveDC?: number;
|
|
195
|
+
damage?: DamageRoll;
|
|
196
|
+
effectsApplied: StatusEffect[];
|
|
197
|
+
spellSlotUsed: number;
|
|
198
|
+
description: string;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* CombatInstance - Represents an active combat encounter
|
|
202
|
+
*/
|
|
203
|
+
export interface CombatInstance {
|
|
204
|
+
id: string;
|
|
205
|
+
combatants: Combatant[];
|
|
206
|
+
currentTurnIndex: number;
|
|
207
|
+
roundNumber: number;
|
|
208
|
+
environment?: EnvironmentalContext;
|
|
209
|
+
history: CombatAction[];
|
|
210
|
+
isActive: boolean;
|
|
211
|
+
winner?: Combatant;
|
|
212
|
+
winnerSide?: 'player' | 'enemy' | 'draw';
|
|
213
|
+
startTime: number;
|
|
214
|
+
lastUpdated: number;
|
|
215
|
+
/** Per-combatant metrics computed from combat history (populated by CombatMetricsTracker) */
|
|
216
|
+
metrics?: Map<string, CombatantMetrics>;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* CombatResult - Final outcome of a combat encounter
|
|
220
|
+
*/
|
|
221
|
+
export interface CombatResult {
|
|
222
|
+
winner?: Combatant;
|
|
223
|
+
winnerSide: 'player' | 'enemy' | 'draw';
|
|
224
|
+
defeated: Combatant[];
|
|
225
|
+
roundsElapsed: number;
|
|
226
|
+
totalTurns: number;
|
|
227
|
+
xpAwarded: number;
|
|
228
|
+
treasureAwarded?: {
|
|
229
|
+
gold: number;
|
|
230
|
+
items: Equipment[];
|
|
231
|
+
};
|
|
232
|
+
description: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* D&D Damage Type Classification
|
|
236
|
+
*/
|
|
237
|
+
export type DamageType = 'slashing' | 'piercing' | 'bludgeoning' | 'fire' | 'cold' | 'lightning' | 'thunder' | 'poison' | 'acid' | 'necrotic' | 'radiant' | 'psychic' | 'force';
|
|
238
|
+
/**
|
|
239
|
+
* D&D Ability Saving Throw
|
|
240
|
+
*/
|
|
241
|
+
export type SavingThrowAbility = 'strength' | 'dexterity' | 'constitution' | 'intelligence' | 'wisdom' | 'charisma';
|
|
242
|
+
/**
|
|
243
|
+
* Treasure Configuration Options
|
|
244
|
+
* - Fixed amount: `{ gold: 500 }` - always rewards exactly 500 gold
|
|
245
|
+
* - Range: `{ gold: { min: 100, max: 200 } }` - random amount between 100-200 (uses seed if provided)
|
|
246
|
+
* - Items: Optional array of items to award (supports any Equipment type including boxes)
|
|
247
|
+
*/
|
|
248
|
+
export interface TreasureConfig {
|
|
249
|
+
gold?: number | {
|
|
250
|
+
min: number;
|
|
251
|
+
max: number;
|
|
252
|
+
};
|
|
253
|
+
items?: Equipment[];
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Combat Configuration Options
|
|
257
|
+
*/
|
|
258
|
+
export interface CombatConfig {
|
|
259
|
+
useEnvironment?: boolean;
|
|
260
|
+
useMusic?: boolean;
|
|
261
|
+
tacticalMode?: boolean;
|
|
262
|
+
maxTurnsBeforeDraw?: number;
|
|
263
|
+
allowFleeing?: boolean;
|
|
264
|
+
seed?: string;
|
|
265
|
+
treasure?: TreasureConfig;
|
|
266
|
+
hitMode?: HitMode;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=Combat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combat.d.ts","sourceRoot":"","sources":["../../../src/core/types/Combat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combat AI Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines types and interfaces for the combat AI system that controls
|
|
5
|
+
* both player characters and enemies during simulated combat.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* AIPlayStyle - How an AI-controlled combatant approaches combat
|
|
9
|
+
*
|
|
10
|
+
* Two fundamental strategies drive all AI decisions:
|
|
11
|
+
* - **Normal**: Measures baseline difficulty. Balanced resource use.
|
|
12
|
+
* - **Aggressive**: Measures difficulty ceiling. No resource conservation.
|
|
13
|
+
*
|
|
14
|
+
* Comparing Normal vs Aggressive results reveals the true difficulty
|
|
15
|
+
* range of an encounter.
|
|
16
|
+
*/
|
|
17
|
+
export type AIPlayStyle = 'normal' | 'aggressive';
|
|
18
|
+
/**
|
|
19
|
+
* AIConfig - Configuration for AI-controlled combat
|
|
20
|
+
*
|
|
21
|
+
* Controls how both sides fight during simulation. Each side can have
|
|
22
|
+
* a different play style, and individual combatants can be overridden.
|
|
23
|
+
*/
|
|
24
|
+
export interface AIConfig {
|
|
25
|
+
/** How player characters play */
|
|
26
|
+
playerStyle: AIPlayStyle;
|
|
27
|
+
/** How enemies play */
|
|
28
|
+
enemyStyle: AIPlayStyle;
|
|
29
|
+
/** Optional per-combatant style overrides (combatant ID → style) */
|
|
30
|
+
overrides?: Map<string, AIPlayStyle>;
|
|
31
|
+
/**
|
|
32
|
+
* Enable class-specific features for player AI
|
|
33
|
+
* Default: false (basic attacks + spells + items only)
|
|
34
|
+
* When true: AI attempts to use class features like Sneak Attack, Divine Smite, Action Surge
|
|
35
|
+
*/
|
|
36
|
+
enableClassFeatures?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* AIDecision - The output of the AI's decision for a single turn
|
|
40
|
+
*
|
|
41
|
+
* Returned by CombatAI.decide() and executed by AICombatRunner.
|
|
42
|
+
* Contains all information needed to execute one combatant's turn.
|
|
43
|
+
*/
|
|
44
|
+
export interface AIDecision {
|
|
45
|
+
/** The type of action to take */
|
|
46
|
+
action: 'attack' | 'castSpell' | 'dodge' | 'dash' | 'disengage' | 'flee' | 'useItem' | 'legendaryAction' | 'skip';
|
|
47
|
+
/** Target combatant ID (for single-target actions) */
|
|
48
|
+
target?: string;
|
|
49
|
+
/** Target combatant IDs (for multi-target spells) */
|
|
50
|
+
targetIds?: string[];
|
|
51
|
+
/** Which weapon to attack with */
|
|
52
|
+
weaponName?: string;
|
|
53
|
+
/** Which spell to cast */
|
|
54
|
+
spellName?: string;
|
|
55
|
+
/** Which consumable item to use */
|
|
56
|
+
itemName?: string;
|
|
57
|
+
/** Which legendary action to execute */
|
|
58
|
+
legendaryActionId?: string;
|
|
59
|
+
/** Human-readable explanation of why the AI chose this action */
|
|
60
|
+
reasoning?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* AIThreatAssessment - How the AI evaluates the current battlefield state
|
|
64
|
+
*
|
|
65
|
+
* Computed each turn to inform decision-making. Provides a snapshot
|
|
66
|
+
* of tactical conditions that drive style-dependent behavior.
|
|
67
|
+
*/
|
|
68
|
+
export interface AIThreatAssessment {
|
|
69
|
+
/** Current HP as a fraction of max HP (0.0 - 1.0) */
|
|
70
|
+
myHPPercent: number;
|
|
71
|
+
/** Current armor class */
|
|
72
|
+
myAC: number;
|
|
73
|
+
/** Lowest ally HP as a fraction of max HP (1.0 if no allies) */
|
|
74
|
+
lowestAllyHPPercent: number;
|
|
75
|
+
/** Absolute HP of the weakest living enemy (Infinity if no enemies) */
|
|
76
|
+
lowestEnemyHP: number;
|
|
77
|
+
/** Estimated DPR of the scariest enemy */
|
|
78
|
+
highestEnemyDamage: number;
|
|
79
|
+
/** Number of living allies (including self) */
|
|
80
|
+
partySize: number;
|
|
81
|
+
/** Number of living enemies */
|
|
82
|
+
enemyCount: number;
|
|
83
|
+
/** Current round number */
|
|
84
|
+
roundNumber: number;
|
|
85
|
+
/** Below 25% HP */
|
|
86
|
+
isLowHP: boolean;
|
|
87
|
+
/** Below 10% HP */
|
|
88
|
+
isCriticalHP: boolean;
|
|
89
|
+
/** Has healing items in inventory */
|
|
90
|
+
hasHealingItems: boolean;
|
|
91
|
+
/** Has remaining spell slots for leveled spells */
|
|
92
|
+
hasSpellSlots: boolean;
|
|
93
|
+
/** Has remaining limited-use abilities (not yet expended) */
|
|
94
|
+
hasRemainingLimitedAbilities: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* CombatantMetrics - Per-combatant aggregate statistics from a single combat
|
|
98
|
+
*
|
|
99
|
+
* Computed from combat history by CombatMetricsTracker. Used by the
|
|
100
|
+
* Monte Carlo simulator to aggregate per-combatant performance across
|
|
101
|
+
* many simulation runs (DPR, survival rate, etc.).
|
|
102
|
+
*/
|
|
103
|
+
export interface CombatantMetrics {
|
|
104
|
+
/** Combatant ID */
|
|
105
|
+
combatantId: string;
|
|
106
|
+
/** Combatant display name */
|
|
107
|
+
name: string;
|
|
108
|
+
/** Which side this combatant was on */
|
|
109
|
+
side: 'player' | 'enemy';
|
|
110
|
+
/** Total damage dealt to enemies (via attacks, spells, legendary actions) */
|
|
111
|
+
totalDamageDealt: number;
|
|
112
|
+
/** Total damage taken from all sources */
|
|
113
|
+
totalDamageTaken: number;
|
|
114
|
+
/** Total HP restored via healing spells and items */
|
|
115
|
+
totalHealingDone: number;
|
|
116
|
+
/** Number of spells cast (successful and failed) */
|
|
117
|
+
spellsCast: number;
|
|
118
|
+
/** Number of consumable items used */
|
|
119
|
+
itemsUsed: number;
|
|
120
|
+
/** Number of critical hits scored */
|
|
121
|
+
criticalHits: number;
|
|
122
|
+
/** Number of successful attack/spell hits */
|
|
123
|
+
hits: number;
|
|
124
|
+
/** Number of missed attack/spell attempts */
|
|
125
|
+
misses: number;
|
|
126
|
+
/** Number of enemies/opponents this combatant defeated (killed) */
|
|
127
|
+
kills: number;
|
|
128
|
+
/** Number of rounds the combatant survived (0 if defeated in round 1) */
|
|
129
|
+
roundsSurvived: number;
|
|
130
|
+
/** Whether the combatant was still alive at combat end */
|
|
131
|
+
survived: boolean;
|
|
132
|
+
/** Breakdown of actions by type */
|
|
133
|
+
actionsByType: Record<string, number>;
|
|
134
|
+
/** Damage dealt per round (index = round number, value = damage that round) */
|
|
135
|
+
damagePerRound: number[];
|
|
136
|
+
/** HP remaining at combat end (as percentage of max HP, 0–100). 0 if defeated. */
|
|
137
|
+
hpRemainingPercent: number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Type guard to check if a value is a valid AIPlayStyle
|
|
141
|
+
*/
|
|
142
|
+
export declare function isValidAIPlayStyle(value: unknown): value is AIPlayStyle;
|
|
143
|
+
//# sourceMappingURL=CombatAI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CombatAI.d.ts","sourceRoot":"","sources":["../../../src/core/types/CombatAI.ts"],"names":[],"mappings":"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"}
|