docs: add RAW log for NOVA_GUARDIAN EVO and permanent upgrade stat injection
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# 작업 로그: NOVA_GUARDIAN EVO + Permanent Upgrade Stat Injection
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
1. **NOVA_GUARDIAN EVO 레시피**: `aoe_nova(Lv3 MAX) + energy_shield(Lv1+)` 조합으로 황금 충격파 수호자 진화 구현.
|
||||
2. **Permanent Upgrade → EffectiveStats 실반영**: 영구 업그레이드 구매 시 실제 인게임 스탯(HP, ATK, SPD, MAGNET, GOLD)에 즉시 반영.
|
||||
|
||||
## 🎯 왜 했는지 (Why)
|
||||
- **Nova Burst의 EVO 목적지 부재**: `aoe_nova` 스킬이 최대 레벨 달성 후 더 이상 성장이 없어 장기 동기부여 약화.
|
||||
- **Permanent Upgrade 구조적 결함**: 골드를 소비해 영구 업그레이드를 구매해도 실제 인게임 세션에 아무런 영향이 없는 "빈 껍데기" 상태였음.
|
||||
|
||||
## 🔧 처리 과정 (How)
|
||||
|
||||
### 1. evolutions.ts — 레시피 등록 + 스킬 최대 레벨 테이블
|
||||
- `aoe_nova`를 `SKILL_REGISTRY`에 PRIMARY 스킬로 등록 (기존에 없었음).
|
||||
- `SKILL_MAX_LEVEL` 테이블 추가: `aoe_nova`의 최대 레벨을 3으로 명시적 정의.
|
||||
- `checkEvolutionPossible()` 로직을 하드코딩 `>= 5` → `SKILL_MAX_LEVEL[baseId]` 조회로 변경하여 **스킬별 상이한 최대 레벨 지원** 확보.
|
||||
- NOVA_GUARDIAN 레시피 및 메타데이터 추가 (icon: ✨).
|
||||
|
||||
### 2. ProgressionSystem.ts — NOVA_GUARDIAN EVO 스탯
|
||||
- `applyEvoStats()` switch에 `NOVA_GUARDIAN` 케이스 추가:
|
||||
- 쿨다운: 5s → 2.5s (`novaBurstCooldown` = 150프레임)
|
||||
- 반경: +50% (`novaBurstRadiusBonus` = 0.5)
|
||||
- 데미지: 기존 대비 ×2.5
|
||||
- 버스트 발동 시 1.5초(90프레임) 무적 플래그 (`novaGuardianShield: true`)
|
||||
|
||||
### 3. ModularWeaponSystem.ts — 분기 처리 + 황금 색상 연출
|
||||
- `update()`: `evolved.has('NOVA_GUARDIAN')` 분기 추가 → `isGuardian=true`로 `updateNovaBurst()` 호출.
|
||||
- `updateNovaBurst(isGuardian)` 파라미터 추가:
|
||||
- `eff.novaBurstCooldown` 오버라이드 (EVO 스탯 반영)
|
||||
- `eff.novaBurstRadiusBonus`로 반경 확장
|
||||
- Guardian 발동 시: 90프레임 무적, 황금 파티클 3중 링, "✨ SHIELD BURST ✨" 텍스트
|
||||
- `novaBurstRingEffect.isGuardian` 플래그 → GameRenderer에 색상 전달
|
||||
|
||||
### 4. GameRenderer.ts — 황금/청록 이중 색상 분기
|
||||
- `renderNovaBurstEffect()`: `ring.isGuardian` 기반 색상 팔레트 분기:
|
||||
- Guardian: `#ffd700` 황금 외부 링, `#ffab40` 중간 링(75%), `#ff8f00` 글로우, 12방향 스파이크
|
||||
- Nova: 기존 청록 팔레트 유지
|
||||
- Guardian 전용 3번째 중간 링 레이어 추가 (확장감과 위용 강화).
|
||||
|
||||
### 5. combatUtils.ts — V12.0 Stat Injection Engine
|
||||
- `calculateEffectiveStats()` 시그니처 변경:
|
||||
- 3번째 인자: `PermanentUpgradeState | any[]` (하위 호환성 유지)
|
||||
- 4번째 인자: `inventory?: any[]` (옵셔널)
|
||||
- Permanent Upgrade 파이프라인:
|
||||
- HP_MAX: `eff.maxHp += level` (레벨당 +1 HP)
|
||||
- ATTACK: `eff.dmg *= (1 + level * 0.05)` (레벨당 +5%)
|
||||
- SPEED: `eff.speed *= (1 + level * 0.04)` (레벨당 +4%)
|
||||
- MAGNET: `magnetRadius = 180 + level * 30` (레벨당 +30px)
|
||||
- GOLD_GAIN: `eff.goldGainBonus = level * 0.10` (경제 시스템용 계수)
|
||||
|
||||
### 6. 호출부 동기화
|
||||
- `useGameEngine.ts` L110: `calculateEffectiveStats('FALCON', equipped, permanentUpgrades, inventory)`
|
||||
- `HangarOverlay.tsx` L27: `useMemo` 의존성 배열에 `permanentUpgrades` 추가 → 구매 즉시 미리보기 갱신
|
||||
|
||||
## 🧠 사용한 지식 (Knowledge Used)
|
||||
- **하위 호환성 패턴**: 3번째 인자 타입 분기(`Array.isArray`)로 기존 HangarOverlay 호출도 에러 없이 유지.
|
||||
- **EVO 설계 원칙**: 기반 스킬(aoe_nova)의 최대 레벨 도달 + 보조 스킬(energy_shield) 보유를 EVO 조건으로 하여 조합 전략성 부여.
|
||||
- **Signal Pattern**: `eff.novaGuardianShield`, `eff.novaBurstCooldown`, `eff.novaBurstRadiusBonus`를 EffectiveStats에 플래그로 전달하여 WeaponSystem이 렌더러/로직에 결합 없이 EVO 상태를 인식.
|
||||
|
||||
## ✅ 결과 (Result)
|
||||
- TypeScript 에러 0개
|
||||
- 수정 파일: 7개 (evolutions.ts, ProgressionSystem.ts, ModularWeaponSystem.ts, GameRenderer.ts, combatUtils.ts, useGameEngine.ts, HangarOverlay.tsx)
|
||||
- Git Commit: `cefd1a2` (feat_nova_guardian_evo_permanent_upgrade_stat_injection)
|
||||
- Push 완료: `origin/main`
|
||||
|
||||
## 🔗 연결 지식 (Relevant Knowledge)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (EVO Design, Skill Max Level, Meta-Progression)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Signal Pattern, Backward Compatibility, Pipeline Design)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\UI-UX (Canvas Ring Rendering, Color Palette Branching)
|
||||
Reference in New Issue
Block a user