blacktrigram 0.7.47 → 0.7.49
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/App2.js.map +1 -1
- package/lib/audio/AudioAssetLoader.js.map +1 -1
- package/lib/audio/AudioAssetRegistry.js.map +1 -1
- package/lib/audio/AudioCache.js.map +1 -1
- package/lib/audio/AudioManager.js.map +1 -1
- package/lib/audio/AudioMonitor.js.map +1 -1
- package/lib/audio/AudioPool.js.map +1 -1
- package/lib/audio/AudioProvider.js.map +1 -1
- package/lib/audio/AudioUtils.js.map +1 -1
- package/lib/audio/BoneImpactAudioMap.js.map +1 -1
- package/lib/audio/VariantSelector.js.map +1 -1
- package/lib/audio/types.js.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.js +29 -25
- package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
- package/lib/components/screens/combat/components/controls/CombatButtons.js.map +1 -1
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.js.map +1 -1
- package/lib/components/screens/combat/components/controls/ControlsGuide.js.map +1 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenuButton.js.map +1 -1
- package/lib/components/screens/combat/components/controls/QuickSettings.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
- package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js.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 +2 -2
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js +1 -1
- package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.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 +2 -1
- package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js.map +1 -1
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -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 +4 -2
- package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
- package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
- package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.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 +11 -5
- package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
- package/lib/components/screens/controls/ControlsScreen3D.js +1 -1
- package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/Key3D.js.map +1 -1
- package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
- package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
- package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
- package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.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.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js +1 -1
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.js +3 -11
- package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
- package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/VitalPointMarker3D.js.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 +2 -2
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
- package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts +1 -0
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.js +6 -4
- 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 +11 -5
- package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
- package/lib/components/shared/base/BaseButton.js.map +1 -1
- package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
- package/lib/components/shared/base/BasePanel.js.map +1 -1
- package/lib/components/shared/base/BaseText.js.map +1 -1
- package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
- package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
- package/lib/components/shared/mobile/HapticController.js.map +1 -1
- package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
- package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
- package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
- package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
- package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
- package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
- package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
- package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
- package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
- package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
- package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
- package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
- package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
- package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
- package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
- package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js.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 +7 -5
- package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
- package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
- package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
- package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
- package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
- package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
- package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
- package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
- package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
- package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
- package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
- package/lib/components/shared/three/ui/MenuList.js.map +1 -1
- package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
- package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
- package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
- package/lib/components/shared/ui/BackButton.js.map +1 -1
- package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
- package/lib/components/shared/ui/CombatTimer.js.map +1 -1
- package/lib/components/shared/ui/ErrorModal.js.map +1 -1
- package/lib/components/shared/ui/LoadingState.js.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/VitalPointOverlayControlsPure.js.map +1 -1
- package/lib/components/shared/ui/VolumeControl.js.map +1 -1
- package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
- package/lib/constants/bodyDimensions.js.map +1 -1
- package/lib/constants/bodyRenderingConstants.js.map +1 -1
- package/lib/data/archetypeClothing.js.map +1 -1
- package/lib/data/archetypePhysicalAttributes.js.map +1 -1
- package/lib/data/techniqueMappings.js.map +1 -1
- package/lib/data/techniques.js.map +1 -1
- package/lib/hooks/useActionFeedback.js.map +1 -1
- package/lib/hooks/useBalanceAnimations.js.map +1 -1
- package/lib/hooks/useCombatTimer.js.map +1 -1
- package/lib/hooks/useDebounce.js.map +1 -1
- package/lib/hooks/useHUDLayout.d.ts.map +1 -1
- package/lib/hooks/useHUDLayout.js +3 -2
- package/lib/hooks/useHUDLayout.js.map +1 -1
- package/lib/hooks/useHandPoseTransitions.js.map +1 -1
- package/lib/hooks/useKeyboardControls.js.map +1 -1
- package/lib/hooks/useMatchCountdown.js.map +1 -1
- package/lib/hooks/useMuscleActivation.js.map +1 -1
- package/lib/hooks/usePauseMenu.js.map +1 -1
- package/lib/hooks/usePlayerAnimation.js.map +1 -1
- package/lib/hooks/useResponsiveLayout.js.map +1 -1
- package/lib/hooks/useRoundTransition.js.map +1 -1
- package/lib/hooks/useSkeletalAnimation.d.ts.map +1 -1
- package/lib/hooks/useSkeletalAnimation.js +1 -1
- package/lib/hooks/useSkeletalAnimation.js.map +1 -1
- package/lib/hooks/useTechniqueSelection.js.map +1 -1
- package/lib/hooks/useThrottle.js.map +1 -1
- package/lib/hooks/useTouchControls.js.map +1 -1
- package/lib/hooks/useWebGLContextLossHandler.js.map +1 -1
- package/lib/hooks/useWindowSize.js.map +1 -1
- package/lib/systems/CombatSystem.js.map +1 -1
- package/lib/systems/EffectCalculator.js.map +1 -1
- package/lib/systems/LayoutSystem.js.map +1 -1
- package/lib/systems/PlayerEffectManager.js.map +1 -1
- package/lib/systems/ResponsiveScaling.js.map +1 -1
- package/lib/systems/TrigramSystem.js.map +1 -1
- package/lib/systems/VitalPointSystem.js.map +1 -1
- package/lib/systems/ai/AIPersonality.js.map +1 -1
- package/lib/systems/ai/AdaptiveDifficulty.js +16 -16
- package/lib/systems/ai/AdaptiveDifficulty.js.map +1 -1
- package/lib/systems/ai/ArchetypeEnforcer.js.map +1 -1
- package/lib/systems/ai/ComboSystem.js.map +1 -1
- package/lib/systems/ai/DecisionTree.js.map +1 -1
- package/lib/systems/ai/TrainingAI.js.map +1 -1
- package/lib/systems/ai/types.js.map +1 -1
- package/lib/systems/animation/builders/AnimationBuilder.js.map +1 -1
- package/lib/systems/animation/builders/HandPoseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/HandPoses.js.map +1 -1
- package/lib/systems/animation/builders/KeyframeConfig.js.map +1 -1
- package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts +6 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts.map +1 -1
- package/lib/systems/animation/builders/KickPhaseApplicator.js +16 -9
- package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/KoreanGuardPositions.d.ts +4 -4
- package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts.map +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js +5 -5
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -1
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts +112 -71
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts.map +1 -1
- package/lib/systems/animation/builders/MartialArtsConstants.js +113 -72
- package/lib/systems/animation/builders/MartialArtsConstants.js.map +1 -1
- package/lib/systems/animation/builders/MartialPoseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/PunchPhaseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
- package/lib/systems/animation/builders/TrigramGuardApplicator.js.map +1 -1
- package/lib/systems/animation/catalogs/AttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/BasicAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/ComboAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/DarkOpsAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/DefensiveAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GamStanceAnimations.js +21 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js +34 -2
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GanStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GeonStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts +9 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts.map +1 -1
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js +288 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/JinStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/KickAnimations.d.ts +2 -2
- package/lib/systems/animation/catalogs/KickAnimations.js +2 -2
- package/lib/systems/animation/catalogs/KickAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/LiStanceAnimations.js +14 -1
- package/lib/systems/animation/catalogs/LiStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/MovementAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.d.ts +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.js +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SonStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceAttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts +6 -6
- package/lib/systems/animation/catalogs/StanceGuardPoses.js +36 -36
- package/lib/systems/animation/catalogs/StanceGuardPoses.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceIdleAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/TaeStanceAnimations.js.map +1 -1
- package/lib/systems/animation/constants/AnatomicalLimits.js.map +1 -1
- package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
- package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -1
- package/lib/systems/animation/core/AnimationPriority.js +15 -15
- package/lib/systems/animation/core/AnimationPriority.js.map +1 -1
- package/lib/systems/animation/core/AnimationRegistry.d.ts +30 -0
- package/lib/systems/animation/core/AnimationRegistry.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationRegistry.js +74 -12
- package/lib/systems/animation/core/AnimationRegistry.js.map +1 -1
- package/lib/systems/animation/core/AnimationStateMachine.js +16 -16
- package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.js +34 -0
- package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
- package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapping.js.map +1 -1
- package/lib/systems/animation/core/index.d.ts +1 -1
- package/lib/systems/animation/core/index.d.ts.map +1 -1
- package/lib/systems/animation/core/types.d.ts +24 -0
- package/lib/systems/animation/core/types.d.ts.map +1 -1
- package/lib/systems/animation/core/types.js +27 -11
- package/lib/systems/animation/core/types.js.map +1 -1
- package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
- package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
- package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
- package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
- package/lib/systems/animation/systems/MuscleActivation.js.map +1 -1
- package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
- package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
- package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
- package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
- package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
- package/lib/systems/bodypart/types.js.map +1 -1
- package/lib/systems/breathing/BreathingDisruptionSystem.js +19 -19
- package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
- package/lib/systems/breathing/feedback.js.map +1 -1
- package/lib/systems/breathing/integration.js.map +1 -1
- package/lib/systems/combat/BalanceSystem.js +19 -19
- package/lib/systems/combat/BalanceSystem.js.map +1 -1
- package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
- package/lib/systems/combat/CombatStateSystem.js +17 -17
- package/lib/systems/combat/CombatStateSystem.js.map +1 -1
- package/lib/systems/combat/ConsciousnessSystem.js +24 -24
- package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
- package/lib/systems/combat/FallIntegration.js.map +1 -1
- package/lib/systems/combat/GrappleSystem.js.map +1 -1
- package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
- package/lib/systems/combat/PainResponseSystem.js +21 -21
- package/lib/systems/combat/PainResponseSystem.js.map +1 -1
- package/lib/systems/combat/TrainingCombatSystem.js.map +1 -1
- package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
- package/lib/systems/combat/typeGuards.js.map +1 -1
- package/lib/systems/effects.js.map +1 -1
- package/lib/systems/game.js.map +1 -1
- package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
- package/lib/systems/movement/helpers/AccelerationUpdater.js.map +1 -1
- package/lib/systems/movement/helpers/accelerationUtils.js.map +1 -1
- package/lib/systems/movement/integration.js.map +1 -1
- package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
- package/lib/systems/physics/CollisionDetection.js.map +1 -1
- package/lib/systems/physics/CoordinateMapper.js.map +1 -1
- package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
- package/lib/systems/physics/MovementPhysics.js.map +1 -1
- package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
- package/lib/systems/physics/SpeedModifierSystem.js +6 -6
- package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
- package/lib/systems/trigram/KoreanCulture.js.map +1 -1
- package/lib/systems/trigram/KoreanTechniques.js.map +1 -1
- package/lib/systems/trigram/StanceManager.js.map +1 -1
- package/lib/systems/trigram/TransitionCalculator.js.map +1 -1
- package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
- package/lib/systems/trigram/techniques/DarkOpsTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GamTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GanTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GeonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/JinTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/LiTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/SonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/TaeTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/TechniqueConfig.js.map +1 -1
- package/lib/systems/trigram/techniques/index.js.map +1 -1
- package/lib/systems/trigram/types/GonTechniqueExtensions.js.map +1 -1
- package/lib/systems/trigram/types.js.map +1 -1
- package/lib/systems/types.js.map +1 -1
- package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
- package/lib/systems/vitalpoint/HitDetection.js.map +1 -1
- package/lib/systems/vitalpoint/KoreanAnatomy.js.map +1 -1
- package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.js.map +1 -1
- package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
- package/lib/types/AccessibilityTypes.js.map +1 -1
- package/lib/types/LayoutTypes.js.map +1 -1
- package/lib/types/PhysicsTypes.js.map +1 -1
- package/lib/types/common.js.map +1 -1
- package/lib/types/constants/animations.js.map +1 -1
- package/lib/types/constants/colors.js.map +1 -1
- package/lib/types/constants/designSystem.js.map +1 -1
- package/lib/types/constants/index.js.map +1 -1
- package/lib/types/constants/layout.d.ts +21 -0
- package/lib/types/constants/layout.d.ts.map +1 -1
- package/lib/types/constants/layout.js +22 -1
- package/lib/types/constants/layout.js.map +1 -1
- package/lib/types/constants/performance.js.map +1 -1
- package/lib/types/constants/typography.js.map +1 -1
- package/lib/types/constants/ui.js.map +1 -1
- package/lib/types/facial.js +19 -19
- package/lib/types/facial.js.map +1 -1
- package/lib/types/hand-animation.js.map +1 -1
- package/lib/types/injury.js.map +1 -1
- package/lib/types/muscle.js.map +1 -1
- package/lib/types/physics.js.map +1 -1
- package/lib/types/physicsConstants.js.map +1 -1
- package/lib/types/player-visual.d.ts +1 -1
- package/lib/types/player-visual.d.ts.map +1 -1
- package/lib/types/skeletal.js.map +1 -1
- package/lib/types/techniqueId.js.map +1 -1
- package/lib/utils/accessibility.js.map +1 -1
- package/lib/utils/arenaWorldDimensions.js.map +1 -1
- package/lib/utils/assetConfig.js.map +1 -1
- package/lib/utils/characterScaling.js.map +1 -1
- package/lib/utils/colorHelpers.js.map +1 -1
- package/lib/utils/colorUtils.js.map +1 -1
- package/lib/utils/combatReadiness.js.map +1 -1
- package/lib/utils/controlMapping.js.map +1 -1
- package/lib/utils/deviceDetection.js +6 -7
- package/lib/utils/deviceDetection.js.map +1 -1
- package/lib/utils/effectUtils.js.map +1 -1
- package/lib/utils/fabricTextures.js.map +1 -1
- package/lib/utils/hapticFeedback.js.map +1 -1
- package/lib/utils/haptics.js.map +1 -1
- package/lib/utils/htmlOverlayHelpers.js.map +1 -1
- package/lib/utils/inputSystem.js.map +1 -1
- package/lib/utils/koreanThemeHelpers.js.map +1 -1
- package/lib/utils/math.js.map +1 -1
- package/lib/utils/mobileLayoutHelpers.js.map +1 -1
- package/lib/utils/mobileUIUtils.js.map +1 -1
- package/lib/utils/performance/PerformanceMonitor.js.map +1 -1
- package/lib/utils/performance/PerformanceOverlay3D.js.map +1 -1
- package/lib/utils/performance/usePerformanceMonitor.js.map +1 -1
- package/lib/utils/performanceOptimization.js.map +1 -1
- package/lib/utils/player3DHelpers.js.map +1 -1
- package/lib/utils/playerUtils.js.map +1 -1
- package/lib/utils/responsiveLayout.js.map +1 -1
- package/lib/utils/responsiveLayoutHelpers.d.ts +7 -0
- package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
- package/lib/utils/responsiveLayoutHelpers.js +16 -2
- package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
- package/lib/utils/responsiveOrientationConstants.js.map +1 -1
- package/lib/utils/safeAreaUtils.js.map +1 -1
- package/lib/utils/sharedPhysicsConfig.js.map +1 -1
- package/lib/utils/skeletonScaling.js.map +1 -1
- package/lib/utils/stanceHelpers.js.map +1 -1
- package/lib/utils/threeObjectPool.js.map +1 -1
- package/lib/utils/visualEffects.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/BasicAnimations.ts"],"sourcesContent":["/**\n * Basic Animations Module\n *\n * Core locomotion and state animations: Idle, Run, Walk, Fall\n * These are the foundational animations for character states.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 기본 애니메이션 모듈 - 대기, 달리기, 걷기, 낙법\n *\n * @module systems/animation/BasicAnimations\n * @korean 기본애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// DEFAULT STANCE WIDTH FOR BASIC ANIMATIONS\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Default shoulder width for basic animations (non-stance-specific)\n * Uses a neutral balanced width (1.1x) for general idle/movement\n * @korean 기본어깨너비\n */\nconst DEFAULT_SHOULDER_WIDTH_CM = 46;\nconst DEFAULT_STANCE_WIDTH_MULTIPLIER = 1.1; // Balanced like Li (Fire) stance\n\n// ═══════════════════════════════════════════════════════════════════════════\n// IDLE ANIMATIONS (대기 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Idle Breathing - 대기호흡\n *\n * Subtle breathing animation while standing ready.\n * Looping idle state with slight body movement.\n * Uses neutral balanced stance width (1.1x shoulder width).\n *\n * @korean 대기호흡애니메이션\n */\nexport const IDLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"idle\", \"대기\")\n .asIdle(2.0, true)\n // Frame 0: Neutral resting pose (시작 자세)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0.04, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.18, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.04, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.12, 0, -0.22)\n .rotate(BoneName.SHOULDER_R, 0.12, 0, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.45)\n .rotate(BoneName.HEAD, -0.02, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 1: Inhale rising — chest lifts, slight weight shift right (흡기 상승)\n .at(0.5, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.05, 0, 0.015)\n .rotate(BoneName.KNEE_L, -0.16, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0, 0.01)\n .rotate(BoneName.SPINE_UPPER, 0.09, 0, 0.01)\n .rotate(BoneName.SHOULDER_L, 0.14, 0, -0.24)\n .rotate(BoneName.SHOULDER_R, 0.14, 0, 0.24)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.48)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.48)\n .rotate(BoneName.HEAD, -0.01, 0.02, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 2: Peak inhale — maximum chest expansion (최대 흡기)\n .at(1.0, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.05, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.12, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.16, 0, -0.26)\n .rotate(BoneName.SHOULDER_R, 0.16, 0, 0.26)\n .rotate(BoneName.ELBOW_L, 0.02, 0, -0.44)\n .rotate(BoneName.ELBOW_R, 0.02, 0, 0.44)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 3: Exhale settling — weight shifts left, body lowers (호기 하강)\n .at(1.5, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.05, 0, -0.015)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.16, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, -0.01)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, -0.01)\n .rotate(BoneName.SHOULDER_L, 0.13, 0, -0.23)\n .rotate(BoneName.SHOULDER_R, 0.13, 0, 0.23)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.46)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.46)\n .rotate(BoneName.HEAD, -0.01, -0.02, 0)\n .position(BoneName.PELVIS, 0, 0.01, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 4: Return to neutral (중립 복귀)\n .at(2.0, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.04, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.18, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.04, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.12, 0, -0.22)\n .rotate(BoneName.SHOULDER_R, 0.12, 0, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.45)\n .rotate(BoneName.HEAD, -0.02, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// RUN ANIMATIONS (달리기 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Run Cycle - 달리기\n *\n * Full running gait cycle with arm swing and leg drive.\n * Looping animation for sprint movement.\n *\n * @korean 달리기애니메이션\n */\nexport const RUN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"run\", \"달리기\")\n .asMovement(0.5, true)\n // Frame 0: Right foot push-off, left leg driving forward (오른발 추진, 왼발 전진)\n .at(0.0, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, 0.1, 0.03)\n .rotate(BoneName.HIP_L, -0.55, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0.25, 0, 0)\n .rotate(BoneName.HIP_R, 0.65, 0, 0)\n .rotate(BoneName.KNEE_R, -1.0, 0, 0)\n .rotate(BoneName.FOOT_R, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.55, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, -0.65, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, -0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.06, 0)\n .rotate(BoneName.HEAD, -0.06, 0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 1: Flight phase — both feet off ground (비행 단계)\n .at(0.125, \"linear\")\n .rotate(BoneName.PELVIS, 0.14, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.9, 0, 0)\n .rotate(BoneName.FOOT_L, 0.05, 0, 0)\n .rotate(BoneName.HIP_R, 0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.25, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.7)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, 0)\n .rotate(BoneName.HEAD, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.07, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Left foot push-off, right leg driving (mirror of frame 0)\n .at(0.25, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, -0.1, -0.03)\n .rotate(BoneName.HIP_R, -0.55, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, 0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.65, 0, 0)\n .rotate(BoneName.KNEE_L, -1.0, 0, 0)\n .rotate(BoneName.FOOT_L, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.55, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.SHOULDER_L, -0.65, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, 0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.06, 0)\n .rotate(BoneName.HEAD, -0.06, -0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 3: Flight phase — mirror (비행 단계 반전)\n .at(0.375, \"linear\")\n .rotate(BoneName.PELVIS, 0.14, 0, 0)\n .rotate(BoneName.HIP_R, 0.05, 0, 0)\n .rotate(BoneName.KNEE_R, -0.9, 0, 0)\n .rotate(BoneName.FOOT_R, 0.05, 0, 0)\n .rotate(BoneName.HIP_L, 0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.5, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.25, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.8)\n .rotate(BoneName.SHOULDER_L, -0.35, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.7)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, 0)\n .rotate(BoneName.HEAD, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.07, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Loop back to right foot push-off (순환)\n .at(0.5, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, 0.1, 0.03)\n .rotate(BoneName.HIP_L, -0.55, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0.25, 0, 0)\n .rotate(BoneName.HIP_R, 0.65, 0, 0)\n .rotate(BoneName.KNEE_R, -1.0, 0, 0)\n .rotate(BoneName.FOOT_R, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.55, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, -0.65, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, -0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.06, 0)\n .rotate(BoneName.HEAD, -0.06, 0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Walk Cycle - 걷기\n *\n * Full walking gait cycle with natural arm swing.\n * Looping animation for walking movement.\n * Uses MartialArtsAnimationBuilder (migrated from AnimationBuilder).\n *\n * @korean 걷기애니메이션\n */\nexport const WALK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"walk\", \"걷기\")\n .asMovement(0.8, true)\n // Frame 0: Right foot contact, left leg trailing (오른발 접지, 왼발 뒤쪽)\n .at(0.0, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, 0.08, 0.02)\n .rotate(BoneName.HIP_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, -0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, -0.04, 0)\n .rotate(BoneName.HEAD, 0, 0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 1: Right foot passing through — highest point (오른발 통과 단계)\n .at(0.2, \"linear\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.6, 0, 0)\n .rotate(BoneName.FOOT_L, 0.1, 0, 0)\n .rotate(BoneName.HIP_R, 0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.55, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.1, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.35)\n .rotate(BoneName.SHOULDER_R, -0.15, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.04, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Left foot contact, right leg trailing (왼발 접지, 오른발 뒤쪽)\n .at(0.4, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, -0.08, -0.02)\n .rotate(BoneName.HIP_R, -0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.HIP_L, 0.5, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.4, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.5)\n .rotate(BoneName.SHOULDER_L, -0.5, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0.04, 0)\n .rotate(BoneName.HEAD, 0, -0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 3: Left foot passing through — highest point (왼발 통과 단계)\n .at(0.6, \"linear\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.HIP_R, 0.05, 0, 0)\n .rotate(BoneName.KNEE_R, -0.6, 0, 0)\n .rotate(BoneName.FOOT_R, 0.1, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.55, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.1, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.35)\n .rotate(BoneName.SHOULDER_L, -0.15, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.4)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.04, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Loop back to right foot contact (순환)\n .at(0.8, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, 0.08, 0.02)\n .rotate(BoneName.HIP_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, -0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, -0.04, 0)\n .rotate(BoneName.HEAD, 0, 0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FALL ANIMATIONS (낙법 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Fall Forward - 전방낙법\n *\n * Forward fall animation (전방낙법 - Jeonbang Nakbeop).\n * Hands brace, body rotates to prone position.\n *\n * @korean 전방낙법애니메이션\n */\nexport const FALL_FORWARD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_forward\", \"전방낙법\")\n .asMovement(0.4, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0.3, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.2, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0.5, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.4, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.5, 0, 0)\n .rotate(BoneName.KNEE_L, -1.2, 0, 0)\n .rotate(BoneName.KNEE_R, -1.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.8, 0, -0.3)\n .rotate(BoneName.SHOULDER_R, 0.8, 0, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .position(BoneName.PELVIS, 0, -0.2, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"ease-in\")\n .rotate(BoneName.PELVIS, 0.8, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.6, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.7, 0, 0)\n .rotate(BoneName.SHOULDER_L, 1.2, 0, -0.2)\n .rotate(BoneName.SHOULDER_R, 1.2, 0, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.2)\n .rotate(BoneName.HIP_L, 0.3, 0, 0)\n .rotate(BoneName.HIP_R, 0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.4, 0.2)\n .done<MartialArtsAnimationBuilder>()\n .at(0.4, \"ease-out\")\n .rotate(BoneName.PELVIS, 1.57, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.1, 0, 0)\n .rotate(BoneName.HEAD, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, 0, 0, 0)\n .rotate(BoneName.KNEE_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.8, 0.3)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Backward - 후방낙법\n *\n * Backward fall animation (후방낙법 - Hubang Nakbeop).\n * Sit down, back impact, arms slap ground.\n *\n * @korean 후방낙법애니메이션\n */\nexport const FALL_BACKWARD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_backward\", \"후방낙법\")\n .asMovement(0.5, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.12, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.4, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.3, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.4, 0, 0)\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.HIP_L, 0.5, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .position(BoneName.PELVIS, 0, -0.15, -0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.6, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.4, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.5, 0, 0)\n .rotate(BoneName.HIP_L, 0.8, 0, 0)\n .rotate(BoneName.HIP_R, 0.8, 0, 0)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.4, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.4, 0, 0.5)\n .position(BoneName.PELVIS, 0, -0.4, -0.15)\n .done<MartialArtsAnimationBuilder>()\n .at(0.38, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.9, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.6, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.7, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.6, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.6, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.HEAD, 0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.5, -0.2)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-out\")\n .rotate(BoneName.PELVIS, -1.57, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.1, 0, 0)\n .rotate(BoneName.HEAD, 0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.2)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.2)\n .rotate(BoneName.ELBOW_L, 0, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.7, -0.3)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Side Left - 좌측낙법\n *\n * Side fall to the left (측방낙법 - Cheukbang Nakbeop).\n * Shoulder/hip impact, arm slaps ground.\n *\n * @korean 좌측낙법애니메이션\n */\nexport const FALL_SIDE_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_side_left\", \"좌측낙법\")\n .asMovement(0.45, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, 0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.3)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 0.5)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.5)\n .rotate(BoneName.HIP_L, 0.3, 0, 0.3)\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, -0.5)\n .position(BoneName.PELVIS, -0.1, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.22, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 1.0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.6)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.8)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.9)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.4)\n .rotate(BoneName.HIP_L, 0.4, 0, 0.5)\n .rotate(BoneName.HIP_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, -0.2, -0.3, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.33, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 1.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 1.0)\n .rotate(BoneName.SHOULDER_L, 0.2, 0, -1.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.2)\n .rotate(BoneName.HEAD, 0, 0, 0.3)\n .position(BoneName.PELVIS, -0.3, -0.5, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, 1.57, 1.57)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.3)\n .rotate(BoneName.HEAD, 0, 0, 0.2)\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.4)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.2)\n .rotate(BoneName.HIP_L, 0.2, 0, 0)\n .rotate(BoneName.HIP_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .position(BoneName.PELVIS, -0.4, -0.7, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Side Right - 우측낙법\n *\n * Side fall to the right (측방낙법 - Cheukbang Nakbeop).\n * Mirror of left side fall.\n *\n * @korean 우측낙법애니메이션\n */\nexport const FALL_SIDE_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_side_right\", \"우측낙법\")\n .asMovement(0.45, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, -0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.3)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -0.5)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.5)\n .rotate(BoneName.HIP_R, 0.3, 0, -0.3)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.5)\n .position(BoneName.PELVIS, 0.1, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.22, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -1.0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.6)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.9)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.HIP_R, 0.4, 0, -0.5)\n .rotate(BoneName.HIP_L, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0.2, -0.3, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.33, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -1.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, 0.2, 0, 1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.2)\n .rotate(BoneName.HEAD, 0, 0, -0.3)\n .position(BoneName.PELVIS, 0.3, -0.5, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -1.57, -1.57)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.3)\n .rotate(BoneName.HEAD, 0, 0, -0.2)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.4)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.2)\n .rotate(BoneName.HIP_R, 0.2, 0, 0)\n .rotate(BoneName.HIP_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.5, 0, 0)\n .position(BoneName.PELVIS, 0.4, -0.7, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT BASIC ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all basic animations for easy access\n * 기본 애니메이션 맵\n */\nexport const BASIC_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map(\n [\n // Idle\n [\"idle\", IDLE_ANIMATION],\n\n // Locomotion\n [\"walk\", WALK_ANIMATION],\n [\"run\", RUN_ANIMATION],\n\n // Falls (낙법)\n [\"fall_forward\", FALL_FORWARD_ANIMATION],\n [\"fall_backward\", FALL_BACKWARD_ANIMATION],\n [\"fall_side_left\", FALL_SIDE_LEFT_ANIMATION],\n [\"fall_side_right\", FALL_SIDE_RIGHT_ANIMATION],\n ],\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BasicAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/BasicAnimations.ts"],"sourcesContent":["/**\n * Basic Animations Module\n *\n * Core locomotion and state animations: Idle, Run, Walk, Fall\n * These are the foundational animations for character states.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 기본 애니메이션 모듈 - 대기, 달리기, 걷기, 낙법\n *\n * @module systems/animation/BasicAnimations\n * @korean 기본애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// DEFAULT STANCE WIDTH FOR BASIC ANIMATIONS\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Default shoulder width for basic animations (non-stance-specific)\n * Uses a neutral balanced width (1.1x) for general idle/movement\n * @korean 기본어깨너비\n */\nconst DEFAULT_SHOULDER_WIDTH_CM = 46;\nconst DEFAULT_STANCE_WIDTH_MULTIPLIER = 1.1; // Balanced like Li (Fire) stance\n\n// ═══════════════════════════════════════════════════════════════════════════\n// IDLE ANIMATIONS (대기 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Idle Breathing - 대기호흡\n *\n * Subtle breathing animation while standing ready.\n * Looping idle state with slight body movement.\n * Uses neutral balanced stance width (1.1x shoulder width).\n *\n * @korean 대기호흡애니메이션\n */\nexport const IDLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"idle\", \"대기\")\n .asIdle(2.0, true)\n // Frame 0: Neutral resting pose (시작 자세)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0.04, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.18, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.04, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.12, 0, -0.22)\n .rotate(BoneName.SHOULDER_R, 0.12, 0, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.45)\n .rotate(BoneName.HEAD, -0.02, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 1: Inhale rising — chest lifts, slight weight shift right (흡기 상승)\n .at(0.5, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.05, 0, 0.015)\n .rotate(BoneName.KNEE_L, -0.16, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0, 0.01)\n .rotate(BoneName.SPINE_UPPER, 0.09, 0, 0.01)\n .rotate(BoneName.SHOULDER_L, 0.14, 0, -0.24)\n .rotate(BoneName.SHOULDER_R, 0.14, 0, 0.24)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.48)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.48)\n .rotate(BoneName.HEAD, -0.01, 0.02, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 2: Peak inhale — maximum chest expansion (최대 흡기)\n .at(1.0, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.05, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.12, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.16, 0, -0.26)\n .rotate(BoneName.SHOULDER_R, 0.16, 0, 0.26)\n .rotate(BoneName.ELBOW_L, 0.02, 0, -0.44)\n .rotate(BoneName.ELBOW_R, 0.02, 0, 0.44)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 3: Exhale settling — weight shifts left, body lowers (호기 하강)\n .at(1.5, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.05, 0, -0.015)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.16, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, -0.01)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, -0.01)\n .rotate(BoneName.SHOULDER_L, 0.13, 0, -0.23)\n .rotate(BoneName.SHOULDER_R, 0.13, 0, 0.23)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.46)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.46)\n .rotate(BoneName.HEAD, -0.01, -0.02, 0)\n .position(BoneName.PELVIS, 0, 0.01, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n // Frame 4: Return to neutral (중립 복귀)\n .at(2.0, \"ease-in-out\")\n .rotate(BoneName.PELVIS, 0.04, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.18, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.04, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.12, 0, -0.22)\n .rotate(BoneName.SHOULDER_R, 0.12, 0, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.45)\n .rotate(BoneName.HEAD, -0.02, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// RUN ANIMATIONS (달리기 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Run Cycle - 달리기\n *\n * Full running gait cycle with arm swing and leg drive.\n * Looping animation for sprint movement.\n *\n * @korean 달리기애니메이션\n */\nexport const RUN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"run\", \"달리기\")\n .asMovement(0.5, true)\n // Frame 0: Right foot push-off, left leg driving forward (오른발 추진, 왼발 전진)\n .at(0.0, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, 0.1, 0.03)\n .rotate(BoneName.HIP_L, -0.55, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0.25, 0, 0)\n .rotate(BoneName.HIP_R, 0.65, 0, 0)\n .rotate(BoneName.KNEE_R, -1.0, 0, 0)\n .rotate(BoneName.FOOT_R, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.55, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, -0.65, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, -0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.06, 0)\n .rotate(BoneName.HEAD, -0.06, 0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 1: Flight phase — both feet off ground (비행 단계)\n .at(0.125, \"linear\")\n .rotate(BoneName.PELVIS, 0.14, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.9, 0, 0)\n .rotate(BoneName.FOOT_L, 0.05, 0, 0)\n .rotate(BoneName.HIP_R, 0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.25, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.7)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, 0)\n .rotate(BoneName.HEAD, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.07, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Left foot push-off, right leg driving (mirror of frame 0)\n .at(0.25, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, -0.1, -0.03)\n .rotate(BoneName.HIP_R, -0.55, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, 0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.65, 0, 0)\n .rotate(BoneName.KNEE_L, -1.0, 0, 0)\n .rotate(BoneName.FOOT_L, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.55, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.SHOULDER_L, -0.65, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, 0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.06, 0)\n .rotate(BoneName.HEAD, -0.06, -0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 3: Flight phase — mirror (비행 단계 반전)\n .at(0.375, \"linear\")\n .rotate(BoneName.PELVIS, 0.14, 0, 0)\n .rotate(BoneName.HIP_R, 0.05, 0, 0)\n .rotate(BoneName.KNEE_R, -0.9, 0, 0)\n .rotate(BoneName.FOOT_R, 0.05, 0, 0)\n .rotate(BoneName.HIP_L, 0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.5, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.25, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.8)\n .rotate(BoneName.SHOULDER_L, -0.35, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.7)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.06, 0, 0)\n .rotate(BoneName.HEAD, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.07, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Loop back to right foot push-off (순환)\n .at(0.5, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.18, 0.1, 0.03)\n .rotate(BoneName.HIP_L, -0.55, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0.25, 0, 0)\n .rotate(BoneName.HIP_R, 0.65, 0, 0)\n .rotate(BoneName.KNEE_R, -1.0, 0, 0)\n .rotate(BoneName.FOOT_R, -0.45, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.55, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, -0.65, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6)\n .rotate(BoneName.SPINE_LOWER, 0.12, -0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.06, 0)\n .rotate(BoneName.HEAD, -0.06, 0.04, 0)\n .position(BoneName.PELVIS, 0, 0.035, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Walk Cycle - 걷기\n *\n * Full walking gait cycle with natural arm swing.\n * Looping animation for walking movement.\n * Uses MartialArtsAnimationBuilder (migrated from AnimationBuilder).\n *\n * @korean 걷기애니메이션\n */\nexport const WALK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"walk\", \"걷기\")\n .asMovement(0.8, true)\n // Frame 0: Right foot contact, left leg trailing (오른발 접지, 왼발 뒤쪽)\n .at(0.0, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, 0.08, 0.02)\n .rotate(BoneName.HIP_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, -0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, -0.04, 0)\n .rotate(BoneName.HEAD, 0, 0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 1: Right foot passing through — highest point (오른발 통과 단계)\n .at(0.2, \"linear\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.6, 0, 0)\n .rotate(BoneName.FOOT_L, 0.1, 0, 0)\n .rotate(BoneName.HIP_R, 0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.55, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.1, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.35)\n .rotate(BoneName.SHOULDER_R, -0.15, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.04, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Left foot contact, right leg trailing (왼발 접지, 오른발 뒤쪽)\n .at(0.4, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, -0.08, -0.02)\n .rotate(BoneName.HIP_R, -0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, 0.15, 0, 0)\n .rotate(BoneName.HIP_L, 0.5, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.4, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.5)\n .rotate(BoneName.SHOULDER_L, -0.5, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0.04, 0)\n .rotate(BoneName.HEAD, 0, -0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 3: Left foot passing through — highest point (왼발 통과 단계)\n .at(0.6, \"linear\")\n .rotate(BoneName.PELVIS, 0.06, 0, 0)\n .rotate(BoneName.HIP_R, 0.05, 0, 0)\n .rotate(BoneName.KNEE_R, -0.6, 0, 0)\n .rotate(BoneName.FOOT_R, 0.1, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.55, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.1, 0, 0.08)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.35)\n .rotate(BoneName.SHOULDER_L, -0.15, 0, -0.08)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.4)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.04, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Loop back to right foot contact (순환)\n .at(0.8, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.12, 0.08, 0.02)\n .rotate(BoneName.HIP_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0.15, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.55)\n .rotate(BoneName.SPINE_LOWER, 0.04, -0.06, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, -0.04, 0)\n .rotate(BoneName.HEAD, 0, 0.03, 0)\n .position(BoneName.PELVIS, 0, 0.025, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FALL ANIMATIONS (낙법 애니메이션)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Fall Forward - 전방낙법\n *\n * Forward fall animation (전방낙법 - Jeonbang Nakbeop).\n * Hands brace, body rotates to prone position.\n *\n * @korean 전방낙법애니메이션\n */\nexport const FALL_FORWARD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_forward\", \"전방낙법\")\n .asMovement(0.4, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0.3, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.2, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0.5, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.4, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.5, 0, 0)\n .rotate(BoneName.KNEE_L, -1.2, 0, 0)\n .rotate(BoneName.KNEE_R, -1.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.8, 0, -0.3)\n .rotate(BoneName.SHOULDER_R, 0.8, 0, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .position(BoneName.PELVIS, 0, -0.2, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"ease-in\")\n .rotate(BoneName.PELVIS, 0.8, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.6, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.7, 0, 0)\n .rotate(BoneName.SHOULDER_L, 1.2, 0, -0.2)\n .rotate(BoneName.SHOULDER_R, 1.2, 0, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.2)\n .rotate(BoneName.HIP_L, 0.3, 0, 0)\n .rotate(BoneName.HIP_R, 0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.4, 0.2)\n .done<MartialArtsAnimationBuilder>()\n .at(0.4, \"ease-out\")\n .rotate(BoneName.PELVIS, 1.57, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.1, 0, 0)\n .rotate(BoneName.HEAD, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, 0, 0, 0)\n .rotate(BoneName.KNEE_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.8, 0.3)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Backward - 후방낙법\n *\n * Backward fall animation (후방낙법 - Hubang Nakbeop).\n * Sit down, back impact, arms slap ground.\n *\n * @korean 후방낙법애니메이션\n */\nexport const FALL_BACKWARD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_backward\", \"후방낙법\")\n .asMovement(0.5, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.12, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.4, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.3, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.4, 0, 0)\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.HIP_L, 0.5, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0)\n .position(BoneName.PELVIS, 0, -0.15, -0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.6, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.4, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.5, 0, 0)\n .rotate(BoneName.HIP_L, 0.8, 0, 0)\n .rotate(BoneName.HIP_R, 0.8, 0, 0)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.4, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.4, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.4, 0, 0.5)\n .position(BoneName.PELVIS, 0, -0.4, -0.15)\n .done<MartialArtsAnimationBuilder>()\n .at(0.38, \"ease-in\")\n .rotate(BoneName.PELVIS, -0.9, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.6, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.7, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.6, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.6, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.HEAD, 0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.5, -0.2)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-out\")\n .rotate(BoneName.PELVIS, -1.57, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.1, 0, 0)\n .rotate(BoneName.HEAD, 0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.2)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.2)\n .rotate(BoneName.ELBOW_L, 0, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.7, -0.3)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Side Left - 좌측낙법\n *\n * Side fall to the left (측방낙법 - Cheukbang Nakbeop).\n * Shoulder/hip impact, arm slaps ground.\n *\n * @korean 좌측낙법애니메이션\n */\nexport const FALL_SIDE_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_side_left\", \"좌측낙법\")\n .asMovement(0.45, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, 0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.3)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 0.5)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.5)\n .rotate(BoneName.HIP_L, 0.3, 0, 0.3)\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, -0.5)\n .position(BoneName.PELVIS, -0.1, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.22, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 1.0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.6)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.8)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.9)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.4)\n .rotate(BoneName.HIP_L, 0.4, 0, 0.5)\n .rotate(BoneName.HIP_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, -0.2, -0.3, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.33, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 1.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 1.0)\n .rotate(BoneName.SHOULDER_L, 0.2, 0, -1.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.2)\n .rotate(BoneName.HEAD, 0, 0, 0.3)\n .position(BoneName.PELVIS, -0.3, -0.5, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, 1.57, 1.57)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.3)\n .rotate(BoneName.HEAD, 0, 0, 0.2)\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.4)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.2)\n .rotate(BoneName.HIP_L, 0.2, 0, 0)\n .rotate(BoneName.HIP_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .position(BoneName.PELVIS, -0.4, -0.7, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Fall Side Right - 우측낙법\n *\n * Side fall to the right (측방낙법 - Cheukbang Nakbeop).\n * Mirror of left side fall.\n *\n * @korean 우측낙법애니메이션\n */\nexport const FALL_SIDE_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"fall_side_right\", \"우측낙법\")\n .asMovement(0.45, false)\n .at(0.0, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, -0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.3)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.1, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -0.5)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.5)\n .rotate(BoneName.HIP_R, 0.3, 0, -0.3)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.5)\n .position(BoneName.PELVIS, 0.1, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.22, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -1.0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.6)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.9)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.HIP_R, 0.4, 0, -0.5)\n .rotate(BoneName.HIP_L, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0.2, -0.3, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.33, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, -1.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, 0.2, 0, 1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.2)\n .rotate(BoneName.HEAD, 0, 0, -0.3)\n .position(BoneName.PELVIS, 0.3, -0.5, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -1.57, -1.57)\n .rotate(BoneName.SPINE_LOWER, 0, 0, -0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0, -0.3)\n .rotate(BoneName.HEAD, 0, 0, -0.2)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.4)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.2)\n .rotate(BoneName.HIP_R, 0.2, 0, 0)\n .rotate(BoneName.HIP_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.5, 0, 0)\n .position(BoneName.PELVIS, 0.4, -0.7, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT BASIC ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all basic animations for easy access\n * 기본 애니메이션 맵\n */\nexport const BASIC_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map(\n [\n // Idle\n [\"idle\", IDLE_ANIMATION],\n\n // Locomotion\n [\"walk\", WALK_ANIMATION],\n [\"run\", RUN_ANIMATION],\n\n // Falls (낙법)\n [\"fall_forward\", FALL_FORWARD_ANIMATION],\n [\"fall_backward\", FALL_BACKWARD_ANIMATION],\n [\"fall_side_left\", FALL_SIDE_LEFT_ANIMATION],\n [\"fall_side_right\", FALL_SIDE_RIGHT_ANIMATION],\n ],\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/ComboAnimations.ts"],"sourcesContent":["/**\n * Combo Animations Module\n *\n * Multi-hit combination attacks and chain sequences (연속기술).\n * Complex attack patterns combining multiple strikes.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 연속 콤보 애니메이션 모듈\n *\n * @module systems/animation/ComboAnimations\n * @korean 콤보애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BOXING COMBOS (권투 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * One-Two Combo - 원투콤보\n *\n * Classic jab-cross combination.\n * Fast, fundamental boxing combo.\n *\n * @korean 원투콤보애니메이션\n */\nexport const COMBO_ONE_TWO_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two\", \"원투콤보\")\n .asAttack(0.4)\n .punchWindup(0.05)\n .punchExtend(0.1) // Jab\n .punchWindup(0.08)\n .punchExtend(0.12) // Cross\n .recover(0.05)\n .build();\n\n/**\n * One-Two-Hook - 원투훅\n *\n * Jab-cross-hook combination.\n * Three-punch power combo.\n *\n * @korean 원투훅애니메이션\n */\nexport const COMBO_ONE_TWO_HOOK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two_hook\", \"원투훅\")\n .asAttack(0.55)\n .punchWindup(0.05)\n .punchExtend(0.08) // Jab\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .hookWindup(0.08)\n .hookPunch(0.1) // Hook\n .recover(0.08)\n .build();\n\n/**\n * Double Jab Cross - 더블잽크로스\n *\n * Jab-jab-cross combination.\n * Setup combo with double jab.\n *\n * @korean 더블잽크로스애니메이션\n */\nexport const COMBO_DOUBLE_JAB_CROSS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_double_jab_cross\", \"더블잽크로스\")\n .asAttack(0.5)\n .punchWindup(0.04)\n .punchExtend(0.06) // Jab 1\n .punchWindup(0.04)\n .punchExtend(0.06) // Jab 2\n .punchWindup(0.08)\n .punchExtend(0.12) // Cross\n .recover(0.1)\n .build();\n\n/**\n * Body-Head Combo - 바디헤드콤보\n *\n * Body hook followed by head hook.\n * Level-change combination.\n *\n * @korean 바디헤드콤보애니메이션\n */\nexport const COMBO_BODY_HEAD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_body_head\", \"바디헤드콤보\")\n .asAttack(0.5)\n .uppercutCrouch(0.08) // Level change down\n .hookPunch(0.12) // Body hook\n .uppercutPunch(0.12) // Rise with head shot\n .recover(0.18)\n .build();\n\n/**\n * Hook-Uppercut - 훅어퍼컷\n *\n * Hook to uppercut combination.\n * Ripping combo pattern.\n *\n * @korean 훅어퍼컷애니메이션\n */\nexport const COMBO_HOOK_UPPERCUT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hook_uppercut\", \"훅어퍼컷\")\n .asAttack(0.45)\n .hookWindup(0.08)\n .hookPunch(0.1) // Lead hook\n .uppercutCrouch(0.07)\n .uppercutPunch(0.1) // Rear uppercut\n .recover(0.1)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KICKBOXING COMBOS (킥복싱 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * One-Two-Kick - 원투킥\n *\n * Jab-cross-roundhouse combination.\n * Classic kickboxing combo.\n *\n * @korean 원투킥애니메이션\n */\nexport const COMBO_ONE_TWO_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two_kick\", \"원투킥\")\n .asAttack(0.6)\n .punchWindup(0.04)\n .punchExtend(0.08) // Jab\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .chamber(0.1)\n .roundhouse(0.12) // Kick\n .recover(0.1)\n .build();\n\n/**\n * Kick-Punch-Kick - 킥펀치킥\n *\n * Kick to punch to kick sequence.\n * Varied attack chain.\n *\n * @korean 킥펀치킥애니메이션\n */\nexport const COMBO_KICK_PUNCH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kick_punch_kick\", \"킥펀치킥\")\n .asAttack(0.7)\n .chamber(0.08)\n .roundhouse(0.12) // Kick 1\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .chamber(0.1)\n .roundhouse(0.14) // Kick 2\n .recover(0.1)\n .build();\n\n/**\n * Low-High Kick Combo - 로우하이킥\n *\n * Low kick followed by high kick.\n * Level change with kicks.\n *\n * @korean 로우하이킥콤보애니메이션\n */\nexport const COMBO_LOW_HIGH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_low_high_kick\", \"로우하이킥\")\n .asAttack(0.55)\n .lowKickChamber(0.08)\n .lowKickSweep(0.1) // Low kick\n .chamber(0.12)\n .roundhouse(0.15) // High kick\n .recover(0.1)\n .build();\n\n/**\n * Switch Kick Combo - 스위치킥콤보\n *\n * Lead kick followed by rear kick.\n * Stance-switching combo.\n *\n * @korean 스위치킥콤보애니메이션\n */\nexport const COMBO_SWITCH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_switch_kick\", \"스위치킥콤보\")\n .asAttack(0.6)\n .chamber(0.1)\n .roundhouse(0.12) // Lead roundhouse\n .recover(0.08)\n .chamber(0.1)\n .roundhouse(0.12) // Rear roundhouse (switched)\n .recover(0.08)\n .build();\n\n/**\n * Jab-Low Kick - 잽로우킥\n *\n * Jab followed by low kick.\n * Classic Dutch kickboxing combo.\n *\n * @korean 잽로우킥애니메이션\n */\nexport const COMBO_JAB_LOW_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_jab_low_kick\", \"잽로우킥\")\n .asAttack(0.45)\n .punchWindup(0.05)\n .punchExtend(0.08) // Jab\n .lowKickChamber(0.1)\n .lowKickSweep(0.12) // Low kick\n .recover(0.1)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KNEE/ELBOW COMBOS (무릎팔꿈치 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Clinch Knee Elbow - 클린치니엘보\n *\n * Clinch range knee and elbow combo.\n * Muay Thai plum combo.\n *\n * @korean 클린치니엘보애니메이션\n */\nexport const COMBO_CLINCH_KNEE_ELBOW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_clinch_knee_elbow\", \"클린치니엘보\")\n .asAttack(0.6)\n .withClinch()\n .clinchGrab(0.1)\n .kneeStrike(0.12) // Knee\n .elbowChamber(0.08)\n .elbowStrike(0.12) // Elbow\n .recover(0.18)\n .build();\n\n/**\n * Double Knee Strike - 더블니스트라이크\n *\n * Alternating knee strikes.\n * Clinch domination combo.\n *\n * @korean 더블니스트라이크애니메이션\n */\nexport const COMBO_DOUBLE_KNEE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_double_knee\", \"더블니스트라이크\")\n .asAttack(0.55)\n .withClinch()\n .clinchGrab(0.1)\n .kneeStrike(0.12) // Knee 1\n .kneeStrike(0.12) // Knee 2\n .recover(0.21)\n .build();\n\n/**\n * Elbow Chain - 엘보체인\n *\n * Multiple elbow strikes in sequence.\n * Close-range devastation.\n *\n * @korean 엘보체인애니메이션\n */\nexport const COMBO_ELBOW_CHAIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_elbow_chain\", \"엘보체인\")\n .asAttack(0.5)\n .elbowChamber(0.06)\n .elbowStrike(0.1) // Elbow 1\n .elbowChamber(0.06)\n .elbowStrike(0.1) // Elbow 2\n .elbowUppercut(0.1) // Rising elbow\n .recover(0.08)\n .build();\n\n/**\n * Knee-Elbow-Knee - 니엘보니\n *\n * Knee-elbow-knee sequence.\n * Triple threat combo.\n *\n * @korean 니엘보니애니메이션\n */\nexport const COMBO_KNEE_ELBOW_KNEE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_knee_elbow_knee\", \"니엘보니\")\n .asAttack(0.65)\n .withClinch()\n .clinchGrab(0.08)\n .kneeStrike(0.12) // Knee 1\n .elbowStrike(0.1) // Elbow\n .kneeStrike(0.12) // Knee 2\n .recover(0.23)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TRADITIONAL MARTIAL ARTS COMBOS (전통무술 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Taekwondo Triple Kick - 태권도삼중발차기\n *\n * Three-kick combination.\n * Fast consecutive kicks.\n *\n * @korean 태권도삼중발차기애니메이션\n */\nexport const COMBO_TAEKWONDO_TRIPLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"combo_taekwondo_triple\",\n \"태권도삼중발차기\",\n )\n .asAttack(0.7)\n .chamber(0.08)\n .extend(0.1) // Front kick\n .roundhouse(0.12) // Roundhouse\n .spin(0.15)\n .spinKick(0.15) // Back kick\n .recover(0.1)\n .build();\n\n/**\n * Taekkyeon Poom Balki - 택견품밟기\n *\n * Traditional Taekkyeon footwork-based combo.\n * Rhythmic stepping (품밟기) into fluid kick sequence.\n * Korea's oldest martial art (UNESCO Intangible Cultural Heritage).\n *\n * @korean 택견품밟기콤보애니메이션\n */\nexport const COMBO_TAEKKYEON_POOM_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_taekkyeon_poom\", \"택견품밟기\")\n .asAttack(0.6)\n .sideStepLeft(0.1) // 품밟기 - rhythmic stepping\n .lowKickSweep(0.12) // 낮은걸이 - low leg sweep\n .chamber(0.1)\n .extend(0.12) // 차올리기 - rising kick\n .palmStrike(0.08) // 손치기 - palm technique\n .recover(0.08)\n .build();\n\n/**\n * Subak Yeonhwan - 수박연환\n *\n * Subak continuous palm strikes.\n * Ancient Korean striking art predating Taekwondo.\n * Emphasis on open-hand techniques and circular motion.\n *\n * @korean 수박연환콤보애니메이션\n */\nexport const COMBO_SUBAK_CHAIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_subak_chain\", \"수박연환\")\n .asAttack(0.55)\n .palmStrike(0.08) // 수박치기 1\n .palmStrike(0.08) // 수박치기 2\n .parry(0.06) // 막기 - deflect\n .palmStrike(0.08) // 수박치기 3\n .punchExtend(0.08) // 지르기 - thrust\n .elbowStrike(0.08) // 팔꿈치 - elbow\n .recover(0.09)\n .build();\n\n/**\n * Hapkido Flow - 합기도흐름\n *\n * Hapkido flowing technique.\n * Strike to joint lock.\n *\n * @korean 합기도흐름애니메이션\n */\nexport const COMBO_HAPKIDO_FLOW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hapkido_flow\", \"합기도흐름\")\n .asAttack(0.65)\n .palmStrike(0.1) // Palm strike\n .parry(0.08) // Redirect\n .wristGrab(0.12) // Wrist control\n .wristTwist(0.15) // Lock\n .recover(0.2)\n .build();\n\n/**\n * Yudo Bangyeok - 유도반격 (Korean Judo Counter)\n *\n * Korean Judo (Yudo) counter throw technique.\n * Defense into immediate offense with hip throw.\n * Yudo has been practiced in Korea since 1909.\n *\n * @korean 유도반격콤보애니메이션\n */\nexport const COMBO_YUDO_COUNTER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_yudo_counter\", \"유도반격\")\n .asAttack(0.7)\n .parry(0.1) // 막기 - deflect attack\n .clinchGrab(0.1) // 잡기 - grip\n .hipThrow(0.18) // 허리치기 - hip throw\n .throwExecute(0.14) // 던지기 - throw projection\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KOREAN GRAPPLING COMBOS (한국 유술 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Ssireum Mechi - 씨름메치기\n *\n * Traditional Korean wrestling takedown combo.\n * Ssireum (Korean wrestling) techniques with satba grip.\n * Korea's traditional folk wrestling sport.\n *\n * @korean 씨름메치기콤보애니메이션\n */\nexport const COMBO_SSIREUM_MECHI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_ssireum_mechi\", \"씨름메치기\")\n .asAttack(0.8)\n .clinchGrab(0.12) // 샅바잡기 - satba grip\n .slamLift(0.15) // 들어올리기 - body lift\n .slamDown(0.2) // 메치기 - throw down\n .groundMount(0.15) // 누르기 - pin\n .recover(0.18)\n .build();\n\n/**\n * Teukgong Counter - 특공반격\n *\n * Korean Special Forces combatives counter.\n * Military-based defensive to offensive transition.\n * Teukgong Moosool (특공무술) techniques.\n *\n * @korean 특공반격콤보애니메이션\n */\nexport const COMBO_TEUKGONG_COUNTER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_teukgong_counter\", \"특공반격\")\n .asAttack(0.6)\n .counterParry(0.1) // 막아치기 - parry-strike\n .throatStrike(0.08) // 목치기 - throat strike\n .kneeStrike(0.12) // 무릎차기 - knee strike\n .sweep(0.12) // 걸기 - sweep\n .recover(0.18)\n .build();\n\n/**\n * Geunjeop Geupso - 근접급소 (Clinch Vital Points)\n *\n * Close-range vital point combo from clinch.\n * Short-range strikes targeting pressure points.\n * Based on Korean traditional medicine meridians.\n *\n * @korean 근접급소콤보애니메이션\n */\nexport const COMBO_CLINCH_GEUPSO_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_clinch_geupso\", \"근접급소\")\n .asAttack(0.55)\n .withClinch()\n .clinchGrab(0.1)\n .nerveStrike(0.08) // 경락치기 - meridian strike\n .elbowStrike(0.1) // 팔꿈치 - elbow\n .kneeStrike(0.1) // 무릎치기 - knee\n .recover(0.17)\n .build();\n\n/**\n * Hwarang Bicheon - 화랑비천 (Hwarang Flying Attack)\n *\n * Hwarang warrior flying attack sequence.\n * Spectacular aerial techniques from ancient Korean warriors.\n * Based on Hwarangdo (화랑도) combat arts.\n *\n * @korean 화랑비천콤보애니메이션\n */\nexport const COMBO_HWARANG_BICHEON_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hwarang_bicheon\", \"화랑비천\")\n .asAttack(0.7)\n .jump(0.1)\n .flyingKnee(0.15) // 비천슬 - flying knee\n .spin(0.1)\n .axeKick(0.15) // 내려차기 - descending kick\n .palmStrike(0.1) // 장풍 - palm strike\n .recover(0.1)\n .build();\n\n/**\n * Taekkyeon Hwalgae - 택견활개\n *\n * Taekkyeon arm sweeping technique sequence.\n * Circular arm movements (활개짓) with finishing kick.\n * Flowing defensive-offensive transition.\n *\n * @korean 택견활개콤보애니메이션\n */\nexport const COMBO_TAEKKYEON_HWALGAE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_taekkyeon_hwalgae\", \"택견활개\")\n .asAttack(0.7)\n .parry(0.1) // 활개 - sweeping deflect\n .palmStrike(0.1) // 손치기 - palm strike\n .wristGrab(0.1) // 잡아채기 - grab and pull\n .roundhouse(0.15) // 돌려차기 - roundhouse\n .recover(0.25)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KUK SOOL WON COMBOS (국술원 콤보)\n// Traditional Korean martial arts system integrating all fighting arts\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Kuk Sool Su Ki - 국술수기 (Hand Strikes)\n *\n * Kuk Sool Won hand striking combination.\n * Palm strikes, knife hands, and blocking sequence.\n * Traditional Korean striking techniques (수기).\n *\n * @korean 국술수기콤보애니메이션\n */\nexport const COMBO_KUKSOOL_SUKI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_suki\", \"국술수기\")\n .asAttack(0.6)\n .blockMiddle(0.08) // 막기 - middle block\n .palmStrike(0.1) // 장권 - palm strike\n .blockKnifeHand(0.08) // 수도막기 - knife hand block\n .nerveStrike(0.1) // 혈도 - pressure point\n .elbowStrike(0.1) // 팔꿈치치기 - elbow strike\n .recover(0.14)\n .build();\n\n/**\n * Kuk Sool Jok Sul - 국술족술 (Kicks and Sweeps)\n *\n * Kuk Sool Won kicking and leg sweep combination.\n * Front kick, crescent kick, and leg sweep sequence.\n * Dynamic lower body techniques (족술).\n *\n * @korean 국술족술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_JOKSUL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_joksul\", \"국술족술\")\n .asAttack(0.7)\n .chamber(0.08) // 준비 - chamber\n .extend(0.1) // 앞차기 - front kick\n .hookKickExtend(0.12) // 후려차기 - crescent kick\n .lowKickSweep(0.15) // 걸이 - leg sweep\n .axeKick(0.12) // 내려차기 - axe kick\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Too Ki - 국술투기 (Throws and Grappling)\n *\n * Kuk Sool Won throwing and grappling combination.\n * Entry to hip throw with ground control.\n * Traditional Korean throwing techniques (투기).\n *\n * @korean 국술투기콤보애니메이션\n */\nexport const COMBO_KUKSOOL_TOOKI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_tooki\", \"국술투기\")\n .asAttack(0.75)\n .clinchGrab(0.08) // 잡기 - grip\n .throwEntry(0.1) // 들어가기 - entry\n .hipThrow(0.15) // 허리치기 - hip throw\n .throwExecute(0.1) // 투기 - throw projection\n .groundMount(0.12) // 누르기 - pin\n .recover(0.2)\n .build();\n\n/**\n * Kuk Sool Kwan Jyel Sul - 국술관절술 (Joint Locks)\n *\n * Kuk Sool Won joint manipulation sequence.\n * Wrist lock to arm bar transition.\n * 3,608 joint locking techniques (관절술).\n *\n * @korean 국술관절술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_KWANJYEL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_kwanjyel\", \"국술관절술\")\n .asAttack(0.7)\n .parry(0.08) // 막기 - deflect\n .wristGrab(0.1) // 손목잡기 - wrist grab\n .wristTwist(0.12) // 손목꺾기 - wrist twist\n .elbowLockApply(0.15) // 팔꿈치꺾기 - elbow lock\n .jointLock(0.12) // 관절꺾기 - joint lock\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Nak Bup - 국술낙법 (Break-falls and Acrobatics)\n *\n * Kuk Sool Won acrobatic counter sequence.\n * Roll recovery into counter-attack.\n * Safe falling techniques (낙법).\n *\n * @korean 국술낙법콤보애니메이션\n */\nexport const COMBO_KUKSOOL_NAKBUP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_nakbup\", \"국술낙법\")\n .asAttack(0.65)\n .duck(0.1) // 피하기 - evade\n .sweep(0.12) // 걸기 - sweep from ground\n .chamber(0.1) // 준비 - recovery chamber\n .extend(0.12) // 발차기 - rising kick\n .recover(0.21)\n .build();\n\n/**\n * Kuk Sool Ho Shin Sul - 국술호신술 (Self-Defense)\n *\n * Kuk Sool Won self-defense combination.\n * Defensive parry into vital point strikes.\n * Practical self-defense techniques (호신술).\n *\n * @korean 국술호신술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_HOSHIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_hoshin\", \"국술호신술\")\n .asAttack(0.55)\n .counterParry(0.08) // 받아치기 - parry counter\n .throatStrike(0.08) // 인후타격 - throat strike\n .groinStrike(0.1) // 낭심타격 - groin strike\n .kneeStrike(0.1) // 무릎치기 - knee\n .recover(0.19)\n .build();\n\n/**\n * Kuk Sool Beom Hyung - 국술범형 (Tiger Style)\n *\n * Kuk Sool Won tiger animal style combo.\n * Powerful clawing and pouncing attacks.\n * One of the traditional animal forms (동물형).\n *\n * @korean 국술범형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_TIGER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_tiger\", \"국술범형\")\n .asAttack(0.65)\n .punchWindup(0.1) // 준비 - ready\n .palmStrike(0.1) // 호조 - tiger claw 1\n .palmStrike(0.1) // 호조 - tiger claw 2\n .jump(0.1) // 도약 - leap\n .slamDown(0.12) // 덮치기 - pounce\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Hak Hyung - 국술학형 (Crane Style)\n *\n * Kuk Sool Won crane animal style combo.\n * Graceful evasion with precision beak strikes.\n * Crane form emphasizing balance and accuracy (학형).\n *\n * @korean 국술학형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_CRANE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_crane\", \"국술학형\")\n .asAttack(0.6)\n .weave(0.1) // 피하기 - graceful evasion\n .nerveStrike(0.08) // 학부리 - crane beak strike 1\n .sideStepRight(0.08) // 옆걸음 - side step\n .nerveStrike(0.08) // 학부리 - crane beak strike 2\n .sideKickChamber(0.1) // 준비 - side kick chamber\n .sideKickExtend(0.1) // 옆차기 - side kick\n .recover(0.06)\n .build();\n\n/**\n * Kuk Sool Yong Hyung - 국술용형 (Dragon Style)\n *\n * Kuk Sool Won dragon animal style combo.\n * Coiling movements with spiraling attacks.\n * Dragon form emphasizing fluidity and power (용형).\n *\n * @korean 국술용형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_DRAGON_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_dragon\", \"국술용형\")\n .asAttack(0.73)\n .spin(0.12) // 회전 - coiling spin\n .palmStrike(0.1) // 용조 - dragon palm\n .wristGrab(0.1) // 잡아치기 - grab strike\n .throwEntry(0.08) // 진입 - load for throw\n .throwExecute(0.12) // 용휘 - dragon whip throw\n .recover(0.21)\n .build();\n\n/**\n * Kuk Sool Sa Hyung - 국술사형 (Snake Style)\n *\n * Kuk Sool Won snake animal style combo.\n * Quick precise strikes to vital points.\n * Snake form emphasizing speed and precision (사형).\n *\n * @korean 국술사형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_SNAKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_snake\", \"국술사형\")\n .asAttack(0.5)\n .nerveStrike(0.06) // 사두 - snake head strike\n .jugularStrike(0.08) // 경정맥타격 - jugular strike\n .fingerLockTwist(0.1) // 손가락꺾기 - finger manipulation\n .throatStrike(0.08) // 인후타격 - throat strike\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FINISHER COMBOS (마무리 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Knockout Combo - 녹아웃콤보\n *\n * Power combo designed for finish.\n * Maximum damage output.\n *\n * @korean 녹아웃콤보애니메이션\n */\nexport const COMBO_KNOCKOUT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_knockout\", \"녹아웃콤보\")\n .asAttack(0.65)\n .overhandPunch(0.15) // Overhand\n .hookPunch(0.12) // Hook\n .uppercutPunch(0.12) // Uppercut finish\n .recover(0.26)\n .build();\n\n/**\n * Spinning Destruction - 회전파괴\n *\n * Spinning attacks combo.\n * Spectacular power shots.\n *\n * @korean 회전파괴애니메이션\n */\nexport const COMBO_SPINNING_DESTRUCTION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_spinning_destruction\", \"회전파괴\")\n .asAttack(0.7)\n .spin(0.12)\n .spinKick(0.15) // Spinning kick\n .spin(0.1)\n .elbowStrike(0.12) // Spinning elbow\n .recover(0.21)\n .build();\n\n/**\n * Question Mark to Finish - 물음표마무리\n *\n * Question mark kick setup to finish.\n * Deceptive power combo.\n *\n * @korean 물음표마무리애니메이션\n */\nexport const COMBO_QUESTION_MARK_FINISH_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"combo_question_mark_finish\",\n \"물음표마무리\",\n )\n .asAttack(0.65)\n .lowKickChamber(0.1) // Fake low\n .roundhouse(0.15) // Head kick\n .punchExtend(0.12) // Follow-up punch\n .recover(0.28)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT COMBO ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all combo animations for easy access\n * 콤보 애니메이션 맵\n */\nexport const COMBO_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map(\n [\n // Boxing (복싱)\n [\"combo_one_two\", COMBO_ONE_TWO_ANIMATION],\n [\"combo_one_two_hook\", COMBO_ONE_TWO_HOOK_ANIMATION],\n [\"combo_double_jab_cross\", COMBO_DOUBLE_JAB_CROSS_ANIMATION],\n [\"combo_body_head\", COMBO_BODY_HEAD_ANIMATION],\n [\"combo_hook_uppercut\", COMBO_HOOK_UPPERCUT_ANIMATION],\n\n // Kickboxing (킥복싱)\n [\"combo_one_two_kick\", COMBO_ONE_TWO_KICK_ANIMATION],\n [\"combo_kick_punch_kick\", COMBO_KICK_PUNCH_KICK_ANIMATION],\n [\"combo_low_high_kick\", COMBO_LOW_HIGH_KICK_ANIMATION],\n [\"combo_switch_kick\", COMBO_SWITCH_KICK_ANIMATION],\n [\"combo_jab_low_kick\", COMBO_JAB_LOW_KICK_ANIMATION],\n\n // Knee/Elbow (무릎/팔꿈치)\n [\"combo_clinch_knee_elbow\", COMBO_CLINCH_KNEE_ELBOW_ANIMATION],\n [\"combo_double_knee\", COMBO_DOUBLE_KNEE_ANIMATION],\n [\"combo_elbow_chain\", COMBO_ELBOW_CHAIN_ANIMATION],\n [\"combo_knee_elbow_knee\", COMBO_KNEE_ELBOW_KNEE_ANIMATION],\n\n // Korean Traditional Martial Arts (한국전통무술)\n [\"combo_taekwondo_triple\", COMBO_TAEKWONDO_TRIPLE_ANIMATION],\n [\"combo_taekkyeon_poom\", COMBO_TAEKKYEON_POOM_ANIMATION],\n [\"combo_taekkyeon_hwalgae\", COMBO_TAEKKYEON_HWALGAE_ANIMATION],\n [\"combo_subak_chain\", COMBO_SUBAK_CHAIN_ANIMATION],\n [\"combo_hapkido_flow\", COMBO_HAPKIDO_FLOW_ANIMATION],\n [\"combo_yudo_counter\", COMBO_YUDO_COUNTER_ANIMATION],\n\n // Korean Grappling/Military (한국유술/군사무술)\n [\"combo_ssireum_mechi\", COMBO_SSIREUM_MECHI_ANIMATION],\n [\"combo_teukgong_counter\", COMBO_TEUKGONG_COUNTER_ANIMATION],\n [\"combo_clinch_geupso\", COMBO_CLINCH_GEUPSO_ANIMATION],\n [\"combo_hwarang_bicheon\", COMBO_HWARANG_BICHEON_ANIMATION],\n\n // Kuk Sool Won (국술원)\n [\"combo_kuksool_suki\", COMBO_KUKSOOL_SUKI_ANIMATION],\n [\"combo_kuksool_joksul\", COMBO_KUKSOOL_JOKSUL_ANIMATION],\n [\"combo_kuksool_tooki\", COMBO_KUKSOOL_TOOKI_ANIMATION],\n [\"combo_kuksool_kwanjyel\", COMBO_KUKSOOL_KWANJYEL_ANIMATION],\n [\"combo_kuksool_nakbup\", COMBO_KUKSOOL_NAKBUP_ANIMATION],\n [\"combo_kuksool_hoshin\", COMBO_KUKSOOL_HOSHIN_ANIMATION],\n [\"combo_kuksool_tiger\", COMBO_KUKSOOL_TIGER_ANIMATION],\n [\"combo_kuksool_crane\", COMBO_KUKSOOL_CRANE_ANIMATION],\n [\"combo_kuksool_dragon\", COMBO_KUKSOOL_DRAGON_ANIMATION],\n [\"combo_kuksool_snake\", COMBO_KUKSOOL_SNAKE_ANIMATION],\n\n // Finishers (마무리)\n [\"combo_knockout\", COMBO_KNOCKOUT_ANIMATION],\n [\"combo_spinning_destruction\", COMBO_SPINNING_DESTRUCTION_ANIMATION],\n [\"combo_question_mark_finish\", COMBO_QUESTION_MARK_FINISH_ANIMATION],\n ],\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComboAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/ComboAnimations.ts"],"sourcesContent":["/**\n * Combo Animations Module\n *\n * Multi-hit combination attacks and chain sequences (연속기술).\n * Complex attack patterns combining multiple strikes.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 연속 콤보 애니메이션 모듈\n *\n * @module systems/animation/ComboAnimations\n * @korean 콤보애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BOXING COMBOS (권투 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * One-Two Combo - 원투콤보\n *\n * Classic jab-cross combination.\n * Fast, fundamental boxing combo.\n *\n * @korean 원투콤보애니메이션\n */\nexport const COMBO_ONE_TWO_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two\", \"원투콤보\")\n .asAttack(0.4)\n .punchWindup(0.05)\n .punchExtend(0.1) // Jab\n .punchWindup(0.08)\n .punchExtend(0.12) // Cross\n .recover(0.05)\n .build();\n\n/**\n * One-Two-Hook - 원투훅\n *\n * Jab-cross-hook combination.\n * Three-punch power combo.\n *\n * @korean 원투훅애니메이션\n */\nexport const COMBO_ONE_TWO_HOOK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two_hook\", \"원투훅\")\n .asAttack(0.55)\n .punchWindup(0.05)\n .punchExtend(0.08) // Jab\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .hookWindup(0.08)\n .hookPunch(0.1) // Hook\n .recover(0.08)\n .build();\n\n/**\n * Double Jab Cross - 더블잽크로스\n *\n * Jab-jab-cross combination.\n * Setup combo with double jab.\n *\n * @korean 더블잽크로스애니메이션\n */\nexport const COMBO_DOUBLE_JAB_CROSS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_double_jab_cross\", \"더블잽크로스\")\n .asAttack(0.5)\n .punchWindup(0.04)\n .punchExtend(0.06) // Jab 1\n .punchWindup(0.04)\n .punchExtend(0.06) // Jab 2\n .punchWindup(0.08)\n .punchExtend(0.12) // Cross\n .recover(0.1)\n .build();\n\n/**\n * Body-Head Combo - 바디헤드콤보\n *\n * Body hook followed by head hook.\n * Level-change combination.\n *\n * @korean 바디헤드콤보애니메이션\n */\nexport const COMBO_BODY_HEAD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_body_head\", \"바디헤드콤보\")\n .asAttack(0.5)\n .uppercutCrouch(0.08) // Level change down\n .hookPunch(0.12) // Body hook\n .uppercutPunch(0.12) // Rise with head shot\n .recover(0.18)\n .build();\n\n/**\n * Hook-Uppercut - 훅어퍼컷\n *\n * Hook to uppercut combination.\n * Ripping combo pattern.\n *\n * @korean 훅어퍼컷애니메이션\n */\nexport const COMBO_HOOK_UPPERCUT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hook_uppercut\", \"훅어퍼컷\")\n .asAttack(0.45)\n .hookWindup(0.08)\n .hookPunch(0.1) // Lead hook\n .uppercutCrouch(0.07)\n .uppercutPunch(0.1) // Rear uppercut\n .recover(0.1)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KICKBOXING COMBOS (킥복싱 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * One-Two-Kick - 원투킥\n *\n * Jab-cross-roundhouse combination.\n * Classic kickboxing combo.\n *\n * @korean 원투킥애니메이션\n */\nexport const COMBO_ONE_TWO_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_one_two_kick\", \"원투킥\")\n .asAttack(0.6)\n .punchWindup(0.04)\n .punchExtend(0.08) // Jab\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .chamber(0.1)\n .roundhouse(0.12) // Kick\n .recover(0.1)\n .build();\n\n/**\n * Kick-Punch-Kick - 킥펀치킥\n *\n * Kick to punch to kick sequence.\n * Varied attack chain.\n *\n * @korean 킥펀치킥애니메이션\n */\nexport const COMBO_KICK_PUNCH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kick_punch_kick\", \"킥펀치킥\")\n .asAttack(0.7)\n .chamber(0.08)\n .roundhouse(0.12) // Kick 1\n .punchWindup(0.06)\n .punchExtend(0.1) // Cross\n .chamber(0.1)\n .roundhouse(0.14) // Kick 2\n .recover(0.1)\n .build();\n\n/**\n * Low-High Kick Combo - 로우하이킥\n *\n * Low kick followed by high kick.\n * Level change with kicks.\n *\n * @korean 로우하이킥콤보애니메이션\n */\nexport const COMBO_LOW_HIGH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_low_high_kick\", \"로우하이킥\")\n .asAttack(0.55)\n .lowKickChamber(0.08)\n .lowKickSweep(0.1) // Low kick\n .chamber(0.12)\n .roundhouse(0.15) // High kick\n .recover(0.1)\n .build();\n\n/**\n * Switch Kick Combo - 스위치킥콤보\n *\n * Lead kick followed by rear kick.\n * Stance-switching combo.\n *\n * @korean 스위치킥콤보애니메이션\n */\nexport const COMBO_SWITCH_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_switch_kick\", \"스위치킥콤보\")\n .asAttack(0.6)\n .chamber(0.1)\n .roundhouse(0.12) // Lead roundhouse\n .recover(0.08)\n .chamber(0.1)\n .roundhouse(0.12) // Rear roundhouse (switched)\n .recover(0.08)\n .build();\n\n/**\n * Jab-Low Kick - 잽로우킥\n *\n * Jab followed by low kick.\n * Classic Dutch kickboxing combo.\n *\n * @korean 잽로우킥애니메이션\n */\nexport const COMBO_JAB_LOW_KICK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_jab_low_kick\", \"잽로우킥\")\n .asAttack(0.45)\n .punchWindup(0.05)\n .punchExtend(0.08) // Jab\n .lowKickChamber(0.1)\n .lowKickSweep(0.12) // Low kick\n .recover(0.1)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KNEE/ELBOW COMBOS (무릎팔꿈치 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Clinch Knee Elbow - 클린치니엘보\n *\n * Clinch range knee and elbow combo.\n * Muay Thai plum combo.\n *\n * @korean 클린치니엘보애니메이션\n */\nexport const COMBO_CLINCH_KNEE_ELBOW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_clinch_knee_elbow\", \"클린치니엘보\")\n .asAttack(0.6)\n .withClinch()\n .clinchGrab(0.1)\n .kneeStrike(0.12) // Knee\n .elbowChamber(0.08)\n .elbowStrike(0.12) // Elbow\n .recover(0.18)\n .build();\n\n/**\n * Double Knee Strike - 더블니스트라이크\n *\n * Alternating knee strikes.\n * Clinch domination combo.\n *\n * @korean 더블니스트라이크애니메이션\n */\nexport const COMBO_DOUBLE_KNEE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_double_knee\", \"더블니스트라이크\")\n .asAttack(0.55)\n .withClinch()\n .clinchGrab(0.1)\n .kneeStrike(0.12) // Knee 1\n .kneeStrike(0.12) // Knee 2\n .recover(0.21)\n .build();\n\n/**\n * Elbow Chain - 엘보체인\n *\n * Multiple elbow strikes in sequence.\n * Close-range devastation.\n *\n * @korean 엘보체인애니메이션\n */\nexport const COMBO_ELBOW_CHAIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_elbow_chain\", \"엘보체인\")\n .asAttack(0.5)\n .elbowChamber(0.06)\n .elbowStrike(0.1) // Elbow 1\n .elbowChamber(0.06)\n .elbowStrike(0.1) // Elbow 2\n .elbowUppercut(0.1) // Rising elbow\n .recover(0.08)\n .build();\n\n/**\n * Knee-Elbow-Knee - 니엘보니\n *\n * Knee-elbow-knee sequence.\n * Triple threat combo.\n *\n * @korean 니엘보니애니메이션\n */\nexport const COMBO_KNEE_ELBOW_KNEE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_knee_elbow_knee\", \"니엘보니\")\n .asAttack(0.65)\n .withClinch()\n .clinchGrab(0.08)\n .kneeStrike(0.12) // Knee 1\n .elbowStrike(0.1) // Elbow\n .kneeStrike(0.12) // Knee 2\n .recover(0.23)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TRADITIONAL MARTIAL ARTS COMBOS (전통무술 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Taekwondo Triple Kick - 태권도삼중발차기\n *\n * Three-kick combination.\n * Fast consecutive kicks.\n *\n * @korean 태권도삼중발차기애니메이션\n */\nexport const COMBO_TAEKWONDO_TRIPLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"combo_taekwondo_triple\",\n \"태권도삼중발차기\",\n )\n .asAttack(0.7)\n .chamber(0.08)\n .extend(0.1) // Front kick\n .roundhouse(0.12) // Roundhouse\n .spin(0.15)\n .spinKick(0.15) // Back kick\n .recover(0.1)\n .build();\n\n/**\n * Taekkyeon Poom Balki - 택견품밟기\n *\n * Traditional Taekkyeon footwork-based combo.\n * Rhythmic stepping (품밟기) into fluid kick sequence.\n * Korea's oldest martial art (UNESCO Intangible Cultural Heritage).\n *\n * @korean 택견품밟기콤보애니메이션\n */\nexport const COMBO_TAEKKYEON_POOM_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_taekkyeon_poom\", \"택견품밟기\")\n .asAttack(0.6)\n .sideStepLeft(0.1) // 품밟기 - rhythmic stepping\n .lowKickSweep(0.12) // 낮은걸이 - low leg sweep\n .chamber(0.1)\n .extend(0.12) // 차올리기 - rising kick\n .palmStrike(0.08) // 손치기 - palm technique\n .recover(0.08)\n .build();\n\n/**\n * Subak Yeonhwan - 수박연환\n *\n * Subak continuous palm strikes.\n * Ancient Korean striking art predating Taekwondo.\n * Emphasis on open-hand techniques and circular motion.\n *\n * @korean 수박연환콤보애니메이션\n */\nexport const COMBO_SUBAK_CHAIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_subak_chain\", \"수박연환\")\n .asAttack(0.55)\n .palmStrike(0.08) // 수박치기 1\n .palmStrike(0.08) // 수박치기 2\n .parry(0.06) // 막기 - deflect\n .palmStrike(0.08) // 수박치기 3\n .punchExtend(0.08) // 지르기 - thrust\n .elbowStrike(0.08) // 팔꿈치 - elbow\n .recover(0.09)\n .build();\n\n/**\n * Hapkido Flow - 합기도흐름\n *\n * Hapkido flowing technique.\n * Strike to joint lock.\n *\n * @korean 합기도흐름애니메이션\n */\nexport const COMBO_HAPKIDO_FLOW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hapkido_flow\", \"합기도흐름\")\n .asAttack(0.65)\n .palmStrike(0.1) // Palm strike\n .parry(0.08) // Redirect\n .wristGrab(0.12) // Wrist control\n .wristTwist(0.15) // Lock\n .recover(0.2)\n .build();\n\n/**\n * Yudo Bangyeok - 유도반격 (Korean Judo Counter)\n *\n * Korean Judo (Yudo) counter throw technique.\n * Defense into immediate offense with hip throw.\n * Yudo has been practiced in Korea since 1909.\n *\n * @korean 유도반격콤보애니메이션\n */\nexport const COMBO_YUDO_COUNTER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_yudo_counter\", \"유도반격\")\n .asAttack(0.7)\n .parry(0.1) // 막기 - deflect attack\n .clinchGrab(0.1) // 잡기 - grip\n .hipThrow(0.18) // 허리치기 - hip throw\n .throwExecute(0.14) // 던지기 - throw projection\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KOREAN GRAPPLING COMBOS (한국 유술 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Ssireum Mechi - 씨름메치기\n *\n * Traditional Korean wrestling takedown combo.\n * Ssireum (Korean wrestling) techniques with satba grip.\n * Korea's traditional folk wrestling sport.\n *\n * @korean 씨름메치기콤보애니메이션\n */\nexport const COMBO_SSIREUM_MECHI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_ssireum_mechi\", \"씨름메치기\")\n .asAttack(0.8)\n .clinchGrab(0.12) // 샅바잡기 - satba grip\n .slamLift(0.15) // 들어올리기 - body lift\n .slamDown(0.2) // 메치기 - throw down\n .groundMount(0.15) // 누르기 - pin\n .recover(0.18)\n .build();\n\n/**\n * Teukgong Counter - 특공반격\n *\n * Korean Special Forces combatives counter.\n * Military-based defensive to offensive transition.\n * Teukgong Moosool (특공무술) techniques.\n *\n * @korean 특공반격콤보애니메이션\n */\nexport const COMBO_TEUKGONG_COUNTER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_teukgong_counter\", \"특공반격\")\n .asAttack(0.6)\n .counterParry(0.1) // 막아치기 - parry-strike\n .throatStrike(0.08) // 목치기 - throat strike\n .kneeStrike(0.12) // 무릎차기 - knee strike\n .sweep(0.12) // 걸기 - sweep\n .recover(0.18)\n .build();\n\n/**\n * Geunjeop Geupso - 근접급소 (Clinch Vital Points)\n *\n * Close-range vital point combo from clinch.\n * Short-range strikes targeting pressure points.\n * Based on Korean traditional medicine meridians.\n *\n * @korean 근접급소콤보애니메이션\n */\nexport const COMBO_CLINCH_GEUPSO_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_clinch_geupso\", \"근접급소\")\n .asAttack(0.55)\n .withClinch()\n .clinchGrab(0.1)\n .nerveStrike(0.08) // 경락치기 - meridian strike\n .elbowStrike(0.1) // 팔꿈치 - elbow\n .kneeStrike(0.1) // 무릎치기 - knee\n .recover(0.17)\n .build();\n\n/**\n * Hwarang Bicheon - 화랑비천 (Hwarang Flying Attack)\n *\n * Hwarang warrior flying attack sequence.\n * Spectacular aerial techniques from ancient Korean warriors.\n * Based on Hwarangdo (화랑도) combat arts.\n *\n * @korean 화랑비천콤보애니메이션\n */\nexport const COMBO_HWARANG_BICHEON_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_hwarang_bicheon\", \"화랑비천\")\n .asAttack(0.7)\n .jump(0.1)\n .flyingKnee(0.15) // 비천슬 - flying knee\n .spin(0.1)\n .axeKick(0.15) // 내려차기 - descending kick\n .palmStrike(0.1) // 장풍 - palm strike\n .recover(0.1)\n .build();\n\n/**\n * Taekkyeon Hwalgae - 택견활개\n *\n * Taekkyeon arm sweeping technique sequence.\n * Circular arm movements (활개짓) with finishing kick.\n * Flowing defensive-offensive transition.\n *\n * @korean 택견활개콤보애니메이션\n */\nexport const COMBO_TAEKKYEON_HWALGAE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_taekkyeon_hwalgae\", \"택견활개\")\n .asAttack(0.7)\n .parry(0.1) // 활개 - sweeping deflect\n .palmStrike(0.1) // 손치기 - palm strike\n .wristGrab(0.1) // 잡아채기 - grab and pull\n .roundhouse(0.15) // 돌려차기 - roundhouse\n .recover(0.25)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// KUK SOOL WON COMBOS (국술원 콤보)\n// Traditional Korean martial arts system integrating all fighting arts\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Kuk Sool Su Ki - 국술수기 (Hand Strikes)\n *\n * Kuk Sool Won hand striking combination.\n * Palm strikes, knife hands, and blocking sequence.\n * Traditional Korean striking techniques (수기).\n *\n * @korean 국술수기콤보애니메이션\n */\nexport const COMBO_KUKSOOL_SUKI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_suki\", \"국술수기\")\n .asAttack(0.6)\n .blockMiddle(0.08) // 막기 - middle block\n .palmStrike(0.1) // 장권 - palm strike\n .blockKnifeHand(0.08) // 수도막기 - knife hand block\n .nerveStrike(0.1) // 혈도 - pressure point\n .elbowStrike(0.1) // 팔꿈치치기 - elbow strike\n .recover(0.14)\n .build();\n\n/**\n * Kuk Sool Jok Sul - 국술족술 (Kicks and Sweeps)\n *\n * Kuk Sool Won kicking and leg sweep combination.\n * Front kick, crescent kick, and leg sweep sequence.\n * Dynamic lower body techniques (족술).\n *\n * @korean 국술족술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_JOKSUL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_joksul\", \"국술족술\")\n .asAttack(0.7)\n .chamber(0.08) // 준비 - chamber\n .extend(0.1) // 앞차기 - front kick\n .hookKickExtend(0.12) // 후려차기 - crescent kick\n .lowKickSweep(0.15) // 걸이 - leg sweep\n .axeKick(0.12) // 내려차기 - axe kick\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Too Ki - 국술투기 (Throws and Grappling)\n *\n * Kuk Sool Won throwing and grappling combination.\n * Entry to hip throw with ground control.\n * Traditional Korean throwing techniques (투기).\n *\n * @korean 국술투기콤보애니메이션\n */\nexport const COMBO_KUKSOOL_TOOKI_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_tooki\", \"국술투기\")\n .asAttack(0.75)\n .clinchGrab(0.08) // 잡기 - grip\n .throwEntry(0.1) // 들어가기 - entry\n .hipThrow(0.15) // 허리치기 - hip throw\n .throwExecute(0.1) // 투기 - throw projection\n .groundMount(0.12) // 누르기 - pin\n .recover(0.2)\n .build();\n\n/**\n * Kuk Sool Kwan Jyel Sul - 국술관절술 (Joint Locks)\n *\n * Kuk Sool Won joint manipulation sequence.\n * Wrist lock to arm bar transition.\n * 3,608 joint locking techniques (관절술).\n *\n * @korean 국술관절술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_KWANJYEL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_kwanjyel\", \"국술관절술\")\n .asAttack(0.7)\n .parry(0.08) // 막기 - deflect\n .wristGrab(0.1) // 손목잡기 - wrist grab\n .wristTwist(0.12) // 손목꺾기 - wrist twist\n .elbowLockApply(0.15) // 팔꿈치꺾기 - elbow lock\n .jointLock(0.12) // 관절꺾기 - joint lock\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Nak Bup - 국술낙법 (Break-falls and Acrobatics)\n *\n * Kuk Sool Won acrobatic counter sequence.\n * Roll recovery into counter-attack.\n * Safe falling techniques (낙법).\n *\n * @korean 국술낙법콤보애니메이션\n */\nexport const COMBO_KUKSOOL_NAKBUP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_nakbup\", \"국술낙법\")\n .asAttack(0.65)\n .duck(0.1) // 피하기 - evade\n .sweep(0.12) // 걸기 - sweep from ground\n .chamber(0.1) // 준비 - recovery chamber\n .extend(0.12) // 발차기 - rising kick\n .recover(0.21)\n .build();\n\n/**\n * Kuk Sool Ho Shin Sul - 국술호신술 (Self-Defense)\n *\n * Kuk Sool Won self-defense combination.\n * Defensive parry into vital point strikes.\n * Practical self-defense techniques (호신술).\n *\n * @korean 국술호신술콤보애니메이션\n */\nexport const COMBO_KUKSOOL_HOSHIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_hoshin\", \"국술호신술\")\n .asAttack(0.55)\n .counterParry(0.08) // 받아치기 - parry counter\n .throatStrike(0.08) // 인후타격 - throat strike\n .groinStrike(0.1) // 낭심타격 - groin strike\n .kneeStrike(0.1) // 무릎치기 - knee\n .recover(0.19)\n .build();\n\n/**\n * Kuk Sool Beom Hyung - 국술범형 (Tiger Style)\n *\n * Kuk Sool Won tiger animal style combo.\n * Powerful clawing and pouncing attacks.\n * One of the traditional animal forms (동물형).\n *\n * @korean 국술범형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_TIGER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_tiger\", \"국술범형\")\n .asAttack(0.65)\n .punchWindup(0.1) // 준비 - ready\n .palmStrike(0.1) // 호조 - tiger claw 1\n .palmStrike(0.1) // 호조 - tiger claw 2\n .jump(0.1) // 도약 - leap\n .slamDown(0.12) // 덮치기 - pounce\n .recover(0.13)\n .build();\n\n/**\n * Kuk Sool Hak Hyung - 국술학형 (Crane Style)\n *\n * Kuk Sool Won crane animal style combo.\n * Graceful evasion with precision beak strikes.\n * Crane form emphasizing balance and accuracy (학형).\n *\n * @korean 국술학형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_CRANE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_crane\", \"국술학형\")\n .asAttack(0.6)\n .weave(0.1) // 피하기 - graceful evasion\n .nerveStrike(0.08) // 학부리 - crane beak strike 1\n .sideStepRight(0.08) // 옆걸음 - side step\n .nerveStrike(0.08) // 학부리 - crane beak strike 2\n .sideKickChamber(0.1) // 준비 - side kick chamber\n .sideKickExtend(0.1) // 옆차기 - side kick\n .recover(0.06)\n .build();\n\n/**\n * Kuk Sool Yong Hyung - 국술용형 (Dragon Style)\n *\n * Kuk Sool Won dragon animal style combo.\n * Coiling movements with spiraling attacks.\n * Dragon form emphasizing fluidity and power (용형).\n *\n * @korean 국술용형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_DRAGON_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_dragon\", \"국술용형\")\n .asAttack(0.73)\n .spin(0.12) // 회전 - coiling spin\n .palmStrike(0.1) // 용조 - dragon palm\n .wristGrab(0.1) // 잡아치기 - grab strike\n .throwEntry(0.08) // 진입 - load for throw\n .throwExecute(0.12) // 용휘 - dragon whip throw\n .recover(0.21)\n .build();\n\n/**\n * Kuk Sool Sa Hyung - 국술사형 (Snake Style)\n *\n * Kuk Sool Won snake animal style combo.\n * Quick precise strikes to vital points.\n * Snake form emphasizing speed and precision (사형).\n *\n * @korean 국술사형콤보애니메이션\n */\nexport const COMBO_KUKSOOL_SNAKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_kuksool_snake\", \"국술사형\")\n .asAttack(0.5)\n .nerveStrike(0.06) // 사두 - snake head strike\n .jugularStrike(0.08) // 경정맥타격 - jugular strike\n .fingerLockTwist(0.1) // 손가락꺾기 - finger manipulation\n .throatStrike(0.08) // 인후타격 - throat strike\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FINISHER COMBOS (마무리 콤보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Knockout Combo - 녹아웃콤보\n *\n * Power combo designed for finish.\n * Maximum damage output.\n *\n * @korean 녹아웃콤보애니메이션\n */\nexport const COMBO_KNOCKOUT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_knockout\", \"녹아웃콤보\")\n .asAttack(0.65)\n .overhandPunch(0.15) // Overhand\n .hookPunch(0.12) // Hook\n .uppercutPunch(0.12) // Uppercut finish\n .recover(0.26)\n .build();\n\n/**\n * Spinning Destruction - 회전파괴\n *\n * Spinning attacks combo.\n * Spectacular power shots.\n *\n * @korean 회전파괴애니메이션\n */\nexport const COMBO_SPINNING_DESTRUCTION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"combo_spinning_destruction\", \"회전파괴\")\n .asAttack(0.7)\n .spin(0.12)\n .spinKick(0.15) // Spinning kick\n .spin(0.1)\n .elbowStrike(0.12) // Spinning elbow\n .recover(0.21)\n .build();\n\n/**\n * Question Mark to Finish - 물음표마무리\n *\n * Question mark kick setup to finish.\n * Deceptive power combo.\n *\n * @korean 물음표마무리애니메이션\n */\nexport const COMBO_QUESTION_MARK_FINISH_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"combo_question_mark_finish\",\n \"물음표마무리\",\n )\n .asAttack(0.65)\n .lowKickChamber(0.1) // Fake low\n .roundhouse(0.15) // Head kick\n .punchExtend(0.12) // Follow-up punch\n .recover(0.28)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT COMBO ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all combo animations for easy access\n * 콤보 애니메이션 맵\n */\nexport const COMBO_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map(\n [\n // Boxing (복싱)\n [\"combo_one_two\", COMBO_ONE_TWO_ANIMATION],\n [\"combo_one_two_hook\", COMBO_ONE_TWO_HOOK_ANIMATION],\n [\"combo_double_jab_cross\", COMBO_DOUBLE_JAB_CROSS_ANIMATION],\n [\"combo_body_head\", COMBO_BODY_HEAD_ANIMATION],\n [\"combo_hook_uppercut\", COMBO_HOOK_UPPERCUT_ANIMATION],\n\n // Kickboxing (킥복싱)\n [\"combo_one_two_kick\", COMBO_ONE_TWO_KICK_ANIMATION],\n [\"combo_kick_punch_kick\", COMBO_KICK_PUNCH_KICK_ANIMATION],\n [\"combo_low_high_kick\", COMBO_LOW_HIGH_KICK_ANIMATION],\n [\"combo_switch_kick\", COMBO_SWITCH_KICK_ANIMATION],\n [\"combo_jab_low_kick\", COMBO_JAB_LOW_KICK_ANIMATION],\n\n // Knee/Elbow (무릎/팔꿈치)\n [\"combo_clinch_knee_elbow\", COMBO_CLINCH_KNEE_ELBOW_ANIMATION],\n [\"combo_double_knee\", COMBO_DOUBLE_KNEE_ANIMATION],\n [\"combo_elbow_chain\", COMBO_ELBOW_CHAIN_ANIMATION],\n [\"combo_knee_elbow_knee\", COMBO_KNEE_ELBOW_KNEE_ANIMATION],\n\n // Korean Traditional Martial Arts (한국전통무술)\n [\"combo_taekwondo_triple\", COMBO_TAEKWONDO_TRIPLE_ANIMATION],\n [\"combo_taekkyeon_poom\", COMBO_TAEKKYEON_POOM_ANIMATION],\n [\"combo_taekkyeon_hwalgae\", COMBO_TAEKKYEON_HWALGAE_ANIMATION],\n [\"combo_subak_chain\", COMBO_SUBAK_CHAIN_ANIMATION],\n [\"combo_hapkido_flow\", COMBO_HAPKIDO_FLOW_ANIMATION],\n [\"combo_yudo_counter\", COMBO_YUDO_COUNTER_ANIMATION],\n\n // Korean Grappling/Military (한국유술/군사무술)\n [\"combo_ssireum_mechi\", COMBO_SSIREUM_MECHI_ANIMATION],\n [\"combo_teukgong_counter\", COMBO_TEUKGONG_COUNTER_ANIMATION],\n [\"combo_clinch_geupso\", COMBO_CLINCH_GEUPSO_ANIMATION],\n [\"combo_hwarang_bicheon\", COMBO_HWARANG_BICHEON_ANIMATION],\n\n // Kuk Sool Won (국술원)\n [\"combo_kuksool_suki\", COMBO_KUKSOOL_SUKI_ANIMATION],\n [\"combo_kuksool_joksul\", COMBO_KUKSOOL_JOKSUL_ANIMATION],\n [\"combo_kuksool_tooki\", COMBO_KUKSOOL_TOOKI_ANIMATION],\n [\"combo_kuksool_kwanjyel\", COMBO_KUKSOOL_KWANJYEL_ANIMATION],\n [\"combo_kuksool_nakbup\", COMBO_KUKSOOL_NAKBUP_ANIMATION],\n [\"combo_kuksool_hoshin\", COMBO_KUKSOOL_HOSHIN_ANIMATION],\n [\"combo_kuksool_tiger\", COMBO_KUKSOOL_TIGER_ANIMATION],\n [\"combo_kuksool_crane\", COMBO_KUKSOOL_CRANE_ANIMATION],\n [\"combo_kuksool_dragon\", COMBO_KUKSOOL_DRAGON_ANIMATION],\n [\"combo_kuksool_snake\", COMBO_KUKSOOL_SNAKE_ANIMATION],\n\n // Finishers (마무리)\n [\"combo_knockout\", COMBO_KNOCKOUT_ANIMATION],\n [\"combo_spinning_destruction\", COMBO_SPINNING_DESTRUCTION_ANIMATION],\n [\"combo_question_mark_finish\", COMBO_QUESTION_MARK_FINISH_ANIMATION],\n ],\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DarkOpsAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/DarkOpsAnimations.ts"],"sourcesContent":["/**\n * Dark Ops Animations Module\n *\n * Lethal assassination and incapacitation techniques (암살 기술).\n * High-precision vital point targeting for maximum effect.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 암살자 전용 치명 기술 애니메이션 모듈\n *\n * @module systems/animation/DarkOpsAnimations\n * @korean 암살애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport {\n MartialArtsAnimationBuilder,\n TECHNIQUE_TIMING,\n} from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// VASCULAR ATTACKS (혈관 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Silent Carotid Strike - 경동맥침묵\n *\n * Silent approach and carotid artery compression.\n * Induces unconsciousness through blood flow restriction.\n *\n * @korean 경동맥침묵애니메이션\n */\nexport const DARKOPS_SILENT_CAROTID_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_silent_carotid\", \"경동맥침묵\")\n .asAttack(0.7)\n .shift(0.15, \"ease-out\") // Silent approach from behind\n .clinchGrab(0.15) // Secure position on neck\n .chokeGrip(0.2) // Apply carotid compression\n .recover(0.2)\n .build();\n\n/**\n * Jugular Strike - 경정맥타격\n *\n * Precise strike to the jugular vein.\n * Causes immediate disorientation.\n *\n * Duration: 580ms (Knife-hand to neck)\n *\n * @korean 경정맥타격애니메이션\n */\nexport const DARKOPS_JUGULAR_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_jugular_strike\", \"경정맥타격\")\n .asAttack(0.58)\n .punchWindup(0.11) // Angle setup\n .jugularStrike(0.17) // Knife-hand to jugular\n .punchPeak(0.04)\n .recover(0.26)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// NERVE ATTACKS (신경 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Nerve Paralysis Strike - 신경마비\n *\n * Precision strike to motor nerve clusters.\n * Causes temporary limb paralysis.\n *\n * Duration: 680ms (Deliberate nerve strike)\n *\n * @korean 신경마비애니메이션\n */\nexport const DARKOPS_NERVE_PARALYSIS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_nerve_paralysis\", \"신경마비\")\n .asAttack(0.68)\n .elbowChamber(0.14) // Careful positioning\n .nerveStrike(0.21) // Precision nerve cluster strike\n .punchPeak(0.05) // Hold for accuracy\n .recover(0.28)\n .build();\n\n/**\n * Brachial Plexus Strike - 상완신경총\n *\n * Strike to brachial plexus nerve bundle.\n * Causes arm numbness and weakness.\n *\n * @korean 상완신경총애니메이션\n */\nexport const DARKOPS_BRACHIAL_PLEXUS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_brachial_plexus\", \"상완신경총\")\n .asAttack(0.4)\n .elbowChamber(0.1)\n .brachialElbow(0.12) // Elbow to brachial nerve cluster\n .recover(0.18)\n .build();\n\n/**\n * Femoral Nerve Strike - 대퇴신경타격\n *\n * Strike to femoral nerve in thigh.\n * Causes leg collapse.\n *\n * @korean 대퇴신경타격애니메이션\n */\nexport const DARKOPS_FEMORAL_NERVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_femoral_nerve\", \"대퇴신경타격\")\n .asAttack(0.45)\n .withClinch()\n .femoralKnee(0.15) // Knee to femoral nerve in thigh\n .recover(0.3)\n .build();\n\n/**\n * Sciatic Nerve Strike - 좌골신경타격\n *\n * Strike to sciatic nerve.\n * Causes shooting pain and leg weakness.\n *\n * @korean 좌골신경타격애니메이션\n */\nexport const DARKOPS_SCIATIC_NERVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_sciatic_nerve\", \"좌골신경타격\")\n .asAttack(0.42)\n .lowKickChamber(0.1)\n .lowKickSweep(0.12) // Low kick to back of leg\n .recover(0.2)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ORGAN ATTACKS (장기 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Liver Disruption - 간장파괴\n *\n * Devastating hook to liver.\n * Causes immediate incapacitation.\n *\n * @korean 간장파괴애니메이션\n */\nexport const DARKOPS_LIVER_DISRUPTION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_liver_disruption\", \"간장파괴\")\n .asAttack(0.45)\n .uppercutCrouch(0.1) // Drop level\n .liverShot(0.15) // Devastating hook to liver\n .recover(0.2)\n .build();\n\n/**\n * Kidney Strike - 신장타격\n *\n * Knee or elbow to kidney region.\n * Causes severe pain and potential organ damage.\n *\n * @korean 신장타격애니메이션\n */\nexport const DARKOPS_KIDNEY_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_kidney_strike\", \"신장타격\")\n .asAttack(0.48)\n .clinchGrab(0.1)\n .kidneyStrike(0.15) // Hook to kidney region\n .recover(0.23)\n .build();\n\n/**\n * Spleen Rupture Strike - 비장파열\n *\n * Powerful strike to spleen area.\n * Causes internal bleeding risk.\n *\n * @korean 비장파열애니메이션\n */\nexport const DARKOPS_SPLEEN_RUPTURE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_spleen_rupture\", \"비장파열\")\n .asAttack(0.42)\n .hookWindup(0.1)\n .hookPunch(0.12) // Left hook to spleen\n .recover(0.2)\n .build();\n\n/**\n * Solar Plexus Paralyze - 명치마비\n *\n * Strike to solar plexus nerve center.\n * Causes diaphragm spasm and breathing difficulty.\n *\n * @korean 명치마비애니메이션\n */\nexport const DARKOPS_SOLAR_PLEXUS_PARALYZE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"darkops_solar_plexus_paralyze\",\n \"명치마비\",\n )\n .asAttack(0.4)\n .punchWindup(0.08)\n .solarPlexusStrike(0.12) // Deep penetrating strike to solar plexus\n .recover(0.2)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// THROAT ATTACKS (인후 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Throat Strike - 인후타격\n *\n * Strike to throat/trachea.\n * Causes airway obstruction.\n *\n * Duration: 440ms (Fast throat strike)\n *\n * @korean 인후타격애니메이션\n */\nexport const DARKOPS_THROAT_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_throat_strike\", \"인후타격\")\n .asAttack(0.44)\n .elbowChamber(0.07) // Compact setup\n .throatStrike(0.13) // Spear hand to trachea\n .recover(0.24)\n .withSpearHand(\"right\")\n .build();\n\n/**\n * Larynx Crush - 후두압박\n *\n * Grab and compress larynx.\n * Causes voice loss and panic.\n *\n * @korean 후두압박애니메이션\n */\nexport const DARKOPS_LARYNX_CRUSH_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_larynx_crush\", \"후두압박\")\n .asAttack(0.55)\n .clinchGrab(0.12) // Close distance, grip throat\n .wristGrab(0.15) // Precise larynx compression grip\n .chokeGrip(0.15) // Compress\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// HEAD/SKULL ATTACKS (두부 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Temple Strike - 관자놀이타격 (Dark Ops Precision Temple Elbow)\n *\n * Surgical precision elbow strike to temple bone.\n * Assassin's technique for instant concussion and disorientation.\n *\n * Phases:\n * 1. Setup (준비): 90ms - Careful positioning at perfect angle\n * 2. Temple Strike (관자놀이): 140ms - Angled horizontal elbow to temple\n * 3. Impact Hold (압박): 70ms - Brief hold at vital point\n * 4. Withdraw (철수): 180ms - Smooth extraction\n *\n * Duration: 480ms (Precise, controlled assassination strike)\n *\n * @korean 관자놀이타격애니메이션\n */\nexport const DARKOPS_TEMPLE_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_temple_strike\", \"관자놀이타격\")\n .asAttack(0.48)\n .elbowChamber(0.09) // 준비 - Careful angle setup\n .templeElbow(0.14) // 관자놀이 - Precise angled elbow to temple\n .templeElbow(0.07) // 압박 - Hold on vital point\n .recover(0.18) // 철수 - Controlled withdrawal\n .build();\n\n/**\n * Jaw Dislocation - 턱탈구\n *\n * Uppercut to dislocate jaw.\n * Causes extreme pain and inability to speak.\n *\n * @korean 턱탈구애니메이션\n */\nexport const DARKOPS_JAW_DISLOCATION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_jaw_dislocation\", \"턱탈구\")\n .asAttack(0.42)\n .uppercutCrouch(0.1)\n .jawStrike(0.12) // Rising palm to jaw\n .recover(0.2)\n .build();\n\n/**\n * Ear Strike - 이타격\n *\n * Cupped palm strike to ear.\n * Causes tympanic membrane rupture.\n *\n * @korean 이타격애니메이션\n */\nexport const DARKOPS_EAR_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_ear_strike\", \"이타격\")\n .asAttack(TECHNIQUE_TIMING.FAST.total)\n .hookWindup(TECHNIQUE_TIMING.FAST.chamber)\n .palmStrike(TECHNIQUE_TIMING.FAST.extend + TECHNIQUE_TIMING.FAST.peak) // Cupped palm to ear\n .recover(TECHNIQUE_TIMING.FAST.retract + TECHNIQUE_TIMING.FAST.recover)\n .build();\n\n/**\n * Eye Gouge - 안구압박\n *\n * Finger strike to eyes.\n * Causes temporary or permanent blindness.\n *\n * Duration: 420ms (Very fast gouge)\n *\n * @korean 안구압박애니메이션\n */\nexport const DARKOPS_EYE_GOUGE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_eye_gouge\", \"안구압박\")\n .asAttack(0.42)\n .punchWindup(0.07) // Minimal chamber\n .eyeGouge(0.12) // Two-finger strike to eyes\n .recover(0.23)\n .withSpearHand(\"right\") // Two-finger extension\n .build();\n\n/**\n * Occipital Strike - 후두골타격\n *\n * Strike to base of skull.\n * Causes unconsciousness.\n *\n * @korean 후두골타격애니메이션\n */\nexport const DARKOPS_OCCIPITAL_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_occipital_strike\", \"후두골타격\")\n .asAttack(0.4)\n .occipitalStrike(0.15) // Palm heel to base of skull\n .recover(0.25)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// SPINAL ATTACKS (척추 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Spinal Strike - 척추타격\n *\n * Strike to spinal column.\n * Causes pain and potential paralysis.\n *\n * @korean 척추타격애니메이션\n */\nexport const DARKOPS_SPINAL_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_spinal_strike\", \"척추타격\")\n .asAttack(0.45)\n .elbowChamber(0.1)\n .spineStrike(0.12) // Downward elbow to spine\n .recover(0.23)\n .build();\n\n/**\n * Cervical Twist - 경추비틀기\n *\n * Neck manipulation technique.\n * Dangerous cervical vertebrae pressure.\n *\n * @korean 경추비틀기애니메이션\n */\nexport const DARKOPS_CERVICAL_TWIST_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_cervical_twist\", \"경추비틀기\")\n .asAttack(0.65)\n .clinchGrab(0.15)\n .wristTwist(0.2) // Neck rotation\n .recover(0.3)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// CHOKE ATTACKS (교살 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Rear Naked Choke - 후방나체교살\n *\n * Classic rear chokehold.\n * Blood choke causing unconsciousness.\n *\n * @korean 후방나체교살애니메이션\n */\nexport const DARKOPS_REAR_CHOKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_rear_choke\", \"후방나체교살\")\n .asAttack(0.7)\n .spin(0.15) // Circle behind opponent\n .clinchGrab(0.15) // Secure rear position\n .chokeGrip(0.22) // Apply rear naked choke\n .recover(0.18)\n .build();\n\n/**\n * Guillotine Choke - 길로틴초크\n *\n * Front headlock choke.\n * Air and blood choke combined.\n *\n * @korean 길로틴초크애니메이션\n */\nexport const DARKOPS_GUILLOTINE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_guillotine\", \"길로틴초크\")\n .asAttack(0.65)\n .parry(0.1) // Catch head\n .clinchGrab(0.12)\n .chokeGrip(0.2) // Apply guillotine choke\n .recover(0.23)\n .build();\n\n/**\n * Triangle Choke - 삼각조르기\n *\n * Leg triangle choke.\n * Blood choke using legs.\n *\n * @korean 삼각조르기애니메이션\n */\nexport const DARKOPS_TRIANGLE_CHOKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_triangle_choke\", \"삼각조르기\")\n .asAttack(0.75)\n .sweep(0.15) // Get to ground\n .chamber(0.12) // Position legs\n .jointLock(0.25) // Apply triangle\n .recover(0.23)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// LIMB DESTRUCTION (사지 파괴)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Achilles Sever - 아킬레스건절단 (DarkOps Achilles Tendon Strike)\n *\n * Precise striking attack to achilles tendon.\n * DarkOps: Combat disabling technique, permanent damage objective.\n * Uses heel stomp or blade of foot to sever/rupture achilles.\n *\n * Korean Special Operations: 아킬레스건타격 (Achilles Tendon Strike)\n * - 정밀조준 (Precise Targeting): Specific anatomical point\n * - 하향강타 (Downward Strike): Stomping force to tendon\n * - 절단의도 (Severing Intent): Rupture, not just pain\n * - 보행불가 (Mobility Denial): Immediate walking disability\n *\n * Contrasts with Gon ankle pick:\n * - DarkOps: Striking, severing, disable (combat destruction)\n * - Gon: Grabbing, pulling, takedown (control/submission)\n *\n * Attack to Achilles tendon.\n * Causes inability to walk.\n *\n * @korean 아킬레스건절단애니메이션\n */\nexport const DARKOPS_ACHILLES_SEVER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_achilles_sever\", \"아킬레스건절단\")\n .asAttack(0.5)\n .axeKickRise(0.12) // Raise leg for downward strike (different from sweep)\n .axeKickChop(0.15) // Precise downward heel strike to achilles\n .recover(0.23)\n .build();\n\n/**\n * Kneecap Strike - 슬개골타격\n *\n * Oblique kick to knee.\n * Hyperextends or dislocates knee.\n *\n * @korean 슬개골타격애니메이션\n */\nexport const DARKOPS_KNEECAP_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_kneecap_strike\", \"슬개골타격\")\n .asAttack(0.45)\n .pushKickChamber(0.1)\n .pushKickThrust(0.12) // Stomp to knee\n .recover(0.23)\n .build();\n\n/**\n * Elbow Hyperextension - 팔꿈치과신전\n *\n * Standing arm bar hyperextension.\n * Breaks or dislocates elbow.\n *\n * @korean 팔꿈치과신전애니메이션\n */\nexport const DARKOPS_ELBOW_HYPEREXTEND_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"darkops_elbow_hyperextend\",\n \"팔꿈치과신전\",\n )\n .asAttack(0.6)\n .wristGrab(0.12)\n .armBarEntry(0.15)\n .armBarDrop(0.15) // Hyperextend\n .recover(0.18)\n .build();\n\n/**\n * Finger Break - 손가락파괴\n *\n * Small joint manipulation to fingers.\n * Breaks or dislocates fingers.\n *\n * @korean 손가락파괴애니메이션\n */\nexport const DARKOPS_FINGER_BREAK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_finger_break\", \"손가락파괴\")\n .asAttack(0.45)\n .wristGrab(0.12)\n .wristTwist(0.15) // Finger manipulation\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// SILENT TAKEDOWNS (무음제압)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Silent Takedown - 무음제압\n *\n * Silent approach and takedown.\n * No sound, instant incapacitation.\n *\n * @korean 무음제압애니메이션\n */\nexport const DARKOPS_SILENT_TAKEDOWN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_silent_takedown\", \"무음제압\")\n .asAttack(0.75)\n .shift(0.2, \"ease-out\") // Silent approach\n .clinchGrab(0.15) // Secure\n .slamDown(0.2) // Take down silently\n .recover(0.2)\n .build();\n\n/**\n * Sleeper Hold - 수면유도\n *\n * Blood choke to induce sleep.\n * Gentle unconsciousness induction.\n *\n * @korean 수면유도애니메이션\n */\nexport const DARKOPS_SLEEPER_HOLD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_sleeper_hold\", \"수면유도\")\n .asAttack(0.7)\n .shift(0.15, \"ease-out\") // Approach from behind\n .clinchGrab(0.12) // Secure head/neck\n .chokeGrip(0.25) // Sustained blood choke pressure\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT DARK OPS ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all dark ops animations for easy access\n * 암살 애니메이션 맵\n */\nexport const DARKOPS_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> =\n new Map([\n // Vascular\n [\"darkops_silent_carotid\", DARKOPS_SILENT_CAROTID_ANIMATION],\n [\"darkops_jugular_strike\", DARKOPS_JUGULAR_STRIKE_ANIMATION],\n\n // Nerve\n [\"darkops_nerve_paralysis\", DARKOPS_NERVE_PARALYSIS_ANIMATION],\n [\"darkops_brachial_plexus_strike\", DARKOPS_BRACHIAL_PLEXUS_ANIMATION],\n [\"darkops_femoral_nerve_strike\", DARKOPS_FEMORAL_NERVE_ANIMATION],\n [\"darkops_sciatic_nerve\", DARKOPS_SCIATIC_NERVE_ANIMATION],\n\n // Organ\n [\"darkops_liver_disruption\", DARKOPS_LIVER_DISRUPTION_ANIMATION],\n [\"darkops_kidney_strike\", DARKOPS_KIDNEY_STRIKE_ANIMATION],\n [\"darkops_spleen_rupture\", DARKOPS_SPLEEN_RUPTURE_ANIMATION],\n [\"darkops_solar_plexus_paralyze\", DARKOPS_SOLAR_PLEXUS_PARALYZE_ANIMATION],\n\n // Throat\n [\"darkops_throat_strike\", DARKOPS_THROAT_STRIKE_ANIMATION],\n [\"darkops_larynx_crush\", DARKOPS_LARYNX_CRUSH_ANIMATION],\n\n // Head/Skull\n [\"darkops_temple_strike\", DARKOPS_TEMPLE_STRIKE_ANIMATION],\n [\"darkops_jaw_dislocation\", DARKOPS_JAW_DISLOCATION_ANIMATION],\n [\"darkops_ear_strike\", DARKOPS_EAR_STRIKE_ANIMATION],\n [\"darkops_eye_gouge\", DARKOPS_EYE_GOUGE_ANIMATION],\n [\"darkops_occipital_strike\", DARKOPS_OCCIPITAL_STRIKE_ANIMATION],\n\n // Spinal\n [\"darkops_spinal_strike\", DARKOPS_SPINAL_STRIKE_ANIMATION],\n [\"darkops_cervical_twist\", DARKOPS_CERVICAL_TWIST_ANIMATION],\n\n // Chokes\n [\"darkops_rear_choke\", DARKOPS_REAR_CHOKE_ANIMATION],\n [\"darkops_guillotine\", DARKOPS_GUILLOTINE_ANIMATION],\n [\"darkops_triangle_choke\", DARKOPS_TRIANGLE_CHOKE_ANIMATION],\n\n // Limb Destruction\n [\"darkops_achilles_sever\", DARKOPS_ACHILLES_SEVER_ANIMATION],\n [\"darkops_kneecap_strike\", DARKOPS_KNEECAP_STRIKE_ANIMATION],\n [\"darkops_elbow_hyperextend\", DARKOPS_ELBOW_HYPEREXTEND_ANIMATION],\n [\"darkops_finger_break\", DARKOPS_FINGER_BREAK_ANIMATION],\n\n // Silent Takedowns\n [\"darkops_silent_takedown\", DARKOPS_SILENT_TAKEDOWN_ANIMATION],\n [\"darkops_sleeper_hold\", DARKOPS_SLEEPER_HOLD_ANIMATION],\n ]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DarkOpsAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/DarkOpsAnimations.ts"],"sourcesContent":["/**\n * Dark Ops Animations Module\n *\n * Lethal assassination and incapacitation techniques (암살 기술).\n * High-precision vital point targeting for maximum effect.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 암살자 전용 치명 기술 애니메이션 모듈\n *\n * @module systems/animation/DarkOpsAnimations\n * @korean 암살애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport {\n MartialArtsAnimationBuilder,\n TECHNIQUE_TIMING,\n} from \"../builders/MartialArtsAnimationBuilder\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// VASCULAR ATTACKS (혈관 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Silent Carotid Strike - 경동맥침묵\n *\n * Silent approach and carotid artery compression.\n * Induces unconsciousness through blood flow restriction.\n *\n * @korean 경동맥침묵애니메이션\n */\nexport const DARKOPS_SILENT_CAROTID_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_silent_carotid\", \"경동맥침묵\")\n .asAttack(0.7)\n .shift(0.15, \"ease-out\") // Silent approach from behind\n .clinchGrab(0.15) // Secure position on neck\n .chokeGrip(0.2) // Apply carotid compression\n .recover(0.2)\n .build();\n\n/**\n * Jugular Strike - 경정맥타격\n *\n * Precise strike to the jugular vein.\n * Causes immediate disorientation.\n *\n * Duration: 580ms (Knife-hand to neck)\n *\n * @korean 경정맥타격애니메이션\n */\nexport const DARKOPS_JUGULAR_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_jugular_strike\", \"경정맥타격\")\n .asAttack(0.58)\n .punchWindup(0.11) // Angle setup\n .jugularStrike(0.17) // Knife-hand to jugular\n .punchPeak(0.04)\n .recover(0.26)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// NERVE ATTACKS (신경 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Nerve Paralysis Strike - 신경마비\n *\n * Precision strike to motor nerve clusters.\n * Causes temporary limb paralysis.\n *\n * Duration: 680ms (Deliberate nerve strike)\n *\n * @korean 신경마비애니메이션\n */\nexport const DARKOPS_NERVE_PARALYSIS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_nerve_paralysis\", \"신경마비\")\n .asAttack(0.68)\n .elbowChamber(0.14) // Careful positioning\n .nerveStrike(0.21) // Precision nerve cluster strike\n .punchPeak(0.05) // Hold for accuracy\n .recover(0.28)\n .build();\n\n/**\n * Brachial Plexus Strike - 상완신경총\n *\n * Strike to brachial plexus nerve bundle.\n * Causes arm numbness and weakness.\n *\n * @korean 상완신경총애니메이션\n */\nexport const DARKOPS_BRACHIAL_PLEXUS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_brachial_plexus\", \"상완신경총\")\n .asAttack(0.4)\n .elbowChamber(0.1)\n .brachialElbow(0.12) // Elbow to brachial nerve cluster\n .recover(0.18)\n .build();\n\n/**\n * Femoral Nerve Strike - 대퇴신경타격\n *\n * Strike to femoral nerve in thigh.\n * Causes leg collapse.\n *\n * @korean 대퇴신경타격애니메이션\n */\nexport const DARKOPS_FEMORAL_NERVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_femoral_nerve\", \"대퇴신경타격\")\n .asAttack(0.45)\n .withClinch()\n .femoralKnee(0.15) // Knee to femoral nerve in thigh\n .recover(0.3)\n .build();\n\n/**\n * Sciatic Nerve Strike - 좌골신경타격\n *\n * Strike to sciatic nerve.\n * Causes shooting pain and leg weakness.\n *\n * @korean 좌골신경타격애니메이션\n */\nexport const DARKOPS_SCIATIC_NERVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_sciatic_nerve\", \"좌골신경타격\")\n .asAttack(0.42)\n .lowKickChamber(0.1)\n .lowKickSweep(0.12) // Low kick to back of leg\n .recover(0.2)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ORGAN ATTACKS (장기 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Liver Disruption - 간장파괴\n *\n * Devastating hook to liver.\n * Causes immediate incapacitation.\n *\n * @korean 간장파괴애니메이션\n */\nexport const DARKOPS_LIVER_DISRUPTION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_liver_disruption\", \"간장파괴\")\n .asAttack(0.45)\n .uppercutCrouch(0.1) // Drop level\n .liverShot(0.15) // Devastating hook to liver\n .recover(0.2)\n .build();\n\n/**\n * Kidney Strike - 신장타격\n *\n * Knee or elbow to kidney region.\n * Causes severe pain and potential organ damage.\n *\n * @korean 신장타격애니메이션\n */\nexport const DARKOPS_KIDNEY_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_kidney_strike\", \"신장타격\")\n .asAttack(0.48)\n .clinchGrab(0.1)\n .kidneyStrike(0.15) // Hook to kidney region\n .recover(0.23)\n .build();\n\n/**\n * Spleen Rupture Strike - 비장파열\n *\n * Powerful strike to spleen area.\n * Causes internal bleeding risk.\n *\n * @korean 비장파열애니메이션\n */\nexport const DARKOPS_SPLEEN_RUPTURE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_spleen_rupture\", \"비장파열\")\n .asAttack(0.42)\n .hookWindup(0.1)\n .hookPunch(0.12) // Left hook to spleen\n .recover(0.2)\n .build();\n\n/**\n * Solar Plexus Paralyze - 명치마비\n *\n * Strike to solar plexus nerve center.\n * Causes diaphragm spasm and breathing difficulty.\n *\n * @korean 명치마비애니메이션\n */\nexport const DARKOPS_SOLAR_PLEXUS_PARALYZE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"darkops_solar_plexus_paralyze\",\n \"명치마비\",\n )\n .asAttack(0.4)\n .punchWindup(0.08)\n .solarPlexusStrike(0.12) // Deep penetrating strike to solar plexus\n .recover(0.2)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// THROAT ATTACKS (인후 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Throat Strike - 인후타격\n *\n * Strike to throat/trachea.\n * Causes airway obstruction.\n *\n * Duration: 440ms (Fast throat strike)\n *\n * @korean 인후타격애니메이션\n */\nexport const DARKOPS_THROAT_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_throat_strike\", \"인후타격\")\n .asAttack(0.44)\n .elbowChamber(0.07) // Compact setup\n .throatStrike(0.13) // Spear hand to trachea\n .recover(0.24)\n .withSpearHand(\"right\")\n .build();\n\n/**\n * Larynx Crush - 후두압박\n *\n * Grab and compress larynx.\n * Causes voice loss and panic.\n *\n * @korean 후두압박애니메이션\n */\nexport const DARKOPS_LARYNX_CRUSH_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_larynx_crush\", \"후두압박\")\n .asAttack(0.55)\n .clinchGrab(0.12) // Close distance, grip throat\n .wristGrab(0.15) // Precise larynx compression grip\n .chokeGrip(0.15) // Compress\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// HEAD/SKULL ATTACKS (두부 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Temple Strike - 관자놀이타격 (Dark Ops Precision Temple Elbow)\n *\n * Surgical precision elbow strike to temple bone.\n * Assassin's technique for instant concussion and disorientation.\n *\n * Phases:\n * 1. Setup (준비): 90ms - Careful positioning at perfect angle\n * 2. Temple Strike (관자놀이): 140ms - Angled horizontal elbow to temple\n * 3. Impact Hold (압박): 70ms - Brief hold at vital point\n * 4. Withdraw (철수): 180ms - Smooth extraction\n *\n * Duration: 480ms (Precise, controlled assassination strike)\n *\n * @korean 관자놀이타격애니메이션\n */\nexport const DARKOPS_TEMPLE_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_temple_strike\", \"관자놀이타격\")\n .asAttack(0.48)\n .elbowChamber(0.09) // 준비 - Careful angle setup\n .templeElbow(0.14) // 관자놀이 - Precise angled elbow to temple\n .templeElbow(0.07) // 압박 - Hold on vital point\n .recover(0.18) // 철수 - Controlled withdrawal\n .build();\n\n/**\n * Jaw Dislocation - 턱탈구\n *\n * Uppercut to dislocate jaw.\n * Causes extreme pain and inability to speak.\n *\n * @korean 턱탈구애니메이션\n */\nexport const DARKOPS_JAW_DISLOCATION_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_jaw_dislocation\", \"턱탈구\")\n .asAttack(0.42)\n .uppercutCrouch(0.1)\n .jawStrike(0.12) // Rising palm to jaw\n .recover(0.2)\n .build();\n\n/**\n * Ear Strike - 이타격\n *\n * Cupped palm strike to ear.\n * Causes tympanic membrane rupture.\n *\n * @korean 이타격애니메이션\n */\nexport const DARKOPS_EAR_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_ear_strike\", \"이타격\")\n .asAttack(TECHNIQUE_TIMING.FAST.total)\n .hookWindup(TECHNIQUE_TIMING.FAST.chamber)\n .palmStrike(TECHNIQUE_TIMING.FAST.extend + TECHNIQUE_TIMING.FAST.peak) // Cupped palm to ear\n .recover(TECHNIQUE_TIMING.FAST.retract + TECHNIQUE_TIMING.FAST.recover)\n .build();\n\n/**\n * Eye Gouge - 안구압박\n *\n * Finger strike to eyes.\n * Causes temporary or permanent blindness.\n *\n * Duration: 420ms (Very fast gouge)\n *\n * @korean 안구압박애니메이션\n */\nexport const DARKOPS_EYE_GOUGE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_eye_gouge\", \"안구압박\")\n .asAttack(0.42)\n .punchWindup(0.07) // Minimal chamber\n .eyeGouge(0.12) // Two-finger strike to eyes\n .recover(0.23)\n .withSpearHand(\"right\") // Two-finger extension\n .build();\n\n/**\n * Occipital Strike - 후두골타격\n *\n * Strike to base of skull.\n * Causes unconsciousness.\n *\n * @korean 후두골타격애니메이션\n */\nexport const DARKOPS_OCCIPITAL_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_occipital_strike\", \"후두골타격\")\n .asAttack(0.4)\n .occipitalStrike(0.15) // Palm heel to base of skull\n .recover(0.25)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// SPINAL ATTACKS (척추 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Spinal Strike - 척추타격\n *\n * Strike to spinal column.\n * Causes pain and potential paralysis.\n *\n * @korean 척추타격애니메이션\n */\nexport const DARKOPS_SPINAL_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_spinal_strike\", \"척추타격\")\n .asAttack(0.45)\n .elbowChamber(0.1)\n .spineStrike(0.12) // Downward elbow to spine\n .recover(0.23)\n .build();\n\n/**\n * Cervical Twist - 경추비틀기\n *\n * Neck manipulation technique.\n * Dangerous cervical vertebrae pressure.\n *\n * @korean 경추비틀기애니메이션\n */\nexport const DARKOPS_CERVICAL_TWIST_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_cervical_twist\", \"경추비틀기\")\n .asAttack(0.65)\n .clinchGrab(0.15)\n .wristTwist(0.2) // Neck rotation\n .recover(0.3)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// CHOKE ATTACKS (교살 공격)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Rear Naked Choke - 후방나체교살\n *\n * Classic rear chokehold.\n * Blood choke causing unconsciousness.\n *\n * @korean 후방나체교살애니메이션\n */\nexport const DARKOPS_REAR_CHOKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_rear_choke\", \"후방나체교살\")\n .asAttack(0.7)\n .spin(0.15) // Circle behind opponent\n .clinchGrab(0.15) // Secure rear position\n .chokeGrip(0.22) // Apply rear naked choke\n .recover(0.18)\n .build();\n\n/**\n * Guillotine Choke - 길로틴초크\n *\n * Front headlock choke.\n * Air and blood choke combined.\n *\n * @korean 길로틴초크애니메이션\n */\nexport const DARKOPS_GUILLOTINE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_guillotine\", \"길로틴초크\")\n .asAttack(0.65)\n .parry(0.1) // Catch head\n .clinchGrab(0.12)\n .chokeGrip(0.2) // Apply guillotine choke\n .recover(0.23)\n .build();\n\n/**\n * Triangle Choke - 삼각조르기\n *\n * Leg triangle choke.\n * Blood choke using legs.\n *\n * @korean 삼각조르기애니메이션\n */\nexport const DARKOPS_TRIANGLE_CHOKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_triangle_choke\", \"삼각조르기\")\n .asAttack(0.75)\n .sweep(0.15) // Get to ground\n .chamber(0.12) // Position legs\n .jointLock(0.25) // Apply triangle\n .recover(0.23)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// LIMB DESTRUCTION (사지 파괴)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Achilles Sever - 아킬레스건절단 (DarkOps Achilles Tendon Strike)\n *\n * Precise striking attack to achilles tendon.\n * DarkOps: Combat disabling technique, permanent damage objective.\n * Uses heel stomp or blade of foot to sever/rupture achilles.\n *\n * Korean Special Operations: 아킬레스건타격 (Achilles Tendon Strike)\n * - 정밀조준 (Precise Targeting): Specific anatomical point\n * - 하향강타 (Downward Strike): Stomping force to tendon\n * - 절단의도 (Severing Intent): Rupture, not just pain\n * - 보행불가 (Mobility Denial): Immediate walking disability\n *\n * Contrasts with Gon ankle pick:\n * - DarkOps: Striking, severing, disable (combat destruction)\n * - Gon: Grabbing, pulling, takedown (control/submission)\n *\n * Attack to Achilles tendon.\n * Causes inability to walk.\n *\n * @korean 아킬레스건절단애니메이션\n */\nexport const DARKOPS_ACHILLES_SEVER_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_achilles_sever\", \"아킬레스건절단\")\n .asAttack(0.5)\n .axeKickRise(0.12) // Raise leg for downward strike (different from sweep)\n .axeKickChop(0.15) // Precise downward heel strike to achilles\n .recover(0.23)\n .build();\n\n/**\n * Kneecap Strike - 슬개골타격\n *\n * Oblique kick to knee.\n * Hyperextends or dislocates knee.\n *\n * @korean 슬개골타격애니메이션\n */\nexport const DARKOPS_KNEECAP_STRIKE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_kneecap_strike\", \"슬개골타격\")\n .asAttack(0.45)\n .pushKickChamber(0.1)\n .pushKickThrust(0.12) // Stomp to knee\n .recover(0.23)\n .build();\n\n/**\n * Elbow Hyperextension - 팔꿈치과신전\n *\n * Standing arm bar hyperextension.\n * Breaks or dislocates elbow.\n *\n * @korean 팔꿈치과신전애니메이션\n */\nexport const DARKOPS_ELBOW_HYPEREXTEND_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"darkops_elbow_hyperextend\",\n \"팔꿈치과신전\",\n )\n .asAttack(0.6)\n .wristGrab(0.12)\n .armBarEntry(0.15)\n .armBarDrop(0.15) // Hyperextend\n .recover(0.18)\n .build();\n\n/**\n * Finger Break - 손가락파괴\n *\n * Small joint manipulation to fingers.\n * Breaks or dislocates fingers.\n *\n * @korean 손가락파괴애니메이션\n */\nexport const DARKOPS_FINGER_BREAK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_finger_break\", \"손가락파괴\")\n .asAttack(0.45)\n .wristGrab(0.12)\n .wristTwist(0.15) // Finger manipulation\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// SILENT TAKEDOWNS (무음제압)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Silent Takedown - 무음제압\n *\n * Silent approach and takedown.\n * No sound, instant incapacitation.\n *\n * @korean 무음제압애니메이션\n */\nexport const DARKOPS_SILENT_TAKEDOWN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_silent_takedown\", \"무음제압\")\n .asAttack(0.75)\n .shift(0.2, \"ease-out\") // Silent approach\n .clinchGrab(0.15) // Secure\n .slamDown(0.2) // Take down silently\n .recover(0.2)\n .build();\n\n/**\n * Sleeper Hold - 수면유도\n *\n * Blood choke to induce sleep.\n * Gentle unconsciousness induction.\n *\n * @korean 수면유도애니메이션\n */\nexport const DARKOPS_SLEEPER_HOLD_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"darkops_sleeper_hold\", \"수면유도\")\n .asAttack(0.7)\n .shift(0.15, \"ease-out\") // Approach from behind\n .clinchGrab(0.12) // Secure head/neck\n .chokeGrip(0.25) // Sustained blood choke pressure\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT DARK OPS ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all dark ops animations for easy access\n * 암살 애니메이션 맵\n */\nexport const DARKOPS_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> =\n new Map([\n // Vascular\n [\"darkops_silent_carotid\", DARKOPS_SILENT_CAROTID_ANIMATION],\n [\"darkops_jugular_strike\", DARKOPS_JUGULAR_STRIKE_ANIMATION],\n\n // Nerve\n [\"darkops_nerve_paralysis\", DARKOPS_NERVE_PARALYSIS_ANIMATION],\n [\"darkops_brachial_plexus_strike\", DARKOPS_BRACHIAL_PLEXUS_ANIMATION],\n [\"darkops_femoral_nerve_strike\", DARKOPS_FEMORAL_NERVE_ANIMATION],\n [\"darkops_sciatic_nerve\", DARKOPS_SCIATIC_NERVE_ANIMATION],\n\n // Organ\n [\"darkops_liver_disruption\", DARKOPS_LIVER_DISRUPTION_ANIMATION],\n [\"darkops_kidney_strike\", DARKOPS_KIDNEY_STRIKE_ANIMATION],\n [\"darkops_spleen_rupture\", DARKOPS_SPLEEN_RUPTURE_ANIMATION],\n [\"darkops_solar_plexus_paralyze\", DARKOPS_SOLAR_PLEXUS_PARALYZE_ANIMATION],\n\n // Throat\n [\"darkops_throat_strike\", DARKOPS_THROAT_STRIKE_ANIMATION],\n [\"darkops_larynx_crush\", DARKOPS_LARYNX_CRUSH_ANIMATION],\n\n // Head/Skull\n [\"darkops_temple_strike\", DARKOPS_TEMPLE_STRIKE_ANIMATION],\n [\"darkops_jaw_dislocation\", DARKOPS_JAW_DISLOCATION_ANIMATION],\n [\"darkops_ear_strike\", DARKOPS_EAR_STRIKE_ANIMATION],\n [\"darkops_eye_gouge\", DARKOPS_EYE_GOUGE_ANIMATION],\n [\"darkops_occipital_strike\", DARKOPS_OCCIPITAL_STRIKE_ANIMATION],\n\n // Spinal\n [\"darkops_spinal_strike\", DARKOPS_SPINAL_STRIKE_ANIMATION],\n [\"darkops_cervical_twist\", DARKOPS_CERVICAL_TWIST_ANIMATION],\n\n // Chokes\n [\"darkops_rear_choke\", DARKOPS_REAR_CHOKE_ANIMATION],\n [\"darkops_guillotine\", DARKOPS_GUILLOTINE_ANIMATION],\n [\"darkops_triangle_choke\", DARKOPS_TRIANGLE_CHOKE_ANIMATION],\n\n // Limb Destruction\n [\"darkops_achilles_sever\", DARKOPS_ACHILLES_SEVER_ANIMATION],\n [\"darkops_kneecap_strike\", DARKOPS_KNEECAP_STRIKE_ANIMATION],\n [\"darkops_elbow_hyperextend\", DARKOPS_ELBOW_HYPEREXTEND_ANIMATION],\n [\"darkops_finger_break\", DARKOPS_FINGER_BREAK_ANIMATION],\n\n // Silent Takedowns\n [\"darkops_silent_takedown\", DARKOPS_SILENT_TAKEDOWN_ANIMATION],\n [\"darkops_sleeper_hold\", DARKOPS_SLEEPER_HOLD_ANIMATION],\n ]);\n"],"mappings":"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"}
|