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,366 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CombatSimulator — Monte Carlo combat simulation engine
|
|
3
|
+
*
|
|
4
|
+
* Runs N combat simulations with seeded RNG, aggregates statistical results,
|
|
5
|
+
* and returns structured data for balance analysis. Each simulation run gets
|
|
6
|
+
* a unique seed derived from the base seed, ensuring full determinism:
|
|
7
|
+
* same base seed + same config = identical results every time.
|
|
8
|
+
*
|
|
9
|
+
* Uses AICombatRunner internally for each run, so the AI makes all combat
|
|
10
|
+
* decisions. The simulator orchestrates running many fights and aggregating
|
|
11
|
+
* the outcomes into statistically meaningful summaries.
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* ```ts
|
|
15
|
+
* const simulator = new CombatSimulator();
|
|
16
|
+
* const results = simulator.run(
|
|
17
|
+
* party, enemies,
|
|
18
|
+
* { runCount: 1000, baseSeed: 'my-sim', aiConfig: { playerStyle: 'normal', enemyStyle: 'aggressive' } },
|
|
19
|
+
* (completed, total) => console.log(`${completed}/${total}`)
|
|
20
|
+
* );
|
|
21
|
+
* console.log(results.summary.playerWinRate); // e.g., 0.73
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import type { CharacterSheet } from '../../types/Character.js';
|
|
25
|
+
import type { CombatConfig, CombatInstance, CombatResult } from '../../types/Combat.js';
|
|
26
|
+
import type { AIConfig, CombatantMetrics } from '../../types/CombatAI.js';
|
|
27
|
+
import type { EncounterGenerationOptions } from '../../types/Enemy.js';
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for a Monte Carlo combat simulation.
|
|
30
|
+
*
|
|
31
|
+
* Controls how many fights to run, what AI strategies to use, and
|
|
32
|
+
* whether to collect detailed per-run logs (memory-intensive).
|
|
33
|
+
*/
|
|
34
|
+
export interface SimulationConfig {
|
|
35
|
+
/** Number of simulations to run (100–10000 recommended) */
|
|
36
|
+
runCount: number;
|
|
37
|
+
/** Base seed for determinism — each run gets baseSeed + index */
|
|
38
|
+
baseSeed: string;
|
|
39
|
+
/** AI play styles per side */
|
|
40
|
+
aiConfig: AIConfig;
|
|
41
|
+
/** Optional combat engine configuration (max turns, flee, etc.) */
|
|
42
|
+
combatConfig?: CombatConfig;
|
|
43
|
+
/** If true, save full combat log per run (memory-intensive for large runCount) */
|
|
44
|
+
collectDetailedLogs?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* If provided, regenerate enemies per run using these options instead of
|
|
47
|
+
* reusing the same pre-generated enemies for all runs.
|
|
48
|
+
*
|
|
49
|
+
* Each run gets a unique seed derived from `baseSeed + runIndex`, producing
|
|
50
|
+
* different enemy templates/stats per run while keeping determinism.
|
|
51
|
+
* This captures the variance in enemy generation (different templates, etc.)
|
|
52
|
+
* across Monte Carlo iterations.
|
|
53
|
+
*
|
|
54
|
+
* The `enemies` array passed to `run()` is still used for:
|
|
55
|
+
* - Aggregator initialization (combatant IDs, encounter config)
|
|
56
|
+
* - Per-combatant metric slot naming
|
|
57
|
+
*/
|
|
58
|
+
enemyRegeneration?: EncounterGenerationOptions;
|
|
59
|
+
/** Progress callback — called after each run completes */
|
|
60
|
+
onProgress?: (completed: number, total: number) => void;
|
|
61
|
+
/** AbortSignal for cancelling long-running simulations. When aborted, returns partial results. */
|
|
62
|
+
abortSignal?: AbortSignal;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Summary statistics aggregated across all simulation runs.
|
|
66
|
+
*
|
|
67
|
+
* Answers the core question: "Given this party and these enemies,
|
|
68
|
+
* how often does each side win, and how long do fights last?"
|
|
69
|
+
*/
|
|
70
|
+
export interface SimulationSummary {
|
|
71
|
+
/** Total simulation runs completed */
|
|
72
|
+
totalRuns: number;
|
|
73
|
+
/** Number of runs where all enemies were defeated */
|
|
74
|
+
playerWins: number;
|
|
75
|
+
/** Number of runs where all players were defeated */
|
|
76
|
+
enemyWins: number;
|
|
77
|
+
/** Number of runs that ended in a draw (max turns, mutual kill, etc.) */
|
|
78
|
+
draws: number;
|
|
79
|
+
/** Player win rate (0.0–1.0) */
|
|
80
|
+
playerWinRate: number;
|
|
81
|
+
/** Average number of rounds across all runs */
|
|
82
|
+
averageRounds: number;
|
|
83
|
+
/** Median number of rounds across all runs */
|
|
84
|
+
medianRounds: number;
|
|
85
|
+
/** Average rounds in runs where the player won */
|
|
86
|
+
averageRoundsOnWin: number;
|
|
87
|
+
/** Average rounds in runs where the player lost */
|
|
88
|
+
averageRoundsOnLoss: number;
|
|
89
|
+
/** Average remaining HP percent for player characters across winning runs */
|
|
90
|
+
averagePlayerHPPercentRemaining: number;
|
|
91
|
+
/** Total number of player character deaths across all runs */
|
|
92
|
+
totalPlayerDeaths: number;
|
|
93
|
+
/** Average rounds at which each player death occurred */
|
|
94
|
+
averageRoundsPerPlayerDeath: number;
|
|
95
|
+
/** Total number of enemy deaths across all runs */
|
|
96
|
+
totalEnemyDeaths: number;
|
|
97
|
+
/** Average rounds at which each enemy death occurred */
|
|
98
|
+
averageRoundsPerEnemyDeath: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Histogram bucket for distribution visualization.
|
|
102
|
+
*
|
|
103
|
+
* Used to build damage and HP distribution charts in the frontend.
|
|
104
|
+
*/
|
|
105
|
+
export interface HistogramBucket {
|
|
106
|
+
/** Start of the range (inclusive) */
|
|
107
|
+
rangeStart: number;
|
|
108
|
+
/** End of the range (exclusive, except the last bucket) */
|
|
109
|
+
rangeEnd: number;
|
|
110
|
+
/** Number of data points in this bucket */
|
|
111
|
+
count: number;
|
|
112
|
+
/** Percentage of total data points (0–100) */
|
|
113
|
+
percent: number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Per-combatant aggregate statistics across all simulation runs.
|
|
117
|
+
*
|
|
118
|
+
* Computed by accumulating CombatantMetrics from each run, then
|
|
119
|
+
* calculating averages, rates, and distributions.
|
|
120
|
+
*/
|
|
121
|
+
export interface CombatantSimulationMetrics {
|
|
122
|
+
/** Combatant ID (from CharacterSheet) */
|
|
123
|
+
combatantId: string;
|
|
124
|
+
/** Combatant display name */
|
|
125
|
+
name: string;
|
|
126
|
+
/** Which side this combatant was on */
|
|
127
|
+
side: 'player' | 'enemy';
|
|
128
|
+
/** Average damage dealt per round across all runs */
|
|
129
|
+
averageDamagePerRound: number;
|
|
130
|
+
/** Median damage dealt per round across all runs */
|
|
131
|
+
medianDamagePerRound: number;
|
|
132
|
+
/** Average total damage dealt across all runs */
|
|
133
|
+
averageTotalDamageDealt: number;
|
|
134
|
+
/** Average total damage taken across all runs */
|
|
135
|
+
averageTotalDamageTaken: number;
|
|
136
|
+
/** Average healing done across all runs */
|
|
137
|
+
averageHealingDone: number;
|
|
138
|
+
/** Average number of rounds survived across all runs */
|
|
139
|
+
averageRoundsSurvived: number;
|
|
140
|
+
/** How often this combatant survived to combat end (0.0–1.0) */
|
|
141
|
+
survivalRate: number;
|
|
142
|
+
/** How often this combatant got the final blow on any enemy (0.0–1.0) */
|
|
143
|
+
killRate: number;
|
|
144
|
+
/** Rate of critical hits across all attack actions (0.0–1.0) */
|
|
145
|
+
criticalHitRate: number;
|
|
146
|
+
/** Average hit rate across all runs (0.0–1.0) */
|
|
147
|
+
averageHitRate: number;
|
|
148
|
+
/** Average number of hits per run */
|
|
149
|
+
averageHitsPerRun: number;
|
|
150
|
+
/** Average number of misses per run */
|
|
151
|
+
averageMissesPerRun: number;
|
|
152
|
+
/** Average number of spell slots consumed per run */
|
|
153
|
+
averageSpellSlotsUsed: number;
|
|
154
|
+
/** Most frequently used action type ('attack', 'castSpell', etc.) */
|
|
155
|
+
mostUsedAction: string;
|
|
156
|
+
/** Damage dealt per round histogram for visualization */
|
|
157
|
+
damageDistribution: HistogramBucket[];
|
|
158
|
+
/** HP remaining at combat end histogram for visualization */
|
|
159
|
+
hpRemainingDistribution: HistogramBucket[];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Detail record for a single simulation run.
|
|
163
|
+
* Only populated when `collectDetailedLogs` is true.
|
|
164
|
+
*/
|
|
165
|
+
export interface SimulationRunDetail {
|
|
166
|
+
/** Run index (0-based) */
|
|
167
|
+
runIndex: number;
|
|
168
|
+
/** Seed used for this run */
|
|
169
|
+
seed: string;
|
|
170
|
+
/** Full combat instance with complete action history */
|
|
171
|
+
combat: CombatInstance;
|
|
172
|
+
/** Final combat result */
|
|
173
|
+
result: CombatResult;
|
|
174
|
+
/** Per-combatant metrics for this run */
|
|
175
|
+
metrics: Map<string, CombatantMetrics>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Party and encounter configuration — stored alongside results for context.
|
|
179
|
+
*/
|
|
180
|
+
export interface PartyConfig {
|
|
181
|
+
/** Number of party members */
|
|
182
|
+
memberCount: number;
|
|
183
|
+
/** Average party level */
|
|
184
|
+
averageLevel: number;
|
|
185
|
+
/** Party member names */
|
|
186
|
+
memberNames: string[];
|
|
187
|
+
}
|
|
188
|
+
export interface EncounterConfig {
|
|
189
|
+
/** Number of enemies */
|
|
190
|
+
enemyCount: number;
|
|
191
|
+
/** Average enemy CR */
|
|
192
|
+
averageCR: number;
|
|
193
|
+
/** Enemy names */
|
|
194
|
+
enemyNames: string[];
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Complete results from a Monte Carlo combat simulation.
|
|
198
|
+
*
|
|
199
|
+
* Contains the aggregate summary, per-combatant metrics, and optionally
|
|
200
|
+
* the detailed per-run logs.
|
|
201
|
+
*/
|
|
202
|
+
export interface SimulationResults {
|
|
203
|
+
/** The configuration used for this simulation */
|
|
204
|
+
config: SimulationConfig;
|
|
205
|
+
/** Aggregate statistics across all runs */
|
|
206
|
+
summary: SimulationSummary;
|
|
207
|
+
/** Party configuration snapshot */
|
|
208
|
+
party: PartyConfig;
|
|
209
|
+
/** Encounter configuration snapshot */
|
|
210
|
+
encounter: EncounterConfig;
|
|
211
|
+
/** Per-combatant aggregate metrics keyed by combatant ID */
|
|
212
|
+
perCombatantMetrics: Map<string, CombatantSimulationMetrics>;
|
|
213
|
+
/**
|
|
214
|
+
* When enemyRegeneration is enabled, tracks per-enemy-type statistics
|
|
215
|
+
* aggregated across all runs. Each entry represents a unique enemy name
|
|
216
|
+
* that appeared during the simulation, with occurrence count and stat ranges.
|
|
217
|
+
*/
|
|
218
|
+
enemyGenerationStats?: EnemyGenerationRecord[];
|
|
219
|
+
/** Detailed per-run data (only if collectDetailedLogs was true) */
|
|
220
|
+
runDetails?: SimulationRunDetail[];
|
|
221
|
+
/** Whether the simulation was cancelled before completing all requested runs */
|
|
222
|
+
wasCancelled: boolean;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Aggregated statistics for a unique enemy type across all simulation runs
|
|
226
|
+
* where enemyRegeneration was enabled.
|
|
227
|
+
*/
|
|
228
|
+
export interface EnemyGenerationRecord {
|
|
229
|
+
/** Enemy name (e.g., "Goblin Scout", "Orc Brute") */
|
|
230
|
+
name: string;
|
|
231
|
+
/** Number of runs this enemy appeared in */
|
|
232
|
+
count: number;
|
|
233
|
+
/** HP values observed across runs */
|
|
234
|
+
hpRange: {
|
|
235
|
+
min: number;
|
|
236
|
+
max: number;
|
|
237
|
+
avg: number;
|
|
238
|
+
};
|
|
239
|
+
/** AC values observed across runs */
|
|
240
|
+
acRange: {
|
|
241
|
+
min: number;
|
|
242
|
+
max: number;
|
|
243
|
+
avg: number;
|
|
244
|
+
};
|
|
245
|
+
/** CR values observed across runs */
|
|
246
|
+
crRange: {
|
|
247
|
+
min: number;
|
|
248
|
+
max: number;
|
|
249
|
+
avg: number;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* CombatSimulator — Orchestrates Monte Carlo combat simulations.
|
|
254
|
+
*
|
|
255
|
+
* Runs N independent combat encounters using AI-controlled combatants,
|
|
256
|
+
* each with a unique seeded RNG for full determinism. Aggregates results
|
|
257
|
+
* into statistical summaries and per-combatant metrics.
|
|
258
|
+
*
|
|
259
|
+
* The simulator is stateless between `run()` calls — each call produces
|
|
260
|
+
* a fresh set of results.
|
|
261
|
+
*/
|
|
262
|
+
export declare class CombatSimulator {
|
|
263
|
+
/**
|
|
264
|
+
* Run a Monte Carlo combat simulation.
|
|
265
|
+
*
|
|
266
|
+
* Executes `config.runCount` independent combat simulations, each with
|
|
267
|
+
* a unique seed (`config.baseSeed + runIndex`). Results are aggregated
|
|
268
|
+
* into statistical summaries and per-combatant metrics.
|
|
269
|
+
*
|
|
270
|
+
* @param players - Player character sheets
|
|
271
|
+
* @param enemies - Enemy character sheets
|
|
272
|
+
* @param config - Simulation configuration (run count, seed, AI styles, etc.)
|
|
273
|
+
* @returns Complete simulation results with summary and per-combatant metrics
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```ts
|
|
277
|
+
* const simulator = new CombatSimulator();
|
|
278
|
+
* const results = simulator.run(
|
|
279
|
+
* myParty, myEnemies,
|
|
280
|
+
* {
|
|
281
|
+
* runCount: 1000,
|
|
282
|
+
* baseSeed: 'balance-test-1',
|
|
283
|
+
* aiConfig: { playerStyle: 'normal', enemyStyle: 'aggressive' },
|
|
284
|
+
* onProgress: (done, total) => updateProgressBar(done / total),
|
|
285
|
+
* }
|
|
286
|
+
* );
|
|
287
|
+
* console.log(`Player win rate: ${(results.summary.playerWinRate * 100).toFixed(1)}%`);
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
run(players: CharacterSheet[], enemies: CharacterSheet[], config: SimulationConfig): SimulationResults;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Accumulates per-run results and computes final aggregated statistics.
|
|
294
|
+
*
|
|
295
|
+
* Internal to CombatSimulator — not exported. Processes each run's
|
|
296
|
+
* CombatResult and CombatantMetrics, building up running totals that
|
|
297
|
+
* are finalized into SimulationResults when `getResults()` is called.
|
|
298
|
+
*/
|
|
299
|
+
export declare class SimulationAggregator {
|
|
300
|
+
private readonly config;
|
|
301
|
+
private readonly party;
|
|
302
|
+
private readonly encounter;
|
|
303
|
+
private playerWins;
|
|
304
|
+
private enemyWins;
|
|
305
|
+
private draws;
|
|
306
|
+
private roundsList;
|
|
307
|
+
private roundsOnWin;
|
|
308
|
+
private roundsOnLoss;
|
|
309
|
+
private playerHPPercentRemainingOnWin;
|
|
310
|
+
private playerDeathRounds;
|
|
311
|
+
private enemyDeathRounds;
|
|
312
|
+
private combatantAccumulators;
|
|
313
|
+
private runDetails;
|
|
314
|
+
private enemyGenTracker;
|
|
315
|
+
private readonly combatantIds;
|
|
316
|
+
constructor(config: SimulationConfig, players: CharacterSheet[], enemies: CharacterSheet[]);
|
|
317
|
+
/**
|
|
318
|
+
* Accumulate results from a single simulation run.
|
|
319
|
+
*/
|
|
320
|
+
aggregateRun(runResult: {
|
|
321
|
+
combat: import('../../types/Combat.js').CombatInstance;
|
|
322
|
+
result: CombatResult;
|
|
323
|
+
metrics: Map<string, CombatantMetrics>;
|
|
324
|
+
}, runIndex: number, seed: string): void;
|
|
325
|
+
/**
|
|
326
|
+
* Compute final aggregated results from all accumulated runs.
|
|
327
|
+
*/
|
|
328
|
+
getResults(wasCancelled?: boolean): SimulationResults;
|
|
329
|
+
private average;
|
|
330
|
+
private median;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Accumulates metrics for a single combatant across many simulation runs.
|
|
334
|
+
* Produces CombatantSimulationMetrics when finalized.
|
|
335
|
+
*/
|
|
336
|
+
export declare class CombatantAccumulator {
|
|
337
|
+
readonly id: string;
|
|
338
|
+
readonly name: string;
|
|
339
|
+
readonly side: 'player' | 'enemy';
|
|
340
|
+
private totalDamageDealtSum;
|
|
341
|
+
private totalDamageTakenSum;
|
|
342
|
+
private totalHealingDoneSum;
|
|
343
|
+
private roundsSurvivedSum;
|
|
344
|
+
private survivalCount;
|
|
345
|
+
private killCount;
|
|
346
|
+
private criticalHitSum;
|
|
347
|
+
private hitsSum;
|
|
348
|
+
private missesSum;
|
|
349
|
+
private totalAttackActions;
|
|
350
|
+
private spellsCastSum;
|
|
351
|
+
private actionTypeCounts;
|
|
352
|
+
private damagePerRoundList;
|
|
353
|
+
private hpRemainingList;
|
|
354
|
+
constructor(id: string, name: string, side: 'player' | 'enemy');
|
|
355
|
+
/**
|
|
356
|
+
* Accumulate metrics from a single run.
|
|
357
|
+
*/
|
|
358
|
+
accumulate(m: CombatantMetrics, totalRounds: number): void;
|
|
359
|
+
/**
|
|
360
|
+
* Produce final aggregated metrics for this combatant.
|
|
361
|
+
*/
|
|
362
|
+
toSimulationMetrics(totalRuns: number): CombatantSimulationMetrics;
|
|
363
|
+
private average;
|
|
364
|
+
private median;
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=CombatSimulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CombatSimulator.d.ts","sourceRoot":"","sources":["../../../../src/core/combat/Simulation/CombatSimulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpellCaster - Handles spell casting mechanics
|
|
3
|
+
* Manages spell slots, saving throws, and spell damage
|
|
4
|
+
*/
|
|
5
|
+
import type { Combatant, SpellCastResult, StatusEffectMechanics, DiceRollerAPI } from '../types/Combat';
|
|
6
|
+
import type { Spell } from '../types/Character';
|
|
7
|
+
/**
|
|
8
|
+
* SpellCaster - D&D 5e spell casting system
|
|
9
|
+
*/
|
|
10
|
+
export declare class SpellCaster {
|
|
11
|
+
private diceRoller?;
|
|
12
|
+
constructor(diceRoller?: DiceRollerAPI);
|
|
13
|
+
/**
|
|
14
|
+
* Cast a spell at one or more targets
|
|
15
|
+
* Handles:
|
|
16
|
+
* - Spell slot consumption
|
|
17
|
+
* - Spell attack rolls (if applicable)
|
|
18
|
+
* - Saving throws (if applicable)
|
|
19
|
+
* - Damage calculation
|
|
20
|
+
*/
|
|
21
|
+
castSpell(caster: Combatant, spell: Spell, targets: Combatant[]): SpellCastResult;
|
|
22
|
+
/**
|
|
23
|
+
* Check if caster has a spell slot of the given level
|
|
24
|
+
*/
|
|
25
|
+
hasSpellSlot(caster: Combatant, spellLevel: number): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Consume a spell slot
|
|
28
|
+
*/
|
|
29
|
+
consumeSpellSlot(caster: Combatant, spellLevel: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Restore spell slots (e.g., after long rest)
|
|
32
|
+
* For simplicity, restores ALL spell slots to maximum
|
|
33
|
+
*/
|
|
34
|
+
restoreSpellSlots(caster: Combatant): void;
|
|
35
|
+
/**
|
|
36
|
+
* Calculate spell save DC
|
|
37
|
+
* DC = 8 + spellcasting ability modifier + proficiency bonus
|
|
38
|
+
*/
|
|
39
|
+
calculateSaveDC(caster: Combatant, ability: string): number;
|
|
40
|
+
/**
|
|
41
|
+
* Make a saving throw against a spell
|
|
42
|
+
* Returns true if save succeeds, false if fails
|
|
43
|
+
*
|
|
44
|
+
* @param target - The combatant making the save
|
|
45
|
+
* @param saveAbility - The ability score used for the save (e.g., 'dexterity')
|
|
46
|
+
* @param saveDC - The difficulty class to meet or exceed
|
|
47
|
+
* @param disadvantage - If true, roll with disadvantage (roll twice, take lower)
|
|
48
|
+
*/
|
|
49
|
+
makeSavingThrow(target: Combatant, saveAbility: string, saveDC: number, disadvantage?: boolean): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Get spell slot information for a caster
|
|
52
|
+
*/
|
|
53
|
+
getSpellSlotInfo(caster: Combatant): string;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a spell can be upcast
|
|
56
|
+
* Upcasting is when a spell is cast using a higher-level spell slot
|
|
57
|
+
*/
|
|
58
|
+
canUpcast(caster: Combatant, spell: Spell, targetSlotLevel: number): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Upcast a spell (cast it using a higher spell slot)
|
|
61
|
+
*/
|
|
62
|
+
upcastSpell(caster: Combatant, spell: Spell, targets: Combatant[], slotLevelUsed: number): SpellCastResult;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a spell has a specific tag.
|
|
65
|
+
* Tags are set on enemy InnateSpell objects and used by the AI
|
|
66
|
+
* for spell classification and decision-making.
|
|
67
|
+
*/
|
|
68
|
+
static hasSpellTag(spell: Spell, tag: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get all tags for a spell.
|
|
71
|
+
* Returns an empty array if the spell has no tags.
|
|
72
|
+
*/
|
|
73
|
+
static getSpellTags(spell: Spell): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Check if a spell deals damage.
|
|
76
|
+
* Uses tags (preferred) or falls back to checking damage dice fields.
|
|
77
|
+
*/
|
|
78
|
+
static isDamageSpell(spell: Spell): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Check if a spell requires concentration.
|
|
81
|
+
*/
|
|
82
|
+
static requiresConcentration(spell: Spell): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Check if a spell has an area-of-effect component.
|
|
85
|
+
*/
|
|
86
|
+
static isAOESpell(spell: Spell): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Check if a spell targets multiple creatures.
|
|
89
|
+
*/
|
|
90
|
+
static isMultiTargetSpell(spell: Spell): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Check if a spell can be used as a bonus action.
|
|
93
|
+
*/
|
|
94
|
+
static isBonusActionSpell(spell: Spell): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Check if a spell can only target allies (healing, buffs).
|
|
97
|
+
*/
|
|
98
|
+
static isAllySpell(spell: Spell): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Check if a spell only targets the caster.
|
|
101
|
+
*/
|
|
102
|
+
static isSelfSpell(spell: Spell): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Get the tag-to-status-effect mapping.
|
|
105
|
+
* Used by tests and the AI to understand which tags produce which effects.
|
|
106
|
+
*/
|
|
107
|
+
static getStatusEffectTags(): Readonly<Record<string, {
|
|
108
|
+
name: string;
|
|
109
|
+
requiresConcentration: boolean;
|
|
110
|
+
mechanicalEffects?: StatusEffectMechanics;
|
|
111
|
+
}>>;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=SpellCaster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpellCaster.d.ts","sourceRoot":"","sources":["../../../src/core/combat/SpellCaster.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAgB,qBAAqB,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAoFhD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEvB,UAAU,CAAC,EAAE,aAAa;IAGtC;;;;;;;OAOG;IACH,SAAS,CACP,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,EAAE,GACnB,eAAe;IAuIlB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAY5D;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAgB7D;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI1C;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAQ3D;;;;;;;;OAQG;IACH,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO;IA2B/G;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAgB3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO;IAS5E;;OAEG;IACH,WAAW,CACT,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,EAAE,EACpB,aAAa,EAAE,MAAM,GACpB,eAAe;IA4BlB;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAItD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAI3C;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAK3C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAInD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIxC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIzC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACpD,IAAI,EAAE,MAAM,CAAC;QACb,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;KAC3C,CAAC,CAAC;CAGJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sensor Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Centralized configuration for all sensor modules including:
|
|
5
|
+
* - Environmental sensors (geolocation, weather, motion)
|
|
6
|
+
* - Gaming platform sensors (Steam)
|
|
7
|
+
* - XP modifier calculation
|
|
8
|
+
* - Caching and retry behavior
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* import { SensorConfig, mergeConfig, DEFAULT_SENSOR_CONFIG } from './core/config';
|
|
12
|
+
*
|
|
13
|
+
* // Use defaults
|
|
14
|
+
* const config = mergeConfig();
|
|
15
|
+
*
|
|
16
|
+
* // Override specific values
|
|
17
|
+
* const customConfig = mergeConfig({
|
|
18
|
+
* weather: { cacheTTL: 15 * 60 * 1000 }, // 15 minutes
|
|
19
|
+
* xpModifier: { maxModifier: 2.5 }
|
|
20
|
+
* });
|
|
21
|
+
*/
|
|
22
|
+
export type { SensorConfig, CacheConfig, GeolocationSensorConfig, WeatherSensorConfig, GamingSensorConfig, XPModifierConfig, RetryConfig, } from './sensorConfig.js';
|
|
23
|
+
export { DEFAULT_SENSOR_CONFIG, loadConfigFromEnv, mergeConfig, } from './sensorConfig.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,YAAY,EACR,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,GACd,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progression System Configuration
|
|
3
|
+
*
|
|
4
|
+
* Centralized configuration for the progression system including:
|
|
5
|
+
* - XP calculation settings
|
|
6
|
+
* - Stat increase settings
|
|
7
|
+
* - Level up settings
|
|
8
|
+
* - Rhythm game XP settings
|
|
9
|
+
*
|
|
10
|
+
* Follows the pattern of sensorConfig.ts for consistency
|
|
11
|
+
*/
|
|
12
|
+
import type { StatIncreaseConfig } from '../types/Progression.js';
|
|
13
|
+
import type { RhythmXPConfig } from '../types/RhythmXP.js';
|
|
14
|
+
/**
|
|
15
|
+
* Complete progression system configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface ProgressionConfig {
|
|
18
|
+
/** XP calculation configuration */
|
|
19
|
+
xp: {
|
|
20
|
+
level_thresholds: number[];
|
|
21
|
+
xp_per_second: number;
|
|
22
|
+
xp_per_track_completion: number;
|
|
23
|
+
activity_bonuses: {
|
|
24
|
+
stationary: number;
|
|
25
|
+
walking: number;
|
|
26
|
+
running: number;
|
|
27
|
+
driving: number;
|
|
28
|
+
night_time: number;
|
|
29
|
+
extreme_weather: number;
|
|
30
|
+
high_altitude: number;
|
|
31
|
+
rhythm_game_base: number;
|
|
32
|
+
rhythm_game_combo: number;
|
|
33
|
+
rhythm_game_groove: number;
|
|
34
|
+
};
|
|
35
|
+
track_mastery_threshold: number;
|
|
36
|
+
mastery_bonus_xp: number;
|
|
37
|
+
/** Rhythm game XP configuration (optional) */
|
|
38
|
+
rhythmXP?: Partial<RhythmXPConfig>;
|
|
39
|
+
};
|
|
40
|
+
/** Stat increase configuration */
|
|
41
|
+
statIncrease: Partial<StatIncreaseConfig>;
|
|
42
|
+
/** Level up configuration */
|
|
43
|
+
levelUp: {
|
|
44
|
+
/** Use average HP instead of rolling (default: false) */
|
|
45
|
+
useAverageHP: boolean;
|
|
46
|
+
/** Allow manual selection of stats during level up (default: true) */
|
|
47
|
+
allowManualStatSelection: boolean;
|
|
48
|
+
/** Show level up notifications (default: true) */
|
|
49
|
+
showNotifications: boolean;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Default progression configuration
|
|
54
|
+
*/
|
|
55
|
+
export declare const DEFAULT_PROGRESSION_CONFIG: Required<ProgressionConfig>;
|
|
56
|
+
/**
|
|
57
|
+
* Merge user config with defaults
|
|
58
|
+
*
|
|
59
|
+
* @param userConfig - Partial configuration to override defaults
|
|
60
|
+
* @returns Merged configuration
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const config = mergeProgressionConfig({
|
|
65
|
+
* statIncrease: {
|
|
66
|
+
* strategy: 'dnD5e_smart',
|
|
67
|
+
* autoApply: true
|
|
68
|
+
* }
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function mergeProgressionConfig(userConfig?: Partial<ProgressionConfig>): Required<ProgressionConfig>;
|
|
73
|
+
//# sourceMappingURL=progressionConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressionConfig.d.ts","sourceRoot":"","sources":["../../../src/core/config/progressionConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,mCAAmC;IACnC,EAAE,EAAE;QACA,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB,EAAE;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;YACnB,eAAe,EAAE,MAAM,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC;YAEtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,kBAAkB,EAAE,MAAM,CAAC;SAC9B,CAAC;QACF,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,8CAA8C;QAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACtC,CAAC;IAEF,kCAAkC;IAClC,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE1C,6BAA6B;IAC7B,OAAO,EAAE;QACL,yDAAyD;QACzD,YAAY,EAAE,OAAO,CAAC;QAEtB,sEAAsE;QACtE,wBAAwB,EAAE,OAAO,CAAC;QAElC,kDAAkD;QAClD,iBAAiB,EAAE,OAAO,CAAC;KAC9B,CAAC;CACL;AAUD;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,iBAAiB,CAiClE,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAClC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACxC,QAAQ,CAAC,iBAAiB,CAAC,CAuB7B"}
|