# 28. 적 방어도 누적 및 감소 (Enemy Armor Accumulation & Decay) ## 1. 배경 (Background) 사용자는 "적의 방어도 증가 액션도 플레이어와 동일하게 방어도가 누적되는 것"을 원합니다. 현재 적의 방어도는 `_generateEnemyIntent`에서 `+=` 연산자를 통해 누적되도록 수정되었으나(27번 작업), 플레이어와 달리 **턴 시작 시 방어도가 감소(Decay)하는 로직**이 부재합니다. "플레이어와 동일하게" 동작하려면, 적의 턴이 돌아왔을 때(즉, 플레이어의 공격을 막아낸 후) 남은 방어도가 일부 감소해야 합니다. ## 2. 목표 (Objective) - **방어도 누적 확인:** `_generateEnemyIntent`에서 `+=`를 사용하여 방어도가 누적됨을 유지. - **방어도 감소(Decay) 추가:** 적의 턴이 시작될 때(`_enemyTurn` 초입), 적의 현재 방어도를 50% 감소시킵니다. (플레이어 로직과 대칭) ## 3. 작업 상세 (Implementation Details) ### A. 로직 수정 (`lib/providers/battle_provider.dart`) - `_enemyTurn` 메서드 시작 부분에 방어도 감소 로직 추가: ```dart // Enemy Turn Start Logic // Armor decay if (enemy.armor > 0) { enemy.armor = (enemy.armor * 0.5).toInt(); _addLog("Enemy's armor decayed to ${enemy.armor}."); } ``` ### B. UI 수정 (`lib/screens/battle_screen.dart`) - **적 스탯 표시:** `_buildCharacterStatus` 위젯에서 적(Enemy)인 경우에도 Armor, ATK, DEF 정보를 표시하도록 수정합니다. - 기존에는 `if (!isEnemy)` 조건으로 플레이어에게만 표시되었던 부분을 공통으로 표시되도록 변경합니다. ### C. 검증 (Verification) - **시나리오:** 1. 적이 방어(예: +10 Armor)를 선택. 2. 플레이어가 공격하지 않거나 약하게 공격하여 방어도가 남음(예: 10 남음). 3. 적의 턴이 시작될 때, 방어도가 5(50%)로 감소하는지 로그 및 UI 확인. 4. 다음 적의 행동이 또 방어라면, 남은 5에 새로운 방어도가 더해지는지 확인. ## 4. 기대 효과 - 플레이어와 적의 방어 메커니즘이 대칭적으로 동작하여 일관성 확보. - 적이 방어만 계속하여 무한히 단단해지는 것을 방지(밸런스 조절).