game/prompt/13_item_status_options.md

2.3 KiB

13. 아이템 옵션: 상태이상 부여 (Stun, Vulnerable, Bleed, DefenseForbidden)

목표

아이템에 상태이상 부여 옵션을 추가하고, 캐릭터가 이를 관리할 수 있도록 시스템을 구축한다.

구현 내용

  1. StatusEffectTypeStatusEffect 정의 (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를 기반으로 전투 중 상태이상을 발동시키고, CharacterstatusEffects를 관리하는 로직 구현.
  • BattleProvider에서 각 상태이상(stun, vulnerable, bleed, defenseForbidden)의 실제 효과를 적용하는 로직 구현.