From c41d15405f69ef17ed50bfc9cf3514cd470429ce Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Thu, 15 Jan 2026 23:22:49 +0900 Subject: [PATCH] =?UTF-8?q?feat(balance):=20=EB=B2=84=ED=94=84=20=EC=8A=A4?= =?UTF-8?q?=ED=82=AC=20=ED=95=98=EC=9D=B4=EB=B8=8C=EB=A6=AC=EB=93=9C=20?= =?UTF-8?q?=EB=B0=B8=EB=9F=B0=EC=8A=A4=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 22개 버프 스킬 효과 감소 + MP 비용 증가 - Tier 1-5 전체 스킬 효율 하향 조정 - 예: Breakpoint CRI 35%→20%, MP 70→120 --- lib/data/skill_data.dart | 252 +++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 115 deletions(-) diff --git a/lib/data/skill_data.dart b/lib/data/skill_data.dart index 47233eb..662878e 100644 --- a/lib/data/skill_data.dart +++ b/lib/data/skill_data.dart @@ -17,31 +17,34 @@ class SkillData { name: 'Stack Trace', type: SkillType.attack, tier: 1, - mpCost: 50, + damageType: DamageType.physical, + mpCost: 30, // T1 기본 cooldownMs: 3000, power: 15, damageMultiplier: 2.0, ); - /// Core Dump - 중급 공격 + /// Core Dump - 중급 마법 공격 (메모리 덤프) static const coreDump = Skill( id: 'core_dump', name: 'Core Dump', type: SkillType.attack, tier: 3, - mpCost: 180, + damageType: DamageType.magical, + mpCost: 135, // T3 × 1.5 (mult 3.0) cooldownMs: 12000, power: 30, damageMultiplier: 3.0, ); - /// Memory Dump - DOT 공격 + /// Memory Dump - DOT 마법 공격 static const memoryDump = Skill( id: 'memory_dump', name: 'Memory Dump', type: SkillType.attack, tier: 3, - mpCost: 130, + damageType: DamageType.magical, + mpCost: 110, // T3 DOT (6틱 × 10dmg) cooldownMs: 15000, power: 0, element: SkillElement.memory, @@ -51,63 +54,68 @@ class SkillData { baseDotTickMs: 1000, ); - /// Kernel Panic - 최강 공격 (자해 데미지) + /// Kernel Panic - 최강 마법 공격 (자해 데미지) static const kernelPanic = Skill( id: 'kernel_panic', name: 'Kernel Panic', type: SkillType.attack, tier: 5, - mpCost: 400, + damageType: DamageType.magical, + mpCost: 300, // T5 × 2.0 (mult 4.0, 자해 보상) cooldownMs: 45000, power: 60, damageMultiplier: 4.0, selfDamagePercent: 0.1, ); - /// Blue Screen - 강력 공격 (긴 쿨타임) + /// Blue Screen - 강력 마법 공격 (긴 쿨타임) static const blueScreen = Skill( id: 'blue_screen', name: 'Blue Screen', type: SkillType.attack, tier: 4, - mpCost: 300, + damageType: DamageType.magical, + mpCost: 210, // T4 × 1.75 (mult 3.5) cooldownMs: 30000, power: 50, damageMultiplier: 3.5, ); - /// Inject Code - 방어 무시 공격 + /// Inject Code - 방어 무시 마법 공격 static const injectCode = Skill( id: 'inject_code', name: 'Inject Code', type: SkillType.attack, tier: 4, - mpCost: 200, + damageType: DamageType.magical, + mpCost: 190, // T4 × 1.25 × 방감 1.25 cooldownMs: 18000, power: 35, damageMultiplier: 2.5, targetDefReduction: 0.5, ); - /// Spawn Shell - 3연타 공격 + /// Spawn Shell - 3연타 물리 공격 static const spawnShell = Skill( id: 'spawn_shell', name: 'Spawn Shell', type: SkillType.attack, tier: 3, - mpCost: 150, + damageType: DamageType.physical, + mpCost: 120, // T3 × 3타 보정 1.3 cooldownMs: 10000, power: 12, damageMultiplier: 2.0, hitCount: 3, ); - /// Thread Pool - 5연타 공격 + /// Thread Pool - 5연타 물리 공격 static const threadPool = Skill( id: 'thread_pool', name: 'Thread Pool', type: SkillType.attack, tier: 4, + damageType: DamageType.physical, mpCost: 230, cooldownMs: 15000, power: 10, @@ -115,12 +123,13 @@ class SkillData { hitCount: 5, ); - /// Exfiltrate Data - HP 흡수 공격 + /// Exfiltrate Data - HP 흡수 하이브리드 공격 static const exfiltrateData = Skill( id: 'exfiltrate_data', name: 'Exfiltrate Data', type: SkillType.attack, tier: 4, + damageType: DamageType.hybrid, mpCost: 180, cooldownMs: 12000, power: 25, @@ -128,12 +137,13 @@ class SkillData { lifestealPercent: 0.3, ); - /// Fuzzing - 랜덤 데미지 공격 + /// Fuzzing - 랜덤 데미지 하이브리드 공격 static const fuzzing = Skill( id: 'fuzzing', name: 'Fuzzing', type: SkillType.attack, tier: 2, + damageType: DamageType.hybrid, mpCost: 100, cooldownMs: 8000, power: 20, @@ -141,12 +151,13 @@ class SkillData { element: SkillElement.chaos, ); - /// Chaos Monkey - 랜덤 효과 공격 + /// Chaos Monkey - 랜덤 효과 하이브리드 공격 static const chaosMonkey = Skill( id: 'chaos_monkey', name: 'Chaos Monkey', type: SkillType.attack, tier: 5, + damageType: DamageType.hybrid, mpCost: 250, cooldownMs: 25000, power: 40, @@ -154,12 +165,13 @@ class SkillData { element: SkillElement.chaos, ); - /// Saga Pattern - 3회 연속 공격 + /// Saga Pattern - 3회 연속 물리 공격 static const sagaPattern = Skill( id: 'saga_pattern', name: 'Saga Pattern', type: SkillType.attack, tier: 4, + damageType: DamageType.physical, mpCost: 280, cooldownMs: 20000, power: 18, @@ -167,12 +179,13 @@ class SkillData { hitCount: 3, ); - /// Event Store - 차지 공격 (DOT로 표현) + /// Event Store - 차지 마법 공격 (DOT로 표현) static const eventStore = Skill( id: 'event_store', name: 'Event Store', type: SkillType.attack, tier: 4, + damageType: DamageType.magical, mpCost: 200, cooldownMs: 18000, power: 0, @@ -183,24 +196,26 @@ class SkillData { baseDotTickMs: 3000, ); - /// Auto Scale - HP비례 공격 + /// Auto Scale - HP비례 하이브리드 공격 static const autoScale = Skill( id: 'auto_scale', name: 'Auto Scale', type: SkillType.attack, tier: 4, + damageType: DamageType.hybrid, mpCost: 230, cooldownMs: 20000, power: 30, damageMultiplier: 2.5, ); - /// Disassemble - 방어감소+공격 + /// Disassemble - 방어감소 + 물리 공격 static const disassemble = Skill( id: 'disassemble', name: 'Disassemble', type: SkillType.attack, tier: 3, + damageType: DamageType.physical, mpCost: 150, cooldownMs: 12000, power: 22, @@ -208,36 +223,39 @@ class SkillData { targetDefReduction: 0.3, ); - /// Decompile - 약점 공격 (높은 크리) + /// Decompile - 약점 물리 공격 (높은 크리) static const decompile = Skill( id: 'decompile', name: 'Decompile', type: SkillType.attack, tier: 2, + damageType: DamageType.physical, mpCost: 130, cooldownMs: 10000, power: 20, damageMultiplier: 2.2, ); - /// Canary Release - 테스트 공격 + /// Canary Release - 테스트 물리 공격 static const canaryRelease = Skill( id: 'canary_release', name: 'Canary Release', type: SkillType.attack, tier: 1, - mpCost: 80, + damageType: DamageType.physical, + mpCost: 35, // T1 기본 cooldownMs: 6000, power: 12, damageMultiplier: 2.0, ); - /// A/B Test - 이중 공격 + /// A/B Test - 이중 물리 공격 static const abTest = Skill( id: 'ab_test', name: 'A/B Test', type: SkillType.attack, tier: 2, + damageType: DamageType.physical, mpCost: 180, cooldownMs: 12000, power: 15, @@ -245,12 +263,13 @@ class SkillData { hitCount: 2, ); - /// Pivot Network - 네트워크 공격 + /// Pivot Network - 네트워크 마법 공격 static const pivotNetwork = Skill( id: 'pivot_network', name: 'Pivot Network', type: SkillType.attack, tier: 3, + damageType: DamageType.magical, mpCost: 150, cooldownMs: 10000, power: 25, @@ -258,24 +277,26 @@ class SkillData { element: SkillElement.network, ); - /// Async Await - 딜레이 공격 + /// Async Await - 딜레이 마법 공격 static const asyncAwait = Skill( id: 'async_await', name: 'Async Await', type: SkillType.attack, tier: 4, + damageType: DamageType.magical, mpCost: 180, cooldownMs: 14000, power: 35, damageMultiplier: 3.0, ); - /// Event Source - DOT 공격 + /// Event Source - DOT 마법 공격 static const eventSource = Skill( id: 'event_source', name: 'Event Source', type: SkillType.attack, tier: 3, + damageType: DamageType.magical, mpCost: 150, cooldownMs: 12000, power: 0, @@ -286,12 +307,13 @@ class SkillData { baseDotTickMs: 800, ); - /// CQRS Split - 분리 공격 + /// CQRS Split - 분리 물리 공격 static const cqrsSplit = Skill( id: 'cqrs_split', name: 'CQRS Split', type: SkillType.attack, tier: 4, + damageType: DamageType.physical, mpCost: 200, cooldownMs: 15000, power: 20, @@ -464,190 +486,190 @@ class SkillData { name: 'Debug Mode', type: SkillType.buff, tier: 3, - mpCost: 100, + mpCost: 140, // 100 → 140 cooldownMs: 20000, power: 0, buff: BuffEffect( id: 'debug_mode_buff', name: 'Debug Mode', - durationMs: 10000, - atkModifier: 0.25, + durationMs: 8000, // 10초 → 8초 + atkModifier: 0.15, // 25% → 15% ), ); - /// Safe Mode - DEF +30% + /// Safe Mode - DEF 증가 static const safeMode = Skill( id: 'safe_mode', name: 'Safe Mode', type: SkillType.buff, tier: 3, - mpCost: 130, + mpCost: 160, // 130 → 160 cooldownMs: 25000, power: 0, buff: BuffEffect( id: 'safe_mode_buff', name: 'Safe Mode', - durationMs: 10000, - defModifier: 0.3, + durationMs: 8000, // 10초 → 8초 + defModifier: 0.18, // 30% → 18% ), ); - /// Memory Optimization - 전스탯 +10% + /// Memory Optimization - 전스탯 증가 static const memoryOptimization = Skill( id: 'memory_optimization', name: 'Memory Optimization', type: SkillType.buff, tier: 3, - mpCost: 150, + mpCost: 180, // 150 → 180 cooldownMs: 30000, power: 0, buff: BuffEffect( id: 'memory_optimization_buff', name: 'Optimized', - durationMs: 15000, - atkModifier: 0.1, - defModifier: 0.1, - criRateModifier: 0.05, - evasionModifier: 0.05, + durationMs: 12000, // 15초 → 12초 + atkModifier: 0.07, // 10% → 7% + defModifier: 0.07, // 10% → 7% + criRateModifier: 0.03, // 5% → 3% + evasionModifier: 0.03, // 5% → 3% ), ); - /// Breakpoint - 다음 공격 크리티컬 + /// Breakpoint - 크리율 증가 (하이브리드 밸런스) static const breakpoint = Skill( id: 'breakpoint', name: 'Breakpoint', type: SkillType.buff, tier: 2, - mpCost: 80, + mpCost: 120, // 70 → 120 cooldownMs: 12000, power: 0, buff: BuffEffect( id: 'breakpoint_buff', name: 'Breakpoint', durationMs: 5000, - criRateModifier: 0.5, + criRateModifier: 0.20, // 35% → 20% ), ); - /// Watch Variable - 회피율 +20% + /// Watch Variable - 회피율 증가 static const watchVariable = Skill( id: 'watch_variable', name: 'Watch Variable', type: SkillType.buff, tier: 2, - mpCost: 90, + mpCost: 120, // 90 → 120 cooldownMs: 15000, power: 0, buff: BuffEffect( id: 'watch_variable_buff', name: 'Watching', - durationMs: 8000, - evasionModifier: 0.2, + durationMs: 6000, // 8초 → 6초 + evasionModifier: 0.12, // 20% → 12% ), ); - /// Step Into - 공격속도 +30% (ATK 버프로 표현) + /// Step Into - 공격속도 증가 (ATK 버프로 표현) static const stepInto = Skill( id: 'step_into', name: 'Step Into', type: SkillType.buff, tier: 1, - mpCost: 80, + mpCost: 100, // 80 → 100 cooldownMs: 12000, power: 0, buff: BuffEffect( id: 'step_into_buff', name: 'Step Into', durationMs: 6000, - atkModifier: 0.2, + atkModifier: 0.12, // 20% → 12% ), ); - /// Profile Run - 크리율 +30% + /// Profile Run - 크리율 증가 static const profileRun = Skill( id: 'profile_run', name: 'Profile Run', type: SkillType.buff, tier: 3, - mpCost: 100, + mpCost: 150, // 100 → 150 cooldownMs: 18000, power: 0, buff: BuffEffect( id: 'profile_run_buff', name: 'Profiling', - durationMs: 8000, - criRateModifier: 0.3, + durationMs: 6000, // 8초 → 6초 + criRateModifier: 0.18, // 30% → 18% ), ); - /// Benchmark - 데미지 +40% + /// Benchmark - 데미지 증가 static const benchmark = Skill( id: 'benchmark', name: 'Benchmark', type: SkillType.buff, tier: 4, - mpCost: 130, + mpCost: 180, // 130 → 180 cooldownMs: 20000, power: 0, buff: BuffEffect( id: 'benchmark_buff', name: 'Benchmarking', durationMs: 5000, - atkModifier: 0.4, + atkModifier: 0.25, // 40% → 25% ), ); - /// Elevate Privilege - 전스탯 +20% + /// Elevate Privilege - 전스탯 증가 (하이브리드 밸런스) static const elevatePrivilege = Skill( id: 'elevate_privilege', name: 'Elevate Privilege', type: SkillType.buff, tier: 5, - mpCost: 200, + mpCost: 280, // 220 → 280 cooldownMs: 35000, power: 0, buff: BuffEffect( id: 'elevate_privilege_buff', name: 'Elevated', - durationMs: 8000, - atkModifier: 0.2, - defModifier: 0.2, - criRateModifier: 0.1, - evasionModifier: 0.1, + durationMs: 6000, // 8초 → 6초 + atkModifier: 0.08, // 12% → 8% + defModifier: 0.08, // 12% → 8% + criRateModifier: 0.04, // 6% → 4% + evasionModifier: 0.04, // 6% → 4% ), ); - /// Scale Up - ATK +50% + /// Scale Up - ATK 증가 (하이브리드 밸런스) static const scaleUp = Skill( id: 'scale_up', name: 'Scale Up', type: SkillType.buff, tier: 5, - mpCost: 180, + mpCost: 280, // 220 → 280 cooldownMs: 30000, power: 0, buff: BuffEffect( id: 'scale_up_buff', name: 'Scaled Up', - durationMs: 6000, - atkModifier: 0.5, + durationMs: 5000, // 6초 → 5초 + atkModifier: 0.20, // 30% → 20% ), ); - /// Failover - 치명타 방지 (DEF 증가로 표현) + /// Failover - DEF 증가 (하이브리드 밸런스) static const failover = Skill( id: 'failover', name: 'Failover', type: SkillType.buff, tier: 5, - mpCost: 150, + mpCost: 350, // 300 → 350 cooldownMs: 45000, power: 0, buff: BuffEffect( id: 'failover_buff', name: 'Failover Ready', - durationMs: 30000, - defModifier: 0.4, + durationMs: 15000, // 20초 → 15초 + defModifier: 0.18, // 25% → 18% ), ); @@ -657,14 +679,14 @@ class SkillData { name: 'Containerize', type: SkillType.buff, tier: 3, - mpCost: 130, + mpCost: 170, // 130 → 170 cooldownMs: 20000, power: 0, buff: BuffEffect( id: 'containerize_buff', name: 'Containerized', - durationMs: 12000, - defModifier: 0.35, + durationMs: 10000, // 12초 → 10초 + defModifier: 0.20, // 35% → 20% ), ); @@ -674,16 +696,16 @@ class SkillData { name: 'Orchestrate', type: SkillType.buff, tier: 4, - mpCost: 230, + mpCost: 260, // 230 → 260 cooldownMs: 40000, power: 0, buff: BuffEffect( id: 'orchestrate_buff', name: 'Orchestrated', - durationMs: 10000, - atkModifier: 0.15, - defModifier: 0.15, - criRateModifier: 0.1, + durationMs: 8000, // 10초 → 8초 + atkModifier: 0.10, // 15% → 10% + defModifier: 0.10, // 15% → 10% + criRateModifier: 0.06, // 10% → 6% ), ); @@ -693,14 +715,14 @@ class SkillData { name: 'Promise Resolve', type: SkillType.buff, tier: 2, - mpCost: 100, + mpCost: 130, // 100 → 130 cooldownMs: 15000, power: 0, buff: BuffEffect( id: 'promise_resolve_buff', name: 'Resolved', - durationMs: 8000, - atkModifier: 0.25, + durationMs: 6000, // 8초 → 6초 + atkModifier: 0.15, // 25% → 15% ), ); @@ -710,32 +732,32 @@ class SkillData { name: 'Feature Toggle', type: SkillType.buff, tier: 1, - mpCost: 80, + mpCost: 110, // 80 → 110 cooldownMs: 10000, power: 0, buff: BuffEffect( id: 'feature_toggle_buff', name: 'Toggled', - durationMs: 12000, - atkModifier: 0.15, - defModifier: 0.15, + durationMs: 10000, // 12초 → 10초 + atkModifier: 0.10, // 15% → 10% + defModifier: 0.10, // 15% → 10% ), ); - /// Dark Launch - 은신 (회피+100% → 50%로 조정) + /// Dark Launch - 은신 (하이브리드 밸런스) static const darkLaunch = Skill( id: 'dark_launch', name: 'Dark Launch', type: SkillType.buff, tier: 4, - mpCost: 180, + mpCost: 180, // 150 → 180 cooldownMs: 30000, power: 0, buff: BuffEffect( id: 'dark_launch_buff', name: 'Hidden', durationMs: 3000, - evasionModifier: 0.5, + evasionModifier: 0.20, // 30% → 20% ), ); @@ -745,14 +767,14 @@ class SkillData { name: 'Static Analysis', type: SkillType.buff, tier: 1, - mpCost: 80, + mpCost: 100, // 80 → 100 cooldownMs: 12000, power: 0, buff: BuffEffect( id: 'static_analysis_buff', name: 'Analyzed', - durationMs: 10000, - criRateModifier: 0.15, + durationMs: 8000, // 10초 → 8초 + criRateModifier: 0.10, // 15% → 10% ), ); @@ -762,15 +784,15 @@ class SkillData { name: 'Dynamic Analysis', type: SkillType.buff, tier: 4, - mpCost: 130, + mpCost: 170, // 130 → 170 cooldownMs: 18000, power: 0, buff: BuffEffect( id: 'dynamic_analysis_buff', name: 'Dynamic', - durationMs: 8000, - criRateModifier: 0.15, - evasionModifier: 0.15, + durationMs: 6000, // 8초 → 6초 + criRateModifier: 0.10, // 15% → 10% + evasionModifier: 0.10, // 15% → 10% ), ); @@ -780,14 +802,14 @@ class SkillData { name: 'Reverse Engineer', type: SkillType.buff, tier: 4, - mpCost: 150, + mpCost: 190, // 150 → 190 cooldownMs: 25000, power: 0, buff: BuffEffect( id: 'reverse_engineer_buff', name: 'Reversed', - durationMs: 10000, - atkModifier: 0.3, + durationMs: 8000, // 10초 → 8초 + atkModifier: 0.18, // 30% → 18% ), ); @@ -797,14 +819,14 @@ class SkillData { name: 'Cover Tracks', type: SkillType.buff, tier: 2, - mpCost: 100, + mpCost: 130, // 100 → 130 cooldownMs: 15000, power: 0, buff: BuffEffect( id: 'cover_tracks_buff', name: 'Covered', durationMs: 5000, - evasionModifier: 0.25, + evasionModifier: 0.15, // 25% → 15% ), ); @@ -814,14 +836,14 @@ class SkillData { name: 'Deploy', type: SkillType.buff, tier: 4, - mpCost: 180, + mpCost: 220, // 180 → 220 cooldownMs: 30000, power: 0, buff: BuffEffect( id: 'deploy_buff', name: 'Deployed', - durationMs: 12000, - atkModifier: 0.35, + durationMs: 10000, // 12초 → 10초 + atkModifier: 0.22, // 35% → 22% ), ); @@ -831,14 +853,14 @@ class SkillData { name: 'Retry Logic', type: SkillType.buff, tier: 2, - mpCost: 100, + mpCost: 130, // 100 → 130 cooldownMs: 15000, power: 0, buff: BuffEffect( id: 'retry_logic_buff', name: 'Retrying', - durationMs: 10000, - criRateModifier: 0.2, + durationMs: 8000, // 10초 → 8초 + criRateModifier: 0.12, // 20% → 12% ), ); @@ -848,15 +870,15 @@ class SkillData { name: 'State Machine', type: SkillType.buff, tier: 2, - mpCost: 150, + mpCost: 170, // 150 → 170 cooldownMs: 25000, power: 0, buff: BuffEffect( id: 'state_machine_buff', name: 'State Active', - durationMs: 15000, - atkModifier: 0.1, - defModifier: 0.1, + durationMs: 12000, // 15초 → 12초 + atkModifier: 0.08, // 10% → 8% + defModifier: 0.08, // 10% → 8% ), );