# ์ž‘์—… ๋กœ๊ทธ: 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)