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

4.4 KiB
Raw Blame History

P9 — 전직 시스템 코어 + 전사 2차 설계

날짜: 2026-06-12 (사용자 승인 완료 — P9/P10/P11 3단계 중 1단계) 브랜치: feature/p9-job-advancement

범위

  1. 클래스 모델 — 카드 class 필드, 클래스별 카드 풀 필터 (보상·상점)
  2. 전직 선택 흐름 — 보스 클리어 시 1차 상태면 [유물] vs [2차 전직] 선택, 전직 시 파이터/페이지/스피어맨 3택
  3. 전사 2차 전용 카드 9종 + 신규 메커니즘: 다단히트(hits)·방어 무시(pierce)·자가 디버프(selfVuln)·파워 2종(energyPerTurn/blockPerTurn)
  4. 플레이어 패널·캐릭터 선택의 직업명 표기

비범위: 법사(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 < RunLengthShowJobChoice() (선택 후 ContinueAfterBoss)
    • 그 외 → 기존 유물 지급 + ContinueAfterBoss (최종 막 클리어 시 전직 무의미 — 생략)
  • JobChoiceHud: "보스 보상 선택" — 유물 획득 / [2차 전직] 버튼 2개.
  • JobSelectHud: 파이터/페이지/스피어맨 3패널 (직업명·설명·대표 카드명). 선택 → SetJob(jobId): PlayerJob 설정, 대표 카드 RunDeck 추가, 토스트, 패널 닫고 ContinueAfterBoss.
  • guid 네임스페이스 'job' = 0xe4 (JobChoiceHud·JobSelectHud).
  • 직업명 표기: PlayerPanel/Name = "전사" → 전직 후 "파이터/페이지/스피어맨" (JobLabel 헬퍼, StartCombat·SetJob에서 갱신).

검증

  1. sim-balance: hits/pierce/selfVuln/energyPerTurn/blockPerTurn 재현 + 신규 테스트 5건. rogue-map 9건·기존 21건 유지.
  2. 메이커: 빌드 0에러 + 플레이테스트 — 보스 클리어→선택 화면→전직→전용 카드 보상 풀 편입·패널 직업명, 유물 선택 경로, 다단히트/방어무시 동작.

결정 사항

  • 전직은 런당 1회 (PlayerJob 비가역), 최종 막 보스에선 선택 생략
  • 카드 이미지 9종: 공식 maplestory 리소스 메이커 선별 (기존 절차)
  • 클래스 필터로 "해당 클래스만 획득" 충족 — 사용 제한은 별도 불요 (얻을 수 없으면 못 씀)