blacktrigram 0.7.45 → 0.7.48

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.
Files changed (450) hide show
  1. package/lib/App2.js.map +1 -1
  2. package/lib/audio/AudioAssetLoader.js.map +1 -1
  3. package/lib/audio/AudioAssetRegistry.js.map +1 -1
  4. package/lib/audio/AudioCache.js.map +1 -1
  5. package/lib/audio/AudioManager.js.map +1 -1
  6. package/lib/audio/AudioMonitor.js.map +1 -1
  7. package/lib/audio/AudioPool.js.map +1 -1
  8. package/lib/audio/AudioProvider.js.map +1 -1
  9. package/lib/audio/AudioUtils.js.map +1 -1
  10. package/lib/audio/BoneImpactAudioMap.js.map +1 -1
  11. package/lib/audio/VariantSelector.js.map +1 -1
  12. package/lib/audio/types.js.map +1 -1
  13. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
  14. package/lib/components/screens/combat/CombatScreen3D.js +22 -11
  15. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
  16. package/lib/components/screens/combat/components/controls/CombatButtons.js.map +1 -1
  17. package/lib/components/screens/combat/components/controls/CombatControlsPanel.js.map +1 -1
  18. package/lib/components/screens/combat/components/controls/ControlsGuide.js.map +1 -1
  19. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
  20. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
  21. package/lib/components/screens/combat/components/controls/PauseMenuButton.js.map +1 -1
  22. package/lib/components/screens/combat/components/controls/QuickSettings.js.map +1 -1
  23. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
  24. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
  25. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
  26. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
  27. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
  28. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
  29. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
  30. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
  31. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
  32. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
  33. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
  34. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
  35. package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js.map +1 -1
  36. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
  37. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
  38. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
  39. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
  40. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
  41. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
  42. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
  43. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
  44. package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js.map +1 -1
  45. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
  46. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
  47. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
  48. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
  49. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
  50. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
  51. package/lib/components/screens/combat/helpers/AnimationUpdater.js +4 -2
  52. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
  53. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
  54. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
  55. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
  56. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
  57. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
  58. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
  59. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
  60. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
  61. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
  62. package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js.map +1 -1
  63. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
  64. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
  65. package/lib/components/screens/controls/components/Key3D.js.map +1 -1
  66. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
  67. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
  68. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
  69. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
  70. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
  71. package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js.map +1 -1
  72. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
  73. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
  74. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
  75. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
  76. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
  77. package/lib/components/screens/intro/IntroScreen3D.js +1 -1
  78. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
  79. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
  80. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
  81. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
  82. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
  83. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
  84. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
  85. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
  86. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
  87. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
  88. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
  89. package/lib/components/screens/training/TrainingScreen3D.js +1 -0
  90. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
  91. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
  92. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
  93. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
  94. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
  95. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
  96. package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js.map +1 -1
  97. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
  98. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
  99. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
  100. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
  101. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
  102. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
  103. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
  104. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
  105. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
  106. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
  107. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
  108. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
  109. package/lib/components/screens/training/hooks/useTrainingActions.d.ts +1 -0
  110. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
  111. package/lib/components/screens/training/hooks/useTrainingActions.js +6 -4
  112. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
  113. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
  114. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
  115. package/lib/components/shared/base/BaseButton.js.map +1 -1
  116. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
  117. package/lib/components/shared/base/BasePanel.js.map +1 -1
  118. package/lib/components/shared/base/BaseText.js.map +1 -1
  119. package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
  120. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
  121. package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
  122. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
  123. package/lib/components/shared/mobile/HapticController.js.map +1 -1
  124. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
  125. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
  126. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
  127. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
  128. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
  129. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
  130. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
  131. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
  132. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
  133. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
  134. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
  135. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
  136. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
  137. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
  138. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
  139. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
  140. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
  141. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
  142. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
  143. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
  144. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
  145. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
  146. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
  147. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
  148. package/lib/components/shared/three/models/SkeletalPlayer3D.js +7 -5
  149. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
  150. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
  151. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
  152. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
  153. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
  154. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
  155. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
  156. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
  157. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
  158. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
  159. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
  160. package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
  161. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
  162. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
  163. package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
  164. package/lib/components/shared/three/ui/MenuList.js.map +1 -1
  165. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
  166. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
  167. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
  168. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
  169. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
  170. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
  171. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
  172. package/lib/components/shared/ui/BackButton.js.map +1 -1
  173. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
  174. package/lib/components/shared/ui/CombatTimer.js.map +1 -1
  175. package/lib/components/shared/ui/ErrorModal.js.map +1 -1
  176. package/lib/components/shared/ui/LoadingState.js.map +1 -1
  177. package/lib/components/shared/ui/SplashScreen.js +2 -2
  178. package/lib/components/shared/ui/SplashScreen.js.map +1 -1
  179. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
  180. package/lib/components/shared/ui/VolumeControl.js.map +1 -1
  181. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
  182. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
  183. package/lib/constants/bodyDimensions.js.map +1 -1
  184. package/lib/constants/bodyRenderingConstants.js.map +1 -1
  185. package/lib/data/archetypeClothing.js.map +1 -1
  186. package/lib/data/archetypePhysicalAttributes.js.map +1 -1
  187. package/lib/data/techniqueMappings.js.map +1 -1
  188. package/lib/data/techniques.js.map +1 -1
  189. package/lib/hooks/useActionFeedback.js.map +1 -1
  190. package/lib/hooks/useBalanceAnimations.js.map +1 -1
  191. package/lib/hooks/useCombatTimer.js.map +1 -1
  192. package/lib/hooks/useDebounce.js.map +1 -1
  193. package/lib/hooks/useHUDLayout.js.map +1 -1
  194. package/lib/hooks/useHandPoseTransitions.js.map +1 -1
  195. package/lib/hooks/useKeyboardControls.js.map +1 -1
  196. package/lib/hooks/useMatchCountdown.js.map +1 -1
  197. package/lib/hooks/useMuscleActivation.js.map +1 -1
  198. package/lib/hooks/usePauseMenu.js.map +1 -1
  199. package/lib/hooks/usePlayerAnimation.js.map +1 -1
  200. package/lib/hooks/useResponsiveLayout.js.map +1 -1
  201. package/lib/hooks/useRoundTransition.js.map +1 -1
  202. package/lib/hooks/useSkeletalAnimation.d.ts.map +1 -1
  203. package/lib/hooks/useSkeletalAnimation.js +1 -1
  204. package/lib/hooks/useSkeletalAnimation.js.map +1 -1
  205. package/lib/hooks/useTechniqueSelection.js.map +1 -1
  206. package/lib/hooks/useThrottle.js.map +1 -1
  207. package/lib/hooks/useTouchControls.js.map +1 -1
  208. package/lib/hooks/useWebGLContextLossHandler.js.map +1 -1
  209. package/lib/hooks/useWindowSize.js.map +1 -1
  210. package/lib/systems/CombatSystem.js.map +1 -1
  211. package/lib/systems/EffectCalculator.js.map +1 -1
  212. package/lib/systems/LayoutSystem.js.map +1 -1
  213. package/lib/systems/PlayerEffectManager.js.map +1 -1
  214. package/lib/systems/ResponsiveScaling.js.map +1 -1
  215. package/lib/systems/TrigramSystem.js.map +1 -1
  216. package/lib/systems/VitalPointSystem.js.map +1 -1
  217. package/lib/systems/ai/AIPersonality.js.map +1 -1
  218. package/lib/systems/ai/AdaptiveDifficulty.js +16 -16
  219. package/lib/systems/ai/AdaptiveDifficulty.js.map +1 -1
  220. package/lib/systems/ai/ArchetypeEnforcer.js.map +1 -1
  221. package/lib/systems/ai/ComboSystem.js.map +1 -1
  222. package/lib/systems/ai/DecisionTree.js.map +1 -1
  223. package/lib/systems/ai/TrainingAI.js.map +1 -1
  224. package/lib/systems/ai/types.js.map +1 -1
  225. package/lib/systems/animation/builders/AnimationBuilder.js.map +1 -1
  226. package/lib/systems/animation/builders/HandPoseApplicator.js.map +1 -1
  227. package/lib/systems/animation/builders/HandPoses.js.map +1 -1
  228. package/lib/systems/animation/builders/KeyframeConfig.js.map +1 -1
  229. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
  230. package/lib/systems/animation/builders/KickPhaseApplicator.d.ts +6 -0
  231. package/lib/systems/animation/builders/KickPhaseApplicator.d.ts.map +1 -1
  232. package/lib/systems/animation/builders/KickPhaseApplicator.js +16 -9
  233. package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -1
  234. package/lib/systems/animation/builders/KoreanGuardPositions.d.ts +4 -4
  235. package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -1
  236. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts +1 -1
  237. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts.map +1 -1
  238. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js +5 -5
  239. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -1
  240. package/lib/systems/animation/builders/MartialArtsConstants.d.ts +112 -71
  241. package/lib/systems/animation/builders/MartialArtsConstants.d.ts.map +1 -1
  242. package/lib/systems/animation/builders/MartialArtsConstants.js +113 -72
  243. package/lib/systems/animation/builders/MartialArtsConstants.js.map +1 -1
  244. package/lib/systems/animation/builders/MartialPoseApplicator.js.map +1 -1
  245. package/lib/systems/animation/builders/PunchPhaseApplicator.js.map +1 -1
  246. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
  247. package/lib/systems/animation/builders/TrigramGuardApplicator.js.map +1 -1
  248. package/lib/systems/animation/catalogs/AttackAnimations.js.map +1 -1
  249. package/lib/systems/animation/catalogs/BasicAnimations.js.map +1 -1
  250. package/lib/systems/animation/catalogs/ComboAnimations.js.map +1 -1
  251. package/lib/systems/animation/catalogs/DarkOpsAnimations.js.map +1 -1
  252. package/lib/systems/animation/catalogs/DefensiveAnimations.js.map +1 -1
  253. package/lib/systems/animation/catalogs/ElbowKneeAnimations.js.map +1 -1
  254. package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js.map +1 -1
  255. package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js.map +1 -1
  256. package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -1
  257. package/lib/systems/animation/catalogs/GamRedirectionAnimations.js.map +1 -1
  258. package/lib/systems/animation/catalogs/GamStanceAnimations.js +21 -0
  259. package/lib/systems/animation/catalogs/GamStanceAnimations.js.map +1 -0
  260. package/lib/systems/animation/catalogs/GamTechniqueAnimations.js +34 -2
  261. package/lib/systems/animation/catalogs/GamTechniqueAnimations.js.map +1 -1
  262. package/lib/systems/animation/catalogs/GanStanceAnimations.js.map +1 -1
  263. package/lib/systems/animation/catalogs/GanTechniqueAnimations.js.map +1 -1
  264. package/lib/systems/animation/catalogs/GeonStanceAnimations.js.map +1 -1
  265. package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts +9 -0
  266. package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts.map +1 -1
  267. package/lib/systems/animation/catalogs/GonTechniqueAnimations.js +288 -0
  268. package/lib/systems/animation/catalogs/GonTechniqueAnimations.js.map +1 -0
  269. package/lib/systems/animation/catalogs/GrapplingAnimations.js.map +1 -1
  270. package/lib/systems/animation/catalogs/JinStanceAnimations.js.map +1 -1
  271. package/lib/systems/animation/catalogs/JinTechniqueAnimations.js.map +1 -1
  272. package/lib/systems/animation/catalogs/KickAnimations.d.ts +2 -2
  273. package/lib/systems/animation/catalogs/KickAnimations.js +2 -2
  274. package/lib/systems/animation/catalogs/KickAnimations.js.map +1 -1
  275. package/lib/systems/animation/catalogs/LiStanceAnimations.js +14 -1
  276. package/lib/systems/animation/catalogs/LiStanceAnimations.js.map +1 -1
  277. package/lib/systems/animation/catalogs/LiTechniqueAnimations.js.map +1 -1
  278. package/lib/systems/animation/catalogs/MovementAnimations.js.map +1 -1
  279. package/lib/systems/animation/catalogs/PunchAnimations.d.ts +1 -1
  280. package/lib/systems/animation/catalogs/PunchAnimations.js +1 -1
  281. package/lib/systems/animation/catalogs/PunchAnimations.js.map +1 -1
  282. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
  283. package/lib/systems/animation/catalogs/SonStanceAnimations.js.map +1 -1
  284. package/lib/systems/animation/catalogs/SonTechniqueAnimations.js.map +1 -1
  285. package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js.map +1 -1
  286. package/lib/systems/animation/catalogs/StanceAnimations.js.map +1 -1
  287. package/lib/systems/animation/catalogs/StanceAttackAnimations.js.map +1 -1
  288. package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts +6 -6
  289. package/lib/systems/animation/catalogs/StanceGuardPoses.js +36 -36
  290. package/lib/systems/animation/catalogs/StanceGuardPoses.js.map +1 -1
  291. package/lib/systems/animation/catalogs/StanceIdleAnimations.js.map +1 -1
  292. package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js.map +1 -1
  293. package/lib/systems/animation/catalogs/StepSkeletalAnimations.js.map +1 -1
  294. package/lib/systems/animation/catalogs/TaeJointLockAnimations.js.map +1 -1
  295. package/lib/systems/animation/catalogs/TaeStanceAnimations.js.map +1 -1
  296. package/lib/systems/animation/constants/AnatomicalLimits.js.map +1 -1
  297. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
  298. package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -1
  299. package/lib/systems/animation/core/AnimationPriority.js +15 -15
  300. package/lib/systems/animation/core/AnimationPriority.js.map +1 -1
  301. package/lib/systems/animation/core/AnimationRegistry.d.ts +30 -0
  302. package/lib/systems/animation/core/AnimationRegistry.d.ts.map +1 -1
  303. package/lib/systems/animation/core/AnimationRegistry.js +74 -12
  304. package/lib/systems/animation/core/AnimationRegistry.js.map +1 -1
  305. package/lib/systems/animation/core/AnimationStateMachine.js +16 -16
  306. package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
  307. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
  308. package/lib/systems/animation/core/AnimationTransitions.js +34 -0
  309. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
  310. package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
  311. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
  312. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
  313. package/lib/systems/animation/core/TechniqueAnimationMapping.js.map +1 -1
  314. package/lib/systems/animation/core/index.d.ts +1 -1
  315. package/lib/systems/animation/core/index.d.ts.map +1 -1
  316. package/lib/systems/animation/core/types.d.ts +24 -0
  317. package/lib/systems/animation/core/types.d.ts.map +1 -1
  318. package/lib/systems/animation/core/types.js +27 -11
  319. package/lib/systems/animation/core/types.js.map +1 -1
  320. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
  321. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
  322. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
  323. package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
  324. package/lib/systems/animation/systems/MuscleActivation.js.map +1 -1
  325. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
  326. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
  327. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
  328. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
  329. package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
  330. package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
  331. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
  332. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
  333. package/lib/systems/bodypart/types.js.map +1 -1
  334. package/lib/systems/breathing/BreathingDisruptionSystem.js +19 -19
  335. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
  336. package/lib/systems/breathing/feedback.js.map +1 -1
  337. package/lib/systems/breathing/integration.js.map +1 -1
  338. package/lib/systems/combat/BalanceSystem.js +19 -19
  339. package/lib/systems/combat/BalanceSystem.js.map +1 -1
  340. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
  341. package/lib/systems/combat/CombatStateSystem.js +17 -17
  342. package/lib/systems/combat/CombatStateSystem.js.map +1 -1
  343. package/lib/systems/combat/ConsciousnessSystem.js +24 -24
  344. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
  345. package/lib/systems/combat/FallIntegration.js.map +1 -1
  346. package/lib/systems/combat/GrappleSystem.js.map +1 -1
  347. package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
  348. package/lib/systems/combat/PainResponseSystem.js +21 -21
  349. package/lib/systems/combat/PainResponseSystem.js.map +1 -1
  350. package/lib/systems/combat/TrainingCombatSystem.js.map +1 -1
  351. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
  352. package/lib/systems/combat/typeGuards.js.map +1 -1
  353. package/lib/systems/effects.js.map +1 -1
  354. package/lib/systems/game.js.map +1 -1
  355. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
  356. package/lib/systems/movement/helpers/AccelerationUpdater.js.map +1 -1
  357. package/lib/systems/movement/helpers/accelerationUtils.js.map +1 -1
  358. package/lib/systems/movement/integration.js.map +1 -1
  359. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
  360. package/lib/systems/physics/CollisionDetection.js.map +1 -1
  361. package/lib/systems/physics/CoordinateMapper.js.map +1 -1
  362. package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
  363. package/lib/systems/physics/MovementPhysics.js.map +1 -1
  364. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
  365. package/lib/systems/physics/SpeedModifierSystem.js +6 -6
  366. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
  367. package/lib/systems/trigram/KoreanCulture.js.map +1 -1
  368. package/lib/systems/trigram/KoreanTechniques.js.map +1 -1
  369. package/lib/systems/trigram/StanceManager.js.map +1 -1
  370. package/lib/systems/trigram/TransitionCalculator.js.map +1 -1
  371. package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
  372. package/lib/systems/trigram/techniques/DarkOpsTechniques.js.map +1 -1
  373. package/lib/systems/trigram/techniques/GamTechniques.js.map +1 -1
  374. package/lib/systems/trigram/techniques/GanTechniques.js.map +1 -1
  375. package/lib/systems/trigram/techniques/GeonTechniques.js.map +1 -1
  376. package/lib/systems/trigram/techniques/GonTechniques.js.map +1 -1
  377. package/lib/systems/trigram/techniques/JinTechniques.js.map +1 -1
  378. package/lib/systems/trigram/techniques/LiTechniques.js.map +1 -1
  379. package/lib/systems/trigram/techniques/SonTechniques.js.map +1 -1
  380. package/lib/systems/trigram/techniques/TaeTechniques.js.map +1 -1
  381. package/lib/systems/trigram/techniques/TechniqueConfig.js.map +1 -1
  382. package/lib/systems/trigram/techniques/index.js.map +1 -1
  383. package/lib/systems/trigram/types/GonTechniqueExtensions.js.map +1 -1
  384. package/lib/systems/trigram/types.js.map +1 -1
  385. package/lib/systems/types.js.map +1 -1
  386. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
  387. package/lib/systems/vitalpoint/HitDetection.js.map +1 -1
  388. package/lib/systems/vitalpoint/KoreanAnatomy.js.map +1 -1
  389. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
  390. package/lib/systems/vitalpoint/MeridianVitalPointMapping.js.map +1 -1
  391. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
  392. package/lib/types/AccessibilityTypes.js.map +1 -1
  393. package/lib/types/LayoutTypes.js.map +1 -1
  394. package/lib/types/PhysicsTypes.js.map +1 -1
  395. package/lib/types/common.js.map +1 -1
  396. package/lib/types/constants/animations.js.map +1 -1
  397. package/lib/types/constants/colors.js.map +1 -1
  398. package/lib/types/constants/designSystem.js.map +1 -1
  399. package/lib/types/constants/index.js.map +1 -1
  400. package/lib/types/constants/layout.js.map +1 -1
  401. package/lib/types/constants/performance.js.map +1 -1
  402. package/lib/types/constants/typography.js.map +1 -1
  403. package/lib/types/constants/ui.js.map +1 -1
  404. package/lib/types/facial.js +19 -19
  405. package/lib/types/facial.js.map +1 -1
  406. package/lib/types/hand-animation.js.map +1 -1
  407. package/lib/types/injury.js.map +1 -1
  408. package/lib/types/muscle.js.map +1 -1
  409. package/lib/types/physics.js.map +1 -1
  410. package/lib/types/physicsConstants.js.map +1 -1
  411. package/lib/types/player-visual.d.ts +1 -1
  412. package/lib/types/player-visual.d.ts.map +1 -1
  413. package/lib/types/skeletal.js.map +1 -1
  414. package/lib/types/techniqueId.js.map +1 -1
  415. package/lib/utils/accessibility.js.map +1 -1
  416. package/lib/utils/arenaWorldDimensions.js.map +1 -1
  417. package/lib/utils/assetConfig.js.map +1 -1
  418. package/lib/utils/characterScaling.js.map +1 -1
  419. package/lib/utils/colorHelpers.js.map +1 -1
  420. package/lib/utils/colorUtils.js.map +1 -1
  421. package/lib/utils/combatReadiness.js.map +1 -1
  422. package/lib/utils/controlMapping.js.map +1 -1
  423. package/lib/utils/deviceDetection.js +6 -7
  424. package/lib/utils/deviceDetection.js.map +1 -1
  425. package/lib/utils/effectUtils.js.map +1 -1
  426. package/lib/utils/fabricTextures.js.map +1 -1
  427. package/lib/utils/hapticFeedback.js.map +1 -1
  428. package/lib/utils/haptics.js.map +1 -1
  429. package/lib/utils/htmlOverlayHelpers.js.map +1 -1
  430. package/lib/utils/inputSystem.js.map +1 -1
  431. package/lib/utils/koreanThemeHelpers.js.map +1 -1
  432. package/lib/utils/math.js.map +1 -1
  433. package/lib/utils/mobileLayoutHelpers.js.map +1 -1
  434. package/lib/utils/mobileUIUtils.js.map +1 -1
  435. package/lib/utils/performance/PerformanceMonitor.js.map +1 -1
  436. package/lib/utils/performance/PerformanceOverlay3D.js.map +1 -1
  437. package/lib/utils/performance/usePerformanceMonitor.js.map +1 -1
  438. package/lib/utils/performanceOptimization.js.map +1 -1
  439. package/lib/utils/player3DHelpers.js.map +1 -1
  440. package/lib/utils/playerUtils.js.map +1 -1
  441. package/lib/utils/responsiveLayout.js.map +1 -1
  442. package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
  443. package/lib/utils/responsiveOrientationConstants.js.map +1 -1
  444. package/lib/utils/safeAreaUtils.js.map +1 -1
  445. package/lib/utils/sharedPhysicsConfig.js.map +1 -1
  446. package/lib/utils/skeletonScaling.js.map +1 -1
  447. package/lib/utils/stanceHelpers.js.map +1 -1
  448. package/lib/utils/threeObjectPool.js.map +1 -1
  449. package/lib/utils/visualEffects.js.map +1 -1
  450. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"GeonStanceAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/GeonStanceAnimations.ts"],"sourcesContent":["/**\n * ☰ Geon (Heaven) Stance-Specific Animations\n *\n * Specialized idle, movement, and combat animations for the Geon (건/Heaven) trigram.\n * Embodies direct force and bone-breaking power from Taekwondo techniques.\n *\n * **Korean Martial Arts Context:**\n * - **무술**: 태권도 파워 기술 (Taekwondo Power Techniques)\n * - **특성**: 정면 공격 (Direct Frontal Strikes), 골절력 (Bone-Breaking Force)\n * - **철학**: 압도적인 힘 (Overwhelming Power), 하늘의 권위 (Heavenly Authority)\n * - **대표 기술**: 천둥벽력 (Heavenly Fist/Thunderclap Strike)\n *\n * @module systems/animation/catalogs/GeonStanceAnimations\n * @category Animation\n * @korean 건괘자세애니메이션\n */\n\nimport { BoneName } from \"@/types/skeletal\";\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\nimport { ANATOMICAL_LIMITS } from \"../constants\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON IDLE BREATHING ANIMATION (건괘 호흡 자세)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Idle Breathing Animation\n *\n * **Korean**: 건괘 호흡 자세 (Geon-gwae Hoheup Jase)\n * **Philosophy**: Embodying heavenly authority through powerful breathing\n *\n * Characteristics:\n * - Chest expansion emphasizing power readiness\n * - Shoulder squaring for frontal dominance\n * - Fists clenched at ready position\n * - Head held high (authoritative posture)\n *\n * Animation Cycle:\n * - 0ms: Neutral breathing position\n * - 1250ms: Chest expansion (inhale)\n * - 2500ms: Return to neutral (exhale)\n *\n * @korean 건괘호흡자세\n * @duration 2500ms (2.5 second cycle)\n * @category Idle Animation\n */\nexport const GEON_IDLE_BREATHING: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_idle_breathing\",\n \"건괘 호흡 자세\"\n )\n .asIdle(2.5, true)\n // Keyframe 0ms: Neutral breathing position (baseline)\n .at(0)\n .rotate(BoneName.PELVIS, 0, 0, 0) // Neutral pelvis\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral spine\n .rotate(BoneName.SHOULDER_L, -0.17, 0, -0.09) // -10°, 0°, -5° (relaxed high guard)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° (bent)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° (bent)\n .rotate(BoneName.HEAD, 0.09, 0, 0) // 5° (head held high)\n .done<MartialArtsAnimationBuilder>()\n // Keyframe 1250ms: Chest expansion (inhale)\n .at(1.25)\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° (chest expands backward)\n .rotate(BoneName.SHOULDER_L, -0.21, 0, -0.14) // -12°, 0°, -8° (shoulders back)\n .rotate(BoneName.SHOULDER_R, -0.21, 0, 0.14) // -12°, 0°, 8°\n .rotate(BoneName.HEAD, 0.14, 0, 0) // 8° (emphasize power)\n .done<MartialArtsAnimationBuilder>()\n // Keyframe 2500ms: Return to neutral (exhale)\n .at(2.5)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, -0.09)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09)\n .rotate(BoneName.HEAD, 0.09, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON FORWARD ADVANCE (천둥 전진)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Forward Advance Animation\n *\n * **Korean**: 천둥 전진 (Cheondung Jeonjin) - Thunder Advance\n * **Technique**: Heavy forward step with power weight transfer\n *\n * Characteristics:\n * - Lead shoulder driving forward\n * - Rear leg pushing with explosive force\n * - Maintains high center of gravity\n * - Powerful, authoritative stride\n *\n * Animation Phases:\n * - 0-200ms: Initial push-off\n * - 200-500ms: Weight transfer forward\n * - 500-667ms: Landing with power\n *\n * @korean 천둥전진\n * @frames 12 frames (~55.5ms per frame at 60fps)\n * @duration 667ms\n * @category Movement Animation\n */\nexport const GEON_FORWARD_ADVANCE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_forward_advance\",\n \"천둥 전진\"\n )\n .asMovement(0.667, false)\n // Frame 0-4: Push-off phase (0-200ms)\n .at(0)\n .rotate(BoneName.PELVIS, 0.1, 0, 0) // Forward tilt\n .rotate(BoneName.SPINE_UPPER, 0.15, 0, 0) // Lean forward\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20° rear leg push\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° front leg ready\n .rotate(BoneName.SHOULDER_R, -0.26, 0, 0.17) // -15°, 0°, 10° (driving forward)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 5-9: Weight transfer (200-500ms)\n .at(0.35)\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // More forward\n .rotate(BoneName.SPINE_UPPER, 0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° extending\n .rotate(BoneName.KNEE_L, -0.7, 0, 0) // -40° absorbing weight\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15°\n .position(BoneName.PELVIS, 0, 0.02, 0.3) // Forward and slight up\n .done<MartialArtsAnimationBuilder>()\n // Frame 10-12: Landing phase (500-667ms)\n .at(0.667)\n .rotate(BoneName.PELVIS, 0.09, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° planted\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° forward stance\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09)\n .position(BoneName.PELVIS, 0, 0, 0.5) // Full step forward\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON DIAGONAL POWER STEP (대각선 강타보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Diagonal Power Step Animation\n *\n * **Korean**: 대각선 강타보 (Daegakseon Gangtabo) - Diagonal Power Step\n * **Technique**: 45° angle power movement with hip rotation\n *\n * Characteristics:\n * - 45° diagonal movement for tactical positioning\n * - Hip rotation for torque generation\n * - Maintain high center of gravity\n * - Explosive lateral power transfer\n *\n * Animation Phases:\n * - 0-233ms: Initial 45° pivot\n * - 233-583ms: Diagonal weight transfer\n * - 583-778ms: Landing in power position\n *\n * @korean 대각선강타보\n * @frames 14 frames (~55.5ms per frame at 60fps)\n * @duration 778ms\n * @category Movement Animation\n */\nexport const GEON_DIAGONAL_POWER_STEP: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_diagonal_power_step\",\n \"대각선 강타보\"\n )\n .asMovement(0.778, false)\n // Frames 0-4: Pivot phase (0-233ms)\n .at(0)\n .rotate(BoneName.PELVIS, 0.09, -0.79, 0) // 5°, -45° rotation\n .rotate(BoneName.SPINE_UPPER, 0.14, -0.87, 0) // 8°, -50° torso twist\n .rotate(BoneName.KNEE_R, -0.52, 0, 0) // -30° coiled\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° ready\n .rotate(BoneName.HIP_L, 0, 0.35, 0) // 0°, 20° hip out\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frames 5-10: Diagonal transfer (233-583ms)\n .at(0.408)\n .rotate(BoneName.PELVIS, 0.14, -0.52, 0) // 8°, -30°\n .rotate(BoneName.SPINE_UPPER, 0.17, -0.61, 0) // 10°, -35°\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° extending\n .rotate(BoneName.KNEE_L, -0.7, 0, 0) // -40° loading\n .rotate(BoneName.HIP_L, 0, 0.52, 0) // 0°, 30° maximum reach\n .position(BoneName.PELVIS, -0.3, 0.03, 0.3) // Diagonal movement\n .done<MartialArtsAnimationBuilder>()\n // Frames 11-14: Landing phase (583-778ms)\n .at(0.778)\n .rotate(BoneName.PELVIS, 0.09, -0.79, 0) // 5°, -45° settled\n .rotate(BoneName.SPINE_UPPER, 0.12, -0.87, 0) // 7°, -50°\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20°\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° grounded\n .rotate(BoneName.HIP_L, 0, 0.79, 0) // 0°, 45° full diagonal\n .position(BoneName.PELVIS, -0.4, 0, 0.4) // 45° position\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON HEAVENLY FIST ANIMATION (천둥벽력 - Enhanced)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Heavenly Fist Attack Animation (Enhanced)\n *\n * **Korean**: 천둥벽력 (Cheondung Byeokryeok) - Thunderclap Strike\n * **Technique**: Direct frontal punch with bone-breaking force\n * **Target Points**: 백회혈 (Baekhoehoel/Crown), 명치 (Solar Plexus), 흉골 (Sternum)\n *\n * Characteristics:\n * - Explosive forward drive with hip rotation\n * - Full arm extension with shoulder follow-through\n * - Generates maximum power from ground up\n * - Direct bone-breaking intent\n *\n * Animation Phases:\n * - 0-300ms: Wind-up (6 frames) - Cock fist to ear, twist torso\n * - 300-800ms: Strike (8 frames) - Explosive forward rotation\n * - 800-1200ms: Recovery (6 frames) - Return to guard\n *\n * **Performance**: Targets 60fps (16.67ms per frame)\n * **Damage Type**: Bone-breaking blunt force\n *\n * @korean 천둥벽력\n * @frames 20 total (6 wind-up, 8 strike, 6 recovery)\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_HEAVENLY_FIST_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_heavenly_fist\",\n \"천둥벽력\"\n )\n .asAttack(1.2)\n // =================================================================\n // WIND-UP PHASE (0-300ms, frames 0-6)\n // =================================================================\n // Frame 0: Neutral Geon guard baseline\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard position\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard bend\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Start of wind-up (100ms)\n .at(0.1)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15° cock back\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° bent\n .rotate(BoneName.SPINE_UPPER, 0, -0.26, 0) // 0°, -15° torso winds up\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // 0°, -10° hip winds\n .done<MartialArtsAnimationBuilder>()\n // Frame 6: Maximum wind-up (300ms)\n .at(0.3)\n .rotate(BoneName.SHOULDER_R, -0.44, 0, 0.35) // -25°, 0°, 20° maximum cock\n .rotate(BoneName.ELBOW_R, -2.27, 0, 0) // -130° maximum bend\n .rotate(BoneName.SPINE_UPPER, 0, -0.35, 0) // 0°, -20° peak twist\n .rotate(BoneName.PELVIS, 0, -0.26, 0) // 0°, -15° maximum coil\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (300-800ms, frames 7-14)\n // =================================================================\n // Frame 10: Mid-strike (500ms)\n .at(0.5)\n .rotate(BoneName.SHOULDER_R, 0.79, 0, 0) // 45° explosive forward\n .rotate(BoneName.ELBOW_R, -0.17, 0, 0) // -10° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° rotates through\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° hip drives\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° rear leg drives\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame 14: Full extension + follow-through (800ms)\n // NOTE: Shoulder rotation of 1.05 rad (~60°) is intentionally more aggressive\n // than the generic PUNCH_PHASES.EXTENSION (~30-45°) to reflect Geon's\n // 골절력 (bone-breaking power) philosophy. This over-rotation emphasizes\n // maximum penetration and dominance while remaining within anatomically\n // plausible limits for a stylized power strike.\n .at(0.8)\n .rotate(BoneName.SHOULDER_R, 1.05, 0, -0.09) // 60° full extension (Geon power strike)\n .rotate(BoneName.ELBOW_R, 0, 0, 0) // 0° fully extended\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° impact alignment\n .rotate(BoneName.SPINE_UPPER, 0, 0.44, 0) // 0°, 25° maximum rotation\n .rotate(BoneName.PELVIS, 0, 0.35, 0) // 0°, 20° hip follow-through\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (800-1200ms, frames 15-20)\n // =================================================================\n // Frame 17: Begin retraction (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_R, 0.35, 0, 0.09) // 20°, 0°, 5°\n .rotate(BoneName.ELBOW_R, -1.05, 0, 0) // -60° retracting\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 0°, 10°\n .rotate(BoneName.PELVIS, 0, 0.09, 0)\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame 20: Return to guard (1200ms)\n .at(1.2)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard position\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard bend\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0°, 0° neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON OVERHEAD HAMMER (하늘의 망치)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Overhead Hammer Strike Animation\n *\n * **Korean**: 천둥 망치타 (Cheondung Mangchita) - Heavenly Hammer Strike\n * **Technique**: Downward overhead strike with full body weight\n * **Target Points**: 정수리 (Crown), 쇄골 (Clavicle), 어깨 (Shoulder)\n *\n * Characteristics:\n * - Arms raised overhead in chambered position\n * - Downward strike with full body weight behind it\n * - Devastating impact on shoulder, clavicle, or skull targets\n * - Uses gravity and body drop for maximum force\n *\n * Animation Phases:\n * - 0-350ms: Wind-up (7 frames) - Raise arms overhead\n * - 350-850ms: Strike (10 frames) - Downward hammer with body drop\n * - 850-1200ms: Recovery (7 frames) - Return to stance\n *\n * **Performance**: 60fps target (16.67ms per frame)\n * **Damage Type**: Crushing overhead force\n *\n * @korean 천둥망치타\n * @frames 24 total (7 wind-up, 10 strike, 7 recovery)\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_OVERHEAD_HAMMER: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_overhead_hammer\",\n \"천둥 망치타\"\n )\n .asAttack(1.2)\n // =================================================================\n // WIND-UP PHASE (0-350ms, frames 0-7)\n // =================================================================\n // Frame 0: Start raising arms\n .at(0)\n .rotate(BoneName.SHOULDER_L, -0.52, 0.17, 0.35) // -30°, 10°, 20° starting lift\n .rotate(BoneName.SHOULDER_R, -0.52, -0.17, -0.35) // -30°, -10°, -20°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° bent\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° bent\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° slight back\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Arms rising (175ms)\n .at(0.175)\n .rotate(BoneName.SHOULDER_L, -1.22, 0.26, 0.52) // -70°, 15°, 30°\n .rotate(BoneName.SHOULDER_R, -1.22, -0.26, -0.52) // -70°, -15°, -30°\n .rotate(BoneName.ELBOW_L, 0, 0, -2.09) // -120° more bent\n .rotate(BoneName.ELBOW_R, 0, 0, 2.09) // 120° more bent\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° leaning back\n .position(BoneName.PELVIS, 0, -0.02, 0) // Slight crouch\n .done<MartialArtsAnimationBuilder>()\n // Frame 7: Near-maximum overhead chamber (350ms)\n .at(0.35)\n .rotate(BoneName.SHOULDER_L, ANATOMICAL_LIMITS.SHOULDER.MAX_OVERHEAD, 0.35, 0.7) // -135°, 20°, 40° powerful overhead\n .rotate(BoneName.SHOULDER_R, ANATOMICAL_LIMITS.SHOULDER.MAX_OVERHEAD, -0.35, -0.7) // -135°, -20°, -40°\n .rotate(BoneName.ELBOW_L, 0, 0, -ANATOMICAL_LIMITS.ELBOW.MAX_BEND) // -125° strong bend within safe limit\n .rotate(BoneName.ELBOW_R, 0, 0, ANATOMICAL_LIMITS.ELBOW.MAX_BEND) // 125° strong bend within safe limit\n .rotate(BoneName.WRIST_L, -0.17, 0, 0) // -10° wrists cocked\n .rotate(BoneName.WRIST_R, -0.17, 0, 0) // -10°\n .rotate(BoneName.SPINE_UPPER, -0.26, 0, 0) // -15° back lean\n .rotate(BoneName.HEAD, -0.17, 0, 0) // -10° looking up\n .position(BoneName.PELVIS, 0, -0.05, 0) // Deep crouch for power\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (350-850ms, frames 8-17)\n // =================================================================\n // Frame 10: Beginning descent (475ms)\n .at(0.475)\n .rotate(BoneName.SHOULDER_L, -1.92, 0.26, 0.52) // -110°, 15°, 30° starting down\n .rotate(BoneName.SHOULDER_R, -1.92, -0.26, -0.52) // -110°, -15°, -30°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.92) // -110° extending\n .rotate(BoneName.ELBOW_R, 0, 0, 1.92) // 110° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0° coming forward\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.03, 0.02)\n .done<MartialArtsAnimationBuilder>()\n // Frame 13: Mid-strike acceleration (650ms)\n .at(0.65)\n .rotate(BoneName.SHOULDER_L, -0.87, 0.17, 0.26) // -50°, 10°, 15°\n .rotate(BoneName.SHOULDER_R, -0.87, -0.17, -0.26) // -50°, -10°, -15°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.79) // -45° mostly extended\n .rotate(BoneName.ELBOW_R, 0, 0, 0.79) // 45° mostly extended\n .rotate(BoneName.SPINE_UPPER, 0.26, 0, 0) // 15° forward lean\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // 10° forward\n .position(BoneName.PELVIS, 0, 0, 0.05) // Body dropping forward\n .done<MartialArtsAnimationBuilder>()\n // Frame 17: Impact (850ms)\n .at(0.85)\n .rotate(BoneName.SHOULDER_L, 0.17, 0.09, 0.09) // 10°, 5°, 5° full extension down\n .rotate(BoneName.SHOULDER_R, 0.17, -0.09, -0.09) // 10°, -5°, -5°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.17) // -10° nearly straight\n .rotate(BoneName.ELBOW_R, 0, 0, 0.17) // 10° nearly straight\n .rotate(BoneName.WRIST_L, 0.26, 0, 0) // 15° hammer fist angle\n .rotate(BoneName.WRIST_R, 0.26, 0, 0) // 15° hammer fist angle\n .rotate(BoneName.SPINE_UPPER, 0.44, 0, 0) // 25° full forward\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° forward\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° legs bent for absorption\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20°\n .position(BoneName.PELVIS, 0, -0.08, 0.15) // Body dropped and forward\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (850-1200ms, frames 18-24)\n // =================================================================\n // Frame 20: Begin recovery (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_L, -0.26, 0.09, 0.17) // -15°, 5°, 10° pulling back\n .rotate(BoneName.SHOULDER_R, -0.26, -0.09, -0.17) // -15°, -5°, -10°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.87) // -50° bending\n .rotate(BoneName.ELBOW_R, 0, 0, 0.87) // 50° bending\n .rotate(BoneName.SPINE_UPPER, 0.17, 0, 0) // 10° still forward\n .rotate(BoneName.PELVIS, 0.09, 0, 0)\n .position(BoneName.PELVIS, 0, -0.04, 0.08)\n .done<MartialArtsAnimationBuilder>()\n // Frame 24: Return to guard (1200ms)\n .at(1.2)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.SHOULDER_R, -0.17, 0, -0.09) // -10°, 0°, -5°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° guard position\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90°\n .rotate(BoneName.WRIST_L, 0, 0, 0)\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0° neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.KNEE_R, -0.26, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON FRONT KICK (앞차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Front Kick Animation\n *\n * **Korean**: 앞차기 (Ap-chagi)\n * **Philosophy**: Direct frontal assault with explosive leg extension\n *\n * Authentic Taekwondo Front Kick Technique:\n * - Targets solar plexus (명치) and abdomen\n * - Snap-style kick with quick retraction\n * - Ball of foot or heel as striking surface\n * - Minimal telegraphing for speed\n *\n * Animation Phases:\n * - Chamber (0-300ms): Knee raised to chest level, supporting leg stable\n * - Extension (300-600ms): Explosive forward thrust, hip drive\n * - Impact (600ms): Full extension with locked knee\n * - Recovery (600-900ms): Rapid snap-back to chamber then guard\n *\n * Target Vital Points:\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n * - 단전 (Danjeon) - Energy Center: Ki flow disruption\n * - 늑골 (Neukgol) - Floating Ribs: Internal trauma\n *\n * @korean 앞차기\n * @duration 900ms\n * @category Attack Animation\n */\nexport const GEON_FRONTAL_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_frontal_kick\", \"앞차기\")\n .asAttack(0.9)\n // =================================================================\n // CHAMBER PHASE (0-300ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.HIP_R, 0.79, 0, 0) // 45° hip flexion - knee to chest\n .rotate(BoneName.KNEE_R, -1.92, 0, 0) // -110° knee fully bent (chamber)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle flexed\n .rotate(BoneName.KNEE_L, -0.26, 0, 0) // -15° support leg stable\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° forward tilt\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° compensatory lean back\n // Guard arms for balance\n .rotate(BoneName.SHOULDER_L, -0.44, 0, 0.35) // -25°, 0°, 20° high guard\n .rotate(BoneName.SHOULDER_R, -0.44, 0, -0.35) // -25°, 0°, -20°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° bent\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° bent\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // EXTENSION PHASE (300-600ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.HIP_R, 0.52, 0, 0) // 30° hip extension begins\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20° knee extending\n .rotate(BoneName.FOOT_R, 0.26, 0, 0) // 15° ankle extends (ball of foot strikes)\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // 10° driving forward\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° lean back for balance\n .position(BoneName.PELVIS, 0, 0, 0.15) // Forward hip drive\n .done<MartialArtsAnimationBuilder>()\n // Frame: Full Extension (600ms)\n .at(0.6)\n .rotate(BoneName.HIP_R, 0.26, 0, 0) // 15° near full extension\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° knee locked at impact\n .rotate(BoneName.FOOT_R, 0.35, 0, 0) // 20° full ankle extension\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° maximum forward\n .position(BoneName.PELVIS, 0, 0, 0.25) // Full reach\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (600-900ms)\n // =================================================================\n .at(0.75)\n .rotate(BoneName.HIP_R, 0.79, 0, 0) // 45° return to chamber\n .rotate(BoneName.KNEE_R, -1.92, 0, 0) // -110° knee bent again\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle flexed\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° pull back\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(0.9)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Return to neutral\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON ROUNDHOUSE KICK (돌려차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Roundhouse Kick Animation\n *\n * **Korean**: 돌려차기 (Dolryeo-chagi)\n * **Philosophy**: Signature Taekwondo technique combining rotation and whipping power\n *\n * Authentic Taekwondo Roundhouse Kick Mechanics:\n * - Hip rotation drives the kick (not just leg swing)\n * - Support leg pivots 90-180° on ball of foot\n * - Instep or shin as striking surface\n * - Whipping motion with full body torque\n *\n * Animation Phases:\n * - Chamber (0-300ms): Hip rotation begins, knee rises laterally\n * - Pivot (300-600ms): Support leg pivots, kicking leg chambers high\n * - Extension (600-800ms): Explosive whip extension with hip snap\n * - Recovery (800-1100ms): Controlled retraction and stance return\n *\n * Target Vital Points:\n * - 태양혈 (Taeyanghyeol) - Temple: Knockout potential\n * - 늑골 (Neukgol) - Ribs: Breathing impediment\n * - 간 (Gan) - Liver: Internal organ trauma\n *\n * @korean 돌려차기\n * @duration 1100ms\n * @category Attack Animation\n */\nexport const GEON_ROUNDHOUSE_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_roundhouse_kick\", \"돌려차기\")\n .asAttack(1.1)\n // =================================================================\n // CHAMBER PHASE (0-300ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.PELVIS, 0, -0.79, 0) // 0°, -45° hip rotation begins\n .rotate(BoneName.HIP_R, 1.05, 0, 1.22) // 60°, 0°, 70° hip flexion + abduction\n .rotate(BoneName.KNEE_R, -1.57, 0, 0) // -90° knee chambered\n .rotate(BoneName.FOOT_R, -0.17, 0, 0.26) // -10°, 0°, 15° instep positioning\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° support leg slight bend\n .rotate(BoneName.FOOT_L, 0, 0.26, 0) // 0°, 15° beginning pivot\n .rotate(BoneName.SPINE_UPPER, 0.09, 0.52, 0) // 5°, 30° counter-rotation\n // Guard positioning\n .rotate(BoneName.SHOULDER_L, -0.79, 0.35, 0.52) // -45°, 20°, 30° high guard\n .rotate(BoneName.SHOULDER_R, -0.79, -0.35, -0.52) // -45°, -20°, -30°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // PIVOT & EXTENSION PHASE (300-800ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.PELVIS, 0, -1.22, 0) // 0°, -70° deep rotation\n .rotate(BoneName.HIP_R, 1.22, 0, 1.57) // 70°, 0°, 90° peak chamber height\n .rotate(BoneName.KNEE_R, -1.22, 0, 0) // -70° beginning extension\n .rotate(BoneName.FOOT_L, 0, 0.79, 0) // 0°, 45° support pivot\n .rotate(BoneName.SPINE_UPPER, 0.17, 0.79, 0) // 10°, 45° counter-rotation\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(0.8)\n .rotate(BoneName.PELVIS, 0, -1.57, 0) // 0°, -90° full hip rotation\n .rotate(BoneName.HIP_R, 1.05, 0, 1.57) // 60°, 0°, 90° extended position\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° near full extension (impact)\n .rotate(BoneName.FOOT_R, 0.35, 0, 0.52) // 20°, 0°, 30° instep whip\n .rotate(BoneName.FOOT_L, 0, 1.22, 0) // 0°, 70° full pivot\n .rotate(BoneName.SPINE_UPPER, 0.26, 1.05, 0) // 15°, 60° maximum counter\n .position(BoneName.PELVIS, -0.1, 0, 0.15) // Lateral shift for reach\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (800-1100ms)\n // =================================================================\n .at(0.95)\n .rotate(BoneName.PELVIS, 0, -0.52, 0) // 0°, -30° rotation unwinding\n .rotate(BoneName.HIP_R, 0.52, 0, 0.52) // 30°, 0°, 30° retracting\n .rotate(BoneName.KNEE_R, -0.79, 0, 0) // -45° controlled retraction\n .rotate(BoneName.FOOT_L, 0, 0.35, 0) // 0°, 20° pivot returning\n .position(BoneName.PELVIS, -0.05, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(1.1)\n .rotate(BoneName.PELVIS, 0, 0, 0) // Return to neutral\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, -0.09)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON AXE KICK (내려차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Axe Kick Animation\n *\n * **Korean**: 내려차기 (Naeryeo-chagi)\n * **Philosophy**: Downward crushing power from above, like an axe splitting wood\n *\n * Authentic Taekwondo Axe Kick Technique:\n * - Leg raises straight up overhead (no chamber)\n * - Downward chopping motion using heel or entire foot\n * - Targets crown, shoulder, clavicle\n * - Requires exceptional flexibility and control\n * - Devastating crushing damage on impact\n *\n * Animation Phases:\n * - Raise (0-400ms): Straight leg rises overhead with hip flexion\n * - Peak (400-500ms): Leg reaches maximum height above head\n * - Descent (500-900ms): Rapid downward arc with gravity assist\n * - Impact (900ms): Heel drives down onto target\n * - Recovery (900-1200ms): Controlled leg return to stance\n *\n * Target Vital Points:\n * - 백회혈 (Baekhoehoel) - Crown: Neurological knockout\n * - 쇄골 (Swaegol) - Clavicle: Structural break\n * - 어깨 (Eokkae) - Shoulder: Joint destruction\n *\n * @korean 내려차기\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_AXE_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_axe_kick\", \"내려차기\")\n .asAttack(1.2)\n // =================================================================\n // RAISE PHASE (0-400ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.HIP_R, 0.52, 0, 0) // 30° beginning lift\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° nearly straight\n .rotate(BoneName.FOOT_R, -0.17, 0, 0) // -10° ankle flexed\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° support leg\n .rotate(BoneName.PELVIS, -0.09, 0, 0) // -5° slight back lean\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° compensatory lean\n // Arms for balance\n .rotate(BoneName.SHOULDER_L, -0.52, 0.26, 0.35) // -30°, 15°, 20°\n .rotate(BoneName.SHOULDER_R, -0.52, -0.26, -0.35) // -30°, -15°, -20°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3)\n .rotate(BoneName.HIP_R, 1.57, 0, 0) // 90° leg rising high\n .rotate(BoneName.KNEE_R, 0, 0, 0) // 0° straight leg\n .rotate(BoneName.FOOT_R, -0.26, 0, 0) // -15° ankle ready\n .rotate(BoneName.PELVIS, -0.17, 0, 0) // -10° lean back more\n .rotate(BoneName.SPINE_UPPER, -0.26, 0, 0) // -15° counter-balance\n .position(BoneName.PELVIS, 0, -0.02, -0.05) // Slight back shift\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // PEAK PHASE (400-500ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.HIP_R, 2.27, 0, 0) // 130° peak overhead\n .rotate(BoneName.KNEE_R, 0.09, 0, 0) // 5° slight hyper-extension\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle cocked\n .rotate(BoneName.PELVIS, -0.26, 0, 0) // -15° maximum lean\n .rotate(BoneName.SPINE_UPPER, -0.35, 0, 0) // -20° deep lean back\n .rotate(BoneName.HEAD, -0.26, 0, 0) // -15° looking up at target\n .position(BoneName.PELVIS, 0, -0.03, -0.1) // Back positioning\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DESCENT PHASE (500-900ms)\n // =================================================================\n .at(0.7)\n .rotate(BoneName.HIP_R, 1.22, 0, 0) // 70° descending rapidly\n .rotate(BoneName.KNEE_R, 0, 0, 0) // 0° maintaining straight\n .rotate(BoneName.FOOT_R, 0.17, 0, 0) // 10° ankle extending for heel strike\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° forward shifting\n .rotate(BoneName.SPINE_UPPER, 0.17, 0, 0) // 10° leaning forward\n .position(BoneName.PELVIS, 0, -0.01, 0.05) // Forward momentum\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (900ms)\n .at(0.9)\n .rotate(BoneName.HIP_R, 0.35, 0, 0) // 20° impact position\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° slight bend on impact\n .rotate(BoneName.FOOT_R, 0.35, 0, 0) // 20° heel drives down\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° forward drive\n .rotate(BoneName.SPINE_UPPER, 0.35, 0, 0) // 20° full forward\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° support leg absorbing impact\n .position(BoneName.PELVIS, 0, -0.08, 0.2) // Body weight drops\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (900-1200ms)\n // =================================================================\n .at(1.05)\n .rotate(BoneName.HIP_R, 0.17, 0, 0) // 10° lifting from impact\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° bending\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° pulling back\n .position(BoneName.PELVIS, 0, -0.04, 0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(1.2)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Return to neutral\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.26, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON PALM STRIKE (장권)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Palm Strike Animation\n *\n * **Korean**: 장권 (Jang-gwon)\n * **Philosophy**: Open-hand power strike using palm heel, safer than closed fist\n *\n * Authentic Taekwondo Palm Heel Strike:\n * - Palm heel (thenar eminence) as striking surface\n * - Fingers pointing upward for jaw strikes, forward for body strikes\n * - Hip rotation generates power (same as punch mechanics)\n * - Safer for striker's hand, effective for close combat\n *\n * Animation Phases:\n * - Chamber (0-250ms): Open hand cocks back at ear level\n * - Drive (250-650ms): Explosive palm thrust with hip rotation\n * - Impact (650ms): Full extension with palm heel forward\n * - Recovery (650-950ms): Retraction to guard position\n *\n * Target Vital Points:\n * - 턱끝 (Teokkkeut) - Jaw: Knockout via head snap\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n * - 인영 (Inmyeong) - Throat: Respiratory trauma\n *\n * @korean 장권\n * @duration 950ms\n * @category Attack Animation\n */\nexport const GEON_PALM_STRIKE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_palm_strike\", \"장권\")\n .asAttack(0.95)\n // =================================================================\n // CHAMBER PHASE (0-250ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15° chamber\n .rotate(BoneName.ELBOW_R, -1.92, 0, 0) // -110° bent\n .rotate(BoneName.WRIST_R, -0.17, 0, 0) // -10° wrist cocked back\n .rotate(BoneName.SPINE_UPPER, 0, -0.26, 0) // 0°, -15° torso winds\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // 0°, -10° hip winds\n // Left hand guard\n .rotate(BoneName.SHOULDER_L, -0.26, 0, 0.17) // -15°, 0°, 10°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25)\n .rotate(BoneName.SHOULDER_R, -0.44, 0, 0.35) // -25°, 0°, 20° maximum chamber\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° deep bend\n .rotate(BoneName.SPINE_UPPER, 0, -0.35, 0) // 0°, -20° peak twist\n .rotate(BoneName.PELVIS, 0, -0.26, 0) // 0°, -15° coiled\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DRIVE PHASE (250-650ms)\n // =================================================================\n .at(0.45)\n .rotate(BoneName.SHOULDER_R, 0.52, 0, 0) // 30° driving forward\n .rotate(BoneName.ELBOW_R, -0.52, 0, 0) // -30° extending\n .rotate(BoneName.WRIST_R, 0.09, 0, 0) // 5° palm alignment\n .rotate(BoneName.SPINE_UPPER, 0, 0.26, 0) // 0°, 15° rotation through\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 0°, 10° hip drives\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (650ms)\n .at(0.65)\n .rotate(BoneName.SHOULDER_R, 0.87, 0, -0.09) // 50°, 0°, -5° full extension\n .rotate(BoneName.ELBOW_R, -0.09, 0, 0) // -5° nearly straight\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° palm heel forward\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° full rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° maximum drive\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (650-950ms)\n // =================================================================\n .at(0.8)\n .rotate(BoneName.SHOULDER_R, 0.26, 0, 0.09) // 15°, 0°, 5° retracting\n .rotate(BoneName.ELBOW_R, -0.79, 0, 0) // -45° bending\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 0°, 10°\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(0.95)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON HEAVEN STRIKE ANIMATION (천둥벽력)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Heaven Strike Animation\n *\n * **Korean**: 천둥벽력 (Cheondung Byeokryeok)\n * **English**: Thunder Strike\n * **Philosophy**: Direct strike imbued with heavenly power\n *\n * Unique Geon Signature Technique - Distinct from both Heavenly Fist (straight punch)\n * and Overhead Hammer (vertical drop). This technique combines overhead positioning\n * with explosive diagonal strike, channeling heaven's authority through the arm.\n *\n * Authentic Taekwondo Diagonal Strike:\n * - High chamber position emphasizing downward angle\n * - Diagonal trajectory (45° downward-forward)\n * - Gravity-assisted power generation\n * - Full body commitment with hip rotation\n * - Designed to overwhelm opponent's guard\n *\n * Animation Phases:\n * - Wind-up (0-300ms): Arm raises to high chamber\n * - Strike (300-700ms): Diagonal explosive drive down-forward\n * - Impact (700ms): Full extension with body drop\n * - Recovery (700-1000ms): Return to guard maintaining authority\n *\n * Target Vital Points:\n * - 백회혈 (Baekhoehyeol) - Crown: Direct cranial impact\n * - 쇄골 (Swaegor) - Collarbone: Structural damage\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n *\n * @korean 천둥벽력\n * @duration 1000ms\n * @category Attack Animation\n * @targets Crown, Collarbone, Solar Plexus\n */\nexport const GEON_HEAVEN_STRIKE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_heaven_strike\", \"천둥벽력\")\n .asAttack(1.0)\n // =================================================================\n // WIND-UP PHASE (0-300ms, frames 0-5)\n // =================================================================\n // Frame 0: Neutral guard baseline (0ms)\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Begin raising arm (100ms)\n .at(0.1)\n .rotate(BoneName.SHOULDER_R, -0.87, 0.17, 0.26) // -50°, 10°, 15° lifting\n .rotate(BoneName.ELBOW_R, -1.74, 0, 0) // -100° bent\n .rotate(BoneName.SPINE_UPPER, 0, -0.09, 0) // -5° slight twist back\n .rotate(BoneName.PELVIS, 0, -0.09, 0) // -5° hip winds\n .done<MartialArtsAnimationBuilder>()\n // Frame 5: High chamber position (300ms)\n .at(0.3)\n .rotate(BoneName.SHOULDER_R, -1.92, 0.35, 0.52) // -110°, 20°, 30° overhead ready\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° cocked\n .rotate(BoneName.SPINE_UPPER, 0, -0.17, 0) // -10° torso wound\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // -10° hip rotation\n .rotate(BoneName.HEAD, 0.09, -0.09, 0) // 5°, -5° focused on target\n .position(BoneName.PELVIS, 0, -0.03, 0) // Slight crouch for power\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (300-700ms, frames 6-12)\n // =================================================================\n // Frame 8: Mid-strike - explosive rotation (500ms)\n .at(0.5)\n .rotate(BoneName.SHOULDER_R, 0.35, 0, -0.17) // 20°, 0°, -10° driving down-forward\n .rotate(BoneName.ELBOW_R, -0.35, 0, 0) // -20° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0.26, 0) // 15° forward rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 15° hip drives through\n .rotate(BoneName.HEAD, 0, 0.09, 0) // 5° head follows\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° rear leg pushes\n .position(BoneName.PELVIS, 0, -0.05, -0.1) // Drop and forward shift\n .done<MartialArtsAnimationBuilder>()\n // Frame 12: Full extension - impact (700ms)\n // NOTE: This aggressive forward extension embodies Geon's 천둥벽력 (heavenly\n // thunder) philosophy - maximum penetration with gravity-assisted downward angle\n .at(0.7)\n .rotate(BoneName.SHOULDER_R, 0.79, 0, -0.26) // 45°, 0°, -15° full extension\n .rotate(BoneName.ELBOW_R, 0, 0, 0) // 0° straight arm at impact\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° wrist alignment for strike\n .rotate(BoneName.SPINE_UPPER, 0, 0.44, 0) // 25° explosive forward rotation\n .rotate(BoneName.PELVIS, 0, 0.44, 0) // 25° full hip through\n .rotate(BoneName.HEAD, 0, 0.17, 0) // 10° commitment\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° rear leg drive\n .position(BoneName.PELVIS, 0, -0.08, -0.15) // Maximum drop and forward\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (700-1000ms, frames 13-18)\n // =================================================================\n // Frame 15: Begin retraction (850ms)\n .at(0.85)\n .rotate(BoneName.SHOULDER_R, 0.26, 0, 0) // 15°, 0°, 0° starting back\n .rotate(BoneName.ELBOW_R, -0.79, 0, 0) // -45° retracting\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 10° still forward\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 10° settling\n .position(BoneName.PELVIS, 0, -0.03, -0.05) // Rising back up\n .done<MartialArtsAnimationBuilder>()\n // Frame 18: Return to guard (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard restored\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Neutral\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral\n .rotate(BoneName.PELVIS, 0, 0, 0) // Neutral\n .rotate(BoneName.HEAD, 0, 0, 0) // Neutral\n .rotate(BoneName.KNEE_R, 0, 0, 0) // Neutral\n .position(BoneName.PELVIS, 0, 0, 0) // Neutral stance\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Elbow Smash Animation\n *\n * **Korean**: 팔꿈치치기 (Palkkumchi-chigi)\n * **Philosophy**: Devastating close-range strike using hardest part of arm\n *\n * Authentic Close-Range Elbow Strike:\n * - Effective at clinch range (0.3-0.5m)\n * - Elbow point (olecranon) as striking surface\n * - Rotational power from torso, not just arm\n * - Horizontal or rising trajectory to temple/jaw\n * - Extremely high knockout potential\n *\n * Animation Phases:\n * - Chamber (0-200ms): Elbow cocks back with torso rotation\n * - Drive (200-550ms): Explosive rotation with elbow leading\n * - Impact (550ms): Elbow point connects with full body torque\n * - Recovery (550-850ms): Quick retraction to guard\n *\n * Target Vital Points:\n * - 태양혈 (Taeyanghyeol) - Temple: Knockout via concussion\n * - 턱끝 (Teokkkeut) - Jaw: Mandible fracture\n * - 인영 (Inmyeong) - Carotid: Blood flow disruption\n *\n * @korean 팔꿈치치기\n * @duration 850ms\n * @category Attack Animation\n */\nexport const GEON_ELBOW_SMASH: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_elbow_smash\", \"팔꿈치치기\")\n .asAttack(0.85)\n // =================================================================\n // CHAMBER PHASE (0-200ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.SPINE_UPPER, 0, -0.52, 0) // 0°, -30° torso winds away\n .rotate(BoneName.PELVIS, 0, -0.35, 0) // 0°, -20° hip winds\n .rotate(BoneName.SHOULDER_R, -0.26, 0.52, 0.79) // -15°, 30°, 45° elbow back\n .rotate(BoneName.ELBOW_R, -2.27, 0, 0) // -130° tight bend\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Neutral for elbow point\n // Close guard with left\n .rotate(BoneName.SHOULDER_L, -0.52, 0, 0.52) // -30°, 0°, 30°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.92) // -110° tight guard\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.2)\n .rotate(BoneName.SPINE_UPPER, 0, -0.7, 0) // 0°, -40° maximum wind\n .rotate(BoneName.PELVIS, 0, -0.52, 0) // 0°, -30° deep coil\n .rotate(BoneName.SHOULDER_R, -0.35, 0.7, 1.05) // -20°, 40°, 60° fully back\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DRIVE PHASE (200-550ms)\n // =================================================================\n .at(0.4)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° explosive rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° hip drives\n .rotate(BoneName.SHOULDER_R, -0.17, -0.26, 0.52) // -10°, -15°, 30° elbow coming through\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° maintaining tight angle\n .position(BoneName.PELVIS, 0, 0, 0.03)\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (550ms)\n .at(0.55)\n .rotate(BoneName.SPINE_UPPER, 0, 0.7, 0) // 0°, 40° full rotation through\n .rotate(BoneName.PELVIS, 0, 0.52, 0) // 0°, 30° maximum torque\n .rotate(BoneName.SHOULDER_R, -0.09, -0.7, 0.26) // -5°, -40°, 15° elbow point forward\n .rotate(BoneName.ELBOW_R, -1.92, 0, 0) // -110° impact angle\n .rotate(BoneName.HEAD, 0, 0.26, 0) // 0°, 15° looking at target\n .position(BoneName.PELVIS, 0, 0, 0.08) // Close-range drive\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (550-850ms)\n // =================================================================\n .at(0.7)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° unwinding\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 0°, 10°\n .rotate(BoneName.SHOULDER_R, -0.17, -0.35, 0.35) // -10°, -20°, 20° pulling back\n .position(BoneName.PELVIS, 0, 0, 0.04)\n .done<MartialArtsAnimationBuilder>()\n .at(0.85)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Return to neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORTS\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all Geon-specific animations for easy access\n * @korean 건괘애니메이션맵\n */\nexport const GEON_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map([\n // Idle & Movement\n [\"geon_idle_breathing\", GEON_IDLE_BREATHING],\n [\"geon_forward_advance\", GEON_FORWARD_ADVANCE],\n [\"geon_diagonal_power_step\", GEON_DIAGONAL_POWER_STEP],\n \n // Combat Techniques (7 core from GeonTechniques.ts + 1 bonus technique)\n [\"geon_heaven_strike\", GEON_HEAVEN_STRIKE], // 천둥벽력 (Thunder Strike)\n [\"geon_heavenly_fist\", GEON_HEAVENLY_FIST_ANIMATION], // 천권 (Heavenly Fist)\n [\"geon_frontal_kick\", GEON_FRONTAL_KICK], // 앞차기 (Front Kick)\n [\"geon_roundhouse_kick\", GEON_ROUNDHOUSE_KICK], // 돌려차기 (Roundhouse Kick)\n [\"geon_axe_kick\", GEON_AXE_KICK], // 내려차기 (Axe Kick)\n [\"geon_palm_strike\", GEON_PALM_STRIKE], // 장권 (Palm Strike)\n [\"geon_elbow_smash\", GEON_ELBOW_SMASH], // 팔꿈치치기 (Elbow Smash)\n [\"geon_overhead_hammer\", GEON_OVERHEAD_HAMMER], // 천둥 망치타 (Thunder Hammer) - Bonus technique\n]);\n"],"mappings":"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"}
1
+ {"version":3,"file":"GeonStanceAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/GeonStanceAnimations.ts"],"sourcesContent":["/**\n * ☰ Geon (Heaven) Stance-Specific Animations\n *\n * Specialized idle, movement, and combat animations for the Geon (건/Heaven) trigram.\n * Embodies direct force and bone-breaking power from Taekwondo techniques.\n *\n * **Korean Martial Arts Context:**\n * - **무술**: 태권도 파워 기술 (Taekwondo Power Techniques)\n * - **특성**: 정면 공격 (Direct Frontal Strikes), 골절력 (Bone-Breaking Force)\n * - **철학**: 압도적인 힘 (Overwhelming Power), 하늘의 권위 (Heavenly Authority)\n * - **대표 기술**: 천둥벽력 (Heavenly Fist/Thunderclap Strike)\n *\n * @module systems/animation/catalogs/GeonStanceAnimations\n * @category Animation\n * @korean 건괘자세애니메이션\n */\n\nimport { BoneName } from \"@/types/skeletal\";\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\nimport { ANATOMICAL_LIMITS } from \"../constants\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON IDLE BREATHING ANIMATION (건괘 호흡 자세)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Idle Breathing Animation\n *\n * **Korean**: 건괘 호흡 자세 (Geon-gwae Hoheup Jase)\n * **Philosophy**: Embodying heavenly authority through powerful breathing\n *\n * Characteristics:\n * - Chest expansion emphasizing power readiness\n * - Shoulder squaring for frontal dominance\n * - Fists clenched at ready position\n * - Head held high (authoritative posture)\n *\n * Animation Cycle:\n * - 0ms: Neutral breathing position\n * - 1250ms: Chest expansion (inhale)\n * - 2500ms: Return to neutral (exhale)\n *\n * @korean 건괘호흡자세\n * @duration 2500ms (2.5 second cycle)\n * @category Idle Animation\n */\nexport const GEON_IDLE_BREATHING: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_idle_breathing\",\n \"건괘 호흡 자세\"\n )\n .asIdle(2.5, true)\n // Keyframe 0ms: Neutral breathing position (baseline)\n .at(0)\n .rotate(BoneName.PELVIS, 0, 0, 0) // Neutral pelvis\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral spine\n .rotate(BoneName.SHOULDER_L, -0.17, 0, -0.09) // -10°, 0°, -5° (relaxed high guard)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° (bent)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° (bent)\n .rotate(BoneName.HEAD, 0.09, 0, 0) // 5° (head held high)\n .done<MartialArtsAnimationBuilder>()\n // Keyframe 1250ms: Chest expansion (inhale)\n .at(1.25)\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° (chest expands backward)\n .rotate(BoneName.SHOULDER_L, -0.21, 0, -0.14) // -12°, 0°, -8° (shoulders back)\n .rotate(BoneName.SHOULDER_R, -0.21, 0, 0.14) // -12°, 0°, 8°\n .rotate(BoneName.HEAD, 0.14, 0, 0) // 8° (emphasize power)\n .done<MartialArtsAnimationBuilder>()\n // Keyframe 2500ms: Return to neutral (exhale)\n .at(2.5)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, -0.09)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09)\n .rotate(BoneName.HEAD, 0.09, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON FORWARD ADVANCE (천둥 전진)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Forward Advance Animation\n *\n * **Korean**: 천둥 전진 (Cheondung Jeonjin) - Thunder Advance\n * **Technique**: Heavy forward step with power weight transfer\n *\n * Characteristics:\n * - Lead shoulder driving forward\n * - Rear leg pushing with explosive force\n * - Maintains high center of gravity\n * - Powerful, authoritative stride\n *\n * Animation Phases:\n * - 0-200ms: Initial push-off\n * - 200-500ms: Weight transfer forward\n * - 500-667ms: Landing with power\n *\n * @korean 천둥전진\n * @frames 12 frames (~55.5ms per frame at 60fps)\n * @duration 667ms\n * @category Movement Animation\n */\nexport const GEON_FORWARD_ADVANCE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_forward_advance\",\n \"천둥 전진\"\n )\n .asMovement(0.667, false)\n // Frame 0-4: Push-off phase (0-200ms)\n .at(0)\n .rotate(BoneName.PELVIS, 0.1, 0, 0) // Forward tilt\n .rotate(BoneName.SPINE_UPPER, 0.15, 0, 0) // Lean forward\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20° rear leg push\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° front leg ready\n .rotate(BoneName.SHOULDER_R, -0.26, 0, 0.17) // -15°, 0°, 10° (driving forward)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 5-9: Weight transfer (200-500ms)\n .at(0.35)\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // More forward\n .rotate(BoneName.SPINE_UPPER, 0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° extending\n .rotate(BoneName.KNEE_L, -0.7, 0, 0) // -40° absorbing weight\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15°\n .position(BoneName.PELVIS, 0, 0.02, 0.3) // Forward and slight up\n .done<MartialArtsAnimationBuilder>()\n // Frame 10-12: Landing phase (500-667ms)\n .at(0.667)\n .rotate(BoneName.PELVIS, 0.09, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° planted\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° forward stance\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09)\n .position(BoneName.PELVIS, 0, 0, 0.5) // Full step forward\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON DIAGONAL POWER STEP (대각선 강타보)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Diagonal Power Step Animation\n *\n * **Korean**: 대각선 강타보 (Daegakseon Gangtabo) - Diagonal Power Step\n * **Technique**: 45° angle power movement with hip rotation\n *\n * Characteristics:\n * - 45° diagonal movement for tactical positioning\n * - Hip rotation for torque generation\n * - Maintain high center of gravity\n * - Explosive lateral power transfer\n *\n * Animation Phases:\n * - 0-233ms: Initial 45° pivot\n * - 233-583ms: Diagonal weight transfer\n * - 583-778ms: Landing in power position\n *\n * @korean 대각선강타보\n * @frames 14 frames (~55.5ms per frame at 60fps)\n * @duration 778ms\n * @category Movement Animation\n */\nexport const GEON_DIAGONAL_POWER_STEP: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_diagonal_power_step\",\n \"대각선 강타보\"\n )\n .asMovement(0.778, false)\n // Frames 0-4: Pivot phase (0-233ms)\n .at(0)\n .rotate(BoneName.PELVIS, 0.09, -0.79, 0) // 5°, -45° rotation\n .rotate(BoneName.SPINE_UPPER, 0.14, -0.87, 0) // 8°, -50° torso twist\n .rotate(BoneName.KNEE_R, -0.52, 0, 0) // -30° coiled\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° ready\n .rotate(BoneName.HIP_L, 0, 0.35, 0) // 0°, 20° hip out\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frames 5-10: Diagonal transfer (233-583ms)\n .at(0.408)\n .rotate(BoneName.PELVIS, 0.14, -0.52, 0) // 8°, -30°\n .rotate(BoneName.SPINE_UPPER, 0.17, -0.61, 0) // 10°, -35°\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° extending\n .rotate(BoneName.KNEE_L, -0.7, 0, 0) // -40° loading\n .rotate(BoneName.HIP_L, 0, 0.52, 0) // 0°, 30° maximum reach\n .position(BoneName.PELVIS, -0.3, 0.03, 0.3) // Diagonal movement\n .done<MartialArtsAnimationBuilder>()\n // Frames 11-14: Landing phase (583-778ms)\n .at(0.778)\n .rotate(BoneName.PELVIS, 0.09, -0.79, 0) // 5°, -45° settled\n .rotate(BoneName.SPINE_UPPER, 0.12, -0.87, 0) // 7°, -50°\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20°\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° grounded\n .rotate(BoneName.HIP_L, 0, 0.79, 0) // 0°, 45° full diagonal\n .position(BoneName.PELVIS, -0.4, 0, 0.4) // 45° position\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON HEAVENLY FIST ANIMATION (천둥벽력 - Enhanced)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Heavenly Fist Attack Animation (Enhanced)\n *\n * **Korean**: 천둥벽력 (Cheondung Byeokryeok) - Thunderclap Strike\n * **Technique**: Direct frontal punch with bone-breaking force\n * **Target Points**: 백회혈 (Baekhoehoel/Crown), 명치 (Solar Plexus), 흉골 (Sternum)\n *\n * Characteristics:\n * - Explosive forward drive with hip rotation\n * - Full arm extension with shoulder follow-through\n * - Generates maximum power from ground up\n * - Direct bone-breaking intent\n *\n * Animation Phases:\n * - 0-300ms: Wind-up (6 frames) - Cock fist to ear, twist torso\n * - 300-800ms: Strike (8 frames) - Explosive forward rotation\n * - 800-1200ms: Recovery (6 frames) - Return to guard\n *\n * **Performance**: Targets 60fps (16.67ms per frame)\n * **Damage Type**: Bone-breaking blunt force\n *\n * @korean 천둥벽력\n * @frames 20 total (6 wind-up, 8 strike, 6 recovery)\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_HEAVENLY_FIST_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_heavenly_fist\",\n \"천둥벽력\"\n )\n .asAttack(1.2)\n // =================================================================\n // WIND-UP PHASE (0-300ms, frames 0-6)\n // =================================================================\n // Frame 0: Neutral Geon guard baseline\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard position\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard bend\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Start of wind-up (100ms)\n .at(0.1)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15° cock back\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° bent\n .rotate(BoneName.SPINE_UPPER, 0, -0.26, 0) // 0°, -15° torso winds up\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // 0°, -10° hip winds\n .done<MartialArtsAnimationBuilder>()\n // Frame 6: Maximum wind-up (300ms)\n .at(0.3)\n .rotate(BoneName.SHOULDER_R, -0.44, 0, 0.35) // -25°, 0°, 20° maximum cock\n .rotate(BoneName.ELBOW_R, -2.27, 0, 0) // -130° maximum bend\n .rotate(BoneName.SPINE_UPPER, 0, -0.35, 0) // 0°, -20° peak twist\n .rotate(BoneName.PELVIS, 0, -0.26, 0) // 0°, -15° maximum coil\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (300-800ms, frames 7-14)\n // =================================================================\n // Frame 10: Mid-strike (500ms)\n .at(0.5)\n .rotate(BoneName.SHOULDER_R, 0.79, 0, 0) // 45° explosive forward\n .rotate(BoneName.ELBOW_R, -0.17, 0, 0) // -10° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° rotates through\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° hip drives\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° rear leg drives\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame 14: Full extension + follow-through (800ms)\n // NOTE: Shoulder rotation of 1.05 rad (~60°) is intentionally more aggressive\n // than the generic PUNCH_PHASES.EXTENSION (~30-45°) to reflect Geon's\n // 골절력 (bone-breaking power) philosophy. This over-rotation emphasizes\n // maximum penetration and dominance while remaining within anatomically\n // plausible limits for a stylized power strike.\n .at(0.8)\n .rotate(BoneName.SHOULDER_R, 1.05, 0, -0.09) // 60° full extension (Geon power strike)\n .rotate(BoneName.ELBOW_R, 0, 0, 0) // 0° fully extended\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° impact alignment\n .rotate(BoneName.SPINE_UPPER, 0, 0.44, 0) // 0°, 25° maximum rotation\n .rotate(BoneName.PELVIS, 0, 0.35, 0) // 0°, 20° hip follow-through\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (800-1200ms, frames 15-20)\n // =================================================================\n // Frame 17: Begin retraction (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_R, 0.35, 0, 0.09) // 20°, 0°, 5°\n .rotate(BoneName.ELBOW_R, -1.05, 0, 0) // -60° retracting\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 0°, 10°\n .rotate(BoneName.PELVIS, 0, 0.09, 0)\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame 20: Return to guard (1200ms)\n .at(1.2)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard position\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard bend\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0°, 0° neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON OVERHEAD HAMMER (하늘의 망치)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Overhead Hammer Strike Animation\n *\n * **Korean**: 천둥 망치타 (Cheondung Mangchita) - Heavenly Hammer Strike\n * **Technique**: Downward overhead strike with full body weight\n * **Target Points**: 정수리 (Crown), 쇄골 (Clavicle), 어깨 (Shoulder)\n *\n * Characteristics:\n * - Arms raised overhead in chambered position\n * - Downward strike with full body weight behind it\n * - Devastating impact on shoulder, clavicle, or skull targets\n * - Uses gravity and body drop for maximum force\n *\n * Animation Phases:\n * - 0-350ms: Wind-up (7 frames) - Raise arms overhead\n * - 350-850ms: Strike (10 frames) - Downward hammer with body drop\n * - 850-1200ms: Recovery (7 frames) - Return to stance\n *\n * **Performance**: 60fps target (16.67ms per frame)\n * **Damage Type**: Crushing overhead force\n *\n * @korean 천둥망치타\n * @frames 24 total (7 wind-up, 10 strike, 7 recovery)\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_OVERHEAD_HAMMER: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"geon_overhead_hammer\",\n \"천둥 망치타\"\n )\n .asAttack(1.2)\n // =================================================================\n // WIND-UP PHASE (0-350ms, frames 0-7)\n // =================================================================\n // Frame 0: Start raising arms\n .at(0)\n .rotate(BoneName.SHOULDER_L, -0.52, 0.17, 0.35) // -30°, 10°, 20° starting lift\n .rotate(BoneName.SHOULDER_R, -0.52, -0.17, -0.35) // -30°, -10°, -20°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° bent\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° bent\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° slight back\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 4: Arms rising (175ms)\n .at(0.175)\n .rotate(BoneName.SHOULDER_L, -1.22, 0.26, 0.52) // -70°, 15°, 30°\n .rotate(BoneName.SHOULDER_R, -1.22, -0.26, -0.52) // -70°, -15°, -30°\n .rotate(BoneName.ELBOW_L, 0, 0, -2.09) // -120° more bent\n .rotate(BoneName.ELBOW_R, 0, 0, 2.09) // 120° more bent\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° leaning back\n .position(BoneName.PELVIS, 0, -0.02, 0) // Slight crouch\n .done<MartialArtsAnimationBuilder>()\n // Frame 7: Near-maximum overhead chamber (350ms)\n .at(0.35)\n .rotate(BoneName.SHOULDER_L, ANATOMICAL_LIMITS.SHOULDER.MAX_OVERHEAD, 0.35, 0.7) // -135°, 20°, 40° powerful overhead\n .rotate(BoneName.SHOULDER_R, ANATOMICAL_LIMITS.SHOULDER.MAX_OVERHEAD, -0.35, -0.7) // -135°, -20°, -40°\n .rotate(BoneName.ELBOW_L, 0, 0, -ANATOMICAL_LIMITS.ELBOW.MAX_BEND) // -125° strong bend within safe limit\n .rotate(BoneName.ELBOW_R, 0, 0, ANATOMICAL_LIMITS.ELBOW.MAX_BEND) // 125° strong bend within safe limit\n .rotate(BoneName.WRIST_L, -0.17, 0, 0) // -10° wrists cocked\n .rotate(BoneName.WRIST_R, -0.17, 0, 0) // -10°\n .rotate(BoneName.SPINE_UPPER, -0.26, 0, 0) // -15° back lean\n .rotate(BoneName.HEAD, -0.17, 0, 0) // -10° looking up\n .position(BoneName.PELVIS, 0, -0.05, 0) // Deep crouch for power\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (350-850ms, frames 8-17)\n // =================================================================\n // Frame 10: Beginning descent (475ms)\n .at(0.475)\n .rotate(BoneName.SHOULDER_L, -1.92, 0.26, 0.52) // -110°, 15°, 30° starting down\n .rotate(BoneName.SHOULDER_R, -1.92, -0.26, -0.52) // -110°, -15°, -30°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.92) // -110° extending\n .rotate(BoneName.ELBOW_R, 0, 0, 1.92) // 110° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0° coming forward\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.03, 0.02)\n .done<MartialArtsAnimationBuilder>()\n // Frame 13: Mid-strike acceleration (650ms)\n .at(0.65)\n .rotate(BoneName.SHOULDER_L, -0.87, 0.17, 0.26) // -50°, 10°, 15°\n .rotate(BoneName.SHOULDER_R, -0.87, -0.17, -0.26) // -50°, -10°, -15°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.79) // -45° mostly extended\n .rotate(BoneName.ELBOW_R, 0, 0, 0.79) // 45° mostly extended\n .rotate(BoneName.SPINE_UPPER, 0.26, 0, 0) // 15° forward lean\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // 10° forward\n .position(BoneName.PELVIS, 0, 0, 0.05) // Body dropping forward\n .done<MartialArtsAnimationBuilder>()\n // Frame 17: Impact (850ms)\n .at(0.85)\n .rotate(BoneName.SHOULDER_L, 0.17, 0.09, 0.09) // 10°, 5°, 5° full extension down\n .rotate(BoneName.SHOULDER_R, 0.17, -0.09, -0.09) // 10°, -5°, -5°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.17) // -10° nearly straight\n .rotate(BoneName.ELBOW_R, 0, 0, 0.17) // 10° nearly straight\n .rotate(BoneName.WRIST_L, 0.26, 0, 0) // 15° hammer fist angle\n .rotate(BoneName.WRIST_R, 0.26, 0, 0) // 15° hammer fist angle\n .rotate(BoneName.SPINE_UPPER, 0.44, 0, 0) // 25° full forward\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° forward\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° legs bent for absorption\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20°\n .position(BoneName.PELVIS, 0, -0.08, 0.15) // Body dropped and forward\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (850-1200ms, frames 18-24)\n // =================================================================\n // Frame 20: Begin recovery (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_L, -0.26, 0.09, 0.17) // -15°, 5°, 10° pulling back\n .rotate(BoneName.SHOULDER_R, -0.26, -0.09, -0.17) // -15°, -5°, -10°\n .rotate(BoneName.ELBOW_L, 0, 0, -0.87) // -50° bending\n .rotate(BoneName.ELBOW_R, 0, 0, 0.87) // 50° bending\n .rotate(BoneName.SPINE_UPPER, 0.17, 0, 0) // 10° still forward\n .rotate(BoneName.PELVIS, 0.09, 0, 0)\n .position(BoneName.PELVIS, 0, -0.04, 0.08)\n .done<MartialArtsAnimationBuilder>()\n // Frame 24: Return to guard (1200ms)\n .at(1.2)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.SHOULDER_R, -0.17, 0, -0.09) // -10°, 0°, -5°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° guard position\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90°\n .rotate(BoneName.WRIST_L, 0, 0, 0)\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // 0° neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.KNEE_R, -0.26, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON FRONT KICK (앞차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Front Kick Animation\n *\n * **Korean**: 앞차기 (Ap-chagi)\n * **Philosophy**: Direct frontal assault with explosive leg extension\n *\n * Authentic Taekwondo Front Kick Technique:\n * - Targets solar plexus (명치) and abdomen\n * - Snap-style kick with quick retraction\n * - Ball of foot or heel as striking surface\n * - Minimal telegraphing for speed\n *\n * Animation Phases:\n * - Chamber (0-300ms): Knee raised to chest level, supporting leg stable\n * - Extension (300-600ms): Explosive forward thrust, hip drive\n * - Impact (600ms): Full extension with locked knee\n * - Recovery (600-900ms): Rapid snap-back to chamber then guard\n *\n * Target Vital Points:\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n * - 단전 (Danjeon) - Energy Center: Ki flow disruption\n * - 늑골 (Neukgol) - Floating Ribs: Internal trauma\n *\n * @korean 앞차기\n * @duration 900ms\n * @category Attack Animation\n */\nexport const GEON_FRONTAL_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_frontal_kick\", \"앞차기\")\n .asAttack(0.9)\n // =================================================================\n // CHAMBER PHASE (0-300ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.HIP_R, 0.79, 0, 0) // 45° hip flexion - knee to chest\n .rotate(BoneName.KNEE_R, -1.92, 0, 0) // -110° knee fully bent (chamber)\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle flexed\n .rotate(BoneName.KNEE_L, -0.26, 0, 0) // -15° support leg stable\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° forward tilt\n .rotate(BoneName.SPINE_UPPER, -0.09, 0, 0) // -5° compensatory lean back\n // Guard arms for balance\n .rotate(BoneName.SHOULDER_L, -0.44, 0, 0.35) // -25°, 0°, 20° high guard\n .rotate(BoneName.SHOULDER_R, -0.44, 0, -0.35) // -25°, 0°, -20°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90° bent\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° bent\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // EXTENSION PHASE (300-600ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.HIP_R, 0.52, 0, 0) // 30° hip extension begins\n .rotate(BoneName.KNEE_R, -0.35, 0, 0) // -20° knee extending\n .rotate(BoneName.FOOT_R, 0.26, 0, 0) // 15° ankle extends (ball of foot strikes)\n .rotate(BoneName.PELVIS, 0.17, 0, 0) // 10° driving forward\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° lean back for balance\n .position(BoneName.PELVIS, 0, 0, 0.15) // Forward hip drive\n .done<MartialArtsAnimationBuilder>()\n // Frame: Full Extension (600ms)\n .at(0.6)\n .rotate(BoneName.HIP_R, 0.26, 0, 0) // 15° near full extension\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° knee locked at impact\n .rotate(BoneName.FOOT_R, 0.35, 0, 0) // 20° full ankle extension\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° maximum forward\n .position(BoneName.PELVIS, 0, 0, 0.25) // Full reach\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (600-900ms)\n // =================================================================\n .at(0.75)\n .rotate(BoneName.HIP_R, 0.79, 0, 0) // 45° return to chamber\n .rotate(BoneName.KNEE_R, -1.92, 0, 0) // -110° knee bent again\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle flexed\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° pull back\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(0.9)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Return to neutral\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON ROUNDHOUSE KICK (돌려차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Roundhouse Kick Animation\n *\n * **Korean**: 돌려차기 (Dolryeo-chagi)\n * **Philosophy**: Signature Taekwondo technique combining rotation and whipping power\n *\n * Authentic Taekwondo Roundhouse Kick Mechanics:\n * - Hip rotation drives the kick (not just leg swing)\n * - Support leg pivots 90-180° on ball of foot\n * - Instep or shin as striking surface\n * - Whipping motion with full body torque\n *\n * Animation Phases:\n * - Chamber (0-300ms): Hip rotation begins, knee rises laterally\n * - Pivot (300-600ms): Support leg pivots, kicking leg chambers high\n * - Extension (600-800ms): Explosive whip extension with hip snap\n * - Recovery (800-1100ms): Controlled retraction and stance return\n *\n * Target Vital Points:\n * - 태양혈 (Taeyanghyeol) - Temple: Knockout potential\n * - 늑골 (Neukgol) - Ribs: Breathing impediment\n * - 간 (Gan) - Liver: Internal organ trauma\n *\n * @korean 돌려차기\n * @duration 1100ms\n * @category Attack Animation\n */\nexport const GEON_ROUNDHOUSE_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_roundhouse_kick\", \"돌려차기\")\n .asAttack(1.1)\n // =================================================================\n // CHAMBER PHASE (0-300ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.PELVIS, 0, -0.79, 0) // 0°, -45° hip rotation begins\n .rotate(BoneName.HIP_R, 1.05, 0, 1.22) // 60°, 0°, 70° hip flexion + abduction\n .rotate(BoneName.KNEE_R, -1.57, 0, 0) // -90° knee chambered\n .rotate(BoneName.FOOT_R, -0.17, 0, 0.26) // -10°, 0°, 15° instep positioning\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° support leg slight bend\n .rotate(BoneName.FOOT_L, 0, 0.26, 0) // 0°, 15° beginning pivot\n .rotate(BoneName.SPINE_UPPER, 0.09, 0.52, 0) // 5°, 30° counter-rotation\n // Guard positioning\n .rotate(BoneName.SHOULDER_L, -0.79, 0.35, 0.52) // -45°, 20°, 30° high guard\n .rotate(BoneName.SHOULDER_R, -0.79, -0.35, -0.52) // -45°, -20°, -30°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // PIVOT & EXTENSION PHASE (300-800ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.PELVIS, 0, -1.22, 0) // 0°, -70° deep rotation\n .rotate(BoneName.HIP_R, 1.22, 0, 1.57) // 70°, 0°, 90° peak chamber height\n .rotate(BoneName.KNEE_R, -1.22, 0, 0) // -70° beginning extension\n .rotate(BoneName.FOOT_L, 0, 0.79, 0) // 0°, 45° support pivot\n .rotate(BoneName.SPINE_UPPER, 0.17, 0.79, 0) // 10°, 45° counter-rotation\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(0.8)\n .rotate(BoneName.PELVIS, 0, -1.57, 0) // 0°, -90° full hip rotation\n .rotate(BoneName.HIP_R, 1.05, 0, 1.57) // 60°, 0°, 90° extended position\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° near full extension (impact)\n .rotate(BoneName.FOOT_R, 0.35, 0, 0.52) // 20°, 0°, 30° instep whip\n .rotate(BoneName.FOOT_L, 0, 1.22, 0) // 0°, 70° full pivot\n .rotate(BoneName.SPINE_UPPER, 0.26, 1.05, 0) // 15°, 60° maximum counter\n .position(BoneName.PELVIS, -0.1, 0, 0.15) // Lateral shift for reach\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (800-1100ms)\n // =================================================================\n .at(0.95)\n .rotate(BoneName.PELVIS, 0, -0.52, 0) // 0°, -30° rotation unwinding\n .rotate(BoneName.HIP_R, 0.52, 0, 0.52) // 30°, 0°, 30° retracting\n .rotate(BoneName.KNEE_R, -0.79, 0, 0) // -45° controlled retraction\n .rotate(BoneName.FOOT_L, 0, 0.35, 0) // 0°, 20° pivot returning\n .position(BoneName.PELVIS, -0.05, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(1.1)\n .rotate(BoneName.PELVIS, 0, 0, 0) // Return to neutral\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, -0.09)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON AXE KICK (내려차기)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Axe Kick Animation\n *\n * **Korean**: 내려차기 (Naeryeo-chagi)\n * **Philosophy**: Downward crushing power from above, like an axe splitting wood\n *\n * Authentic Taekwondo Axe Kick Technique:\n * - Leg raises straight up overhead (no chamber)\n * - Downward chopping motion using heel or entire foot\n * - Targets crown, shoulder, clavicle\n * - Requires exceptional flexibility and control\n * - Devastating crushing damage on impact\n *\n * Animation Phases:\n * - Raise (0-400ms): Straight leg rises overhead with hip flexion\n * - Peak (400-500ms): Leg reaches maximum height above head\n * - Descent (500-900ms): Rapid downward arc with gravity assist\n * - Impact (900ms): Heel drives down onto target\n * - Recovery (900-1200ms): Controlled leg return to stance\n *\n * Target Vital Points:\n * - 백회혈 (Baekhoehoel) - Crown: Neurological knockout\n * - 쇄골 (Swaegol) - Clavicle: Structural break\n * - 어깨 (Eokkae) - Shoulder: Joint destruction\n *\n * @korean 내려차기\n * @duration 1200ms\n * @category Attack Animation\n */\nexport const GEON_AXE_KICK: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_axe_kick\", \"내려차기\")\n .asAttack(1.2)\n // =================================================================\n // RAISE PHASE (0-400ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.HIP_R, 0.52, 0, 0) // 30° beginning lift\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° nearly straight\n .rotate(BoneName.FOOT_R, -0.17, 0, 0) // -10° ankle flexed\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // -20° support leg\n .rotate(BoneName.PELVIS, -0.09, 0, 0) // -5° slight back lean\n .rotate(BoneName.SPINE_UPPER, -0.17, 0, 0) // -10° compensatory lean\n // Arms for balance\n .rotate(BoneName.SHOULDER_L, -0.52, 0.26, 0.35) // -30°, 15°, 20°\n .rotate(BoneName.SHOULDER_R, -0.52, -0.26, -0.35) // -30°, -15°, -20°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3)\n .rotate(BoneName.HIP_R, 1.57, 0, 0) // 90° leg rising high\n .rotate(BoneName.KNEE_R, 0, 0, 0) // 0° straight leg\n .rotate(BoneName.FOOT_R, -0.26, 0, 0) // -15° ankle ready\n .rotate(BoneName.PELVIS, -0.17, 0, 0) // -10° lean back more\n .rotate(BoneName.SPINE_UPPER, -0.26, 0, 0) // -15° counter-balance\n .position(BoneName.PELVIS, 0, -0.02, -0.05) // Slight back shift\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // PEAK PHASE (400-500ms)\n // =================================================================\n .at(0.5)\n .rotate(BoneName.HIP_R, 2.27, 0, 0) // 130° peak overhead\n .rotate(BoneName.KNEE_R, 0.09, 0, 0) // 5° slight hyper-extension\n .rotate(BoneName.FOOT_R, -0.35, 0, 0) // -20° ankle cocked\n .rotate(BoneName.PELVIS, -0.26, 0, 0) // -15° maximum lean\n .rotate(BoneName.SPINE_UPPER, -0.35, 0, 0) // -20° deep lean back\n .rotate(BoneName.HEAD, -0.26, 0, 0) // -15° looking up at target\n .position(BoneName.PELVIS, 0, -0.03, -0.1) // Back positioning\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DESCENT PHASE (500-900ms)\n // =================================================================\n .at(0.7)\n .rotate(BoneName.HIP_R, 1.22, 0, 0) // 70° descending rapidly\n .rotate(BoneName.KNEE_R, 0, 0, 0) // 0° maintaining straight\n .rotate(BoneName.FOOT_R, 0.17, 0, 0) // 10° ankle extending for heel strike\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° forward shifting\n .rotate(BoneName.SPINE_UPPER, 0.17, 0, 0) // 10° leaning forward\n .position(BoneName.PELVIS, 0, -0.01, 0.05) // Forward momentum\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (900ms)\n .at(0.9)\n .rotate(BoneName.HIP_R, 0.35, 0, 0) // 20° impact position\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° slight bend on impact\n .rotate(BoneName.FOOT_R, 0.35, 0, 0) // 20° heel drives down\n .rotate(BoneName.PELVIS, 0.26, 0, 0) // 15° forward drive\n .rotate(BoneName.SPINE_UPPER, 0.35, 0, 0) // 20° full forward\n .rotate(BoneName.KNEE_L, -0.52, 0, 0) // -30° support leg absorbing impact\n .position(BoneName.PELVIS, 0, -0.08, 0.2) // Body weight drops\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (900-1200ms)\n // =================================================================\n .at(1.05)\n .rotate(BoneName.HIP_R, 0.17, 0, 0) // 10° lifting from impact\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° bending\n .rotate(BoneName.PELVIS, 0.09, 0, 0) // 5° pulling back\n .position(BoneName.PELVIS, 0, -0.04, 0.1)\n .done<MartialArtsAnimationBuilder>()\n .at(1.2)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Return to neutral\n .rotate(BoneName.KNEE_R, -0.26, 0, 0) // -15° stance\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.26, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON PALM STRIKE (장권)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Palm Strike Animation\n *\n * **Korean**: 장권 (Jang-gwon)\n * **Philosophy**: Open-hand power strike using palm heel, safer than closed fist\n *\n * Authentic Taekwondo Palm Heel Strike:\n * - Palm heel (thenar eminence) as striking surface\n * - Fingers pointing upward for jaw strikes, forward for body strikes\n * - Hip rotation generates power (same as punch mechanics)\n * - Safer for striker's hand, effective for close combat\n *\n * Animation Phases:\n * - Chamber (0-250ms): Open hand cocks back at ear level\n * - Drive (250-650ms): Explosive palm thrust with hip rotation\n * - Impact (650ms): Full extension with palm heel forward\n * - Recovery (650-950ms): Retraction to guard position\n *\n * Target Vital Points:\n * - 턱끝 (Teokkkeut) - Jaw: Knockout via head snap\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n * - 인영 (Inmyeong) - Throat: Respiratory trauma\n *\n * @korean 장권\n * @duration 950ms\n * @category Attack Animation\n */\nexport const GEON_PALM_STRIKE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_palm_strike\", \"장권\")\n .asAttack(0.95)\n // =================================================================\n // CHAMBER PHASE (0-250ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.35, 0, 0.26) // -20°, 0°, 15° chamber\n .rotate(BoneName.ELBOW_R, -1.92, 0, 0) // -110° bent\n .rotate(BoneName.WRIST_R, -0.17, 0, 0) // -10° wrist cocked back\n .rotate(BoneName.SPINE_UPPER, 0, -0.26, 0) // 0°, -15° torso winds\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // 0°, -10° hip winds\n // Left hand guard\n .rotate(BoneName.SHOULDER_L, -0.26, 0, 0.17) // -15°, 0°, 10°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57) // -90°\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.25)\n .rotate(BoneName.SHOULDER_R, -0.44, 0, 0.35) // -25°, 0°, 20° maximum chamber\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° deep bend\n .rotate(BoneName.SPINE_UPPER, 0, -0.35, 0) // 0°, -20° peak twist\n .rotate(BoneName.PELVIS, 0, -0.26, 0) // 0°, -15° coiled\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DRIVE PHASE (250-650ms)\n // =================================================================\n .at(0.45)\n .rotate(BoneName.SHOULDER_R, 0.52, 0, 0) // 30° driving forward\n .rotate(BoneName.ELBOW_R, -0.52, 0, 0) // -30° extending\n .rotate(BoneName.WRIST_R, 0.09, 0, 0) // 5° palm alignment\n .rotate(BoneName.SPINE_UPPER, 0, 0.26, 0) // 0°, 15° rotation through\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 0°, 10° hip drives\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (650ms)\n .at(0.65)\n .rotate(BoneName.SHOULDER_R, 0.87, 0, -0.09) // 50°, 0°, -5° full extension\n .rotate(BoneName.ELBOW_R, -0.09, 0, 0) // -5° nearly straight\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° palm heel forward\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° full rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° maximum drive\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (650-950ms)\n // =================================================================\n .at(0.8)\n .rotate(BoneName.SHOULDER_R, 0.26, 0, 0.09) // 15°, 0°, 5° retracting\n .rotate(BoneName.ELBOW_R, -0.79, 0, 0) // -45° bending\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 0°, 10°\n .position(BoneName.PELVIS, 0, 0, 0.05)\n .done<MartialArtsAnimationBuilder>()\n .at(0.95)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// ☰ GEON HEAVEN STRIKE ANIMATION (천둥벽력)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Heaven Strike Animation\n *\n * **Korean**: 천둥벽력 (Cheondung Byeokryeok)\n * **English**: Thunder Strike\n * **Philosophy**: Direct strike imbued with heavenly power\n *\n * Unique Geon Signature Technique - Distinct from both Heavenly Fist (straight punch)\n * and Overhead Hammer (vertical drop). This technique combines overhead positioning\n * with explosive diagonal strike, channeling heaven's authority through the arm.\n *\n * Authentic Taekwondo Diagonal Strike:\n * - High chamber position emphasizing downward angle\n * - Diagonal trajectory (45° downward-forward)\n * - Gravity-assisted power generation\n * - Full body commitment with hip rotation\n * - Designed to overwhelm opponent's guard\n *\n * Animation Phases:\n * - Wind-up (0-300ms): Arm raises to high chamber\n * - Strike (300-700ms): Diagonal explosive drive down-forward\n * - Impact (700ms): Full extension with body drop\n * - Recovery (700-1000ms): Return to guard maintaining authority\n *\n * Target Vital Points:\n * - 백회혈 (Baekhoehyeol) - Crown: Direct cranial impact\n * - 쇄골 (Swaegor) - Collarbone: Structural damage\n * - 명치 (Myeongchi) - Solar Plexus: Breath disruption\n *\n * @korean 천둥벽력\n * @duration 1000ms\n * @category Attack Animation\n * @targets Crown, Collarbone, Solar Plexus\n */\nexport const GEON_HEAVEN_STRIKE: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_heaven_strike\", \"천둥벽력\")\n .asAttack(1.0)\n // =================================================================\n // WIND-UP PHASE (0-300ms, frames 0-5)\n // =================================================================\n // Frame 0: Neutral guard baseline (0ms)\n .at(0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n // Frame 2: Begin raising arm (100ms)\n .at(0.1)\n .rotate(BoneName.SHOULDER_R, -0.87, 0.17, 0.26) // -50°, 10°, 15° lifting\n .rotate(BoneName.ELBOW_R, -1.74, 0, 0) // -100° bent\n .rotate(BoneName.SPINE_UPPER, 0, -0.09, 0) // -5° slight twist back\n .rotate(BoneName.PELVIS, 0, -0.09, 0) // -5° hip winds\n .done<MartialArtsAnimationBuilder>()\n // Frame 5: High chamber position (300ms)\n .at(0.3)\n .rotate(BoneName.SHOULDER_R, -1.92, 0.35, 0.52) // -110°, 20°, 30° overhead ready\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° cocked\n .rotate(BoneName.SPINE_UPPER, 0, -0.17, 0) // -10° torso wound\n .rotate(BoneName.PELVIS, 0, -0.17, 0) // -10° hip rotation\n .rotate(BoneName.HEAD, 0.09, -0.09, 0) // 5°, -5° focused on target\n .position(BoneName.PELVIS, 0, -0.03, 0) // Slight crouch for power\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // STRIKE PHASE (300-700ms, frames 6-12)\n // =================================================================\n // Frame 8: Mid-strike - explosive rotation (500ms)\n .at(0.5)\n .rotate(BoneName.SHOULDER_R, 0.35, 0, -0.17) // 20°, 0°, -10° driving down-forward\n .rotate(BoneName.ELBOW_R, -0.35, 0, 0) // -20° extending\n .rotate(BoneName.SPINE_UPPER, 0, 0.26, 0) // 15° forward rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 15° hip drives through\n .rotate(BoneName.HEAD, 0, 0.09, 0) // 5° head follows\n .rotate(BoneName.KNEE_R, -0.09, 0, 0) // -5° rear leg pushes\n .position(BoneName.PELVIS, 0, -0.05, -0.1) // Drop and forward shift\n .done<MartialArtsAnimationBuilder>()\n // Frame 12: Full extension - impact (700ms)\n // NOTE: This aggressive forward extension embodies Geon's 천둥벽력 (heavenly\n // thunder) philosophy - maximum penetration with gravity-assisted downward angle\n .at(0.7)\n .rotate(BoneName.SHOULDER_R, 0.79, 0, -0.26) // 45°, 0°, -15° full extension\n .rotate(BoneName.ELBOW_R, 0, 0, 0) // 0° straight arm at impact\n .rotate(BoneName.WRIST_R, 0.17, 0, 0) // 10° wrist alignment for strike\n .rotate(BoneName.SPINE_UPPER, 0, 0.44, 0) // 25° explosive forward rotation\n .rotate(BoneName.PELVIS, 0, 0.44, 0) // 25° full hip through\n .rotate(BoneName.HEAD, 0, 0.17, 0) // 10° commitment\n .rotate(BoneName.KNEE_R, -0.17, 0, 0) // -10° rear leg drive\n .position(BoneName.PELVIS, 0, -0.08, -0.15) // Maximum drop and forward\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (700-1000ms, frames 13-18)\n // =================================================================\n // Frame 15: Begin retraction (850ms)\n .at(0.85)\n .rotate(BoneName.SHOULDER_R, 0.26, 0, 0) // 15°, 0°, 0° starting back\n .rotate(BoneName.ELBOW_R, -0.79, 0, 0) // -45° retracting\n .rotate(BoneName.SPINE_UPPER, 0, 0.17, 0) // 10° still forward\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 10° settling\n .position(BoneName.PELVIS, 0, -0.03, -0.05) // Rising back up\n .done<MartialArtsAnimationBuilder>()\n // Frame 18: Return to guard (1000ms)\n .at(1.0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard restored\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Neutral\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Neutral\n .rotate(BoneName.PELVIS, 0, 0, 0) // Neutral\n .rotate(BoneName.HEAD, 0, 0, 0) // Neutral\n .rotate(BoneName.KNEE_R, 0, 0, 0) // Neutral\n .position(BoneName.PELVIS, 0, 0, 0) // Neutral stance\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Geon Elbow Smash Animation\n *\n * **Korean**: 팔꿈치치기 (Palkkumchi-chigi)\n * **Philosophy**: Devastating close-range strike using hardest part of arm\n *\n * Authentic Close-Range Elbow Strike:\n * - Effective at clinch range (0.3-0.5m)\n * - Elbow point (olecranon) as striking surface\n * - Rotational power from torso, not just arm\n * - Horizontal or rising trajectory to temple/jaw\n * - Extremely high knockout potential\n *\n * Animation Phases:\n * - Chamber (0-200ms): Elbow cocks back with torso rotation\n * - Drive (200-550ms): Explosive rotation with elbow leading\n * - Impact (550ms): Elbow point connects with full body torque\n * - Recovery (550-850ms): Quick retraction to guard\n *\n * Target Vital Points:\n * - 태양혈 (Taeyanghyeol) - Temple: Knockout via concussion\n * - 턱끝 (Teokkkeut) - Jaw: Mandible fracture\n * - 인영 (Inmyeong) - Carotid: Blood flow disruption\n *\n * @korean 팔꿈치치기\n * @duration 850ms\n * @category Attack Animation\n */\nexport const GEON_ELBOW_SMASH: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"geon_elbow_smash\", \"팔꿈치치기\")\n .asAttack(0.85)\n // =================================================================\n // CHAMBER PHASE (0-200ms)\n // =================================================================\n .at(0)\n .rotate(BoneName.SPINE_UPPER, 0, -0.52, 0) // 0°, -30° torso winds away\n .rotate(BoneName.PELVIS, 0, -0.35, 0) // 0°, -20° hip winds\n .rotate(BoneName.SHOULDER_R, -0.26, 0.52, 0.79) // -15°, 30°, 45° elbow back\n .rotate(BoneName.ELBOW_R, -2.27, 0, 0) // -130° tight bend\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Neutral for elbow point\n // Close guard with left\n .rotate(BoneName.SHOULDER_L, -0.52, 0, 0.52) // -30°, 0°, 30°\n .rotate(BoneName.ELBOW_L, 0, 0, -1.92) // -110° tight guard\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.2)\n .rotate(BoneName.SPINE_UPPER, 0, -0.7, 0) // 0°, -40° maximum wind\n .rotate(BoneName.PELVIS, 0, -0.52, 0) // 0°, -30° deep coil\n .rotate(BoneName.SHOULDER_R, -0.35, 0.7, 1.05) // -20°, 40°, 60° fully back\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // DRIVE PHASE (200-550ms)\n // =================================================================\n .at(0.4)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° explosive rotation\n .rotate(BoneName.PELVIS, 0, 0.26, 0) // 0°, 15° hip drives\n .rotate(BoneName.SHOULDER_R, -0.17, -0.26, 0.52) // -10°, -15°, 30° elbow coming through\n .rotate(BoneName.ELBOW_R, -2.09, 0, 0) // -120° maintaining tight angle\n .position(BoneName.PELVIS, 0, 0, 0.03)\n .done<MartialArtsAnimationBuilder>()\n // Frame: Impact (550ms)\n .at(0.55)\n .rotate(BoneName.SPINE_UPPER, 0, 0.7, 0) // 0°, 40° full rotation through\n .rotate(BoneName.PELVIS, 0, 0.52, 0) // 0°, 30° maximum torque\n .rotate(BoneName.SHOULDER_R, -0.09, -0.7, 0.26) // -5°, -40°, 15° elbow point forward\n .rotate(BoneName.ELBOW_R, -1.92, 0, 0) // -110° impact angle\n .rotate(BoneName.HEAD, 0, 0.26, 0) // 0°, 15° looking at target\n .position(BoneName.PELVIS, 0, 0, 0.08) // Close-range drive\n .done<MartialArtsAnimationBuilder>()\n // =================================================================\n // RECOVERY PHASE (550-850ms)\n // =================================================================\n .at(0.7)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // 0°, 20° unwinding\n .rotate(BoneName.PELVIS, 0, 0.17, 0) // 0°, 10°\n .rotate(BoneName.SHOULDER_R, -0.17, -0.35, 0.35) // -10°, -20°, 20° pulling back\n .position(BoneName.PELVIS, 0, 0, 0.04)\n .done<MartialArtsAnimationBuilder>()\n .at(0.85)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Return to neutral\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SHOULDER_R, -0.17, 0, 0.09) // -10°, 0°, 5° guard\n .rotate(BoneName.ELBOW_R, -1.57, 0, 0) // -90° guard position\n .rotate(BoneName.SHOULDER_L, -0.17, 0, 0.09)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.57)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORTS\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all Geon-specific animations for easy access\n * @korean 건괘애니메이션맵\n */\nexport const GEON_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> = new Map([\n // Idle & Movement\n [\"geon_idle_breathing\", GEON_IDLE_BREATHING],\n [\"geon_forward_advance\", GEON_FORWARD_ADVANCE],\n [\"geon_diagonal_power_step\", GEON_DIAGONAL_POWER_STEP],\n \n // Combat Techniques (7 core from GeonTechniques.ts + 1 bonus technique)\n [\"geon_heaven_strike\", GEON_HEAVEN_STRIKE], // 천둥벽력 (Thunder Strike)\n [\"geon_heavenly_fist\", GEON_HEAVENLY_FIST_ANIMATION], // 천권 (Heavenly Fist)\n [\"geon_frontal_kick\", GEON_FRONTAL_KICK], // 앞차기 (Front Kick)\n [\"geon_roundhouse_kick\", GEON_ROUNDHOUSE_KICK], // 돌려차기 (Roundhouse Kick)\n [\"geon_axe_kick\", GEON_AXE_KICK], // 내려차기 (Axe Kick)\n [\"geon_palm_strike\", GEON_PALM_STRIKE], // 장권 (Palm Strike)\n [\"geon_elbow_smash\", GEON_ELBOW_SMASH], // 팔꿈치치기 (Elbow Smash)\n [\"geon_overhead_hammer\", GEON_OVERHEAD_HAMMER], // 천둥 망치타 (Thunder Hammer) - Bonus technique\n]);\n"],"mappings":"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"}
@@ -262,4 +262,13 @@ export declare const GON_BODY_LOCK_ANIMATION: SkeletalAnimation;
262
262
  * @category Throw Animation
263
263
  */
264
264
  export declare const GON_SACRIFICE_THROW_ANIMATION: SkeletalAnimation;
265
+ /**
266
+ * All Gon technique combat animations.
267
+ *
268
+ * Keeps Earth-trigram throw and ground-control techniques addressable by their
269
+ * technique IDs instead of falling back to generic grappling animations.
270
+ *
271
+ * @korean 곤괘기술애니메이션맵
272
+ */
273
+ export declare const GON_TECHNIQUE_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation>;
265
274
  //# sourceMappingURL=GonTechniqueAnimations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GonTechniqueAnimations.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/catalogs/GonTechniqueAnimations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAuJ9B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAoGhC,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBA6E1B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBA4F3B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBA0G9B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAiF7B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBA8G1B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAkHhC,CAAC"}
1
+ {"version":3,"file":"GonTechniqueAnimations.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/catalogs/GonTechniqueAnimations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAuJ9B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAoGhC,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBA6E1B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBA4F3B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBA0G9B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAiF7B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBA8G1B,CAAC;AAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAkHhC,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAUxE,CAAC"}