game/prompt/38_permanent_stat_modifiers.md

1.5 KiB

영구 스탯 수정자 (Permanent Stat Modifiers)

목표

Slay the Spire의 승천(Ascension)이나 유물 시스템처럼, 캐릭터의 스탯에 영구적인 영향을 주는 옵션을 부여할 수 있는 시스템을 구현합니다. 이는 일시적인 StatusEffect와는 구별됩니다.

구현 계획

1. 데이터 모델 정의

  • Enum 추가 (lib/game/enums.dart):
    • StatType: 수정할 스탯의 종류 (maxHp, atk, defense).
  • 클래스 생성 (lib/game/model/stat_modifier.dart):
    • PermanentStatModifier: 스탯 수정 정보를 담는 클래스.
      • id: 식별자.
      • name: 표시 이름.
      • description: 설명.
      • statType: 대상 스탯 (StatType).
      • type: 연산 타입 (ModifierType.flat 또는 percent).
      • value: 수정 값.

2. 캐릭터 모델 변경 (lib/game/model/entity.dart)

  • Character 클래스에 List<PermanentStatModifier> permanentModifiers 필드 추가.
  • addModifier(PermanentStatModifier modifier) 메서드 추가.
  • removeModifier(String id) 메서드 추가.
  • 스탯 계산 로직(totalAtk, totalDefense, totalMaxHp) 업데이트:
    • 기존: base + itemBonus
    • 변경: (base + itemBonus + flatModifiers) * (1 + percentModifiers)

기대 효과

  • 게임 진행 중 획득하는 영구적인 버프/디버프(예: "힘의 물약: 공격력 +2 영구 증가", "저주: 방어력 -1")를 구현할 수 있습니다.
  • 로그라이크 요소(메타 프로그레션 또는 런 내 성장)의 기반이 됩니다.