2.7 KiB
2.7 KiB
32. 적 장비 시스템 (Enemy Equipment System)
1. 배경 (Background)
현재 플레이어는 장비를 통해 스탯 보너스와 특수 효과(출혈, 스턴 등)를 얻습니다. 적(Enemy) 또한 동일한 Character 클래스를 사용하므로, 적에게도 장비를 부여하여 다양한 전투 패턴과 난이도를 구현하고자 합니다.
2. 목표 (Objective)
- 적 데이터 구조 변경:
enemies.json에equipment필드 추가. - 적 생성 로직 변경:
EnemyTemplate에서 적 생성 시, 정의된 장비 아이템을 인벤토리에 추가하고 장착. - 전투 로직 확인: 적이 공격할 때 장착된 아이템의 효과(상태이상 등)가 플레이어에게 적용되는지 확인.
3. 작업 상세 (Implementation Details)
A. 데이터 파일 수정 (assets/data/enemies.json)
- 적 정의에
equipment필드(List - Item ID) 추가. - 예시:
{ "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로 확인.
- 적 정보 창(구현되어 있다면) 또는 로그를 통해 적이 장비를 착용하고 있는지 확인.