35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
# 영구 스탯 수정자 (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")를 구현할 수 있습니다.
|
|
- 로그라이크 요소(메타 프로그레션 또는 런 내 성장)의 기반이 됩니다.
|