docs(magician): P10 설계·계획 — 법사 14종·신규 메커니즘 4종·전직 동적화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-12 13:45:54 +09:00
parent 6e8d1a88f5
commit 80c5daabbf
2 changed files with 101 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# P10 — 법사 클래스 설계
날짜: 2026-06-12 (사용자 승인 — P9/P10/P11 중 2단계)
브랜치: `feature/p10-magician`
선행: P9 (클래스 모델·전직 흐름·CardPool 필터)
## 범위
1. **캐릭터 선택 오픈** — 시작 화면 전사/법사 2택 (법사 시작 HP 70, 전용 시작 덱)
2. **법사 1차 카드 5종** + **2차 3계열 9종** (위자드(불·독)/위자드(썬·콜)/클레릭 — 실제 메이플 직업)
3. **신규 메커니즘 4종**: 독(DoT)·전체 공격(AoE)·회복 카드·드로 카드 (Lua + 시뮬 동기화)
4. 전직 선택 화면을 **클래스별 동적 구성**으로 리팩터 (P9의 고정 3패널 → 슬롯 3개 + 런타임 채움)
## 데이터
- `cards.json`: `starterDeck`**`starterDecks`** `{ warrior: [...], magician: [에너지 볼트×5, 매직 가드×4, 매직 클로×1] }`
- 신규 카드 필드: `draw`(드로 N)·`heal`(HP 회복)·`poison`(적에게 독 N)·`aoe`(true=전체 공격)
- 클래스 상수(생성기): warrior HP 80 / magician HP 70
법사 카드 14종 (메이플 스킬명):
| id | 직업 | 이름 | 코 | 효과 |
|----|------|------|----|------|
| EnergyBolt | magician | 에너지 볼트 | 1 | 피해 6 |
| MagicGuard | magician | 매직 가드 | 1 | 방어 5 |
| MagicClaw | magician | 매직 클로 | 1 | 피해 3 × 2회 |
| Teleport | magician | 텔레포트 | 1 | 방어 3, 드로 1 |
| Slow | magician | 슬로우 | 1 | 약화 2 부여 |
| FireArrow | firepoison | 파이어 애로우 | 1 | 피해 8 |
| PoisonBreath | firepoison | 포이즌 브레스 | 1 | **독 4** 부여 |
| ElementAmp | firepoison | 엘레멘트 앰플 | 1 | Power: 매턴 힘 +1 |
| ThunderBolt | icelightning | 썬더 볼트 | 2 | **전체 적** 피해 6 |
| ColdBeam | icelightning | 콜드 빔 | 2 | 피해 7, 약화 2 |
| ChillingStep | icelightning | 칠링 스텝 | 1 | 방어 8 |
| Heal | cleric | 힐 | 1 | **HP 10 회복** |
| Bless | cleric | 블레스 | 1 | 힘 +1, 방어 5 |
| HolyArrow | cleric | 홀리 애로우 | 1 | 피해 8 |
(설계 초안 대비 수치 미세 조정: 힐 12→10·블레스 방어 6→5·홀리 애로우 9→8 — 1코 효율 정렬)
## 신규 메커니즘 규칙
- **독**: 적 디버프. 해당 적 행동 시작 시 `hp -= poison``poison -= 1` (StS 동일). 방어 무시. 독 사망 시 행동 생략·체인 계속. 버프 라인에 `독N` 표시.
- **AoE**(`aoe: true`): 생존 적 전원에게 각자 취약/방어 적용해 피해. 중앙 이펙트 1회(`PlayAoeFx`), 슬롯별 팝업.
- **회복**(`heal`): `PlayerHp = min(+N, Max)`.
- **드로**(`draw`): 사용 시 N장 드로 (손패 상한 5 초과분은 기존 DrawCards 동작 따름).
## 전직 화면 동적화
- `JobSelectHud`의 패널을 `Job_slot1..3`(범용)으로 변경, `ShowJobSelect``SelectedClass`별 옵션 테이블(JOBS 상수 주입)로 이름/설명/대표 카드 텍스트를 채움. 클릭 → `SetJob(JobOpts[i].id)`.
- JOBS: warrior=[fighter/page/spearman], magician=[firepoison(위자드 불·독)/icelightning(위자드 썬·콜)/cleric(클레릭)]
- 대표 카드: firepoison→파이어 애로우, icelightning→썬더 볼트, cleric→힐
- `JobLabel` 확장: 마법사/위자드(불·독)/위자드(썬·콜)/클레릭
## 캐릭터 선택
- 기존 `MageButton`(잠금) → 활성: key Mage, `SelectClass("magician")`, 하이라이트·상태 텍스트 클래스 공용화, `StartNewGame` 가드 warrior|magician 허용
- `StartRun`: 클래스별 MaxHp·RunDeck 분기
## 검증
1. 시뮬: poison/aoe/heal/draw 재현 + 테스트 4건 이상 (전체 40건+)
2. 메이커: 법사 선택→시작 덱 확인→전직(클레릭 등)→전용 카드 풀·독/AoE/힐 실동작, 빌드·런타임 0에러