All files / systems/animation/catalogs TaeJointLockAnimations.ts

100% Statements 4/4
100% Branches 0/0
100% Functions 0/0
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89                                                  53x                                     53x                                     53x                                   53x              
import type { SkeletalAnimation } from "@/types/skeletal";
import { MartialArtsAnimationBuilder } from "../builders/MartialArtsAnimationBuilder";
 
// ═══════════════════════════════════════════════════════════════════════════
// TAE TRIGRAM (태) - LAKE: JOINT MANIPULATION (관절기)
// ═══════════════════════════════════════════════════════════════════════════
 
/**
 * Small Circle Lock - 소원꺾기
 *
 * Signature Hapkido technique using small circular wrist movements
 * to generate immense torque on the opponent's wrist joint.
 *
 * Target: Wrist/Radioulnar joint
 * Principle: Small motion = High torque
 *
 * Phases:
 * 1. Entry (진입): Light grab (soft touch)
 * 2. Circle (회전): Small rotational torque
 * 3. Lock (제압): Sudden snap down
 * 4. Recovery (복귀): Maintain control or disengage
 *
 * @korean 소원꺾기애니메이션
 */
export const TAE_SMALL_CIRCLE_LOCK: SkeletalAnimation =
  MartialArtsAnimationBuilder.create("small_circle_lock", "소원꺾기")
    .asAttack(0.6)
    .wristGrab(0.15) // Entry: Soft grip
    .wristTwist(0.15) // Action: Small rotation (internal builder method)
    .jointLock(0.15) // Finish: Lock down
    .recover(0.15) // Exit
    .build();
 
/**
 * Elbow Hyperextension - 팔꿈치과신전
 *
 * Dynamic arm bar performed from a standing flow.
 *
 * Target: Elbow joint
 * Principle: Leverage against the fulcrum
 *
 * @korean 팔꿈치과신전애니메이션
 */
export const TAE_ELBOW_HYPEREXTENSION: SkeletalAnimation =
  MartialArtsAnimationBuilder.create("elbow_hyperextension", "팔꿈치과신전")
    .asAttack(0.7)
    .parry(0.15) // Deflect incoming strike
    .armBarEntry(0.2) // Enter wrapping arm
    .jointLock(0.2) // Apply breaking pressure
    .recover(0.15) // Reset
    .build();
 
/**
 * Finger Manipulation - 손가락제압
 *
 * Small joint manipulation for pain compliance.
 *
 * Target: Phalanges
 * Principle: Isolating small joints
 *
 * @korean 손가락제압애니메이션
 */
export const TAE_FINGER_LOCK: SkeletalAnimation =
  MartialArtsAnimationBuilder.create("finger_lock", "손가락제압")
    .asAttack(0.5)
    .wristGrab(0.1) // Seize hand
    .wristTwist(0.15) // Isolate finger (using twist primitive)
    .jointLock(0.1) // Snap
    .recover(0.15)
    .build();
 
/**
 * Flowing Joint Lock Defense - 유수관절기방어
 *
 * Counter-technique: Turning an opponent's grab into a lock.
 *
 * Principle: Yielding (Yu-Sool)
 *
 * @korean 유수관절기방어애니메이션
 */
export const TAE_FLOWING_COUNTER: SkeletalAnimation =
  MartialArtsAnimationBuilder.create("flowing_lock_counter", "유수관절기방어")
    .asDefense(0.65)
    .parry(0.15) // Yield to force
    .wristTwist(0.2) // Redirect force
    .throwExecute(0.15) // Technical throw/lock
    .recover(0.15)
    .build();