# 32. 적 장비 시스템 (Enemy Equipment System)

## 1. 배경 (Background)

현재 플레이어는 장비를 통해 스탯 보너스와 특수 효과(출혈, 스턴 등)를 얻습니다. 적(Enemy) 또한 동일한 `Character` 클래스를 사용하므로, 적에게도 장비를 부여하여 다양한 전투 패턴과 난이도를 구현하고자 합니다.

## 2. 목표 (Objective)

- **적 데이터 구조 변경:** `enemies.json`에 `equipment` 필드 추가.
- **적 생성 로직 변경:** `EnemyTemplate`에서 적 생성 시, 정의된 장비 아이템을 인벤토리에 추가하고 장착.
- **전투 로직 확인:** 적이 공격할 때 장착된 아이템의 효과(상태이상 등)가 플레이어에게 적용되는지 확인.

## 3. 작업 상세 (Implementation Details)

### A. 데이터 파일 수정 (`assets/data/enemies.json`)

- 적 정의에 `equipment` 필드(List<String> - Item ID) 추가.
- 예시:
  ```json
  {
    "name": "Goblin",
    "baseHp": 20,
    "baseAtk": 5,
    "baseDefense": 5,
    "image": "assets/images/enemies/goblin.png",
    "equipment": ["dagger_001"] // Dagger for bleed effect
  }
  ```

### B. `lib/game/data/enemy_table.dart` 수정

- `EnemyTemplate` 클래스에 `List<String> equipmentIds` 필드 추가.
- `fromJson` 메서드에서 `equipment` 필드 파싱.
- `createCharacter` 메서드 수정:
  - `ItemTable.get(id)`를 사용하여 아이템 인스턴스 생성.
  - 생성된 아이템을 적의 인벤토리에 추가(`addToInventory`)하고 장착(`equip`).
  - _Note: `ItemTable`에 ID로 아이템을 찾는 기능이 없다면 추가 필요._

### C. `lib/game/data/item_table.dart` 확인 및 수정

- 아이템을 ID로 조회하는 기능(`getItem(String id)`)이 있는지 확인하고, 없다면 구현.
- 현재 `items.json`에는 ID 필드가 명시적으로 없을 수 있으므로, `id` 필드를 추가하거나 기존 `name`을 ID로 사용할지 결정 필요 (ID 필드 추가 권장).

### D. `lib/providers/battle_provider.dart` 검증

- `_tryApplyStatusEffects` 메서드가 `attacker.equipment`를 순회하므로, 적이 공격할 때도 로직이 정상 동작하는지 확인.
- 별도의 코드 수정은 필요 없을 것으로 예상되나, 테스트를 통해 검증.

## 4. 검증 (Verification)

- **데이터 로드 테스트:** 앱 실행 시 `enemies.json` 파싱 에러가 없는지 확인.
- **전투 테스트:**
  - 특정 장비(예: 출혈 단검)를 가진 적(예: 고블린)과 전투.
  - 적의 공격 성공 시, 플레이어에게 출혈(Bleed) 효과가 적용되는지 로그 및 UI로 확인.
  - 적 정보 창(구현되어 있다면) 또는 로그를 통해 적이 장비를 착용하고 있는지 확인.
