# πŸ› οΈ CombatSystem: [[Reference|Reference]]Error Re[[Solution|Solution]] Guide ## 1. Context (λ°°κ²½) μ „νˆ¬ μ‹œμŠ€ν…œ(`CombatSystem.ts`) λ¦¬νŒ©ν† λ§ 쀑, λŸ°νƒ€μž„μ—μ„œ 엔진이 μ€‘λ‹¨λ˜λŠ” 치λͺ…적인 μ°Έμ‘° 였λ₯˜κ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ³Έ λ¬Έμ„œλŠ” ν•΄λ‹Ή 였λ₯˜μ˜ 원인과 ν•΄κ²° 방법, 그리고 ν–₯ν›„ μœ μ‚¬ 사둀 λ°©μ§€λ₯Ό μœ„ν•œ κ°€μ΄λ“œλΌμΈμ„ κΈ°λ‘ν•©λ‹ˆλ‹€. ## 2. Issue Breakdown (였λ₯˜ 뢄석) - **Error Type**: `ReferenceError: damage is not defined` - **Location**: `CombatSystem.ts` (Collision Detection Loop) - **Root Cause**: 블둝 μŠ€μ½”ν”„(`if/else`) λ‚΄λΆ€μ—μ„œ `damage` λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 `let` ν˜Ήμ€ `const`λ₯Ό ν†΅ν•œ λͺ…μ‹œμ  선언이 λˆ„λ½λ¨. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 비엄격 λͺ¨λ“œ ν˜Ήμ€ λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œμ˜ μ„ μ–ΈλΆ€ μœ μ‹€μ΄ μ›μΈμ΄μ—ˆμŠ΅λ‹ˆλ‹€. ## 3. Resolution (ν•΄κ²° 방법) νƒ„ν™˜μ˜ 곡격λ ₯을 κ³„μ‚°ν•˜κΈ° μ „, λͺ…μ‹œμ μœΌλ‘œ μŠ€μ½”ν”„ 내에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ„λ‘ μˆ˜μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ```typescript // Fix [[Logic|Logic]] let damage = bullet.dmg; // λͺ…μ‹œμ  μ„ μ–Έ 및 μ΄ˆκΈ°ν™” if (isCritical) { damage *= criticalMultiplier; } ``` ## 4. Prevention Policy (재발 λ°©μ§€ λŒ€μ±…) - **Strict Declaration**: λͺ¨λ“  λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ `const` λ˜λŠ” `let`을 μ‚¬μš©ν•˜μ—¬ μ„ μ–Έν•˜λ©°, μ„ μ–Έλ˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ 암묡적 μ „μ—­ν™”(Implicit Global)λ₯Ό μ² μ €νžˆ κΈˆμ§€ν•œλ‹€. - **Linter Integration**: `no-undef` κ·œμΉ™μ„ κ°•ν™”ν•˜μ—¬ λΉŒλ“œ νƒ€μž„μ—μ„œ λ―Έμ„ μ–Έ λ³€μˆ˜ μ°Έμ‘°λ₯Ό 사전에 μ°¨λ‹¨ν•œλ‹€. - **Unit Test**: 좩돌 νŒμ • λ‘œμ§μ— λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜μ—¬ 데미지 계산 λ£¨ν”„μ˜ 무결성을 κ²€μ¦ν•œλ‹€. --- **Related Cluster**: Runtime Pipeline **Last Updated**: 2026-04-23