Files
maplecontest/docs/superpowers/specs/2026-06-12-magician-design.md

64 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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에러