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,439 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D&D 5e data constants
|
|
3
|
+
*/
|
|
4
|
+
import type { Race, Class, Ability, Skill } from '../core/types/Character.js';
|
|
5
|
+
import type { Spell, SpellPrerequisite } from '../core/spells/SpellTypes.js';
|
|
6
|
+
import type { EquipmentType, EquipmentRarity, EquipmentProperty, EquipmentMiniFeature, BoxContents } from '../core/types/Equipment.js';
|
|
7
|
+
export type { Spell, SpellPrerequisite };
|
|
8
|
+
export type { RaceDataEntry, CustomRaceDataEntry } from '../constants/DefaultRaces.js';
|
|
9
|
+
export type { ClassSpellListData } from '../constants/DefaultSpells.js';
|
|
10
|
+
/**
|
|
11
|
+
* Class data entry interface
|
|
12
|
+
*
|
|
13
|
+
* Defines the structure for class data including primary ability, hit die,
|
|
14
|
+
* saving throws, spellcasting, skills, expertise, and optional audio preferences.
|
|
15
|
+
*
|
|
16
|
+
* ## Template-Based Class System
|
|
17
|
+
*
|
|
18
|
+
* This interface supports creating custom classes that extend (inherit from) existing
|
|
19
|
+
* D&D 5e base classes through the `baseClass` property. This enables rapid creation
|
|
20
|
+
* of specialized classes (e.g., "Necromancer" extending "Wizard") without duplicating
|
|
21
|
+
* all base class properties.
|
|
22
|
+
*
|
|
23
|
+
* ### How Template Inheritance Works
|
|
24
|
+
*
|
|
25
|
+
* When `baseClass` is specified in a custom class registration:
|
|
26
|
+
*
|
|
27
|
+
* 1. **Base class lookup**: The system retrieves the base class data from CLASS_DATA
|
|
28
|
+
* 2. **Property merging**: Base class properties are merged with custom class properties
|
|
29
|
+
* 3. **Override behavior**: Custom properties take precedence over base class properties
|
|
30
|
+
* 4. **Special handling for available_skills**: Custom skill list replaces base skill list
|
|
31
|
+
* (not merged), allowing complete customization of class skills
|
|
32
|
+
*
|
|
33
|
+
* ### Example Usage
|
|
34
|
+
*
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { ExtensionManager } from './core/extensions/ExtensionManager.js';
|
|
37
|
+
*
|
|
38
|
+
* const manager = ExtensionManager.getInstance();
|
|
39
|
+
*
|
|
40
|
+
* // Register a custom "Necromancer" class based on Wizard
|
|
41
|
+
* manager.register('classes.data', [{
|
|
42
|
+
* name: 'Necromancer',
|
|
43
|
+
* baseClass: 'Wizard', // Inherits from Wizard by default
|
|
44
|
+
* primary_ability: 'INT', // Same as Wizard (could omit to inherit)
|
|
45
|
+
* hit_die: 8, // Same as Wizard (could omit to inherit)
|
|
46
|
+
* saving_throws: ['INT', 'WIS'], // Same as Wizard (could omit to inherit)
|
|
47
|
+
* is_spellcaster: true, // Same as Wizard (could omit to inherit)
|
|
48
|
+
* skill_count: 2, // Same as Wizard (could omit to inherit)
|
|
49
|
+
* // Override available_skills to include custom skill
|
|
50
|
+
* available_skills: ['arcana', 'medicine', 'religion', 'necromancy'],
|
|
51
|
+
* has_expertise: false // Same as Wizard (could omit to inherit)
|
|
52
|
+
* }]);
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* ### Complete Custom Classes
|
|
56
|
+
*
|
|
57
|
+
* Classes without `baseClass` are standalone and must specify all required properties:
|
|
58
|
+
*
|
|
59
|
+
* ```typescript
|
|
60
|
+
* manager.register('classes.data', [{
|
|
61
|
+
* name: 'Runecaster',
|
|
62
|
+
* // No baseClass - must specify all properties
|
|
63
|
+
* primary_ability: 'WIS',
|
|
64
|
+
* hit_die: 8,
|
|
65
|
+
* saving_throws: ['WIS', 'CON'],
|
|
66
|
+
* is_spellcaster: true,
|
|
67
|
+
* skill_count: 3,
|
|
68
|
+
* available_skills: ['arcana', 'nature', 'religion', 'insight', 'medicine'],
|
|
69
|
+
* has_expertise: false
|
|
70
|
+
* }]);
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* ### Integration with Other Extension Categories
|
|
74
|
+
*
|
|
75
|
+
* Custom classes can be further customized with:
|
|
76
|
+
*
|
|
77
|
+
* - **Custom skills**: Register via `skills.${ABILITY}` categories
|
|
78
|
+
* - **Custom features**: Register via `classFeatures.${ClassName}` categories
|
|
79
|
+
* - **Custom spell lists**: Register via `classSpellLists.${ClassName}` categories
|
|
80
|
+
* - **Custom spell slots**: Register via `classSpellSlots` category
|
|
81
|
+
* - **Custom equipment**: Register via `classStartingEquipment.${ClassName}` categories
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
export interface ClassDataEntry {
|
|
85
|
+
/** Class name (required for custom classes, optional for built-in classes where the key serves as the name) */
|
|
86
|
+
name?: string;
|
|
87
|
+
/** Primary ability score for this class */
|
|
88
|
+
primary_ability: Ability;
|
|
89
|
+
/** Hit die size for this class */
|
|
90
|
+
hit_die: number;
|
|
91
|
+
/** Saving throw proficiencies */
|
|
92
|
+
saving_throws: Ability[];
|
|
93
|
+
/** Whether this class can cast spells */
|
|
94
|
+
is_spellcaster: boolean;
|
|
95
|
+
/** Number of skills to choose from */
|
|
96
|
+
skill_count: number;
|
|
97
|
+
/** Available skills for this class (includes custom skills) */
|
|
98
|
+
available_skills: string[];
|
|
99
|
+
/** Whether this class has expertise */
|
|
100
|
+
has_expertise: boolean;
|
|
101
|
+
/** Number of expertise choices (if has_expertise is true) */
|
|
102
|
+
expertise_count?: number;
|
|
103
|
+
/**
|
|
104
|
+
* For template-based classes: the base class to inherit from
|
|
105
|
+
*
|
|
106
|
+
* When specified, the custom class will inherit properties from the base class,
|
|
107
|
+
* with custom properties overriding inherited ones. This enables rapid creation
|
|
108
|
+
* of specialized classes (e.g., "Necromancer" extending "Wizard").
|
|
109
|
+
*
|
|
110
|
+
* The base class must be a valid D&D 5e class name (one of: Barbarian, Bard,
|
|
111
|
+
* Cleric, Druid, Fighter, Monk, Paladin, Ranger, Rogue, Sorcerer, Warlock, Wizard).
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* // Necromancer extends Wizard
|
|
115
|
+
* baseClass: 'Wizard'
|
|
116
|
+
*/
|
|
117
|
+
baseClass?: Class;
|
|
118
|
+
/** Optional: Audio preferences for class affinity calculation */
|
|
119
|
+
audio_preferences?: {
|
|
120
|
+
primary: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
|
|
121
|
+
secondary?: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
|
|
122
|
+
tertiary?: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
|
|
123
|
+
bass?: number;
|
|
124
|
+
treble?: number;
|
|
125
|
+
mid?: number;
|
|
126
|
+
amplitude?: number;
|
|
127
|
+
};
|
|
128
|
+
/** Optional: User-facing description of this class */
|
|
129
|
+
description?: string;
|
|
130
|
+
/** Optional icon URL for small UI display */
|
|
131
|
+
icon?: string;
|
|
132
|
+
/** Optional image URL for larger display */
|
|
133
|
+
image?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get class data (default or custom)
|
|
137
|
+
*
|
|
138
|
+
* This helper function retrieves class data from either:
|
|
139
|
+
* 1. The default CLASS_DATA constant (for built-in classes)
|
|
140
|
+
* 2. The ExtensionManager (for custom classes registered via 'classes.data')
|
|
141
|
+
*
|
|
142
|
+
* For template-based custom classes (those with a baseClass property),
|
|
143
|
+
* the base class data is merged with custom data, with custom properties
|
|
144
|
+
* taking precedence.
|
|
145
|
+
*
|
|
146
|
+
* @param className - The class name to look up
|
|
147
|
+
* @returns Class data entry or undefined if not found
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* // Get default class data
|
|
151
|
+
* const wizardData = getClassData('Wizard');
|
|
152
|
+
* console.log(wizardData.hit_die); // 6
|
|
153
|
+
*
|
|
154
|
+
* // Get custom class data (if registered via ExtensionManager)
|
|
155
|
+
* const necromancerData = getClassData('Necromancer');
|
|
156
|
+
* if (necromancerData) {
|
|
157
|
+
* console.log(necromancerData.baseClass); // 'Wizard'
|
|
158
|
+
* console.log(necromancerData.primary_ability); // 'INT'
|
|
159
|
+
* }
|
|
160
|
+
*/
|
|
161
|
+
/**
|
|
162
|
+
* Get class data (default or custom) - asynchronous version
|
|
163
|
+
*
|
|
164
|
+
* This helper function retrieves class data from either:
|
|
165
|
+
* 1. The default CLASS_DATA constant (for built-in classes)
|
|
166
|
+
* 2. The ExtensionManager (for custom classes registered via 'classes.data')
|
|
167
|
+
*
|
|
168
|
+
* ## Template-Based Class Inheritance
|
|
169
|
+
*
|
|
170
|
+
* For template-based custom classes (those with a baseClass property),
|
|
171
|
+
* the base class data is merged with custom data following these rules:
|
|
172
|
+
*
|
|
173
|
+
* 1. **Base class lookup**: Retrieves the base class data from CLASS_DATA
|
|
174
|
+
* 2. **Shallow merge**: Base properties are spread first, then custom properties
|
|
175
|
+
* 3. **Override behavior**: Custom properties take precedence over base properties
|
|
176
|
+
* 4. **Special handling for available_skills**: The custom skill list completely replaces
|
|
177
|
+
* the base skill list (not merged), allowing complete customization
|
|
178
|
+
*
|
|
179
|
+
* The merge logic is:
|
|
180
|
+
* ```typescript
|
|
181
|
+
* {
|
|
182
|
+
* ...baseData, // Base class properties first
|
|
183
|
+
* ...classEntry, // Custom properties override base
|
|
184
|
+
* available_skills: classEntry.available_skills || baseData.available_skills
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* ### Usage Flow for Custom Classes
|
|
189
|
+
*
|
|
190
|
+
* 1. Register class data via `ExtensionManager.register('classes.data', [...])`
|
|
191
|
+
* 2. Register class name via `ExtensionManager.register('classes', [asClass('Necromancer')])`
|
|
192
|
+
* 3. Optionally register custom features, skills, spells, equipment
|
|
193
|
+
* 4. Use `CharacterGenerator.generate()` with `forceClass: asClass('Necromancer')`
|
|
194
|
+
*
|
|
195
|
+
* @param className - The class name to look up
|
|
196
|
+
* @returns Class data entry or undefined if not found
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* // Get default class data
|
|
200
|
+
* const wizardData = await getClassDataAsync('Wizard');
|
|
201
|
+
* console.log(wizardData.hit_die); // 6
|
|
202
|
+
*
|
|
203
|
+
* // Get custom class data (if registered via ExtensionManager)
|
|
204
|
+
* const necromancerData = await getClassDataAsync('Necromancer');
|
|
205
|
+
* if (necromancerData) {
|
|
206
|
+
* console.log(necromancerData.baseClass); // 'Wizard'
|
|
207
|
+
* console.log(necromancerData.primary_ability); // 'INT' (inherited from Wizard)
|
|
208
|
+
* console.log(necromancerData.available_skills); // ['arcana', 'medicine', 'religion', 'necromancy'] (custom)
|
|
209
|
+
* }
|
|
210
|
+
*/
|
|
211
|
+
export declare function getClassDataAsync(className: string): Promise<ClassDataEntry | undefined>;
|
|
212
|
+
/**
|
|
213
|
+
* Get class data (default or custom)
|
|
214
|
+
*
|
|
215
|
+
* This helper function retrieves class data from either:
|
|
216
|
+
* 1. The default CLASS_DATA constant (for built-in classes)
|
|
217
|
+
* 2. The ExtensionManager (for custom classes registered via 'classes.data')
|
|
218
|
+
*
|
|
219
|
+
* ## Template-Based Class Inheritance
|
|
220
|
+
*
|
|
221
|
+
* For template-based custom classes (those with a baseClass property),
|
|
222
|
+
* the base class data is merged with custom data following these rules:
|
|
223
|
+
*
|
|
224
|
+
* 1. **Base class lookup**: Retrieves the base class data from CLASS_DATA
|
|
225
|
+
* 2. **Shallow merge**: Base properties are spread first, then custom properties
|
|
226
|
+
* 3. **Override behavior**: Custom properties take precedence over base properties
|
|
227
|
+
* 4. **Special handling for available_skills**: The custom skill list completely replaces
|
|
228
|
+
* the base skill list (not merged), allowing complete customization
|
|
229
|
+
*
|
|
230
|
+
* The merge logic is:
|
|
231
|
+
* ```typescript
|
|
232
|
+
* {
|
|
233
|
+
* ...baseData, // Base class properties first
|
|
234
|
+
* ...classEntry, // Custom properties override base
|
|
235
|
+
* available_skills: classEntry.available_skills || baseData.available_skills
|
|
236
|
+
* }
|
|
237
|
+
* ```
|
|
238
|
+
*
|
|
239
|
+
* ### Usage Flow for Custom Classes
|
|
240
|
+
*
|
|
241
|
+
* 1. Register class data via `ExtensionManager.register('classes.data', [...])`
|
|
242
|
+
* 2. Register class name via `ExtensionManager.register('classes', [asClass('Necromancer')])`
|
|
243
|
+
* 3. Optionally register custom features, skills, spells, equipment
|
|
244
|
+
* 4. Use `CharacterGenerator.generate()` with `forceClass: asClass('Necromancer')`
|
|
245
|
+
*
|
|
246
|
+
* @param className - The class name to look up
|
|
247
|
+
* @returns Class data entry or undefined if not found
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* // Get default class data
|
|
251
|
+
* const wizardData = getClassData('Wizard');
|
|
252
|
+
* console.log(wizardData.hit_die); // 6
|
|
253
|
+
*
|
|
254
|
+
* // Get custom class data (if registered via ExtensionManager)
|
|
255
|
+
* const necromancerData = getClassData('Necromancer');
|
|
256
|
+
* if (necromancerData) {
|
|
257
|
+
* console.log(necromancerData.baseClass); // 'Wizard'
|
|
258
|
+
* console.log(necromancerData.primary_ability); // 'INT' (inherited from Wizard)
|
|
259
|
+
* console.log(necromancerData.available_skills); // ['arcana', 'medicine', 'religion', 'necromancy'] (custom)
|
|
260
|
+
* }
|
|
261
|
+
*/
|
|
262
|
+
export declare function getClassData(className: string): ClassDataEntry | undefined;
|
|
263
|
+
export declare const XP_THRESHOLDS: Record<number, number>;
|
|
264
|
+
export declare const PROFICIENCY_BONUS: Record<number, number>;
|
|
265
|
+
export declare const ALL_RACES: Race[];
|
|
266
|
+
/**
|
|
267
|
+
* Centralized naming data for character name generation
|
|
268
|
+
* Contains adjectives, descriptors, and word pools for various naming formats
|
|
269
|
+
*/
|
|
270
|
+
export declare const NAMING_DATA: {
|
|
271
|
+
adjectives: {
|
|
272
|
+
techno: {
|
|
273
|
+
bass: string[];
|
|
274
|
+
treble: string[];
|
|
275
|
+
mid: string[];
|
|
276
|
+
quiet: string[];
|
|
277
|
+
loud: string[];
|
|
278
|
+
};
|
|
279
|
+
rock: {
|
|
280
|
+
bass: string[];
|
|
281
|
+
treble: string[];
|
|
282
|
+
mid: string[];
|
|
283
|
+
quiet: string[];
|
|
284
|
+
loud: string[];
|
|
285
|
+
};
|
|
286
|
+
metal: {
|
|
287
|
+
bass: string[];
|
|
288
|
+
treble: string[];
|
|
289
|
+
mid: string[];
|
|
290
|
+
quiet: string[];
|
|
291
|
+
loud: string[];
|
|
292
|
+
};
|
|
293
|
+
ambient: {
|
|
294
|
+
bass: string[];
|
|
295
|
+
treble: string[];
|
|
296
|
+
mid: string[];
|
|
297
|
+
quiet: string[];
|
|
298
|
+
loud: string[];
|
|
299
|
+
};
|
|
300
|
+
classical: {
|
|
301
|
+
bass: string[];
|
|
302
|
+
treble: string[];
|
|
303
|
+
mid: string[];
|
|
304
|
+
quiet: string[];
|
|
305
|
+
loud: string[];
|
|
306
|
+
};
|
|
307
|
+
jazz: {
|
|
308
|
+
bass: string[];
|
|
309
|
+
treble: string[];
|
|
310
|
+
mid: string[];
|
|
311
|
+
quiet: string[];
|
|
312
|
+
loud: string[];
|
|
313
|
+
};
|
|
314
|
+
'hip hop': {
|
|
315
|
+
bass: string[];
|
|
316
|
+
treble: string[];
|
|
317
|
+
mid: string[];
|
|
318
|
+
quiet: string[];
|
|
319
|
+
loud: string[];
|
|
320
|
+
};
|
|
321
|
+
pop: {
|
|
322
|
+
bass: string[];
|
|
323
|
+
treble: string[];
|
|
324
|
+
mid: string[];
|
|
325
|
+
quiet: string[];
|
|
326
|
+
loud: string[];
|
|
327
|
+
};
|
|
328
|
+
electronic: {
|
|
329
|
+
bass: string[];
|
|
330
|
+
treble: string[];
|
|
331
|
+
mid: string[];
|
|
332
|
+
quiet: string[];
|
|
333
|
+
loud: string[];
|
|
334
|
+
};
|
|
335
|
+
default: {
|
|
336
|
+
bass: string[];
|
|
337
|
+
treble: string[];
|
|
338
|
+
mid: string[];
|
|
339
|
+
quiet: string[];
|
|
340
|
+
loud: string[];
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
descriptors: string[];
|
|
344
|
+
classAspects: Record<Class, string[]>;
|
|
345
|
+
prefixes: string[];
|
|
346
|
+
suffixes: string[];
|
|
347
|
+
occupations: string[];
|
|
348
|
+
realms: string[];
|
|
349
|
+
subtitlePrefixes: string[];
|
|
350
|
+
};
|
|
351
|
+
export declare const SKILL_ABILITY_MAP: Record<Skill, Ability>;
|
|
352
|
+
/**
|
|
353
|
+
* Equipment data structure
|
|
354
|
+
*
|
|
355
|
+
* This interface now uses the same types as EnhancedEquipment for consistency.
|
|
356
|
+
* The 'source' field is optional for backward compatibility but defaults to 'default'.
|
|
357
|
+
*/
|
|
358
|
+
export interface Equipment {
|
|
359
|
+
name: string;
|
|
360
|
+
type: EquipmentType;
|
|
361
|
+
rarity: EquipmentRarity;
|
|
362
|
+
weight: number;
|
|
363
|
+
properties?: EquipmentProperty[];
|
|
364
|
+
grantsFeatures?: Array<string | EquipmentMiniFeature>;
|
|
365
|
+
grantsSkills?: Array<{
|
|
366
|
+
skillId: string;
|
|
367
|
+
level: 'proficient' | 'expertise';
|
|
368
|
+
}>;
|
|
369
|
+
grantsSpells?: Array<{
|
|
370
|
+
spellId: string;
|
|
371
|
+
level?: number;
|
|
372
|
+
uses?: number;
|
|
373
|
+
recharge?: string;
|
|
374
|
+
}>;
|
|
375
|
+
damage?: {
|
|
376
|
+
dice: string;
|
|
377
|
+
damageType: string;
|
|
378
|
+
versatile?: string;
|
|
379
|
+
};
|
|
380
|
+
acBonus?: number;
|
|
381
|
+
weaponProperties?: string[];
|
|
382
|
+
spawnWeight?: number;
|
|
383
|
+
templateId?: string;
|
|
384
|
+
source?: 'default' | 'custom';
|
|
385
|
+
tags?: string[];
|
|
386
|
+
/** Optional: User-facing description of this equipment */
|
|
387
|
+
description?: string;
|
|
388
|
+
/** Optional icon URL for small UI display */
|
|
389
|
+
icon?: string;
|
|
390
|
+
/** Optional image URL for larger display */
|
|
391
|
+
image?: string;
|
|
392
|
+
/** Box contents (only for type: 'box') */
|
|
393
|
+
boxContents?: BoxContents;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Get spell list for a class (default or custom)
|
|
397
|
+
*
|
|
398
|
+
* First checks the default CLASS_SPELL_LISTS constant, then checks
|
|
399
|
+
* the ExtensionManager for custom spell lists registered via 'classSpellLists.${ClassName}'.
|
|
400
|
+
*
|
|
401
|
+
* @param className - The class name to get spell list for
|
|
402
|
+
* @returns The spell list with cantrips and spells_by_level, or undefined if not found
|
|
403
|
+
*/
|
|
404
|
+
export declare function getClassSpellList(className: string): {
|
|
405
|
+
cantrips: string[];
|
|
406
|
+
spells_by_level: Record<number, string[]>;
|
|
407
|
+
} | undefined;
|
|
408
|
+
/**
|
|
409
|
+
* Get spell slots for a class at a specific level (default or custom)
|
|
410
|
+
*
|
|
411
|
+
* First checks the default SPELL_SLOTS_BY_CLASS constant, then checks
|
|
412
|
+
* the ExtensionManager for custom spell slot progressions registered via 'classSpellSlots'.
|
|
413
|
+
*
|
|
414
|
+
* The 'classSpellSlots' category expects an array of ClassSpellSlotsData objects,
|
|
415
|
+
* each containing a class name and a slots_by_level record mapping character levels
|
|
416
|
+
* to spell slot counts per spell level.
|
|
417
|
+
*
|
|
418
|
+
* @param className - The class name to get spell slots for
|
|
419
|
+
* @param characterLevel - The character level (1-20)
|
|
420
|
+
* @returns Record mapping spell level (1-9) to slot count, or undefined if not found
|
|
421
|
+
*
|
|
422
|
+
* @example
|
|
423
|
+
* // Register custom spell slots for a "Necromancer" class
|
|
424
|
+
* manager.register('classSpellSlots', [{
|
|
425
|
+
* class: 'Necromancer',
|
|
426
|
+
* slots_by_level: {
|
|
427
|
+
* 1: { 1: 2 },
|
|
428
|
+
* 2: { 1: 3 },
|
|
429
|
+
* 3: { 1: 4, 2: 2 },
|
|
430
|
+
* // ... more levels
|
|
431
|
+
* }
|
|
432
|
+
* }]);
|
|
433
|
+
*/
|
|
434
|
+
export declare function getSpellSlotsForClass(className: string, characterLevel: number): Record<number, number> | undefined;
|
|
435
|
+
/** Minimum listen count to achieve track mastery */
|
|
436
|
+
export declare const MASTERY_THRESHOLD = 10;
|
|
437
|
+
/** Bonus XP awarded for mastered tracks */
|
|
438
|
+
export declare const MASTERY_BONUS_XP = 50;
|
|
439
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Equipment Constants Library
|
|
3
|
+
*
|
|
4
|
+
* This file consolidates all equipment-related constants into a single location,
|
|
5
|
+
* providing a single source of truth for equipment data throughout the Playlist Data Engine.
|
|
6
|
+
*
|
|
7
|
+
* Contents:
|
|
8
|
+
* - DEFAULT_EQUIPMENT: Base equipment database (re-exported from src/constants/DefaultEquipment.ts)
|
|
9
|
+
* - CLASS_STARTING_EQUIPMENT: Starting equipment by class (D&D 5e standard)
|
|
10
|
+
* - ITEM_CREATION_TEMPLATES: Templates for enchanting base equipment (9 templates)
|
|
11
|
+
* - ENCHANTMENT_LIBRARY: All enchantments and curses organized by category
|
|
12
|
+
*
|
|
13
|
+
* Access Patterns:
|
|
14
|
+
* - Direct access: Import specific constants (e.g., `DEFAULT_EQUIPMENT`, `CLASS_STARTING_EQUIPMENT`)
|
|
15
|
+
* - Enchantment categories: `ENCHANTMENT_LIBRARY.WEAPON_ENCHANTMENTS.plusOne`
|
|
16
|
+
* - Flat enchantments: `ENCHANTMENT_LIBRARY.ALL_ENCHANTMENTS.plusOne`
|
|
17
|
+
* - Helper function: `getClassStartingEquipment('Fighter')` - checks both default and custom
|
|
18
|
+
*
|
|
19
|
+
* @module utils/equipmentConstants
|
|
20
|
+
*/
|
|
21
|
+
import type { Equipment } from './constants.js';
|
|
22
|
+
import type { EquipmentModification, EquipmentMiniFeature, EquipmentType, EquipmentRarity, EquipmentProperty, EquipmentPropertyType, EquipmentCondition, EnhancedEquipment } from '../core/types/Equipment.js';
|
|
23
|
+
export type { Equipment, EquipmentModification, EquipmentMiniFeature, EquipmentType, EquipmentRarity, EquipmentProperty, EquipmentPropertyType, EquipmentCondition, EnhancedEquipment };
|
|
24
|
+
/**
|
|
25
|
+
* Starting equipment by class - D&D 5e standard
|
|
26
|
+
*/
|
|
27
|
+
export declare const CLASS_STARTING_EQUIPMENT: Record<string, {
|
|
28
|
+
weapons: string[];
|
|
29
|
+
armor: string[];
|
|
30
|
+
items: string[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Get starting equipment for a class (default or custom)
|
|
34
|
+
*
|
|
35
|
+
* First checks the default CLASS_STARTING_EQUIPMENT constant, then checks
|
|
36
|
+
* the ExtensionManager for custom equipment registered via 'classStartingEquipment.${ClassName}'.
|
|
37
|
+
*
|
|
38
|
+
* The 'classStartingEquipment.${ClassName}' category expects an array of ClassStartingEquipmentData objects,
|
|
39
|
+
* each containing a class name and the equipment (weapons, armor, items).
|
|
40
|
+
*
|
|
41
|
+
* This function is used by EquipmentGenerator during character creation.
|
|
42
|
+
*
|
|
43
|
+
* @param className - The class name to get starting equipment for
|
|
44
|
+
* @returns Object with weapons, armor, and items arrays, or undefined if not found
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* // Register custom starting equipment for a "Necromancer" class
|
|
48
|
+
* manager.register('classStartingEquipment.Necromancer', [{
|
|
49
|
+
* class: 'Necromancer',
|
|
50
|
+
* weapons: ['Bone Staff', 'Dagger'],
|
|
51
|
+
* armor: ['No Armor'],
|
|
52
|
+
* items: ['Arcane Focus', 'Skeleton Key', 'Dark Robes']
|
|
53
|
+
* }]);
|
|
54
|
+
*/
|
|
55
|
+
export declare function getClassStartingEquipment(className: string): {
|
|
56
|
+
weapons: string[];
|
|
57
|
+
armor: string[];
|
|
58
|
+
items: string[];
|
|
59
|
+
} | undefined;
|
|
60
|
+
//# sourceMappingURL=equipmentConstants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equipmentConstants.d.ts","sourceRoot":"","sources":["../../src/utils/equipmentConstants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMhD,OAAO,KAAK,EACR,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACpB,MAAM,4BAA4B,CAAC;AAMpC,YAAY,EACR,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACpB,CAAC;AAYF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB,CA6DA,CAAC;AAgBF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,SAAS,CA2BZ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic seed generation using MurmurHash
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate a deterministic seed from blockchain data
|
|
6
|
+
* @param chainName - Blockchain name (e.g., "ethereum", "polygon")
|
|
7
|
+
* @param tokenAddress - Contract address
|
|
8
|
+
* @param tokenId - Token ID
|
|
9
|
+
* @returns Deterministic seed string
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateSeed(chainName: string, tokenAddress: string, tokenId: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Hash a seed string to a float between 0.0 and 1.0
|
|
14
|
+
* @param seed - Seed string
|
|
15
|
+
* @returns Float between 0.0 and 1.0
|
|
16
|
+
*/
|
|
17
|
+
export declare function hashSeedToFloat(seed: string): number;
|
|
18
|
+
/**
|
|
19
|
+
* Hash a seed string to an integer within a range
|
|
20
|
+
* @param seed - Seed string
|
|
21
|
+
* @param min - Minimum value (inclusive)
|
|
22
|
+
* @param max - Maximum value (exclusive)
|
|
23
|
+
* @returns Integer in range [min, max)
|
|
24
|
+
*/
|
|
25
|
+
export declare function hashSeedToInt(seed: string, min: number, max: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Create a derived seed by appending a suffix
|
|
28
|
+
* @param baseSeed - Base seed string
|
|
29
|
+
* @param suffix - Suffix to append
|
|
30
|
+
* @returns New seed string
|
|
31
|
+
*/
|
|
32
|
+
export declare function deriveSeed(baseSeed: string, suffix: string): string;
|
|
33
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|