game/prompt/13_item_status_options.md

27 lines
2.3 KiB
Markdown

## 13. 아이템 옵션: 상태이상 부여 (Stun, Vulnerable, Bleed, DefenseForbidden)
### 목표
아이템에 상태이상 부여 옵션을 추가하고, 캐릭터가 이를 관리할 수 있도록 시스템을 구축한다.
### 구현 내용
1. **`StatusEffectType``StatusEffect` 정의 (lib/game/model/status_effect.dart)**
* 기존 `entity.dart`에 정의되어 있던 `StatusEffectType` (Enum)과 `StatusEffect` (Class)를 `lib/game/model/status_effect.dart` 파일로 분리하여 순환 참조 문제를 해결하고 모듈성을 높였다.
* `StatusEffectType`에는 `stun` (기절), `vulnerable` (취약), `bleed` (출혈), `defenseForbidden` (방어불가)가 포함되었다.
* `StatusEffect` 클래스는 `type`, `duration`, `value` 필드를 가진다.
2. **`Character` 클래스 업데이트 (lib/game/model/entity.dart)**
* `Character` 클래스에 `List<StatusEffect> statusEffects` 필드를 추가하여 현재 적용 중인 상태이상 목록을 관리할 수 있도록 했다.
* 상태이상을 추가하는 `addStatusEffect(StatusEffect newEffect)` 메서드를 추가했다 (기존 효과가 있다면 갱신).
* 상태이상의 지속 시간을 업데이트하고 만료된 효과를 제거하는 `updateStatusEffects()` 메서드를 추가했다.
* 특정 상태이상 보유 여부를 확인하는 `hasStatus(StatusEffectType type)` 헬퍼 메서드를 추가했다.
3. **`Item` 클래스 업데이트 (lib/game/model/item.dart)**
* 아이템이 부여할 수 있는 상태이상의 종류, 확률, 지속시간, 강도를 정의하는 `ItemEffect` 클래스를 새로 추가했다.
* `Item` 클래스에 `List<ItemEffect> effects` 필드를 추가하여 아이템이 가질 수 있는 상태이상 부여 옵션을 정의할 수 있도록 했다. 이 필드는 생성자에서 `this.effects = const []`로 기본 초기화된다.
### 다음 단계
* `item_table.dart`에 상태이상 옵션을 포함한 아이템 데이터를 추가.
* `BattleProvider`에서 아이템의 `ItemEffect`를 기반으로 전투 중 상태이상을 발동시키고, `Character``statusEffects`를 관리하는 로직 구현.
* `BattleProvider`에서 각 상태이상(`stun`, `vulnerable`, `bleed`, `defenseForbidden`)의 실제 효과를 적용하는 로직 구현.