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
|
@@ -33,7 +33,6 @@ import { BodyRegion } from "../../types/common";
|
|
|
33
33
|
* Records a single injury with its location, severity, and cumulative hit count.
|
|
34
34
|
* Used for progressive bruising visualization.
|
|
35
35
|
*
|
|
36
|
-
* @public
|
|
37
36
|
* @category Injury Tracking
|
|
38
37
|
* @korean 부상위치
|
|
39
38
|
*/
|
|
@@ -58,7 +57,6 @@ export interface InjuryLocation {
|
|
|
58
57
|
/**
|
|
59
58
|
* Configuration for injury tracking behavior.
|
|
60
59
|
*
|
|
61
|
-
* @public
|
|
62
60
|
* @category Injury Tracking
|
|
63
61
|
*/
|
|
64
62
|
export interface InjuryTrackerConfig {
|
|
@@ -76,7 +74,6 @@ export interface InjuryTrackerConfig {
|
|
|
76
74
|
/**
|
|
77
75
|
* Default injury tracker configuration.
|
|
78
76
|
*
|
|
79
|
-
* @public
|
|
80
77
|
*/
|
|
81
78
|
export declare const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig;
|
|
82
79
|
/**
|
|
@@ -104,7 +101,6 @@ export declare const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig;
|
|
|
104
101
|
* const injuries = tracker.getInjuries();
|
|
105
102
|
* ```
|
|
106
103
|
*
|
|
107
|
-
* @public
|
|
108
104
|
* @category Body Part System
|
|
109
105
|
*/
|
|
110
106
|
export declare class InjuryTracker {
|
|
@@ -128,7 +124,6 @@ export declare class InjuryTracker {
|
|
|
128
124
|
* @param type - Type of injury
|
|
129
125
|
* @returns The created or updated injury, or null if damage is below threshold
|
|
130
126
|
*
|
|
131
|
-
* @public
|
|
132
127
|
*/
|
|
133
128
|
recordInjury(bodyPart: BodyPart, bodyRegion: BodyRegion, position: THREE.Vector3, damage: number, type: InjuryType): InjuryLocation | null;
|
|
134
129
|
/**
|
|
@@ -141,7 +136,6 @@ export declare class InjuryTracker {
|
|
|
141
136
|
* @param threshold - Distance threshold
|
|
142
137
|
* @returns Nearby injury or null
|
|
143
138
|
*
|
|
144
|
-
* @public
|
|
145
139
|
*/
|
|
146
140
|
findNearbyInjury(bodyPart: BodyPart, position: THREE.Vector3, threshold: number): InjuryLocation | null;
|
|
147
141
|
/**
|
|
@@ -151,7 +145,6 @@ export declare class InjuryTracker {
|
|
|
151
145
|
*
|
|
152
146
|
* @returns Array of all injuries
|
|
153
147
|
*
|
|
154
|
-
* @public
|
|
155
148
|
*/
|
|
156
149
|
getInjuries(): InjuryLocation[];
|
|
157
150
|
/**
|
|
@@ -162,7 +155,6 @@ export declare class InjuryTracker {
|
|
|
162
155
|
* @param bodyPart - Body part to query
|
|
163
156
|
* @returns Array of injuries on that body part
|
|
164
157
|
*
|
|
165
|
-
* @public
|
|
166
158
|
*/
|
|
167
159
|
getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[];
|
|
168
160
|
/**
|
|
@@ -182,7 +174,6 @@ export declare class InjuryTracker {
|
|
|
182
174
|
* @param hitCount - Number of hits to same location
|
|
183
175
|
* @returns Hex color string
|
|
184
176
|
*
|
|
185
|
-
* @public
|
|
186
177
|
*/
|
|
187
178
|
getBruiseColor(severity: number, hitCount: number): string;
|
|
188
179
|
/**
|
|
@@ -193,7 +184,6 @@ export declare class InjuryTracker {
|
|
|
193
184
|
* @param damage - Damage amount
|
|
194
185
|
* @returns Whether to show blood effects
|
|
195
186
|
*
|
|
196
|
-
* @public
|
|
197
187
|
*/
|
|
198
188
|
shouldShowBloodEffect(damage: number): boolean;
|
|
199
189
|
/**
|
|
@@ -207,7 +197,6 @@ export declare class InjuryTracker {
|
|
|
207
197
|
*
|
|
208
198
|
* **Korean**: 모든 부상 초기화
|
|
209
199
|
*
|
|
210
|
-
* @public
|
|
211
200
|
*/
|
|
212
201
|
clearInjuries(): void;
|
|
213
202
|
/**
|
|
@@ -215,7 +204,6 @@ export declare class InjuryTracker {
|
|
|
215
204
|
*
|
|
216
205
|
* **Korean**: 만료된 부상 제거
|
|
217
206
|
*
|
|
218
|
-
* @public
|
|
219
207
|
*/
|
|
220
208
|
removeExpiredInjuries(): void;
|
|
221
209
|
/**
|
|
@@ -223,7 +211,6 @@ export declare class InjuryTracker {
|
|
|
223
211
|
*
|
|
224
212
|
* @returns Current number of tracked injuries
|
|
225
213
|
*
|
|
226
|
-
* @public
|
|
227
214
|
*/
|
|
228
215
|
getInjuryCount(): number;
|
|
229
216
|
}
|
|
@@ -243,7 +230,6 @@ export declare class InjuryTracker {
|
|
|
243
230
|
* const player2Tracker = new InjuryTracker();
|
|
244
231
|
* ```
|
|
245
232
|
*
|
|
246
|
-
* @public
|
|
247
233
|
* @deprecated Use an explicitly scoped {@link InjuryTracker} instance per
|
|
248
234
|
* player/character instead of relying on this shared module singleton. This
|
|
249
235
|
* export is retained temporarily for backward compatibility with existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InjuryTracker.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"InjuryTracker.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;IACjC,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAMlC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,mBAAmD;IAMvE;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,cAAc,GAAG,IAAI;IAuDxB;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI;IAiBxB;;;;;;;OAOG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;;;;;;;OAQG;IACH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,EAAE;IAI3D;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAa1D;;;;;;;;OAQG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;OAKG;IACH,qBAAqB,IAAI,IAAI;IAe7B;;;;;OAKG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Default injury tracker configuration.
|
|
4
4
|
*
|
|
5
|
-
* @public
|
|
6
5
|
*/
|
|
7
6
|
var DEFAULT_INJURY_TRACKER_CONFIG = {
|
|
8
7
|
maxInjuries: 50,
|
|
@@ -36,7 +35,6 @@ var DEFAULT_INJURY_TRACKER_CONFIG = {
|
|
|
36
35
|
* const injuries = tracker.getInjuries();
|
|
37
36
|
* ```
|
|
38
37
|
*
|
|
39
|
-
* @public
|
|
40
38
|
* @category Body Part System
|
|
41
39
|
*/
|
|
42
40
|
var InjuryTracker = class {
|
|
@@ -64,7 +62,6 @@ var InjuryTracker = class {
|
|
|
64
62
|
* @param type - Type of injury
|
|
65
63
|
* @returns The created or updated injury, or null if damage is below threshold
|
|
66
64
|
*
|
|
67
|
-
* @public
|
|
68
65
|
*/
|
|
69
66
|
recordInjury(bodyPart, bodyRegion, position, damage, type) {
|
|
70
67
|
if (damage < this.config.minDamageForInjury) return null;
|
|
@@ -107,7 +104,6 @@ var InjuryTracker = class {
|
|
|
107
104
|
* @param threshold - Distance threshold
|
|
108
105
|
* @returns Nearby injury or null
|
|
109
106
|
*
|
|
110
|
-
* @public
|
|
111
107
|
*/
|
|
112
108
|
findNearbyInjury(bodyPart, position, threshold) {
|
|
113
109
|
let closestInjury = null;
|
|
@@ -128,7 +124,6 @@ var InjuryTracker = class {
|
|
|
128
124
|
*
|
|
129
125
|
* @returns Array of all injuries
|
|
130
126
|
*
|
|
131
|
-
* @public
|
|
132
127
|
*/
|
|
133
128
|
getInjuries() {
|
|
134
129
|
return Array.from(this.injuries.values());
|
|
@@ -141,7 +136,6 @@ var InjuryTracker = class {
|
|
|
141
136
|
* @param bodyPart - Body part to query
|
|
142
137
|
* @returns Array of injuries on that body part
|
|
143
138
|
*
|
|
144
|
-
* @public
|
|
145
139
|
*/
|
|
146
140
|
getInjuriesByBodyPart(bodyPart) {
|
|
147
141
|
return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);
|
|
@@ -163,7 +157,6 @@ var InjuryTracker = class {
|
|
|
163
157
|
* @param hitCount - Number of hits to same location
|
|
164
158
|
* @returns Hex color string
|
|
165
159
|
*
|
|
166
|
-
* @public
|
|
167
160
|
*/
|
|
168
161
|
getBruiseColor(severity, hitCount) {
|
|
169
162
|
const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;
|
|
@@ -179,7 +172,6 @@ var InjuryTracker = class {
|
|
|
179
172
|
* @param damage - Damage amount
|
|
180
173
|
* @returns Whether to show blood effects
|
|
181
174
|
*
|
|
182
|
-
* @public
|
|
183
175
|
*/
|
|
184
176
|
shouldShowBloodEffect(damage) {
|
|
185
177
|
return damage > this.config.bloodEffectThreshold;
|
|
@@ -203,7 +195,6 @@ var InjuryTracker = class {
|
|
|
203
195
|
*
|
|
204
196
|
* **Korean**: 모든 부상 초기화
|
|
205
197
|
*
|
|
206
|
-
* @public
|
|
207
198
|
*/
|
|
208
199
|
clearInjuries() {
|
|
209
200
|
this.injuries.clear();
|
|
@@ -214,7 +205,6 @@ var InjuryTracker = class {
|
|
|
214
205
|
*
|
|
215
206
|
* **Korean**: 만료된 부상 제거
|
|
216
207
|
*
|
|
217
|
-
* @public
|
|
218
208
|
*/
|
|
219
209
|
removeExpiredInjuries() {
|
|
220
210
|
const now = Date.now();
|
|
@@ -227,7 +217,6 @@ var InjuryTracker = class {
|
|
|
227
217
|
*
|
|
228
218
|
* @returns Current number of tracked injuries
|
|
229
219
|
*
|
|
230
|
-
* @public
|
|
231
220
|
*/
|
|
232
221
|
getInjuryCount() {
|
|
233
222
|
return this.injuries.size;
|
|
@@ -249,7 +238,6 @@ var InjuryTracker = class {
|
|
|
249
238
|
* const player2Tracker = new InjuryTracker();
|
|
250
239
|
* ```
|
|
251
240
|
*
|
|
252
|
-
* @public
|
|
253
241
|
* @deprecated Use an explicitly scoped {@link InjuryTracker} instance per
|
|
254
242
|
* player/character instead of relying on this shared module singleton. This
|
|
255
243
|
* export is retained temporarily for backward compatibility with existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InjuryTracker.js","names":[],"sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"sourcesContent":["/**\n * Injury Tracking System\n * \n * **Korean**: 부상 추적 시스템\n * \n * Tracks individual injuries on character models for realistic trauma visualization.\n * Records injury location, type, severity, and timestamp for progressive bruising,\n * cuts, and bleeding effects during combat.\n * \n * ## Features\n * \n * - Track injuries by body part and 3D position\n * - Progressive bruising: Multiple hits to same location darken existing bruises\n * - Color-coded severity (getBruiseColor): Yellow (fresh), Purple (moderate), Dark red (severe)\n * - Note: TraumaOverlay3D uses different progression: Dark red → Indigo → Black\n * - Blood effects triggered when damage > 30 in single hit\n * - Injury persistence across combat rounds\n * - Nearby injury lookup using linear scan over tracked injuries (O(n))\n * \n * @module systems/bodypart/InjuryTracker\n * @category Body Part System\n * @korean 부상추적시스템\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { InjuryType } from \"../../types/injury\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Individual injury location data.\n * \n * **Korean**: 부상 위치 데이터\n * \n * Records a single injury with its location, severity, and cumulative hit count.\n * Used for progressive bruising visualization.\n * \n * @public\n * @category Injury Tracking\n * @korean 부상위치\n */\nexport interface InjuryLocation {\n /** Unique identifier */\n readonly id: string;\n /** Body part affected */\n readonly bodyPart: BodyPart;\n /** Body region for hit detection */\n readonly bodyRegion: BodyRegion;\n /** 3D position relative to character center */\n readonly position: THREE.Vector3;\n /** Damage severity (0-100) */\n readonly severity: number;\n /** Number of hits to this location (for progressive bruising) */\n readonly hitCount: number;\n /** Timestamp when injury occurred */\n readonly timestamp: number;\n /** Injury type */\n readonly type: InjuryType;\n}\n\n/**\n * Configuration for injury tracking behavior.\n * \n * @public\n * @category Injury Tracking\n */\nexport interface InjuryTrackerConfig {\n /** Maximum number of injuries to track per character */\n readonly maxInjuries: number;\n /** Distance threshold for considering injuries at same location (in units) */\n readonly sameLocationThreshold: number;\n /** Minimum damage required to create an injury */\n readonly minDamageForInjury: number;\n /** Damage threshold for blood effects */\n readonly bloodEffectThreshold: number;\n /** Time before injuries are removed/expired (milliseconds) */\n readonly injuryExpirationTimeMs: number;\n}\n\n/**\n * Default injury tracker configuration.\n * \n * @public\n */\nexport const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig = {\n maxInjuries: 50, // Reasonable limit for performance\n sameLocationThreshold: 0.6, // 0.6 units distance (accommodates ±0.15 randomization)\n minDamageForInjury: 5, // Minimum 5 damage to show injury\n bloodEffectThreshold: 30, // Blood effects when damage > 30\n injuryExpirationTimeMs: 30000, // Injuries are removed after 30 seconds\n} as const;\n\n/**\n * Injury Tracker System.\n * \n * **Korean**: 부상 추적 시스템\n * \n * Manages injury recording and retrieval for trauma visualization.\n * Implements progressive bruising by tracking hit counts at similar locations.\n * \n * @example\n * ```typescript\n * const tracker = new InjuryTracker();\n * \n * // Record injury from hit\n * const injury = tracker.recordInjury(\n * BodyPart.TORSO_UPPER,\n * BodyRegion.TORSO,\n * new THREE.Vector3(0, 1.5, 0),\n * 25,\n * InjuryType.BRUISE\n * );\n * \n * // Get all injuries for visualization\n * const injuries = tracker.getInjuries();\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class InjuryTracker {\n private injuries: Map<string, InjuryLocation>;\n private config: InjuryTrackerConfig;\n private nextId: number;\n\n constructor(config: InjuryTrackerConfig = DEFAULT_INJURY_TRACKER_CONFIG) {\n this.injuries = new Map();\n this.config = config;\n this.nextId = 0;\n }\n\n /**\n * Record a new injury or update existing one at similar location.\n * \n * **Korean**: 부상 기록\n * \n * If an injury exists near the hit position, it updates the existing injury\n * with increased severity and hit count (progressive bruising). Otherwise,\n * creates a new injury.\n * \n * @param bodyPart - Body part affected\n * @param bodyRegion - Body region for damage distribution\n * @param position - 3D position relative to character center\n * @param damage - Damage amount (0-100)\n * @param type - Type of injury\n * @returns The created or updated injury, or null if damage is below threshold\n * \n * @public\n */\n recordInjury(\n bodyPart: BodyPart,\n bodyRegion: BodyRegion,\n position: THREE.Vector3,\n damage: number,\n type: InjuryType\n ): InjuryLocation | null {\n // Check if damage is significant enough to track\n if (damage < this.config.minDamageForInjury) {\n return null;\n }\n\n // Find nearby injury at similar location (same body part)\n const existing = this.findNearbyInjury(bodyPart, position, this.config.sameLocationThreshold);\n\n // Only merge injuries that also match type and body region to avoid\n // incorrectly combining different injury types at the same spot\n const shouldMerge =\n !!existing &&\n existing.type === type &&\n existing.bodyRegion === bodyRegion;\n\n if (shouldMerge && existing) {\n // Progressive bruising - update existing injury\n const newSeverity = Math.min(100, existing.severity + damage / 2);\n const newHitCount = existing.hitCount + 1;\n\n const updated: InjuryLocation = {\n ...existing,\n severity: newSeverity,\n hitCount: newHitCount,\n timestamp: Date.now(),\n };\n\n this.injuries.set(existing.id, updated);\n return updated;\n } else {\n // Create new injury\n const id = `injury-${this.nextId++}`;\n const injury: InjuryLocation = {\n id,\n bodyPart,\n bodyRegion,\n position: position.clone(),\n severity: damage,\n hitCount: 1,\n timestamp: Date.now(),\n type,\n };\n\n this.injuries.set(id, injury);\n\n // Enforce max injuries limit\n if (this.injuries.size > this.config.maxInjuries) {\n this.removeOldestInjury();\n }\n\n return injury;\n }\n }\n\n /**\n * Find injury near a given position on the same body part.\n * \n * **Korean**: 인근 부상 찾기\n * \n * @param bodyPart - Body part to search\n * @param position - Position to search near\n * @param threshold - Distance threshold\n * @returns Nearby injury or null\n * \n * @public\n */\n findNearbyInjury(\n bodyPart: BodyPart,\n position: THREE.Vector3,\n threshold: number\n ): InjuryLocation | null {\n let closestInjury: InjuryLocation | null = null;\n let closestDistance = threshold;\n\n for (const injury of this.injuries.values()) {\n if (injury.bodyPart === bodyPart) {\n const distance = injury.position.distanceTo(position);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestInjury = injury;\n }\n }\n }\n\n return closestInjury;\n }\n\n /**\n * Get all tracked injuries.\n * \n * **Korean**: 모든 부상 조회\n * \n * @returns Array of all injuries\n * \n * @public\n */\n getInjuries(): InjuryLocation[] {\n return Array.from(this.injuries.values());\n }\n\n /**\n * Get injuries for a specific body part.\n * \n * **Korean**: 신체 부위 부상 조회\n * \n * @param bodyPart - Body part to query\n * @returns Array of injuries on that body part\n * \n * @public\n */\n getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[] {\n return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);\n }\n\n /**\n * Get bruise color based on severity and hit count.\n * \n * **Korean**: 타박상 색상 가져오기\n * \n * Progressive color scheme (for reference - TraumaOverlay3D uses its own colors):\n * - Light bruising (severity < 20): Yellow (#ffeb3b)\n * - Moderate bruising (severity < 50): Purple (#9c27b0)\n * - Severe bruising (severity >= 50): Dark red (#b71c1c)\n * \n * Note: TraumaOverlay3D uses Dark red → Indigo → Black progression.\n * Consider using TraumaOverlay3D's getBruiseColor for consistent visualization.\n * \n * @param severity - Injury severity (0-100)\n * @param hitCount - Number of hits to same location\n * @returns Hex color string\n * \n * @public\n */\n getBruiseColor(severity: number, hitCount: number): string {\n // Progressive darkening with hit count (subtract 1 since first hit shouldn't darken)\n const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;\n\n if (effectiveSeverity < 20) {\n return \"#ffeb3b\"; // Yellow - light bruising\n } else if (effectiveSeverity < 50) {\n return \"#9c27b0\"; // Purple - moderate bruising\n } else {\n return \"#b71c1c\"; // Dark red - severe bruising\n }\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 * @public\n */\n shouldShowBloodEffect(damage: number): boolean {\n return damage > this.config.bloodEffectThreshold;\n }\n\n /**\n * Remove oldest injury to maintain performance.\n * \n * @private\n */\n private removeOldestInjury(): void {\n let oldestId: string | null = null;\n let oldestTimestamp = Infinity;\n\n for (const [id, injury] of this.injuries.entries()) {\n if (injury.timestamp < oldestTimestamp) {\n oldestTimestamp = injury.timestamp;\n oldestId = id;\n }\n }\n\n if (oldestId) {\n this.injuries.delete(oldestId);\n }\n }\n\n /**\n * Clear all injuries (for new match/round).\n * \n * **Korean**: 모든 부상 초기화\n * \n * @public\n */\n clearInjuries(): void {\n this.injuries.clear();\n this.nextId = 0;\n }\n\n /**\n * Remove injuries older than expiration time.\n * \n * **Korean**: 만료된 부상 제거\n * \n * @public\n */\n removeExpiredInjuries(): void {\n const now = Date.now();\n const expiredIds: string[] = [];\n\n for (const [id, injury] of this.injuries.entries()) {\n if (now - injury.timestamp > this.config.injuryExpirationTimeMs) {\n expiredIds.push(id);\n }\n }\n\n for (const id of expiredIds) {\n this.injuries.delete(id);\n }\n }\n\n /**\n * Get injury count for performance monitoring.\n * \n * @returns Current number of tracked injuries\n * \n * @public\n */\n getInjuryCount(): number {\n return this.injuries.size;\n }\n}\n\n/**\n * Legacy module-level injury tracker singleton.\n *\n * **Korean**: 레거시 모듈 전역 부상 추적기\n *\n * **Warning**: This singleton does **not** track any playerId/character identifier\n * on injuries. All recorded injuries are stored together in a single collection.\n * For any scenario with more than one character (including 1v1 combat), you\n * **must** create a separate {@link InjuryTracker} instance per character to\n * avoid mixing injuries between characters:\n *\n * ```typescript\n * const player1Tracker = new InjuryTracker();\n * const player2Tracker = new InjuryTracker();\n * ```\n *\n * @public\n * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per\n * player/character instead of relying on this shared module singleton. This\n * export is retained temporarily for backward compatibility with existing\n * consumers importing `injuryTracker` from `systems/bodypart` and will be\n * removed in a future major release.\n */\nexport const injuryTracker = new InjuryTracker();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InjuryTracker.js","names":[],"sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"sourcesContent":["/**\n * Injury Tracking System\n * \n * **Korean**: 부상 추적 시스템\n * \n * Tracks individual injuries on character models for realistic trauma visualization.\n * Records injury location, type, severity, and timestamp for progressive bruising,\n * cuts, and bleeding effects during combat.\n * \n * ## Features\n * \n * - Track injuries by body part and 3D position\n * - Progressive bruising: Multiple hits to same location darken existing bruises\n * - Color-coded severity (getBruiseColor): Yellow (fresh), Purple (moderate), Dark red (severe)\n * - Note: TraumaOverlay3D uses different progression: Dark red → Indigo → Black\n * - Blood effects triggered when damage > 30 in single hit\n * - Injury persistence across combat rounds\n * - Nearby injury lookup using linear scan over tracked injuries (O(n))\n * \n * @module systems/bodypart/InjuryTracker\n * @category Body Part System\n * @korean 부상추적시스템\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { InjuryType } from \"../../types/injury\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Individual injury location data.\n * \n * **Korean**: 부상 위치 데이터\n * \n * Records a single injury with its location, severity, and cumulative hit count.\n * Used for progressive bruising visualization.\n * \n * @category Injury Tracking\n * @korean 부상위치\n */\nexport interface InjuryLocation {\n /** Unique identifier */\n readonly id: string;\n /** Body part affected */\n readonly bodyPart: BodyPart;\n /** Body region for hit detection */\n readonly bodyRegion: BodyRegion;\n /** 3D position relative to character center */\n readonly position: THREE.Vector3;\n /** Damage severity (0-100) */\n readonly severity: number;\n /** Number of hits to this location (for progressive bruising) */\n readonly hitCount: number;\n /** Timestamp when injury occurred */\n readonly timestamp: number;\n /** Injury type */\n readonly type: InjuryType;\n}\n\n/**\n * Configuration for injury tracking behavior.\n * \n * @category Injury Tracking\n */\nexport interface InjuryTrackerConfig {\n /** Maximum number of injuries to track per character */\n readonly maxInjuries: number;\n /** Distance threshold for considering injuries at same location (in units) */\n readonly sameLocationThreshold: number;\n /** Minimum damage required to create an injury */\n readonly minDamageForInjury: number;\n /** Damage threshold for blood effects */\n readonly bloodEffectThreshold: number;\n /** Time before injuries are removed/expired (milliseconds) */\n readonly injuryExpirationTimeMs: number;\n}\n\n/**\n * Default injury tracker configuration.\n * \n */\nexport const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig = {\n maxInjuries: 50, // Reasonable limit for performance\n sameLocationThreshold: 0.6, // 0.6 units distance (accommodates ±0.15 randomization)\n minDamageForInjury: 5, // Minimum 5 damage to show injury\n bloodEffectThreshold: 30, // Blood effects when damage > 30\n injuryExpirationTimeMs: 30000, // Injuries are removed after 30 seconds\n} as const;\n\n/**\n * Injury Tracker System.\n * \n * **Korean**: 부상 추적 시스템\n * \n * Manages injury recording and retrieval for trauma visualization.\n * Implements progressive bruising by tracking hit counts at similar locations.\n * \n * @example\n * ```typescript\n * const tracker = new InjuryTracker();\n * \n * // Record injury from hit\n * const injury = tracker.recordInjury(\n * BodyPart.TORSO_UPPER,\n * BodyRegion.TORSO,\n * new THREE.Vector3(0, 1.5, 0),\n * 25,\n * InjuryType.BRUISE\n * );\n * \n * // Get all injuries for visualization\n * const injuries = tracker.getInjuries();\n * ```\n * \n * @category Body Part System\n */\nexport class InjuryTracker {\n private injuries: Map<string, InjuryLocation>;\n private config: InjuryTrackerConfig;\n private nextId: number;\n\n constructor(config: InjuryTrackerConfig = DEFAULT_INJURY_TRACKER_CONFIG) {\n this.injuries = new Map();\n this.config = config;\n this.nextId = 0;\n }\n\n /**\n * Record a new injury or update existing one at similar location.\n * \n * **Korean**: 부상 기록\n * \n * If an injury exists near the hit position, it updates the existing injury\n * with increased severity and hit count (progressive bruising). Otherwise,\n * creates a new injury.\n * \n * @param bodyPart - Body part affected\n * @param bodyRegion - Body region for damage distribution\n * @param position - 3D position relative to character center\n * @param damage - Damage amount (0-100)\n * @param type - Type of injury\n * @returns The created or updated injury, or null if damage is below threshold\n * \n */\n recordInjury(\n bodyPart: BodyPart,\n bodyRegion: BodyRegion,\n position: THREE.Vector3,\n damage: number,\n type: InjuryType\n ): InjuryLocation | null {\n // Check if damage is significant enough to track\n if (damage < this.config.minDamageForInjury) {\n return null;\n }\n\n // Find nearby injury at similar location (same body part)\n const existing = this.findNearbyInjury(bodyPart, position, this.config.sameLocationThreshold);\n\n // Only merge injuries that also match type and body region to avoid\n // incorrectly combining different injury types at the same spot\n const shouldMerge =\n !!existing &&\n existing.type === type &&\n existing.bodyRegion === bodyRegion;\n\n if (shouldMerge && existing) {\n // Progressive bruising - update existing injury\n const newSeverity = Math.min(100, existing.severity + damage / 2);\n const newHitCount = existing.hitCount + 1;\n\n const updated: InjuryLocation = {\n ...existing,\n severity: newSeverity,\n hitCount: newHitCount,\n timestamp: Date.now(),\n };\n\n this.injuries.set(existing.id, updated);\n return updated;\n } else {\n // Create new injury\n const id = `injury-${this.nextId++}`;\n const injury: InjuryLocation = {\n id,\n bodyPart,\n bodyRegion,\n position: position.clone(),\n severity: damage,\n hitCount: 1,\n timestamp: Date.now(),\n type,\n };\n\n this.injuries.set(id, injury);\n\n // Enforce max injuries limit\n if (this.injuries.size > this.config.maxInjuries) {\n this.removeOldestInjury();\n }\n\n return injury;\n }\n }\n\n /**\n * Find injury near a given position on the same body part.\n * \n * **Korean**: 인근 부상 찾기\n * \n * @param bodyPart - Body part to search\n * @param position - Position to search near\n * @param threshold - Distance threshold\n * @returns Nearby injury or null\n * \n */\n findNearbyInjury(\n bodyPart: BodyPart,\n position: THREE.Vector3,\n threshold: number\n ): InjuryLocation | null {\n let closestInjury: InjuryLocation | null = null;\n let closestDistance = threshold;\n\n for (const injury of this.injuries.values()) {\n if (injury.bodyPart === bodyPart) {\n const distance = injury.position.distanceTo(position);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestInjury = injury;\n }\n }\n }\n\n return closestInjury;\n }\n\n /**\n * Get all tracked injuries.\n * \n * **Korean**: 모든 부상 조회\n * \n * @returns Array of all injuries\n * \n */\n getInjuries(): InjuryLocation[] {\n return Array.from(this.injuries.values());\n }\n\n /**\n * Get injuries for a specific body part.\n * \n * **Korean**: 신체 부위 부상 조회\n * \n * @param bodyPart - Body part to query\n * @returns Array of injuries on that body part\n * \n */\n getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[] {\n return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);\n }\n\n /**\n * Get bruise color based on severity and hit count.\n * \n * **Korean**: 타박상 색상 가져오기\n * \n * Progressive color scheme (for reference - TraumaOverlay3D uses its own colors):\n * - Light bruising (severity < 20): Yellow (#ffeb3b)\n * - Moderate bruising (severity < 50): Purple (#9c27b0)\n * - Severe bruising (severity >= 50): Dark red (#b71c1c)\n * \n * Note: TraumaOverlay3D uses Dark red → Indigo → Black progression.\n * Consider using TraumaOverlay3D's getBruiseColor for consistent visualization.\n * \n * @param severity - Injury severity (0-100)\n * @param hitCount - Number of hits to same location\n * @returns Hex color string\n * \n */\n getBruiseColor(severity: number, hitCount: number): string {\n // Progressive darkening with hit count (subtract 1 since first hit shouldn't darken)\n const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;\n\n if (effectiveSeverity < 20) {\n return \"#ffeb3b\"; // Yellow - light bruising\n } else if (effectiveSeverity < 50) {\n return \"#9c27b0\"; // Purple - moderate bruising\n } else {\n return \"#b71c1c\"; // Dark red - severe bruising\n }\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.bloodEffectThreshold;\n }\n\n /**\n * Remove oldest injury to maintain performance.\n * \n * @private\n */\n private removeOldestInjury(): void {\n let oldestId: string | null = null;\n let oldestTimestamp = Infinity;\n\n for (const [id, injury] of this.injuries.entries()) {\n if (injury.timestamp < oldestTimestamp) {\n oldestTimestamp = injury.timestamp;\n oldestId = id;\n }\n }\n\n if (oldestId) {\n this.injuries.delete(oldestId);\n }\n }\n\n /**\n * Clear all injuries (for new match/round).\n * \n * **Korean**: 모든 부상 초기화\n * \n */\n clearInjuries(): void {\n this.injuries.clear();\n this.nextId = 0;\n }\n\n /**\n * Remove injuries older than expiration time.\n * \n * **Korean**: 만료된 부상 제거\n * \n */\n removeExpiredInjuries(): void {\n const now = Date.now();\n const expiredIds: string[] = [];\n\n for (const [id, injury] of this.injuries.entries()) {\n if (now - injury.timestamp > this.config.injuryExpirationTimeMs) {\n expiredIds.push(id);\n }\n }\n\n for (const id of expiredIds) {\n this.injuries.delete(id);\n }\n }\n\n /**\n * Get injury count for performance monitoring.\n * \n * @returns Current number of tracked injuries\n * \n */\n getInjuryCount(): number {\n return this.injuries.size;\n }\n}\n\n/**\n * Legacy module-level injury tracker singleton.\n *\n * **Korean**: 레거시 모듈 전역 부상 추적기\n *\n * **Warning**: This singleton does **not** track any playerId/character identifier\n * on injuries. All recorded injuries are stored together in a single collection.\n * For any scenario with more than one character (including 1v1 combat), you\n * **must** create a separate {@link InjuryTracker} instance per character to\n * avoid mixing injuries between characters:\n *\n * ```typescript\n * const player1Tracker = new InjuryTracker();\n * const player2Tracker = new InjuryTracker();\n * ```\n *\n * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per\n * player/character instead of relying on this shared module singleton. This\n * export is retained temporarily for backward compatibility with existing\n * consumers importing `injuryTracker` from `systems/bodypart` and will be\n * removed in a future major release.\n */\nexport const injuryTracker = new InjuryTracker();\n"],"mappings":";;;;;AAiFA,IAAa,gCAAqD;CAChE,aAAa;CACb,uBAAuB;CACvB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BD,IAAa,gBAAb,MAA2B;CACzB;CACA;CACA;CAEA,YAAY,SAA8B,+BAA+B;EACvE,KAAK,2BAAW,IAAI,KAAK;EACzB,KAAK,SAAS;EACd,KAAK,SAAS;;;;;;;;;;;;;;;;;;;CAoBhB,aACE,UACA,YACA,UACA,QACA,MACuB;EAEvB,IAAI,SAAS,KAAK,OAAO,oBACvB,OAAO;EAIT,MAAM,WAAW,KAAK,iBAAiB,UAAU,UAAU,KAAK,OAAO,sBAAsB;EAS7F,IAJE,CAAC,CAAC,YACF,SAAS,SAAS,QAClB,SAAS,eAAe,cAEP,UAAU;GAE3B,MAAM,cAAc,KAAK,IAAI,KAAK,SAAS,WAAW,SAAS,EAAE;GACjE,MAAM,cAAc,SAAS,WAAW;GAExC,MAAM,UAA0B;IAC9B,GAAG;IACH,UAAU;IACV,UAAU;IACV,WAAW,KAAK,KAAK;IACtB;GAED,KAAK,SAAS,IAAI,SAAS,IAAI,QAAQ;GACvC,OAAO;SACF;GAEL,MAAM,KAAK,UAAU,KAAK;GAC1B,MAAM,SAAyB;IAC7B;IACA;IACA;IACA,UAAU,SAAS,OAAO;IAC1B,UAAU;IACV,UAAU;IACV,WAAW,KAAK,KAAK;IACrB;IACD;GAED,KAAK,SAAS,IAAI,IAAI,OAAO;GAG7B,IAAI,KAAK,SAAS,OAAO,KAAK,OAAO,aACnC,KAAK,oBAAoB;GAG3B,OAAO;;;;;;;;;;;;;;CAeX,iBACE,UACA,UACA,WACuB;EACvB,IAAI,gBAAuC;EAC3C,IAAI,kBAAkB;EAEtB,KAAK,MAAM,UAAU,KAAK,SAAS,QAAQ,EACzC,IAAI,OAAO,aAAa,UAAU;GAChC,MAAM,WAAW,OAAO,SAAS,WAAW,SAAS;GACrD,IAAI,WAAW,iBAAiB;IAC9B,kBAAkB;IAClB,gBAAgB;;;EAKtB,OAAO;;;;;;;;;;CAWT,cAAgC;EAC9B,OAAO,MAAM,KAAK,KAAK,SAAS,QAAQ,CAAC;;;;;;;;;;;CAY3C,sBAAsB,UAAsC;EAC1D,OAAO,KAAK,aAAa,CAAC,QAAQ,WAAW,OAAO,aAAa,SAAS;;;;;;;;;;;;;;;;;;;;CAqB5E,eAAe,UAAkB,UAA0B;EAEzD,MAAM,oBAAoB,WAAW,KAAK,IAAI,GAAG,WAAW,EAAE,GAAG;EAEjE,IAAI,oBAAoB,IACtB,OAAO;OACF,IAAI,oBAAoB,IAC7B,OAAO;OAEP,OAAO;;;;;;;;;;;CAaX,sBAAsB,QAAyB;EAC7C,OAAO,SAAS,KAAK,OAAO;;;;;;;CAQ9B,qBAAmC;EACjC,IAAI,WAA0B;EAC9B,IAAI,kBAAkB;EAEtB,KAAK,MAAM,CAAC,IAAI,WAAW,KAAK,SAAS,SAAS,EAChD,IAAI,OAAO,YAAY,iBAAiB;GACtC,kBAAkB,OAAO;GACzB,WAAW;;EAIf,IAAI,UACF,KAAK,SAAS,OAAO,SAAS;;;;;;;;CAUlC,gBAAsB;EACpB,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS;;;;;;;;CAShB,wBAA8B;EAC5B,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,aAAuB,EAAE;EAE/B,KAAK,MAAM,CAAC,IAAI,WAAW,KAAK,SAAS,SAAS,EAChD,IAAI,MAAM,OAAO,YAAY,KAAK,OAAO,wBACvC,WAAW,KAAK,GAAG;EAIvB,KAAK,MAAM,MAAM,YACf,KAAK,SAAS,OAAO,GAAG;;;;;;;;CAU5B,iBAAyB;EACvB,OAAO,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;AA0BzB,IAAa,gBAAgB,IAAI,eAAe"}
|
|
@@ -58,7 +58,6 @@ import { BodyPart, BodyPartHealth, BodyPartMaxHealth, MovementPenalty, InstantMo
|
|
|
58
58
|
* const actualSpeed = baseSpeed * penalty.speedMultiplier;
|
|
59
59
|
* ```
|
|
60
60
|
*
|
|
61
|
-
* @public
|
|
62
61
|
* @category Body Part System
|
|
63
62
|
*/
|
|
64
63
|
export declare class MovementPenaltySystem {
|
|
@@ -76,7 +75,6 @@ export declare class MovementPenaltySystem {
|
|
|
76
75
|
* @param currentTime - Current timestamp for instant penalty expiry check
|
|
77
76
|
* @returns Movement penalty with all modifiers
|
|
78
77
|
*
|
|
79
|
-
* @public
|
|
80
78
|
*/
|
|
81
79
|
calculateMovementPenalty(health: BodyPartHealth, maxHealth: BodyPartMaxHealth, instantPenalty?: InstantMovementPenalty, currentTime?: number): MovementPenalty;
|
|
82
80
|
/**
|
|
@@ -104,7 +102,6 @@ export declare class MovementPenaltySystem {
|
|
|
104
102
|
* @param movementDirection - Direction of movement (positive = right, negative = left)
|
|
105
103
|
* @returns Additional speed multiplier for asymmetric penalty
|
|
106
104
|
*
|
|
107
|
-
* @public
|
|
108
105
|
*/
|
|
109
106
|
calculateAsymmetricPenalty(health: BodyPartHealth, maxHealth: BodyPartMaxHealth, movementDirection: {
|
|
110
107
|
x: number;
|
|
@@ -122,7 +119,6 @@ export declare class MovementPenaltySystem {
|
|
|
122
119
|
* @param currentTime - Timestamp when strike occurred
|
|
123
120
|
* @returns Instant movement penalty configuration
|
|
124
121
|
*
|
|
125
|
-
* @public
|
|
126
122
|
*/
|
|
127
123
|
createInstantPenalty(affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT, currentTime?: number): InstantMovementPenalty;
|
|
128
124
|
/**
|
|
@@ -137,7 +133,6 @@ export declare class MovementPenaltySystem {
|
|
|
137
133
|
* @param maxHealth - Maximum health values
|
|
138
134
|
* @returns True if player should enter vulnerable state
|
|
139
135
|
*
|
|
140
|
-
* @public
|
|
141
136
|
*/
|
|
142
137
|
shouldEnterVulnerableState(health: BodyPartHealth, maxHealth: BodyPartMaxHealth): boolean;
|
|
143
138
|
/**
|
|
@@ -152,7 +147,6 @@ export declare class MovementPenaltySystem {
|
|
|
152
147
|
* @param maxHealth - Maximum health values
|
|
153
148
|
* @returns True if player should enter helpless state
|
|
154
149
|
*
|
|
155
|
-
* @public
|
|
156
150
|
*/
|
|
157
151
|
shouldEnterHelplessState(health: BodyPartHealth, maxHealth: BodyPartMaxHealth): boolean;
|
|
158
152
|
/**
|
|
@@ -171,7 +165,6 @@ export declare class MovementPenaltySystem {
|
|
|
171
165
|
* @param currentTime - Current timestamp
|
|
172
166
|
* @returns Final movement speed with all penalties applied
|
|
173
167
|
*
|
|
174
|
-
* @public
|
|
175
168
|
*/
|
|
176
169
|
calculateModifiedSpeed(baseSpeed: number, health: BodyPartHealth, maxHealth: BodyPartMaxHealth, movementDirection: {
|
|
177
170
|
x: number;
|
|
@@ -185,7 +178,6 @@ export declare class MovementPenaltySystem {
|
|
|
185
178
|
*
|
|
186
179
|
* Provides global access to the movement penalty system throughout the game.
|
|
187
180
|
*
|
|
188
|
-
* @public
|
|
189
181
|
*/
|
|
190
182
|
export declare const movementPenaltySystem: MovementPenaltySystem;
|
|
191
183
|
//# sourceMappingURL=MovementPenaltySystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovementPenaltySystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EAEjB,eAAe,EACf,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB
|
|
1
|
+
{"version":3,"file":"MovementPenaltySystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EAEjB,eAAe,EACf,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;OAcG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,eAAe;IAiDlB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;;;;;;;;;;;;;OAcG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,MAAM;IAqCT;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAClB,YAAY,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,EACpD,WAAW,GAAE,MAAmB,GAC/B,sBAAsB;IASzB;;;;;;;;;;;;OAYG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IASV;;;;;;;;;;;;OAYG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IAWV;;;;;;;;;;;;;;;;OAgBG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3C,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,MAAM;CAmBV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
|
|
@@ -59,7 +59,6 @@ import { LegInjuryState, MOVEMENT_PENALTY_CONSTANTS } from "./types.js";
|
|
|
59
59
|
* const actualSpeed = baseSpeed * penalty.speedMultiplier;
|
|
60
60
|
* ```
|
|
61
61
|
*
|
|
62
|
-
* @public
|
|
63
62
|
* @category Body Part System
|
|
64
63
|
*/
|
|
65
64
|
var MovementPenaltySystem = class {
|
|
@@ -77,7 +76,6 @@ var MovementPenaltySystem = class {
|
|
|
77
76
|
* @param currentTime - Current timestamp for instant penalty expiry check
|
|
78
77
|
* @returns Movement penalty with all modifiers
|
|
79
78
|
*
|
|
80
|
-
* @public
|
|
81
79
|
*/
|
|
82
80
|
calculateMovementPenalty(health, maxHealth, instantPenalty, currentTime = Date.now()) {
|
|
83
81
|
const avgLegHealth = (health.legLeft / maxHealth.legLeft + health.legRight / maxHealth.legRight) / 2;
|
|
@@ -141,7 +139,6 @@ var MovementPenaltySystem = class {
|
|
|
141
139
|
* @param movementDirection - Direction of movement (positive = right, negative = left)
|
|
142
140
|
* @returns Additional speed multiplier for asymmetric penalty
|
|
143
141
|
*
|
|
144
|
-
* @public
|
|
145
142
|
*/
|
|
146
143
|
calculateAsymmetricPenalty(health, maxHealth, movementDirection) {
|
|
147
144
|
const leftLegPercent = health.legLeft / maxHealth.legLeft;
|
|
@@ -169,7 +166,6 @@ var MovementPenaltySystem = class {
|
|
|
169
166
|
* @param currentTime - Timestamp when strike occurred
|
|
170
167
|
* @returns Instant movement penalty configuration
|
|
171
168
|
*
|
|
172
|
-
* @public
|
|
173
169
|
*/
|
|
174
170
|
createInstantPenalty(affectedPart, currentTime = Date.now()) {
|
|
175
171
|
return {
|
|
@@ -191,7 +187,6 @@ var MovementPenaltySystem = class {
|
|
|
191
187
|
* @param maxHealth - Maximum health values
|
|
192
188
|
* @returns True if player should enter vulnerable state
|
|
193
189
|
*
|
|
194
|
-
* @public
|
|
195
190
|
*/
|
|
196
191
|
shouldEnterVulnerableState(health, maxHealth) {
|
|
197
192
|
return (health.legLeft / maxHealth.legLeft + health.legRight / maxHealth.legRight) / 2 < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;
|
|
@@ -208,7 +203,6 @@ var MovementPenaltySystem = class {
|
|
|
208
203
|
* @param maxHealth - Maximum health values
|
|
209
204
|
* @returns True if player should enter helpless state
|
|
210
205
|
*
|
|
211
|
-
* @public
|
|
212
206
|
*/
|
|
213
207
|
shouldEnterHelplessState(health, maxHealth) {
|
|
214
208
|
const leftLegPercent = health.legLeft / maxHealth.legLeft;
|
|
@@ -231,7 +225,6 @@ var MovementPenaltySystem = class {
|
|
|
231
225
|
* @param currentTime - Current timestamp
|
|
232
226
|
* @returns Final movement speed with all penalties applied
|
|
233
227
|
*
|
|
234
|
-
* @public
|
|
235
228
|
*/
|
|
236
229
|
calculateModifiedSpeed(baseSpeed, health, maxHealth, movementDirection, instantPenalty, currentTime = Date.now()) {
|
|
237
230
|
const penalty = this.calculateMovementPenalty(health, maxHealth, instantPenalty, currentTime);
|
|
@@ -246,7 +239,6 @@ var MovementPenaltySystem = class {
|
|
|
246
239
|
*
|
|
247
240
|
* Provides global access to the movement penalty system throughout the game.
|
|
248
241
|
*
|
|
249
|
-
* @public
|
|
250
242
|
*/
|
|
251
243
|
var movementPenaltySystem = new MovementPenaltySystem();
|
|
252
244
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovementPenaltySystem.js","names":[],"sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"sourcesContent":["/**\n * Movement Penalty System\n * \n * **Korean**: 이동 패널티 시스템\n * \n * Implements injury-based movement penalties where leg and body damage reduces\n * movement speed, stance changes, and mobility capabilities. This system applies\n * realistic combat trauma effects based on Korean martial arts principles.\n * \n * ## System Features\n * \n * - Progressive speed reduction based on leg health\n * - Asymmetric damage (left/right leg affects directional movement)\n * - Instant penalties from knee/ankle strikes (5 seconds)\n * - Stance change duration penalties\n * - Advanced stance restrictions when critically injured\n * - Balance integration for VULNERABLE/HELPLESS states\n * \n * ## Movement Speed Penalties\n * \n * | Leg Health | State | Speed | Can Run |\n * |------------|-------|-------|---------|\n * | 100-70% | Normal | 100% | Yes |\n * | 69-50% | Limping | 80% | Yes |\n * | 49-30% | Severe Limp | 60% | Yes |\n * | <30% | Hobbled | 40% | No |\n * \n * ## Stance Change Penalties\n * \n * - Legs <50% health: Stance change takes 2x longer\n * - Legs <30% health: Cannot change to advanced stances (only basic)\n * \n * @module systems/bodypart/MovementPenaltySystem\n * @category Body Part System\n * @korean 이동패널티시스템\n */\n\nimport {\n BodyPart,\n BodyPartHealth,\n BodyPartMaxHealth,\n LegInjuryState,\n MovementPenalty,\n InstantMovementPenalty,\n MOVEMENT_PENALTY_CONSTANTS,\n} from \"./types\";\n\n/**\n * Movement Penalty System class.\n * \n * **Korean**: 이동 패널티 시스템 클래스\n * \n * Calculates movement penalties from leg injuries, manages instant penalties\n * from knee/ankle strikes, and integrates with balance system.\n * \n * @example\n * ```typescript\n * const system = new MovementPenaltySystem();\n * \n * // Calculate current movement penalty\n * const penalty = system.calculateMovementPenalty(\n * bodyPartHealth,\n * maxHealth,\n * activeInstantPenalty\n * );\n * \n * // Apply to movement speed\n * const actualSpeed = baseSpeed * penalty.speedMultiplier;\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class MovementPenaltySystem {\n /**\n * Calculate movement penalty from body part health.\n * \n * **Korean**: 이동 패널티 계산\n * \n * Analyzes leg health and returns comprehensive movement penalty including\n * speed multiplier, stance change penalties, and balance effects.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp for instant penalty expiry check\n * @returns Movement penalty with all modifiers\n * \n * @public\n */\n calculateMovementPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): MovementPenalty {\n // Calculate average leg health percentage\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Determine injury state and base speed multiplier\n const { injuryState, speedMultiplier } = this.getInjuryStateFromHealth(avgLegHealth);\n\n // Check if instant penalty is active\n const hasActiveInstantPenalty = \n instantPenalty !== undefined &&\n instantPenalty.appliedAt + instantPenalty.duration > currentTime;\n\n // Apply instant penalty if active, otherwise use base multiplier\n const finalSpeedMultiplier = hasActiveInstantPenalty && instantPenalty\n ? Math.min(speedMultiplier, instantPenalty.speedMultiplier)\n : speedMultiplier;\n\n // Calculate stance change penalty\n const stanceChangePenalty = \n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.CRITICAL_THRESHOLD\n ? MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.INJURED\n : MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.NORMAL;\n\n // Determine if advanced stances are restricted\n const advancedStancesRestricted =\n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.RESTRICTION_THRESHOLD;\n\n // Calculate balance modifier (lower leg health = worse balance)\n const balanceModifier = Math.max(0.3, avgLegHealth);\n\n // Determine if player can run\n const canRun = injuryState !== LegInjuryState.HOBBLED;\n\n return {\n speedMultiplier: finalSpeedMultiplier,\n canRun,\n injuryState,\n stanceChangePenalty,\n advancedStancesRestricted,\n balanceModifier,\n hasInstantPenalty: hasActiveInstantPenalty,\n instantPenaltyExpiry: hasActiveInstantPenalty && instantPenalty\n ? instantPenalty.appliedAt + instantPenalty.duration\n : 0,\n };\n }\n\n /**\n * Get injury state and speed multiplier from leg health percentage.\n * \n * **Korean**: 부상 상태 및 속도 배율 조회\n * \n * @param legHealthPercent - Average leg health as percentage (0.0-1.0)\n * @returns Injury state and corresponding speed multiplier\n * \n * @private\n */\n private getInjuryStateFromHealth(legHealthPercent: number): {\n injuryState: LegInjuryState;\n speedMultiplier: number;\n } {\n const { THRESHOLDS, SPEED_MULTIPLIERS } = MOVEMENT_PENALTY_CONSTANTS;\n\n if (legHealthPercent >= THRESHOLDS.NORMAL) {\n return {\n injuryState: LegInjuryState.NORMAL,\n speedMultiplier: SPEED_MULTIPLIERS.NORMAL,\n };\n } else if (legHealthPercent >= THRESHOLDS.LIMPING) {\n return {\n injuryState: LegInjuryState.LIMPING,\n speedMultiplier: SPEED_MULTIPLIERS.LIMPING,\n };\n } else if (legHealthPercent >= THRESHOLDS.SEVERE_LIMP) {\n return {\n injuryState: LegInjuryState.SEVERE_LIMP,\n speedMultiplier: SPEED_MULTIPLIERS.SEVERE_LIMP,\n };\n } else {\n return {\n injuryState: LegInjuryState.HOBBLED,\n speedMultiplier: SPEED_MULTIPLIERS.HOBBLED,\n };\n }\n }\n\n /**\n * Calculate asymmetric movement penalty based on movement direction and injured leg.\n * \n * **Korean**: 비대칭 이동 패널티 계산\n * \n * Left leg damage affects left-side movements more, and vice versa.\n * This creates realistic limping behavior where movement toward the injured\n * side is more impaired.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction of movement (positive = right, negative = left)\n * @returns Additional speed multiplier for asymmetric penalty\n * \n * @public\n */\n calculateAsymmetricPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number }\n ): number {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Only apply asymmetric penalty if one leg is significantly more damaged\n const legHealthDifference = Math.abs(leftLegPercent - rightLegPercent);\n if (legHealthDifference < 0.15) {\n // Both legs similarly damaged - no asymmetric penalty\n return 1.0;\n }\n\n // Determine which leg is more injured\n const leftLegMoreInjured = leftLegPercent < rightLegPercent;\n\n // Horizontal movement direction (x-axis)\n const movingLeft = movementDirection.x < -0.1;\n const movingRight = movementDirection.x > 0.1;\n\n if (leftLegMoreInjured) {\n // Left leg injured - left movement more impaired\n if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n } else {\n // Right leg injured - right movement more impaired\n if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n }\n\n return 1.0; // No horizontal movement\n }\n\n /**\n * Create instant movement penalty from knee/ankle strike.\n * \n * **Korean**: 순간 이동 패널티 생성\n * \n * Applied when knee or ankle vital points are struck, causing immediate\n * severe movement impairment for 5 seconds.\n * \n * @param affectedPart - Body part that was struck (LEG_LEFT or LEG_RIGHT)\n * @param currentTime - Timestamp when strike occurred\n * @returns Instant movement penalty configuration\n * \n * @public\n */\n createInstantPenalty(\n affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT,\n currentTime: number = Date.now()\n ): InstantMovementPenalty {\n return {\n speedMultiplier: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.SPEED_MULTIPLIER,\n duration: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.DURATION,\n appliedAt: currentTime,\n affectedPart,\n };\n }\n\n /**\n * Check if player should enter VULNERABLE state from leg damage.\n * \n * **Korean**: 취약 상태 확인\n * \n * Low leg health increases chance of entering vulnerable state,\n * making player more susceptible to follow-up attacks.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter vulnerable state\n * \n * @public\n */\n shouldEnterVulnerableState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Enter vulnerable state when legs are critically damaged\n return avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;\n }\n\n /**\n * Check if player should enter HELPLESS state from leg damage.\n * \n * **Korean**: 무력 상태 확인\n * \n * Both legs critically damaged or hobbled - player cannot maintain\n * effective combat stance and is highly vulnerable.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter helpless state\n * \n * @public\n */\n shouldEnterHelplessState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Enter helpless state when both legs are hobbled\n return (\n leftLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP &&\n rightLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP\n );\n }\n\n /**\n * Calculate modified movement speed with all penalties applied.\n * \n * **Korean**: 수정된 이동 속도 계산\n * \n * Applies base movement penalty, asymmetric penalties, and instant penalties\n * to calculate the final movement speed.\n * \n * @param baseSpeed - Base movement speed (pixels per frame)\n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction vector of movement\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp\n * @returns Final movement speed with all penalties applied\n * \n * @public\n */\n calculateModifiedSpeed(\n baseSpeed: number,\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number },\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): number {\n // Get base movement penalty\n const penalty = this.calculateMovementPenalty(\n health,\n maxHealth,\n instantPenalty,\n currentTime\n );\n\n // Calculate asymmetric penalty\n const asymmetricMultiplier = this.calculateAsymmetricPenalty(\n health,\n maxHealth,\n movementDirection\n );\n\n // Apply all multipliers\n return baseSpeed * penalty.speedMultiplier * asymmetricMultiplier;\n }\n}\n\n/**\n * Singleton instance of Movement Penalty System.\n * \n * **Korean**: 이동 패널티 시스템 싱글톤\n * \n * Provides global access to the movement penalty system throughout the game.\n * \n * @public\n */\nexport const movementPenaltySystem = new MovementPenaltySystem();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEA,IAAa,wBAAb,MAAmC;;;;;;;;;;;;;;;;;CAiBjC,yBACE,QACA,WACA,gBACA,cAAsB,KAAK,KAAK,EACf;EAIjB,MAAM,gBAFiB,OAAO,UAAU,UAAU,UAC1B,OAAO,WAAW,UAAU,YACM;EAG1D,MAAM,EAAE,aAAa,oBAAoB,KAAK,yBAAyB,aAAa;EAGpF,MAAM,0BACJ,mBAAmB,KAAA,KACnB,eAAe,YAAY,eAAe,WAAW;EAGvD,MAAM,uBAAuB,2BAA2B,iBACpD,KAAK,IAAI,iBAAiB,eAAe,gBAAgB,GACzD;EAGJ,MAAM,sBACJ,eAAe,2BAA2B,cAAc,qBACpD,2BAA2B,cAAc,UACzC,2BAA2B,cAAc;EAG/C,MAAM,4BACJ,eAAe,2BAA2B,cAAc;EAG1D,MAAM,kBAAkB,KAAK,IAAI,IAAK,aAAa;EAKnD,OAAO;GACL,iBAAiB;GACjB,QAJa,gBAAgB,eAAe;GAK5C;GACA;GACA;GACA;GACA,mBAAmB;GACnB,sBAAsB,2BAA2B,iBAC7C,eAAe,YAAY,eAAe,WAC1C;GACL;;;;;;;;;;;;CAaH,yBAAiC,kBAG/B;EACA,MAAM,EAAE,YAAY,sBAAsB;EAE1C,IAAI,oBAAoB,WAAW,QACjC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OACI,IAAI,oBAAoB,WAAW,SACxC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OACI,IAAI,oBAAoB,WAAW,aACxC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OAED,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;;;;;;;;;;;;;;;;;;CAoBL,2BACE,QACA,WACA,mBACQ;EACR,MAAM,iBAAiB,OAAO,UAAU,UAAU;EAClD,MAAM,kBAAkB,OAAO,WAAW,UAAU;EAIpD,IAD4B,KAAK,IAAI,iBAAiB,gBAClD,GAAsB,KAExB,OAAO;EAIT,MAAM,qBAAqB,iBAAiB;EAG5C,MAAM,aAAa,kBAAkB,IAAI;EACzC,MAAM,cAAc,kBAAkB,IAAI;EAE1C,IAAI;OAEE,YACF,OAAO,2BAA2B,WAAW;QACxC,IAAI,aACT,OAAO,2BAA2B,WAAW;SAI/C,IAAI,aACF,OAAO,2BAA2B,WAAW;OACxC,IAAI,YACT,OAAO,2BAA2B,WAAW;EAIjD,OAAO;;;;;;;;;;;;;;;;CAiBT,qBACE,cACA,cAAsB,KAAK,KAAK,EACR;EACxB,OAAO;GACL,iBAAiB,2BAA2B,gBAAgB;GAC5D,UAAU,2BAA2B,gBAAgB;GACrD,WAAW;GACX;GACD;;;;;;;;;;;;;;;;CAiBH,2BACE,QACA,WACS;EAMT,QALuB,OAAO,UAAU,UAAU,UAC1B,OAAO,WAAW,UAAU,YACM,IAGpC,2BAA2B,WAAW;;;;;;;;;;;;;;;;CAiB9D,yBACE,QACA,WACS;EACT,MAAM,iBAAiB,OAAO,UAAU,UAAU;EAClD,MAAM,kBAAkB,OAAO,WAAW,UAAU;EAGpD,OACE,iBAAiB,2BAA2B,WAAW,eACvD,kBAAkB,2BAA2B,WAAW;;;;;;;;;;;;;;;;;;;;CAsB5D,uBACE,WACA,QACA,WACA,mBACA,gBACA,cAAsB,KAAK,KAAK,EACxB;EAER,MAAM,UAAU,KAAK,yBACnB,QACA,WACA,gBACA,YACD;EAGD,MAAM,uBAAuB,KAAK,2BAChC,QACA,WACA,kBACD;EAGD,OAAO,YAAY,QAAQ,kBAAkB;;;;;;;;;;;;AAajD,IAAa,wBAAwB,IAAI,uBAAuB"}
|
|
1
|
+
{"version":3,"file":"MovementPenaltySystem.js","names":[],"sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"sourcesContent":["/**\n * Movement Penalty System\n * \n * **Korean**: 이동 패널티 시스템\n * \n * Implements injury-based movement penalties where leg and body damage reduces\n * movement speed, stance changes, and mobility capabilities. This system applies\n * realistic combat trauma effects based on Korean martial arts principles.\n * \n * ## System Features\n * \n * - Progressive speed reduction based on leg health\n * - Asymmetric damage (left/right leg affects directional movement)\n * - Instant penalties from knee/ankle strikes (5 seconds)\n * - Stance change duration penalties\n * - Advanced stance restrictions when critically injured\n * - Balance integration for VULNERABLE/HELPLESS states\n * \n * ## Movement Speed Penalties\n * \n * | Leg Health | State | Speed | Can Run |\n * |------------|-------|-------|---------|\n * | 100-70% | Normal | 100% | Yes |\n * | 69-50% | Limping | 80% | Yes |\n * | 49-30% | Severe Limp | 60% | Yes |\n * | <30% | Hobbled | 40% | No |\n * \n * ## Stance Change Penalties\n * \n * - Legs <50% health: Stance change takes 2x longer\n * - Legs <30% health: Cannot change to advanced stances (only basic)\n * \n * @module systems/bodypart/MovementPenaltySystem\n * @category Body Part System\n * @korean 이동패널티시스템\n */\n\nimport {\n BodyPart,\n BodyPartHealth,\n BodyPartMaxHealth,\n LegInjuryState,\n MovementPenalty,\n InstantMovementPenalty,\n MOVEMENT_PENALTY_CONSTANTS,\n} from \"./types\";\n\n/**\n * Movement Penalty System class.\n * \n * **Korean**: 이동 패널티 시스템 클래스\n * \n * Calculates movement penalties from leg injuries, manages instant penalties\n * from knee/ankle strikes, and integrates with balance system.\n * \n * @example\n * ```typescript\n * const system = new MovementPenaltySystem();\n * \n * // Calculate current movement penalty\n * const penalty = system.calculateMovementPenalty(\n * bodyPartHealth,\n * maxHealth,\n * activeInstantPenalty\n * );\n * \n * // Apply to movement speed\n * const actualSpeed = baseSpeed * penalty.speedMultiplier;\n * ```\n * \n * @category Body Part System\n */\nexport class MovementPenaltySystem {\n /**\n * Calculate movement penalty from body part health.\n * \n * **Korean**: 이동 패널티 계산\n * \n * Analyzes leg health and returns comprehensive movement penalty including\n * speed multiplier, stance change penalties, and balance effects.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp for instant penalty expiry check\n * @returns Movement penalty with all modifiers\n * \n */\n calculateMovementPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): MovementPenalty {\n // Calculate average leg health percentage\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Determine injury state and base speed multiplier\n const { injuryState, speedMultiplier } = this.getInjuryStateFromHealth(avgLegHealth);\n\n // Check if instant penalty is active\n const hasActiveInstantPenalty = \n instantPenalty !== undefined &&\n instantPenalty.appliedAt + instantPenalty.duration > currentTime;\n\n // Apply instant penalty if active, otherwise use base multiplier\n const finalSpeedMultiplier = hasActiveInstantPenalty && instantPenalty\n ? Math.min(speedMultiplier, instantPenalty.speedMultiplier)\n : speedMultiplier;\n\n // Calculate stance change penalty\n const stanceChangePenalty = \n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.CRITICAL_THRESHOLD\n ? MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.INJURED\n : MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.NORMAL;\n\n // Determine if advanced stances are restricted\n const advancedStancesRestricted =\n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.RESTRICTION_THRESHOLD;\n\n // Calculate balance modifier (lower leg health = worse balance)\n const balanceModifier = Math.max(0.3, avgLegHealth);\n\n // Determine if player can run\n const canRun = injuryState !== LegInjuryState.HOBBLED;\n\n return {\n speedMultiplier: finalSpeedMultiplier,\n canRun,\n injuryState,\n stanceChangePenalty,\n advancedStancesRestricted,\n balanceModifier,\n hasInstantPenalty: hasActiveInstantPenalty,\n instantPenaltyExpiry: hasActiveInstantPenalty && instantPenalty\n ? instantPenalty.appliedAt + instantPenalty.duration\n : 0,\n };\n }\n\n /**\n * Get injury state and speed multiplier from leg health percentage.\n * \n * **Korean**: 부상 상태 및 속도 배율 조회\n * \n * @param legHealthPercent - Average leg health as percentage (0.0-1.0)\n * @returns Injury state and corresponding speed multiplier\n * \n * @private\n */\n private getInjuryStateFromHealth(legHealthPercent: number): {\n injuryState: LegInjuryState;\n speedMultiplier: number;\n } {\n const { THRESHOLDS, SPEED_MULTIPLIERS } = MOVEMENT_PENALTY_CONSTANTS;\n\n if (legHealthPercent >= THRESHOLDS.NORMAL) {\n return {\n injuryState: LegInjuryState.NORMAL,\n speedMultiplier: SPEED_MULTIPLIERS.NORMAL,\n };\n } else if (legHealthPercent >= THRESHOLDS.LIMPING) {\n return {\n injuryState: LegInjuryState.LIMPING,\n speedMultiplier: SPEED_MULTIPLIERS.LIMPING,\n };\n } else if (legHealthPercent >= THRESHOLDS.SEVERE_LIMP) {\n return {\n injuryState: LegInjuryState.SEVERE_LIMP,\n speedMultiplier: SPEED_MULTIPLIERS.SEVERE_LIMP,\n };\n } else {\n return {\n injuryState: LegInjuryState.HOBBLED,\n speedMultiplier: SPEED_MULTIPLIERS.HOBBLED,\n };\n }\n }\n\n /**\n * Calculate asymmetric movement penalty based on movement direction and injured leg.\n * \n * **Korean**: 비대칭 이동 패널티 계산\n * \n * Left leg damage affects left-side movements more, and vice versa.\n * This creates realistic limping behavior where movement toward the injured\n * side is more impaired.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction of movement (positive = right, negative = left)\n * @returns Additional speed multiplier for asymmetric penalty\n * \n */\n calculateAsymmetricPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number }\n ): number {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Only apply asymmetric penalty if one leg is significantly more damaged\n const legHealthDifference = Math.abs(leftLegPercent - rightLegPercent);\n if (legHealthDifference < 0.15) {\n // Both legs similarly damaged - no asymmetric penalty\n return 1.0;\n }\n\n // Determine which leg is more injured\n const leftLegMoreInjured = leftLegPercent < rightLegPercent;\n\n // Horizontal movement direction (x-axis)\n const movingLeft = movementDirection.x < -0.1;\n const movingRight = movementDirection.x > 0.1;\n\n if (leftLegMoreInjured) {\n // Left leg injured - left movement more impaired\n if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n } else {\n // Right leg injured - right movement more impaired\n if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n }\n\n return 1.0; // No horizontal movement\n }\n\n /**\n * Create instant movement penalty from knee/ankle strike.\n * \n * **Korean**: 순간 이동 패널티 생성\n * \n * Applied when knee or ankle vital points are struck, causing immediate\n * severe movement impairment for 5 seconds.\n * \n * @param affectedPart - Body part that was struck (LEG_LEFT or LEG_RIGHT)\n * @param currentTime - Timestamp when strike occurred\n * @returns Instant movement penalty configuration\n * \n */\n createInstantPenalty(\n affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT,\n currentTime: number = Date.now()\n ): InstantMovementPenalty {\n return {\n speedMultiplier: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.SPEED_MULTIPLIER,\n duration: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.DURATION,\n appliedAt: currentTime,\n affectedPart,\n };\n }\n\n /**\n * Check if player should enter VULNERABLE state from leg damage.\n * \n * **Korean**: 취약 상태 확인\n * \n * Low leg health increases chance of entering vulnerable state,\n * making player more susceptible to follow-up attacks.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter vulnerable state\n * \n */\n shouldEnterVulnerableState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Enter vulnerable state when legs are critically damaged\n return avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;\n }\n\n /**\n * Check if player should enter HELPLESS state from leg damage.\n * \n * **Korean**: 무력 상태 확인\n * \n * Both legs critically damaged or hobbled - player cannot maintain\n * effective combat stance and is highly vulnerable.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter helpless state\n * \n */\n shouldEnterHelplessState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Enter helpless state when both legs are hobbled\n return (\n leftLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP &&\n rightLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP\n );\n }\n\n /**\n * Calculate modified movement speed with all penalties applied.\n * \n * **Korean**: 수정된 이동 속도 계산\n * \n * Applies base movement penalty, asymmetric penalties, and instant penalties\n * to calculate the final movement speed.\n * \n * @param baseSpeed - Base movement speed (pixels per frame)\n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction vector of movement\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp\n * @returns Final movement speed with all penalties applied\n * \n */\n calculateModifiedSpeed(\n baseSpeed: number,\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number },\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): number {\n // Get base movement penalty\n const penalty = this.calculateMovementPenalty(\n health,\n maxHealth,\n instantPenalty,\n currentTime\n );\n\n // Calculate asymmetric penalty\n const asymmetricMultiplier = this.calculateAsymmetricPenalty(\n health,\n maxHealth,\n movementDirection\n );\n\n // Apply all multipliers\n return baseSpeed * penalty.speedMultiplier * asymmetricMultiplier;\n }\n}\n\n/**\n * Singleton instance of Movement Penalty System.\n * \n * **Korean**: 이동 패널티 시스템 싱글톤\n * \n * Provides global access to the movement penalty system throughout the game.\n * \n */\nexport const movementPenaltySystem = new MovementPenaltySystem();\n"],"mappings":"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"}
|
|
@@ -40,7 +40,6 @@ import { CombatInjuryIntegration } from "./CombatInjuryIntegration";
|
|
|
40
40
|
* manager.clearPlayerInjuries('player-1');
|
|
41
41
|
* ```
|
|
42
42
|
*
|
|
43
|
-
* @public
|
|
44
43
|
*/
|
|
45
44
|
export declare class PlayerInjuryTrackingManager {
|
|
46
45
|
private trackers;
|
|
@@ -53,7 +52,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
53
52
|
* @param playerId - Unique player identifier (string or number)
|
|
54
53
|
* @returns InjuryTracker instance for the player
|
|
55
54
|
*
|
|
56
|
-
* @public
|
|
57
55
|
*/
|
|
58
56
|
getTrackerForPlayer(playerId: string | number): InjuryTracker;
|
|
59
57
|
/**
|
|
@@ -64,7 +62,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
64
62
|
* @param playerId - Unique player identifier (string or number)
|
|
65
63
|
* @returns CombatInjuryIntegration instance for the player
|
|
66
64
|
*
|
|
67
|
-
* @public
|
|
68
65
|
*/
|
|
69
66
|
getIntegrationForPlayer(playerId: string | number): CombatInjuryIntegration;
|
|
70
67
|
/**
|
|
@@ -76,7 +73,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
76
73
|
*
|
|
77
74
|
* @param playerId - Unique player identifier (string or number)
|
|
78
75
|
*
|
|
79
|
-
* @public
|
|
80
76
|
*/
|
|
81
77
|
clearPlayerInjuries(playerId: string | number): void;
|
|
82
78
|
/**
|
|
@@ -86,7 +82,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
86
82
|
*
|
|
87
83
|
* @param playerId - Unique player identifier (string or number)
|
|
88
84
|
*
|
|
89
|
-
* @public
|
|
90
85
|
*/
|
|
91
86
|
removePlayer(playerId: string | number): void;
|
|
92
87
|
/**
|
|
@@ -96,7 +91,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
96
91
|
*
|
|
97
92
|
* Useful for resetting the entire game state.
|
|
98
93
|
*
|
|
99
|
-
* @public
|
|
100
94
|
*/
|
|
101
95
|
clearAll(): void;
|
|
102
96
|
/**
|
|
@@ -106,7 +100,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
106
100
|
*
|
|
107
101
|
* @returns Array of player IDs
|
|
108
102
|
*
|
|
109
|
-
* @public
|
|
110
103
|
*/
|
|
111
104
|
getActivePlayerIds(): string[];
|
|
112
105
|
}
|
|
@@ -131,7 +124,6 @@ export declare class PlayerInjuryTrackingManager {
|
|
|
131
124
|
* });
|
|
132
125
|
* ```
|
|
133
126
|
*
|
|
134
|
-
* @public
|
|
135
127
|
*/
|
|
136
128
|
export declare const playerInjuryManager: PlayerInjuryTrackingManager;
|
|
137
129
|
//# sourceMappingURL=PlayerInjuryTrackingManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerInjuryTrackingManager.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"PlayerInjuryTrackingManager.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,YAAY,CAA8C;IAElE;;;;;;;;OAQG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAU7D;;;;;;;;OAQG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,uBAAuB;IAiB3E;;;;;;;;;OASG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQpD;;;;;;;OAOG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7C;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI;IAKhB;;;;;;;OAOG;IACH,kBAAkB,IAAI,MAAM,EAAE;CAG/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAC"}
|
|
@@ -41,7 +41,6 @@ import { CombatInjuryIntegration } from "./CombatInjuryIntegration.js";
|
|
|
41
41
|
* manager.clearPlayerInjuries('player-1');
|
|
42
42
|
* ```
|
|
43
43
|
*
|
|
44
|
-
* @public
|
|
45
44
|
*/
|
|
46
45
|
var PlayerInjuryTrackingManager = class {
|
|
47
46
|
trackers = /* @__PURE__ */ new Map();
|
|
@@ -54,7 +53,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
54
53
|
* @param playerId - Unique player identifier (string or number)
|
|
55
54
|
* @returns InjuryTracker instance for the player
|
|
56
55
|
*
|
|
57
|
-
* @public
|
|
58
56
|
*/
|
|
59
57
|
getTrackerForPlayer(playerId) {
|
|
60
58
|
const key = String(playerId);
|
|
@@ -73,7 +71,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
73
71
|
* @param playerId - Unique player identifier (string or number)
|
|
74
72
|
* @returns CombatInjuryIntegration instance for the player
|
|
75
73
|
*
|
|
76
|
-
* @public
|
|
77
74
|
*/
|
|
78
75
|
getIntegrationForPlayer(playerId) {
|
|
79
76
|
const key = String(playerId);
|
|
@@ -98,7 +95,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
98
95
|
*
|
|
99
96
|
* @param playerId - Unique player identifier (string or number)
|
|
100
97
|
*
|
|
101
|
-
* @public
|
|
102
98
|
*/
|
|
103
99
|
clearPlayerInjuries(playerId) {
|
|
104
100
|
const key = String(playerId);
|
|
@@ -112,7 +108,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
112
108
|
*
|
|
113
109
|
* @param playerId - Unique player identifier (string or number)
|
|
114
110
|
*
|
|
115
|
-
* @public
|
|
116
111
|
*/
|
|
117
112
|
removePlayer(playerId) {
|
|
118
113
|
const key = String(playerId);
|
|
@@ -126,7 +121,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
126
121
|
*
|
|
127
122
|
* Useful for resetting the entire game state.
|
|
128
123
|
*
|
|
129
|
-
* @public
|
|
130
124
|
*/
|
|
131
125
|
clearAll() {
|
|
132
126
|
this.trackers.clear();
|
|
@@ -139,7 +133,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
139
133
|
*
|
|
140
134
|
* @returns Array of player IDs
|
|
141
135
|
*
|
|
142
|
-
* @public
|
|
143
136
|
*/
|
|
144
137
|
getActivePlayerIds() {
|
|
145
138
|
return Array.from(this.trackers.keys());
|
|
@@ -166,7 +159,6 @@ var PlayerInjuryTrackingManager = class {
|
|
|
166
159
|
* });
|
|
167
160
|
* ```
|
|
168
161
|
*
|
|
169
|
-
* @public
|
|
170
162
|
*/
|
|
171
163
|
var playerInjuryManager = new PlayerInjuryTrackingManager();
|
|
172
164
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerInjuryTrackingManager.js","names":[],"sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"sourcesContent":["/**\n * Player Injury Tracking Manager\n * \n * **Korean**: 플레이어 부상 추적 관리자\n * \n * Manages per-player injury tracking to prevent mixing injuries between\n * multiple characters in combat scenarios. Each player gets their own\n * InjuryTracker instance.\n * \n * @module systems/bodypart\n * @category Injury Tracking\n * @korean 부상추적\n */\n\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport { CombatInjuryIntegration } from \"./CombatInjuryIntegration\";\n\n/**\n * Manager for per-player injury tracking.\n * \n * **Korean**: 플레이어별 부상 추적 관리자\n * \n * Maintains separate {@link InjuryTracker} and {@link CombatInjuryIntegration}\n * instances for each player to ensure injuries don't get mixed between characters.\n * \n * @example\n * ```typescript\n * const manager = new PlayerInjuryTrackingManager();\n * \n * // Get or create tracker for a player\n * const player1Tracker = manager.getTrackerForPlayer('player-1');\n * const player1Integration = manager.getIntegrationForPlayer('player-1');\n * \n * // Record injury for specific player\n * player1Integration.recordCombatDamage({\n * damage: 35,\n * bodyRegion: BodyRegion.TORSO,\n * damageType: DamageType.BLUNT,\n * });\n * \n * // Clear injuries for a player (e.g., between rounds)\n * manager.clearPlayerInjuries('player-1');\n * ```\n * \n
|
|
1
|
+
{"version":3,"file":"PlayerInjuryTrackingManager.js","names":[],"sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"sourcesContent":["/**\n * Player Injury Tracking Manager\n * \n * **Korean**: 플레이어 부상 추적 관리자\n * \n * Manages per-player injury tracking to prevent mixing injuries between\n * multiple characters in combat scenarios. Each player gets their own\n * InjuryTracker instance.\n * \n * @module systems/bodypart\n * @category Injury Tracking\n * @korean 부상추적\n */\n\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport { CombatInjuryIntegration } from \"./CombatInjuryIntegration\";\n\n/**\n * Manager for per-player injury tracking.\n * \n * **Korean**: 플레이어별 부상 추적 관리자\n * \n * Maintains separate {@link InjuryTracker} and {@link CombatInjuryIntegration}\n * instances for each player to ensure injuries don't get mixed between characters.\n * \n * @example\n * ```typescript\n * const manager = new PlayerInjuryTrackingManager();\n * \n * // Get or create tracker for a player\n * const player1Tracker = manager.getTrackerForPlayer('player-1');\n * const player1Integration = manager.getIntegrationForPlayer('player-1');\n * \n * // Record injury for specific player\n * player1Integration.recordCombatDamage({\n * damage: 35,\n * bodyRegion: BodyRegion.TORSO,\n * damageType: DamageType.BLUNT,\n * });\n * \n * // Clear injuries for a player (e.g., between rounds)\n * manager.clearPlayerInjuries('player-1');\n * ```\n * \n */\nexport class PlayerInjuryTrackingManager {\n private trackers = new Map<string, InjuryTracker>();\n private integrations = new Map<string, CombatInjuryIntegration>();\n\n /**\n * Get the InjuryTracker for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 InjuryTracker 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns InjuryTracker instance for the player\n * \n */\n getTrackerForPlayer(playerId: string | number): InjuryTracker {\n const key = String(playerId);\n let tracker = this.trackers.get(key);\n if (!tracker) {\n tracker = new InjuryTracker();\n this.trackers.set(key, tracker);\n }\n return tracker;\n }\n\n /**\n * Get the CombatInjuryIntegration for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 CombatInjuryIntegration 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns CombatInjuryIntegration instance for the player\n * \n */\n getIntegrationForPlayer(playerId: string | number): CombatInjuryIntegration {\n const key = String(playerId);\n let integration = this.integrations.get(key);\n if (!integration) {\n const tracker = this.getTrackerForPlayer(playerId);\n // Pass complete config with tracker override\n integration = new CombatInjuryIntegration({\n enabled: true,\n minDamage: 5,\n bloodThreshold: 30,\n tracker,\n });\n this.integrations.set(key, integration);\n }\n return integration;\n }\n\n /**\n * Clear all injuries for a specific player.\n * \n * **Korean**: 특정 플레이어의 모든 부상 제거\n * \n * Useful for round resets or when a player is defeated.\n * \n * @param playerId - Unique player identifier (string or number)\n * \n */\n clearPlayerInjuries(playerId: string | number): void {\n const key = String(playerId);\n const tracker = this.trackers.get(key);\n if (tracker) {\n tracker.clearInjuries();\n }\n }\n\n /**\n * Remove tracking data for a player (e.g., when they leave the game).\n * \n * **Korean**: 플레이어 추적 데이터 제거\n * \n * @param playerId - Unique player identifier (string or number)\n * \n */\n removePlayer(playerId: string | number): void {\n const key = String(playerId);\n this.trackers.delete(key);\n this.integrations.delete(key);\n }\n\n /**\n * Clear all player tracking data.\n * \n * **Korean**: 모든 플레이어 추적 데이터 제거\n * \n * Useful for resetting the entire game state.\n * \n */\n clearAll(): void {\n this.trackers.clear();\n this.integrations.clear();\n }\n\n /**\n * Get all active player IDs being tracked.\n * \n * **Korean**: 추적 중인 모든 플레이어 ID 가져오기\n * \n * @returns Array of player IDs\n * \n */\n getActivePlayerIds(): string[] {\n return Array.from(this.trackers.keys());\n }\n}\n\n/**\n * Global singleton manager for player injury tracking.\n * \n * **Korean**: 플레이어 부상 추적을 위한 전역 싱글톤 관리자\n * \n * This singleton manages per-player injury trackers to ensure injuries\n * from different characters don't get mixed together.\n * \n * @example\n * ```typescript\n * import { playerInjuryManager } from '@/systems/bodypart';\n * \n * // In combat code:\n * const defenderIntegration = playerInjuryManager.getIntegrationForPlayer(defender.id);\n * defenderIntegration.recordCombatDamage({\n * damage: result.damage,\n * bodyRegion,\n * damageType,\n * });\n * ```\n * \n */\nexport const playerInjuryManager = new PlayerInjuryTrackingManager();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,IAAa,8BAAb,MAAyC;CACvC,2BAAmB,IAAI,KAA4B;CACnD,+BAAuB,IAAI,KAAsC;;;;;;;;;;CAWjE,oBAAoB,UAA0C;EAC5D,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI;EACpC,IAAI,CAAC,SAAS;GACZ,UAAU,IAAI,eAAe;GAC7B,KAAK,SAAS,IAAI,KAAK,QAAQ;;EAEjC,OAAO;;;;;;;;;;;CAYT,wBAAwB,UAAoD;EAC1E,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,cAAc,KAAK,aAAa,IAAI,IAAI;EAC5C,IAAI,CAAC,aAAa;GAGhB,cAAc,IAAI,wBAAwB;IACxC,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,SANc,KAAK,oBAAoB,SAMvC;IACD,CAAC;GACF,KAAK,aAAa,IAAI,KAAK,YAAY;;EAEzC,OAAO;;;;;;;;;;;;CAaT,oBAAoB,UAAiC;EACnD,MAAM,MAAM,OAAO,SAAS;EAC5B,MAAM,UAAU,KAAK,SAAS,IAAI,IAAI;EACtC,IAAI,SACF,QAAQ,eAAe;;;;;;;;;;CAY3B,aAAa,UAAiC;EAC5C,MAAM,MAAM,OAAO,SAAS;EAC5B,KAAK,SAAS,OAAO,IAAI;EACzB,KAAK,aAAa,OAAO,IAAI;;;;;;;;;;CAW/B,WAAiB;EACf,KAAK,SAAS,OAAO;EACrB,KAAK,aAAa,OAAO;;;;;;;;;;CAW3B,qBAA+B;EAC7B,OAAO,MAAM,KAAK,KAAK,SAAS,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AA0B3C,IAAa,sBAAsB,IAAI,6BAA6B"}
|