4.4 KiB
4.4 KiB
P9 — 전직 시스템 코어 + 전사 2차 설계
날짜: 2026-06-12 (사용자 승인 완료 — P9/P10/P11 3단계 중 1단계)
브랜치: feature/p9-job-advancement
범위
- 클래스 모델 — 카드
class필드, 클래스별 카드 풀 필터 (보상·상점) - 전직 선택 흐름 — 보스 클리어 시 1차 상태면 [유물] vs [2차 전직] 선택, 전직 시 파이터/페이지/스피어맨 3택
- 전사 2차 전용 카드 9종 + 신규 메커니즘: 다단히트(
hits)·방어 무시(pierce)·자가 디버프(selfVuln)·파워 2종(energyPerTurn/blockPerTurn) - 플레이어 패널·캐릭터 선택의 직업명 표기
비범위: 법사(P10), 승천(P11), 3차 전직.
데이터 (data/cards.json)
- 모든 카드에
class필드. 기존 9종 →"warrior". - 신규 필드:
hits(타격 횟수),pierce(true=방어 무시),selfVuln(사용 시 자신에게 취약 N), powerEffect 추가값energyPerTurn/blockPerTurn.
신규 카드 9종 (메이플 2차 스킬명 × StS 효과):
| id | 직업 | 이름 | 코스트 | 효과 | StS 참조 |
|---|---|---|---|---|---|
| ComboAttack | fighter | 콤보 어택 | 1 | 피해 5 × 2회 | Twin Strike |
| Berserk | fighter | 버서크 | 2 | Power: 매턴 에너지 +1, 사용 시 취약 1 자가 | Berserk |
| RisingAttack | fighter | 라이징 어택 | 2 | 피해 12 | Carnage(경량) |
| ThunderCharge | page | 썬더 차지 | 1 | 피해 7, 약화 1 | Clothesline(경량) |
| BlizzardCharge | page | 블리자드 차지 | 1 | 피해 7, 취약 1 | Bash(경량) |
| PowerGuard | page | 파워 가드 | 1 | 방어도 10 | Shrug It Off(경량) |
| Pierce | spearman | 피어스 | 1 | 피해 9, 방어 무시 | — |
| IronWall | spearman | 아이언 월 | 2 | 방어도 12 | Impervious(경량) |
| HyperBody | spearman | 하이퍼 바디 | 1 | Power: 매턴 방어도 +3 | Metallicize |
전직 시 대표 카드 1장 즉시 지급: fighter→콤보 어택, page→썬더 차지, spearman→피어스.
전투 규칙 확장 (Lua + sim 동기화)
- 다단히트:
total = Σ CalcPlayerAttack(c.damage)(hits회 반복 — 힘이 타격마다 적용, 펜닙 카운터도 타격마다 증가), 이펙트·팝업은 합산 1회. 취약 배수는 합산값에 적용(단순화 명시). - 방어 무시:
DealDamageToTarget(amount, pierce)— pierce면 block 차감 생략.PlayAttackFx에 pierce 전달. - selfVuln: 카드 사용 시
PlayerVuln += selfVuln. - 파워 확장: StartPlayerTurn 파워 루프에
energyPerTurn(Energy +v) ·blockPerTurn(PlayerBlock +v — 블록 리셋·점토 처리 후).
전직 흐름
- 컨트롤러 prop:
PlayerJob(string, ""=1차). StartRun에서 리셋. - 카드 풀 필터 (
CardPool헬퍼 신설):c.class == self.SelectedClass or (PlayerJob ~= "" and c.class == PlayerJob). OfferReward·ShowShop이 사용. - 보스 클리어 분기 (CheckCombatEnd): 보스 진행 로직을
ContinueAfterBoss()로 추출.PlayerJob == "" and Floor < RunLength→ShowJobChoice()(선택 후 ContinueAfterBoss)- 그 외 → 기존 유물 지급 + ContinueAfterBoss (최종 막 클리어 시 전직 무의미 — 생략)
- JobChoiceHud: "보스 보상 선택" — 유물 획득 / [2차 전직] 버튼 2개.
- JobSelectHud: 파이터/페이지/스피어맨 3패널 (직업명·설명·대표 카드명). 선택 →
SetJob(jobId): PlayerJob 설정, 대표 카드 RunDeck 추가, 토스트, 패널 닫고 ContinueAfterBoss. - guid 네임스페이스
'job'= 0xe4 (JobChoiceHud·JobSelectHud). - 직업명 표기: PlayerPanel/Name = "전사" → 전직 후 "파이터/페이지/스피어맨" (
JobLabel헬퍼, StartCombat·SetJob에서 갱신).
검증
- sim-balance: hits/pierce/selfVuln/energyPerTurn/blockPerTurn 재현 + 신규 테스트 5건. rogue-map 9건·기존 21건 유지.
- 메이커: 빌드 0에러 + 플레이테스트 — 보스 클리어→선택 화면→전직→전용 카드 보상 풀 편입·패널 직업명, 유물 선택 경로, 다단히트/방어무시 동작.
결정 사항
- 전직은 런당 1회 (PlayerJob 비가역), 최종 막 보스에선 선택 생략
- 카드 이미지 9종: 공식 maplestory 리소스 메이커 선별 (기존 절차)
- 클래스 필터로 "해당 클래스만 획득" 충족 — 사용 제한은 별도 불요 (얻을 수 없으면 못 씀)