2.2 KiB
2.2 KiB
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메서드 시작 부분에 방어도 감소 로직 추가:// 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)
- 시나리오:
- 적이 방어(예: +10 Armor)를 선택.
- 플레이어가 공격하지 않거나 약하게 공격하여 방어도가 남음(예: 10 남음).
- 적의 턴이 시작될 때, 방어도가 5(50%)로 감소하는지 로그 및 UI 확인.
- 다음 적의 행동이 또 방어라면, 남은 5에 새로운 방어도가 더해지는지 확인.
4. 기대 효과
- 플레이어와 적의 방어 메커니즘이 대칭적으로 동작하여 일관성 확보.
- 적이 방어만 계속하여 무한히 단단해지는 것을 방지(밸런스 조절).