blacktrigram 0.7.44 → 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/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/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 +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PainResponseSystem.js","names":[],"sources":["../../../src/systems/combat/PainResponseSystem.ts"],"sourcesContent":["/**\n * Pain Response System for managing cumulative pain effects in combat.\n * \n * **Korean**: 고통 반응 시스템 (Pain Response System)\n * \n * Implements realistic pain accumulation that progressively reduces combat\n * effectiveness. Unlike health, pain represents the body's protective response\n * to damage, reducing capabilities before critical injury occurs.\n * \n * ## Pain Mechanics\n * \n * - **충격통 (Shock Pain)**: Instant reaction affecting all abilities (10-30% reduction for 2-3 seconds)\n * - **누적외상 (Cumulative Trauma)**: Progressive damage impairment\n * - **통증과부하 (Pain Overload)**: Complete incapacitation from overwhelming pain (>80 pain)\n * - **무력화한계 (Incapacitation Threshold)**: Point of complete combat inability\n * \n * ## Pain Levels\n * \n * - **0-20**: Minimal pain - no significant effects\n * - **20-40**: Moderate pain - slight performance reduction (-10%)\n * - **40-60**: Significant pain - noticeable impairment (-20%)\n * - **60-80**: Severe pain - major limitations (-35%)\n * - **80-100**: Pain overload - chance of stun/unconsciousness, extreme impairment (-50%)\n * \n * @module systems/combat/PainResponseSystem\n * @category Combat System\n * @korean 고통반응시스템\n */\n\nimport { PlayerState } from \"../player\";\nimport { VitalPointSeverity, VitalPointCategory } from \"@/types\";\n\n/**\n * Pain level categories for status indication.\n */\nexport enum PainLevel {\n /** Minimal pain (0-20) - no significant effects */\n MINIMAL = \"minimal\",\n /** Moderate pain (20-40) - slight performance reduction (-10%) */\n MODERATE = \"moderate\",\n /** Significant pain (40-60) - noticeable impairment (-20%) */\n SIGNIFICANT = \"significant\",\n /** Severe pain (60-80) - major limitations (-35%) */\n SEVERE = \"severe\",\n /** Pain overload (80-100) - chance of stun/unconsciousness, extreme impairment (-50%) */\n OVERLOAD = \"overload\",\n}\n\n/**\n * Shock pain effect from sudden trauma.\n * \n * **Korean**: 충격통 효과 (Shock Pain Effect)\n * \n * Represents instant reaction to damage affecting all abilities for 2-3 seconds.\n */\nexport interface ShockPainEffect {\n /** Intensity of shock pain (0.1-0.3 for 10-30% reduction) */\n readonly intensity: number;\n /** Duration remaining in milliseconds (2000-3000ms) */\n readonly duration: number;\n /** Timestamp when shock pain was applied */\n readonly startTime: number;\n /** Damage value that caused the shock */\n readonly causedByDamage: number;\n}\n\n/**\n * Effects of pain on combat performance.\n */\ninterface PainEffects {\n /** Pain value range */\n readonly range: readonly [number, number];\n /** Overall performance penalty multiplier */\n readonly performancePenalty: number;\n /** Accuracy reduction */\n readonly accuracyReduction: number;\n /** Damage output reduction */\n readonly damageReduction: number;\n /** Movement speed reduction */\n readonly speedReduction: number;\n /** Chance of involuntary stun (0-1) */\n readonly stunChance: number;\n}\n\n/**\n * Pain Response System managing cumulative pain effects.\n * \n * Pain accumulates from all damage sources and reduces combat effectiveness\n * progressively. High pain can incapacitate even if health remains adequate.\n * Pain dissipates slowly over time.\n * \n * @example\n * ```typescript\n * const painSystem = new PainResponseSystem();\n * \n * // Apply pain from damage\n * const newPlayer = painSystem.applyPain(player, 15, VitalPointSeverity.MAJOR);\n * \n * // Check pain level\n * const level = painSystem.getPainLevel(newPlayer.pain);\n * \n * // Apply dissipation over time\n * const recovered = painSystem.applyDissipation(newPlayer, 1000);\n * ```\n * \n * @public\n * @korean 고통반응시스템\n */\nexport class PainResponseSystem {\n /**\n * Pain level effects and thresholds matching requirements.\n */\n private readonly painEffects: Record<PainLevel, PainEffects> = {\n [PainLevel.MINIMAL]: {\n range: [0, 20],\n performancePenalty: 0.0,\n accuracyReduction: 0.0,\n damageReduction: 0.0,\n speedReduction: 0.0,\n stunChance: 0.0,\n },\n [PainLevel.MODERATE]: {\n range: [20, 40],\n performancePenalty: 0.1, // -10% overall\n accuracyReduction: 0.1,\n damageReduction: 0.1,\n speedReduction: 0.05,\n stunChance: 0.0,\n },\n [PainLevel.SIGNIFICANT]: {\n range: [40, 60],\n performancePenalty: 0.2, // -20% overall\n accuracyReduction: 0.2,\n damageReduction: 0.2,\n speedReduction: 0.15,\n stunChance: 0.05, // 5% chance\n },\n [PainLevel.SEVERE]: {\n range: [60, 80],\n performancePenalty: 0.35, // -35% overall\n accuracyReduction: 0.35,\n damageReduction: 0.35,\n speedReduction: 0.25,\n stunChance: 0.15, // 15% chance\n },\n [PainLevel.OVERLOAD]: {\n range: [80, 100],\n performancePenalty: 0.5, // -50% overall\n accuracyReduction: 0.5,\n damageReduction: 0.5,\n speedReduction: 0.4,\n stunChance: 0.3, // 30% chance per hit at pain >80\n },\n };\n\n /**\n * Pain multipliers by vital point severity.\n */\n private readonly severityMultipliers: Record<VitalPointSeverity, number> = {\n [VitalPointSeverity.MINOR]: 0.5,\n [VitalPointSeverity.MODERATE]: 1.0,\n [VitalPointSeverity.MAJOR]: 1.5,\n [VitalPointSeverity.CRITICAL]: 2.0,\n [VitalPointSeverity.LETHAL]: 3.0,\n };\n\n /**\n * Pain multipliers by vital point category.\n */\n private readonly categoryMultipliers: Record<string, number> = {\n [VitalPointCategory.NEUROLOGICAL]: 2.5, // Nerve strikes cause intense pain\n [VitalPointCategory.VASCULAR]: 1.5, // Blood flow restriction\n [VitalPointCategory.RESPIRATORY]: 2.0, // Breathing difficulty causes panic\n [VitalPointCategory.SKELETAL]: 1.8, // Bone/structural damage\n [VitalPointCategory.MUSCULAR]: 1.4, // Muscle trauma\n [VitalPointCategory.ORGAN]: 2.2, // Internal organ trauma\n [VitalPointCategory.JOINT]: 1.9, // Joint damage\n [VitalPointCategory.CIRCULATORY]: 1.6, // Circulatory disruption\n default: 1.0, // Standard damage\n };\n\n /**\n * Base pain dissipation rate per second (requirement: -5 pain/second).\n */\n private readonly BASE_DISSIPATION_RATE = 5.0; // -5 pain per second\n\n /**\n * Shock pain duration range in milliseconds (requirement: 2-3 seconds).\n */\n private readonly SHOCK_PAIN_DURATION = {\n min: 2000, // 2 seconds\n max: 3000, // 3 seconds\n };\n\n /**\n * Minimum damage to trigger shock pain.\n */\n private readonly SHOCK_PAIN_THRESHOLD = 10;\n\n /**\n * Pain overload threshold for stun chance (requirement: >80).\n */\n private readonly PAIN_OVERLOAD_THRESHOLD = 80;\n\n /**\n * Shock pain intensity constants.\n */\n private readonly MAX_SHOCK_INTENSITY = 0.3; // 30% max reduction\n private readonly MIN_SHOCK_INTENSITY = 0.1; // 10% min reduction\n private readonly DAMAGE_SCALE_FACTOR = 100; // for normalizing damage to 0-1 range\n private readonly INTENSITY_RANGE = 0.2; // 20% variable range\n\n /**\n * Pain to damage ratio for cumulative trauma calculation.\n */\n private readonly PAIN_TO_DAMAGE_RATIO = 0.5;\n\n /**\n * Applies pain from combat damage with shock pain effects.\n * \n * Calculates pain increase based on damage amount, vital point severity,\n * and vital point category. Also determines if shock pain effect should be triggered.\n * \n * **Shock Pain**: Instant 10-30% reduction for 2-3 seconds on significant hits (>=10 damage)\n * **Cumulative Trauma**: Progressive pain accumulation that reduces performance\n * **Pain Overload**: At >80 pain, chance of stun/unconsciousness\n * \n * @param player - Current player state\n * @param damage - Base damage amount\n * @param severity - Optional vital point severity\n * @param category - Optional vital point category for more accurate pain calculation\n * @returns Updated player state with increased pain and optional shock effect\n * \n * @example\n * ```typescript\n * // Normal hit\n * const result = system.applyPain(player, 10);\n * \n * // Vital point neurological hit with shock pain\n * const result = system.applyPain(\n * player, \n * 20, \n * VitalPointSeverity.MAJOR,\n * VitalPointCategory.NEUROLOGICAL\n * );\n * if (result.shockEffect) {\n * console.log(`Shock pain active for ${result.shockEffect.duration}ms`);\n * }\n * ```\n * \n * @public\n * @korean 고통적용\n */\n applyPain(\n player: PlayerState,\n damage: number,\n severity?: VitalPointSeverity,\n category?: VitalPointCategory\n ): { player: PlayerState; shockEffect?: ShockPainEffect } {\n // Get multipliers based on severity and category\n const severityMultiplier = severity\n ? this.severityMultipliers[severity]\n : 1.0;\n \n const categoryMultiplier = category\n ? this.categoryMultipliers[category] ?? this.categoryMultipliers.default\n : this.categoryMultipliers.default;\n\n // Calculate pain increase (cumulative trauma)\n const painIncrease = damage * severityMultiplier * categoryMultiplier * this.PAIN_TO_DAMAGE_RATIO;\n\n // Apply pain, clamped to 0-100\n const newPain = Math.max(0, Math.min(100, player.pain + painIncrease));\n\n let shockEffect: ShockPainEffect | undefined;\n\n // Trigger shock pain for significant hits (>=10 damage)\n if (damage >= this.SHOCK_PAIN_THRESHOLD) {\n // Calculate shock intensity: 10-30% reduction based on damage\n const shockIntensity = Math.min(\n this.MAX_SHOCK_INTENSITY,\n this.MIN_SHOCK_INTENSITY + (damage / this.DAMAGE_SCALE_FACTOR) * this.INTENSITY_RANGE\n );\n \n // Random duration between 2-3 seconds\n const shockDuration =\n this.SHOCK_PAIN_DURATION.min +\n Math.random() *\n (this.SHOCK_PAIN_DURATION.max - this.SHOCK_PAIN_DURATION.min);\n\n shockEffect = {\n intensity: shockIntensity,\n duration: shockDuration,\n startTime: Date.now(),\n causedByDamage: damage,\n };\n }\n\n const updatedPlayer: PlayerState = {\n ...player,\n pain: newPain,\n };\n\n return { player: updatedPlayer, shockEffect };\n }\n\n /**\n * Applies pain dissipation over time (requirement: -5 pain/second).\n * \n * Pain naturally dissipates when not taking damage at a constant rate\n * of -5 pain per second.\n * \n * @param player - Current player state\n * @param deltaTime - Time elapsed in milliseconds\n * @returns Updated player state with reduced pain\n * \n * @example\n * ```typescript\n * // In game loop (~60fps, 16ms per frame)\n * player = system.applyDissipation(player, 16);\n * ```\n * \n * @public\n * @korean 고통감소\n */\n applyDissipation(player: PlayerState, deltaTime: number): PlayerState {\n // Already at zero pain\n if (player.pain <= 0) {\n return player;\n }\n\n const deltaSeconds = deltaTime / 1000;\n \n // Constant dissipation rate of -5 pain/second\n const dissipation = this.BASE_DISSIPATION_RATE * deltaSeconds;\n const newPain = Math.max(0, player.pain - dissipation);\n\n return {\n ...player,\n pain: newPain,\n };\n }\n\n /**\n * Determines pain level from pain value.\n * \n * @param pain - Pain value (0-100)\n * @returns Current pain level\n * \n * @public\n * @korean 고통수준확인\n */\n getPainLevel(pain: number): PainLevel {\n if (pain >= 80) return PainLevel.OVERLOAD;\n if (pain >= 60) return PainLevel.SEVERE;\n if (pain >= 40) return PainLevel.SIGNIFICANT;\n if (pain >= 20) return PainLevel.MODERATE;\n return PainLevel.MINIMAL;\n }\n\n /**\n * Gets effects for a specific pain level.\n * \n * @param level - Pain level\n * @returns Effects applied at that level\n * \n * @public\n * @korean 고통효과\n */\n getEffects(level: PainLevel): PainEffects {\n return this.painEffects[level];\n }\n\n /**\n * Applies pain effects to player state, including shock pain.\n * \n * Modifies player stats based on current pain level. When shock pain\n * is active, additional penalties are applied temporarily.\n * \n * @param player - Current player state\n * @param shockEffect - Optional active shock pain effect\n * @returns Modified player state with pain effects\n * \n * @public\n * @korean 고통효과적용\n */\n applyEffects(\n player: PlayerState,\n shockEffect?: ShockPainEffect\n ): PlayerState {\n const level = this.getPainLevel(player.pain);\n const effects = this.getEffects(level);\n\n // Calculate total penalties (base pain + shock pain if active)\n let totalAccuracyPenalty = effects.accuracyReduction;\n let totalDamagePenalty = effects.damageReduction;\n\n // Apply shock pain if still active\n if (shockEffect) {\n const elapsed = Date.now() - shockEffect.startTime;\n if (elapsed < shockEffect.duration) {\n // Add shock pain intensity to penalties\n totalAccuracyPenalty = Math.min(\n 1.0,\n totalAccuracyPenalty + shockEffect.intensity\n );\n totalDamagePenalty = Math.min(\n 1.0,\n totalDamagePenalty + shockEffect.intensity\n );\n }\n }\n\n return {\n ...player,\n attackPower: Math.floor(\n player.attackPower * (1 - totalDamagePenalty)\n ),\n defense: Math.floor(\n player.defense * (1 - effects.performancePenalty)\n ),\n speed: Math.floor(\n player.speed * (1 - effects.speedReduction)\n ),\n technique: Math.floor(\n player.technique * (1 - totalAccuracyPenalty)\n ),\n };\n }\n\n /**\n * Checks if pain overload should trigger stun.\n * \n * At pain >80, there's a chance per hit to trigger stun based on pain level.\n * Pain Overload level has 30% chance to trigger stun.\n * \n * @param player - Current player state\n * @returns True if player should be stunned from pain\n * \n * @public\n * @korean 고통기절확인\n */\n shouldTriggerStun(player: PlayerState): boolean {\n if (player.pain < this.PAIN_OVERLOAD_THRESHOLD) {\n return false;\n }\n\n const level = this.getPainLevel(player.pain);\n const effects = this.getEffects(level);\n\n // Roll for stun chance\n return Math.random() < effects.stunChance;\n }\n\n /**\n * Checks if player is in pain overload state (>80 pain).\n * \n * @param player - Current player state\n * @returns True if pain is above overload threshold\n * \n * @public\n * @korean 고통과부하확인\n */\n isInPainOverload(player: PlayerState): boolean {\n return player.pain >= this.PAIN_OVERLOAD_THRESHOLD;\n }\n\n /**\n * Checks if player is incapacitated by pain.\n * \n * @param player - Current player state\n * @returns True if pain is at overload level\n * \n * @public\n * @korean 고통무력화확인\n */\n isIncapacitated(player: PlayerState): boolean {\n return this.getPainLevel(player.pain) === PainLevel.OVERLOAD;\n }\n\n /**\n * Gets bilingual name for pain level.\n * \n * @param level - Pain level\n * @returns Korean and English level names\n * \n * @public\n * @korean 고통이름\n */\n getLevelName(level: PainLevel): { korean: string; english: string } {\n const names: Record<PainLevel, { korean: string; english: string }> = {\n [PainLevel.MINIMAL]: {\n korean: \"최소\",\n english: \"Minimal\",\n },\n [PainLevel.MODERATE]: {\n korean: \"보통\",\n english: \"Moderate\",\n },\n [PainLevel.SIGNIFICANT]: {\n korean: \"상당\",\n english: \"Significant\",\n },\n [PainLevel.SEVERE]: {\n korean: \"심각\",\n english: \"Severe\",\n },\n [PainLevel.OVERLOAD]: {\n korean: \"과부하\",\n english: \"Overload\",\n },\n };\n\n return names[level];\n }\n\n /**\n * Gets description of pain level effects.\n * \n * @param level - Pain level\n * @returns Bilingual description\n * \n * @public\n * @korean 고통설명\n */\n getLevelDescription(level: PainLevel): {\n korean: string;\n english: string;\n } {\n const descriptions: Record<\n PainLevel,\n { korean: string; english: string }\n > = {\n [PainLevel.MINIMAL]: {\n korean: \"최소한의 고통, 전투 능력에 영향 없음\",\n english: \"Minimal pain, no significant effects on combat\",\n },\n [PainLevel.MODERATE]: {\n korean: \"보통 고통, 약간의 능력 저하 (-10%)\",\n english: \"Moderate pain, slight performance reduction (-10%)\",\n },\n [PainLevel.SIGNIFICANT]: {\n korean: \"상당한 고통, 명확한 손상 (-20%)\",\n english: \"Significant pain, noticeable impairment (-20%)\",\n },\n [PainLevel.SEVERE]: {\n korean: \"심각한 고통, 주요 제한 (-35%)\",\n english: \"Severe pain, major limitations (-35%)\",\n },\n [PainLevel.OVERLOAD]: {\n korean: \"고통 과부하, 기절 위험 (-50%, 30% 기절 확률)\",\n english: \"Pain overload, stun risk (-50%, 30% stun chance)\",\n },\n };\n\n return descriptions[level];\n }\n}\n\nexport default PainResponseSystem;\n"],"mappings":";;;;;AAmCA,IAAY,YAAL,yBAAA,WAAA;;CAEL,UAAA,aAAU;;CAEV,UAAA,cAAW;;CAEX,UAAA,iBAAc;;CAEd,UAAA,YAAS;;CAET,UAAA,cAAW;;KACZ;;;;;;;;;;;;;;;;;;;;;;;;;AA8DD,IAAa,qBAAb,MAAgC;;;;CAI9B,cAA+D;GAC5D,UAAU,UAAU;GACnB,OAAO,CAAC,GAAG,GAAG;GACd,oBAAoB;GACpB,mBAAmB;GACnB,iBAAiB;GACjB,gBAAgB;GAChB,YAAY;GACb;GACA,UAAU,WAAW;GACpB,OAAO,CAAC,IAAI,GAAG;GACf,oBAAoB;GACpB,mBAAmB;GACnB,iBAAiB;GACjB,gBAAgB;GAChB,YAAY;GACb;GACA,UAAU,cAAc;GACvB,OAAO,CAAC,IAAI,GAAG;GACf,oBAAoB;GACpB,mBAAmB;GACnB,iBAAiB;GACjB,gBAAgB;GAChB,YAAY;GACb;GACA,UAAU,SAAS;GAClB,OAAO,CAAC,IAAI,GAAG;GACf,oBAAoB;GACpB,mBAAmB;GACnB,iBAAiB;GACjB,gBAAgB;GAChB,YAAY;GACb;GACA,UAAU,WAAW;GACpB,OAAO,CAAC,IAAI,IAAI;GAChB,oBAAoB;GACpB,mBAAmB;GACnB,iBAAiB;GACjB,gBAAgB;GAChB,YAAY;GACb;EACF;;;;CAKD,sBAA2E;GACxE,mBAAmB,QAAQ;GAC3B,mBAAmB,WAAW;GAC9B,mBAAmB,QAAQ;GAC3B,mBAAmB,WAAW;GAC9B,mBAAmB,SAAS;EAC9B;;;;CAKD,sBAA+D;GAC5D,mBAAmB,eAAe;GAClC,mBAAmB,WAAW;GAC9B,mBAAmB,cAAc;GACjC,mBAAmB,WAAW;GAC9B,mBAAmB,WAAW;GAC9B,mBAAmB,QAAQ;GAC3B,mBAAmB,QAAQ;GAC3B,mBAAmB,cAAc;EAClC,SAAS;EACV;;;;CAKD,wBAAyC;;;;CAKzC,sBAAuC;EACrC,KAAK;EACL,KAAK;EACN;;;;CAKD,uBAAwC;;;;CAKxC,0BAA2C;;;;CAK3C,sBAAuC;CACvC,sBAAuC;CACvC,sBAAuC;CACvC,kBAAmC;;;;CAKnC,uBAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCxC,UACE,QACA,QACA,UACA,UACwD;EAExD,MAAM,qBAAqB,WACvB,KAAK,oBAAoB,YACzB;EAEJ,MAAM,qBAAqB,WACvB,KAAK,oBAAoB,aAAa,KAAK,oBAAoB,UAC/D,KAAK,oBAAoB;EAG7B,MAAM,eAAe,SAAS,qBAAqB,qBAAqB,KAAK;EAG7E,MAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,OAAO,aAAa,CAAC;EAEtE,IAAI;EAGJ,IAAI,UAAU,KAAK,sBAajB,cAAc;GACZ,WAZqB,KAAK,IAC1B,KAAK,qBACL,KAAK,sBAAuB,SAAS,KAAK,sBAAuB,KAAK,gBAU3D;GACX,UANA,KAAK,oBAAoB,MACzB,KAAK,QAAQ,IACV,KAAK,oBAAoB,MAAM,KAAK,oBAAoB;GAK3D,WAAW,KAAK,KAAK;GACrB,gBAAgB;GACjB;EAQH,OAAO;GAAE,QAAQ;IAJf,GAAG;IACH,MAAM;IAGS;GAAe;GAAa;;;;;;;;;;;;;;;;;;;;;CAsB/C,iBAAiB,QAAqB,WAAgC;EAEpE,IAAI,OAAO,QAAQ,GACjB,OAAO;EAGT,MAAM,eAAe,YAAY;EAGjC,MAAM,cAAc,KAAK,wBAAwB;EACjD,MAAM,UAAU,KAAK,IAAI,GAAG,OAAO,OAAO,YAAY;EAEtD,OAAO;GACL,GAAG;GACH,MAAM;GACP;;;;;;;;;;;CAYH,aAAa,MAAyB;EACpC,IAAI,QAAQ,IAAI,OAAO,UAAU;EACjC,IAAI,QAAQ,IAAI,OAAO,UAAU;EACjC,IAAI,QAAQ,IAAI,OAAO,UAAU;EACjC,IAAI,QAAQ,IAAI,OAAO,UAAU;EACjC,OAAO,UAAU;;;;;;;;;;;CAYnB,WAAW,OAA+B;EACxC,OAAO,KAAK,YAAY;;;;;;;;;;;;;;;CAgB1B,aACE,QACA,aACa;EACb,MAAM,QAAQ,KAAK,aAAa,OAAO,KAAK;EAC5C,MAAM,UAAU,KAAK,WAAW,MAAM;EAGtC,IAAI,uBAAuB,QAAQ;EACnC,IAAI,qBAAqB,QAAQ;EAGjC,IAAI;OACc,KAAK,KAAK,GAAG,YAAY,YAC3B,YAAY,UAAU;IAElC,uBAAuB,KAAK,IAC1B,GACA,uBAAuB,YAAY,UACpC;IACD,qBAAqB,KAAK,IACxB,GACA,qBAAqB,YAAY,UAClC;;;EAIL,OAAO;GACL,GAAG;GACH,aAAa,KAAK,MAChB,OAAO,eAAe,IAAI,oBAC3B;GACD,SAAS,KAAK,MACZ,OAAO,WAAW,IAAI,QAAQ,oBAC/B;GACD,OAAO,KAAK,MACV,OAAO,SAAS,IAAI,QAAQ,gBAC7B;GACD,WAAW,KAAK,MACd,OAAO,aAAa,IAAI,sBACzB;GACF;;;;;;;;;;;;;;CAeH,kBAAkB,QAA8B;EAC9C,IAAI,OAAO,OAAO,KAAK,yBACrB,OAAO;EAGT,MAAM,QAAQ,KAAK,aAAa,OAAO,KAAK;EAC5C,MAAM,UAAU,KAAK,WAAW,MAAM;EAGtC,OAAO,KAAK,QAAQ,GAAG,QAAQ;;;;;;;;;;;CAYjC,iBAAiB,QAA8B;EAC7C,OAAO,OAAO,QAAQ,KAAK;;;;;;;;;;;CAY7B,gBAAgB,QAA8B;EAC5C,OAAO,KAAK,aAAa,OAAO,KAAK,KAAK,UAAU;;;;;;;;;;;CAYtD,aAAa,OAAuD;EAwBlE,OAAO;IAtBJ,UAAU,UAAU;IACnB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,WAAW;IACpB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,cAAc;IACvB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,SAAS;IAClB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,WAAW;IACpB,QAAQ;IACR,SAAS;IACV;GAGI,CAAM;;;;;;;;;;;CAYf,oBAAoB,OAGlB;EA2BA,OAAO;IAtBJ,UAAU,UAAU;IACnB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,WAAW;IACpB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,cAAc;IACvB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,SAAS;IAClB,QAAQ;IACR,SAAS;IACV;IACA,UAAU,WAAW;IACpB,QAAQ;IACR,SAAS;IACV;GAGI,CAAa"}
|
|
1
|
+
{"version":3,"file":"PainResponseSystem.js","names":[],"sources":["../../../src/systems/combat/PainResponseSystem.ts"],"sourcesContent":["/**\n * Pain Response System for managing cumulative pain effects in combat.\n * \n * **Korean**: 고통 반응 시스템 (Pain Response System)\n * \n * Implements realistic pain accumulation that progressively reduces combat\n * effectiveness. Unlike health, pain represents the body's protective response\n * to damage, reducing capabilities before critical injury occurs.\n * \n * ## Pain Mechanics\n * \n * - **충격통 (Shock Pain)**: Instant reaction affecting all abilities (10-30% reduction for 2-3 seconds)\n * - **누적외상 (Cumulative Trauma)**: Progressive damage impairment\n * - **통증과부하 (Pain Overload)**: Complete incapacitation from overwhelming pain (>80 pain)\n * - **무력화한계 (Incapacitation Threshold)**: Point of complete combat inability\n * \n * ## Pain Levels\n * \n * - **0-20**: Minimal pain - no significant effects\n * - **20-40**: Moderate pain - slight performance reduction (-10%)\n * - **40-60**: Significant pain - noticeable impairment (-20%)\n * - **60-80**: Severe pain - major limitations (-35%)\n * - **80-100**: Pain overload - chance of stun/unconsciousness, extreme impairment (-50%)\n * \n * @module systems/combat/PainResponseSystem\n * @category Combat System\n * @korean 고통반응시스템\n */\n\nimport { PlayerState } from \"../player\";\nimport { VitalPointSeverity, VitalPointCategory } from \"@/types\";\n\n/**\n * Pain level categories for status indication.\n */\nexport enum PainLevel {\n /** Minimal pain (0-20) - no significant effects */\n MINIMAL = \"minimal\",\n /** Moderate pain (20-40) - slight performance reduction (-10%) */\n MODERATE = \"moderate\",\n /** Significant pain (40-60) - noticeable impairment (-20%) */\n SIGNIFICANT = \"significant\",\n /** Severe pain (60-80) - major limitations (-35%) */\n SEVERE = \"severe\",\n /** Pain overload (80-100) - chance of stun/unconsciousness, extreme impairment (-50%) */\n OVERLOAD = \"overload\",\n}\n\n/**\n * Shock pain effect from sudden trauma.\n * \n * **Korean**: 충격통 효과 (Shock Pain Effect)\n * \n * Represents instant reaction to damage affecting all abilities for 2-3 seconds.\n */\nexport interface ShockPainEffect {\n /** Intensity of shock pain (0.1-0.3 for 10-30% reduction) */\n readonly intensity: number;\n /** Duration remaining in milliseconds (2000-3000ms) */\n readonly duration: number;\n /** Timestamp when shock pain was applied */\n readonly startTime: number;\n /** Damage value that caused the shock */\n readonly causedByDamage: number;\n}\n\n/**\n * Effects of pain on combat performance.\n */\ninterface PainEffects {\n /** Pain value range */\n readonly range: readonly [number, number];\n /** Overall performance penalty multiplier */\n readonly performancePenalty: number;\n /** Accuracy reduction */\n readonly accuracyReduction: number;\n /** Damage output reduction */\n readonly damageReduction: number;\n /** Movement speed reduction */\n readonly speedReduction: number;\n /** Chance of involuntary stun (0-1) */\n readonly stunChance: number;\n}\n\n/**\n * Pain Response System managing cumulative pain effects.\n * \n * Pain accumulates from all damage sources and reduces combat effectiveness\n * progressively. High pain can incapacitate even if health remains adequate.\n * Pain dissipates slowly over time.\n * \n * @example\n * ```typescript\n * const painSystem = new PainResponseSystem();\n * \n * // Apply pain from damage\n * const newPlayer = painSystem.applyPain(player, 15, VitalPointSeverity.MAJOR);\n * \n * // Check pain level\n * const level = painSystem.getPainLevel(newPlayer.pain);\n * \n * // Apply dissipation over time\n * const recovered = painSystem.applyDissipation(newPlayer, 1000);\n * ```\n * \n * @korean 고통반응시스템\n */\nexport class PainResponseSystem {\n /**\n * Pain level effects and thresholds matching requirements.\n */\n private readonly painEffects: Record<PainLevel, PainEffects> = {\n [PainLevel.MINIMAL]: {\n range: [0, 20],\n performancePenalty: 0.0,\n accuracyReduction: 0.0,\n damageReduction: 0.0,\n speedReduction: 0.0,\n stunChance: 0.0,\n },\n [PainLevel.MODERATE]: {\n range: [20, 40],\n performancePenalty: 0.1, // -10% overall\n accuracyReduction: 0.1,\n damageReduction: 0.1,\n speedReduction: 0.05,\n stunChance: 0.0,\n },\n [PainLevel.SIGNIFICANT]: {\n range: [40, 60],\n performancePenalty: 0.2, // -20% overall\n accuracyReduction: 0.2,\n damageReduction: 0.2,\n speedReduction: 0.15,\n stunChance: 0.05, // 5% chance\n },\n [PainLevel.SEVERE]: {\n range: [60, 80],\n performancePenalty: 0.35, // -35% overall\n accuracyReduction: 0.35,\n damageReduction: 0.35,\n speedReduction: 0.25,\n stunChance: 0.15, // 15% chance\n },\n [PainLevel.OVERLOAD]: {\n range: [80, 100],\n performancePenalty: 0.5, // -50% overall\n accuracyReduction: 0.5,\n damageReduction: 0.5,\n speedReduction: 0.4,\n stunChance: 0.3, // 30% chance per hit at pain >80\n },\n };\n\n /**\n * Pain multipliers by vital point severity.\n */\n private readonly severityMultipliers: Record<VitalPointSeverity, number> = {\n [VitalPointSeverity.MINOR]: 0.5,\n [VitalPointSeverity.MODERATE]: 1.0,\n [VitalPointSeverity.MAJOR]: 1.5,\n [VitalPointSeverity.CRITICAL]: 2.0,\n [VitalPointSeverity.LETHAL]: 3.0,\n };\n\n /**\n * Pain multipliers by vital point category.\n */\n private readonly categoryMultipliers: Record<string, number> = {\n [VitalPointCategory.NEUROLOGICAL]: 2.5, // Nerve strikes cause intense pain\n [VitalPointCategory.VASCULAR]: 1.5, // Blood flow restriction\n [VitalPointCategory.RESPIRATORY]: 2.0, // Breathing difficulty causes panic\n [VitalPointCategory.SKELETAL]: 1.8, // Bone/structural damage\n [VitalPointCategory.MUSCULAR]: 1.4, // Muscle trauma\n [VitalPointCategory.ORGAN]: 2.2, // Internal organ trauma\n [VitalPointCategory.JOINT]: 1.9, // Joint damage\n [VitalPointCategory.CIRCULATORY]: 1.6, // Circulatory disruption\n default: 1.0, // Standard damage\n };\n\n /**\n * Base pain dissipation rate per second (requirement: -5 pain/second).\n */\n private readonly BASE_DISSIPATION_RATE = 5.0; // -5 pain per second\n\n /**\n * Shock pain duration range in milliseconds (requirement: 2-3 seconds).\n */\n private readonly SHOCK_PAIN_DURATION = {\n min: 2000, // 2 seconds\n max: 3000, // 3 seconds\n };\n\n /**\n * Minimum damage to trigger shock pain.\n */\n private readonly SHOCK_PAIN_THRESHOLD = 10;\n\n /**\n * Pain overload threshold for stun chance (requirement: >80).\n */\n private readonly PAIN_OVERLOAD_THRESHOLD = 80;\n\n /**\n * Shock pain intensity constants.\n */\n private readonly MAX_SHOCK_INTENSITY = 0.3; // 30% max reduction\n private readonly MIN_SHOCK_INTENSITY = 0.1; // 10% min reduction\n private readonly DAMAGE_SCALE_FACTOR = 100; // for normalizing damage to 0-1 range\n private readonly INTENSITY_RANGE = 0.2; // 20% variable range\n\n /**\n * Pain to damage ratio for cumulative trauma calculation.\n */\n private readonly PAIN_TO_DAMAGE_RATIO = 0.5;\n\n /**\n * Applies pain from combat damage with shock pain effects.\n * \n * Calculates pain increase based on damage amount, vital point severity,\n * and vital point category. Also determines if shock pain effect should be triggered.\n * \n * **Shock Pain**: Instant 10-30% reduction for 2-3 seconds on significant hits (>=10 damage)\n * **Cumulative Trauma**: Progressive pain accumulation that reduces performance\n * **Pain Overload**: At >80 pain, chance of stun/unconsciousness\n * \n * @param player - Current player state\n * @param damage - Base damage amount\n * @param severity - Optional vital point severity\n * @param category - Optional vital point category for more accurate pain calculation\n * @returns Updated player state with increased pain and optional shock effect\n * \n * @example\n * ```typescript\n * // Normal hit\n * const result = system.applyPain(player, 10);\n * \n * // Vital point neurological hit with shock pain\n * const result = system.applyPain(\n * player, \n * 20, \n * VitalPointSeverity.MAJOR,\n * VitalPointCategory.NEUROLOGICAL\n * );\n * if (result.shockEffect) {\n * console.log(`Shock pain active for ${result.shockEffect.duration}ms`);\n * }\n * ```\n * \n * @korean 고통적용\n */\n applyPain(\n player: PlayerState,\n damage: number,\n severity?: VitalPointSeverity,\n category?: VitalPointCategory\n ): { player: PlayerState; shockEffect?: ShockPainEffect } {\n // Get multipliers based on severity and category\n const severityMultiplier = severity\n ? this.severityMultipliers[severity]\n : 1.0;\n \n const categoryMultiplier = category\n ? this.categoryMultipliers[category] ?? this.categoryMultipliers.default\n : this.categoryMultipliers.default;\n\n // Calculate pain increase (cumulative trauma)\n const painIncrease = damage * severityMultiplier * categoryMultiplier * this.PAIN_TO_DAMAGE_RATIO;\n\n // Apply pain, clamped to 0-100\n const newPain = Math.max(0, Math.min(100, player.pain + painIncrease));\n\n let shockEffect: ShockPainEffect | undefined;\n\n // Trigger shock pain for significant hits (>=10 damage)\n if (damage >= this.SHOCK_PAIN_THRESHOLD) {\n // Calculate shock intensity: 10-30% reduction based on damage\n const shockIntensity = Math.min(\n this.MAX_SHOCK_INTENSITY,\n this.MIN_SHOCK_INTENSITY + (damage / this.DAMAGE_SCALE_FACTOR) * this.INTENSITY_RANGE\n );\n \n // Random duration between 2-3 seconds\n const shockDuration =\n this.SHOCK_PAIN_DURATION.min +\n Math.random() *\n (this.SHOCK_PAIN_DURATION.max - this.SHOCK_PAIN_DURATION.min);\n\n shockEffect = {\n intensity: shockIntensity,\n duration: shockDuration,\n startTime: Date.now(),\n causedByDamage: damage,\n };\n }\n\n const updatedPlayer: PlayerState = {\n ...player,\n pain: newPain,\n };\n\n return { player: updatedPlayer, shockEffect };\n }\n\n /**\n * Applies pain dissipation over time (requirement: -5 pain/second).\n * \n * Pain naturally dissipates when not taking damage at a constant rate\n * of -5 pain per second.\n * \n * @param player - Current player state\n * @param deltaTime - Time elapsed in milliseconds\n * @returns Updated player state with reduced pain\n * \n * @example\n * ```typescript\n * // In game loop (~60fps, 16ms per frame)\n * player = system.applyDissipation(player, 16);\n * ```\n * \n * @korean 고통감소\n */\n applyDissipation(player: PlayerState, deltaTime: number): PlayerState {\n // Already at zero pain\n if (player.pain <= 0) {\n return player;\n }\n\n const deltaSeconds = deltaTime / 1000;\n \n // Constant dissipation rate of -5 pain/second\n const dissipation = this.BASE_DISSIPATION_RATE * deltaSeconds;\n const newPain = Math.max(0, player.pain - dissipation);\n\n return {\n ...player,\n pain: newPain,\n };\n }\n\n /**\n * Determines pain level from pain value.\n * \n * @param pain - Pain value (0-100)\n * @returns Current pain level\n * \n * @korean 고통수준확인\n */\n getPainLevel(pain: number): PainLevel {\n if (pain >= 80) return PainLevel.OVERLOAD;\n if (pain >= 60) return PainLevel.SEVERE;\n if (pain >= 40) return PainLevel.SIGNIFICANT;\n if (pain >= 20) return PainLevel.MODERATE;\n return PainLevel.MINIMAL;\n }\n\n /**\n * Gets effects for a specific pain level.\n * \n * @param level - Pain level\n * @returns Effects applied at that level\n * \n * @korean 고통효과\n */\n getEffects(level: PainLevel): PainEffects {\n return this.painEffects[level];\n }\n\n /**\n * Applies pain effects to player state, including shock pain.\n * \n * Modifies player stats based on current pain level. When shock pain\n * is active, additional penalties are applied temporarily.\n * \n * @param player - Current player state\n * @param shockEffect - Optional active shock pain effect\n * @returns Modified player state with pain effects\n * \n * @korean 고통효과적용\n */\n applyEffects(\n player: PlayerState,\n shockEffect?: ShockPainEffect\n ): PlayerState {\n const level = this.getPainLevel(player.pain);\n const effects = this.getEffects(level);\n\n // Calculate total penalties (base pain + shock pain if active)\n let totalAccuracyPenalty = effects.accuracyReduction;\n let totalDamagePenalty = effects.damageReduction;\n\n // Apply shock pain if still active\n if (shockEffect) {\n const elapsed = Date.now() - shockEffect.startTime;\n if (elapsed < shockEffect.duration) {\n // Add shock pain intensity to penalties\n totalAccuracyPenalty = Math.min(\n 1.0,\n totalAccuracyPenalty + shockEffect.intensity\n );\n totalDamagePenalty = Math.min(\n 1.0,\n totalDamagePenalty + shockEffect.intensity\n );\n }\n }\n\n return {\n ...player,\n attackPower: Math.floor(\n player.attackPower * (1 - totalDamagePenalty)\n ),\n defense: Math.floor(\n player.defense * (1 - effects.performancePenalty)\n ),\n speed: Math.floor(\n player.speed * (1 - effects.speedReduction)\n ),\n technique: Math.floor(\n player.technique * (1 - totalAccuracyPenalty)\n ),\n };\n }\n\n /**\n * Checks if pain overload should trigger stun.\n * \n * At pain >80, there's a chance per hit to trigger stun based on pain level.\n * Pain Overload level has 30% chance to trigger stun.\n * \n * @param player - Current player state\n * @returns True if player should be stunned from pain\n * \n * @korean 고통기절확인\n */\n shouldTriggerStun(player: PlayerState): boolean {\n if (player.pain < this.PAIN_OVERLOAD_THRESHOLD) {\n return false;\n }\n\n const level = this.getPainLevel(player.pain);\n const effects = this.getEffects(level);\n\n // Roll for stun chance\n return Math.random() < effects.stunChance;\n }\n\n /**\n * Checks if player is in pain overload state (>80 pain).\n * \n * @param player - Current player state\n * @returns True if pain is above overload threshold\n * \n * @korean 고통과부하확인\n */\n isInPainOverload(player: PlayerState): boolean {\n return player.pain >= this.PAIN_OVERLOAD_THRESHOLD;\n }\n\n /**\n * Checks if player is incapacitated by pain.\n * \n * @param player - Current player state\n * @returns True if pain is at overload level\n * \n * @korean 고통무력화확인\n */\n isIncapacitated(player: PlayerState): boolean {\n return this.getPainLevel(player.pain) === PainLevel.OVERLOAD;\n }\n\n /**\n * Gets bilingual name for pain level.\n * \n * @param level - Pain level\n * @returns Korean and English level names\n * \n * @korean 고통이름\n */\n getLevelName(level: PainLevel): { korean: string; english: string } {\n const names: Record<PainLevel, { korean: string; english: string }> = {\n [PainLevel.MINIMAL]: {\n korean: \"최소\",\n english: \"Minimal\",\n },\n [PainLevel.MODERATE]: {\n korean: \"보통\",\n english: \"Moderate\",\n },\n [PainLevel.SIGNIFICANT]: {\n korean: \"상당\",\n english: \"Significant\",\n },\n [PainLevel.SEVERE]: {\n korean: \"심각\",\n english: \"Severe\",\n },\n [PainLevel.OVERLOAD]: {\n korean: \"과부하\",\n english: \"Overload\",\n },\n };\n\n return names[level];\n }\n\n /**\n * Gets description of pain level effects.\n * \n * @param level - Pain level\n * @returns Bilingual description\n * \n * @korean 고통설명\n */\n getLevelDescription(level: PainLevel): {\n korean: string;\n english: string;\n } {\n const descriptions: Record<\n PainLevel,\n { korean: string; english: string }\n > = {\n [PainLevel.MINIMAL]: {\n korean: \"최소한의 고통, 전투 능력에 영향 없음\",\n english: \"Minimal pain, no significant effects on combat\",\n },\n [PainLevel.MODERATE]: {\n korean: \"보통 고통, 약간의 능력 저하 (-10%)\",\n english: \"Moderate pain, slight performance reduction (-10%)\",\n },\n [PainLevel.SIGNIFICANT]: {\n korean: \"상당한 고통, 명확한 손상 (-20%)\",\n english: \"Significant pain, noticeable impairment (-20%)\",\n },\n [PainLevel.SEVERE]: {\n korean: \"심각한 고통, 주요 제한 (-35%)\",\n english: \"Severe pain, major limitations (-35%)\",\n },\n [PainLevel.OVERLOAD]: {\n korean: \"고통 과부하, 기절 위험 (-50%, 30% 기절 확률)\",\n english: \"Pain overload, stun risk (-50%, 30% stun chance)\",\n },\n };\n\n return descriptions[level];\n }\n}\n\nexport default PainResponseSystem;\n"],"mappings":"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"}
|
|
@@ -52,7 +52,6 @@ export interface PainConsciousnessStatus {
|
|
|
52
52
|
* console.log(`Status: ${status.statusDescription.english}`);
|
|
53
53
|
* ```
|
|
54
54
|
*
|
|
55
|
-
* @public
|
|
56
55
|
* @korean 상태확인
|
|
57
56
|
*/
|
|
58
57
|
export declare function getPainConsciousnessStatus(player: PlayerState, painSystem: PainResponseSystem, consciousnessSystem: ConsciousnessSystem): PainConsciousnessStatus;
|
|
@@ -69,7 +68,6 @@ export declare function getPainConsciousnessStatus(player: PlayerState, painSyst
|
|
|
69
68
|
* @param category - Vital point category if known
|
|
70
69
|
* @returns True if result should cause head trauma
|
|
71
70
|
*
|
|
72
|
-
* @public
|
|
73
71
|
* @korean 두부외상확인
|
|
74
72
|
*/
|
|
75
73
|
export declare function isHeadTraumaHit(result: CombatResult, category?: VitalPointCategory): boolean;
|
|
@@ -81,7 +79,6 @@ export declare function isHeadTraumaHit(result: CombatResult, category?: VitalPo
|
|
|
81
79
|
* @param result - Combat result
|
|
82
80
|
* @returns Vital point category if determinable
|
|
83
81
|
*
|
|
84
|
-
* @public
|
|
85
82
|
* @korean 급소분류추출
|
|
86
83
|
*/
|
|
87
84
|
export declare function extractVitalPointCategory(result: CombatResult): VitalPointCategory | undefined;
|
|
@@ -98,7 +95,6 @@ export declare function extractVitalPointCategory(result: CombatResult): VitalPo
|
|
|
98
95
|
* console.log(`Recovery needed: ${recoveryTime}s`);
|
|
99
96
|
* ```
|
|
100
97
|
*
|
|
101
|
-
* @public
|
|
102
98
|
* @korean 회복시간계산
|
|
103
99
|
*/
|
|
104
100
|
export declare function getRecommendedRecoveryTime(player: PlayerState, consciousnessSystem: ConsciousnessSystem): number;
|
|
@@ -108,7 +104,6 @@ export declare function getRecommendedRecoveryTime(player: PlayerState, consciou
|
|
|
108
104
|
* @param shockEffect - Shock pain effect to check
|
|
109
105
|
* @returns True if effect is still active
|
|
110
106
|
*
|
|
111
|
-
* @public
|
|
112
107
|
* @korean 충격통활성확인
|
|
113
108
|
*/
|
|
114
109
|
export declare function isShockPainActive(shockEffect: ShockPainEffect): boolean;
|
|
@@ -118,7 +113,6 @@ export declare function isShockPainActive(shockEffect: ShockPainEffect): boolean
|
|
|
118
113
|
* @param shockEffect - Shock pain effect
|
|
119
114
|
* @returns Remaining duration in milliseconds, or 0 if expired
|
|
120
115
|
*
|
|
121
|
-
* @public
|
|
122
116
|
* @korean 충격통잔여시간
|
|
123
117
|
*/
|
|
124
118
|
export declare function getShockPainRemainingDuration(shockEffect: ShockPainEffect): number;
|
|
@@ -135,7 +129,6 @@ export declare function getShockPainRemainingDuration(shockEffect: ShockPainEffe
|
|
|
135
129
|
* console.log(display.consciousness); // "Consciousness: 85/100"
|
|
136
130
|
* ```
|
|
137
131
|
*
|
|
138
|
-
* @public
|
|
139
132
|
* @korean 표시형식
|
|
140
133
|
*/
|
|
141
134
|
export declare function formatPainConsciousnessDisplay(player: PlayerState): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"painConsciousnessUtils.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/painConsciousnessUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,kBAAkB,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,yCAAyC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,yCAAyC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,mCAAmC;IACnC,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED
|
|
1
|
+
{"version":3,"file":"painConsciousnessUtils.d.ts","sourceRoot":"","sources":["../../../src/systems/combat/painConsciousnessUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,kBAAkB,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,yCAAyC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,yCAAyC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,mCAAmC;IACnC,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,kBAAkB,EAC9B,mBAAmB,EAAE,mBAAmB,GACvC,uBAAuB,CAyCzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAsBT;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAoC9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,mBAAmB,EAAE,mBAAmB,GACvC,MAAM,CA4BR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAGvE;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,CAGlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,GAAG;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,CAOA"}
|
|
@@ -16,7 +16,6 @@ import { ConsciousnessLevel } from "./ConsciousnessSystem.js";
|
|
|
16
16
|
* console.log(`Status: ${status.statusDescription.english}`);
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
|
-
* @public
|
|
20
19
|
* @korean 상태확인
|
|
21
20
|
*/
|
|
22
21
|
function getPainConsciousnessStatus(player, painSystem, consciousnessSystem) {
|
|
@@ -65,7 +64,6 @@ function getPainConsciousnessStatus(player, painSystem, consciousnessSystem) {
|
|
|
65
64
|
* @param category - Vital point category if known
|
|
66
65
|
* @returns True if result should cause head trauma
|
|
67
66
|
*
|
|
68
|
-
* @public
|
|
69
67
|
* @korean 두부외상확인
|
|
70
68
|
*/
|
|
71
69
|
function isHeadTraumaHit(result, category) {
|
|
@@ -83,7 +81,6 @@ function isHeadTraumaHit(result, category) {
|
|
|
83
81
|
* @param result - Combat result
|
|
84
82
|
* @returns Vital point category if determinable
|
|
85
83
|
*
|
|
86
|
-
* @public
|
|
87
84
|
* @korean 급소분류추출
|
|
88
85
|
*/
|
|
89
86
|
function extractVitalPointCategory(result) {
|
|
@@ -112,7 +109,6 @@ function extractVitalPointCategory(result) {
|
|
|
112
109
|
* console.log(`Recovery needed: ${recoveryTime}s`);
|
|
113
110
|
* ```
|
|
114
111
|
*
|
|
115
|
-
* @public
|
|
116
112
|
* @korean 회복시간계산
|
|
117
113
|
*/
|
|
118
114
|
function getRecommendedRecoveryTime(player, consciousnessSystem) {
|
|
@@ -135,7 +131,6 @@ function getRecommendedRecoveryTime(player, consciousnessSystem) {
|
|
|
135
131
|
* @param shockEffect - Shock pain effect to check
|
|
136
132
|
* @returns True if effect is still active
|
|
137
133
|
*
|
|
138
|
-
* @public
|
|
139
134
|
* @korean 충격통활성확인
|
|
140
135
|
*/
|
|
141
136
|
function isShockPainActive(shockEffect) {
|
|
@@ -147,7 +142,6 @@ function isShockPainActive(shockEffect) {
|
|
|
147
142
|
* @param shockEffect - Shock pain effect
|
|
148
143
|
* @returns Remaining duration in milliseconds, or 0 if expired
|
|
149
144
|
*
|
|
150
|
-
* @public
|
|
151
145
|
* @korean 충격통잔여시간
|
|
152
146
|
*/
|
|
153
147
|
function getShockPainRemainingDuration(shockEffect) {
|
|
@@ -167,7 +161,6 @@ function getShockPainRemainingDuration(shockEffect) {
|
|
|
167
161
|
* console.log(display.consciousness); // "Consciousness: 85/100"
|
|
168
162
|
* ```
|
|
169
163
|
*
|
|
170
|
-
* @public
|
|
171
164
|
* @korean 표시형식
|
|
172
165
|
*/
|
|
173
166
|
function formatPainConsciousnessDisplay(player) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"painConsciousnessUtils.js","names":[],"sources":["../../../src/systems/combat/painConsciousnessUtils.ts"],"sourcesContent":["/**\n * Utility functions for Pain and Consciousness management in combat.\n * \n * **Korean**: 고통 의식 관리 유틸리티\n * \n * Provides helper functions for managing pain and consciousness effects\n * in combat scenarios, including status checking, effect application,\n * and recovery management.\n * \n * @module systems/combat/painConsciousnessUtils\n * @category Combat System\n */\n\nimport { PlayerState } from \"../player\";\nimport { VitalPointCategory } from \"@/types\";\nimport { CombatResult } from \"./types\";\nimport PainResponseSystem, { PainLevel, ShockPainEffect } from \"./PainResponseSystem\";\nimport ConsciousnessSystem, { ConsciousnessLevel } from \"./ConsciousnessSystem\";\n\n/**\n * Pain and consciousness status information.\n */\nexport interface PainConsciousnessStatus {\n /** Current pain level */\n readonly painLevel: PainLevel;\n /** Current consciousness level */\n readonly consciousnessLevel: ConsciousnessLevel;\n /** Whether player is in pain overload */\n readonly isInPainOverload: boolean;\n /** Whether player is at incapacitation threshold */\n readonly isIncapacitated: boolean;\n /** Whether player is combat effective */\n readonly isCombatEffective: boolean;\n /** Overall combat effectiveness percentage (0-1) */\n readonly combatEffectiveness: number;\n /** Bilingual status description */\n readonly statusDescription: {\n readonly korean: string;\n readonly english: string;\n };\n}\n\n/**\n * Gets comprehensive pain and consciousness status for a player.\n * \n * @param player - Player to check status for\n * @param painSystem - Pain response system instance\n * @param consciousnessSystem - Consciousness system instance\n * @returns Comprehensive status information\n * \n * @example\n * ```typescript\n * const status = getPainConsciousnessStatus(player, painSystem, consciousnessSystem);\n * console.log(`Combat effectiveness: ${status.combatEffectiveness * 100}%`);\n * console.log(`Status: ${status.statusDescription.english}`);\n * ```\n * \n * @public\n * @korean 상태확인\n */\nexport function getPainConsciousnessStatus(\n player: PlayerState,\n painSystem: PainResponseSystem,\n consciousnessSystem: ConsciousnessSystem\n): PainConsciousnessStatus {\n const painLevel = painSystem.getPainLevel(player.pain);\n const consciousnessLevel = consciousnessSystem.getLevel(player.consciousness);\n \n const isInPainOverload = painSystem.isInPainOverload(player);\n const isIncapacitated = consciousnessSystem.isAtIncapacitationThreshold(player);\n \n // Calculate overall combat effectiveness\n const painPenalty = painSystem.getEffects(painLevel).performancePenalty;\n const consciousnessPenalty = consciousnessSystem.getEffects(consciousnessLevel).accuracyPenalty;\n const combatEffectiveness = Math.max(0, 1 - Math.max(painPenalty, consciousnessPenalty));\n \n const isCombatEffective = combatEffectiveness > 0.5;\n \n // Generate status description\n const painName = painSystem.getLevelName(painLevel);\n const consciousnessName = consciousnessSystem.getLevelName(consciousnessLevel);\n \n let statusKorean = `고통: ${painName.korean}, 의식: ${consciousnessName.korean}`;\n let statusEnglish = `Pain: ${painName.english}, Consciousness: ${consciousnessName.english}`;\n \n if (isIncapacitated) {\n statusKorean = \"무력화 상태\";\n statusEnglish = \"Incapacitated\";\n } else if (isInPainOverload) {\n statusKorean = \"고통 과부하\";\n statusEnglish = \"Pain Overload\";\n }\n \n return {\n painLevel,\n consciousnessLevel,\n isInPainOverload,\n isIncapacitated,\n isCombatEffective,\n combatEffectiveness,\n statusDescription: {\n korean: statusKorean,\n english: statusEnglish,\n },\n };\n}\n\n/**\n * Determines if a combat result should trigger head trauma.\n * \n * Head trauma occurs for:\n * - Neurological vital point hits\n * - Vascular hits to head region\n * - High damage hits (>25) that could cause concussion\n * - Critical hits to upper body\n * \n * @param result - Combat result to check\n * @param category - Vital point category if known\n * @returns True if result should cause head trauma\n * \n * @public\n * @korean 두부외상확인\n */\nexport function isHeadTraumaHit(\n result: CombatResult,\n category?: VitalPointCategory\n): boolean {\n // Neurological hits often target head\n if (category === VitalPointCategory.NEUROLOGICAL) {\n return true;\n }\n \n // Vascular hits to head region\n if (category === VitalPointCategory.VASCULAR && result.damage > 15) {\n return true;\n }\n \n // High damage hits that could concuss\n if (result.damage > 25) {\n return true;\n }\n \n // Critical hits to vital points\n if (result.isCritical && result.vitalPointHit) {\n return true;\n }\n \n return false;\n}\n\n/**\n * Extracts vital point category from combat result.\n * \n * Uses heuristics to determine category from effect sources and hit data.\n * \n * @param result - Combat result\n * @returns Vital point category if determinable\n * \n * @public\n * @korean 급소분류추출\n */\nexport function extractVitalPointCategory(result: CombatResult): VitalPointCategory | undefined {\n if (!result.vitalPointHit || !result.effects || result.effects.length === 0) {\n return undefined;\n }\n \n const effect = result.effects[0];\n if (!effect.source) {\n return undefined;\n }\n \n const source = effect.source.toLowerCase();\n \n // Map source strings to categories\n if (source.includes('neuro') || source.includes('nerve')) {\n return VitalPointCategory.NEUROLOGICAL;\n }\n if (source.includes('vascular') || source.includes('blood') || source.includes('artery')) {\n return VitalPointCategory.VASCULAR;\n }\n if (source.includes('respiratory') || source.includes('breath') || source.includes('lung')) {\n return VitalPointCategory.RESPIRATORY;\n }\n if (source.includes('skeletal') || source.includes('bone')) {\n return VitalPointCategory.SKELETAL;\n }\n if (source.includes('muscular') || source.includes('muscle')) {\n return VitalPointCategory.MUSCULAR;\n }\n if (source.includes('organ') || source.includes('visceral')) {\n return VitalPointCategory.ORGAN;\n }\n if (source.includes('joint')) {\n return VitalPointCategory.JOINT;\n }\n \n return undefined;\n}\n\n/**\n * Calculates recommended recovery time based on player condition.\n * \n * @param player - Player state\n * @param consciousnessSystem - Consciousness system\n * @returns Estimated recovery time in seconds\n * \n * @example\n * ```typescript\n * const recoveryTime = getRecommendedRecoveryTime(player, consciousnessSystem);\n * console.log(`Recovery needed: ${recoveryTime}s`);\n * ```\n * \n * @public\n * @korean 회복시간계산\n */\nexport function getRecommendedRecoveryTime(\n player: PlayerState,\n consciousnessSystem: ConsciousnessSystem\n): number {\n let painRecoveryTime = 0;\n let consciousnessRecoveryTime = 0;\n \n // Pain recovery time (-5 pain/second)\n if (player.pain > 0) {\n painRecoveryTime = player.pain / 5;\n }\n \n // Consciousness recovery time (5 points/second after 5s delay)\n if (player.consciousness < 100) {\n const consciousnessToRecover = 100 - player.consciousness;\n const consciousnessLevel = consciousnessSystem.getLevel(player.consciousness);\n \n // Account for slower recovery at low consciousness\n let recoveryRate = 5; // Base rate\n if (consciousnessLevel === ConsciousnessLevel.STUNNED) {\n recoveryRate = 2.5; // 50% slower\n } else if (consciousnessLevel === ConsciousnessLevel.UNCONSCIOUS) {\n recoveryRate = 1; // 20% of base\n }\n \n consciousnessRecoveryTime = 5 + (consciousnessToRecover / recoveryRate);\n }\n \n // Since pain and consciousness recover in parallel (concurrently in game loop),\n // return the maximum of the two recovery times, not the sum\n return Math.ceil(Math.max(painRecoveryTime, consciousnessRecoveryTime));\n}\n\n/**\n * Checks if shock pain effect is still active.\n * \n * @param shockEffect - Shock pain effect to check\n * @returns True if effect is still active\n * \n * @public\n * @korean 충격통활성확인\n */\nexport function isShockPainActive(shockEffect: ShockPainEffect): boolean {\n const elapsed = Date.now() - shockEffect.startTime;\n return elapsed < shockEffect.duration;\n}\n\n/**\n * Gets remaining shock pain duration.\n * \n * @param shockEffect - Shock pain effect\n * @returns Remaining duration in milliseconds, or 0 if expired\n * \n * @public\n * @korean 충격통잔여시간\n */\nexport function getShockPainRemainingDuration(shockEffect: ShockPainEffect): number {\n const elapsed = Date.now() - shockEffect.startTime;\n return Math.max(0, shockEffect.duration - elapsed);\n}\n\n/**\n * Formats pain and consciousness values for display.\n * \n * @param player - Player state\n * @returns Formatted display strings\n * \n * @example\n * ```typescript\n * const display = formatPainConsciousnessDisplay(player);\n * console.log(display.pain); // \"Pain: 45/100\"\n * console.log(display.consciousness); // \"Consciousness: 85/100\"\n * ```\n * \n * @public\n * @korean 표시형식\n */\nexport function formatPainConsciousnessDisplay(player: PlayerState): {\n readonly pain: string;\n readonly consciousness: string;\n readonly painKorean: string;\n readonly consciousnessKorean: string;\n} {\n return {\n pain: `Pain: ${Math.floor(player.pain)}/100`,\n consciousness: `Consciousness: ${Math.floor(player.consciousness)}/100`,\n painKorean: `고통: ${Math.floor(player.pain)}/100`,\n consciousnessKorean: `의식: ${Math.floor(player.consciousness)}/100`,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"painConsciousnessUtils.js","names":[],"sources":["../../../src/systems/combat/painConsciousnessUtils.ts"],"sourcesContent":["/**\n * Utility functions for Pain and Consciousness management in combat.\n * \n * **Korean**: 고통 의식 관리 유틸리티\n * \n * Provides helper functions for managing pain and consciousness effects\n * in combat scenarios, including status checking, effect application,\n * and recovery management.\n * \n * @module systems/combat/painConsciousnessUtils\n * @category Combat System\n */\n\nimport { PlayerState } from \"../player\";\nimport { VitalPointCategory } from \"@/types\";\nimport { CombatResult } from \"./types\";\nimport PainResponseSystem, { PainLevel, ShockPainEffect } from \"./PainResponseSystem\";\nimport ConsciousnessSystem, { ConsciousnessLevel } from \"./ConsciousnessSystem\";\n\n/**\n * Pain and consciousness status information.\n */\nexport interface PainConsciousnessStatus {\n /** Current pain level */\n readonly painLevel: PainLevel;\n /** Current consciousness level */\n readonly consciousnessLevel: ConsciousnessLevel;\n /** Whether player is in pain overload */\n readonly isInPainOverload: boolean;\n /** Whether player is at incapacitation threshold */\n readonly isIncapacitated: boolean;\n /** Whether player is combat effective */\n readonly isCombatEffective: boolean;\n /** Overall combat effectiveness percentage (0-1) */\n readonly combatEffectiveness: number;\n /** Bilingual status description */\n readonly statusDescription: {\n readonly korean: string;\n readonly english: string;\n };\n}\n\n/**\n * Gets comprehensive pain and consciousness status for a player.\n * \n * @param player - Player to check status for\n * @param painSystem - Pain response system instance\n * @param consciousnessSystem - Consciousness system instance\n * @returns Comprehensive status information\n * \n * @example\n * ```typescript\n * const status = getPainConsciousnessStatus(player, painSystem, consciousnessSystem);\n * console.log(`Combat effectiveness: ${status.combatEffectiveness * 100}%`);\n * console.log(`Status: ${status.statusDescription.english}`);\n * ```\n * \n * @korean 상태확인\n */\nexport function getPainConsciousnessStatus(\n player: PlayerState,\n painSystem: PainResponseSystem,\n consciousnessSystem: ConsciousnessSystem\n): PainConsciousnessStatus {\n const painLevel = painSystem.getPainLevel(player.pain);\n const consciousnessLevel = consciousnessSystem.getLevel(player.consciousness);\n \n const isInPainOverload = painSystem.isInPainOverload(player);\n const isIncapacitated = consciousnessSystem.isAtIncapacitationThreshold(player);\n \n // Calculate overall combat effectiveness\n const painPenalty = painSystem.getEffects(painLevel).performancePenalty;\n const consciousnessPenalty = consciousnessSystem.getEffects(consciousnessLevel).accuracyPenalty;\n const combatEffectiveness = Math.max(0, 1 - Math.max(painPenalty, consciousnessPenalty));\n \n const isCombatEffective = combatEffectiveness > 0.5;\n \n // Generate status description\n const painName = painSystem.getLevelName(painLevel);\n const consciousnessName = consciousnessSystem.getLevelName(consciousnessLevel);\n \n let statusKorean = `고통: ${painName.korean}, 의식: ${consciousnessName.korean}`;\n let statusEnglish = `Pain: ${painName.english}, Consciousness: ${consciousnessName.english}`;\n \n if (isIncapacitated) {\n statusKorean = \"무력화 상태\";\n statusEnglish = \"Incapacitated\";\n } else if (isInPainOverload) {\n statusKorean = \"고통 과부하\";\n statusEnglish = \"Pain Overload\";\n }\n \n return {\n painLevel,\n consciousnessLevel,\n isInPainOverload,\n isIncapacitated,\n isCombatEffective,\n combatEffectiveness,\n statusDescription: {\n korean: statusKorean,\n english: statusEnglish,\n },\n };\n}\n\n/**\n * Determines if a combat result should trigger head trauma.\n * \n * Head trauma occurs for:\n * - Neurological vital point hits\n * - Vascular hits to head region\n * - High damage hits (>25) that could cause concussion\n * - Critical hits to upper body\n * \n * @param result - Combat result to check\n * @param category - Vital point category if known\n * @returns True if result should cause head trauma\n * \n * @korean 두부외상확인\n */\nexport function isHeadTraumaHit(\n result: CombatResult,\n category?: VitalPointCategory\n): boolean {\n // Neurological hits often target head\n if (category === VitalPointCategory.NEUROLOGICAL) {\n return true;\n }\n \n // Vascular hits to head region\n if (category === VitalPointCategory.VASCULAR && result.damage > 15) {\n return true;\n }\n \n // High damage hits that could concuss\n if (result.damage > 25) {\n return true;\n }\n \n // Critical hits to vital points\n if (result.isCritical && result.vitalPointHit) {\n return true;\n }\n \n return false;\n}\n\n/**\n * Extracts vital point category from combat result.\n * \n * Uses heuristics to determine category from effect sources and hit data.\n * \n * @param result - Combat result\n * @returns Vital point category if determinable\n * \n * @korean 급소분류추출\n */\nexport function extractVitalPointCategory(result: CombatResult): VitalPointCategory | undefined {\n if (!result.vitalPointHit || !result.effects || result.effects.length === 0) {\n return undefined;\n }\n \n const effect = result.effects[0];\n if (!effect.source) {\n return undefined;\n }\n \n const source = effect.source.toLowerCase();\n \n // Map source strings to categories\n if (source.includes('neuro') || source.includes('nerve')) {\n return VitalPointCategory.NEUROLOGICAL;\n }\n if (source.includes('vascular') || source.includes('blood') || source.includes('artery')) {\n return VitalPointCategory.VASCULAR;\n }\n if (source.includes('respiratory') || source.includes('breath') || source.includes('lung')) {\n return VitalPointCategory.RESPIRATORY;\n }\n if (source.includes('skeletal') || source.includes('bone')) {\n return VitalPointCategory.SKELETAL;\n }\n if (source.includes('muscular') || source.includes('muscle')) {\n return VitalPointCategory.MUSCULAR;\n }\n if (source.includes('organ') || source.includes('visceral')) {\n return VitalPointCategory.ORGAN;\n }\n if (source.includes('joint')) {\n return VitalPointCategory.JOINT;\n }\n \n return undefined;\n}\n\n/**\n * Calculates recommended recovery time based on player condition.\n * \n * @param player - Player state\n * @param consciousnessSystem - Consciousness system\n * @returns Estimated recovery time in seconds\n * \n * @example\n * ```typescript\n * const recoveryTime = getRecommendedRecoveryTime(player, consciousnessSystem);\n * console.log(`Recovery needed: ${recoveryTime}s`);\n * ```\n * \n * @korean 회복시간계산\n */\nexport function getRecommendedRecoveryTime(\n player: PlayerState,\n consciousnessSystem: ConsciousnessSystem\n): number {\n let painRecoveryTime = 0;\n let consciousnessRecoveryTime = 0;\n \n // Pain recovery time (-5 pain/second)\n if (player.pain > 0) {\n painRecoveryTime = player.pain / 5;\n }\n \n // Consciousness recovery time (5 points/second after 5s delay)\n if (player.consciousness < 100) {\n const consciousnessToRecover = 100 - player.consciousness;\n const consciousnessLevel = consciousnessSystem.getLevel(player.consciousness);\n \n // Account for slower recovery at low consciousness\n let recoveryRate = 5; // Base rate\n if (consciousnessLevel === ConsciousnessLevel.STUNNED) {\n recoveryRate = 2.5; // 50% slower\n } else if (consciousnessLevel === ConsciousnessLevel.UNCONSCIOUS) {\n recoveryRate = 1; // 20% of base\n }\n \n consciousnessRecoveryTime = 5 + (consciousnessToRecover / recoveryRate);\n }\n \n // Since pain and consciousness recover in parallel (concurrently in game loop),\n // return the maximum of the two recovery times, not the sum\n return Math.ceil(Math.max(painRecoveryTime, consciousnessRecoveryTime));\n}\n\n/**\n * Checks if shock pain effect is still active.\n * \n * @param shockEffect - Shock pain effect to check\n * @returns True if effect is still active\n * \n * @korean 충격통활성확인\n */\nexport function isShockPainActive(shockEffect: ShockPainEffect): boolean {\n const elapsed = Date.now() - shockEffect.startTime;\n return elapsed < shockEffect.duration;\n}\n\n/**\n * Gets remaining shock pain duration.\n * \n * @param shockEffect - Shock pain effect\n * @returns Remaining duration in milliseconds, or 0 if expired\n * \n * @korean 충격통잔여시간\n */\nexport function getShockPainRemainingDuration(shockEffect: ShockPainEffect): number {\n const elapsed = Date.now() - shockEffect.startTime;\n return Math.max(0, shockEffect.duration - elapsed);\n}\n\n/**\n * Formats pain and consciousness values for display.\n * \n * @param player - Player state\n * @returns Formatted display strings\n * \n * @example\n * ```typescript\n * const display = formatPainConsciousnessDisplay(player);\n * console.log(display.pain); // \"Pain: 45/100\"\n * console.log(display.consciousness); // \"Consciousness: 85/100\"\n * ```\n * \n * @korean 표시형식\n */\nexport function formatPainConsciousnessDisplay(player: PlayerState): {\n readonly pain: string;\n readonly consciousness: string;\n readonly painKorean: string;\n readonly consciousnessKorean: string;\n} {\n return {\n pain: `Pain: ${Math.floor(player.pain)}/100`,\n consciousness: `Consciousness: ${Math.floor(player.consciousness)}/100`,\n painKorean: `고통: ${Math.floor(player.pain)}/100`,\n consciousnessKorean: `의식: ${Math.floor(player.consciousness)}/100`,\n };\n}\n"],"mappings":"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"}
|
package/lib/systems/effects.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combat effects and status system for Korean martial arts.
|
|
3
|
+
*
|
|
4
|
+
* @module systems/effects
|
|
5
|
+
* @category Combat Effects
|
|
6
|
+
* @korean 전투효과시스템
|
|
7
|
+
*/
|
|
8
|
+
/** Hit effect type discriminator for combat feedback */
|
|
1
9
|
export declare enum HitEffectType {
|
|
2
10
|
GENERAL_DAMAGE = "general_damage",
|
|
3
11
|
CRITICAL_HIT = "critical_hit",
|
|
@@ -9,6 +17,7 @@ export declare enum HitEffectType {
|
|
|
9
17
|
COUNTER = "counter",
|
|
10
18
|
HIT = "hit"
|
|
11
19
|
}
|
|
20
|
+
/** Additional hit effect variants for status effects */
|
|
12
21
|
export declare enum HitEffectEnum {
|
|
13
22
|
STUN = "stun",
|
|
14
23
|
WEAKNESS = "weakness",
|
|
@@ -23,6 +32,7 @@ export declare enum HitEffectEnum {
|
|
|
23
32
|
FREEZE = "freeze",
|
|
24
33
|
CONFUSION = "confusion"
|
|
25
34
|
}
|
|
35
|
+
/** Effect intensity levels for status effects */
|
|
26
36
|
export declare enum EffectIntensity {
|
|
27
37
|
WEAK = "weak",
|
|
28
38
|
MINOR = "minor",
|
|
@@ -34,6 +44,7 @@ export declare enum EffectIntensity {
|
|
|
34
44
|
CRITICAL = "critical",
|
|
35
45
|
EXTREME = "extreme"
|
|
36
46
|
}
|
|
47
|
+
/** Union type of all applicable status effect identifiers */
|
|
37
48
|
export type EffectType = "stun" | "poison" | "burn" | "bleed" | "exhausted" | "focused" | "rage" | "defensive" | "weakened" | "strengthened" | "paralysis" | "confusion" | "vulnerability" | "stamina_drain";
|
|
38
49
|
export type ParticleType = "spark" | "blood" | "energy" | "dust" | "flash" | "smoke" | "lightning" | "wind";
|
|
39
50
|
export type EnvironmentalEffectType = "smoke" | "fire" | "ice" | "wind" | "lightning" | "darkness" | "light" | "pressure";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../src/systems/effects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../src/systems/effects.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wDAAwD;AACxD,oBAAY,aAAa;IACvB,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,wDAAwD;AACxD,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,iDAAiD;AACjD,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,MAAM,GACN,WAAW,GACX,UAAU,GACV,cAAc,GACd,WAAW,GACX,WAAW,GACX,eAAe,GACf,eAAe,CAAC;AAIpB,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,CAAC;AAIX,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,WAAW,GACX,UAAU,GACV,OAAO,GACP,UAAU,CAAC"}
|
package/lib/systems/effects.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
//#region src/systems/effects.ts
|
|
2
|
+
/**
|
|
3
|
+
* Combat effects and status system for Korean martial arts.
|
|
4
|
+
*
|
|
5
|
+
* @module systems/effects
|
|
6
|
+
* @category Combat Effects
|
|
7
|
+
* @korean 전투효과시스템
|
|
8
|
+
*/
|
|
9
|
+
/** Hit effect type discriminator for combat feedback */
|
|
2
10
|
var HitEffectType = /* @__PURE__ */ function(HitEffectType) {
|
|
3
11
|
HitEffectType["GENERAL_DAMAGE"] = "general_damage";
|
|
4
12
|
HitEffectType["CRITICAL_HIT"] = "critical_hit";
|
|
@@ -11,6 +19,7 @@ var HitEffectType = /* @__PURE__ */ function(HitEffectType) {
|
|
|
11
19
|
HitEffectType["HIT"] = "hit";
|
|
12
20
|
return HitEffectType;
|
|
13
21
|
}({});
|
|
22
|
+
/** Additional hit effect variants for status effects */
|
|
14
23
|
var HitEffectEnum = /* @__PURE__ */ function(HitEffectEnum) {
|
|
15
24
|
HitEffectEnum["STUN"] = "stun";
|
|
16
25
|
HitEffectEnum["WEAKNESS"] = "weakness";
|
|
@@ -26,6 +35,7 @@ var HitEffectEnum = /* @__PURE__ */ function(HitEffectEnum) {
|
|
|
26
35
|
HitEffectEnum["CONFUSION"] = "confusion";
|
|
27
36
|
return HitEffectEnum;
|
|
28
37
|
}({});
|
|
38
|
+
/** Effect intensity levels for status effects */
|
|
29
39
|
var EffectIntensity = /* @__PURE__ */ function(EffectIntensity) {
|
|
30
40
|
EffectIntensity["WEAK"] = "weak";
|
|
31
41
|
EffectIntensity["MINOR"] = "minor";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","names":[],"sources":["../../src/systems/effects.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"effects.js","names":[],"sources":["../../src/systems/effects.ts"],"sourcesContent":["/**\n * Combat effects and status system for Korean martial arts.\n *\n * @module systems/effects\n * @category Combat Effects\n * @korean 전투효과시스템\n */\n\n/** Hit effect type discriminator for combat feedback */\nexport enum HitEffectType {\n GENERAL_DAMAGE = \"general_damage\",\n CRITICAL_HIT = \"critical_hit\",\n VITAL_POINT_STRIKE = \"vital_point_strike\",\n STATUS_EFFECT = \"status_effect\",\n MISS = \"miss\",\n BLOCK = \"block\",\n PARRY = \"parry\",\n COUNTER = \"counter\",\n HIT = \"hit\",\n}\n\n/** Additional hit effect variants for status effects */\nexport enum HitEffectEnum {\n STUN = \"stun\",\n WEAKNESS = \"weakness\",\n STAMINA_DRAIN = \"stamina_drain\",\n VULNERABILITY = \"vulnerability\",\n BLEEDING = \"bleeding\",\n BUFF = \"buff\",\n DEBUFF = \"debuff\",\n PARALYSIS = \"paralysis\",\n POISON = \"poison\",\n BURN = \"burn\",\n FREEZE = \"freeze\",\n CONFUSION = \"confusion\",\n}\n\n/** Effect intensity levels for status effects */\nexport enum EffectIntensity {\n WEAK = \"weak\",\n MINOR = \"minor\",\n LOW = \"low\",\n MEDIUM = \"medium\",\n MODERATE = \"moderate\",\n HIGH = \"high\",\n SEVERE = \"severe\",\n CRITICAL = \"critical\",\n EXTREME = \"extreme\",\n}\n\n/** Union type of all applicable status effect identifiers */\nexport type EffectType =\n | \"stun\"\n | \"poison\"\n | \"burn\"\n | \"bleed\"\n | \"exhausted\"\n | \"focused\"\n | \"rage\"\n | \"defensive\"\n | \"weakened\"\n | \"strengthened\"\n | \"paralysis\" // Add missing paralysis\n | \"confusion\" // Add missing confusion\n | \"vulnerability\" // Add missing vulnerability\n | \"stamina_drain\"; // Add missing stamina_drain\n\n// Particle effect for visual feedback\n// Particle effect types\nexport type ParticleType =\n | \"spark\"\n | \"blood\"\n | \"energy\"\n | \"dust\"\n | \"flash\"\n | \"smoke\"\n | \"lightning\"\n | \"wind\";\n\n// Environmental effect\n// Environmental effect types\nexport type EnvironmentalEffectType =\n | \"smoke\"\n | \"fire\"\n | \"ice\"\n | \"wind\"\n | \"lightning\"\n | \"darkness\"\n | \"light\"\n | \"pressure\";\n"],"mappings":";;;;;;;;;AASA,IAAY,gBAAL,yBAAA,eAAA;CACL,cAAA,oBAAiB;CACjB,cAAA,kBAAe;CACf,cAAA,wBAAqB;CACrB,cAAA,mBAAgB;CAChB,cAAA,UAAO;CACP,cAAA,WAAQ;CACR,cAAA,WAAQ;CACR,cAAA,aAAU;CACV,cAAA,SAAM;;KACP;;AAGD,IAAY,gBAAL,yBAAA,eAAA;CACL,cAAA,UAAO;CACP,cAAA,cAAW;CACX,cAAA,mBAAgB;CAChB,cAAA,mBAAgB;CAChB,cAAA,cAAW;CACX,cAAA,UAAO;CACP,cAAA,YAAS;CACT,cAAA,eAAY;CACZ,cAAA,YAAS;CACT,cAAA,UAAO;CACP,cAAA,YAAS;CACT,cAAA,eAAY;;KACb;;AAGD,IAAY,kBAAL,yBAAA,iBAAA;CACL,gBAAA,UAAO;CACP,gBAAA,WAAQ;CACR,gBAAA,SAAM;CACN,gBAAA,YAAS;CACT,gBAAA,cAAW;CACX,gBAAA,UAAO;CACP,gBAAA,YAAS;CACT,gBAAA,cAAW;CACX,gBAAA,aAAU;;KACX"}
|
package/lib/systems/game.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core game state and flow management types.
|
|
3
|
+
*
|
|
4
|
+
* Defines match configuration, event system, game sessions, and
|
|
5
|
+
* persistent save data for the Black Trigram combat game.
|
|
6
|
+
*
|
|
7
|
+
* @module systems/game
|
|
8
|
+
* @category Game State
|
|
9
|
+
* @korean 게임상태관리
|
|
10
|
+
*/
|
|
1
11
|
import { GameMode, KoreanText } from "../types";
|
|
2
12
|
import type { PlayerState } from "./player";
|
|
13
|
+
/** Configuration for a match before it begins */
|
|
3
14
|
export interface MatchConfig {
|
|
4
15
|
readonly mode: GameMode;
|
|
5
16
|
readonly rounds: number;
|
|
@@ -9,6 +20,7 @@ export interface MatchConfig {
|
|
|
9
20
|
readonly stage: string;
|
|
10
21
|
readonly difficulty?: "easy" | "medium" | "hard" | "expert";
|
|
11
22
|
}
|
|
23
|
+
/** A discrete event emitted during gameplay for logging and UI updates */
|
|
12
24
|
export interface GameEvent {
|
|
13
25
|
readonly id: string;
|
|
14
26
|
readonly type: GameEventType;
|
|
@@ -17,6 +29,7 @@ export interface GameEvent {
|
|
|
17
29
|
readonly data: Record<string, any>;
|
|
18
30
|
readonly message?: KoreanText;
|
|
19
31
|
}
|
|
32
|
+
/** All event types emitted during a match lifecycle */
|
|
20
33
|
export declare enum GameEventType {
|
|
21
34
|
GAME_START = "game_start",
|
|
22
35
|
ROUND_START = "round_start",
|
|
@@ -31,6 +44,7 @@ export declare enum GameEventType {
|
|
|
31
44
|
PAUSE_TOGGLE = "pause_toggle",
|
|
32
45
|
ERROR = "error"
|
|
33
46
|
}
|
|
47
|
+
/** Runtime state for an active match session */
|
|
34
48
|
export interface GameSession {
|
|
35
49
|
readonly id: string;
|
|
36
50
|
readonly gameMode: GameMode;
|
|
@@ -43,6 +57,7 @@ export interface GameSession {
|
|
|
43
57
|
readonly isGameOver: boolean;
|
|
44
58
|
readonly winner: PlayerState | null;
|
|
45
59
|
}
|
|
60
|
+
/** Global game rules and balance parameters */
|
|
46
61
|
export interface GameConfig {
|
|
47
62
|
readonly maxHealth: number;
|
|
48
63
|
readonly maxKi: number;
|
|
@@ -54,6 +69,7 @@ export interface GameConfig {
|
|
|
54
69
|
readonly enableStatusEffects: boolean;
|
|
55
70
|
readonly allowArchetypeSwitching: boolean;
|
|
56
71
|
}
|
|
72
|
+
/** Persistent player data written to save storage */
|
|
57
73
|
export interface GameSaveData {
|
|
58
74
|
readonly version: string;
|
|
59
75
|
readonly playerId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/systems/game.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/systems/game.ts"],"names":[],"mappings":"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"}
|
package/lib/systems/game.js
CHANGED
package/lib/systems/game.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.js","names":[],"sources":["../../src/systems/game.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"game.js","names":[],"sources":["../../src/systems/game.ts"],"sourcesContent":["/**\n * Core game state and flow management types.\n *\n * Defines match configuration, event system, game sessions, and\n * persistent save data for the Black Trigram combat game.\n *\n * @module systems/game\n * @category Game State\n * @korean 게임상태관리\n */\n\nimport { GameMode, KoreanText } from \"@/types\";\nimport type { PlayerState } from \"./player\";\n\n/** Configuration for a match before it begins */\nexport interface MatchConfig {\n readonly mode: GameMode;\n readonly rounds: number;\n readonly roundDuration: number; // seconds\n readonly player1Archetype: string;\n readonly player2Archetype: string;\n readonly stage: string;\n readonly difficulty?: \"easy\" | \"medium\" | \"hard\" | \"expert\";\n}\n\n/** A discrete event emitted during gameplay for logging and UI updates */\nexport interface GameEvent {\n readonly id: string;\n readonly type: GameEventType;\n readonly timestamp: number;\n readonly playerId?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Event data can contain various types depending on event type\n readonly data: Record<string, any>;\n readonly message?: KoreanText;\n}\n\n/** All event types emitted during a match lifecycle */\nexport enum GameEventType {\n GAME_START = \"game_start\",\n ROUND_START = \"round_start\",\n ROUND_END = \"round_end\",\n MATCH_END = \"match_end\",\n PLAYER_ATTACK = \"player_attack\",\n PLAYER_HIT = \"player_hit\",\n STANCE_CHANGE = \"stance_change\",\n TECHNIQUE_EXECUTE = \"technique_execute\",\n VITAL_POINT_HIT = \"vital_point_hit\",\n STATUS_EFFECT = \"status_effect\",\n PAUSE_TOGGLE = \"pause_toggle\",\n ERROR = \"error\",\n}\n\n/** Runtime state for an active match session */\nexport interface GameSession {\n readonly id: string;\n readonly gameMode: GameMode;\n readonly players: readonly [PlayerState, PlayerState];\n readonly currentRound: number;\n readonly maxRounds: number;\n readonly roundTimeLimit: number;\n readonly timeRemaining: number;\n readonly isPaused: boolean;\n readonly isGameOver: boolean;\n readonly winner: PlayerState | null;\n}\n\n/** Global game rules and balance parameters */\nexport interface GameConfig {\n readonly maxHealth: number;\n readonly maxKi: number;\n readonly maxStamina: number;\n readonly roundDuration: number;\n readonly maxRounds: number;\n readonly difficulty: \"beginner\" | \"intermediate\" | \"expert\" | \"master\";\n readonly enableVitalPoints: boolean;\n readonly enableStatusEffects: boolean;\n readonly allowArchetypeSwitching: boolean;\n}\n\n/** Persistent player data written to save storage */\nexport interface GameSaveData {\n readonly version: string;\n readonly playerId: string;\n readonly playerProgress: {\n readonly archetypeExperience: Record<string, number>;\n readonly unlockedTechniques: readonly string[];\n readonly achievements: readonly string[];\n };\n readonly settings: {\n readonly volume: number;\n readonly difficulty: string;\n readonly controls: Record<string, string>;\n };\n readonly statistics: {\n readonly totalMatches: number;\n readonly wins: number;\n readonly losses: number;\n readonly favoriteArchetype: string;\n };\n}\n"],"mappings":";;AAqCA,IAAY,gBAAL,yBAAA,eAAA;CACL,cAAA,gBAAa;CACb,cAAA,iBAAc;CACd,cAAA,eAAY;CACZ,cAAA,eAAY;CACZ,cAAA,mBAAgB;CAChB,cAAA,gBAAa;CACb,cAAA,mBAAgB;CAChB,cAAA,uBAAoB;CACpB,cAAA,qBAAkB;CAClB,cAAA,mBAAgB;CAChB,cAAA,kBAAe;CACf,cAAA,WAAQ;;KACT"}
|
package/lib/systems/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Barrel exports for systems
|
|
2
|
+
* Barrel exports for the systems module.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all types, classes, and utilities from the combat,
|
|
5
|
+
* vital point, effect, layout, and player subsystems.
|
|
6
|
+
*
|
|
3
7
|
* @module systems
|
|
4
8
|
* @category Game Systems
|
|
5
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,GACT,MAAM,SAAS,CAAC;AAEjB,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
package/lib/systems/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/systems/index.ts"],"sourcesContent":["/**\n * Barrel exports for systems types
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/systems/index.ts"],"sourcesContent":["/**\n * Barrel exports for the systems module.\n *\n * Re-exports all types, classes, and utilities from the combat,\n * vital point, effect, layout, and player subsystems.\n *\n * @module systems\n * @category Game Systems\n */\n\n// Base system interface types\nexport type {\n AISystemConfig,\n AnimationSystemInterface,\n CombatSystemConfig,\n CombatSystemInterface,\n DisplayHitEffect,\n EffectSystem,\n EnvironmentalEffect,\n EventBusInterface,\n GameSystemManager,\n GameSystemState,\n HitEffect,\n InputSystemInterface,\n ParticleEffect,\n PhysicsSystemInterface,\n RenderingSystemInterface,\n StatusEffect,\n SystemConfig,\n SystemEvent,\n SystemPerformance,\n TrigramSystemConfig,\n TrigramSystemInterface,\n VisualEffect,\n VitalPointSystemConfig,\n VitalPointSystemInterface,\n} from \"./types\";\n\n// Export specific system types\nexport type {\n CombatEventData,\n CombatResult,\n CombatStats,\n CombatSystem,\n TrainingCombatResult,\n} from \"./combat\";\n\nexport type {\n AnatomicalRegion,\n DamageResult,\n KoreanTechnique,\n VitalPoint,\n VitalPointEffect,\n VitalPointHitResult,\n VitalPointSystem,\n} from \"./vitalpoint\";\n\nexport type {\n StanceTransition,\n TransitionMetrics,\n TransitionPath,\n TrigramCombatStyle,\n TrigramData,\n TrigramPhilosophy,\n TrigramSystem,\n TrigramTheme,\n TrigramTransitionCost,\n TrigramTransitionRule,\n} from \"./trigram\";\n\n// Re-export system types\nexport type {\n AnimationConfig,\n AnimationState,\n CollisionData,\n PhysicsEntityConfig,\n PhysicsEntityState,\n RenderableConfig,\n Velocity,\n} from \"./types\";\n\nexport * from \"./ai\";\nexport * from \"./bodypart\";\nexport * from \"./breathing\";\nexport * from \"./combat\";\nexport * from \"./combat/FallIntegration\";\nexport * from \"./CombatSystem\";\nexport * from \"./effects\";\nexport * from \"./game\";\nexport * from \"./LayoutSystem\";\nexport * from \"./movement\";\nexport * from \"./player\";\nexport * from \"./trigram\";\nexport * from \"./TrigramSystem\";\nexport * from \"./types\";\nexport * from \"./vitalpoint\";\nexport * from \"./VitalPointSystem\";\n"],"mappings":""}
|
|
@@ -36,7 +36,6 @@ import type { BodyPartHealth } from "../bodypart/types";
|
|
|
36
36
|
*
|
|
37
37
|
* **Korean**: 손상 이동 설정
|
|
38
38
|
*
|
|
39
|
-
* @public
|
|
40
39
|
* @category Movement System
|
|
41
40
|
*/
|
|
42
41
|
export interface InjuryMovementConfig {
|
|
@@ -61,7 +60,6 @@ export interface InjuryMovementConfig {
|
|
|
61
60
|
* Deep partial type for InjuryMovementConfig to support partial overrides.
|
|
62
61
|
* Allows callers to override individual threshold values without providing all.
|
|
63
62
|
*
|
|
64
|
-
* @public
|
|
65
63
|
* @category Movement System
|
|
66
64
|
*/
|
|
67
65
|
export type PartialInjuryMovementConfig = {
|
|
@@ -81,7 +79,6 @@ export declare const DEFAULT_INJURY_MOVEMENT_CONFIG: InjuryMovementConfig;
|
|
|
81
79
|
*
|
|
82
80
|
* **Korean**: 손상 이동 결과
|
|
83
81
|
*
|
|
84
|
-
* @public
|
|
85
82
|
* @category Movement System
|
|
86
83
|
*/
|
|
87
84
|
export interface InjuryMovementResult {
|
|
@@ -131,7 +128,6 @@ export interface InjuryMovementResult {
|
|
|
131
128
|
* console.log(`Status: ${result.statusText.korean} | ${result.statusText.english}`);
|
|
132
129
|
* ```
|
|
133
130
|
*
|
|
134
|
-
* @public
|
|
135
131
|
* @category Movement System
|
|
136
132
|
* @korean 손상기반이동수정자
|
|
137
133
|
*/
|
|
@@ -168,7 +164,6 @@ export declare class InjuryMovementModifier {
|
|
|
168
164
|
* @param painLevel - Current pain level (0-100)
|
|
169
165
|
* @returns Complete movement calculation result
|
|
170
166
|
*
|
|
171
|
-
* @public
|
|
172
167
|
* @korean 이동속도계산
|
|
173
168
|
*/
|
|
174
169
|
calculateMovementSpeed(baseSpeed: number, bodyPartHealth: BodyPartHealth, stance: TrigramStance, painLevel: number): InjuryMovementResult;
|
|
@@ -207,7 +202,6 @@ export declare class InjuryMovementModifier {
|
|
|
207
202
|
* @param stance - Current trigram stance
|
|
208
203
|
* @returns Speed multiplier (0.8-1.25), defaults to 1.0 for unknown stances
|
|
209
204
|
*
|
|
210
|
-
* @public
|
|
211
205
|
*/
|
|
212
206
|
getStanceSpeedModifier(stance: TrigramStance): number;
|
|
213
207
|
/**
|
|
@@ -233,7 +227,6 @@ export declare class InjuryMovementModifier {
|
|
|
233
227
|
* @param bodyPartHealth - Current body part health
|
|
234
228
|
* @returns True if limping animation should play
|
|
235
229
|
*
|
|
236
|
-
* @public
|
|
237
230
|
*/
|
|
238
231
|
shouldLimp(bodyPartHealth: BodyPartHealth): boolean;
|
|
239
232
|
/**
|
|
@@ -246,7 +239,6 @@ export declare class InjuryMovementModifier {
|
|
|
246
239
|
* @param bodyPartHealth - Current body part health
|
|
247
240
|
* @returns True if severe limp (leg health < 30%)
|
|
248
241
|
*
|
|
249
|
-
* @public
|
|
250
242
|
*/
|
|
251
243
|
hasSevereLimp(bodyPartHealth: BodyPartHealth): boolean;
|
|
252
244
|
/**
|
|
@@ -259,7 +251,6 @@ export declare class InjuryMovementModifier {
|
|
|
259
251
|
* @param bodyPartHealth - Current body part health
|
|
260
252
|
* @returns Bilingual injury description
|
|
261
253
|
*
|
|
262
|
-
* @public
|
|
263
254
|
*/
|
|
264
255
|
getInjuryDescription(bodyPartHealth: BodyPartHealth): {
|
|
265
256
|
korean: string;
|
|
@@ -269,7 +260,6 @@ export declare class InjuryMovementModifier {
|
|
|
269
260
|
/**
|
|
270
261
|
* Singleton instance for global access.
|
|
271
262
|
*
|
|
272
|
-
* @public
|
|
273
263
|
*/
|
|
274
264
|
export declare const injuryMovementModifier: InjuryMovementModifier;
|
|
275
265
|
//# sourceMappingURL=InjuryMovementModifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InjuryMovementModifier.d.ts","sourceRoot":"","sources":["../../../src/systems/movement/InjuryMovementModifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD
|
|
1
|
+
{"version":3,"file":"InjuryMovementModifier.d.ts","sourceRoot":"","sources":["../../../src/systems/movement/InjuryMovementModifier.ts"],"names":[],"mappings":"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"}
|