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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatStateSystem.js","names":[],"sources":["../../../src/systems/combat/CombatStateSystem.ts"],"sourcesContent":["/**\n * Combat State System for managing Ready/Shaken/Vulnerable/Helpless states.\n * \n * **Korean**: 전투 상태 시스템 (Combat State System)\n * \n * Implements the combat readiness state machine based on cumulative damage,\n * pain, consciousness, and balance. Each state affects player capabilities\n * with specific multipliers.\n * \n * ## Combat States\n * \n * - **🟢 READY**: 100% capability - perfect combat condition\n * - **🟡 SHAKEN**: 80% capability - slightly compromised, -20% accuracy\n * - **🟠 VULNERABLE**: 60% capability - significantly exposed, -40% defense\n * - **🔴 HELPLESS**: 20% capability - near incapacitation, cannot block\n * \n * @module systems/combat/CombatStateSystem\n * @category Combat System\n * @korean 전투상태시스템\n */\n\nimport { PlayerState } from \"../player\";\n\n/**\n * Combat readiness states representing player combat effectiveness.\n * \n * **Korean**: 전투 준비 상태\n */\nexport enum CombatReadinessState {\n /** 🟢 Ready - Full combat capability (100%) */\n READY = \"ready\",\n /** 🟡 Shaken - Reduced effectiveness (80%) */\n SHAKEN = \"shaken\",\n /** 🟠 Vulnerable - Significantly impaired (60%) */\n VULNERABLE = \"vulnerable\",\n /** 🔴 Helpless - Near incapacitation (20%) */\n HELPLESS = \"helpless\",\n}\n\n/**\n * State capability modifiers for each combat state.\n * \n * **Korean**: 상태 능력 배율\n */\ninterface StateCapability {\n /** Overall capability percentage */\n readonly capability: number;\n /** Accuracy modifier (affects hit chance and damage output) */\n readonly accuracyModifier: number;\n /** Defense modifier (affects damage reduction) */\n readonly defenseModifier: number;\n /** Damage modifier (affects outgoing damage) */\n readonly damageModifier: number;\n /** Damage taken multiplier (affects incoming damage) */\n readonly damageTakenMultiplier: number;\n /** Movement speed modifier */\n readonly speedModifier: number;\n /** Can perform blocking actions */\n readonly canBlock: boolean;\n /** Can execute techniques */\n readonly canExecuteTechniques: boolean;\n}\n\n/**\n * Combat State System managing readiness state transitions.\n * \n * Evaluates player condition and determines current combat readiness state.\n * States degrade based on:\n * - Cumulative damage (health loss)\n * - Pain overload\n * - Consciousness reduction\n * - Balance disruption\n * \n * @example\n * ```typescript\n * const combatStateSystem = new CombatStateSystem();\n * \n * // Determine current state\n * const state = combatStateSystem.determineState(player);\n * \n * // Get capability modifiers\n * const capability = combatStateSystem.getCapability(state);\n * console.log(`Capability: ${capability.capability}%`);\n * \n * // Apply modifiers to damage calculation\n * const modifiedDamage = baseDamage * capability.accuracyModifier;\n * ```\n * \n * @public\n * @korean 전투상태시스템\n */\nexport class CombatStateSystem {\n /**\n * State capability definitions with modifiers per state.\n * \n * Based on acceptance criteria:\n * - READY: 100% capability (baseline)\n * - SHAKEN: -15% accuracy, -10% damage\n * - VULNERABLE: -30% accuracy, -25% damage, +50% damage taken\n * - HELPLESS: Cannot attack, cannot block, +100% damage taken\n */\n private readonly stateCapabilities: Record<CombatReadinessState, StateCapability> = {\n [CombatReadinessState.READY]: {\n capability: 1.0, // 100%\n accuracyModifier: 1.0,\n defenseModifier: 1.0,\n damageModifier: 1.0,\n damageTakenMultiplier: 1.0, // Normal damage taken\n speedModifier: 1.0,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.SHAKEN]: {\n capability: 0.85, // 85%\n accuracyModifier: 0.85, // -15% accuracy\n defenseModifier: 1.0,\n damageModifier: 0.9, // -10% damage\n damageTakenMultiplier: 1.0, // Normal damage taken\n speedModifier: 0.95,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.VULNERABLE]: {\n capability: 0.7, // 70%\n accuracyModifier: 0.7, // -30% accuracy\n defenseModifier: 0.75,\n damageModifier: 0.75, // -25% damage\n damageTakenMultiplier: 1.5, // +50% damage taken\n speedModifier: 0.8,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.HELPLESS]: {\n capability: 0.0, // 0%\n accuracyModifier: 0.0, // Cannot attack\n defenseModifier: 0.0,\n damageModifier: 0.0, // Cannot attack\n damageTakenMultiplier: 2.0, // +100% damage taken (2x)\n speedModifier: 0.3,\n canBlock: false, // Cannot block\n canExecuteTechniques: false,\n },\n };\n\n /**\n * Determines the current combat readiness state based on player condition.\n * \n * Evaluates health, pain, consciousness, balance, and recent hits to determine\n * the most appropriate combat state. State transitions follow acceptance criteria:\n * - READY → SHAKEN: After taking 2-3 hits or significant vital point strike\n * - SHAKEN → VULNERABLE: After additional 2 hits or loss of 30% body part health\n * - VULNERABLE → HELPLESS: After head trauma, pain >80, or knock-down\n * - Recovery: HELPLESS → READY over 5 seconds if no additional hits\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp in milliseconds\n * @returns Current combat readiness state\n * \n * @example\n * ```typescript\n * const state = combatStateSystem.determineState(player, Date.now());\n * if (state === CombatReadinessState.HELPLESS) {\n * console.log(\"Player is near incapacitation!\");\n * }\n * ```\n * \n * @public\n * @korean 상태결정\n */\n determineState(player: PlayerState, currentTime?: number): CombatReadinessState {\n const healthPercent = player.health / player.maxHealth;\n const pain = player.pain;\n const consciousness = player.consciousness;\n const balance = player.balance;\n \n // Count recent hits (within last 10 seconds)\n const recentHits = this.countRecentHits(player, currentTime, 10000);\n \n // Check for recovery from HELPLESS state\n // If player was helpless and recovery conditions are met, allow normal state determination\n // Recovery overrides low stats if enough time has passed without hits\n if (player.lastHelplessStateTime && currentTime) {\n const timeSinceHelpless = currentTime - player.lastHelplessStateTime;\n const noRecentHits = this.countRecentHits(player, currentTime, 5000) === 0;\n \n // Recovery: HELPLESS → normal state after 5 seconds if no additional hits\n if (timeSinceHelpless >= 5000 && noRecentHits) {\n // Player has recovered - skip HELPLESS check and determine state normally\n // This allows recovery even if stats are still low\n // Continue to normal state determination below\n } else if (timeSinceHelpless < 5000) {\n // Still in recovery period, check if should remain HELPLESS\n const stillCritical = healthPercent <= 0.3 || pain > 80 || consciousness <= 20 || balance <= 20;\n if (stillCritical) {\n return CombatReadinessState.HELPLESS;\n }\n }\n }\n\n // Check for HELPLESS state (worst condition) - only if not in recovery\n // Triggers: health <= 30%, pain > 80, consciousness <= 20, balance <= 20, or head trauma\n const hasHeadTrauma = player.bodyPartHealth \n ? (player.bodyPartHealth.head / (player.bodyPartMaxHealth?.head ?? 100)) < 0.5\n : false;\n \n // Only enter HELPLESS if not already recovering\n const isRecovering = player.lastHelplessStateTime && currentTime \n && (currentTime - player.lastHelplessStateTime) >= 5000\n && this.countRecentHits(player, currentTime, 5000) === 0;\n \n if (!isRecovering && (\n healthPercent <= 0.3 ||\n pain > 80 ||\n consciousness <= 20 ||\n balance <= 20 ||\n hasHeadTrauma\n )) {\n return CombatReadinessState.HELPLESS;\n }\n\n // Check for VULNERABLE state\n // Triggers: health <= 50%, pain > 60, consciousness <= 40, balance <= 40,\n // or 30% body part health loss\n const hasBodyPartDamage = this.checkBodyPartHealthLoss(player, 0.3);\n \n if (\n healthPercent <= 0.5 ||\n pain > 60 ||\n consciousness <= 40 ||\n balance <= 40 ||\n hasBodyPartDamage ||\n recentHits >= 4 // Additional 2 hits from SHAKEN (total 4-5 hits)\n ) {\n return CombatReadinessState.VULNERABLE;\n }\n\n // Check for SHAKEN state\n // Triggers: health <= 70%, pain > 30, consciousness <= 60, balance <= 60,\n // or 2-3 recent hits\n if (\n healthPercent <= 0.7 ||\n pain > 30 ||\n consciousness <= 60 ||\n balance <= 60 ||\n recentHits >= 2 // 2-3 hits triggers SHAKEN\n ) {\n return CombatReadinessState.SHAKEN;\n }\n\n // Default to READY state\n return CombatReadinessState.READY;\n }\n\n /**\n * Gets the capability modifiers for a specific combat state.\n * \n * Returns all modifiers that should be applied to player actions\n * based on their current combat readiness.\n * \n * @param state - Combat readiness state\n * @returns Capability modifiers for the state\n * \n * @example\n * ```typescript\n * const capability = combatStateSystem.getCapability(\n * CombatReadinessState.SHAKEN\n * );\n * \n * // Apply to damage calculation\n * const finalDamage = baseDamage * capability.accuracyModifier;\n * \n * // Check if can block\n * if (!capability.canBlock) {\n * console.log(\"Cannot block in this state!\");\n * }\n * ```\n * \n * @public\n * @korean 능력조회\n */\n getCapability(state: CombatReadinessState): StateCapability {\n return this.stateCapabilities[state];\n }\n\n /**\n * Applies combat state modifiers to a player state.\n * \n * Creates a modified player state with capability reductions\n * based on current combat readiness.\n * \n * @param player - Current player state\n * @param state - Combat readiness state to apply\n * @returns Modified player state with applied modifiers\n * \n * @example\n * ```typescript\n * const state = combatStateSystem.determineState(player);\n * const modifiedPlayer = combatStateSystem.applyStateModifiers(\n * player,\n * state\n * );\n * ```\n * \n * @public\n * @korean 상태적용\n */\n applyStateModifiers(\n player: PlayerState,\n state: CombatReadinessState\n ): PlayerState {\n const capability = this.getCapability(state);\n\n return {\n ...player,\n attackPower: Math.floor(player.attackPower * capability.damageModifier),\n defense: Math.floor(player.defense * capability.defenseModifier),\n speed: Math.floor(player.speed * capability.speedModifier),\n isBlocking: player.isBlocking && capability.canBlock,\n isStunned: player.isStunned || !capability.canExecuteTechniques,\n };\n }\n\n /**\n * Gets bilingual name for combat state.\n * \n * @param state - Combat readiness state\n * @returns Korean and English state names\n * \n * @public\n * @korean 상태이름\n */\n getStateName(state: CombatReadinessState): { korean: string; english: string } {\n const names: Record<CombatReadinessState, { korean: string; english: string }> = {\n [CombatReadinessState.READY]: {\n korean: \"준비완료\",\n english: \"Ready\",\n },\n [CombatReadinessState.SHAKEN]: {\n korean: \"동요상태\",\n english: \"Shaken\",\n },\n [CombatReadinessState.VULNERABLE]: {\n korean: \"취약상태\",\n english: \"Vulnerable\",\n },\n [CombatReadinessState.HELPLESS]: {\n korean: \"무력상태\",\n english: \"Helpless\",\n },\n };\n\n return names[state];\n }\n\n /**\n * Gets emoji indicator for combat state.\n * \n * @param state - Combat readiness state\n * @returns Emoji representing the state\n * \n * @public\n * @korean 상태아이콘\n */\n getStateEmoji(state: CombatReadinessState): string {\n const emojis: Record<CombatReadinessState, string> = {\n [CombatReadinessState.READY]: \"🟢\",\n [CombatReadinessState.SHAKEN]: \"🟡\",\n [CombatReadinessState.VULNERABLE]: \"🟠\",\n [CombatReadinessState.HELPLESS]: \"🔴\",\n };\n\n return emojis[state];\n }\n\n /**\n * Counts recent hits within a time window.\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp (milliseconds)\n * @param timeWindow - Time window to check in milliseconds\n * @returns Number of hits within the time window\n * \n * @private\n * @korean 최근타격횟수\n */\n private countRecentHits(\n player: PlayerState,\n currentTime: number | undefined,\n timeWindow: number\n ): number {\n if (!currentTime || !player.recentHitTimestamps) {\n return 0;\n }\n\n const cutoffTime = currentTime - timeWindow;\n return player.recentHitTimestamps.filter(\n (timestamp) => timestamp >= cutoffTime\n ).length;\n }\n\n /**\n * Checks if any body part has lost more than the specified percentage of health.\n * \n * @param player - Current player state\n * @param lossThreshold - Health loss threshold (0.0 to 1.0)\n * @returns True if any body part has lost more than the threshold\n * \n * @private\n * @korean 신체부위손상확인\n */\n private checkBodyPartHealthLoss(\n player: PlayerState,\n lossThreshold: number\n ): boolean {\n if (!player.bodyPartHealth || !player.bodyPartMaxHealth) {\n return false;\n }\n\n const bodyParts: Array<keyof typeof player.bodyPartHealth> = [\n \"head\",\n \"neck\",\n \"torsoUpper\",\n \"torsoLower\",\n \"armLeft\",\n \"armRight\",\n \"legLeft\",\n \"legRight\",\n ];\n\n for (const part of bodyParts) {\n const current = player.bodyPartHealth[part];\n const max = player.bodyPartMaxHealth[part];\n const healthPercent = current / max;\n const lossPercent = 1 - healthPercent;\n\n if (lossPercent >= lossThreshold) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Records a hit on the player and updates recent hit tracking.\n * \n * Should be called by combat system when player takes a hit.\n * Maintains a rolling window of the last 10 hit timestamps.\n * \n * @param player - Current player state\n * @param currentTime - Timestamp of the hit\n * @returns Updated player state with recorded hit\n * \n * @public\n * @korean 타격기록\n */\n recordHit(player: PlayerState, currentTime: number): PlayerState {\n const recentHits = player.recentHitTimestamps ?? [];\n \n // Add new hit timestamp and keep only last 10\n const updatedHits = [...recentHits, currentTime].slice(-10);\n\n return {\n ...player,\n recentHitTimestamps: updatedHits,\n hitsTaken: player.hitsTaken + 1,\n };\n }\n\n /**\n * Updates player when entering HELPLESS state.\n * \n * Records the timestamp for recovery tracking.\n * \n * @param player - Current player state\n * @param currentTime - Timestamp when entering helpless state\n * @returns Updated player state\n * \n * @public\n * @korean 무력상태기록\n */\n enterHelplessState(player: PlayerState, currentTime: number): PlayerState {\n return {\n ...player,\n lastHelplessStateTime: currentTime,\n };\n }\n\n /**\n * Checks if player can recover from HELPLESS state.\n * \n * Recovery occurs after 5 seconds with no additional hits.\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp\n * @returns True if recovery is possible\n * \n * @public\n * @korean 회복가능확인\n */\n canRecoverFromHelpless(player: PlayerState, currentTime: number): boolean {\n if (!player.lastHelplessStateTime) {\n return false;\n }\n\n const timeSinceHelpless = currentTime - player.lastHelplessStateTime;\n const noRecentHits = this.countRecentHits(player, currentTime, 5000) === 0;\n\n return timeSinceHelpless >= 5000 && noRecentHits;\n }\n}\n\nexport default CombatStateSystem;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CombatStateSystem.js","names":[],"sources":["../../../src/systems/combat/CombatStateSystem.ts"],"sourcesContent":["/**\n * Combat State System for managing Ready/Shaken/Vulnerable/Helpless states.\n * \n * **Korean**: 전투 상태 시스템 (Combat State System)\n * \n * Implements the combat readiness state machine based on cumulative damage,\n * pain, consciousness, and balance. Each state affects player capabilities\n * with specific multipliers.\n * \n * ## Combat States\n * \n * - **🟢 READY**: 100% capability - perfect combat condition\n * - **🟡 SHAKEN**: 80% capability - slightly compromised, -20% accuracy\n * - **🟠 VULNERABLE**: 60% capability - significantly exposed, -40% defense\n * - **🔴 HELPLESS**: 20% capability - near incapacitation, cannot block\n * \n * @module systems/combat/CombatStateSystem\n * @category Combat System\n * @korean 전투상태시스템\n */\n\nimport { PlayerState } from \"../player\";\n\n/**\n * Combat readiness states representing player combat effectiveness.\n * \n * **Korean**: 전투 준비 상태\n */\nexport enum CombatReadinessState {\n /** 🟢 Ready - Full combat capability (100%) */\n READY = \"ready\",\n /** 🟡 Shaken - Reduced effectiveness (80%) */\n SHAKEN = \"shaken\",\n /** 🟠 Vulnerable - Significantly impaired (60%) */\n VULNERABLE = \"vulnerable\",\n /** 🔴 Helpless - Near incapacitation (20%) */\n HELPLESS = \"helpless\",\n}\n\n/**\n * State capability modifiers for each combat state.\n * \n * **Korean**: 상태 능력 배율\n */\ninterface StateCapability {\n /** Overall capability percentage */\n readonly capability: number;\n /** Accuracy modifier (affects hit chance and damage output) */\n readonly accuracyModifier: number;\n /** Defense modifier (affects damage reduction) */\n readonly defenseModifier: number;\n /** Damage modifier (affects outgoing damage) */\n readonly damageModifier: number;\n /** Damage taken multiplier (affects incoming damage) */\n readonly damageTakenMultiplier: number;\n /** Movement speed modifier */\n readonly speedModifier: number;\n /** Can perform blocking actions */\n readonly canBlock: boolean;\n /** Can execute techniques */\n readonly canExecuteTechniques: boolean;\n}\n\n/**\n * Combat State System managing readiness state transitions.\n * \n * Evaluates player condition and determines current combat readiness state.\n * States degrade based on:\n * - Cumulative damage (health loss)\n * - Pain overload\n * - Consciousness reduction\n * - Balance disruption\n * \n * @example\n * ```typescript\n * const combatStateSystem = new CombatStateSystem();\n * \n * // Determine current state\n * const state = combatStateSystem.determineState(player);\n * \n * // Get capability modifiers\n * const capability = combatStateSystem.getCapability(state);\n * console.log(`Capability: ${capability.capability}%`);\n * \n * // Apply modifiers to damage calculation\n * const modifiedDamage = baseDamage * capability.accuracyModifier;\n * ```\n * \n * @korean 전투상태시스템\n */\nexport class CombatStateSystem {\n /**\n * State capability definitions with modifiers per state.\n * \n * Based on acceptance criteria:\n * - READY: 100% capability (baseline)\n * - SHAKEN: -15% accuracy, -10% damage\n * - VULNERABLE: -30% accuracy, -25% damage, +50% damage taken\n * - HELPLESS: Cannot attack, cannot block, +100% damage taken\n */\n private readonly stateCapabilities: Record<CombatReadinessState, StateCapability> = {\n [CombatReadinessState.READY]: {\n capability: 1.0, // 100%\n accuracyModifier: 1.0,\n defenseModifier: 1.0,\n damageModifier: 1.0,\n damageTakenMultiplier: 1.0, // Normal damage taken\n speedModifier: 1.0,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.SHAKEN]: {\n capability: 0.85, // 85%\n accuracyModifier: 0.85, // -15% accuracy\n defenseModifier: 1.0,\n damageModifier: 0.9, // -10% damage\n damageTakenMultiplier: 1.0, // Normal damage taken\n speedModifier: 0.95,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.VULNERABLE]: {\n capability: 0.7, // 70%\n accuracyModifier: 0.7, // -30% accuracy\n defenseModifier: 0.75,\n damageModifier: 0.75, // -25% damage\n damageTakenMultiplier: 1.5, // +50% damage taken\n speedModifier: 0.8,\n canBlock: true,\n canExecuteTechniques: true,\n },\n [CombatReadinessState.HELPLESS]: {\n capability: 0.0, // 0%\n accuracyModifier: 0.0, // Cannot attack\n defenseModifier: 0.0,\n damageModifier: 0.0, // Cannot attack\n damageTakenMultiplier: 2.0, // +100% damage taken (2x)\n speedModifier: 0.3,\n canBlock: false, // Cannot block\n canExecuteTechniques: false,\n },\n };\n\n /**\n * Determines the current combat readiness state based on player condition.\n * \n * Evaluates health, pain, consciousness, balance, and recent hits to determine\n * the most appropriate combat state. State transitions follow acceptance criteria:\n * - READY → SHAKEN: After taking 2-3 hits or significant vital point strike\n * - SHAKEN → VULNERABLE: After additional 2 hits or loss of 30% body part health\n * - VULNERABLE → HELPLESS: After head trauma, pain >80, or knock-down\n * - Recovery: HELPLESS → READY over 5 seconds if no additional hits\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp in milliseconds\n * @returns Current combat readiness state\n * \n * @example\n * ```typescript\n * const state = combatStateSystem.determineState(player, Date.now());\n * if (state === CombatReadinessState.HELPLESS) {\n * console.log(\"Player is near incapacitation!\");\n * }\n * ```\n * \n * @korean 상태결정\n */\n determineState(player: PlayerState, currentTime?: number): CombatReadinessState {\n const healthPercent = player.health / player.maxHealth;\n const pain = player.pain;\n const consciousness = player.consciousness;\n const balance = player.balance;\n \n // Count recent hits (within last 10 seconds)\n const recentHits = this.countRecentHits(player, currentTime, 10000);\n \n // Check for recovery from HELPLESS state\n // If player was helpless and recovery conditions are met, allow normal state determination\n // Recovery overrides low stats if enough time has passed without hits\n if (player.lastHelplessStateTime && currentTime) {\n const timeSinceHelpless = currentTime - player.lastHelplessStateTime;\n const noRecentHits = this.countRecentHits(player, currentTime, 5000) === 0;\n \n // Recovery: HELPLESS → normal state after 5 seconds if no additional hits\n if (timeSinceHelpless >= 5000 && noRecentHits) {\n // Player has recovered - skip HELPLESS check and determine state normally\n // This allows recovery even if stats are still low\n // Continue to normal state determination below\n } else if (timeSinceHelpless < 5000) {\n // Still in recovery period, check if should remain HELPLESS\n const stillCritical = healthPercent <= 0.3 || pain > 80 || consciousness <= 20 || balance <= 20;\n if (stillCritical) {\n return CombatReadinessState.HELPLESS;\n }\n }\n }\n\n // Check for HELPLESS state (worst condition) - only if not in recovery\n // Triggers: health <= 30%, pain > 80, consciousness <= 20, balance <= 20, or head trauma\n const hasHeadTrauma = player.bodyPartHealth \n ? (player.bodyPartHealth.head / (player.bodyPartMaxHealth?.head ?? 100)) < 0.5\n : false;\n \n // Only enter HELPLESS if not already recovering\n const isRecovering = player.lastHelplessStateTime && currentTime \n && (currentTime - player.lastHelplessStateTime) >= 5000\n && this.countRecentHits(player, currentTime, 5000) === 0;\n \n if (!isRecovering && (\n healthPercent <= 0.3 ||\n pain > 80 ||\n consciousness <= 20 ||\n balance <= 20 ||\n hasHeadTrauma\n )) {\n return CombatReadinessState.HELPLESS;\n }\n\n // Check for VULNERABLE state\n // Triggers: health <= 50%, pain > 60, consciousness <= 40, balance <= 40,\n // or 30% body part health loss\n const hasBodyPartDamage = this.checkBodyPartHealthLoss(player, 0.3);\n \n if (\n healthPercent <= 0.5 ||\n pain > 60 ||\n consciousness <= 40 ||\n balance <= 40 ||\n hasBodyPartDamage ||\n recentHits >= 4 // Additional 2 hits from SHAKEN (total 4-5 hits)\n ) {\n return CombatReadinessState.VULNERABLE;\n }\n\n // Check for SHAKEN state\n // Triggers: health <= 70%, pain > 30, consciousness <= 60, balance <= 60,\n // or 2-3 recent hits\n if (\n healthPercent <= 0.7 ||\n pain > 30 ||\n consciousness <= 60 ||\n balance <= 60 ||\n recentHits >= 2 // 2-3 hits triggers SHAKEN\n ) {\n return CombatReadinessState.SHAKEN;\n }\n\n // Default to READY state\n return CombatReadinessState.READY;\n }\n\n /**\n * Gets the capability modifiers for a specific combat state.\n * \n * Returns all modifiers that should be applied to player actions\n * based on their current combat readiness.\n * \n * @param state - Combat readiness state\n * @returns Capability modifiers for the state\n * \n * @example\n * ```typescript\n * const capability = combatStateSystem.getCapability(\n * CombatReadinessState.SHAKEN\n * );\n * \n * // Apply to damage calculation\n * const finalDamage = baseDamage * capability.accuracyModifier;\n * \n * // Check if can block\n * if (!capability.canBlock) {\n * console.log(\"Cannot block in this state!\");\n * }\n * ```\n * \n * @korean 능력조회\n */\n getCapability(state: CombatReadinessState): StateCapability {\n return this.stateCapabilities[state];\n }\n\n /**\n * Applies combat state modifiers to a player state.\n * \n * Creates a modified player state with capability reductions\n * based on current combat readiness.\n * \n * @param player - Current player state\n * @param state - Combat readiness state to apply\n * @returns Modified player state with applied modifiers\n * \n * @example\n * ```typescript\n * const state = combatStateSystem.determineState(player);\n * const modifiedPlayer = combatStateSystem.applyStateModifiers(\n * player,\n * state\n * );\n * ```\n * \n * @korean 상태적용\n */\n applyStateModifiers(\n player: PlayerState,\n state: CombatReadinessState\n ): PlayerState {\n const capability = this.getCapability(state);\n\n return {\n ...player,\n attackPower: Math.floor(player.attackPower * capability.damageModifier),\n defense: Math.floor(player.defense * capability.defenseModifier),\n speed: Math.floor(player.speed * capability.speedModifier),\n isBlocking: player.isBlocking && capability.canBlock,\n isStunned: player.isStunned || !capability.canExecuteTechniques,\n };\n }\n\n /**\n * Gets bilingual name for combat state.\n * \n * @param state - Combat readiness state\n * @returns Korean and English state names\n * \n * @korean 상태이름\n */\n getStateName(state: CombatReadinessState): { korean: string; english: string } {\n const names: Record<CombatReadinessState, { korean: string; english: string }> = {\n [CombatReadinessState.READY]: {\n korean: \"준비완료\",\n english: \"Ready\",\n },\n [CombatReadinessState.SHAKEN]: {\n korean: \"동요상태\",\n english: \"Shaken\",\n },\n [CombatReadinessState.VULNERABLE]: {\n korean: \"취약상태\",\n english: \"Vulnerable\",\n },\n [CombatReadinessState.HELPLESS]: {\n korean: \"무력상태\",\n english: \"Helpless\",\n },\n };\n\n return names[state];\n }\n\n /**\n * Gets emoji indicator for combat state.\n * \n * @param state - Combat readiness state\n * @returns Emoji representing the state\n * \n * @korean 상태아이콘\n */\n getStateEmoji(state: CombatReadinessState): string {\n const emojis: Record<CombatReadinessState, string> = {\n [CombatReadinessState.READY]: \"🟢\",\n [CombatReadinessState.SHAKEN]: \"🟡\",\n [CombatReadinessState.VULNERABLE]: \"🟠\",\n [CombatReadinessState.HELPLESS]: \"🔴\",\n };\n\n return emojis[state];\n }\n\n /**\n * Counts recent hits within a time window.\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp (milliseconds)\n * @param timeWindow - Time window to check in milliseconds\n * @returns Number of hits within the time window\n * \n * @private\n * @korean 최근타격횟수\n */\n private countRecentHits(\n player: PlayerState,\n currentTime: number | undefined,\n timeWindow: number\n ): number {\n if (!currentTime || !player.recentHitTimestamps) {\n return 0;\n }\n\n const cutoffTime = currentTime - timeWindow;\n return player.recentHitTimestamps.filter(\n (timestamp) => timestamp >= cutoffTime\n ).length;\n }\n\n /**\n * Checks if any body part has lost more than the specified percentage of health.\n * \n * @param player - Current player state\n * @param lossThreshold - Health loss threshold (0.0 to 1.0)\n * @returns True if any body part has lost more than the threshold\n * \n * @private\n * @korean 신체부위손상확인\n */\n private checkBodyPartHealthLoss(\n player: PlayerState,\n lossThreshold: number\n ): boolean {\n if (!player.bodyPartHealth || !player.bodyPartMaxHealth) {\n return false;\n }\n\n const bodyParts: Array<keyof typeof player.bodyPartHealth> = [\n \"head\",\n \"neck\",\n \"torsoUpper\",\n \"torsoLower\",\n \"armLeft\",\n \"armRight\",\n \"legLeft\",\n \"legRight\",\n ];\n\n for (const part of bodyParts) {\n const current = player.bodyPartHealth[part];\n const max = player.bodyPartMaxHealth[part];\n const healthPercent = current / max;\n const lossPercent = 1 - healthPercent;\n\n if (lossPercent >= lossThreshold) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Records a hit on the player and updates recent hit tracking.\n * \n * Should be called by combat system when player takes a hit.\n * Maintains a rolling window of the last 10 hit timestamps.\n * \n * @param player - Current player state\n * @param currentTime - Timestamp of the hit\n * @returns Updated player state with recorded hit\n * \n * @korean 타격기록\n */\n recordHit(player: PlayerState, currentTime: number): PlayerState {\n const recentHits = player.recentHitTimestamps ?? [];\n \n // Add new hit timestamp and keep only last 10\n const updatedHits = [...recentHits, currentTime].slice(-10);\n\n return {\n ...player,\n recentHitTimestamps: updatedHits,\n hitsTaken: player.hitsTaken + 1,\n };\n }\n\n /**\n * Updates player when entering HELPLESS state.\n * \n * Records the timestamp for recovery tracking.\n * \n * @param player - Current player state\n * @param currentTime - Timestamp when entering helpless state\n * @returns Updated player state\n * \n * @korean 무력상태기록\n */\n enterHelplessState(player: PlayerState, currentTime: number): PlayerState {\n return {\n ...player,\n lastHelplessStateTime: currentTime,\n };\n }\n\n /**\n * Checks if player can recover from HELPLESS state.\n * \n * Recovery occurs after 5 seconds with no additional hits.\n * \n * @param player - Current player state\n * @param currentTime - Current timestamp\n * @returns True if recovery is possible\n * \n * @korean 회복가능확인\n */\n canRecoverFromHelpless(player: PlayerState, currentTime: number): boolean {\n if (!player.lastHelplessStateTime) {\n return false;\n }\n\n const timeSinceHelpless = currentTime - player.lastHelplessStateTime;\n const noRecentHits = this.countRecentHits(player, currentTime, 5000) === 0;\n\n return timeSinceHelpless >= 5000 && noRecentHits;\n }\n}\n\nexport default CombatStateSystem;\n"],"mappings":"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"}
|
|
@@ -90,7 +90,6 @@ interface ConsciousnessEffects {
|
|
|
90
90
|
* const recovered = consciousnessSystem.applyRecovery(newPlayer, 1000);
|
|
91
91
|
* ```
|
|
92
92
|
*
|
|
93
|
-
* @public
|
|
94
93
|
* @korean 의식시스템
|
|
95
94
|
*/
|
|
96
95
|
export declare class ConsciousnessSystem {
|
|
@@ -143,7 +142,6 @@ export declare class ConsciousnessSystem {
|
|
|
143
142
|
* console.log(`Consciousness: ${newPlayer.consciousness}`);
|
|
144
143
|
* ```
|
|
145
144
|
*
|
|
146
|
-
* @public
|
|
147
145
|
* @korean 의식피해적용
|
|
148
146
|
*/
|
|
149
147
|
applyDamage(player: PlayerState, damage: number, category?: VitalPointCategory): PlayerState;
|
|
@@ -167,7 +165,6 @@ export declare class ConsciousnessSystem {
|
|
|
167
165
|
* player = system.applyRecovery(player, 16, player.lastActionTime);
|
|
168
166
|
* ```
|
|
169
167
|
*
|
|
170
|
-
* @public
|
|
171
168
|
* @korean 의식회복
|
|
172
169
|
*/
|
|
173
170
|
applyRecovery(player: PlayerState, deltaTime: number, lastHeadTraumaTime?: number): PlayerState;
|
|
@@ -192,7 +189,6 @@ export declare class ConsciousnessSystem {
|
|
|
192
189
|
* console.log(level2); // UNCONSCIOUS (below incapacitation threshold)
|
|
193
190
|
* ```
|
|
194
191
|
*
|
|
195
|
-
* @public
|
|
196
192
|
* @korean 의식수준확인
|
|
197
193
|
*/
|
|
198
194
|
getLevel(consciousness: number): ConsciousnessLevel;
|
|
@@ -202,7 +198,6 @@ export declare class ConsciousnessSystem {
|
|
|
202
198
|
* @param level - Consciousness level
|
|
203
199
|
* @returns Effects applied at that level
|
|
204
200
|
*
|
|
205
|
-
* @public
|
|
206
201
|
* @korean 의식효과
|
|
207
202
|
*/
|
|
208
203
|
getEffects(level: ConsciousnessLevel): ConsciousnessEffects;
|
|
@@ -214,7 +209,6 @@ export declare class ConsciousnessSystem {
|
|
|
214
209
|
* @param player - Current player state
|
|
215
210
|
* @returns Modified player state with consciousness effects
|
|
216
211
|
*
|
|
217
|
-
* @public
|
|
218
212
|
* @korean 의식효과적용
|
|
219
213
|
*/
|
|
220
214
|
applyEffects(player: PlayerState): PlayerState;
|
|
@@ -237,7 +231,6 @@ export declare class ConsciousnessSystem {
|
|
|
237
231
|
* }
|
|
238
232
|
* ```
|
|
239
233
|
*
|
|
240
|
-
* @public
|
|
241
234
|
* @korean 무력화한계확인
|
|
242
235
|
*/
|
|
243
236
|
isAtIncapacitationThreshold(player: PlayerState): boolean;
|
|
@@ -248,7 +241,6 @@ export declare class ConsciousnessSystem {
|
|
|
248
241
|
*
|
|
249
242
|
* @returns Helpless duration in milliseconds
|
|
250
243
|
*
|
|
251
|
-
* @public
|
|
252
244
|
* @korean 무력화지속시간
|
|
253
245
|
*/
|
|
254
246
|
getHelplessDuration(): number;
|
|
@@ -260,7 +252,6 @@ export declare class ConsciousnessSystem {
|
|
|
260
252
|
* @param lastHeadTraumaTime - Timestamp of last head trauma
|
|
261
253
|
* @returns True if recovery is allowed
|
|
262
254
|
*
|
|
263
|
-
* @public
|
|
264
255
|
* @korean 회복가능확인
|
|
265
256
|
*/
|
|
266
257
|
canRecover(lastHeadTraumaTime: number): boolean;
|
|
@@ -270,7 +261,6 @@ export declare class ConsciousnessSystem {
|
|
|
270
261
|
* @param player - Current player state
|
|
271
262
|
* @returns True if player is unconscious
|
|
272
263
|
*
|
|
273
|
-
* @public
|
|
274
264
|
* @korean 무의식확인
|
|
275
265
|
*/
|
|
276
266
|
isIncapacitated(player: PlayerState): boolean;
|
|
@@ -280,7 +270,6 @@ export declare class ConsciousnessSystem {
|
|
|
280
270
|
* @param level - Consciousness level
|
|
281
271
|
* @returns Korean and English level names
|
|
282
272
|
*
|
|
283
|
-
* @public
|
|
284
273
|
* @korean 의식이름
|
|
285
274
|
*/
|
|
286
275
|
getLevelName(level: ConsciousnessLevel): {
|
|
@@ -293,7 +282,6 @@ export declare class ConsciousnessSystem {
|
|
|
293
282
|
* @param level - Consciousness level
|
|
294
283
|
* @returns Bilingual description
|
|
295
284
|
*
|
|
296
|
-
* @public
|
|
297
285
|
* @korean 의식설명
|
|
298
286
|
*/
|
|
299
287
|
getLevelDescription(level: ConsciousnessLevel): {
|
|
@@ -306,7 +294,6 @@ export declare class ConsciousnessSystem {
|
|
|
306
294
|
* @param level - Consciousness level
|
|
307
295
|
* @returns Hex color code
|
|
308
296
|
*
|
|
309
|
-
* @public
|
|
310
297
|
* @korean 의식색상
|
|
311
298
|
*/
|
|
312
299
|
getLevelColor(level: ConsciousnessLevel): number;
|
|
@@ -334,7 +321,6 @@ export declare class ConsciousnessSystem {
|
|
|
334
321
|
* }
|
|
335
322
|
* ```
|
|
336
323
|
*
|
|
337
|
-
* @public
|
|
338
324
|
* @korean 의식상실낙법확인
|
|
339
325
|
*/
|
|
340
326
|
shouldTriggerFall(player: PlayerState): boolean;
|
|
@@ -368,7 +354,6 @@ export declare class ConsciousnessSystem {
|
|
|
368
354
|
* // Returns: Stance-based fall or 'backward' default
|
|
369
355
|
* ```
|
|
370
356
|
*
|
|
371
|
-
* @public
|
|
372
357
|
* @korean 의식상실낙법결정
|
|
373
358
|
*/
|
|
374
359
|
determineFallType(_player: PlayerState, lastImpactAngle?: number): FallType;
|
|
@@ -393,7 +378,6 @@ export declare class ConsciousnessSystem {
|
|
|
393
378
|
* // Returns: 'backward' (Mountain has defensive backward bias)
|
|
394
379
|
* ```
|
|
395
380
|
*
|
|
396
|
-
* @public
|
|
397
381
|
* @korean 자세의식상실낙법
|
|
398
382
|
*/
|
|
399
383
|
determineFallTypeFromStance(stance: TrigramStance): FallType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsciousnessSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/ConsciousnessSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;GAIG;AACH,oBAAY,kBAAkB;IAC5B,sCAAsC;IACtC,YAAY,iBAAiB;IAC7B,0CAA0C;IAC1C,WAAW,gBAAgB;IAC3B,gCAAgC;IAChC,OAAO,YAAY;IACnB,oCAAoC;IACpC,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,+BAA+B;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,uBAAuB;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sBAAsB;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED
|
|
1
|
+
{"version":3,"file":"ConsciousnessSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/ConsciousnessSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;GAIG;AACH,oBAAY,kBAAkB;IAC5B,sCAAsC;IACtC,YAAY,iBAAiB;IAC7B,0CAA0C;IAC1C,WAAW,gBAAgB;IAC3B,gCAAgC;IAChC,OAAO,YAAY;IACnB,oCAAoC;IACpC,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,+BAA+B;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,uBAAuB;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sBAAsB;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAoC3B;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAKlC;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAExC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAM;IAE9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAG/B;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,WAAW,CACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,WAAW;IAqBd;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CACX,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,WAAW;IAqCd;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,kBAAkB;IAOnD;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,oBAAoB;IAI3D;;;;;;;;;OASG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAkB9C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIzD;;;;;;;;OAQG;IACH,mBAAmB,IAAI,MAAM;IAO7B;;;;;;;;;OASG;IACH,UAAU,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO;IAK/C;;;;;;;OAOG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAM7C;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IA0B5E;;;;;;;OAOG;IACH,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG;QAC9C,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB;IA0BD;;;;;;;OAOG;IACH,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;IAWhD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ;IAmC3E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ;CAG7D;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -73,7 +73,6 @@ var ConsciousnessLevel = /* @__PURE__ */ function(ConsciousnessLevel) {
|
|
|
73
73
|
* const recovered = consciousnessSystem.applyRecovery(newPlayer, 1000);
|
|
74
74
|
* ```
|
|
75
75
|
*
|
|
76
|
-
* @public
|
|
77
76
|
* @korean 의식시스템
|
|
78
77
|
*/
|
|
79
78
|
var ConsciousnessSystem = class {
|
|
@@ -167,7 +166,6 @@ var ConsciousnessSystem = class {
|
|
|
167
166
|
* console.log(`Consciousness: ${newPlayer.consciousness}`);
|
|
168
167
|
* ```
|
|
169
168
|
*
|
|
170
|
-
* @public
|
|
171
169
|
* @korean 의식피해적용
|
|
172
170
|
*/
|
|
173
171
|
applyDamage(player, damage, category) {
|
|
@@ -198,7 +196,6 @@ var ConsciousnessSystem = class {
|
|
|
198
196
|
* player = system.applyRecovery(player, 16, player.lastActionTime);
|
|
199
197
|
* ```
|
|
200
198
|
*
|
|
201
|
-
* @public
|
|
202
199
|
* @korean 의식회복
|
|
203
200
|
*/
|
|
204
201
|
applyRecovery(player, deltaTime, lastHeadTraumaTime) {
|
|
@@ -237,7 +234,6 @@ var ConsciousnessSystem = class {
|
|
|
237
234
|
* console.log(level2); // UNCONSCIOUS (below incapacitation threshold)
|
|
238
235
|
* ```
|
|
239
236
|
*
|
|
240
|
-
* @public
|
|
241
237
|
* @korean 의식수준확인
|
|
242
238
|
*/
|
|
243
239
|
getLevel(consciousness) {
|
|
@@ -252,7 +248,6 @@ var ConsciousnessSystem = class {
|
|
|
252
248
|
* @param level - Consciousness level
|
|
253
249
|
* @returns Effects applied at that level
|
|
254
250
|
*
|
|
255
|
-
* @public
|
|
256
251
|
* @korean 의식효과
|
|
257
252
|
*/
|
|
258
253
|
getEffects(level) {
|
|
@@ -266,7 +261,6 @@ var ConsciousnessSystem = class {
|
|
|
266
261
|
* @param player - Current player state
|
|
267
262
|
* @returns Modified player state with consciousness effects
|
|
268
263
|
*
|
|
269
|
-
* @public
|
|
270
264
|
* @korean 의식효과적용
|
|
271
265
|
*/
|
|
272
266
|
applyEffects(player) {
|
|
@@ -299,7 +293,6 @@ var ConsciousnessSystem = class {
|
|
|
299
293
|
* }
|
|
300
294
|
* ```
|
|
301
295
|
*
|
|
302
|
-
* @public
|
|
303
296
|
* @korean 무력화한계확인
|
|
304
297
|
*/
|
|
305
298
|
isAtIncapacitationThreshold(player) {
|
|
@@ -312,7 +305,6 @@ var ConsciousnessSystem = class {
|
|
|
312
305
|
*
|
|
313
306
|
* @returns Helpless duration in milliseconds
|
|
314
307
|
*
|
|
315
|
-
* @public
|
|
316
308
|
* @korean 무력화지속시간
|
|
317
309
|
*/
|
|
318
310
|
getHelplessDuration() {
|
|
@@ -326,7 +318,6 @@ var ConsciousnessSystem = class {
|
|
|
326
318
|
* @param lastHeadTraumaTime - Timestamp of last head trauma
|
|
327
319
|
* @returns True if recovery is allowed
|
|
328
320
|
*
|
|
329
|
-
* @public
|
|
330
321
|
* @korean 회복가능확인
|
|
331
322
|
*/
|
|
332
323
|
canRecover(lastHeadTraumaTime) {
|
|
@@ -338,7 +329,6 @@ var ConsciousnessSystem = class {
|
|
|
338
329
|
* @param player - Current player state
|
|
339
330
|
* @returns True if player is unconscious
|
|
340
331
|
*
|
|
341
|
-
* @public
|
|
342
332
|
* @korean 무의식확인
|
|
343
333
|
*/
|
|
344
334
|
isIncapacitated(player) {
|
|
@@ -350,7 +340,6 @@ var ConsciousnessSystem = class {
|
|
|
350
340
|
* @param level - Consciousness level
|
|
351
341
|
* @returns Korean and English level names
|
|
352
342
|
*
|
|
353
|
-
* @public
|
|
354
343
|
* @korean 의식이름
|
|
355
344
|
*/
|
|
356
345
|
getLevelName(level) {
|
|
@@ -379,7 +368,6 @@ var ConsciousnessSystem = class {
|
|
|
379
368
|
* @param level - Consciousness level
|
|
380
369
|
* @returns Bilingual description
|
|
381
370
|
*
|
|
382
|
-
* @public
|
|
383
371
|
* @korean 의식설명
|
|
384
372
|
*/
|
|
385
373
|
getLevelDescription(level) {
|
|
@@ -408,7 +396,6 @@ var ConsciousnessSystem = class {
|
|
|
408
396
|
* @param level - Consciousness level
|
|
409
397
|
* @returns Hex color code
|
|
410
398
|
*
|
|
411
|
-
* @public
|
|
412
399
|
* @korean 의식색상
|
|
413
400
|
*/
|
|
414
401
|
getLevelColor(level) {
|
|
@@ -443,7 +430,6 @@ var ConsciousnessSystem = class {
|
|
|
443
430
|
* }
|
|
444
431
|
* ```
|
|
445
432
|
*
|
|
446
|
-
* @public
|
|
447
433
|
* @korean 의식상실낙법확인
|
|
448
434
|
*/
|
|
449
435
|
shouldTriggerFall(player) {
|
|
@@ -479,7 +465,6 @@ var ConsciousnessSystem = class {
|
|
|
479
465
|
* // Returns: Stance-based fall or 'backward' default
|
|
480
466
|
* ```
|
|
481
467
|
*
|
|
482
|
-
* @public
|
|
483
468
|
* @korean 의식상실낙법결정
|
|
484
469
|
*/
|
|
485
470
|
determineFallType(_player, lastImpactAngle) {
|
|
@@ -514,7 +499,6 @@ var ConsciousnessSystem = class {
|
|
|
514
499
|
* // Returns: 'backward' (Mountain has defensive backward bias)
|
|
515
500
|
* ```
|
|
516
501
|
*
|
|
517
|
-
* @public
|
|
518
502
|
* @korean 자세의식상실낙법
|
|
519
503
|
*/
|
|
520
504
|
determineFallTypeFromStance(stance) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsciousnessSystem.js","names":[],"sources":["../../../src/systems/combat/ConsciousnessSystem.ts"],"sourcesContent":["/**\n * Consciousness System for managing awareness and cognitive function levels.\n *\n * **Korean**: 의식 시스템 (Consciousness System)\n *\n * Implements consciousness levels based on head trauma, blood flow restriction,\n * and neural damage. Consciousness affects reaction time, targeting precision,\n * and overall combat effectiveness.\n *\n * ## Consciousness Levels\n *\n * - **전투각성 (Combat Alert)**: 100% - Full awareness, optimal combat ability\n * - **혼란상태 (Disoriented)**: 70% - Reduced reaction, vulnerability window\n * - **기절직전 (Stunned)**: 40% - Severe impairment, incapacitation opportunity\n * - **무의식 (Unconscious)**: 0% - Complete incapacitation\n *\n * ## Fall System Integration\n *\n * When consciousness drops below 10%, the system triggers fall animations (낙법).\n * The character loses the ability to stand and collapses to the ground.\n * Fall direction is based on last impact location.\n *\n * @module systems/combat/ConsciousnessSystem\n * @category Combat System\n * @korean 의식시스템\n */\n\nimport { VitalPointCategory } from \"@/types\";\nimport type { TrigramStance } from \"@/types/common\";\nimport { determineFallFromStance } from \"../animation\";\nimport type { FallType } from \"../animation/core/types\";\nimport { PlayerState } from \"../player\";\n\n/**\n * Consciousness levels representing cognitive function and awareness.\n *\n * **Korean**: 의식 수준\n */\nexport enum ConsciousnessLevel {\n /** Full combat awareness (90-100%) */\n COMBAT_ALERT = \"combat_alert\",\n /** Disoriented and vulnerable (50-89%) */\n DISORIENTED = \"disoriented\",\n /** Severely stunned (10-49%) */\n STUNNED = \"stunned\",\n /** Completely unconscious (0-9%) */\n UNCONSCIOUS = \"unconscious\",\n}\n\n/**\n * Effects of consciousness levels on combat performance.\n */\ninterface ConsciousnessEffects {\n /** Consciousness value range */\n readonly range: readonly [number, number];\n /** Reaction time multiplier */\n readonly reactionTimeMultiplier: number;\n /** Accuracy penalty */\n readonly accuracyPenalty: number;\n /** Defense penalty */\n readonly defensePenalty: number;\n /** Can perform actions */\n readonly canAct: boolean;\n /** Vision clarity multiplier */\n readonly visionClarity: number;\n}\n\n/**\n * Consciousness System managing awareness and cognitive function.\n *\n * Tracks consciousness damage from:\n * - Head trauma (strikes to head region)\n * - Neurological vital point hits\n * - Blood flow restriction (vascular hits)\n * - Respiratory disruption\n *\n * Consciousness naturally recovers over time when not taking damage.\n *\n * @example\n * ```typescript\n * const consciousnessSystem = new ConsciousnessSystem();\n *\n * // Apply damage from head strike\n * const newPlayer = consciousnessSystem.applyDamage(\n * player,\n * 15,\n * VitalPointCategory.NEUROLOGICAL\n * );\n *\n * // Check consciousness level\n * const level = consciousnessSystem.getLevel(newPlayer.consciousness);\n * console.log(`Consciousness: ${level}`);\n *\n * // Apply recovery over time\n * const recovered = consciousnessSystem.applyRecovery(newPlayer, 1000);\n * ```\n *\n * @public\n * @korean 의식시스템\n */\nexport class ConsciousnessSystem {\n /**\n * Consciousness level effects and thresholds.\n */\n private readonly levelEffects: Record<\n ConsciousnessLevel,\n ConsciousnessEffects\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n range: [90, 100],\n reactionTimeMultiplier: 1.0,\n accuracyPenalty: 0.0,\n defensePenalty: 0.0,\n canAct: true,\n visionClarity: 1.0,\n },\n [ConsciousnessLevel.DISORIENTED]: {\n range: [50, 89],\n reactionTimeMultiplier: 1.3, // 30% slower reactions\n accuracyPenalty: 0.2, // -20% accuracy\n defensePenalty: 0.15, // -15% defense\n canAct: true,\n visionClarity: 0.7,\n },\n [ConsciousnessLevel.STUNNED]: {\n range: [20, 49], // Updated: Changed from [10, 49] to [20, 49]\n reactionTimeMultiplier: 2.0, // 2x slower reactions\n accuracyPenalty: 0.5, // -50% accuracy\n defensePenalty: 0.4, // -40% defense\n canAct: true,\n visionClarity: 0.4,\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n range: [0, 19], // Updated: Changed from [0, 9] to [0, 19] - incapacitation threshold <20%\n reactionTimeMultiplier: Infinity,\n accuracyPenalty: 1.0, // Complete inability\n defensePenalty: 1.0, // No defense\n canAct: false,\n visionClarity: 0.0,\n },\n };\n\n /**\n * Damage multipliers by vital point category affecting consciousness.\n */\n private readonly categoryMultipliers: Record<string, number> = {\n [VitalPointCategory.NEUROLOGICAL]: 3.0, // Nerve strikes heavily affect consciousness\n [VitalPointCategory.VASCULAR]: 2.0, // Blood flow restriction\n [VitalPointCategory.RESPIRATORY]: 1.5, // Breathing difficulty\n default: 0.5, // Other damage has minor effect\n };\n\n /**\n * Base recovery rate per second.\n */\n private readonly baseRecoveryRate = 5.0; // 5 points per second\n\n /**\n * Incapacitation threshold - consciousness <20% renders player helpless.\n *\n * **Korean**: 무력화한계 (Incapacitation Threshold)\n */\n private readonly incapacitationThreshold = 20;\n\n /**\n * Duration of helplessness when consciousness drops below threshold (3-5 seconds).\n */\n private readonly helplessDuration = {\n min: 3000, // 3 seconds\n max: 5000, // 5 seconds\n };\n\n /**\n * Time without head trauma required for consciousness recovery (5 seconds).\n */\n private readonly noTraumaRecoveryTime = 5000; // 5 seconds\n\n /**\n * Applies consciousness damage from combat.\n *\n * Calculates consciousness reduction based on damage amount and\n * vital point category. Neurological and vascular damage have\n * the highest impact on consciousness.\n *\n * @param player - Current player state\n * @param damage - Base damage amount\n * @param category - Vital point category hit\n * @returns Updated player state with reduced consciousness\n *\n * @example\n * ```typescript\n * // Head strike causes significant consciousness damage\n * const newPlayer = system.applyDamage(\n * player,\n * 20,\n * VitalPointCategory.NEUROLOGICAL\n * );\n * console.log(`Consciousness: ${newPlayer.consciousness}`);\n * ```\n *\n * @public\n * @korean 의식피해적용\n */\n applyDamage(\n player: PlayerState,\n damage: number,\n category?: VitalPointCategory\n ): PlayerState {\n // Get multiplier based on category\n const multiplier = category\n ? this.categoryMultipliers[category] ?? this.categoryMultipliers.default\n : this.categoryMultipliers.default;\n\n // Calculate consciousness damage\n const consciousnessDamage = damage * multiplier;\n\n // Apply damage, clamped to 0-100 range\n const newConsciousness = Math.max(\n 0,\n Math.min(100, player.consciousness - consciousnessDamage)\n );\n\n return {\n ...player,\n consciousness: newConsciousness,\n };\n }\n\n /**\n * Applies consciousness recovery over time.\n *\n * Consciousness naturally recovers when not taking damage.\n * Recovery rate depends on current level - severely stunned\n * players recover more slowly.\n *\n * **Note**: Full recovery only occurs after 5 seconds without head trauma.\n *\n * @param player - Current player state\n * @param deltaTime - Time elapsed in milliseconds\n * @param lastHeadTraumaTime - Timestamp of last head trauma (optional)\n * @returns Updated player state with recovered consciousness\n *\n * @example\n * ```typescript\n * // In game loop (60fps, ~16ms per frame)\n * player = system.applyRecovery(player, 16, player.lastActionTime);\n * ```\n *\n * @public\n * @korean 의식회복\n */\n applyRecovery(\n player: PlayerState,\n deltaTime: number,\n lastHeadTraumaTime?: number\n ): PlayerState {\n // Already at full consciousness\n if (player.consciousness >= 100) {\n return player;\n }\n\n // Check if enough time has passed since last head trauma\n const timeSinceTrauma = lastHeadTraumaTime\n ? Date.now() - lastHeadTraumaTime\n : Infinity;\n\n // Don't recover if head trauma is recent (within 5 seconds)\n if (timeSinceTrauma < this.noTraumaRecoveryTime) {\n return player;\n }\n\n // Calculate recovery based on time\n const deltaSeconds = deltaTime / 1000;\n const level = this.getLevel(player.consciousness);\n\n // Recovery rate modifier based on level\n let recoveryModifier = 1.0;\n if (level === ConsciousnessLevel.STUNNED) {\n recoveryModifier = 0.5; // Slower recovery when stunned\n } else if (level === ConsciousnessLevel.UNCONSCIOUS) {\n recoveryModifier = 0.2; // Very slow recovery when unconscious\n }\n\n const recovery = this.baseRecoveryRate * deltaSeconds * recoveryModifier;\n const newConsciousness = Math.min(100, player.consciousness + recovery);\n\n return {\n ...player,\n consciousness: newConsciousness,\n };\n }\n\n /**\n * Determines consciousness level from consciousness value.\n *\n * Updated thresholds:\n * - 90-100: Combat Alert\n * - 50-89: Disoriented\n * - 20-49: Stunned\n * - 0-19: Unconscious (incapacitation threshold <20%)\n *\n * @param consciousness - Consciousness value (0-100)\n * @returns Current consciousness level\n *\n * @example\n * ```typescript\n * const level = system.getLevel(75);\n * console.log(level); // DISORIENTED\n *\n * const level2 = system.getLevel(15);\n * console.log(level2); // UNCONSCIOUS (below incapacitation threshold)\n * ```\n *\n * @public\n * @korean 의식수준확인\n */\n getLevel(consciousness: number): ConsciousnessLevel {\n if (consciousness >= 90) return ConsciousnessLevel.COMBAT_ALERT;\n if (consciousness >= 50) return ConsciousnessLevel.DISORIENTED;\n if (consciousness >= 20) return ConsciousnessLevel.STUNNED;\n return ConsciousnessLevel.UNCONSCIOUS;\n }\n\n /**\n * Gets effects for a specific consciousness level.\n *\n * @param level - Consciousness level\n * @returns Effects applied at that level\n *\n * @public\n * @korean 의식효과\n */\n getEffects(level: ConsciousnessLevel): ConsciousnessEffects {\n return this.levelEffects[level];\n }\n\n /**\n * Applies consciousness effects to player state.\n *\n * Modifies player stats based on current consciousness level.\n *\n * @param player - Current player state\n * @returns Modified player state with consciousness effects\n *\n * @public\n * @korean 의식효과적용\n */\n applyEffects(player: PlayerState): PlayerState {\n const level = this.getLevel(player.consciousness);\n const effects = this.getEffects(level);\n\n return {\n ...player,\n attackPower: Math.floor(\n player.attackPower * (1 - effects.accuracyPenalty)\n ),\n defense: Math.floor(player.defense * (1 - effects.defensePenalty)),\n technique: Math.floor(player.technique * (1 - effects.accuracyPenalty)),\n isStunned:\n player.isStunned ||\n level === ConsciousnessLevel.UNCONSCIOUS ||\n level === ConsciousnessLevel.STUNNED,\n };\n }\n\n /**\n * Checks if player is at incapacitation threshold.\n *\n * **Korean**: 무력화한계 (Incapacitation Threshold)\n *\n * When consciousness drops below 20%, player becomes helpless for 3-5 seconds.\n *\n * @param player - Current player state\n * @returns True if consciousness is below incapacitation threshold (<20%)\n *\n * @example\n * ```typescript\n * if (system.isAtIncapacitationThreshold(player)) {\n * // Player is helpless, trigger helpless state\n * const helplessDuration = system.getHelplessDuration();\n * console.log(`Player helpless for ${helplessDuration}ms`);\n * }\n * ```\n *\n * @public\n * @korean 무력화한계확인\n */\n isAtIncapacitationThreshold(player: PlayerState): boolean {\n return player.consciousness < this.incapacitationThreshold;\n }\n\n /**\n * Gets random helpless duration when consciousness drops below threshold.\n *\n * Returns a random duration between 3-5 seconds (3000-5000ms).\n *\n * @returns Helpless duration in milliseconds\n *\n * @public\n * @korean 무력화지속시간\n */\n getHelplessDuration(): number {\n return (\n this.helplessDuration.min +\n Math.random() * (this.helplessDuration.max - this.helplessDuration.min)\n );\n }\n\n /**\n * Checks if enough time has passed for consciousness recovery.\n *\n * Consciousness only recovers after 5 seconds without head trauma.\n *\n * @param lastHeadTraumaTime - Timestamp of last head trauma\n * @returns True if recovery is allowed\n *\n * @public\n * @korean 회복가능확인\n */\n canRecover(lastHeadTraumaTime: number): boolean {\n const timeSinceTrauma = Date.now() - lastHeadTraumaTime;\n return timeSinceTrauma >= this.noTraumaRecoveryTime;\n }\n\n /**\n * Checks if player is incapacitated due to consciousness.\n *\n * @param player - Current player state\n * @returns True if player is unconscious\n *\n * @public\n * @korean 무의식확인\n */\n isIncapacitated(player: PlayerState): boolean {\n return (\n this.getLevel(player.consciousness) === ConsciousnessLevel.UNCONSCIOUS\n );\n }\n\n /**\n * Gets bilingual name for consciousness level.\n *\n * @param level - Consciousness level\n * @returns Korean and English level names\n *\n * @public\n * @korean 의식이름\n */\n getLevelName(level: ConsciousnessLevel): { korean: string; english: string } {\n const names: Record<\n ConsciousnessLevel,\n { korean: string; english: string }\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n korean: \"전투각성\",\n english: \"Combat Alert\",\n },\n [ConsciousnessLevel.DISORIENTED]: {\n korean: \"혼란상태\",\n english: \"Disoriented\",\n },\n [ConsciousnessLevel.STUNNED]: {\n korean: \"기절직전\",\n english: \"Stunned\",\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n korean: \"무의식\",\n english: \"Unconscious\",\n },\n };\n\n return names[level];\n }\n\n /**\n * Gets description of consciousness level effects.\n *\n * @param level - Consciousness level\n * @returns Bilingual description\n *\n * @public\n * @korean 의식설명\n */\n getLevelDescription(level: ConsciousnessLevel): {\n korean: string;\n english: string;\n } {\n const descriptions: Record<\n ConsciousnessLevel,\n { korean: string; english: string }\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n korean: \"완전한 의식과 전투 능력\",\n english: \"Full awareness and combat ability\",\n },\n [ConsciousnessLevel.DISORIENTED]: {\n korean: \"반응 시간 저하 및 혼란\",\n english: \"Reduced reaction time and confusion\",\n },\n [ConsciousnessLevel.STUNNED]: {\n korean: \"심각한 손상, 무력화 위험\",\n english: \"Severe impairment, incapacitation risk\",\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n korean: \"완전한 무의식 상태\",\n english: \"Complete unconsciousness\",\n },\n };\n\n return descriptions[level];\n }\n\n /**\n * Gets color indicator for consciousness level (for UI).\n *\n * @param level - Consciousness level\n * @returns Hex color code\n *\n * @public\n * @korean 의식색상\n */\n getLevelColor(level: ConsciousnessLevel): number {\n const colors: Record<ConsciousnessLevel, number> = {\n [ConsciousnessLevel.COMBAT_ALERT]: 0x00ff00, // Green\n [ConsciousnessLevel.DISORIENTED]: 0xffaa00, // Orange\n [ConsciousnessLevel.STUNNED]: 0xff4400, // Red-orange\n [ConsciousnessLevel.UNCONSCIOUS]: 0xff0000, // Red\n };\n\n return colors[level];\n }\n\n /**\n * Checks if consciousness is low enough to trigger fall animation.\n *\n * Falls occur when consciousness drops below 10% (UNCONSCIOUS threshold).\n * This represents complete loss of ability to maintain standing position.\n *\n * Korean terminology:\n * - 의식상실낙법 (Uisik Sangsil Nakbeop): Consciousness loss fall\n * - 기절낙하 (Gijeol Nakha): Knockout collapse\n *\n * @param player - Current player state\n * @returns True if fall animation should trigger\n *\n * @example\n * ```typescript\n * if (consciousnessSystem.shouldTriggerFall(player)) {\n * const fallType = consciousnessSystem.determineFallType(\n * player,\n * lastImpactAngle\n * );\n * animationMachine.transitionTo(FALL_TYPE_TO_ANIMATION[fallType]);\n * }\n * ```\n *\n * @public\n * @korean 의식상실낙법확인\n */\n shouldTriggerFall(player: PlayerState): boolean {\n return player.consciousness < 10; // UNCONSCIOUS threshold\n }\n\n /**\n * Determines fall direction based on last impact and stance.\n *\n * When consciousness is lost, fall direction is determined by:\n * - Last attack angle (if available)\n * - Current stance bias (if no attack data)\n * - Default to backward fall (natural collapse)\n *\n * Korean falling from consciousness loss:\n * - 후방의식상실 (Hubang Uisik Sangsil): Backward consciousness loss fall\n * - 전방기절 (Jeonbang Gijeol): Forward knockout\n *\n * @param player - Current player state\n * @param lastImpactAngle - Angle of last hit (optional)\n * @returns Fall type to use for animation\n *\n * @example\n * ```typescript\n * // Player loses consciousness from frontal head strike\n * const fallType = consciousnessSystem.determineFallType(\n * player,\n * 0 // Front angle\n * );\n * // Returns: 'backward' (knocked back by frontal strike)\n *\n * // Player loses consciousness without specific impact\n * const fallType = consciousnessSystem.determineFallType(player);\n * // Returns: Stance-based fall or 'backward' default\n * ```\n *\n * @public\n * @korean 의식상실낙법결정\n */\n determineFallType(_player: PlayerState, lastImpactAngle?: number): FallType {\n // If we have impact angle, use simple direction logic\n if (lastImpactAngle !== undefined) {\n const normalizedAngle = Math.abs(lastImpactAngle);\n\n // Front impact (0° ±45°) causes backward fall\n if (normalizedAngle < Math.PI / 4) {\n return \"backward\";\n }\n\n // Rear impact (180° ±45°) causes forward fall\n // Since normalizedAngle is in [0, π], any angle > 3π/4 is a rear impact\n if (normalizedAngle > (3 * Math.PI) / 4) {\n return \"forward\";\n }\n\n // Side impacts: at this point normalizedAngle is in (π/4, 3π/4),\n // so lastImpactAngle cannot be 0 or ±π.\n if (lastImpactAngle < 0) {\n return \"side_left\";\n }\n if (lastImpactAngle > 0) {\n return \"side_right\";\n }\n\n // Fallback for exact 0 (or extremely small) angles in case future\n // changes alter the front/rear checks above. We treat this as a\n // natural backward collapse rather than a side fall.\n return \"backward\";\n }\n\n // Default to backward fall (natural collapse from consciousness loss)\n return \"backward\";\n }\n\n /**\n * Determines fall type based on stance when consciousness is lost.\n *\n * Uses stance bias to determine fall direction when consciousness\n * is lost without specific impact data.\n *\n * Korean terminology:\n * - 자세의식상실 (Jase Uisik Sangsil): Stance-based consciousness loss\n *\n * @param stance - Current trigram stance\n * @returns Fall type based on stance characteristics\n *\n * @example\n * ```typescript\n * // Player in Mountain stance (defensive back)\n * const fallType = consciousnessSystem.determineFallTypeFromStance(\n * TrigramStance.GAN\n * );\n * // Returns: 'backward' (Mountain has defensive backward bias)\n * ```\n *\n * @public\n * @korean 자세의식상실낙법\n */\n determineFallTypeFromStance(stance: TrigramStance): FallType {\n return determineFallFromStance(stance, \"backward\");\n }\n}\n\nexport default ConsciousnessSystem;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsciousnessSystem.js","names":[],"sources":["../../../src/systems/combat/ConsciousnessSystem.ts"],"sourcesContent":["/**\n * Consciousness System for managing awareness and cognitive function levels.\n *\n * **Korean**: 의식 시스템 (Consciousness System)\n *\n * Implements consciousness levels based on head trauma, blood flow restriction,\n * and neural damage. Consciousness affects reaction time, targeting precision,\n * and overall combat effectiveness.\n *\n * ## Consciousness Levels\n *\n * - **전투각성 (Combat Alert)**: 100% - Full awareness, optimal combat ability\n * - **혼란상태 (Disoriented)**: 70% - Reduced reaction, vulnerability window\n * - **기절직전 (Stunned)**: 40% - Severe impairment, incapacitation opportunity\n * - **무의식 (Unconscious)**: 0% - Complete incapacitation\n *\n * ## Fall System Integration\n *\n * When consciousness drops below 10%, the system triggers fall animations (낙법).\n * The character loses the ability to stand and collapses to the ground.\n * Fall direction is based on last impact location.\n *\n * @module systems/combat/ConsciousnessSystem\n * @category Combat System\n * @korean 의식시스템\n */\n\nimport { VitalPointCategory } from \"@/types\";\nimport type { TrigramStance } from \"@/types/common\";\nimport { determineFallFromStance } from \"../animation\";\nimport type { FallType } from \"../animation/core/types\";\nimport { PlayerState } from \"../player\";\n\n/**\n * Consciousness levels representing cognitive function and awareness.\n *\n * **Korean**: 의식 수준\n */\nexport enum ConsciousnessLevel {\n /** Full combat awareness (90-100%) */\n COMBAT_ALERT = \"combat_alert\",\n /** Disoriented and vulnerable (50-89%) */\n DISORIENTED = \"disoriented\",\n /** Severely stunned (10-49%) */\n STUNNED = \"stunned\",\n /** Completely unconscious (0-9%) */\n UNCONSCIOUS = \"unconscious\",\n}\n\n/**\n * Effects of consciousness levels on combat performance.\n */\ninterface ConsciousnessEffects {\n /** Consciousness value range */\n readonly range: readonly [number, number];\n /** Reaction time multiplier */\n readonly reactionTimeMultiplier: number;\n /** Accuracy penalty */\n readonly accuracyPenalty: number;\n /** Defense penalty */\n readonly defensePenalty: number;\n /** Can perform actions */\n readonly canAct: boolean;\n /** Vision clarity multiplier */\n readonly visionClarity: number;\n}\n\n/**\n * Consciousness System managing awareness and cognitive function.\n *\n * Tracks consciousness damage from:\n * - Head trauma (strikes to head region)\n * - Neurological vital point hits\n * - Blood flow restriction (vascular hits)\n * - Respiratory disruption\n *\n * Consciousness naturally recovers over time when not taking damage.\n *\n * @example\n * ```typescript\n * const consciousnessSystem = new ConsciousnessSystem();\n *\n * // Apply damage from head strike\n * const newPlayer = consciousnessSystem.applyDamage(\n * player,\n * 15,\n * VitalPointCategory.NEUROLOGICAL\n * );\n *\n * // Check consciousness level\n * const level = consciousnessSystem.getLevel(newPlayer.consciousness);\n * console.log(`Consciousness: ${level}`);\n *\n * // Apply recovery over time\n * const recovered = consciousnessSystem.applyRecovery(newPlayer, 1000);\n * ```\n *\n * @korean 의식시스템\n */\nexport class ConsciousnessSystem {\n /**\n * Consciousness level effects and thresholds.\n */\n private readonly levelEffects: Record<\n ConsciousnessLevel,\n ConsciousnessEffects\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n range: [90, 100],\n reactionTimeMultiplier: 1.0,\n accuracyPenalty: 0.0,\n defensePenalty: 0.0,\n canAct: true,\n visionClarity: 1.0,\n },\n [ConsciousnessLevel.DISORIENTED]: {\n range: [50, 89],\n reactionTimeMultiplier: 1.3, // 30% slower reactions\n accuracyPenalty: 0.2, // -20% accuracy\n defensePenalty: 0.15, // -15% defense\n canAct: true,\n visionClarity: 0.7,\n },\n [ConsciousnessLevel.STUNNED]: {\n range: [20, 49], // Updated: Changed from [10, 49] to [20, 49]\n reactionTimeMultiplier: 2.0, // 2x slower reactions\n accuracyPenalty: 0.5, // -50% accuracy\n defensePenalty: 0.4, // -40% defense\n canAct: true,\n visionClarity: 0.4,\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n range: [0, 19], // Updated: Changed from [0, 9] to [0, 19] - incapacitation threshold <20%\n reactionTimeMultiplier: Infinity,\n accuracyPenalty: 1.0, // Complete inability\n defensePenalty: 1.0, // No defense\n canAct: false,\n visionClarity: 0.0,\n },\n };\n\n /**\n * Damage multipliers by vital point category affecting consciousness.\n */\n private readonly categoryMultipliers: Record<string, number> = {\n [VitalPointCategory.NEUROLOGICAL]: 3.0, // Nerve strikes heavily affect consciousness\n [VitalPointCategory.VASCULAR]: 2.0, // Blood flow restriction\n [VitalPointCategory.RESPIRATORY]: 1.5, // Breathing difficulty\n default: 0.5, // Other damage has minor effect\n };\n\n /**\n * Base recovery rate per second.\n */\n private readonly baseRecoveryRate = 5.0; // 5 points per second\n\n /**\n * Incapacitation threshold - consciousness <20% renders player helpless.\n *\n * **Korean**: 무력화한계 (Incapacitation Threshold)\n */\n private readonly incapacitationThreshold = 20;\n\n /**\n * Duration of helplessness when consciousness drops below threshold (3-5 seconds).\n */\n private readonly helplessDuration = {\n min: 3000, // 3 seconds\n max: 5000, // 5 seconds\n };\n\n /**\n * Time without head trauma required for consciousness recovery (5 seconds).\n */\n private readonly noTraumaRecoveryTime = 5000; // 5 seconds\n\n /**\n * Applies consciousness damage from combat.\n *\n * Calculates consciousness reduction based on damage amount and\n * vital point category. Neurological and vascular damage have\n * the highest impact on consciousness.\n *\n * @param player - Current player state\n * @param damage - Base damage amount\n * @param category - Vital point category hit\n * @returns Updated player state with reduced consciousness\n *\n * @example\n * ```typescript\n * // Head strike causes significant consciousness damage\n * const newPlayer = system.applyDamage(\n * player,\n * 20,\n * VitalPointCategory.NEUROLOGICAL\n * );\n * console.log(`Consciousness: ${newPlayer.consciousness}`);\n * ```\n *\n * @korean 의식피해적용\n */\n applyDamage(\n player: PlayerState,\n damage: number,\n category?: VitalPointCategory\n ): PlayerState {\n // Get multiplier based on category\n const multiplier = category\n ? this.categoryMultipliers[category] ?? this.categoryMultipliers.default\n : this.categoryMultipliers.default;\n\n // Calculate consciousness damage\n const consciousnessDamage = damage * multiplier;\n\n // Apply damage, clamped to 0-100 range\n const newConsciousness = Math.max(\n 0,\n Math.min(100, player.consciousness - consciousnessDamage)\n );\n\n return {\n ...player,\n consciousness: newConsciousness,\n };\n }\n\n /**\n * Applies consciousness recovery over time.\n *\n * Consciousness naturally recovers when not taking damage.\n * Recovery rate depends on current level - severely stunned\n * players recover more slowly.\n *\n * **Note**: Full recovery only occurs after 5 seconds without head trauma.\n *\n * @param player - Current player state\n * @param deltaTime - Time elapsed in milliseconds\n * @param lastHeadTraumaTime - Timestamp of last head trauma (optional)\n * @returns Updated player state with recovered consciousness\n *\n * @example\n * ```typescript\n * // In game loop (60fps, ~16ms per frame)\n * player = system.applyRecovery(player, 16, player.lastActionTime);\n * ```\n *\n * @korean 의식회복\n */\n applyRecovery(\n player: PlayerState,\n deltaTime: number,\n lastHeadTraumaTime?: number\n ): PlayerState {\n // Already at full consciousness\n if (player.consciousness >= 100) {\n return player;\n }\n\n // Check if enough time has passed since last head trauma\n const timeSinceTrauma = lastHeadTraumaTime\n ? Date.now() - lastHeadTraumaTime\n : Infinity;\n\n // Don't recover if head trauma is recent (within 5 seconds)\n if (timeSinceTrauma < this.noTraumaRecoveryTime) {\n return player;\n }\n\n // Calculate recovery based on time\n const deltaSeconds = deltaTime / 1000;\n const level = this.getLevel(player.consciousness);\n\n // Recovery rate modifier based on level\n let recoveryModifier = 1.0;\n if (level === ConsciousnessLevel.STUNNED) {\n recoveryModifier = 0.5; // Slower recovery when stunned\n } else if (level === ConsciousnessLevel.UNCONSCIOUS) {\n recoveryModifier = 0.2; // Very slow recovery when unconscious\n }\n\n const recovery = this.baseRecoveryRate * deltaSeconds * recoveryModifier;\n const newConsciousness = Math.min(100, player.consciousness + recovery);\n\n return {\n ...player,\n consciousness: newConsciousness,\n };\n }\n\n /**\n * Determines consciousness level from consciousness value.\n *\n * Updated thresholds:\n * - 90-100: Combat Alert\n * - 50-89: Disoriented\n * - 20-49: Stunned\n * - 0-19: Unconscious (incapacitation threshold <20%)\n *\n * @param consciousness - Consciousness value (0-100)\n * @returns Current consciousness level\n *\n * @example\n * ```typescript\n * const level = system.getLevel(75);\n * console.log(level); // DISORIENTED\n *\n * const level2 = system.getLevel(15);\n * console.log(level2); // UNCONSCIOUS (below incapacitation threshold)\n * ```\n *\n * @korean 의식수준확인\n */\n getLevel(consciousness: number): ConsciousnessLevel {\n if (consciousness >= 90) return ConsciousnessLevel.COMBAT_ALERT;\n if (consciousness >= 50) return ConsciousnessLevel.DISORIENTED;\n if (consciousness >= 20) return ConsciousnessLevel.STUNNED;\n return ConsciousnessLevel.UNCONSCIOUS;\n }\n\n /**\n * Gets effects for a specific consciousness level.\n *\n * @param level - Consciousness level\n * @returns Effects applied at that level\n *\n * @korean 의식효과\n */\n getEffects(level: ConsciousnessLevel): ConsciousnessEffects {\n return this.levelEffects[level];\n }\n\n /**\n * Applies consciousness effects to player state.\n *\n * Modifies player stats based on current consciousness level.\n *\n * @param player - Current player state\n * @returns Modified player state with consciousness effects\n *\n * @korean 의식효과적용\n */\n applyEffects(player: PlayerState): PlayerState {\n const level = this.getLevel(player.consciousness);\n const effects = this.getEffects(level);\n\n return {\n ...player,\n attackPower: Math.floor(\n player.attackPower * (1 - effects.accuracyPenalty)\n ),\n defense: Math.floor(player.defense * (1 - effects.defensePenalty)),\n technique: Math.floor(player.technique * (1 - effects.accuracyPenalty)),\n isStunned:\n player.isStunned ||\n level === ConsciousnessLevel.UNCONSCIOUS ||\n level === ConsciousnessLevel.STUNNED,\n };\n }\n\n /**\n * Checks if player is at incapacitation threshold.\n *\n * **Korean**: 무력화한계 (Incapacitation Threshold)\n *\n * When consciousness drops below 20%, player becomes helpless for 3-5 seconds.\n *\n * @param player - Current player state\n * @returns True if consciousness is below incapacitation threshold (<20%)\n *\n * @example\n * ```typescript\n * if (system.isAtIncapacitationThreshold(player)) {\n * // Player is helpless, trigger helpless state\n * const helplessDuration = system.getHelplessDuration();\n * console.log(`Player helpless for ${helplessDuration}ms`);\n * }\n * ```\n *\n * @korean 무력화한계확인\n */\n isAtIncapacitationThreshold(player: PlayerState): boolean {\n return player.consciousness < this.incapacitationThreshold;\n }\n\n /**\n * Gets random helpless duration when consciousness drops below threshold.\n *\n * Returns a random duration between 3-5 seconds (3000-5000ms).\n *\n * @returns Helpless duration in milliseconds\n *\n * @korean 무력화지속시간\n */\n getHelplessDuration(): number {\n return (\n this.helplessDuration.min +\n Math.random() * (this.helplessDuration.max - this.helplessDuration.min)\n );\n }\n\n /**\n * Checks if enough time has passed for consciousness recovery.\n *\n * Consciousness only recovers after 5 seconds without head trauma.\n *\n * @param lastHeadTraumaTime - Timestamp of last head trauma\n * @returns True if recovery is allowed\n *\n * @korean 회복가능확인\n */\n canRecover(lastHeadTraumaTime: number): boolean {\n const timeSinceTrauma = Date.now() - lastHeadTraumaTime;\n return timeSinceTrauma >= this.noTraumaRecoveryTime;\n }\n\n /**\n * Checks if player is incapacitated due to consciousness.\n *\n * @param player - Current player state\n * @returns True if player is unconscious\n *\n * @korean 무의식확인\n */\n isIncapacitated(player: PlayerState): boolean {\n return (\n this.getLevel(player.consciousness) === ConsciousnessLevel.UNCONSCIOUS\n );\n }\n\n /**\n * Gets bilingual name for consciousness level.\n *\n * @param level - Consciousness level\n * @returns Korean and English level names\n *\n * @korean 의식이름\n */\n getLevelName(level: ConsciousnessLevel): { korean: string; english: string } {\n const names: Record<\n ConsciousnessLevel,\n { korean: string; english: string }\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n korean: \"전투각성\",\n english: \"Combat Alert\",\n },\n [ConsciousnessLevel.DISORIENTED]: {\n korean: \"혼란상태\",\n english: \"Disoriented\",\n },\n [ConsciousnessLevel.STUNNED]: {\n korean: \"기절직전\",\n english: \"Stunned\",\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n korean: \"무의식\",\n english: \"Unconscious\",\n },\n };\n\n return names[level];\n }\n\n /**\n * Gets description of consciousness level effects.\n *\n * @param level - Consciousness level\n * @returns Bilingual description\n *\n * @korean 의식설명\n */\n getLevelDescription(level: ConsciousnessLevel): {\n korean: string;\n english: string;\n } {\n const descriptions: Record<\n ConsciousnessLevel,\n { korean: string; english: string }\n > = {\n [ConsciousnessLevel.COMBAT_ALERT]: {\n korean: \"완전한 의식과 전투 능력\",\n english: \"Full awareness and combat ability\",\n },\n [ConsciousnessLevel.DISORIENTED]: {\n korean: \"반응 시간 저하 및 혼란\",\n english: \"Reduced reaction time and confusion\",\n },\n [ConsciousnessLevel.STUNNED]: {\n korean: \"심각한 손상, 무력화 위험\",\n english: \"Severe impairment, incapacitation risk\",\n },\n [ConsciousnessLevel.UNCONSCIOUS]: {\n korean: \"완전한 무의식 상태\",\n english: \"Complete unconsciousness\",\n },\n };\n\n return descriptions[level];\n }\n\n /**\n * Gets color indicator for consciousness level (for UI).\n *\n * @param level - Consciousness level\n * @returns Hex color code\n *\n * @korean 의식색상\n */\n getLevelColor(level: ConsciousnessLevel): number {\n const colors: Record<ConsciousnessLevel, number> = {\n [ConsciousnessLevel.COMBAT_ALERT]: 0x00ff00, // Green\n [ConsciousnessLevel.DISORIENTED]: 0xffaa00, // Orange\n [ConsciousnessLevel.STUNNED]: 0xff4400, // Red-orange\n [ConsciousnessLevel.UNCONSCIOUS]: 0xff0000, // Red\n };\n\n return colors[level];\n }\n\n /**\n * Checks if consciousness is low enough to trigger fall animation.\n *\n * Falls occur when consciousness drops below 10% (UNCONSCIOUS threshold).\n * This represents complete loss of ability to maintain standing position.\n *\n * Korean terminology:\n * - 의식상실낙법 (Uisik Sangsil Nakbeop): Consciousness loss fall\n * - 기절낙하 (Gijeol Nakha): Knockout collapse\n *\n * @param player - Current player state\n * @returns True if fall animation should trigger\n *\n * @example\n * ```typescript\n * if (consciousnessSystem.shouldTriggerFall(player)) {\n * const fallType = consciousnessSystem.determineFallType(\n * player,\n * lastImpactAngle\n * );\n * animationMachine.transitionTo(FALL_TYPE_TO_ANIMATION[fallType]);\n * }\n * ```\n *\n * @korean 의식상실낙법확인\n */\n shouldTriggerFall(player: PlayerState): boolean {\n return player.consciousness < 10; // UNCONSCIOUS threshold\n }\n\n /**\n * Determines fall direction based on last impact and stance.\n *\n * When consciousness is lost, fall direction is determined by:\n * - Last attack angle (if available)\n * - Current stance bias (if no attack data)\n * - Default to backward fall (natural collapse)\n *\n * Korean falling from consciousness loss:\n * - 후방의식상실 (Hubang Uisik Sangsil): Backward consciousness loss fall\n * - 전방기절 (Jeonbang Gijeol): Forward knockout\n *\n * @param player - Current player state\n * @param lastImpactAngle - Angle of last hit (optional)\n * @returns Fall type to use for animation\n *\n * @example\n * ```typescript\n * // Player loses consciousness from frontal head strike\n * const fallType = consciousnessSystem.determineFallType(\n * player,\n * 0 // Front angle\n * );\n * // Returns: 'backward' (knocked back by frontal strike)\n *\n * // Player loses consciousness without specific impact\n * const fallType = consciousnessSystem.determineFallType(player);\n * // Returns: Stance-based fall or 'backward' default\n * ```\n *\n * @korean 의식상실낙법결정\n */\n determineFallType(_player: PlayerState, lastImpactAngle?: number): FallType {\n // If we have impact angle, use simple direction logic\n if (lastImpactAngle !== undefined) {\n const normalizedAngle = Math.abs(lastImpactAngle);\n\n // Front impact (0° ±45°) causes backward fall\n if (normalizedAngle < Math.PI / 4) {\n return \"backward\";\n }\n\n // Rear impact (180° ±45°) causes forward fall\n // Since normalizedAngle is in [0, π], any angle > 3π/4 is a rear impact\n if (normalizedAngle > (3 * Math.PI) / 4) {\n return \"forward\";\n }\n\n // Side impacts: at this point normalizedAngle is in (π/4, 3π/4),\n // so lastImpactAngle cannot be 0 or ±π.\n if (lastImpactAngle < 0) {\n return \"side_left\";\n }\n if (lastImpactAngle > 0) {\n return \"side_right\";\n }\n\n // Fallback for exact 0 (or extremely small) angles in case future\n // changes alter the front/rear checks above. We treat this as a\n // natural backward collapse rather than a side fall.\n return \"backward\";\n }\n\n // Default to backward fall (natural collapse from consciousness loss)\n return \"backward\";\n }\n\n /**\n * Determines fall type based on stance when consciousness is lost.\n *\n * Uses stance bias to determine fall direction when consciousness\n * is lost without specific impact data.\n *\n * Korean terminology:\n * - 자세의식상실 (Jase Uisik Sangsil): Stance-based consciousness loss\n *\n * @param stance - Current trigram stance\n * @returns Fall type based on stance characteristics\n *\n * @example\n * ```typescript\n * // Player in Mountain stance (defensive back)\n * const fallType = consciousnessSystem.determineFallTypeFromStance(\n * TrigramStance.GAN\n * );\n * // Returns: 'backward' (Mountain has defensive backward bias)\n * ```\n *\n * @korean 자세의식상실낙법\n */\n determineFallTypeFromStance(stance: TrigramStance): FallType {\n return determineFallFromStance(stance, \"backward\");\n }\n}\n\nexport default ConsciousnessSystem;\n"],"mappings":"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"}
|
|
@@ -50,7 +50,6 @@ export interface FallCheckResult {
|
|
|
50
50
|
* }
|
|
51
51
|
* ```
|
|
52
52
|
*
|
|
53
|
-
* @public
|
|
54
53
|
* @korean 낙법확인
|
|
55
54
|
*/
|
|
56
55
|
export declare function checkForFall(player: PlayerState, combatSystem: CombatSystem, lastImpactAngle?: number, attackAngle?: number): FallCheckResult;
|
|
@@ -62,7 +61,6 @@ export declare function checkForFall(player: PlayerState, combatSystem: CombatSy
|
|
|
62
61
|
* @param animationState - Current animation state
|
|
63
62
|
* @returns True if player is falling or on ground
|
|
64
63
|
*
|
|
65
|
-
* @public
|
|
66
64
|
* @korean 낙법중확인
|
|
67
65
|
*/
|
|
68
66
|
export declare function isInFallOrGroundState(animationState: AnimationState): boolean;
|
|
@@ -72,7 +70,6 @@ export declare function isInFallOrGroundState(animationState: AnimationState): b
|
|
|
72
70
|
* @param fallType - Type of fall
|
|
73
71
|
* @returns Korean and English names
|
|
74
72
|
*
|
|
75
|
-
* @public
|
|
76
73
|
* @korean 낙법이름
|
|
77
74
|
*/
|
|
78
75
|
export declare function getFallTypeName(fallType: FallType): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FallIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/FallIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAMxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,sBAAsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC;CAC/C;AAED
|
|
1
|
+
{"version":3,"file":"FallIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/FallIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAMxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,sBAAsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAsCjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CASA"}
|
|
@@ -25,7 +25,6 @@ import { FALL_TYPE_TO_ANIMATION, isFallState, isGroundState } from "../animation
|
|
|
25
25
|
* }
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
|
-
* @public
|
|
29
28
|
* @korean 낙법확인
|
|
30
29
|
*/
|
|
31
30
|
function checkForFall(player, combatSystem, lastImpactAngle, attackAngle) {
|
|
@@ -59,7 +58,6 @@ function checkForFall(player, combatSystem, lastImpactAngle, attackAngle) {
|
|
|
59
58
|
* @param animationState - Current animation state
|
|
60
59
|
* @returns True if player is falling or on ground
|
|
61
60
|
*
|
|
62
|
-
* @public
|
|
63
61
|
* @korean 낙법중확인
|
|
64
62
|
*/
|
|
65
63
|
function isInFallOrGroundState(animationState) {
|
|
@@ -71,7 +69,6 @@ function isInFallOrGroundState(animationState) {
|
|
|
71
69
|
* @param fallType - Type of fall
|
|
72
70
|
* @returns Korean and English names
|
|
73
71
|
*
|
|
74
|
-
* @public
|
|
75
72
|
* @korean 낙법이름
|
|
76
73
|
*/
|
|
77
74
|
function getFallTypeName(fallType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FallIntegration.js","names":[],"sources":["../../../src/systems/combat/FallIntegration.ts"],"sourcesContent":["/**\n * Fall Integration Utilities\n *\n * Helper functions to check for fall conditions and determine fall animations\n * based on balance and consciousness systems.\n *\n * @module systems/combat/FallIntegration\n * @category Combat System\n * @korean 낙법통합\n */\n\nimport type { AnimationState, FallType } from \"../animation/core/types\";\nimport {\n FALL_TYPE_TO_ANIMATION,\n isFallState,\n isGroundState,\n} from \"../animation/core/types\";\nimport type { CombatSystem } from \"../CombatSystem\";\nimport type { PlayerState } from \"../player\";\n\n/**\n * Result of fall check with animation state\n * @korean 낙법확인결과\n */\nexport interface FallCheckResult {\n /** Whether a fall should be triggered */\n readonly shouldFall: boolean;\n /** Fall type if falling */\n readonly fallType?: FallType;\n /** Animation state to transition to */\n readonly animationState?: AnimationState;\n /** Reason for fall */\n readonly reason?: \"balance\" | \"consciousness\";\n}\n\n/**\n * Checks if player should fall and determines fall animation.\n *\n * Integrates BalanceSystem and ConsciousnessSystem to check fall conditions.\n * Returns animation state to transition to if fall is triggered.\n *\n * Korean terminology:\n * - 균형상실 (Gyunhyeong Sangsil): Balance loss\n * - 의식상실 (Uisik Sangsil): Consciousness loss\n *\n * @param player - Player state to check\n * @param combatSystem - Combat system with balance and consciousness systems\n * @param lastImpactAngle - Optional angle of last impact (for consciousness falls)\n * @param attackAngle - Optional angle of current attack (for balance falls)\n * @returns Fall check result with animation state\n *\n * @example\n * ```typescript\n * const fallCheck = checkForFall(player, combatSystem, undefined, attackAngle);\n * if (fallCheck.shouldFall && fallCheck.animationState) {\n * animationMachine.transitionTo(fallCheck.animationState);\n * console.log(`Player falling: ${fallCheck.reason}`);\n * }\n * ```\n *\n * @
|
|
1
|
+
{"version":3,"file":"FallIntegration.js","names":[],"sources":["../../../src/systems/combat/FallIntegration.ts"],"sourcesContent":["/**\n * Fall Integration Utilities\n *\n * Helper functions to check for fall conditions and determine fall animations\n * based on balance and consciousness systems.\n *\n * @module systems/combat/FallIntegration\n * @category Combat System\n * @korean 낙법통합\n */\n\nimport type { AnimationState, FallType } from \"../animation/core/types\";\nimport {\n FALL_TYPE_TO_ANIMATION,\n isFallState,\n isGroundState,\n} from \"../animation/core/types\";\nimport type { CombatSystem } from \"../CombatSystem\";\nimport type { PlayerState } from \"../player\";\n\n/**\n * Result of fall check with animation state\n * @korean 낙법확인결과\n */\nexport interface FallCheckResult {\n /** Whether a fall should be triggered */\n readonly shouldFall: boolean;\n /** Fall type if falling */\n readonly fallType?: FallType;\n /** Animation state to transition to */\n readonly animationState?: AnimationState;\n /** Reason for fall */\n readonly reason?: \"balance\" | \"consciousness\";\n}\n\n/**\n * Checks if player should fall and determines fall animation.\n *\n * Integrates BalanceSystem and ConsciousnessSystem to check fall conditions.\n * Returns animation state to transition to if fall is triggered.\n *\n * Korean terminology:\n * - 균형상실 (Gyunhyeong Sangsil): Balance loss\n * - 의식상실 (Uisik Sangsil): Consciousness loss\n *\n * @param player - Player state to check\n * @param combatSystem - Combat system with balance and consciousness systems\n * @param lastImpactAngle - Optional angle of last impact (for consciousness falls)\n * @param attackAngle - Optional angle of current attack (for balance falls)\n * @returns Fall check result with animation state\n *\n * @example\n * ```typescript\n * const fallCheck = checkForFall(player, combatSystem, undefined, attackAngle);\n * if (fallCheck.shouldFall && fallCheck.animationState) {\n * animationMachine.transitionTo(fallCheck.animationState);\n * console.log(`Player falling: ${fallCheck.reason}`);\n * }\n * ```\n *\n * @korean 낙법확인\n */\nexport function checkForFall(\n player: PlayerState,\n combatSystem: CombatSystem,\n lastImpactAngle?: number,\n attackAngle?: number\n): FallCheckResult {\n const balanceSystem = combatSystem.getBalanceSystem();\n const consciousnessSystem = combatSystem.getConsciousnessSystem();\n\n // Check consciousness first (higher priority - complete loss of control)\n if (consciousnessSystem.shouldTriggerFall(player)) {\n const fallType = consciousnessSystem.determineFallType(\n player,\n lastImpactAngle\n );\n return {\n shouldFall: true,\n fallType,\n animationState: FALL_TYPE_TO_ANIMATION[fallType],\n reason: \"consciousness\",\n };\n }\n\n // Check balance (lower priority - still some control)\n if (balanceSystem.shouldTriggerFall(player)) {\n // Use attack angle if available, otherwise use stance-based fall\n const fallType =\n attackAngle !== undefined\n ? balanceSystem.determineFallType(player, attackAngle, \"mid\")\n : balanceSystem.determineFallTypeFromStance(player.currentStance);\n\n return {\n shouldFall: true,\n fallType,\n animationState: FALL_TYPE_TO_ANIMATION[fallType],\n reason: \"balance\",\n };\n }\n\n // No fall condition met\n return {\n shouldFall: false,\n };\n}\n\n/**\n * Checks if player is currently in a fall or ground animation state.\n *\n * Used to prevent other actions during falls and ground states.\n *\n * @param animationState - Current animation state\n * @returns True if player is falling or on ground\n *\n * @korean 낙법중확인\n */\nexport function isInFallOrGroundState(animationState: AnimationState): boolean {\n return isFallState(animationState) || isGroundState(animationState);\n}\n\n/**\n * Gets Korean description for fall type.\n *\n * @param fallType - Type of fall\n * @returns Korean and English names\n *\n * @korean 낙법이름\n */\nexport function getFallTypeName(fallType: FallType): {\n korean: string;\n english: string;\n} {\n const names: Record<FallType, { korean: string; english: string }> = {\n forward: { korean: \"전방낙법\", english: \"Forward Fall\" },\n backward: { korean: \"후방낙법\", english: \"Backward Fall\" },\n side_left: { korean: \"좌측낙법\", english: \"Left Side Fall\" },\n side_right: { korean: \"우측낙법\", english: \"Right Side Fall\" },\n };\n\n return names[fallType];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,aACd,QACA,cACA,iBACA,aACiB;CACjB,MAAM,gBAAgB,aAAa,kBAAkB;CACrD,MAAM,sBAAsB,aAAa,wBAAwB;CAGjE,IAAI,oBAAoB,kBAAkB,OAAO,EAAE;EACjD,MAAM,WAAW,oBAAoB,kBACnC,QACA,gBACD;EACD,OAAO;GACL,YAAY;GACZ;GACA,gBAAgB,uBAAuB;GACvC,QAAQ;GACT;;CAIH,IAAI,cAAc,kBAAkB,OAAO,EAAE;EAE3C,MAAM,WACJ,gBAAgB,KAAA,IACZ,cAAc,kBAAkB,QAAQ,aAAa,MAAM,GAC3D,cAAc,4BAA4B,OAAO,cAAc;EAErE,OAAO;GACL,YAAY;GACZ;GACA,gBAAgB,uBAAuB;GACvC,QAAQ;GACT;;CAIH,OAAO,EACL,YAAY,OACb;;;;;;;;;;;;AAaH,SAAgB,sBAAsB,gBAAyC;CAC7E,OAAO,YAAY,eAAe,IAAI,cAAc,eAAe;;;;;;;;;;AAWrE,SAAgB,gBAAgB,UAG9B;CAQA,OAAO;EANL,SAAS;GAAE,QAAQ;GAAQ,SAAS;GAAgB;EACpD,UAAU;GAAE,QAAQ;GAAQ,SAAS;GAAiB;EACtD,WAAW;GAAE,QAAQ;GAAQ,SAAS;GAAkB;EACxD,YAAY;GAAE,QAAQ;GAAQ,SAAS;GAAmB;EAGrD,CAAM"}
|
|
@@ -214,7 +214,6 @@ export declare class GrappleSystem {
|
|
|
214
214
|
* // Result: 1800ms (uses technique metadata)
|
|
215
215
|
* ```
|
|
216
216
|
*
|
|
217
|
-
* @public
|
|
218
217
|
* @korean 기술별제어시간조회
|
|
219
218
|
*/
|
|
220
219
|
getTechniqueControlDuration(technique: KoreanTechnique, defaultDuration?: number): number;
|
|
@@ -249,7 +248,6 @@ export declare class GrappleSystem {
|
|
|
249
248
|
* // advantage.duration = 1800ms (from technique metadata)
|
|
250
249
|
* ```
|
|
251
250
|
*
|
|
252
|
-
* @public
|
|
253
251
|
* @korean 던지기후우세적용
|
|
254
252
|
*/
|
|
255
253
|
applyPostThrowAdvantage(technique: KoreanTechnique, attackerId: string, defenderId: string, currentTime: number): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrappleSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/GrappleSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,cAAc,EAEd,aAAa,EAEd,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,gDAAgD;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,kCAAkC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,wCAAwC;IACxC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,qCAAqC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IAI/C;;;;;;;;;;OAUG;IACH,cAAc,CACZ,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,oBAAoB;IA6EvB;;;;;;;;;;;OAWG;IACH,aAAa,CACX,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,IAAI;IA0CxB;;;;;;;;;OASG;IACH,aAAa,CACX,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,WAAW,GAClB,mBAAmB;IAwDtB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IA0CrC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAsC7B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;;;;;;OAQG;IACH,oBAAoB,CAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,WAAW,GACtB,OAAO;IA0BV;;;;;;;;OAQG;IACH,wBAAwB,CACtB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,WAAW,GACtB,OAAO;IAqBV
|
|
1
|
+
{"version":3,"file":"GrappleSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/GrappleSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -333,7 +333,6 @@ var GrappleSystem = class {
|
|
|
333
333
|
* // Result: 1800ms (uses technique metadata)
|
|
334
334
|
* ```
|
|
335
335
|
*
|
|
336
|
-
* @public
|
|
337
336
|
* @korean 기술별제어시간조회
|
|
338
337
|
*/
|
|
339
338
|
getTechniqueControlDuration(technique, defaultDuration = 1e3) {
|
|
@@ -372,7 +371,6 @@ var GrappleSystem = class {
|
|
|
372
371
|
* // advantage.duration = 1800ms (from technique metadata)
|
|
373
372
|
* ```
|
|
374
373
|
*
|
|
375
|
-
* @public
|
|
376
374
|
* @korean 던지기후우세적용
|
|
377
375
|
*/
|
|
378
376
|
applyPostThrowAdvantage(technique, attackerId, defenderId, currentTime) {
|