2.3 KiB
2.3 KiB
13. 아이템 옵션: 상태이상 부여 (Stun, Vulnerable, Bleed, DefenseForbidden)
목표
아이템에 상태이상 부여 옵션을 추가하고, 캐릭터가 이를 관리할 수 있도록 시스템을 구축한다.
구현 내용
-
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필드를 가진다.
- 기존
-
Character클래스 업데이트 (lib/game/model/entity.dart)Character클래스에List<StatusEffect> statusEffects필드를 추가하여 현재 적용 중인 상태이상 목록을 관리할 수 있도록 했다.- 상태이상을 추가하는
addStatusEffect(StatusEffect newEffect)메서드를 추가했다 (기존 효과가 있다면 갱신). - 상태이상의 지속 시간을 업데이트하고 만료된 효과를 제거하는
updateStatusEffects()메서드를 추가했다. - 특정 상태이상 보유 여부를 확인하는
hasStatus(StatusEffectType type)헬퍼 메서드를 추가했다.
-
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)의 실제 효과를 적용하는 로직 구현.