All files / systems/combat BreakingStatusEffects.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 2/2
100% Lines 3/3

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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116                                                21x                                                                                                                                                 12x                           4x        
/**
 * Breaking Technique Status Effect Constants
 *
 * **Korean**: 파쇄기술 상태효과 상수
 *
 * Defines status effect IDs used by the limb exposure and breaking technique system.
 * These effects are applied when joints/bones are broken during counter-attacks.
 *
 * @module systems/combat/BreakingStatusEffects
 * @korean 파쇄상태효과
 */
 
/**
 * Status effect IDs for breaking techniques.
 *
 * These IDs are used when creating StatusEffect objects after successful
 * breaking technique execution. Each ID should eventually have a corresponding
 * StatusEffect implementation in the game's effect system.
 *
 * **Korean**: 파쇄 상태효과 ID
 *
 * @public
 * @korean 파쇄상태효과ID
 */
export const BREAKING_STATUS_EFFECT_IDS = {
  /**
   * General pain effect applied on all successful breaks.
   * Maps to existing VitalPointEffectType.PAIN.
   * @korean 고통
   */
  PAIN: "pain" as const,
 
  /**
   * Severe injury from high-severity breaks (severity > 0.8).
   * Indicates major trauma requiring immediate attention.
   * @korean 심각한부상
   */
  SEVERE_INJURY: "severe_injury" as const,
 
  /**
   * Limb is completely disabled and cannot be used.
   * Applied to broken joints/bones preventing limb function.
   * @korean 사지불능
   */
  DISABLED_LIMB: "disabled_limb" as const,
 
  /**
   * Moderate limb injury (severity 0.5-0.8).
   * Limb can be used but with reduced effectiveness.
   * @korean 사지부상
   */
  INJURED_LIMB: "injured_limb" as const,
 
  /**
   * Minor joint sprain or strain (severity < 0.5).
   * Causes discomfort but doesn't prevent use.
   * @korean 관절염좌
   */
  SPRAINED_JOINT: "sprained_joint" as const,
 
  /**
   * Movement speed reduction from leg/ankle breaks.
   * Applied when ankle or knee is broken.
   * @korean 이동력감소
   */
  IMPAIRED_MOBILITY: "impaired_mobility" as const,
 
  /**
   * Bleeding from severe bone breaks (severity > 0.6).
   * Causes continuous health drain.
   * @korean 출혈
   */
  BLEEDING: "bleeding" as const,
} as const;
 
/**
 * Type representing valid breaking status effect IDs.
 * Use this type when referencing breaking effect IDs to ensure type safety.
 *
 * @public
 * @korean 파쇄상태효과ID타입
 */
export type BreakingStatusEffectId =
  (typeof BREAKING_STATUS_EFFECT_IDS)[keyof typeof BREAKING_STATUS_EFFECT_IDS];
 
/**
 * Helper function to validate if a string is a valid breaking status effect ID.
 *
 * @param id - The ID to validate
 * @returns true if the ID is a valid breaking status effect
 *
 * @public
 * @korean 파쇄상태효과ID검증
 */
export function isBreakingStatusEffectId(
  id: string
): id is BreakingStatusEffectId {
  return Object.values(BREAKING_STATUS_EFFECT_IDS).includes(
    id as BreakingStatusEffectId
  );
}
 
/**
 * Get all breaking status effect IDs as an array.
 *
 * @returns Array of all breaking status effect ID strings
 *
 * @public
 * @korean 모든파쇄상태효과ID
 */
export function getAllBreakingStatusEffectIds(): readonly string[] {
  return Object.values(BREAKING_STATUS_EFFECT_IDS);
}
 
export default BREAKING_STATUS_EFFECT_IDS;