blacktrigram 0.7.43 → 0.7.45
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/lib/audio/AudioManager.d.ts +26 -0
- package/lib/audio/AudioManager.d.ts.map +1 -1
- package/lib/audio/AudioManager.js +26 -0
- package/lib/audio/AudioManager.js.map +1 -1
- package/lib/audio/AudioPool.js +3 -0
- package/lib/audio/AudioPool.js.map +1 -1
- package/lib/audio/index.d.ts.map +1 -1
- package/lib/audio/index.js.map +1 -1
- package/lib/audio/types.d.ts +18 -2
- package/lib/audio/types.d.ts.map +1 -1
- package/lib/audio/types.js +1 -0
- package/lib/audio/types.js.map +1 -1
- package/lib/components/effects/WindParticles3D.d.ts.map +1 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +0 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.js +0 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
- package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -1
- package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -1
- package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -1
- package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -1
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +0 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +0 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -1
- package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +0 -2
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -1
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +0 -1
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
- package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
- package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
- package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -1
- package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
- package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
- package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -1
- package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -1
- package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -1
- package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -1
- package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -1
- package/lib/components/screens/controls/components/Key3D.js.map +1 -1
- package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -1
- package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
- package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -1
- package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
- package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -1
- package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
- package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -1
- package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/index.d.ts.map +1 -1
- package/lib/components/screens/endscreen/index.d.ts.map +1 -1
- package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -1
- package/lib/components/screens/intro/IntroScreen3D.js +1 -1
- package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
- package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -1
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
- package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +0 -1
- package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +0 -1
- package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +0 -1
- package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +0 -1
- package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +0 -1
- package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -1
- package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +0 -1
- package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -1
- package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +0 -1
- package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
- package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -1
- package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -1
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
- package/lib/components/screens/training/components/index.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
- package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -1
- package/lib/components/shared/base/BaseButton.d.ts.map +1 -1
- package/lib/components/shared/base/BaseButton.js.map +1 -1
- package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -1
- package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
- package/lib/components/shared/base/BasePanel.d.ts.map +1 -1
- package/lib/components/shared/base/BasePanel.js.map +1 -1
- package/lib/components/shared/base/BaseText.d.ts.map +1 -1
- package/lib/components/shared/base/BaseText.js.map +1 -1
- package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -1
- package/lib/components/shared/base/index.d.ts.map +1 -1
- package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -1
- package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -1
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
- package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -1
- package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -1
- package/lib/components/shared/mobile/ActionButtons.js +0 -1
- package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +0 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.js +0 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
- package/lib/components/shared/mobile/HapticController.d.ts +0 -13
- package/lib/components/shared/mobile/HapticController.d.ts.map +1 -1
- package/lib/components/shared/mobile/HapticController.js +0 -10
- package/lib/components/shared/mobile/HapticController.js.map +1 -1
- package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -1
- package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
- package/lib/components/shared/mobile/PerformanceMonitor.d.ts +0 -15
- package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -1
- package/lib/components/shared/mobile/StanceWheelPure.d.ts +0 -1
- package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -1
- package/lib/components/shared/mobile/StanceWheelPure.js +0 -1
- package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
- package/lib/components/shared/mobile/TouchOptimizer.d.ts +0 -4
- package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -1
- package/lib/components/shared/mobile/TouchOptimizer.js +0 -3
- package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
- package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -1
- package/lib/components/shared/mobile/VirtualDPad.js +0 -1
- package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
- package/lib/components/shared/mobile/index.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +0 -1
- package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
- package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Foot3D.d.ts +0 -1
- package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Hand3D.d.ts +0 -1
- package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -1
- package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
- package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -1
- package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
- package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -1
- package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
- package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
- package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -1
- package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
- package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
- package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -1
- package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
- package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -1
- package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
- package/lib/components/shared/three/index.d.ts.map +1 -1
- package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +0 -6
- package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -1
- package/lib/components/shared/three/indicators/ElementalColorSystem.js +0 -4
- package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
- package/lib/components/shared/three/indicators/GuardIndicator.d.ts +0 -1
- package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -1
- package/lib/components/shared/three/indicators/GuardIndicator.js +0 -1
- package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
- package/lib/components/shared/three/indicators/HapticFeedback.d.ts +0 -7
- package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -1
- package/lib/components/shared/three/indicators/HapticFeedback.js +0 -2
- package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +0 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js +0 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
- package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +0 -1
- package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -1
- package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -1
- package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
- package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
- package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
- package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -1
- package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
- package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -1
- package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -1
- package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -1
- package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
- package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -1
- package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
- package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -1
- package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
- package/lib/components/shared/three/scene/DebugCollision.d.ts +0 -2
- package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -1
- package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -1
- package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
- package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -1
- package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -1
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
- package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -1
- package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
- package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -1
- package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
- package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -1
- package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
- package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -1
- package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -1
- package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -1
- package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -1
- package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
- package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -1
- package/lib/components/shared/three/ui/MenuList.js.map +1 -1
- package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -1
- package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
- package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -1
- package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +0 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +0 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
- package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -1
- package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -1
- package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -1
- package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -1
- package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -1
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
- package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -1
- package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -1
- package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
- package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -1
- package/lib/components/shared/ui/CombatTimer.js.map +1 -1
- package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -1
- package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -1
- package/lib/components/shared/ui/ErrorModal.js.map +1 -1
- package/lib/components/shared/ui/HUDSection.d.ts.map +1 -1
- package/lib/components/shared/ui/LoadingState.d.ts.map +1 -1
- package/lib/components/shared/ui/LoadingState.js.map +1 -1
- package/lib/components/shared/ui/MobileHUDLayout.d.ts +0 -1
- package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -1
- package/lib/components/shared/ui/ResponsiveContainer.d.ts +0 -1
- package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -1
- package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -1
- package/lib/components/shared/ui/SplashScreen.js +2 -2
- package/lib/components/shared/ui/SplashScreen.js.map +1 -1
- package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -1
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -1
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
- package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -1
- package/lib/components/shared/ui/VolumeControl.js.map +1 -1
- package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -1
- package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
- package/lib/components/test/Hello3D.d.ts.map +1 -1
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -1
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
- package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -1
- package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -1
- package/lib/systems/CombatSystem.d.ts +0 -6
- package/lib/systems/CombatSystem.d.ts.map +1 -1
- package/lib/systems/CombatSystem.js +0 -6
- package/lib/systems/CombatSystem.js.map +1 -1
- package/lib/systems/EffectCalculator.d.ts +0 -7
- package/lib/systems/EffectCalculator.d.ts.map +1 -1
- package/lib/systems/EffectCalculator.js +0 -4
- package/lib/systems/EffectCalculator.js.map +1 -1
- package/lib/systems/LayoutSystem.d.ts +0 -1
- package/lib/systems/LayoutSystem.d.ts.map +1 -1
- package/lib/systems/LayoutSystem.js +0 -1
- package/lib/systems/LayoutSystem.js.map +1 -1
- package/lib/systems/PlayerEffectManager.d.ts +0 -10
- package/lib/systems/PlayerEffectManager.d.ts.map +1 -1
- package/lib/systems/PlayerEffectManager.js +0 -3
- package/lib/systems/PlayerEffectManager.js.map +1 -1
- package/lib/systems/ResponsiveScaling.d.ts +0 -12
- package/lib/systems/ResponsiveScaling.d.ts.map +1 -1
- package/lib/systems/ResponsiveScaling.js +0 -12
- package/lib/systems/ResponsiveScaling.js.map +1 -1
- package/lib/systems/TrigramSystem.d.ts +0 -13
- package/lib/systems/TrigramSystem.d.ts.map +1 -1
- package/lib/systems/TrigramSystem.js +0 -13
- package/lib/systems/TrigramSystem.js.map +1 -1
- package/lib/systems/VitalPointSystem.d.ts +0 -10
- package/lib/systems/VitalPointSystem.d.ts.map +1 -1
- package/lib/systems/VitalPointSystem.js +0 -10
- package/lib/systems/VitalPointSystem.js.map +1 -1
- package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +0 -4
- package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -1
- package/lib/systems/animation/builders/KeyframeInterpolation.js +0 -1
- package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
- package/lib/systems/animation/builders/SkeletonRig.d.ts +0 -4
- package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -1
- package/lib/systems/animation/builders/SkeletonRig.js +0 -3
- package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
- package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +0 -5
- package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -1
- package/lib/systems/animation/catalogs/RecoveryAnimations.js +0 -5
- package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
- package/lib/systems/animation/core/AnimationHitTiming.d.ts +0 -6
- package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationHitTiming.js +0 -4
- package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
- package/lib/systems/animation/core/AnimationStateMachine.js +1 -0
- package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.d.ts +0 -3
- package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
- package/lib/systems/animation/core/LateralityTransform.d.ts +0 -3
- package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -1
- package/lib/systems/animation/core/LateralityTransform.js +0 -1
- package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +0 -1
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -1
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +0 -10
- package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapper.js +0 -8
- package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
- package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +0 -10
- package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -1
- package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +0 -2
- package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -1
- package/lib/systems/animation/core/types.d.ts +0 -39
- package/lib/systems/animation/core/types.d.ts.map +1 -1
- package/lib/systems/animation/core/types.js +0 -9
- package/lib/systems/animation/core/types.js.map +1 -1
- package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +0 -27
- package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -1
- package/lib/systems/animation/systems/AdvancedJointMovements.js +0 -1
- package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
- package/lib/systems/animation/systems/BodyFacingSystem.d.ts +0 -19
- package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -1
- package/lib/systems/animation/systems/BodyFacingSystem.js +0 -14
- package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
- package/lib/systems/animation/systems/FacialExpressions.d.ts +0 -10
- package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -1
- package/lib/systems/animation/systems/FacialExpressions.js +0 -2
- package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
- package/lib/systems/animation/systems/FallAnimations.d.ts +0 -4
- package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -1
- package/lib/systems/animation/systems/FallAnimations.js +0 -2
- package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
- package/lib/systems/animation/systems/HeadMovements.d.ts +0 -10
- package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -1
- package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +0 -7
- package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -1
- package/lib/systems/bodypart/BodyPartDamageIntegration.js +0 -7
- package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
- package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +0 -13
- package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -1
- package/lib/systems/bodypart/BodyPartHealthSystem.js +0 -13
- package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
- package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +0 -6
- package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -1
- package/lib/systems/bodypart/BodyPartPositionMapping.js +0 -6
- package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
- package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +0 -10
- package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -1
- package/lib/systems/bodypart/CombatInjuryIntegration.js +0 -8
- package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryIntegration.d.ts +0 -2
- package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -1
- package/lib/systems/bodypart/InjuryIntegration.js +0 -2
- package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryTracker.d.ts +0 -14
- package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -1
- package/lib/systems/bodypart/InjuryTracker.js +0 -12
- package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
- package/lib/systems/bodypart/MovementPenaltySystem.d.ts +0 -8
- package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -1
- package/lib/systems/bodypart/MovementPenaltySystem.js +0 -8
- package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +0 -8
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -1
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +0 -8
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
- package/lib/systems/bodypart/types.d.ts +0 -13
- package/lib/systems/bodypart/types.d.ts.map +1 -1
- package/lib/systems/bodypart/types.js +0 -5
- package/lib/systems/bodypart/types.js.map +1 -1
- package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +0 -3
- package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -1
- package/lib/systems/breathing/BreathingDisruptionSystem.js +0 -2
- package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
- package/lib/systems/combat/BalanceSystem.d.ts +0 -25
- package/lib/systems/combat/BalanceSystem.d.ts.map +1 -1
- package/lib/systems/combat/BalanceSystem.js +0 -25
- package/lib/systems/combat/BalanceSystem.js.map +1 -1
- package/lib/systems/combat/BreakingStatusEffects.d.ts +0 -4
- package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -1
- package/lib/systems/combat/BreakingStatusEffects.js +0 -3
- package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
- package/lib/systems/combat/CombatStateSystem.d.ts +0 -9
- package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -1
- package/lib/systems/combat/CombatStateSystem.js +0 -9
- package/lib/systems/combat/CombatStateSystem.js.map +1 -1
- package/lib/systems/combat/ConsciousnessSystem.d.ts +0 -16
- package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -1
- package/lib/systems/combat/ConsciousnessSystem.js +0 -16
- package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
- package/lib/systems/combat/FallIntegration.d.ts +0 -3
- package/lib/systems/combat/FallIntegration.d.ts.map +1 -1
- package/lib/systems/combat/FallIntegration.js +0 -3
- package/lib/systems/combat/FallIntegration.js.map +1 -1
- package/lib/systems/combat/GrappleSystem.d.ts +0 -2
- package/lib/systems/combat/GrappleSystem.d.ts.map +1 -1
- package/lib/systems/combat/GrappleSystem.js +0 -2
- package/lib/systems/combat/GrappleSystem.js.map +1 -1
- package/lib/systems/combat/LimbExposureSystem.d.ts +0 -7
- package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -1
- package/lib/systems/combat/LimbExposureSystem.js +0 -7
- package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
- package/lib/systems/combat/PainResponseSystem.d.ts +0 -11
- package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -1
- package/lib/systems/combat/PainResponseSystem.js +0 -11
- package/lib/systems/combat/PainResponseSystem.js.map +1 -1
- package/lib/systems/combat/painConsciousnessUtils.d.ts +0 -7
- package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -1
- package/lib/systems/combat/painConsciousnessUtils.js +0 -7
- package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
- package/lib/systems/effects.d.ts +11 -0
- package/lib/systems/effects.d.ts.map +1 -1
- package/lib/systems/effects.js +10 -0
- package/lib/systems/effects.js.map +1 -1
- package/lib/systems/game.d.ts +16 -0
- package/lib/systems/game.d.ts.map +1 -1
- package/lib/systems/game.js +1 -0
- package/lib/systems/game.js.map +1 -1
- package/lib/systems/index.d.ts +5 -1
- package/lib/systems/index.d.ts.map +1 -1
- package/lib/systems/index.js.map +1 -1
- package/lib/systems/movement/InjuryMovementModifier.d.ts +0 -10
- package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -1
- package/lib/systems/movement/InjuryMovementModifier.js +0 -7
- package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
- package/lib/systems/movement/integration.d.ts +0 -3
- package/lib/systems/movement/integration.d.ts.map +1 -1
- package/lib/systems/movement/integration.js +0 -3
- package/lib/systems/movement/integration.js.map +1 -1
- package/lib/systems/physics/AttackMovementPhysics.d.ts +0 -9
- package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -1
- package/lib/systems/physics/AttackMovementPhysics.js +0 -7
- package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
- package/lib/systems/physics/CollisionDetection.d.ts +0 -6
- package/lib/systems/physics/CollisionDetection.d.ts.map +1 -1
- package/lib/systems/physics/CollisionDetection.js +0 -6
- package/lib/systems/physics/CollisionDetection.js.map +1 -1
- package/lib/systems/physics/CoordinateMapper.d.ts +0 -1
- package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -1
- package/lib/systems/physics/CoordinateMapper.js +0 -1
- package/lib/systems/physics/CoordinateMapper.js.map +1 -1
- package/lib/systems/physics/KnockbackPhysics.d.ts +0 -11
- package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -1
- package/lib/systems/physics/KnockbackPhysics.js +0 -8
- package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
- package/lib/systems/physics/MovementPhysics.d.ts +0 -10
- package/lib/systems/physics/MovementPhysics.d.ts.map +1 -1
- package/lib/systems/physics/MovementPhysics.js +0 -8
- package/lib/systems/physics/MovementPhysics.js.map +1 -1
- package/lib/systems/physics/PhysicalReachCalculator.d.ts +0 -6
- package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -1
- package/lib/systems/physics/PhysicalReachCalculator.js +0 -5
- package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
- package/lib/systems/physics/SpeedModifierSystem.d.ts +0 -5
- package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -1
- package/lib/systems/physics/SpeedModifierSystem.js +0 -4
- package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
- package/lib/systems/player.d.ts +0 -5
- package/lib/systems/player.d.ts.map +1 -1
- package/lib/systems/trigram/TrigramCalculator.d.ts +0 -1
- package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -1
- package/lib/systems/trigram/TrigramCalculator.js +0 -1
- package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
- package/lib/systems/trigram/types.d.ts +0 -4
- package/lib/systems/trigram/types.d.ts.map +1 -1
- package/lib/systems/trigram/types.js +0 -2
- package/lib/systems/trigram/types.js.map +1 -1
- package/lib/systems/types.d.ts +7 -2
- package/lib/systems/types.d.ts.map +1 -1
- package/lib/systems/types.js.map +1 -1
- package/lib/systems/vitalpoint/DamageCalculator.d.ts +0 -3
- package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -1
- package/lib/systems/vitalpoint/DamageCalculator.js +0 -3
- package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
- package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +0 -8
- package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -1
- package/lib/systems/vitalpoint/KoreanVitalPoints.js +0 -8
- package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
- package/lib/systems/vitalpoint/VitalPointsData.d.ts +0 -3
- package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -1
- package/lib/systems/vitalpoint/VitalPointsData.js +0 -1
- package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
- package/lib/types/PhysicsTypes.d.ts +21 -78
- package/lib/types/PhysicsTypes.d.ts.map +1 -1
- package/lib/types/PhysicsTypes.js +17 -63
- package/lib/types/PhysicsTypes.js.map +1 -1
- package/lib/types/clothing.d.ts +0 -9
- package/lib/types/clothing.d.ts.map +1 -1
- package/lib/types/constants/animations.d.ts +35 -1
- package/lib/types/constants/animations.d.ts.map +1 -1
- package/lib/types/constants/animations.js +12 -1
- package/lib/types/constants/animations.js.map +1 -1
- package/lib/types/constants/colors.d.ts +28 -2
- package/lib/types/constants/colors.d.ts.map +1 -1
- package/lib/types/constants/colors.js +30 -4
- package/lib/types/constants/colors.js.map +1 -1
- package/lib/types/constants/index.d.ts +5 -1
- package/lib/types/constants/index.d.ts.map +1 -1
- package/lib/types/constants/index.js.map +1 -1
- package/lib/types/constants/performance.d.ts +0 -2
- package/lib/types/constants/performance.d.ts.map +1 -1
- package/lib/types/constants/performance.js +0 -2
- package/lib/types/constants/performance.js.map +1 -1
- package/lib/types/constants/typography.d.ts +40 -2
- package/lib/types/constants/typography.d.ts.map +1 -1
- package/lib/types/constants/typography.js +40 -2
- package/lib/types/constants/typography.js.map +1 -1
- package/lib/types/constants/ui.d.ts +89 -1
- package/lib/types/constants/ui.d.ts.map +1 -1
- package/lib/types/constants/ui.js +33 -1
- package/lib/types/constants/ui.js.map +1 -1
- package/lib/types/facial.d.ts +0 -15
- package/lib/types/facial.d.ts.map +1 -1
- package/lib/types/facial.js +0 -8
- package/lib/types/facial.js.map +1 -1
- package/lib/types/hand-animation.d.ts +34 -147
- package/lib/types/hand-animation.d.ts.map +1 -1
- package/lib/types/hand-animation.js +0 -2
- package/lib/types/hand-animation.js.map +1 -1
- package/lib/types/injury.d.ts +0 -2
- package/lib/types/injury.d.ts.map +1 -1
- package/lib/types/injury.js +0 -1
- package/lib/types/injury.js.map +1 -1
- package/lib/types/physics.d.ts +0 -21
- package/lib/types/physics.d.ts.map +1 -1
- package/lib/types/physics.js +0 -6
- package/lib/types/physics.js.map +1 -1
- package/lib/types/physicsConstants.d.ts +0 -12
- package/lib/types/physicsConstants.d.ts.map +1 -1
- package/lib/types/physicsConstants.js +0 -12
- package/lib/types/physicsConstants.js.map +1 -1
- package/lib/types/player-visual.d.ts +45 -189
- package/lib/types/player-visual.d.ts.map +1 -1
- package/lib/types/technique.d.ts +1 -5
- package/lib/types/technique.d.ts.map +1 -1
- package/lib/types/techniqueId.d.ts +0 -1
- package/lib/types/techniqueId.d.ts.map +1 -1
- package/lib/types/techniqueId.js +0 -1
- package/lib/types/techniqueId.js.map +1 -1
- package/lib/utils/arenaWorldDimensions.d.ts +0 -11
- package/lib/utils/arenaWorldDimensions.d.ts.map +1 -1
- package/lib/utils/arenaWorldDimensions.js +0 -6
- package/lib/utils/arenaWorldDimensions.js.map +1 -1
- package/lib/utils/controlMapping.d.ts +3 -4
- package/lib/utils/controlMapping.d.ts.map +1 -1
- package/lib/utils/controlMapping.js +1 -2
- package/lib/utils/controlMapping.js.map +1 -1
- package/lib/utils/deviceDetection.d.ts +0 -5
- package/lib/utils/deviceDetection.d.ts.map +1 -1
- package/lib/utils/deviceDetection.js +0 -5
- package/lib/utils/deviceDetection.js.map +1 -1
- package/lib/utils/hapticFeedback.d.ts +23 -95
- package/lib/utils/hapticFeedback.d.ts.map +1 -1
- package/lib/utils/hapticFeedback.js +9 -39
- package/lib/utils/hapticFeedback.js.map +1 -1
- package/lib/utils/haptics.d.ts +0 -3
- package/lib/utils/haptics.d.ts.map +1 -1
- package/lib/utils/haptics.js +0 -1
- package/lib/utils/haptics.js.map +1 -1
- package/lib/utils/math.d.ts +0 -3
- package/lib/utils/math.d.ts.map +1 -1
- package/lib/utils/math.js +0 -2
- package/lib/utils/math.js.map +1 -1
- package/lib/utils/mobileLayoutHelpers.d.ts +0 -3
- package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -1
- package/lib/utils/mobileLayoutHelpers.js +0 -1
- package/lib/utils/mobileLayoutHelpers.js.map +1 -1
- package/lib/utils/mobileUIUtils.d.ts +5 -100
- package/lib/utils/mobileUIUtils.d.ts.map +1 -1
- package/lib/utils/mobileUIUtils.js +0 -9
- package/lib/utils/mobileUIUtils.js.map +1 -1
- package/lib/utils/physicalAttributeValidation.d.ts.map +1 -1
- package/lib/utils/player3DHelpers.d.ts.map +1 -1
- package/lib/utils/player3DHelpers.js.map +1 -1
- package/lib/utils/responsiveLayoutHelpers.d.ts +0 -65
- package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
- package/lib/utils/responsiveLayoutHelpers.js +0 -65
- package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
- package/lib/utils/responsiveOrientationConstants.d.ts +0 -7
- package/lib/utils/responsiveOrientationConstants.d.ts.map +1 -1
- package/lib/utils/responsiveOrientationConstants.js +0 -7
- package/lib/utils/responsiveOrientationConstants.js.map +1 -1
- package/lib/utils/safeAreaUtils.d.ts +0 -6
- package/lib/utils/safeAreaUtils.d.ts.map +1 -1
- package/lib/utils/safeAreaUtils.js +0 -2
- package/lib/utils/safeAreaUtils.js.map +1 -1
- package/lib/utils/sharedPhysicsConfig.d.ts +0 -4
- package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -1
- package/lib/utils/sharedPhysicsConfig.js +0 -2
- package/lib/utils/sharedPhysicsConfig.js.map +1 -1
- package/lib/utils/skeletonScaling.d.ts +0 -9
- package/lib/utils/skeletonScaling.d.ts.map +1 -1
- package/lib/utils/skeletonScaling.js +0 -1
- package/lib/utils/skeletonScaling.js.map +1 -1
- package/package.json +11 -11
|
@@ -49,7 +49,6 @@ import { BODY_PART_EFFECT_CONSTANTS, BodyPart, DEFAULT_BODY_PART_CONFIG } from "
|
|
|
49
49
|
* const effects = system.calculateBodyPartEffects(damaged);
|
|
50
50
|
* ```
|
|
51
51
|
*
|
|
52
|
-
* @public
|
|
53
52
|
* @category Body Part System
|
|
54
53
|
*/
|
|
55
54
|
var BodyPartHealthSystem = class {
|
|
@@ -65,7 +64,6 @@ var BodyPartHealthSystem = class {
|
|
|
65
64
|
* @param maxHealth - Optional custom max health per part (default: 100)
|
|
66
65
|
* @returns Body part health structure with all parts at max HP
|
|
67
66
|
*
|
|
68
|
-
* @public
|
|
69
67
|
*/
|
|
70
68
|
createDefaultBodyPartHealth(maxHealth = 100) {
|
|
71
69
|
return {
|
|
@@ -87,7 +85,6 @@ var BodyPartHealthSystem = class {
|
|
|
87
85
|
* @param baseMaxHealth - Base maximum health per part
|
|
88
86
|
* @returns Maximum health structure
|
|
89
87
|
*
|
|
90
|
-
* @public
|
|
91
88
|
*/
|
|
92
89
|
createDefaultMaxHealth(baseMaxHealth = 100) {
|
|
93
90
|
return {
|
|
@@ -115,7 +112,6 @@ var BodyPartHealthSystem = class {
|
|
|
115
112
|
* @param maxHealth - Optional maximum health limits
|
|
116
113
|
* @returns Updated body part health
|
|
117
114
|
*
|
|
118
|
-
* @public
|
|
119
115
|
*/
|
|
120
116
|
applyDamageToBodyPart(current, bodyPart, damage, maxHealth) {
|
|
121
117
|
const newHealth = Math.max(0, current[bodyPart] - damage);
|
|
@@ -136,7 +132,6 @@ var BodyPartHealthSystem = class {
|
|
|
136
132
|
* @param bodyRegion - Hit location
|
|
137
133
|
* @returns Damage distribution configuration
|
|
138
134
|
*
|
|
139
|
-
* @public
|
|
140
135
|
*/
|
|
141
136
|
getDamageDistribution(bodyRegion) {
|
|
142
137
|
switch (bodyRegion) {
|
|
@@ -246,7 +241,6 @@ var BodyPartHealthSystem = class {
|
|
|
246
241
|
* @param maxHealth - Optional maximum health limits
|
|
247
242
|
* @returns Updated body part health
|
|
248
243
|
*
|
|
249
|
-
* @public
|
|
250
244
|
*/
|
|
251
245
|
applyDistributedDamage(current, bodyRegion, totalDamage, maxHealth) {
|
|
252
246
|
const distribution = this.getDamageDistribution(bodyRegion);
|
|
@@ -271,7 +265,6 @@ var BodyPartHealthSystem = class {
|
|
|
271
265
|
* @param maxHealth - Maximum health values
|
|
272
266
|
* @returns Combat capability effect multipliers
|
|
273
267
|
*
|
|
274
|
-
* @public
|
|
275
268
|
*/
|
|
276
269
|
calculateBodyPartEffects(health, maxHealth) {
|
|
277
270
|
const max = maxHealth ?? this.createDefaultMaxHealth();
|
|
@@ -309,7 +302,6 @@ var BodyPartHealthSystem = class {
|
|
|
309
302
|
* @param health - Body part health
|
|
310
303
|
* @returns Aggregate health value (0-100)
|
|
311
304
|
*
|
|
312
|
-
* @public
|
|
313
305
|
*/
|
|
314
306
|
calculateAggregateHealth(health) {
|
|
315
307
|
return (health.head + health.neck + health.torsoUpper + health.torsoLower + health.armLeft + health.armRight + health.legLeft + health.legRight) / 8;
|
|
@@ -327,7 +319,6 @@ var BodyPartHealthSystem = class {
|
|
|
327
319
|
* @param part - Body part to query
|
|
328
320
|
* @returns Status information for display
|
|
329
321
|
*
|
|
330
|
-
* @public
|
|
331
322
|
*/
|
|
332
323
|
getBodyPartStatus(health, maxHealth, part) {
|
|
333
324
|
const current = health[part];
|
|
@@ -408,7 +399,6 @@ var BodyPartHealthSystem = class {
|
|
|
408
399
|
* @param maxHealth - Maximum health values
|
|
409
400
|
* @returns Array of status information for all parts
|
|
410
401
|
*
|
|
411
|
-
* @public
|
|
412
402
|
*/
|
|
413
403
|
getAllBodyPartStatuses(health, maxHealth) {
|
|
414
404
|
return Object.values(BodyPart).map((part) => this.getBodyPartStatus(health, maxHealth, part));
|
|
@@ -427,7 +417,6 @@ var BodyPartHealthSystem = class {
|
|
|
427
417
|
* @param maxHealth - Optional maximum health limits
|
|
428
418
|
* @returns Updated body part health
|
|
429
419
|
*
|
|
430
|
-
* @public
|
|
431
420
|
*/
|
|
432
421
|
healBodyPart(current, bodyPart, healAmount, maxHealth) {
|
|
433
422
|
const max = maxHealth ?? this.createDefaultMaxHealth();
|
|
@@ -450,7 +439,6 @@ var BodyPartHealthSystem = class {
|
|
|
450
439
|
* @param health - Current body part health
|
|
451
440
|
* @returns Whether player is incapacitated
|
|
452
441
|
*
|
|
453
|
-
* @public
|
|
454
442
|
*/
|
|
455
443
|
isIncapacitated(health) {
|
|
456
444
|
if (health.head <= 0) return true;
|
|
@@ -466,7 +454,6 @@ var BodyPartHealthSystem = class {
|
|
|
466
454
|
*
|
|
467
455
|
* Provides global access to the body part health system throughout the game.
|
|
468
456
|
*
|
|
469
|
-
* @public
|
|
470
457
|
*/
|
|
471
458
|
var bodyPartHealthSystem = new BodyPartHealthSystem();
|
|
472
459
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyPartHealthSystem.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"sourcesContent":["/**\n * Body Part Health System\n * \n * **Korean**: 신체부위 체력 시스템\n * \n * Manages body part-specific health tracking, damage distribution, and combat\n * capability effects. Implements realistic localized damage mechanics based on\n * Korean martial arts vital point targeting principles.\n * \n * ## System Features\n * \n * - Independent health tracking for 8 body parts\n * - Automatic combat capability penalties based on damage\n * - Damage distribution from hit locations to body parts\n * - UI-friendly status information generation\n * - Performance-optimized calculations\n * \n * @module systems/bodypart/BodyPartHealthSystem\n * @category Body Part System\n * @korean 신체부위체력시스템\n */\n\nimport { BodyRegion, KOREAN_COLORS, KoreanText } from \"@/types\";\nimport {\n BodyPart,\n BodyPartDamageDistribution,\n BodyPartEffects,\n BodyPartHealth,\n BodyPartHealthConfig,\n BodyPartMaxHealth,\n BodyPartStatus,\n BODY_PART_EFFECT_CONSTANTS,\n DEFAULT_BODY_PART_CONFIG,\n} from \"./types\";\n\n/**\n * Body Part Health System class.\n * \n * **Korean**: 신체부위 체력 시스템 클래스\n * \n * Provides methods for managing body part health, calculating effects,\n * and distributing damage based on hit locations.\n * \n * @example\n * ```typescript\n * const system = new BodyPartHealthSystem();\n * \n * // Create initial body part health\n * const health = system.createDefaultBodyPartHealth();\n * \n * // Apply damage to head\n * const damaged = system.applyDamageToBodyPart(\n * health,\n * BodyPart.HEAD,\n * 25\n * );\n * \n * // Calculate combat effects\n * const effects = system.calculateBodyPartEffects(damaged);\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class BodyPartHealthSystem {\n private config: BodyPartHealthConfig;\n\n constructor(config: BodyPartHealthConfig = DEFAULT_BODY_PART_CONFIG) {\n this.config = config;\n }\n\n /**\n * Create default body part health with all parts at maximum.\n * \n * **Korean**: 기본 신체부위 체력 생성\n * \n * @param maxHealth - Optional custom max health per part (default: 100)\n * @returns Body part health structure with all parts at max HP\n * \n * @public\n */\n createDefaultBodyPartHealth(maxHealth: number = 100): BodyPartHealth {\n return {\n head: maxHealth,\n neck: maxHealth,\n torsoUpper: maxHealth,\n torsoLower: maxHealth,\n armLeft: maxHealth,\n armRight: maxHealth,\n legLeft: maxHealth,\n legRight: maxHealth,\n };\n }\n\n /**\n * Create default maximum health values for body parts.\n * \n * **Korean**: 기본 최대 체력 생성\n * \n * @param baseMaxHealth - Base maximum health per part\n * @returns Maximum health structure\n * \n * @public\n */\n createDefaultMaxHealth(baseMaxHealth: number = 100): BodyPartMaxHealth {\n return {\n head: baseMaxHealth,\n neck: baseMaxHealth,\n torsoUpper: baseMaxHealth,\n torsoLower: baseMaxHealth,\n armLeft: baseMaxHealth,\n armRight: baseMaxHealth,\n legLeft: baseMaxHealth,\n legRight: baseMaxHealth,\n };\n }\n\n /**\n * Apply damage to a specific body part.\n * \n * **Korean**: 신체부위 피해 적용\n * \n * Reduces health of the specified body part by the damage amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to damage\n * @param damage - Damage amount to apply\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n applyDamageToBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n damage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const newHealth = Math.max(0, current[bodyPart] - damage);\n const clampedHealth = maxHealth\n ? Math.min(newHealth, maxHealth[bodyPart])\n : newHealth;\n\n return {\n ...current,\n [bodyPart]: clampedHealth,\n };\n }\n\n /**\n * Distribute damage across body parts based on hit location.\n * \n * **Korean**: 피해 분배\n * \n * Maps a BodyRegion hit location to primary and secondary body parts,\n * distributing damage according to impact mechanics.\n * \n * @param bodyRegion - Hit location\n * @returns Damage distribution configuration\n * \n * @public\n */\n getDamageDistribution(bodyRegion: BodyRegion): BodyPartDamageDistribution {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return {\n primary: { part: BodyPart.HEAD, percentage: 0.9 },\n secondary: [{ part: BodyPart.NECK, percentage: 0.1 }],\n };\n\n case BodyRegion.NECK:\n return {\n primary: { part: BodyPart.NECK, percentage: 0.8 },\n secondary: [\n { part: BodyPart.HEAD, percentage: 0.1 },\n { part: BodyPart.TORSO_UPPER, percentage: 0.1 },\n ],\n };\n\n case BodyRegion.TORSO:\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 0.6 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.4 }],\n };\n\n case BodyRegion.CORE:\n return {\n primary: { part: BodyPart.TORSO_LOWER, percentage: 0.7 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.3 }],\n };\n\n case BodyRegion.LEFT_ARM:\n return {\n primary: { part: BodyPart.ARM_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_ARM:\n return {\n primary: { part: BodyPart.ARM_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.LEFT_LEG:\n return {\n primary: { part: BodyPart.LEG_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_LEG:\n return {\n primary: { part: BodyPart.LEG_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n default:\n // Default to torso upper for unknown regions\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 1.0 },\n secondary: [],\n };\n }\n }\n\n /**\n * Apply distributed damage to body parts from a hit.\n * \n * **Korean**: 분산 피해 적용\n * \n * Takes total damage and distributes it across primary and secondary\n * body parts based on the hit location.\n * \n * @param current - Current body part health\n * @param bodyRegion - Hit location\n * @param totalDamage - Total damage to distribute\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n applyDistributedDamage(\n current: BodyPartHealth,\n bodyRegion: BodyRegion,\n totalDamage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const distribution = this.getDamageDistribution(bodyRegion);\n let updated = { ...current };\n\n // Apply primary damage\n updated = this.applyDamageToBodyPart(\n updated,\n distribution.primary.part,\n totalDamage * distribution.primary.percentage,\n maxHealth\n );\n\n // Apply secondary damage\n for (const secondary of distribution.secondary) {\n updated = this.applyDamageToBodyPart(\n updated,\n secondary.part,\n totalDamage * secondary.percentage,\n maxHealth\n );\n }\n\n return updated;\n }\n\n /**\n * Calculate combat capability effects from body part damage.\n * \n * **Korean**: 전투 능력 효과 계산\n * \n * Analyzes body part health and returns multipliers for various combat\n * capabilities. Implements acceptance criteria:\n * - Head <50%: Consciousness penalties\n * - Torso <50%: Stamina regen -50%\n * - Arms <50%: Attack damage -30%\n * - Legs <50%: Movement speed -40%\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Combat capability effect multipliers\n * \n * @public\n */\n calculateBodyPartEffects(\n health: BodyPartHealth,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartEffects {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n\n // Calculate head/neck effects on consciousness\n const headPercentage = health.head / max.head;\n const neckPercentage = health.neck / max.neck;\n const minHeadNeck = Math.min(headPercentage, neckPercentage);\n \n let consciousnessModifier = 1.0;\n if (minHeadNeck < BODY_PART_EFFECT_CONSTANTS.HEAD.CRITICAL_THRESHOLD) {\n consciousnessModifier = BODY_PART_EFFECT_CONSTANTS.HEAD.CONSCIOUSNESS_PENALTY_AT_50;\n }\n\n // Calculate torso effects on stamina regeneration\n const torsoUpperPercentage = health.torsoUpper / max.torsoUpper;\n const torsoLowerPercentage = health.torsoLower / max.torsoLower;\n const avgTorso = (torsoUpperPercentage + torsoLowerPercentage) / 2;\n \n let staminaRegenModifier = 1.0;\n if (avgTorso < BODY_PART_EFFECT_CONSTANTS.TORSO.CRITICAL_THRESHOLD) {\n staminaRegenModifier = BODY_PART_EFFECT_CONSTANTS.TORSO.STAMINA_REGEN_PENALTY_AT_50;\n }\n\n // Calculate arm effects on attack damage\n const armLeftPercentage = health.armLeft / max.armLeft;\n const armRightPercentage = health.armRight / max.armRight;\n const avgArms = (armLeftPercentage + armRightPercentage) / 2;\n \n let attackDamageModifier = 1.0;\n if (avgArms < BODY_PART_EFFECT_CONSTANTS.ARMS.CRITICAL_THRESHOLD) {\n attackDamageModifier = BODY_PART_EFFECT_CONSTANTS.ARMS.ATTACK_DAMAGE_PENALTY_AT_50;\n }\n\n // Calculate leg effects on movement speed\n const legLeftPercentage = health.legLeft / max.legLeft;\n const legRightPercentage = health.legRight / max.legRight;\n const avgLegs = (legLeftPercentage + legRightPercentage) / 2;\n \n let movementSpeedModifier = 1.0;\n if (avgLegs < BODY_PART_EFFECT_CONSTANTS.LEGS.CRITICAL_THRESHOLD) {\n movementSpeedModifier = BODY_PART_EFFECT_CONSTANTS.LEGS.MOVEMENT_SPEED_PENALTY_AT_50;\n }\n\n // Balance affected by torso and legs\n const balanceModifier = Math.min(avgTorso, avgLegs);\n\n // Technique accuracy affected by head and arms\n const techniqueAccuracyModifier = Math.min(headPercentage, avgArms);\n\n return {\n consciousnessModifier,\n staminaRegenModifier,\n attackDamageModifier,\n movementSpeedModifier,\n balanceModifier,\n techniqueAccuracyModifier,\n };\n }\n\n /**\n * Calculate aggregate health from body parts.\n * \n * **Korean**: 종합 체력 계산\n * \n * Computes overall health as average of all body part health values.\n * This maintains backwards compatibility with single health bar systems.\n * \n * @param health - Body part health\n * @returns Aggregate health value (0-100)\n * \n * @public\n */\n calculateAggregateHealth(health: BodyPartHealth): number {\n const sum =\n health.head +\n health.neck +\n health.torsoUpper +\n health.torsoLower +\n health.armLeft +\n health.armRight +\n health.legLeft +\n health.legRight;\n\n return sum / 8;\n }\n\n /**\n * Get body part status for UI display.\n * \n * **Korean**: 신체부위 상태 조회\n * \n * Provides UI-friendly status information including color coding,\n * status text, and critical/disabled flags.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param part - Body part to query\n * @returns Status information for display\n * \n * @public\n */\n getBodyPartStatus(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n part: BodyPart\n ): BodyPartStatus {\n const current = health[part];\n const max = maxHealth[part];\n const percentage = current / max;\n\n // Determine status and color\n let status: KoreanText;\n let color: number;\n let critical: boolean;\n let disabled: boolean;\n\n if (percentage === 0) {\n status = { korean: \"무력화\", english: \"Disabled\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = true;\n } else if (percentage < this.config.criticalThreshold) {\n status = { korean: \"치명적\", english: \"Critical\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = false;\n } else if (percentage < this.config.severePenaltyThreshold) {\n status = { korean: \"심각\", english: \"Severe\" };\n color = KOREAN_COLORS.WARNING_ORANGE;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.majorPenaltyThreshold) {\n status = { korean: \"중상\", english: \"Major\" };\n color = KOREAN_COLORS.WARNING_YELLOW;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.minorPenaltyThreshold) {\n status = { korean: \"경상\", english: \"Minor\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n } else {\n status = { korean: \"정상\", english: \"Normal\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n }\n\n return {\n part,\n health: current,\n maxHealth: max,\n percentage,\n status,\n color,\n critical,\n disabled,\n };\n }\n\n /**\n * Get all body part statuses for UI.\n * \n * **Korean**: 모든 신체부위 상태 조회\n * \n * Returns status information for all body parts in a single call.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Array of status information for all parts\n * \n * @public\n */\n getAllBodyPartStatuses(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): BodyPartStatus[] {\n return Object.values(BodyPart).map((part) =>\n this.getBodyPartStatus(health, maxHealth, part)\n );\n }\n\n /**\n * Heal a specific body part.\n * \n * **Korean**: 신체부위 치유\n * \n * Increases health of the specified body part by the heal amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to heal\n * @param healAmount - Amount of health to restore\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n healBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n healAmount: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n const newHealth = Math.min(max[bodyPart], current[bodyPart] + healAmount);\n\n return {\n ...current,\n [bodyPart]: newHealth,\n };\n }\n\n /**\n * Check if player is incapacitated based on body part health.\n * \n * **Korean**: 무력화 상태 확인\n * \n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot move)\n * - Aggregate health below 10%\n * \n * @param health - Current body part health\n * @returns Whether player is incapacitated\n * \n * @public\n */\n isIncapacitated(health: BodyPartHealth): boolean {\n // Unconscious from head damage\n if (health.head <= 0) return true;\n\n // Cannot move from leg damage\n if (health.legLeft <= 0 && health.legRight <= 0) return true;\n\n // Aggregate health critical\n const aggregate = this.calculateAggregateHealth(health);\n if (aggregate < 10) return true;\n\n return false;\n }\n}\n\n/**\n * Singleton instance of Body Part Health System.\n * \n * **Korean**: 신체부위 체력 시스템 싱글톤\n * \n * Provides global access to the body part health system throughout the game.\n * \n * @public\n */\nexport const bodyPartHealthSystem = new BodyPartHealthSystem();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BodyPartHealthSystem.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"sourcesContent":["/**\n * Body Part Health System\n * \n * **Korean**: 신체부위 체력 시스템\n * \n * Manages body part-specific health tracking, damage distribution, and combat\n * capability effects. Implements realistic localized damage mechanics based on\n * Korean martial arts vital point targeting principles.\n * \n * ## System Features\n * \n * - Independent health tracking for 8 body parts\n * - Automatic combat capability penalties based on damage\n * - Damage distribution from hit locations to body parts\n * - UI-friendly status information generation\n * - Performance-optimized calculations\n * \n * @module systems/bodypart/BodyPartHealthSystem\n * @category Body Part System\n * @korean 신체부위체력시스템\n */\n\nimport { BodyRegion, KOREAN_COLORS, KoreanText } from \"@/types\";\nimport {\n BodyPart,\n BodyPartDamageDistribution,\n BodyPartEffects,\n BodyPartHealth,\n BodyPartHealthConfig,\n BodyPartMaxHealth,\n BodyPartStatus,\n BODY_PART_EFFECT_CONSTANTS,\n DEFAULT_BODY_PART_CONFIG,\n} from \"./types\";\n\n/**\n * Body Part Health System class.\n * \n * **Korean**: 신체부위 체력 시스템 클래스\n * \n * Provides methods for managing body part health, calculating effects,\n * and distributing damage based on hit locations.\n * \n * @example\n * ```typescript\n * const system = new BodyPartHealthSystem();\n * \n * // Create initial body part health\n * const health = system.createDefaultBodyPartHealth();\n * \n * // Apply damage to head\n * const damaged = system.applyDamageToBodyPart(\n * health,\n * BodyPart.HEAD,\n * 25\n * );\n * \n * // Calculate combat effects\n * const effects = system.calculateBodyPartEffects(damaged);\n * ```\n * \n * @category Body Part System\n */\nexport class BodyPartHealthSystem {\n private config: BodyPartHealthConfig;\n\n constructor(config: BodyPartHealthConfig = DEFAULT_BODY_PART_CONFIG) {\n this.config = config;\n }\n\n /**\n * Create default body part health with all parts at maximum.\n * \n * **Korean**: 기본 신체부위 체력 생성\n * \n * @param maxHealth - Optional custom max health per part (default: 100)\n * @returns Body part health structure with all parts at max HP\n * \n */\n createDefaultBodyPartHealth(maxHealth: number = 100): BodyPartHealth {\n return {\n head: maxHealth,\n neck: maxHealth,\n torsoUpper: maxHealth,\n torsoLower: maxHealth,\n armLeft: maxHealth,\n armRight: maxHealth,\n legLeft: maxHealth,\n legRight: maxHealth,\n };\n }\n\n /**\n * Create default maximum health values for body parts.\n * \n * **Korean**: 기본 최대 체력 생성\n * \n * @param baseMaxHealth - Base maximum health per part\n * @returns Maximum health structure\n * \n */\n createDefaultMaxHealth(baseMaxHealth: number = 100): BodyPartMaxHealth {\n return {\n head: baseMaxHealth,\n neck: baseMaxHealth,\n torsoUpper: baseMaxHealth,\n torsoLower: baseMaxHealth,\n armLeft: baseMaxHealth,\n armRight: baseMaxHealth,\n legLeft: baseMaxHealth,\n legRight: baseMaxHealth,\n };\n }\n\n /**\n * Apply damage to a specific body part.\n * \n * **Korean**: 신체부위 피해 적용\n * \n * Reduces health of the specified body part by the damage amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to damage\n * @param damage - Damage amount to apply\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n applyDamageToBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n damage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const newHealth = Math.max(0, current[bodyPart] - damage);\n const clampedHealth = maxHealth\n ? Math.min(newHealth, maxHealth[bodyPart])\n : newHealth;\n\n return {\n ...current,\n [bodyPart]: clampedHealth,\n };\n }\n\n /**\n * Distribute damage across body parts based on hit location.\n * \n * **Korean**: 피해 분배\n * \n * Maps a BodyRegion hit location to primary and secondary body parts,\n * distributing damage according to impact mechanics.\n * \n * @param bodyRegion - Hit location\n * @returns Damage distribution configuration\n * \n */\n getDamageDistribution(bodyRegion: BodyRegion): BodyPartDamageDistribution {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return {\n primary: { part: BodyPart.HEAD, percentage: 0.9 },\n secondary: [{ part: BodyPart.NECK, percentage: 0.1 }],\n };\n\n case BodyRegion.NECK:\n return {\n primary: { part: BodyPart.NECK, percentage: 0.8 },\n secondary: [\n { part: BodyPart.HEAD, percentage: 0.1 },\n { part: BodyPart.TORSO_UPPER, percentage: 0.1 },\n ],\n };\n\n case BodyRegion.TORSO:\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 0.6 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.4 }],\n };\n\n case BodyRegion.CORE:\n return {\n primary: { part: BodyPart.TORSO_LOWER, percentage: 0.7 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.3 }],\n };\n\n case BodyRegion.LEFT_ARM:\n return {\n primary: { part: BodyPart.ARM_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_ARM:\n return {\n primary: { part: BodyPart.ARM_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.LEFT_LEG:\n return {\n primary: { part: BodyPart.LEG_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_LEG:\n return {\n primary: { part: BodyPart.LEG_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n default:\n // Default to torso upper for unknown regions\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 1.0 },\n secondary: [],\n };\n }\n }\n\n /**\n * Apply distributed damage to body parts from a hit.\n * \n * **Korean**: 분산 피해 적용\n * \n * Takes total damage and distributes it across primary and secondary\n * body parts based on the hit location.\n * \n * @param current - Current body part health\n * @param bodyRegion - Hit location\n * @param totalDamage - Total damage to distribute\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n applyDistributedDamage(\n current: BodyPartHealth,\n bodyRegion: BodyRegion,\n totalDamage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const distribution = this.getDamageDistribution(bodyRegion);\n let updated = { ...current };\n\n // Apply primary damage\n updated = this.applyDamageToBodyPart(\n updated,\n distribution.primary.part,\n totalDamage * distribution.primary.percentage,\n maxHealth\n );\n\n // Apply secondary damage\n for (const secondary of distribution.secondary) {\n updated = this.applyDamageToBodyPart(\n updated,\n secondary.part,\n totalDamage * secondary.percentage,\n maxHealth\n );\n }\n\n return updated;\n }\n\n /**\n * Calculate combat capability effects from body part damage.\n * \n * **Korean**: 전투 능력 효과 계산\n * \n * Analyzes body part health and returns multipliers for various combat\n * capabilities. Implements acceptance criteria:\n * - Head <50%: Consciousness penalties\n * - Torso <50%: Stamina regen -50%\n * - Arms <50%: Attack damage -30%\n * - Legs <50%: Movement speed -40%\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Combat capability effect multipliers\n * \n */\n calculateBodyPartEffects(\n health: BodyPartHealth,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartEffects {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n\n // Calculate head/neck effects on consciousness\n const headPercentage = health.head / max.head;\n const neckPercentage = health.neck / max.neck;\n const minHeadNeck = Math.min(headPercentage, neckPercentage);\n \n let consciousnessModifier = 1.0;\n if (minHeadNeck < BODY_PART_EFFECT_CONSTANTS.HEAD.CRITICAL_THRESHOLD) {\n consciousnessModifier = BODY_PART_EFFECT_CONSTANTS.HEAD.CONSCIOUSNESS_PENALTY_AT_50;\n }\n\n // Calculate torso effects on stamina regeneration\n const torsoUpperPercentage = health.torsoUpper / max.torsoUpper;\n const torsoLowerPercentage = health.torsoLower / max.torsoLower;\n const avgTorso = (torsoUpperPercentage + torsoLowerPercentage) / 2;\n \n let staminaRegenModifier = 1.0;\n if (avgTorso < BODY_PART_EFFECT_CONSTANTS.TORSO.CRITICAL_THRESHOLD) {\n staminaRegenModifier = BODY_PART_EFFECT_CONSTANTS.TORSO.STAMINA_REGEN_PENALTY_AT_50;\n }\n\n // Calculate arm effects on attack damage\n const armLeftPercentage = health.armLeft / max.armLeft;\n const armRightPercentage = health.armRight / max.armRight;\n const avgArms = (armLeftPercentage + armRightPercentage) / 2;\n \n let attackDamageModifier = 1.0;\n if (avgArms < BODY_PART_EFFECT_CONSTANTS.ARMS.CRITICAL_THRESHOLD) {\n attackDamageModifier = BODY_PART_EFFECT_CONSTANTS.ARMS.ATTACK_DAMAGE_PENALTY_AT_50;\n }\n\n // Calculate leg effects on movement speed\n const legLeftPercentage = health.legLeft / max.legLeft;\n const legRightPercentage = health.legRight / max.legRight;\n const avgLegs = (legLeftPercentage + legRightPercentage) / 2;\n \n let movementSpeedModifier = 1.0;\n if (avgLegs < BODY_PART_EFFECT_CONSTANTS.LEGS.CRITICAL_THRESHOLD) {\n movementSpeedModifier = BODY_PART_EFFECT_CONSTANTS.LEGS.MOVEMENT_SPEED_PENALTY_AT_50;\n }\n\n // Balance affected by torso and legs\n const balanceModifier = Math.min(avgTorso, avgLegs);\n\n // Technique accuracy affected by head and arms\n const techniqueAccuracyModifier = Math.min(headPercentage, avgArms);\n\n return {\n consciousnessModifier,\n staminaRegenModifier,\n attackDamageModifier,\n movementSpeedModifier,\n balanceModifier,\n techniqueAccuracyModifier,\n };\n }\n\n /**\n * Calculate aggregate health from body parts.\n * \n * **Korean**: 종합 체력 계산\n * \n * Computes overall health as average of all body part health values.\n * This maintains backwards compatibility with single health bar systems.\n * \n * @param health - Body part health\n * @returns Aggregate health value (0-100)\n * \n */\n calculateAggregateHealth(health: BodyPartHealth): number {\n const sum =\n health.head +\n health.neck +\n health.torsoUpper +\n health.torsoLower +\n health.armLeft +\n health.armRight +\n health.legLeft +\n health.legRight;\n\n return sum / 8;\n }\n\n /**\n * Get body part status for UI display.\n * \n * **Korean**: 신체부위 상태 조회\n * \n * Provides UI-friendly status information including color coding,\n * status text, and critical/disabled flags.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param part - Body part to query\n * @returns Status information for display\n * \n */\n getBodyPartStatus(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n part: BodyPart\n ): BodyPartStatus {\n const current = health[part];\n const max = maxHealth[part];\n const percentage = current / max;\n\n // Determine status and color\n let status: KoreanText;\n let color: number;\n let critical: boolean;\n let disabled: boolean;\n\n if (percentage === 0) {\n status = { korean: \"무력화\", english: \"Disabled\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = true;\n } else if (percentage < this.config.criticalThreshold) {\n status = { korean: \"치명적\", english: \"Critical\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = false;\n } else if (percentage < this.config.severePenaltyThreshold) {\n status = { korean: \"심각\", english: \"Severe\" };\n color = KOREAN_COLORS.WARNING_ORANGE;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.majorPenaltyThreshold) {\n status = { korean: \"중상\", english: \"Major\" };\n color = KOREAN_COLORS.WARNING_YELLOW;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.minorPenaltyThreshold) {\n status = { korean: \"경상\", english: \"Minor\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n } else {\n status = { korean: \"정상\", english: \"Normal\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n }\n\n return {\n part,\n health: current,\n maxHealth: max,\n percentage,\n status,\n color,\n critical,\n disabled,\n };\n }\n\n /**\n * Get all body part statuses for UI.\n * \n * **Korean**: 모든 신체부위 상태 조회\n * \n * Returns status information for all body parts in a single call.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Array of status information for all parts\n * \n */\n getAllBodyPartStatuses(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): BodyPartStatus[] {\n return Object.values(BodyPart).map((part) =>\n this.getBodyPartStatus(health, maxHealth, part)\n );\n }\n\n /**\n * Heal a specific body part.\n * \n * **Korean**: 신체부위 치유\n * \n * Increases health of the specified body part by the heal amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to heal\n * @param healAmount - Amount of health to restore\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n healBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n healAmount: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n const newHealth = Math.min(max[bodyPart], current[bodyPart] + healAmount);\n\n return {\n ...current,\n [bodyPart]: newHealth,\n };\n }\n\n /**\n * Check if player is incapacitated based on body part health.\n * \n * **Korean**: 무력화 상태 확인\n * \n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot move)\n * - Aggregate health below 10%\n * \n * @param health - Current body part health\n * @returns Whether player is incapacitated\n * \n */\n isIncapacitated(health: BodyPartHealth): boolean {\n // Unconscious from head damage\n if (health.head <= 0) return true;\n\n // Cannot move from leg damage\n if (health.legLeft <= 0 && health.legRight <= 0) return true;\n\n // Aggregate health critical\n const aggregate = this.calculateAggregateHealth(health);\n if (aggregate < 10) return true;\n\n return false;\n }\n}\n\n/**\n * Singleton instance of Body Part Health System.\n * \n * **Korean**: 신체부위 체력 시스템 싱글톤\n * \n * Provides global access to the body part health system throughout the game.\n * \n */\nexport const bodyPartHealthSystem = new BodyPartHealthSystem();\n"],"mappings":"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"}
|
|
@@ -45,7 +45,6 @@ export declare const CHARACTER_DIMENSIONS: {
|
|
|
45
45
|
* @param bodyPart - Body part to get position for
|
|
46
46
|
* @returns 3D position vector
|
|
47
47
|
*
|
|
48
|
-
* @public
|
|
49
48
|
*/
|
|
50
49
|
export declare function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3;
|
|
51
50
|
/**
|
|
@@ -56,7 +55,6 @@ export declare function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3;
|
|
|
56
55
|
* @param bodyRegion - Body region to get position for
|
|
57
56
|
* @returns 3D position vector
|
|
58
57
|
*
|
|
59
|
-
* @public
|
|
60
58
|
*/
|
|
61
59
|
export declare function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vector3;
|
|
62
60
|
/**
|
|
@@ -67,7 +65,6 @@ export declare function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vec
|
|
|
67
65
|
* @param bodyRegion - Body region to map
|
|
68
66
|
* @returns Corresponding body part
|
|
69
67
|
*
|
|
70
|
-
* @public
|
|
71
68
|
*/
|
|
72
69
|
export declare function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPart;
|
|
73
70
|
/**
|
|
@@ -82,7 +79,6 @@ export declare function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPar
|
|
|
82
79
|
* @param maxOffset - Maximum offset in any direction (default: 0.1)
|
|
83
80
|
* @returns New position with random offset
|
|
84
81
|
*
|
|
85
|
-
* @public
|
|
86
82
|
*/
|
|
87
83
|
export declare function addRandomOffset(basePosition: THREE.Vector3, maxOffset?: number): THREE.Vector3;
|
|
88
84
|
/**
|
|
@@ -97,7 +93,6 @@ export declare function addRandomOffset(basePosition: THREE.Vector3, maxOffset?:
|
|
|
97
93
|
* @param maxOffset - Maximum offset for randomization
|
|
98
94
|
* @returns Position with random offset
|
|
99
95
|
*
|
|
100
|
-
* @public
|
|
101
96
|
*/
|
|
102
97
|
export declare function getInjuryPositionWithOffset(bodyRegion: BodyRegion, maxOffset?: number): THREE.Vector3;
|
|
103
98
|
/**
|
|
@@ -110,7 +105,6 @@ export declare function getInjuryPositionWithOffset(bodyRegion: BodyRegion, maxO
|
|
|
110
105
|
* @param tolerance - Distance tolerance (default: 0.3)
|
|
111
106
|
* @returns Whether position is within body part bounds
|
|
112
107
|
*
|
|
113
|
-
* @public
|
|
114
108
|
*/
|
|
115
109
|
export declare function isPositionInBodyPart(position: THREE.Vector3, bodyPart: BodyPart, tolerance?: number): boolean;
|
|
116
110
|
//# sourceMappingURL=BodyPartPositionMapping.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyPartPositionMapping.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,yBAAyB;;IAEzB,mBAAmB;;IAEnB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,kBAAkB;;CAEV,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"BodyPartPositionMapping.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,yBAAyB;;IAEzB,mBAAmB;;IAEnB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,kBAAkB;;CAEV,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,OAAO,CAsCrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,OAAO,CAwC3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CA8BxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAQf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAGf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAIT"}
|
|
@@ -46,7 +46,6 @@ var CHARACTER_DIMENSIONS = {
|
|
|
46
46
|
* @param bodyPart - Body part to get position for
|
|
47
47
|
* @returns 3D position vector
|
|
48
48
|
*
|
|
49
|
-
* @public
|
|
50
49
|
*/
|
|
51
50
|
function getBodyPartPosition(bodyPart) {
|
|
52
51
|
const headY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT / 2;
|
|
@@ -75,7 +74,6 @@ function getBodyPartPosition(bodyPart) {
|
|
|
75
74
|
* @param bodyRegion - Body region to get position for
|
|
76
75
|
* @returns 3D position vector
|
|
77
76
|
*
|
|
78
|
-
* @public
|
|
79
77
|
*/
|
|
80
78
|
function getBodyRegionPosition(bodyRegion) {
|
|
81
79
|
const { HEIGHT, LEG_LENGTH, SHOULDER_WIDTH } = CHARACTER_DIMENSIONS;
|
|
@@ -105,7 +103,6 @@ function getBodyRegionPosition(bodyRegion) {
|
|
|
105
103
|
* @param bodyRegion - Body region to map
|
|
106
104
|
* @returns Corresponding body part
|
|
107
105
|
*
|
|
108
|
-
* @public
|
|
109
106
|
*/
|
|
110
107
|
function mapBodyRegionToBodyPart(bodyRegion) {
|
|
111
108
|
switch (bodyRegion) {
|
|
@@ -132,7 +129,6 @@ function mapBodyRegionToBodyPart(bodyRegion) {
|
|
|
132
129
|
* @param maxOffset - Maximum offset in any direction (default: 0.1)
|
|
133
130
|
* @returns New position with random offset
|
|
134
131
|
*
|
|
135
|
-
* @public
|
|
136
132
|
*/
|
|
137
133
|
function addRandomOffset(basePosition, maxOffset = .1) {
|
|
138
134
|
const offset = new THREE.Vector3((Math.random() - .5) * maxOffset * 2, (Math.random() - .5) * maxOffset * 2, (Math.random() - .5) * maxOffset * 2);
|
|
@@ -150,7 +146,6 @@ function addRandomOffset(basePosition, maxOffset = .1) {
|
|
|
150
146
|
* @param maxOffset - Maximum offset for randomization
|
|
151
147
|
* @returns Position with random offset
|
|
152
148
|
*
|
|
153
|
-
* @public
|
|
154
149
|
*/
|
|
155
150
|
function getInjuryPositionWithOffset(bodyRegion, maxOffset = .1) {
|
|
156
151
|
return addRandomOffset(getBodyRegionPosition(bodyRegion), maxOffset);
|
|
@@ -165,7 +160,6 @@ function getInjuryPositionWithOffset(bodyRegion, maxOffset = .1) {
|
|
|
165
160
|
* @param tolerance - Distance tolerance (default: 0.3)
|
|
166
161
|
* @returns Whether position is within body part bounds
|
|
167
162
|
*
|
|
168
|
-
* @public
|
|
169
163
|
*/
|
|
170
164
|
function isPositionInBodyPart(position, bodyPart, tolerance = .3) {
|
|
171
165
|
const partPosition = getBodyPartPosition(bodyPart);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyPartPositionMapping.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"sourcesContent":["/**\n * Body Part Position Mapping Utilities\n * \n * **Korean**: 신체 부위 위치 매핑 유틸리티\n * \n * Maps body regions and body parts to 3D positions on character models\n * for accurate trauma visualization placement.\n * \n * @module systems/bodypart/BodyPartPositionMapping\n * @category Body Part System\n * @korean 신체부위위치매핑\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Standard character model dimensions.\n * \n * Based on average human proportions scaled for game character.\n * Character center is at [0, 0, 0], standing upright.\n */\nexport const CHARACTER_DIMENSIONS = {\n /** Total height from feet to head */\n HEIGHT: 2.0,\n /** Width at shoulders */\n SHOULDER_WIDTH: 0.6,\n /** Torso height */\n TORSO_HEIGHT: 0.8,\n /** Leg length */\n LEG_LENGTH: 1.0,\n /** Arm length */\n ARM_LENGTH: 0.7,\n /** Head height */\n HEAD_HEIGHT: 0.3,\n} as const;\n\n/**\n * Get 3D position for a body part on character model.\n * \n * **Korean**: 신체 부위 3D 위치 가져오기\n * \n * Returns center position of the body part relative to character origin.\n * Character is centered at [0, 0, 0] standing upright.\n * Positions are calculated from CHARACTER_DIMENSIONS for consistency.\n * \n * @param bodyPart - Body part to get position for\n * @returns 3D position vector\n * \n
|
|
1
|
+
{"version":3,"file":"BodyPartPositionMapping.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"sourcesContent":["/**\n * Body Part Position Mapping Utilities\n * \n * **Korean**: 신체 부위 위치 매핑 유틸리티\n * \n * Maps body regions and body parts to 3D positions on character models\n * for accurate trauma visualization placement.\n * \n * @module systems/bodypart/BodyPartPositionMapping\n * @category Body Part System\n * @korean 신체부위위치매핑\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Standard character model dimensions.\n * \n * Based on average human proportions scaled for game character.\n * Character center is at [0, 0, 0], standing upright.\n */\nexport const CHARACTER_DIMENSIONS = {\n /** Total height from feet to head */\n HEIGHT: 2.0,\n /** Width at shoulders */\n SHOULDER_WIDTH: 0.6,\n /** Torso height */\n TORSO_HEIGHT: 0.8,\n /** Leg length */\n LEG_LENGTH: 1.0,\n /** Arm length */\n ARM_LENGTH: 0.7,\n /** Head height */\n HEAD_HEIGHT: 0.3,\n} as const;\n\n/**\n * Get 3D position for a body part on character model.\n * \n * **Korean**: 신체 부위 3D 위치 가져오기\n * \n * Returns center position of the body part relative to character origin.\n * Character is centered at [0, 0, 0] standing upright.\n * Positions are calculated from CHARACTER_DIMENSIONS for consistency.\n * \n * @param bodyPart - Body part to get position for\n * @returns 3D position vector\n * \n */\nexport function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3 {\n // Calculate positions from CHARACTER_DIMENSIONS\n const headY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT / 2;\n const neckY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT;\n const torsoTop = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const torsoBottom = neckY - (2 * CHARACTER_DIMENSIONS.TORSO_HEIGHT) / 3;\n const armY = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const legY = CHARACTER_DIMENSIONS.LEG_LENGTH / 2;\n \n switch (bodyPart) {\n case BodyPart.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyPart.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyPart.TORSO_UPPER:\n return new THREE.Vector3(0, torsoTop, 0);\n\n case BodyPart.TORSO_LOWER:\n return new THREE.Vector3(0, torsoBottom, 0);\n\n case BodyPart.ARM_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.ARM_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.LEG_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n case BodyPart.LEG_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, CHARACTER_DIMENSIONS.HEIGHT / 2, 0);\n }\n}\n\n/**\n * Get 3D position for a body region on character model.\n * \n * **Korean**: 신체 영역 3D 위치 가져오기\n * \n * @param bodyRegion - Body region to get position for\n * @returns 3D position vector\n * \n */\nexport function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vector3 {\n // Calculate positions based on CHARACTER_DIMENSIONS for single source of truth\n const { HEIGHT, LEG_LENGTH, SHOULDER_WIDTH } = CHARACTER_DIMENSIONS;\n \n const headY = HEIGHT * 0.9; // 1.8 for HEIGHT 2.0\n const neckY = HEIGHT * 0.8; // 1.6 for HEIGHT 2.0\n const torsoY = HEIGHT * 0.6; // 1.2 for HEIGHT 2.0\n const coreY = HEIGHT * 0.45; // 0.9 for HEIGHT 2.0\n const armY = torsoY; // Arms at torso level\n const legY = LEG_LENGTH * 0.4; // 0.4 for LEG_LENGTH 1.0\n\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyRegion.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyRegion.TORSO:\n return new THREE.Vector3(0, torsoY, 0);\n\n case BodyRegion.CORE:\n return new THREE.Vector3(0, coreY, 0);\n\n case BodyRegion.LEFT_ARM:\n return new THREE.Vector3(-SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.RIGHT_ARM:\n return new THREE.Vector3(SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.LEFT_LEG:\n return new THREE.Vector3(-SHOULDER_WIDTH * 0.25, legY, 0);\n\n case BodyRegion.RIGHT_LEG:\n return new THREE.Vector3(SHOULDER_WIDTH * 0.25, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, torsoY, 0);\n }\n}\n\n/**\n * Map BodyRegion to corresponding BodyPart.\n * \n * **Korean**: 신체 영역을 신체 부위로 매핑\n * \n * @param bodyRegion - Body region to map\n * @returns Corresponding body part\n * \n */\nexport function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPart {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return BodyPart.HEAD;\n\n case BodyRegion.NECK:\n return BodyPart.NECK;\n\n case BodyRegion.TORSO:\n return BodyPart.TORSO_UPPER;\n\n case BodyRegion.CORE:\n return BodyPart.TORSO_LOWER;\n\n case BodyRegion.LEFT_ARM:\n return BodyPart.ARM_LEFT;\n\n case BodyRegion.RIGHT_ARM:\n return BodyPart.ARM_RIGHT;\n\n case BodyRegion.LEFT_LEG:\n return BodyPart.LEG_LEFT;\n\n case BodyRegion.RIGHT_LEG:\n return BodyPart.LEG_RIGHT;\n\n default:\n // Default to upper torso\n return BodyPart.TORSO_UPPER;\n }\n}\n\n/**\n * Add random offset to position for varied injury placement.\n * \n * **Korean**: 부상 위치에 무작위 오프셋 추가\n * \n * Adds slight randomness to injury positions to avoid exact overlap\n * and create more realistic trauma distribution.\n * \n * @param basePosition - Base position to offset from\n * @param maxOffset - Maximum offset in any direction (default: 0.1)\n * @returns New position with random offset\n * \n */\nexport function addRandomOffset(\n basePosition: THREE.Vector3,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const offset = new THREE.Vector3(\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2\n );\n\n return basePosition.clone().add(offset);\n}\n\n/**\n * Get injury position with slight randomization.\n * \n * **Korean**: 무작위 오프셋이 포함된 부상 위치 가져오기\n * \n * Convenience function that combines region-to-position mapping\n * with random offset for natural injury placement.\n * \n * @param bodyRegion - Body region that was hit\n * @param maxOffset - Maximum offset for randomization\n * @returns Position with random offset\n * \n */\nexport function getInjuryPositionWithOffset(\n bodyRegion: BodyRegion,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const basePosition = getBodyRegionPosition(bodyRegion);\n return addRandomOffset(basePosition, maxOffset);\n}\n\n/**\n * Check if position is within body part bounds.\n * \n * **Korean**: 위치가 신체 부위 경계 내에 있는지 확인\n * \n * @param position - Position to check\n * @param bodyPart - Body part to check against\n * @param tolerance - Distance tolerance (default: 0.3)\n * @returns Whether position is within body part bounds\n * \n */\nexport function isPositionInBodyPart(\n position: THREE.Vector3,\n bodyPart: BodyPart,\n tolerance: number = 0.3\n): boolean {\n const partPosition = getBodyPartPosition(bodyPart);\n const distance = position.distanceTo(partPosition);\n return distance <= tolerance;\n}\n"],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ import { InjuryTracker } from "./InjuryTracker";
|
|
|
18
18
|
*
|
|
19
19
|
* **Korean**: 전투 피해 이벤트 데이터
|
|
20
20
|
*
|
|
21
|
-
* @public
|
|
22
21
|
*/
|
|
23
22
|
export interface CombatDamageEvent {
|
|
24
23
|
/** Damage amount (0-100) */
|
|
@@ -35,7 +34,6 @@ export interface CombatDamageEvent {
|
|
|
35
34
|
/**
|
|
36
35
|
* Configuration for combat injury integration.
|
|
37
36
|
*
|
|
38
|
-
* @public
|
|
39
37
|
*/
|
|
40
38
|
export interface CombatInjuryConfig {
|
|
41
39
|
/** Enable automatic injury tracking */
|
|
@@ -56,7 +54,6 @@ export interface CombatInjuryConfig {
|
|
|
56
54
|
* Note: A valid `tracker` must still be supplied by the caller.
|
|
57
55
|
* This provides defaults for other configuration values only.
|
|
58
56
|
*
|
|
59
|
-
* @public
|
|
60
57
|
*/
|
|
61
58
|
export declare const DEFAULT_COMBAT_INJURY_CONFIG: Omit<CombatInjuryConfig, 'tracker'>;
|
|
62
59
|
/**
|
|
@@ -90,7 +87,6 @@ export declare const DEFAULT_COMBAT_INJURY_CONFIG: Omit<CombatInjuryConfig, 'tra
|
|
|
90
87
|
* const injuries = handler.getInjuries();
|
|
91
88
|
* ```
|
|
92
89
|
*
|
|
93
|
-
* @public
|
|
94
90
|
*/
|
|
95
91
|
export declare class CombatInjuryIntegration {
|
|
96
92
|
private tracker;
|
|
@@ -107,7 +103,6 @@ export declare class CombatInjuryIntegration {
|
|
|
107
103
|
* @param event - Combat damage event
|
|
108
104
|
* @returns Whether injury was recorded (false if damage too low)
|
|
109
105
|
*
|
|
110
|
-
* @public
|
|
111
106
|
*/
|
|
112
107
|
recordCombatDamage(event: CombatDamageEvent): boolean;
|
|
113
108
|
/**
|
|
@@ -118,7 +113,6 @@ export declare class CombatInjuryIntegration {
|
|
|
118
113
|
* @param damage - Damage amount
|
|
119
114
|
* @returns Whether to show blood effects
|
|
120
115
|
*
|
|
121
|
-
* @public
|
|
122
116
|
*/
|
|
123
117
|
shouldShowBloodEffect(damage: number): boolean;
|
|
124
118
|
/**
|
|
@@ -139,7 +133,6 @@ export declare class CombatInjuryIntegration {
|
|
|
139
133
|
*
|
|
140
134
|
* @returns Array of injuries
|
|
141
135
|
*
|
|
142
|
-
* @public
|
|
143
136
|
*/
|
|
144
137
|
getInjuries(): import("./InjuryTracker").InjuryLocation[];
|
|
145
138
|
/**
|
|
@@ -147,7 +140,6 @@ export declare class CombatInjuryIntegration {
|
|
|
147
140
|
*
|
|
148
141
|
* @returns InjuryTracker instance
|
|
149
142
|
*
|
|
150
|
-
* @public
|
|
151
143
|
*/
|
|
152
144
|
getTracker(): InjuryTracker;
|
|
153
145
|
/**
|
|
@@ -155,7 +147,6 @@ export declare class CombatInjuryIntegration {
|
|
|
155
147
|
*
|
|
156
148
|
* **Korean**: 모든 부상 초기화
|
|
157
149
|
*
|
|
158
|
-
* @public
|
|
159
150
|
*/
|
|
160
151
|
clearInjuries(): void;
|
|
161
152
|
/**
|
|
@@ -163,7 +154,6 @@ export declare class CombatInjuryIntegration {
|
|
|
163
154
|
*
|
|
164
155
|
* **Korean**: 만료된 부상 제거
|
|
165
156
|
*
|
|
166
|
-
* @public
|
|
167
157
|
*/
|
|
168
158
|
removeExpiredInjuries(): void;
|
|
169
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatInjuryIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/CombatInjuryIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD
|
|
1
|
+
{"version":3,"file":"CombatInjuryIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/CombatInjuryIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,kBAAkB;IAClB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAClC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAInE,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAMtC;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAgCrD;;;;;;;;OAQG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;;;;;;OAOG;IACH,WAAW;IAIX;;;;;OAKG;IACH,UAAU,IAAI,aAAa;IAI3B;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAIrB;;;;;OAKG;IACH,qBAAqB,IAAI,IAAI;CAG9B"}
|
|
@@ -8,7 +8,6 @@ import { getInjuryPositionWithOffset, mapBodyRegionToBodyPart } from "./BodyPart
|
|
|
8
8
|
* Note: A valid `tracker` must still be supplied by the caller.
|
|
9
9
|
* This provides defaults for other configuration values only.
|
|
10
10
|
*
|
|
11
|
-
* @public
|
|
12
11
|
*/
|
|
13
12
|
var DEFAULT_COMBAT_INJURY_CONFIG = {
|
|
14
13
|
enabled: true,
|
|
@@ -46,7 +45,6 @@ var DEFAULT_COMBAT_INJURY_CONFIG = {
|
|
|
46
45
|
* const injuries = handler.getInjuries();
|
|
47
46
|
* ```
|
|
48
47
|
*
|
|
49
|
-
* @public
|
|
50
48
|
*/
|
|
51
49
|
var CombatInjuryIntegration = class {
|
|
52
50
|
tracker;
|
|
@@ -66,7 +64,6 @@ var CombatInjuryIntegration = class {
|
|
|
66
64
|
* @param event - Combat damage event
|
|
67
65
|
* @returns Whether injury was recorded (false if damage too low)
|
|
68
66
|
*
|
|
69
|
-
* @public
|
|
70
67
|
*/
|
|
71
68
|
recordCombatDamage(event) {
|
|
72
69
|
if (!this.config.enabled) return false;
|
|
@@ -84,7 +81,6 @@ var CombatInjuryIntegration = class {
|
|
|
84
81
|
* @param damage - Damage amount
|
|
85
82
|
* @returns Whether to show blood effects
|
|
86
83
|
*
|
|
87
|
-
* @public
|
|
88
84
|
*/
|
|
89
85
|
shouldShowBloodEffect(damage) {
|
|
90
86
|
return damage > this.config.bloodThreshold;
|
|
@@ -119,7 +115,6 @@ var CombatInjuryIntegration = class {
|
|
|
119
115
|
*
|
|
120
116
|
* @returns Array of injuries
|
|
121
117
|
*
|
|
122
|
-
* @public
|
|
123
118
|
*/
|
|
124
119
|
getInjuries() {
|
|
125
120
|
return this.tracker.getInjuries();
|
|
@@ -129,7 +124,6 @@ var CombatInjuryIntegration = class {
|
|
|
129
124
|
*
|
|
130
125
|
* @returns InjuryTracker instance
|
|
131
126
|
*
|
|
132
|
-
* @public
|
|
133
127
|
*/
|
|
134
128
|
getTracker() {
|
|
135
129
|
return this.tracker;
|
|
@@ -139,7 +133,6 @@ var CombatInjuryIntegration = class {
|
|
|
139
133
|
*
|
|
140
134
|
* **Korean**: 모든 부상 초기화
|
|
141
135
|
*
|
|
142
|
-
* @public
|
|
143
136
|
*/
|
|
144
137
|
clearInjuries() {
|
|
145
138
|
this.tracker.clearInjuries();
|
|
@@ -149,7 +142,6 @@ var CombatInjuryIntegration = class {
|
|
|
149
142
|
*
|
|
150
143
|
* **Korean**: 만료된 부상 제거
|
|
151
144
|
*
|
|
152
|
-
* @public
|
|
153
145
|
*/
|
|
154
146
|
removeExpiredInjuries() {
|
|
155
147
|
this.tracker.removeExpiredInjuries();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatInjuryIntegration.js","names":[],"sources":["../../../src/systems/bodypart/CombatInjuryIntegration.ts"],"sourcesContent":["/**\n * Combat Injury Integration\n * \n * **Korean**: 전투 부상 통합\n * \n * Integrates InjuryTracker with combat damage events to automatically\n * record injuries and trigger visual trauma effects during combat.\n * \n * @module systems/bodypart/CombatInjuryIntegration\n * @category Body Part System\n * @korean 전투부상통합\n */\n\nimport * as THREE from \"three\";\nimport { BodyRegion, DamageType } from \"../../types/common\";\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport {\n getInjuryPositionWithOffset,\n mapBodyRegionToBodyPart,\n} from \"./BodyPartPositionMapping\";\nimport { InjuryType } from \"../../types/injury\";\n\n/**\n * Combat damage event data.\n * \n * **Korean**: 전투 피해 이벤트 데이터\n * \n
|
|
1
|
+
{"version":3,"file":"CombatInjuryIntegration.js","names":[],"sources":["../../../src/systems/bodypart/CombatInjuryIntegration.ts"],"sourcesContent":["/**\n * Combat Injury Integration\n * \n * **Korean**: 전투 부상 통합\n * \n * Integrates InjuryTracker with combat damage events to automatically\n * record injuries and trigger visual trauma effects during combat.\n * \n * @module systems/bodypart/CombatInjuryIntegration\n * @category Body Part System\n * @korean 전투부상통합\n */\n\nimport * as THREE from \"three\";\nimport { BodyRegion, DamageType } from \"../../types/common\";\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport {\n getInjuryPositionWithOffset,\n mapBodyRegionToBodyPart,\n} from \"./BodyPartPositionMapping\";\nimport { InjuryType } from \"../../types/injury\";\n\n/**\n * Combat damage event data.\n * \n * **Korean**: 전투 피해 이벤트 데이터\n * \n */\nexport interface CombatDamageEvent {\n /** Damage amount (0-100) */\n readonly damage: number;\n /** Body region hit */\n readonly bodyRegion: BodyRegion;\n /** Damage type */\n readonly damageType?: DamageType;\n /** Optional specific position override */\n readonly position?: THREE.Vector3;\n /** Whether this is a critical hit */\n readonly isCritical?: boolean;\n}\n\n/**\n * Configuration for combat injury integration.\n * \n */\nexport interface CombatInjuryConfig {\n /** Enable automatic injury tracking */\n readonly enabled: boolean;\n /** Minimum damage to create injury */\n readonly minDamage: number;\n /** Damage threshold for blood effects */\n readonly bloodThreshold: number;\n /** \n * InjuryTracker instance to use for this integration.\n * Must be explicitly provided per character; singleton usage is no longer supported.\n */\n readonly tracker: InjuryTracker;\n}\n\n/**\n * Default combat injury configuration.\n * \n * Note: A valid `tracker` must still be supplied by the caller.\n * This provides defaults for other configuration values only.\n * \n */\nexport const DEFAULT_COMBAT_INJURY_CONFIG: Omit<CombatInjuryConfig, 'tracker'> = {\n enabled: true,\n minDamage: 5,\n bloodThreshold: 30,\n} as const;\n\n/**\n * Combat Injury Integration Handler.\n * \n * **Korean**: 전투 부상 통합 핸들러\n * \n * Processes combat damage events and records injuries for visualization.\n * Automatically maps damage types to injury types and applies blood effects.\n * \n * @example\n * ```typescript\n * // Recommended: Use PlayerInjuryTrackingManager for per-player tracking\n * import { playerInjuryManager } from '@/systems/bodypart';\n * const integration = playerInjuryManager.getIntegrationForPlayer('player-1');\n * \n * // Or create with explicit tracker for testing/custom scenarios\n * const handler = new CombatInjuryIntegration({\n * ...DEFAULT_COMBAT_INJURY_CONFIG,\n * tracker: new InjuryTracker(),\n * });\n * \n * // Record combat damage\n * handler.recordCombatDamage({\n * damage: 35,\n * bodyRegion: BodyRegion.TORSO,\n * damageType: DamageType.BLUNT,\n * });\n * \n * // Get injuries for visualization\n * const injuries = handler.getInjuries();\n * ```\n * \n */\nexport class CombatInjuryIntegration {\n private tracker: InjuryTracker;\n private config: CombatInjuryConfig;\n\n constructor(config: CombatInjuryConfig) {\n this.config = config;\n // Tracker is now required in CombatInjuryConfig interface\n this.tracker = config.tracker;\n }\n\n /**\n * Record injury from combat damage event.\n * \n * **Korean**: 전투 피해로부터 부상 기록\n * \n * Automatically determines injury type from damage type and applies\n * appropriate visual effects.\n * \n * @param event - Combat damage event\n * @returns Whether injury was recorded (false if damage too low)\n * \n */\n recordCombatDamage(event: CombatDamageEvent): boolean {\n if (!this.config.enabled) {\n return false;\n }\n\n if (event.damage < this.config.minDamage) {\n return false;\n }\n\n // Determine injury type from damage type\n const injuryType = this.getInjuryTypeFromDamage(event.damageType);\n\n // Get position for injury\n const position =\n event.position ?? getInjuryPositionWithOffset(event.bodyRegion, 0.15);\n\n // Map body region to body part\n const bodyPart = mapBodyRegionToBodyPart(event.bodyRegion);\n\n // Record injury\n const recordedInjury = this.tracker.recordInjury(\n bodyPart,\n event.bodyRegion,\n position,\n event.damage,\n injuryType\n );\n\n // Return true only if the injury was actually recorded\n return recordedInjury !== null;\n }\n\n /**\n * Check if damage should trigger blood effects.\n * \n * **Korean**: 피해가 출혈 효과를 발생시켜야 하는지 확인\n * \n * @param damage - Damage amount\n * @returns Whether to show blood effects\n * \n */\n shouldShowBloodEffect(damage: number): boolean {\n return damage > this.config.bloodThreshold;\n }\n\n /**\n * Get injury type from damage type.\n * \n * **Korean**: 피해 타입으로부터 부상 타입 가져오기\n * \n * @param damageType - Type of damage dealt\n * @returns Corresponding injury type for visualization\n * \n * @private\n */\n private getInjuryTypeFromDamage(damageType?: DamageType): InjuryType {\n if (!damageType) {\n return InjuryType.BRUISE; // Default to bruise\n }\n\n switch (damageType) {\n case DamageType.BLUNT:\n case DamageType.IMPACT:\n case DamageType.CRUSHING:\n return InjuryType.BRUISE;\n\n case DamageType.PIERCING:\n case DamageType.SHARP:\n return InjuryType.CUT;\n\n case DamageType.SLASHING:\n return InjuryType.LACERATION;\n\n case DamageType.JOINT:\n return InjuryType.FRACTURE;\n\n default:\n return InjuryType.BRUISE;\n }\n }\n\n /**\n * Get all tracked injuries.\n * \n * **Korean**: 모든 추적된 부상 가져오기\n * \n * @returns Array of injuries\n * \n */\n getInjuries() {\n return this.tracker.getInjuries();\n }\n\n /**\n * Get tracker instance.\n * \n * @returns InjuryTracker instance\n * \n */\n getTracker(): InjuryTracker {\n return this.tracker;\n }\n\n /**\n * Clear all injuries (for new round/match).\n * \n * **Korean**: 모든 부상 초기화\n * \n */\n clearInjuries(): void {\n this.tracker.clearInjuries();\n }\n\n /**\n * Remove expired injuries.\n * \n * **Korean**: 만료된 부상 제거\n * \n */\n removeExpiredInjuries(): void {\n this.tracker.removeExpiredInjuries();\n }\n}\n"],"mappings":";;;;;;;;;;;AAkEA,IAAa,+BAAoE;CAC/E,SAAS;CACT,WAAW;CACX,gBAAgB;CACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCD,IAAa,0BAAb,MAAqC;CACnC;CACA;CAEA,YAAY,QAA4B;EACtC,KAAK,SAAS;EAEd,KAAK,UAAU,OAAO;;;;;;;;;;;;;;CAexB,mBAAmB,OAAmC;EACpD,IAAI,CAAC,KAAK,OAAO,SACf,OAAO;EAGT,IAAI,MAAM,SAAS,KAAK,OAAO,WAC7B,OAAO;EAIT,MAAM,aAAa,KAAK,wBAAwB,MAAM,WAAW;EAGjE,MAAM,WACJ,MAAM,YAAY,4BAA4B,MAAM,YAAY,IAAK;EAGvE,MAAM,WAAW,wBAAwB,MAAM,WAAW;EAY1D,OATuB,KAAK,QAAQ,aAClC,UACA,MAAM,YACN,UACA,MAAM,QACN,WAIK,KAAmB;;;;;;;;;;;CAY5B,sBAAsB,QAAyB;EAC7C,OAAO,SAAS,KAAK,OAAO;;;;;;;;;;;;CAa9B,wBAAgC,YAAqC;EACnE,IAAI,CAAC,YACH,OAAO,WAAW;EAGpB,QAAQ,YAAR;GACE,KAAK,WAAW;GAChB,KAAK,WAAW;GAChB,KAAK,WAAW,UACd,OAAO,WAAW;GAEpB,KAAK,WAAW;GAChB,KAAK,WAAW,OACd,OAAO,WAAW;GAEpB,KAAK,WAAW,UACd,OAAO,WAAW;GAEpB,KAAK,WAAW,OACd,OAAO,WAAW;GAEpB,SACE,OAAO,WAAW;;;;;;;;;;;CAYxB,cAAc;EACZ,OAAO,KAAK,QAAQ,aAAa;;;;;;;;CASnC,aAA4B;EAC1B,OAAO,KAAK;;;;;;;;CASd,gBAAsB;EACpB,KAAK,QAAQ,eAAe;;;;;;;;CAS9B,wBAA8B;EAC5B,KAAK,QAAQ,uBAAuB"}
|
|
@@ -21,7 +21,6 @@ import { Injury } from "../../types/injury";
|
|
|
21
21
|
* @param playerId - Optional player ID for multi-player scenarios
|
|
22
22
|
* @returns Injury in TraumaOverlay3D format
|
|
23
23
|
*
|
|
24
|
-
* @public
|
|
25
24
|
*/
|
|
26
25
|
export declare function convertInjuryForVisualization(injuryLocation: InjuryLocation, playerId?: string | number): Injury;
|
|
27
26
|
/**
|
|
@@ -33,7 +32,6 @@ export declare function convertInjuryForVisualization(injuryLocation: InjuryLoca
|
|
|
33
32
|
* @param playerId - Optional player ID
|
|
34
33
|
* @returns Array of injuries in TraumaOverlay3D format
|
|
35
34
|
*
|
|
36
|
-
* @public
|
|
37
35
|
*/
|
|
38
36
|
export declare function convertInjuriesForVisualization(injuryLocations: InjuryLocation[], playerId?: string | number): Injury[];
|
|
39
37
|
//# sourceMappingURL=InjuryIntegration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InjuryIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"InjuryIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GACzB,MAAM,CAeR;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,eAAe,EAAE,cAAc,EAAE,EACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GACzB,MAAM,EAAE,CAIV"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
* @param playerId - Optional player ID for multi-player scenarios
|
|
9
9
|
* @returns Injury in TraumaOverlay3D format
|
|
10
10
|
*
|
|
11
|
-
* @public
|
|
12
11
|
*/
|
|
13
12
|
function convertInjuryForVisualization(injuryLocation, playerId) {
|
|
14
13
|
return {
|
|
@@ -35,7 +34,6 @@ function convertInjuryForVisualization(injuryLocation, playerId) {
|
|
|
35
34
|
* @param playerId - Optional player ID
|
|
36
35
|
* @returns Array of injuries in TraumaOverlay3D format
|
|
37
36
|
*
|
|
38
|
-
* @public
|
|
39
37
|
*/
|
|
40
38
|
function convertInjuriesForVisualization(injuryLocations, playerId) {
|
|
41
39
|
return injuryLocations.map((loc) => convertInjuryForVisualization(loc, playerId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InjuryIntegration.js","names":[],"sources":["../../../src/systems/bodypart/InjuryIntegration.ts"],"sourcesContent":["/**\n * Injury Integration Utilities\n * \n * **Korean**: 부상 통합 유틸리티\n * \n * Utilities to convert between InjuryTracker format and TraumaOverlay3D format,\n * enabling seamless integration of injury tracking with visual trauma display.\n * \n * @module systems/bodypart/InjuryIntegration\n * @category Body Part System\n * @korean 부상통합\n */\n\nimport { InjuryLocation } from \"./InjuryTracker\";\nimport { Injury } from \"../../types/injury\";\n\n/**\n * Convert InjuryLocation to TraumaOverlay3D Injury format.\n * \n * **Korean**: InjuryLocation을 TraumaOverlay3D Injury 형식으로 변환\n * \n * @param injuryLocation - Injury from InjuryTracker\n * @param playerId - Optional player ID for multi-player scenarios\n * @returns Injury in TraumaOverlay3D format\n * \n
|
|
1
|
+
{"version":3,"file":"InjuryIntegration.js","names":[],"sources":["../../../src/systems/bodypart/InjuryIntegration.ts"],"sourcesContent":["/**\n * Injury Integration Utilities\n * \n * **Korean**: 부상 통합 유틸리티\n * \n * Utilities to convert between InjuryTracker format and TraumaOverlay3D format,\n * enabling seamless integration of injury tracking with visual trauma display.\n * \n * @module systems/bodypart/InjuryIntegration\n * @category Body Part System\n * @korean 부상통합\n */\n\nimport { InjuryLocation } from \"./InjuryTracker\";\nimport { Injury } from \"../../types/injury\";\n\n/**\n * Convert InjuryLocation to TraumaOverlay3D Injury format.\n * \n * **Korean**: InjuryLocation을 TraumaOverlay3D Injury 형식으로 변환\n * \n * @param injuryLocation - Injury from InjuryTracker\n * @param playerId - Optional player ID for multi-player scenarios\n * @returns Injury in TraumaOverlay3D format\n * \n */\nexport function convertInjuryForVisualization(\n injuryLocation: InjuryLocation,\n playerId?: string | number\n): Injury {\n return {\n id: injuryLocation.id,\n region: injuryLocation.bodyRegion,\n type: injuryLocation.type,\n position: [\n injuryLocation.position.x,\n injuryLocation.position.y,\n injuryLocation.position.z,\n ],\n severity: injuryLocation.severity / 100, // Convert 0-100 to 0-1\n hitCount: injuryLocation.hitCount,\n timestamp: injuryLocation.timestamp,\n playerId,\n };\n}\n\n/**\n * Convert array of InjuryLocations to TraumaOverlay3D Injuries.\n * \n * **Korean**: InjuryLocation 배열을 TraumaOverlay3D Injuries로 변환\n * \n * @param injuryLocations - Array of injuries from InjuryTracker\n * @param playerId - Optional player ID\n * @returns Array of injuries in TraumaOverlay3D format\n * \n */\nexport function convertInjuriesForVisualization(\n injuryLocations: InjuryLocation[],\n playerId?: string | number\n): Injury[] {\n return injuryLocations.map((loc) =>\n convertInjuryForVisualization(loc, playerId)\n );\n}\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,8BACd,gBACA,UACQ;CACR,OAAO;EACL,IAAI,eAAe;EACnB,QAAQ,eAAe;EACvB,MAAM,eAAe;EACrB,UAAU;GACR,eAAe,SAAS;GACxB,eAAe,SAAS;GACxB,eAAe,SAAS;GACzB;EACD,UAAU,eAAe,WAAW;EACpC,UAAU,eAAe;EACzB,WAAW,eAAe;EAC1B;EACD;;;;;;;;;;;;AAaH,SAAgB,gCACd,iBACA,UACU;CACV,OAAO,gBAAgB,KAAK,QAC1B,8BAA8B,KAAK,SAAS,CAC7C"}
|