blacktrigram 0.7.39 → 0.7.41
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.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.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.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -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.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.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatState.js.map +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.map +1 -1
- 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.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.js.map +1 -1
- 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.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.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.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.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 +3 -90
- package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
- package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -1
- 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/DefensiveAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/RecoveryAnimations.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.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/core/AnimationHitTiming.js.map +1 -1
- package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -1
- package/lib/systems/animation/core/AnimationPriority.js.map +1 -1
- package/lib/systems/animation/core/AnimationRegistry.js.map +1 -1
- package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
- 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/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.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.map +1 -1
- package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
- package/lib/systems/combat/CombatStateSystem.js.map +1 -1
- 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.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.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/GonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/SonTechniques.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/types/AccessibilityTypes.js.map +1 -1
- package/lib/types/PhysicsTypes.js.map +1 -1
- package/lib/types/common.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/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/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/physics.js.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.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.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 +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StanceAttackAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/StanceAttackAnimations.ts"],"sourcesContent":["/**\n * Stance-specific attack animations for Eight Trigram combat system\n *\n * Implements 24 unique attack animations (3 per stance) based on Korean martial arts\n * and I Ching philosophy. Each stance has 3 attack variations that reflect its\n * fundamental nature and combat characteristics.\n *\n * Coverage:\n * - 8 stances × 3 attack moves = 24 attack animations\n * - Bone-breaking strikes, joint manipulations, nerve strikes, and more\n * - Integration with existing AnimationStateMachine\n *\n * @module systems/animation/StanceAttackAnimations\n * @category Animation\n * @korean 자세공격애니메이션\n */\n\nimport { TrigramStance } from \"@/types/common\";\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport * as THREE from \"three\";\n\n// =============================================================================\n// ☰ GEON (Heaven) - Direct Force Attack Animations\n// =============================================================================\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 1: Bone-Breaking Strike (뼈부러뜨리기 1)\n *\n * Powerful overhead descending strike targeting collarbone or shoulder.\n * Direct downward force with full body weight transfer.\n *\n * Enhanced with PR #1132 mobility improvements:\n * - Hip rotation (골반회전) for power generation (30% damage bonus)\n * - Segmented spine rotation (척추분절회전) for realistic torso twist\n * - Shoulder elevation (어깨들어올림) for overhead mechanics\n *\n * Duration: 350ms\n *\n * @korean 건뼈부러뜨리기1\n */\nexport const GEON_BONE_BREAKING_STRIKE_1: SkeletalAnimation = {\n name: \"geon_bone_breaking_strike_1\",\n koreanName: \"건 뼈부러뜨리기 1\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n // Upper body coiled back, preparing for strike\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, -0.3, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n // Spine segments - wind-up phase with torso rotation\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.4, 0.1, \"XYZ\")], // Twist back\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, -0.3, 0, \"XYZ\")], // Mid-spine twist\n [BoneName.SPINE_LOWER, new THREE.Euler(0, -0.2, -0.1, \"XYZ\")], // Lower twist\n // Hip and pelvis - load phase\n [BoneName.PELVIS, new THREE.Euler(-0.1, -0.3, 0, \"XYZ\")], // Hip rotation back\n [BoneName.HIP_R, new THREE.Euler(0, -0.2, 0, \"XYZ\")], // Right hip engaged\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n // Strike impact - maximum power delivery\n [BoneName.SHOULDER_R, new THREE.Euler(0.8, -0.2, 0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n // Spine segments - explosive forward rotation\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0.5, -0.1, \"XYZ\")], // Forward twist peak\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0.15, 0.4, 0, \"XYZ\")], // Mid-spine follows\n [BoneName.SPINE_LOWER, new THREE.Euler(0.1, 0.3, 0.05, \"XYZ\")], // Lower drives\n // Hip and pelvis - power generation phase (30% bonus)\n [BoneName.PELVIS, new THREE.Euler(0.1, 0.5, 0, \"XYZ\")], // Hip explosion forward\n [BoneName.HIP_R, new THREE.Euler(0, 0.3, 0, \"XYZ\")], // Right hip drives\n [BoneName.HIP_L, new THREE.Euler(0, 0.1, 0, \"XYZ\")], // Left hip supports\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 1.0)]]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n // Recovery to guard position\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n // Spine segments - return to neutral\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n // Hip and pelvis - reset\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_L, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 2: Thunderous Uppercut (천둥어퍼컷)\n *\n * Rising strike targeting jaw or solar plexus with explosive upward force.\n * Uses leg drive and hip rotation for maximum power.\n *\n * Enhanced with PR #1132 mobility improvements:\n * - Strong hip rotation (골반회전) for upward power generation\n * - Knee drive (무릎밀어올림) for explosive leg power\n * - Spinal extension (척추확장) for upward trajectory\n *\n * Duration: 300ms\n *\n * @korean 건천둥어퍼컷\n */\nexport const GEON_THUNDEROUS_UPPERCUT: SkeletalAnimation = {\n name: \"geon_thunderous_uppercut\",\n koreanName: \"건 천둥어퍼컷\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n // Arms chambered low, coiled for upward strike\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n // Legs bent, loading power\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")], // Deep crouch\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")], // Deep crouch\n [BoneName.HIP_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")], // Hip flexed\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")], // Hip flexed\n // Spine segments - slightly forward lean for loading\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.15, -0.2, 0, \"XYZ\")], // Lower lean\n [BoneName.SPINE_MIDDLE, new THREE.Euler(-0.1, -0.1, 0, \"XYZ\")], // Mid lean\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.05, 0, 0, \"XYZ\")], // Upper ready\n [BoneName.PELVIS, new THREE.Euler(-0.2, -0.3, 0, \"XYZ\")], // Pelvis loaded\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n // Strike rising - explosive upward motion\n [BoneName.SHOULDER_L, new THREE.Euler(-0.8, 0.3, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n // Legs exploding upward - knee drive mechanics\n [BoneName.KNEE_L, new THREE.Euler(-0.1, 0, 0, \"XYZ\")], // Extending\n [BoneName.KNEE_R, new THREE.Euler(-0.1, 0, 0, \"XYZ\")], // Extending\n [BoneName.HIP_L, new THREE.Euler(0.1, 0.2, 0, \"XYZ\")], // Hip extension\n [BoneName.HIP_R, new THREE.Euler(0.1, 0.2, 0, \"XYZ\")], // Hip extension\n // Spine segments - explosive extension upward\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.2, 0.4, 0, \"XYZ\")], // Drive upward\n [BoneName.SPINE_MIDDLE, new THREE.Euler(-0.15, 0.3, 0, \"XYZ\")], // Follow through\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.1, 0.2, 0, \"XYZ\")], // Upper rises\n [BoneName.PELVIS, new THREE.Euler(0, 0.5, 0, \"XYZ\")], // Pelvis rotates up\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0.6, 0.5)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n // Recovery to guard\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n // Legs stabilize\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.HIP_L, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n // Spine segments - return to neutral\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 3: Crushing Elbow (파괴팔꿈치)\n *\n * Horizontal elbow strike with full torso rotation.\n * Targets temple, jaw, or ribs with overwhelming force.\n *\n * Duration: 280ms\n *\n * @korean 건파괴팔꿈치\n */\nexport const GEON_CRUSHING_ELBOW: SkeletalAnimation = {\n name: \"geon_crushing_elbow\",\n koreanName: \"건 파괴팔꿈치\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.9, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.8, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.14,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0.5, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.1, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.9, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.6, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.ELBOW_R, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.9, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.ELBOW_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☱ TAE (Lake) - Fluid Joint Manipulation Attacks\n// =============================================================================\n\n/**\n * ☱ 태 (Tae) - Lake Attack 1: Wrist Lock Strike (손목꺾기타격)\n *\n * Circular grabbing motion targeting opponent's wrist for control.\n * Fluid transition from strike to lock.\n *\n * Duration: 320ms\n *\n * @korean 태손목꺾기타격\n */\nexport const TAE_WRIST_LOCK_STRIKE: SkeletalAnimation = {\n name: \"tae_wrist_lock_strike\",\n koreanName: \"태 손목꺾기타격\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 1.0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.4, 0.6, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.6, 0.8, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 2: Flowing Arm Bar (유수팔걸이)\n *\n * Circular arm control transitioning into hyperextension.\n * Uses opponent's resistance against them.\n *\n * Duration: 380ms\n *\n * @korean 태유수팔걸이\n */\nexport const TAE_FLOWING_ARM_BAR: SkeletalAnimation = {\n name: \"tae_flowing_arm_bar\",\n koreanName: \"태 유수팔걸이\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.7, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.7, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, 0.8, 0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.9, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.5, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.7, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0)],\n ]),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 3: Spiral Shoulder Throw (회오리어깨던지기)\n *\n * Rotating throw using circular hip and shoulder movement.\n * Fluid transition from contact to off-balance.\n *\n * Duration: 400ms\n *\n * @korean 태회오리어깨던지기\n */\nexport const TAE_SPIRAL_SHOULDER_THROW: SkeletalAnimation = {\n name: \"tae_spiral_shoulder_throw\",\n koreanName: \"태 회오리어깨던지기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0.8, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0.6, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0.7, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 1.2, 0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 1.0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 1.1, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☲ LI (Fire) - Precise Nerve Strike Attacks\n// =============================================================================\n\n/**\n * ☲ 리 (Li) - Fire Attack 1: Burning Finger Strike (화염지창 1)\n *\n * Precise fingertip strike targeting pressure points on neck or temple.\n * Lightning-fast extension with pinpoint accuracy.\n *\n * Duration: 250ms\n *\n * @korean 리화염지창1\n */\nexport const LI_BURNING_FINGER_STRIKE_1: SkeletalAnimation = {\n name: \"li_burning_finger_strike_1\",\n koreanName: \"리 화염지창 1\",\n duration: 0.25,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.6, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.1, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.25,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.6, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.1, -0.1, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 2: Solar Plexus Spear (태양신경총창)\n *\n * Precise thrust targeting solar plexus with rigid fingers.\n * Targets nerve cluster for breath disruption.\n *\n * Duration: 260ms\n *\n * @korean 리태양신경총창\n */\nexport const LI_SOLAR_PLEXUS_SPEAR: SkeletalAnimation = {\n name: \"li_solar_plexus_spear\",\n koreanName: \"리 태양신경총창\",\n duration: 0.26,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.13,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.3, 0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.25, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.26,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 3: Phoenix Eye Strike (봉안권)\n *\n * Single-knuckle punch targeting vital points on face or throat.\n * Concentrated force through one extended knuckle.\n *\n * Duration: 240ms\n *\n * @korean 리봉안권\n */\nexport const LI_PHOENIX_EYE_STRIKE: SkeletalAnimation = {\n name: \"li_phoenix_eye_strike\",\n koreanName: \"리 봉안권\",\n duration: 0.24,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.11,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.15, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.2, -0.15, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.25, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.24,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.1, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.2, -0.1, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☳ JIN (Thunder) - Explosive Power Attacks\n// =============================================================================\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 1: Lightning Straight (벽력일섬)\n *\n * Explosive straight punch with sudden full-body burst.\n * Maximum speed and shocking impact.\n *\n * Duration: 200ms\n *\n * @korean 진벽력일섬\n */\nexport const JIN_LIGHTNING_STRAIGHT: SkeletalAnimation = {\n name: \"jin_lightning_straight\",\n koreanName: \"진 벽력일섬\",\n duration: 0.2,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.08,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.1, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.05, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 1.0)]]),\n },\n {\n time: 0.2,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 2: Shocking Hammer Fist (충격망치)\n *\n * Downward hammer strike with explosive drop of body weight.\n * Creates stunning impact.\n *\n * Duration: 220ms\n *\n * @korean 진충격망치\n */\nexport const JIN_SHOCKING_HAMMER_FIST: SkeletalAnimation = {\n name: \"jin_shocking_hammer_fist\",\n koreanName: \"진 충격망치\",\n duration: 0.22,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.4, -0.2, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.6, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.09,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, -0.1, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.22,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 3: Explosive Knee (폭발무릎)\n *\n * Sudden knee strike with full leg drive and hip thrust.\n * Targets midsection with shocking power.\n *\n * Duration: 280ms\n *\n * @korean 진폭발무릎\n */\nexport const JIN_EXPLOSIVE_KNEE: SkeletalAnimation = {\n name: \"jin_explosive_knee\",\n koreanName: \"진 폭발무릎\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.05,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-1.8, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-2.2, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0.7, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.KNEE_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.KNEE_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☴ SON (Wind) - Continuous Pressure Attacks\n// =============================================================================\n\n/**\n * ☴ 손 (Son) - Wind Attack 1: Whirlwind Combo (선풍연격 1)\n *\n * Rapid alternating hand strikes maintaining constant pressure.\n * Continuous flowing motion without pause.\n *\n * Duration: 400ms\n *\n * @korean 손선풍연격1\n */\nexport const SON_WHIRLWIND_COMBO_1: SkeletalAnimation = {\n name: \"son_whirlwind_combo_1\",\n koreanName: \"손 선풍연격 1\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.13,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.26,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.3, 0.2, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 2: Pressure Point Chain (연속급소타격)\n *\n * Sequential pressure point strikes flowing from one target to next.\n * Maintains momentum through circular motion.\n *\n * Duration: 380ms\n *\n * @korean 손연속급소타격\n */\nexport const SON_PRESSURE_POINT_CHAIN: SkeletalAnimation = {\n name: \"son_pressure_point_chain\",\n koreanName: \"손 연속급소타격\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.24,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.15, -0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 3: Penetrating Palm Rush (관통장타)\n *\n * Multiple palm strikes driving forward with relentless pressure.\n * Each strike flows into the next without stopping.\n *\n * Duration: 420ms\n *\n * @korean 손관통장타\n */\nexport const SON_PENETRATING_PALM_RUSH: SkeletalAnimation = {\n name: \"son_penetrating_palm_rush\",\n koreanName: \"손 관통장타\",\n duration: 0.42,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.14,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.05, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.65)],\n ]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.05, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.65)],\n ]),\n },\n {\n time: 0.42,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.4, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☵ GAM (Water) - Flow-Counter Attacks\n// =============================================================================\n\n/**\n * ☵ 감 (Gam) - Water Attack 1: Flowing River Strike (유수타격)\n *\n * Circular strike that follows and redirects opponent's energy.\n * Adapts mid-motion to openings.\n *\n * Duration: 340ms\n *\n * @korean 감유수타격\n */\nexport const GAM_FLOWING_RIVER_STRIKE: SkeletalAnimation = {\n name: \"gam_flowing_river_strike\",\n koreanName: \"감 유수타격\",\n duration: 0.34,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.17,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.9, 0.7, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.75)],\n ]),\n },\n {\n time: 0.34,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 2: Tidal Wave Palm (파도장타)\n *\n * Sweeping palm strike that flows around defenses.\n * Uses circular motion to bypass guards.\n *\n * Duration: 360ms\n *\n * @korean 감파도장타\n */\nexport const GAM_TIDAL_WAVE_PALM: SkeletalAnimation = {\n name: \"gam_tidal_wave_palm\",\n koreanName: \"감 파도장타\",\n duration: 0.36,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.1, -0.8, -0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.25, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.35, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.36,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.1, -0.8, -0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.25, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 3: Whirlpool Counter (소용돌이반격)\n *\n * Spinning strike that uses opponent's momentum against them.\n * Full body rotation for maximum redirection.\n *\n * Duration: 380ms\n *\n * @korean 감소용돌이반격\n */\nexport const GAM_WHIRLPOOL_COUNTER: SkeletalAnimation = {\n name: \"gam_whirlpool_counter\",\n koreanName: \"감 소용돌이반격\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.6, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.5, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 1.0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.8, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.6, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.6, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☶ GAN (Mountain) - Defensive Counter Attacks\n// =============================================================================\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 1: Fortress Counter Strike (요새반격타)\n *\n * Solid counter punch from defensive stance with immovable base.\n * Power generated from stable mountain stance.\n *\n * Duration: 300ms\n *\n * @korean 간요새반격타\n */\nexport const GAN_FORTRESS_COUNTER_STRIKE: SkeletalAnimation = {\n name: \"gan_fortress_counter_strike\",\n koreanName: \"간 요새반격타\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.4, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.4, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 2: Avalanche Hammer (눈사태망치)\n *\n * Powerful overhead strike from high guard position.\n * Uses gravity and body weight like falling rocks.\n *\n * Duration: 350ms\n *\n * @korean 간눈사태망치\n */\nexport const GAN_AVALANCHE_HAMMER: SkeletalAnimation = {\n name: \"gan_avalanche_hammer\",\n koreanName: \"간 눈사태망치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-1.3, 0.3, 0.7, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.7, 0.2, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 3: Stone Wall Thrust (석벽관통)\n *\n * Immovable forward thrust with locked elbow and shoulder.\n * Unyielding linear force from stable base.\n *\n * Duration: 320ms\n *\n * @korean 간석벽관통\n */\nexport const GAN_STONE_WALL_THRUST: SkeletalAnimation = {\n name: \"gan_stone_wall_thrust\",\n koreanName: \"간 석벽관통\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.15, -0.1, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☷ GON (Earth) - Grounding/Takedown Attacks\n// =============================================================================\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 1: Ground Sweep Strike (접지쓸기)\n *\n * Low sweeping leg attack targeting opponent's base.\n * Uses grounded center of gravity for stability.\n *\n * Duration: 380ms\n *\n * @korean 곤접지쓸기\n */\nexport const GON_GROUND_SWEEP_STRIKE: SkeletalAnimation = {\n name: \"gon_ground_sweep_strike\",\n koreanName: \"곤 접지쓸기\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.1, 0, 0.5, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 2: Earthquake Stomp (지진발구르기)\n *\n * Powerful downward stomp targeting opponent's foot or knee.\n * Uses full body weight dropped through leg.\n *\n * Duration: 320ms\n *\n * @korean 곤지진발구르기\n */\nexport const GON_EARTHQUAKE_STOMP: SkeletalAnimation = {\n name: \"gon_earthquake_stomp\",\n koreanName: \"곤 지진발구르기\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.15, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_L, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 3: Rooting Takedown (뿌리내림꺾기)\n *\n * Low grabbing motion transitioning to ground takedown.\n * Uses low center of gravity to pull opponent down.\n *\n * Duration: 450ms\n *\n * @korean 곤뿌리내림꺾기\n */\nexport const GON_ROOTING_TAKEDOWN: SkeletalAnimation = {\n name: \"gon_rooting_takedown\",\n koreanName: \"곤 뿌리내림꺾기\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.32,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.5, 0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.5, -0.6, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.38,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.8, 0.3, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.8, -0.3, -0.4, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.6, 0.2, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.3, 0.3)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// Extended Trigram Attacks - 2 Additional Per Stance (확장팔괘공격)\n// =============================================================================\n\n// ☰ GEON Extended Attacks\n/**\n * ☰ 건 (Geon) - Heaven Attack 4: Descending Hammer (천둥망치)\n *\n * Overhead hammer fist strike with full body weight.\n * Targets crown, collarbone, or shoulder with devastating force.\n *\n * @korean 건천둥망치\n */\nexport const GEON_DESCENDING_HAMMER: SkeletalAnimation = {\n name: \"geon_descending_hammer\",\n koreanName: \"건 천둥망치\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.5, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.9, 0, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, -0.3, 0.8)],\n ]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 5: Splitting Palm (천지분리장)\n *\n * Powerful downward palm strike splitting through defenses.\n * Uses both hands in coordinated descending motion.\n *\n * @korean 건천지분리장\n */\nexport const GEON_SPLITTING_PALM: SkeletalAnimation = {\n name: \"geon_splitting_palm\",\n koreanName: \"건 천지분리장\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, -0.2, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-1.2, 0.2, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.5, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.2, 0, 0.9)],\n [BoneName.HAND_L, new THREE.Vector3(-0.2, 0, 0.9)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☱ TAE Extended Attacks\n/**\n * ☱ 태 (Tae) - Lake Attack 4: Rippling Elbow (물결팔꿈치)\n *\n * Flowing elbow strike following circular motion.\n * Water-like adaptation to opponent's position.\n *\n * @korean 태물결팔꿈치\n */\nexport const TAE_RIPPLING_ELBOW: SkeletalAnimation = {\n name: \"tae_rippling_elbow\",\n koreanName: \"태 물결팔꿈치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.8, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 5: Finger Lock Twist (손가락잠금비틀기)\n *\n * Quick finger grab transitioning to painful twist.\n * Targets small joints for control.\n *\n * @korean 태손가락잠금비틀기\n */\nexport const TAE_FINGER_LOCK_TWIST: SkeletalAnimation = {\n name: \"tae_finger_lock_twist\",\n koreanName: \"태 손가락잠금비틀기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.4)]]),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.5)]]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.5, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(1.2, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☲ LI Extended Attacks\n/**\n * ☲ 리 (Li) - Fire Attack 4: Temple Spike (관자놀이찌르기)\n *\n * Precise strike to temple pressure point.\n * Targets temporal artery for knockout.\n *\n * @korean 리관자놀이찌르기\n */\nexport const LI_TEMPLE_SPIKE: SkeletalAnimation = {\n name: \"li_temple_spike\",\n koreanName: \"리 관자놀이찌르기\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.3, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.3, 0.4, 0.7)],\n ]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 5: Blazing Nerve Chain (연속혈도타격)\n *\n * Rapid consecutive strikes to multiple nerve points.\n * Fire-like speed targeting meridian lines.\n *\n * @korean 리연속혈도타격\n */\nexport const LI_BLAZING_NERVE_CHAIN: SkeletalAnimation = {\n name: \"li_blazing_nerve_chain\",\n koreanName: \"리 연속혈도타격\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.08,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0.2, 0.6)],\n ]),\n },\n {\n time: 0.24,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0.4, 0.7)],\n ]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☳ JIN Extended Attacks\n/**\n * ☳ 진 (Jin) - Thunder Attack 4: Thunder Clap Palm (뇌명장)\n *\n * Explosive double palm strike like thunderclap.\n * Creates shockwave-like impact.\n *\n * @korean 진뇌명장\n */\nexport const JIN_THUNDER_CLAP_PALM: SkeletalAnimation = {\n name: \"jin_thunder_clap_palm\",\n koreanName: \"진 뇌명장\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.8, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.5, 0.8, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.2, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, -0.2, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.1, 0, 0.8)],\n [BoneName.HAND_L, new THREE.Vector3(-0.1, 0, 0.8)],\n ]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.4, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 5: Shocking Low Kick (벽력하단차기)\n *\n * Explosive low kick targeting knee or thigh.\n * Sudden burst of power to destabilize opponent.\n *\n * @korean 진벽력하단차기\n */\nexport const JIN_SHOCKING_LOW_KICK: SkeletalAnimation = {\n name: \"jin_shocking_low_kick\",\n koreanName: \"진 벽력하단차기\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.6, 0.5, 0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.FOOT_R, new THREE.Vector3(0.3, 0, 0.7)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☴ SON Extended Attacks\n/**\n * ☴ 손 (Son) - Wind Attack 4: Gale Force Rush (폭풍돌진)\n *\n * Continuous forward pressure with rapid strikes.\n * Wind-like persistence overwhelming defense.\n *\n * @korean 손폭풍돌진\n */\nexport const SON_GALE_FORCE_RUSH: SkeletalAnimation = {\n name: \"son_gale_force_rush\",\n koreanName: \"손 폭풍돌진\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0.1)]]),\n },\n {\n time: 0.1,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.2)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.3)],\n ]),\n },\n {\n time: 0.3,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.4)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 5: Cutting Wind Palm (절풍장)\n *\n * Sharp horizontal palm slice like cutting wind.\n * Targets throat or brachial plexus.\n *\n * @korean 손절풍장\n */\nexport const SON_CUTTING_WIND_PALM: SkeletalAnimation = {\n name: \"son_cutting_wind_palm\",\n koreanName: \"손 절풍장\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.8, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.6, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, -0.5, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0.6, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.4, 0.3, 0.6)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☵ GAM Extended Attacks\n/**\n * ☵ 감 (Gam) - Water Attack 4: Undertow Pull (역류당기기)\n *\n * Grabbing motion pulling opponent off balance.\n * Uses water-like redirection of force.\n *\n * @korean 감역류당기기\n */\nexport const GAM_UNDERTOW_PULL: SkeletalAnimation = {\n name: \"gam_undertow_pull\",\n koreanName: \"감 역류당기기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.1, 0, 0.5)],\n [BoneName.HAND_L, new THREE.Vector3(-0.1, 0, 0.5)],\n ]),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.3, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 5: Splash Knee (파도무릎)\n *\n * Rising knee strike with wave-like motion.\n * Flows through opponent's guard.\n *\n * @korean 감파도무릎\n */\nexport const GAM_SPLASH_KNEE: SkeletalAnimation = {\n name: \"gam_splash_knee\",\n koreanName: \"감 파도무릎\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.07,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.3, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.8, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.4, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.FOOT_R, new THREE.Vector3(0.2, 0.4, 0.5)],\n ]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☶ GAN Extended Attacks\n/**\n * ☶ 간 (Gan) - Mountain Attack 4: Iron Wall Block Strike (철벽반격)\n *\n * Heavy block transitioning to counter punch.\n * Immovable defense becoming offense.\n *\n * @korean 간철벽반격\n */\nexport const GAN_IRON_WALL_BLOCK_STRIKE: SkeletalAnimation = {\n name: \"gan_iron_wall_block_strike\",\n koreanName: \"간 철벽반격\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.5, 0.6, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.8, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 5: Boulder Drop Elbow (낙석팔꿈치)\n *\n * Heavy descending elbow strike.\n * Mountain's weight crashing down.\n *\n * @korean 간낙석팔꿈치\n */\nexport const GAN_BOULDER_DROP_ELBOW: SkeletalAnimation = {\n name: \"gan_boulder_drop_elbow\",\n koreanName: \"간 낙석팔꿈치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.2, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☷ GON Extended Attacks\n/**\n * ☷ 곤 (Gon) - Earth Attack 4: Quicksand Grab (유사잡기)\n *\n * Low grabbing attack pulling opponent into ground.\n * Earth swallowing motion.\n *\n * @korean 곤유사잡기\n */\nexport const GON_QUICKSAND_GRAB: SkeletalAnimation = {\n name: \"gon_quicksand_grab\",\n koreanName: \"곤 유사잡기\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0, -0.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.4, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.3, 0)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.3, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.2, -0.2, 0.6)],\n [BoneName.HAND_L, new THREE.Vector3(-0.2, -0.2, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, -0.4, 0)],\n ]),\n },\n {\n time: 0.35,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.4, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.2, 0)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 5: Tectonic Slam (지각충돌)\n *\n * Full body slam using low center of gravity.\n * Earth plate collision force.\n *\n * @korean 곤지각충돌\n */\nexport const GON_TECTONIC_SLAM: SkeletalAnimation = {\n name: \"gon_tectonic_slam\",\n koreanName: \"곤 지각충돌\",\n duration: 0.5,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.5, -0.5, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.5, 0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.2, 0)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0.3, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.5, -0.3, -0.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.1, 0.5)],\n ]),\n },\n {\n time: 0.35,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.5, 0.4, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.5, 0.5, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.5, -0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.5,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// Exports and Helper Functions\n// =============================================================================\n\n/**\n * Map of all attack animations by stance\n *\n * Each stance has 5 unique attack animations that reflect its philosophy:\n * - GEON: Bone-breaking strikes with overwhelming force\n * - TAE: Fluid joint manipulation with circular motion\n * - LI: Precise nerve strikes targeting vital points\n * - JIN: Explosive power techniques with sudden bursts\n * - SON: Continuous pressure combo attacks\n * - GAM: Flow-counter attacks that redirect force\n * - GAN: Defensive counter-attacks from solid stance\n * - GON: Grounding/takedown attacks with low center\n *\n * @korean 자세별공격애니메이션\n */\nexport const ATTACK_ANIMATIONS_BY_STANCE: ReadonlyMap<\n TrigramStance,\n readonly SkeletalAnimation[]\n> = new Map([\n [\n TrigramStance.GEON,\n [\n GEON_BONE_BREAKING_STRIKE_1,\n GEON_THUNDEROUS_UPPERCUT,\n GEON_CRUSHING_ELBOW,\n GEON_DESCENDING_HAMMER,\n GEON_SPLITTING_PALM,\n ] as const,\n ],\n [\n TrigramStance.TAE,\n [\n TAE_WRIST_LOCK_STRIKE,\n TAE_FLOWING_ARM_BAR,\n TAE_SPIRAL_SHOULDER_THROW,\n TAE_RIPPLING_ELBOW,\n TAE_FINGER_LOCK_TWIST,\n ] as const,\n ],\n [\n TrigramStance.LI,\n [\n LI_BURNING_FINGER_STRIKE_1,\n LI_SOLAR_PLEXUS_SPEAR,\n LI_PHOENIX_EYE_STRIKE,\n LI_TEMPLE_SPIKE,\n LI_BLAZING_NERVE_CHAIN,\n ] as const,\n ],\n [\n TrigramStance.JIN,\n [\n JIN_LIGHTNING_STRAIGHT,\n JIN_SHOCKING_HAMMER_FIST,\n JIN_EXPLOSIVE_KNEE,\n JIN_THUNDER_CLAP_PALM,\n JIN_SHOCKING_LOW_KICK,\n ] as const,\n ],\n [\n TrigramStance.SON,\n [\n SON_WHIRLWIND_COMBO_1,\n SON_PRESSURE_POINT_CHAIN,\n SON_PENETRATING_PALM_RUSH,\n SON_GALE_FORCE_RUSH,\n SON_CUTTING_WIND_PALM,\n ] as const,\n ],\n [\n TrigramStance.GAM,\n [\n GAM_FLOWING_RIVER_STRIKE,\n GAM_TIDAL_WAVE_PALM,\n GAM_WHIRLPOOL_COUNTER,\n GAM_UNDERTOW_PULL,\n GAM_SPLASH_KNEE,\n ] as const,\n ],\n [\n TrigramStance.GAN,\n [\n GAN_FORTRESS_COUNTER_STRIKE,\n GAN_AVALANCHE_HAMMER,\n GAN_STONE_WALL_THRUST,\n GAN_IRON_WALL_BLOCK_STRIKE,\n GAN_BOULDER_DROP_ELBOW,\n ] as const,\n ],\n [\n TrigramStance.GON,\n [\n GON_GROUND_SWEEP_STRIKE,\n GON_EARTHQUAKE_STOMP,\n GON_ROOTING_TAKEDOWN,\n GON_QUICKSAND_GRAB,\n GON_TECTONIC_SLAM,\n ] as const,\n ],\n]);\n\n/**\n * All attack animations in a single map for easy lookup\n *\n * @korean 모든공격애니메이션\n */\nexport const ALL_ATTACK_ANIMATIONS = new Map<string, SkeletalAnimation>([\n // GEON (Heaven)\n [\"geon_bone_breaking_strike_1\", GEON_BONE_BREAKING_STRIKE_1],\n [\"geon_thunderous_uppercut\", GEON_THUNDEROUS_UPPERCUT],\n [\"geon_crushing_elbow\", GEON_CRUSHING_ELBOW],\n [\"geon_descending_hammer\", GEON_DESCENDING_HAMMER],\n [\"geon_splitting_palm\", GEON_SPLITTING_PALM],\n // TAE (Lake)\n [\"tae_wrist_lock_strike\", TAE_WRIST_LOCK_STRIKE],\n [\"tae_flowing_arm_bar\", TAE_FLOWING_ARM_BAR],\n [\"tae_spiral_shoulder_throw\", TAE_SPIRAL_SHOULDER_THROW],\n [\"tae_rippling_elbow\", TAE_RIPPLING_ELBOW],\n [\"tae_finger_lock_twist\", TAE_FINGER_LOCK_TWIST],\n // LI (Fire)\n [\"li_burning_finger_strike_1\", LI_BURNING_FINGER_STRIKE_1],\n [\"li_solar_plexus_spear\", LI_SOLAR_PLEXUS_SPEAR],\n [\"li_phoenix_eye_strike\", LI_PHOENIX_EYE_STRIKE],\n [\"li_temple_spike\", LI_TEMPLE_SPIKE],\n [\"li_blazing_nerve_chain\", LI_BLAZING_NERVE_CHAIN],\n // JIN (Thunder)\n [\"jin_lightning_straight\", JIN_LIGHTNING_STRAIGHT],\n [\"jin_shocking_hammer_fist\", JIN_SHOCKING_HAMMER_FIST],\n [\"jin_explosive_knee\", JIN_EXPLOSIVE_KNEE],\n [\"jin_thunder_clap_palm\", JIN_THUNDER_CLAP_PALM],\n [\"jin_shocking_low_kick\", JIN_SHOCKING_LOW_KICK],\n // SON (Wind)\n [\"son_whirlwind_combo_1\", SON_WHIRLWIND_COMBO_1],\n [\"son_pressure_point_chain\", SON_PRESSURE_POINT_CHAIN],\n [\"son_penetrating_palm_rush\", SON_PENETRATING_PALM_RUSH],\n [\"son_gale_force_rush\", SON_GALE_FORCE_RUSH],\n [\"son_cutting_wind_palm\", SON_CUTTING_WIND_PALM],\n // GAM (Water)\n [\"gam_flowing_river_strike\", GAM_FLOWING_RIVER_STRIKE],\n [\"gam_tidal_wave_palm\", GAM_TIDAL_WAVE_PALM],\n [\"gam_whirlpool_counter\", GAM_WHIRLPOOL_COUNTER],\n [\"gam_undertow_pull\", GAM_UNDERTOW_PULL],\n [\"gam_splash_knee\", GAM_SPLASH_KNEE],\n // GAN (Mountain)\n [\"gan_fortress_counter_strike\", GAN_FORTRESS_COUNTER_STRIKE],\n [\"gan_avalanche_hammer\", GAN_AVALANCHE_HAMMER],\n [\"gan_stone_wall_thrust\", GAN_STONE_WALL_THRUST],\n [\"gan_iron_wall_block_strike\", GAN_IRON_WALL_BLOCK_STRIKE],\n [\"gan_boulder_drop_elbow\", GAN_BOULDER_DROP_ELBOW],\n // GON (Earth)\n [\"gon_ground_sweep_strike\", GON_GROUND_SWEEP_STRIKE],\n [\"gon_earthquake_stomp\", GON_EARTHQUAKE_STOMP],\n [\"gon_rooting_takedown\", GON_ROOTING_TAKEDOWN],\n [\"gon_quicksand_grab\", GON_QUICKSAND_GRAB],\n [\"gon_tectonic_slam\", GON_TECTONIC_SLAM],\n]);\n\n/**\n * Get attack animations for a specific stance\n *\n * @param stance - Trigram stance\n * @returns Array of 5 attack animations for the stance\n *\n * @example\n * ```typescript\n * const geonAttacks = getAttackAnimationsForStance(TrigramStance.GEON);\n * console.log(geonAttacks[0].koreanName); // \"건 뼈부러뜨리기 1\"\n * ```\n *\n * @korean 자세공격애니메이션가져오기\n */\nexport function getAttackAnimationsForStance(\n stance: TrigramStance,\n): readonly SkeletalAnimation[] {\n return ATTACK_ANIMATIONS_BY_STANCE.get(stance) ?? [];\n}\n\n/**\n * Get an attack animation by name\n *\n * @param name - Animation name\n * @returns Skeletal animation or undefined\n *\n * @korean 공격애니메이션가져오기\n */\nexport function getAttackAnimation(\n name: string,\n): SkeletalAnimation | undefined {\n return ALL_ATTACK_ANIMATIONS.get(name);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StanceAttackAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/StanceAttackAnimations.ts"],"sourcesContent":["/**\n * Stance-specific attack animations for Eight Trigram combat system\n *\n * Implements 24 unique attack animations (3 per stance) based on Korean martial arts\n * and I Ching philosophy. Each stance has 3 attack variations that reflect its\n * fundamental nature and combat characteristics.\n *\n * Coverage:\n * - 8 stances × 3 attack moves = 24 attack animations\n * - Bone-breaking strikes, joint manipulations, nerve strikes, and more\n * - Integration with existing AnimationStateMachine\n *\n * @module systems/animation/StanceAttackAnimations\n * @category Animation\n * @korean 자세공격애니메이션\n */\n\nimport { TrigramStance } from \"@/types/common\";\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport * as THREE from \"three\";\n\n// =============================================================================\n// ☰ GEON (Heaven) - Direct Force Attack Animations\n// =============================================================================\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 1: Bone-Breaking Strike (뼈부러뜨리기 1)\n *\n * Powerful overhead descending strike targeting collarbone or shoulder.\n * Direct downward force with full body weight transfer.\n *\n * Enhanced with PR #1132 mobility improvements:\n * - Hip rotation (골반회전) for power generation (30% damage bonus)\n * - Segmented spine rotation (척추분절회전) for realistic torso twist\n * - Shoulder elevation (어깨들어올림) for overhead mechanics\n *\n * Duration: 350ms\n *\n * @korean 건뼈부러뜨리기1\n */\nexport const GEON_BONE_BREAKING_STRIKE_1: SkeletalAnimation = {\n name: \"geon_bone_breaking_strike_1\",\n koreanName: \"건 뼈부러뜨리기 1\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n // Upper body coiled back, preparing for strike\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, -0.3, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n // Spine segments - wind-up phase with torso rotation\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.4, 0.1, \"XYZ\")], // Twist back\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, -0.3, 0, \"XYZ\")], // Mid-spine twist\n [BoneName.SPINE_LOWER, new THREE.Euler(0, -0.2, -0.1, \"XYZ\")], // Lower twist\n // Hip and pelvis - load phase\n [BoneName.PELVIS, new THREE.Euler(-0.1, -0.3, 0, \"XYZ\")], // Hip rotation back\n [BoneName.HIP_R, new THREE.Euler(0, -0.2, 0, \"XYZ\")], // Right hip engaged\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n // Strike impact - maximum power delivery\n [BoneName.SHOULDER_R, new THREE.Euler(0.8, -0.2, 0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n // Spine segments - explosive forward rotation\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0.5, -0.1, \"XYZ\")], // Forward twist peak\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0.15, 0.4, 0, \"XYZ\")], // Mid-spine follows\n [BoneName.SPINE_LOWER, new THREE.Euler(0.1, 0.3, 0.05, \"XYZ\")], // Lower drives\n // Hip and pelvis - power generation phase (30% bonus)\n [BoneName.PELVIS, new THREE.Euler(0.1, 0.5, 0, \"XYZ\")], // Hip explosion forward\n [BoneName.HIP_R, new THREE.Euler(0, 0.3, 0, \"XYZ\")], // Right hip drives\n [BoneName.HIP_L, new THREE.Euler(0, 0.1, 0, \"XYZ\")], // Left hip supports\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 1.0)]]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n // Recovery to guard position\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n // Spine segments - return to neutral\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n // Hip and pelvis - reset\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_L, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 2: Thunderous Uppercut (천둥어퍼컷)\n *\n * Rising strike targeting jaw or solar plexus with explosive upward force.\n * Uses leg drive and hip rotation for maximum power.\n *\n * Enhanced with PR #1132 mobility improvements:\n * - Strong hip rotation (골반회전) for upward power generation\n * - Knee drive (무릎밀어올림) for explosive leg power\n * - Spinal extension (척추확장) for upward trajectory\n *\n * Duration: 300ms\n *\n * @korean 건천둥어퍼컷\n */\nexport const GEON_THUNDEROUS_UPPERCUT: SkeletalAnimation = {\n name: \"geon_thunderous_uppercut\",\n koreanName: \"건 천둥어퍼컷\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n // Arms chambered low, coiled for upward strike\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n // Legs bent, loading power\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")], // Deep crouch\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")], // Deep crouch\n [BoneName.HIP_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")], // Hip flexed\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")], // Hip flexed\n // Spine segments - slightly forward lean for loading\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.15, -0.2, 0, \"XYZ\")], // Lower lean\n [BoneName.SPINE_MIDDLE, new THREE.Euler(-0.1, -0.1, 0, \"XYZ\")], // Mid lean\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.05, 0, 0, \"XYZ\")], // Upper ready\n [BoneName.PELVIS, new THREE.Euler(-0.2, -0.3, 0, \"XYZ\")], // Pelvis loaded\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n // Strike rising - explosive upward motion\n [BoneName.SHOULDER_L, new THREE.Euler(-0.8, 0.3, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n // Legs exploding upward - knee drive mechanics\n [BoneName.KNEE_L, new THREE.Euler(-0.1, 0, 0, \"XYZ\")], // Extending\n [BoneName.KNEE_R, new THREE.Euler(-0.1, 0, 0, \"XYZ\")], // Extending\n [BoneName.HIP_L, new THREE.Euler(0.1, 0.2, 0, \"XYZ\")], // Hip extension\n [BoneName.HIP_R, new THREE.Euler(0.1, 0.2, 0, \"XYZ\")], // Hip extension\n // Spine segments - explosive extension upward\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.2, 0.4, 0, \"XYZ\")], // Drive upward\n [BoneName.SPINE_MIDDLE, new THREE.Euler(-0.15, 0.3, 0, \"XYZ\")], // Follow through\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.1, 0.2, 0, \"XYZ\")], // Upper rises\n [BoneName.PELVIS, new THREE.Euler(0, 0.5, 0, \"XYZ\")], // Pelvis rotates up\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0.6, 0.5)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n // Recovery to guard\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n // Legs stabilize\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.HIP_L, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n // Spine segments - return to neutral\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_MIDDLE, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 3: Crushing Elbow (파괴팔꿈치)\n *\n * Horizontal elbow strike with full torso rotation.\n * Targets temple, jaw, or ribs with overwhelming force.\n *\n * Duration: 280ms\n *\n * @korean 건파괴팔꿈치\n */\nexport const GEON_CRUSHING_ELBOW: SkeletalAnimation = {\n name: \"geon_crushing_elbow\",\n koreanName: \"건 파괴팔꿈치\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.9, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.8, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.14,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0.5, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.1, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.9, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.6, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.ELBOW_R, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.9, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.ELBOW_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☱ TAE (Lake) - Fluid Joint Manipulation Attacks\n// =============================================================================\n\n/**\n * ☱ 태 (Tae) - Lake Attack 1: Wrist Lock Strike (손목꺾기타격)\n *\n * Circular grabbing motion targeting opponent's wrist for control.\n * Fluid transition from strike to lock.\n *\n * Duration: 320ms\n *\n * @korean 태손목꺾기타격\n */\nexport const TAE_WRIST_LOCK_STRIKE: SkeletalAnimation = {\n name: \"tae_wrist_lock_strike\",\n koreanName: \"태 손목꺾기타격\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 1.0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.4, 0.6, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.6, 0.8, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 2: Flowing Arm Bar (유수팔걸이)\n *\n * Circular arm control transitioning into hyperextension.\n * Uses opponent's resistance against them.\n *\n * Duration: 380ms\n *\n * @korean 태유수팔걸이\n */\nexport const TAE_FLOWING_ARM_BAR: SkeletalAnimation = {\n name: \"tae_flowing_arm_bar\",\n koreanName: \"태 유수팔걸이\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.7, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.7, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, 0.8, 0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.9, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.5, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.7, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0)],\n ]),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 3: Spiral Shoulder Throw (회오리어깨던지기)\n *\n * Rotating throw using circular hip and shoulder movement.\n * Fluid transition from contact to off-balance.\n *\n * Duration: 400ms\n *\n * @korean 태회오리어깨던지기\n */\nexport const TAE_SPIRAL_SHOULDER_THROW: SkeletalAnimation = {\n name: \"tae_spiral_shoulder_throw\",\n koreanName: \"태 회오리어깨던지기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0.8, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0.6, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0.7, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 1.2, 0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 1.0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 1.1, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☲ LI (Fire) - Precise Nerve Strike Attacks\n// =============================================================================\n\n/**\n * ☲ 리 (Li) - Fire Attack 1: Burning Finger Strike (화염지창 1)\n *\n * Precise fingertip strike targeting pressure points on neck or temple.\n * Lightning-fast extension with pinpoint accuracy.\n *\n * Duration: 250ms\n *\n * @korean 리화염지창1\n */\nexport const LI_BURNING_FINGER_STRIKE_1: SkeletalAnimation = {\n name: \"li_burning_finger_strike_1\",\n koreanName: \"리 화염지창 1\",\n duration: 0.25,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.6, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.1, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.25,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.6, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.1, -0.1, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 2: Solar Plexus Spear (태양신경총창)\n *\n * Precise thrust targeting solar plexus with rigid fingers.\n * Targets nerve cluster for breath disruption.\n *\n * Duration: 260ms\n *\n * @korean 리태양신경총창\n */\nexport const LI_SOLAR_PLEXUS_SPEAR: SkeletalAnimation = {\n name: \"li_solar_plexus_spear\",\n koreanName: \"리 태양신경총창\",\n duration: 0.26,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.13,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.3, 0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.25, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.26,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 3: Phoenix Eye Strike (봉안권)\n *\n * Single-knuckle punch targeting vital points on face or throat.\n * Concentrated force through one extended knuckle.\n *\n * Duration: 240ms\n *\n * @korean 리봉안권\n */\nexport const LI_PHOENIX_EYE_STRIKE: SkeletalAnimation = {\n name: \"li_phoenix_eye_strike\",\n koreanName: \"리 봉안권\",\n duration: 0.24,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.11,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.15, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.2, -0.15, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.25, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.24,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.1, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.2, -0.1, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☳ JIN (Thunder) - Explosive Power Attacks\n// =============================================================================\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 1: Lightning Straight (벽력일섬)\n *\n * Explosive straight punch with sudden full-body burst.\n * Maximum speed and shocking impact.\n *\n * Duration: 200ms\n *\n * @korean 진벽력일섬\n */\nexport const JIN_LIGHTNING_STRAIGHT: SkeletalAnimation = {\n name: \"jin_lightning_straight\",\n koreanName: \"진 벽력일섬\",\n duration: 0.2,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.08,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.1, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.05, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 1.0)]]),\n },\n {\n time: 0.2,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 2: Shocking Hammer Fist (충격망치)\n *\n * Downward hammer strike with explosive drop of body weight.\n * Creates stunning impact.\n *\n * Duration: 220ms\n *\n * @korean 진충격망치\n */\nexport const JIN_SHOCKING_HAMMER_FIST: SkeletalAnimation = {\n name: \"jin_shocking_hammer_fist\",\n koreanName: \"진 충격망치\",\n duration: 0.22,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.4, -0.2, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.6, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.09,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, -0.1, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.22,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 3: Explosive Knee (폭발무릎)\n *\n * Sudden knee strike with full leg drive and hip thrust.\n * Targets midsection with shocking power.\n *\n * Duration: 280ms\n *\n * @korean 진폭발무릎\n */\nexport const JIN_EXPLOSIVE_KNEE: SkeletalAnimation = {\n name: \"jin_explosive_knee\",\n koreanName: \"진 폭발무릎\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.05,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-1.8, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-2.2, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(0.7, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.KNEE_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.KNEE_R, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.KNEE_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☴ SON (Wind) - Continuous Pressure Attacks\n// =============================================================================\n\n/**\n * ☴ 손 (Son) - Wind Attack 1: Whirlwind Combo (선풍연격 1)\n *\n * Rapid alternating hand strikes maintaining constant pressure.\n * Continuous flowing motion without pause.\n *\n * Duration: 400ms\n *\n * @korean 손선풍연격1\n */\nexport const SON_WHIRLWIND_COMBO_1: SkeletalAnimation = {\n name: \"son_whirlwind_combo_1\",\n koreanName: \"손 선풍연격 1\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.13,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.26,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.7)],\n ]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.3, 0.2, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 2: Pressure Point Chain (연속급소타격)\n *\n * Sequential pressure point strikes flowing from one target to next.\n * Maintains momentum through circular motion.\n *\n * Duration: 380ms\n *\n * @korean 손연속급소타격\n */\nexport const SON_PRESSURE_POINT_CHAIN: SkeletalAnimation = {\n name: \"son_pressure_point_chain\",\n koreanName: \"손 연속급소타격\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.24,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.15, -0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 3: Penetrating Palm Rush (관통장타)\n *\n * Multiple palm strikes driving forward with relentless pressure.\n * Each strike flows into the next without stopping.\n *\n * Duration: 420ms\n *\n * @korean 손관통장타\n */\nexport const SON_PENETRATING_PALM_RUSH: SkeletalAnimation = {\n name: \"son_penetrating_palm_rush\",\n koreanName: \"손 관통장타\",\n duration: 0.42,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.14,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.05, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.65)],\n ]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.05, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.WRIST_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0)],\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.65)],\n ]),\n },\n {\n time: 0.42,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.4, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☵ GAM (Water) - Flow-Counter Attacks\n// =============================================================================\n\n/**\n * ☵ 감 (Gam) - Water Attack 1: Flowing River Strike (유수타격)\n *\n * Circular strike that follows and redirects opponent's energy.\n * Adapts mid-motion to openings.\n *\n * Duration: 340ms\n *\n * @korean 감유수타격\n */\nexport const GAM_FLOWING_RIVER_STRIKE: SkeletalAnimation = {\n name: \"gam_flowing_river_strike\",\n koreanName: \"감 유수타격\",\n duration: 0.34,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.17,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.1, 0.9, 0.7, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.75)],\n ]),\n },\n {\n time: 0.34,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.7, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 2: Tidal Wave Palm (파도장타)\n *\n * Sweeping palm strike that flows around defenses.\n * Uses circular motion to bypass guards.\n *\n * Duration: 360ms\n *\n * @korean 감파도장타\n */\nexport const GAM_TIDAL_WAVE_PALM: SkeletalAnimation = {\n name: \"gam_tidal_wave_palm\",\n koreanName: \"감 파도장타\",\n duration: 0.36,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.1, -0.8, -0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.25, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.35, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.36,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.1, -0.8, -0.7, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.25, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 3: Whirlpool Counter (소용돌이반격)\n *\n * Spinning strike that uses opponent's momentum against them.\n * Full body rotation for maximum redirection.\n *\n * Duration: 380ms\n *\n * @korean 감소용돌이반격\n */\nexport const GAM_WHIRLPOOL_COUNTER: SkeletalAnimation = {\n name: \"gam_whirlpool_counter\",\n koreanName: \"감 소용돌이반격\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.6, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.5, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, -0.4, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 1.0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.8, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.6, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.6, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☶ GAN (Mountain) - Defensive Counter Attacks\n// =============================================================================\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 1: Fortress Counter Strike (요새반격타)\n *\n * Solid counter punch from defensive stance with immovable base.\n * Power generated from stable mountain stance.\n *\n * Duration: 300ms\n *\n * @korean 간요새반격타\n */\nexport const GAN_FORTRESS_COUNTER_STRIKE: SkeletalAnimation = {\n name: \"gan_fortress_counter_strike\",\n koreanName: \"간 요새반격타\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.4, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.1, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.4, -0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 2: Avalanche Hammer (눈사태망치)\n *\n * Powerful overhead strike from high guard position.\n * Uses gravity and body weight like falling rocks.\n *\n * Duration: 350ms\n *\n * @korean 간눈사태망치\n */\nexport const GAN_AVALANCHE_HAMMER: SkeletalAnimation = {\n name: \"gan_avalanche_hammer\",\n koreanName: \"간 눈사태망치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-1.3, 0.3, 0.7, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.7, 0.2, 0.6, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 3: Stone Wall Thrust (석벽관통)\n *\n * Immovable forward thrust with locked elbow and shoulder.\n * Unyielding linear force from stable base.\n *\n * Duration: 320ms\n *\n * @korean 간석벽관통\n */\nexport const GAN_STONE_WALL_THRUST: SkeletalAnimation = {\n name: \"gan_stone_wall_thrust\",\n koreanName: \"간 석벽관통\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.15, -0.1, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.1, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.85)],\n ]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// ☷ GON (Earth) - Grounding/Takedown Attacks\n// =============================================================================\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 1: Ground Sweep Strike (접지쓸기)\n *\n * Low sweeping leg attack targeting opponent's base.\n * Uses grounded center of gravity for stability.\n *\n * Duration: 380ms\n *\n * @korean 곤접지쓸기\n */\nexport const GON_GROUND_SWEEP_STRIKE: SkeletalAnimation = {\n name: \"gon_ground_sweep_strike\",\n koreanName: \"곤 접지쓸기\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.19,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.1, 0, 0.5, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_R, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 2: Earthquake Stomp (지진발구르기)\n *\n * Powerful downward stomp targeting opponent's foot or knee.\n * Uses full body weight dropped through leg.\n *\n * Duration: 320ms\n *\n * @korean 곤지진발구르기\n */\nexport const GON_EARTHQUAKE_STOMP: SkeletalAnimation = {\n name: \"gon_earthquake_stomp\",\n koreanName: \"곤 지진발구르기\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.15, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_L, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.9, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.FOOT_L, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 3: Rooting Takedown (뿌리내림꺾기)\n *\n * Low grabbing motion transitioning to ground takedown.\n * Uses low center of gravity to pull opponent down.\n *\n * Duration: 450ms\n *\n * @korean 곤뿌리내림꺾기\n */\nexport const GON_ROOTING_TAKEDOWN: SkeletalAnimation = {\n name: \"gon_rooting_takedown\",\n koreanName: \"곤 뿌리내림꺾기\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)]]),\n },\n {\n time: 0.32,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.5, 0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.5, -0.6, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.38,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.8, 0.3, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.8, -0.3, -0.4, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.6, 0.2, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.3, 0.3)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// Extended Trigram Attacks - 2 Additional Per Stance (확장팔괘공격)\n// =============================================================================\n\n// ☰ GEON Extended Attacks\n/**\n * ☰ 건 (Geon) - Heaven Attack 4: Descending Hammer (천둥망치)\n *\n * Overhead hammer fist strike with full body weight.\n * Targets crown, collarbone, or shoulder with devastating force.\n *\n * @korean 건천둥망치\n */\nexport const GEON_DESCENDING_HAMMER: SkeletalAnimation = {\n name: \"geon_descending_hammer\",\n koreanName: \"건 천둥망치\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.5, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.9, 0, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, -0.3, 0.8)],\n ]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☰ 건 (Geon) - Heaven Attack 5: Splitting Palm (천지분리장)\n *\n * Powerful downward palm strike splitting through defenses.\n * Uses both hands in coordinated descending motion.\n *\n * @korean 건천지분리장\n */\nexport const GEON_SPLITTING_PALM: SkeletalAnimation = {\n name: \"geon_splitting_palm\",\n koreanName: \"건 천지분리장\",\n duration: 0.38,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, -0.2, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-1.2, 0.2, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.5, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.2, 0, 0.9)],\n [BoneName.HAND_L, new THREE.Vector3(-0.2, 0, 0.9)],\n ]),\n },\n {\n time: 0.38,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☱ TAE Extended Attacks\n/**\n * ☱ 태 (Tae) - Lake Attack 4: Rippling Elbow (물결팔꿈치)\n *\n * Flowing elbow strike following circular motion.\n * Water-like adaptation to opponent's position.\n *\n * @korean 태물결팔꿈치\n */\nexport const TAE_RIPPLING_ELBOW: SkeletalAnimation = {\n name: \"tae_rippling_elbow\",\n koreanName: \"태 물결팔꿈치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.8, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.5, 0.5, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☱ 태 (Tae) - Lake Attack 5: Finger Lock Twist (손가락잠금비틀기)\n *\n * Quick finger grab transitioning to painful twist.\n * Targets small joints for control.\n *\n * @korean 태손가락잠금비틀기\n */\nexport const TAE_FINGER_LOCK_TWIST: SkeletalAnimation = {\n name: \"tae_finger_lock_twist\",\n koreanName: \"태 손가락잠금비틀기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.4)]]),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.5)]]),\n },\n {\n time: 0.28,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.5, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(1.2, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☲ LI Extended Attacks\n/**\n * ☲ 리 (Li) - Fire Attack 4: Temple Spike (관자놀이찌르기)\n *\n * Precise strike to temple pressure point.\n * Targets temporal artery for knockout.\n *\n * @korean 리관자놀이찌르기\n */\nexport const LI_TEMPLE_SPIKE: SkeletalAnimation = {\n name: \"li_temple_spike\",\n koreanName: \"리 관자놀이찌르기\",\n duration: 0.28,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.5, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.3, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0.5, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.3, 0.4, 0.7)],\n ]),\n },\n {\n time: 0.28,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☲ 리 (Li) - Fire Attack 5: Blazing Nerve Chain (연속혈도타격)\n *\n * Rapid consecutive strikes to multiple nerve points.\n * Fire-like speed targeting meridian lines.\n *\n * @korean 리연속혈도타격\n */\nexport const LI_BLAZING_NERVE_CHAIN: SkeletalAnimation = {\n name: \"li_blazing_nerve_chain\",\n koreanName: \"리 연속혈도타격\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.3, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.08,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)]]),\n },\n {\n time: 0.16,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.5, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0.2, 0.6)],\n ]),\n },\n {\n time: 0.24,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0.4, 0.7)],\n ]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☳ JIN Extended Attacks\n/**\n * ☳ 진 (Jin) - Thunder Attack 4: Thunder Clap Palm (뇌명장)\n *\n * Explosive double palm strike like thunderclap.\n * Creates shockwave-like impact.\n *\n * @korean 진뇌명장\n */\nexport const JIN_THUNDER_CLAP_PALM: SkeletalAnimation = {\n name: \"jin_thunder_clap_palm\",\n koreanName: \"진 뇌명장\",\n duration: 0.32,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.5, -0.8, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.5, 0.8, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(-0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0.2, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, -0.2, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.1, 0, 0.8)],\n [BoneName.HAND_L, new THREE.Vector3(-0.1, 0, 0.8)],\n ]),\n },\n {\n time: 0.32,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.4, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☳ 진 (Jin) - Thunder Attack 5: Shocking Low Kick (벽력하단차기)\n *\n * Explosive low kick targeting knee or thigh.\n * Sudden burst of power to destabilize opponent.\n *\n * @korean 진벽력하단차기\n */\nexport const JIN_SHOCKING_LOW_KICK: SkeletalAnimation = {\n name: \"jin_shocking_low_kick\",\n koreanName: \"진 벽력하단차기\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.6, 0.5, 0.3, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.FOOT_R, new THREE.Vector3(0.3, 0, 0.7)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☴ SON Extended Attacks\n/**\n * ☴ 손 (Son) - Wind Attack 4: Gale Force Rush (폭풍돌진)\n *\n * Continuous forward pressure with rapid strikes.\n * Wind-like persistence overwhelming defense.\n *\n * @korean 손폭풍돌진\n */\nexport const SON_GALE_FORCE_RUSH: SkeletalAnimation = {\n name: \"son_gale_force_rush\",\n koreanName: \"손 폭풍돌진\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0.1)]]),\n },\n {\n time: 0.1,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.4, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.2)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.2, -0.2, -0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_L, new THREE.Vector3(0, 0, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.3)],\n ]),\n },\n {\n time: 0.3,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0.2, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.2, 0.2, 0.2, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0, 0, 0.7)],\n [BoneName.PELVIS, new THREE.Vector3(0, 0, 0.4)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☴ 손 (Son) - Wind Attack 5: Cutting Wind Palm (절풍장)\n *\n * Sharp horizontal palm slice like cutting wind.\n * Targets throat or brachial plexus.\n *\n * @korean 손절풍장\n */\nexport const SON_CUTTING_WIND_PALM: SkeletalAnimation = {\n name: \"son_cutting_wind_palm\",\n koreanName: \"손 절풍장\",\n duration: 0.3,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.8, -0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.6, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, -0.5, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.12,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.2, 0.6, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.4, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.4, 0.3, 0.6)],\n ]),\n },\n {\n time: 0.3,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.WRIST_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☵ GAM Extended Attacks\n/**\n * ☵ 감 (Gam) - Water Attack 4: Undertow Pull (역류당기기)\n *\n * Grabbing motion pulling opponent off balance.\n * Uses water-like redirection of force.\n *\n * @korean 감역류당기기\n */\nexport const GAM_UNDERTOW_PULL: SkeletalAnimation = {\n name: \"gam_undertow_pull\",\n koreanName: \"감 역류당기기\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, 0, -0.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0, 0.2, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.8, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.1, 0, 0.5)],\n [BoneName.HAND_L, new THREE.Vector3(-0.1, 0, 0.5)],\n ]),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.3, -0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☵ 감 (Gam) - Water Attack 5: Splash Knee (파도무릎)\n *\n * Rising knee strike with wave-like motion.\n * Flows through opponent's guard.\n *\n * @korean 감파도무릎\n */\nexport const GAM_SPLASH_KNEE: SkeletalAnimation = {\n name: \"gam_splash_knee\",\n koreanName: \"감 파도무릎\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(-0.2, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.07,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.3, 0.3, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0.8, 0.2, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.4, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.15, 0.2, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, -0.2, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.FOOT_R, new THREE.Vector3(0.2, 0.4, 0.5)],\n ]),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.HIP_R, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.3, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☶ GAN Extended Attacks\n/**\n * ☶ 간 (Gan) - Mountain Attack 4: Iron Wall Block Strike (철벽반격)\n *\n * Heavy block transitioning to counter punch.\n * Immovable defense becoming offense.\n *\n * @korean 간철벽반격\n */\nexport const GAN_IRON_WALL_BLOCK_STRIKE: SkeletalAnimation = {\n name: \"gan_iron_wall_block_strike\",\n koreanName: \"간 철벽반격\",\n duration: 0.4,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.5, 0.6, 0.8, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.8, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.18,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.4, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.4, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.3, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0.3, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0.2, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.HAND_R, new THREE.Vector3(0, 0, 0.9)]]),\n },\n {\n time: 0.4,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.3, 0.3, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.2, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.2, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n/**\n * ☶ 간 (Gan) - Mountain Attack 5: Boulder Drop Elbow (낙석팔꿈치)\n *\n * Heavy descending elbow strike.\n * Mountain's weight crashing down.\n *\n * @korean 간낙석팔꿈치\n */\nexport const GAN_BOULDER_DROP_ELBOW: SkeletalAnimation = {\n name: \"gan_boulder_drop_elbow\",\n koreanName: \"간 낙석팔꿈치\",\n duration: 0.35,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-1.2, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.2, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.6, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.15,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0, 0.4, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 2.0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n {\n time: 0.35,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, 0, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.PELVIS, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-0.5, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map(),\n },\n ],\n};\n\n// ☷ GON Extended Attacks\n/**\n * ☷ 곤 (Gon) - Earth Attack 4: Quicksand Grab (유사잡기)\n *\n * Low grabbing attack pulling opponent into ground.\n * Earth swallowing motion.\n *\n * @korean 곤유사잡기\n */\nexport const GON_QUICKSAND_GRAB: SkeletalAnimation = {\n name: \"gon_quicksand_grab\",\n koreanName: \"곤 유사잡기\",\n duration: 0.45,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.4, 0, -0.2, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.4, 0, 0.2, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.3, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.3, 0)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.3, 0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.3, -0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.0, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.0, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.HAND_R, new THREE.Vector3(0.2, -0.2, 0.6)],\n [BoneName.HAND_L, new THREE.Vector3(-0.2, -0.2, 0.6)],\n [BoneName.PELVIS, new THREE.Vector3(0, -0.4, 0)],\n ]),\n },\n {\n time: 0.35,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(-0.3, -0.4, -0.3, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.3, 0.4, 0.3, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 1.5, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -1.5, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.2, 0)],\n ]),\n },\n {\n time: 0.45,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.ELBOW_R, new THREE.Euler(0, 0, 0.9, \"XYZ\")],\n [BoneName.ELBOW_L, new THREE.Euler(0, 0, -0.9, \"XYZ\")],\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n/**\n * ☷ 곤 (Gon) - Earth Attack 5: Tectonic Slam (지각충돌)\n *\n * Full body slam using low center of gravity.\n * Earth plate collision force.\n *\n * @korean 곤지각충돌\n */\nexport const GON_TECTONIC_SLAM: SkeletalAnimation = {\n name: \"gon_tectonic_slam\",\n koreanName: \"곤 지각충돌\",\n duration: 0.5,\n loop: false,\n type: \"attack\",\n keyframes: [\n {\n time: 0.0,\n easing: \"ease-out\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.2, 0, 0, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.0, 0, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(-0.4, -0.5, -0.5, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(-0.4, 0.5, 0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.2, 0)],\n ]),\n },\n {\n time: 0.2,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.3, 0.2, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.5, 0.3, 0.4, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.5, -0.3, -0.4, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-0.8, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.2, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([\n [BoneName.PELVIS, new THREE.Vector3(0, -0.1, 0.5)],\n ]),\n },\n {\n time: 0.35,\n easing: \"linear\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0.5, 0.4, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0.4, 0.3, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.6, 0.5, 0.5, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.6, -0.5, -0.5, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0.8)]]),\n },\n {\n time: 0.5,\n easing: \"ease-in\",\n boneRotations: new Map([\n [BoneName.SPINE_LOWER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SPINE_UPPER, new THREE.Euler(0, 0, 0, \"XYZ\")],\n [BoneName.SHOULDER_R, new THREE.Euler(0.3, -0.5, -0.6, \"XYZ\")],\n [BoneName.SHOULDER_L, new THREE.Euler(0.3, 0.5, 0.6, \"XYZ\")],\n [BoneName.KNEE_L, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n [BoneName.KNEE_R, new THREE.Euler(-1.1, 0, 0, \"XYZ\")],\n ]),\n bonePositions: new Map([[BoneName.PELVIS, new THREE.Vector3(0, 0, 0)]]),\n },\n ],\n};\n\n// =============================================================================\n// Exports and Helper Functions\n// =============================================================================\n\n/**\n * Map of all attack animations by stance\n *\n * Each stance has 5 unique attack animations that reflect its philosophy:\n * - GEON: Bone-breaking strikes with overwhelming force\n * - TAE: Fluid joint manipulation with circular motion\n * - LI: Precise nerve strikes targeting vital points\n * - JIN: Explosive power techniques with sudden bursts\n * - SON: Continuous pressure combo attacks\n * - GAM: Flow-counter attacks that redirect force\n * - GAN: Defensive counter-attacks from solid stance\n * - GON: Grounding/takedown attacks with low center\n *\n * @korean 자세별공격애니메이션\n */\nexport const ATTACK_ANIMATIONS_BY_STANCE: ReadonlyMap<\n TrigramStance,\n readonly SkeletalAnimation[]\n> = new Map([\n [\n TrigramStance.GEON,\n [\n GEON_BONE_BREAKING_STRIKE_1,\n GEON_THUNDEROUS_UPPERCUT,\n GEON_CRUSHING_ELBOW,\n GEON_DESCENDING_HAMMER,\n GEON_SPLITTING_PALM,\n ] as const,\n ],\n [\n TrigramStance.TAE,\n [\n TAE_WRIST_LOCK_STRIKE,\n TAE_FLOWING_ARM_BAR,\n TAE_SPIRAL_SHOULDER_THROW,\n TAE_RIPPLING_ELBOW,\n TAE_FINGER_LOCK_TWIST,\n ] as const,\n ],\n [\n TrigramStance.LI,\n [\n LI_BURNING_FINGER_STRIKE_1,\n LI_SOLAR_PLEXUS_SPEAR,\n LI_PHOENIX_EYE_STRIKE,\n LI_TEMPLE_SPIKE,\n LI_BLAZING_NERVE_CHAIN,\n ] as const,\n ],\n [\n TrigramStance.JIN,\n [\n JIN_LIGHTNING_STRAIGHT,\n JIN_SHOCKING_HAMMER_FIST,\n JIN_EXPLOSIVE_KNEE,\n JIN_THUNDER_CLAP_PALM,\n JIN_SHOCKING_LOW_KICK,\n ] as const,\n ],\n [\n TrigramStance.SON,\n [\n SON_WHIRLWIND_COMBO_1,\n SON_PRESSURE_POINT_CHAIN,\n SON_PENETRATING_PALM_RUSH,\n SON_GALE_FORCE_RUSH,\n SON_CUTTING_WIND_PALM,\n ] as const,\n ],\n [\n TrigramStance.GAM,\n [\n GAM_FLOWING_RIVER_STRIKE,\n GAM_TIDAL_WAVE_PALM,\n GAM_WHIRLPOOL_COUNTER,\n GAM_UNDERTOW_PULL,\n GAM_SPLASH_KNEE,\n ] as const,\n ],\n [\n TrigramStance.GAN,\n [\n GAN_FORTRESS_COUNTER_STRIKE,\n GAN_AVALANCHE_HAMMER,\n GAN_STONE_WALL_THRUST,\n GAN_IRON_WALL_BLOCK_STRIKE,\n GAN_BOULDER_DROP_ELBOW,\n ] as const,\n ],\n [\n TrigramStance.GON,\n [\n GON_GROUND_SWEEP_STRIKE,\n GON_EARTHQUAKE_STOMP,\n GON_ROOTING_TAKEDOWN,\n GON_QUICKSAND_GRAB,\n GON_TECTONIC_SLAM,\n ] as const,\n ],\n]);\n\n/**\n * All attack animations in a single map for easy lookup\n *\n * @korean 모든공격애니메이션\n */\nexport const ALL_ATTACK_ANIMATIONS = new Map<string, SkeletalAnimation>([\n // GEON (Heaven)\n [\"geon_bone_breaking_strike_1\", GEON_BONE_BREAKING_STRIKE_1],\n [\"geon_thunderous_uppercut\", GEON_THUNDEROUS_UPPERCUT],\n [\"geon_crushing_elbow\", GEON_CRUSHING_ELBOW],\n [\"geon_descending_hammer\", GEON_DESCENDING_HAMMER],\n [\"geon_splitting_palm\", GEON_SPLITTING_PALM],\n // TAE (Lake)\n [\"tae_wrist_lock_strike\", TAE_WRIST_LOCK_STRIKE],\n [\"tae_flowing_arm_bar\", TAE_FLOWING_ARM_BAR],\n [\"tae_spiral_shoulder_throw\", TAE_SPIRAL_SHOULDER_THROW],\n [\"tae_rippling_elbow\", TAE_RIPPLING_ELBOW],\n [\"tae_finger_lock_twist\", TAE_FINGER_LOCK_TWIST],\n // LI (Fire)\n [\"li_burning_finger_strike_1\", LI_BURNING_FINGER_STRIKE_1],\n [\"li_solar_plexus_spear\", LI_SOLAR_PLEXUS_SPEAR],\n [\"li_phoenix_eye_strike\", LI_PHOENIX_EYE_STRIKE],\n [\"li_temple_spike\", LI_TEMPLE_SPIKE],\n [\"li_blazing_nerve_chain\", LI_BLAZING_NERVE_CHAIN],\n // JIN (Thunder)\n [\"jin_lightning_straight\", JIN_LIGHTNING_STRAIGHT],\n [\"jin_shocking_hammer_fist\", JIN_SHOCKING_HAMMER_FIST],\n [\"jin_explosive_knee\", JIN_EXPLOSIVE_KNEE],\n [\"jin_thunder_clap_palm\", JIN_THUNDER_CLAP_PALM],\n [\"jin_shocking_low_kick\", JIN_SHOCKING_LOW_KICK],\n // SON (Wind)\n [\"son_whirlwind_combo_1\", SON_WHIRLWIND_COMBO_1],\n [\"son_pressure_point_chain\", SON_PRESSURE_POINT_CHAIN],\n [\"son_penetrating_palm_rush\", SON_PENETRATING_PALM_RUSH],\n [\"son_gale_force_rush\", SON_GALE_FORCE_RUSH],\n [\"son_cutting_wind_palm\", SON_CUTTING_WIND_PALM],\n // GAM (Water)\n [\"gam_flowing_river_strike\", GAM_FLOWING_RIVER_STRIKE],\n [\"gam_tidal_wave_palm\", GAM_TIDAL_WAVE_PALM],\n [\"gam_whirlpool_counter\", GAM_WHIRLPOOL_COUNTER],\n [\"gam_undertow_pull\", GAM_UNDERTOW_PULL],\n [\"gam_splash_knee\", GAM_SPLASH_KNEE],\n // GAN (Mountain)\n [\"gan_fortress_counter_strike\", GAN_FORTRESS_COUNTER_STRIKE],\n [\"gan_avalanche_hammer\", GAN_AVALANCHE_HAMMER],\n [\"gan_stone_wall_thrust\", GAN_STONE_WALL_THRUST],\n [\"gan_iron_wall_block_strike\", GAN_IRON_WALL_BLOCK_STRIKE],\n [\"gan_boulder_drop_elbow\", GAN_BOULDER_DROP_ELBOW],\n // GON (Earth)\n [\"gon_ground_sweep_strike\", GON_GROUND_SWEEP_STRIKE],\n [\"gon_earthquake_stomp\", GON_EARTHQUAKE_STOMP],\n [\"gon_rooting_takedown\", GON_ROOTING_TAKEDOWN],\n [\"gon_quicksand_grab\", GON_QUICKSAND_GRAB],\n [\"gon_tectonic_slam\", GON_TECTONIC_SLAM],\n]);\n\n/**\n * Get attack animations for a specific stance\n *\n * @param stance - Trigram stance\n * @returns Array of 5 attack animations for the stance\n *\n * @example\n * ```typescript\n * const geonAttacks = getAttackAnimationsForStance(TrigramStance.GEON);\n * console.log(geonAttacks[0].koreanName); // \"건 뼈부러뜨리기 1\"\n * ```\n *\n * @korean 자세공격애니메이션가져오기\n */\nexport function getAttackAnimationsForStance(\n stance: TrigramStance,\n): readonly SkeletalAnimation[] {\n return ATTACK_ANIMATIONS_BY_STANCE.get(stance) ?? [];\n}\n\n/**\n * Get an attack animation by name\n *\n * @param name - Animation name\n * @returns Skeletal animation or undefined\n *\n * @korean 공격애니메이션가져오기\n */\nexport function getAttackAnimation(\n name: string,\n): SkeletalAnimation | undefined {\n return ALL_ATTACK_ANIMATIONS.get(name);\n}\n"],"mappings":"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"}
|