docs(magician): P10 설계·계획 — 법사 14종·신규 메커니즘 4종·전직 동적화
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
38
docs/superpowers/plans/2026-06-12-magician.md
Normal file
38
docs/superpowers/plans/2026-06-12-magician.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# P10 — 법사 클래스 구현 계획
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox 구문.
|
||||
|
||||
**Goal:** 법사 클래스(1차 5종 + 2차 3계열 9종)·신규 메커니즘 4종(독/AoE/회복/드로)·캐릭터 선택 오픈·전직 화면 동적화.
|
||||
|
||||
설계: `docs/superpowers/specs/2026-06-12-magician-design.md`
|
||||
|
||||
### Task 1: 이미지 RUID 10종 선별 (4종은 기존 후보 재사용)
|
||||
- [ ] 재사용 확정: FireArrow=78b9be4e(큰 불꽃)·ThunderBolt=c6685d33(낙뢰)·ColdBeam=e8f7c148(얼음)·ChillingStep=b2a7274d(빙수림)
|
||||
- [ ] 검색(마법/독/회복/빛/포털/정령) → 메이커 격자 미리보기 → EnergyBolt·MagicGuard·MagicClaw·Teleport·Slow·PoisonBreath·ElementAmp·Heal·Bless·HolyArrow 확정
|
||||
|
||||
### Task 2: 데이터 — cards.json
|
||||
- [ ] `starterDeck` → `starterDecks{warrior, magician}` (마법사: EnergyBolt×5·MagicGuard×4·MagicClaw×1), 생성기 검증 갱신
|
||||
- [ ] 신규 14종 추가 (설계 표 그대로: class=magician/firepoison/icelightning/cleric, draw/heal/poison/aoe 필드) → 커밋
|
||||
|
||||
### Task 3: 생성기 — 메커니즘 (Lua)
|
||||
- [ ] 직렬화: draw·heal·poison·aoe + starterDecks 주입(StartRun 클래스 분기: MaxHp 80/70·RunDeck)
|
||||
- [ ] PlayCard: `aoe` → `PlayAoeFx(image, total)` (단일 대상 로직과 동일 합산, 0.35s 후 전 생존 적에 각자 취약/방어 적용·슬롯별 팝업·KillMonster·CheckCombatEnd) / 공통부: heal(상한 클램프)·draw(`DrawCards`)·poison(타겟 `tm.poison += N`)
|
||||
- [ ] BuildMonsters `poison = 0` 초기화, EnemyActStep 행동 타이머 시작부에 독 틱(피해 팝업·사망 시 행동 생략 후 체인 계속), BuffsLabel 4번째 인자 poison(`독N`) — RenderCombat 호출부 갱신(플레이어는 0)
|
||||
- [ ] 커밋
|
||||
|
||||
### Task 4: 생성기 — 클래스 선택·전직 동적화
|
||||
- [ ] classCards Mage 활성화(enabled·tint·desc '마법 원거리 딜러'), BindMenuButtons MageButton→`SelectClass("magician")`, RenderCharacterSelect 2클래스 하이라이트·상태 텍스트, StartNewGame 가드 warrior|magician
|
||||
- [ ] JobSelectHud 패널 경로 `Job_slot{1..3}` 범용화, `ShowJobSelect`(JOBS 상수→JobOpts prop, 슬롯 텍스트 채움) 신설 — PickJobReward("job")가 호출, 바인딩은 슬롯 인덱스→`SetJob(self.JobOpts[i].id)`
|
||||
- [ ] SetJob 대표 카드 매핑(JOBS 테이블에 starter 포함: firepoison→FireArrow·icelightning→ThunderBolt·cleric→Heal), JobLabel 확장(마법사·위자드(불·독)·위자드(썬·콜)·클레릭)
|
||||
- [ ] 커밋
|
||||
|
||||
### Task 5: 시뮬 동기화 (TDD)
|
||||
- [ ] 실패 테스트: poison 틱·사망 / aoe 전체 피해 / heal 클램프 / draw / 법사 시작 덱은 시뮬 무관(주석) → 구현 → 전체 PASS → 커밋
|
||||
|
||||
### Task 6: 재생성·메이커 검증·PR
|
||||
- [ ] 재생성 + grep -c 카운트 + 전체 테스트 → 커밋
|
||||
- [ ] 메이커: 법사 선택 시작(HP70·시작 덱), 전직 화면 마법사 3직업 표기, 클레릭 전직→힐 동작, 독/AoE 실측 → 스크린샷
|
||||
- [ ] push → gitea-pr.mjs PR·머지 → main pull
|
||||
|
||||
## Self-Review
|
||||
- 설계 전 항목 매핑 ✓ / JobSelect 동적화로 P9 고정 경로 제거 명시 ✓ / BuffsLabel 시그니처 변경 시 호출부(몬스터·플레이어) 동시 갱신 명시 ✓
|
||||
63
docs/superpowers/specs/2026-06-12-magician-design.md
Normal file
63
docs/superpowers/specs/2026-06-12-magician-design.md
Normal 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에러
|
||||
Reference in New Issue
Block a user