4.5 KiB
4.5 KiB
작업 로그: NOVA_GUARDIAN EVO + Permanent Upgrade Stat Injection
📋 작업 내용 (What)
- NOVA_GUARDIAN EVO 레시피:
aoe_nova(Lv3 MAX) + energy_shield(Lv1+)조합으로 황금 충격파 수호자 진화 구현. - 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)
- 쿨다운: 5s → 2.5s (
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:
- Guardian 전용 3번째 중간 링 레이어 추가 (확장감과 위용 강화).
5. combatUtils.ts — V12.0 Stat Injection Engine
calculateEffectiveStats()시그니처 변경:- 3번째 인자:
PermanentUpgradeState | any[](하위 호환성 유지) - 4번째 인자:
inventory?: any[](옵셔널)
- 3번째 인자:
- 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(경제 시스템용 계수)
- HP_MAX:
6. 호출부 동기화
useGameEngine.tsL110:calculateEffectiveStats('FALCON', equipped, permanentUpgrades, inventory)HangarOverlay.tsxL27: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)