import 'package:askiineverdie/src/core/model/skill.dart'; /// 게임 내 스킬 정의 /// /// 프로그래밍 테마에 맞춘 스킬 목록 class SkillData { SkillData._(); // ============================================================================ // 공격 스킬 // ============================================================================ /// Debug Strike - 기본 공격 스킬 static const debugStrike = Skill( id: 'debug_strike', name: 'Debug Strike', type: SkillType.attack, mpCost: 10, cooldownMs: 3000, // 3초 power: 15, damageMultiplier: 1.5, ); /// Memory Leak - 방어력 감소 효과 static const memoryLeak = Skill( id: 'memory_leak', name: 'Memory Leak', type: SkillType.attack, mpCost: 25, cooldownMs: 8000, // 8초 power: 25, damageMultiplier: 2.5, targetDefReduction: 0.2, // 적 방어력 -20% ); /// Core Dump - 강력한 공격 static const coreDump = Skill( id: 'core_dump', name: 'Core Dump', type: SkillType.attack, mpCost: 50, cooldownMs: 20000, // 20초 power: 40, damageMultiplier: 4.0, ); /// Kernel Panic - 최강 공격 (자해 데미지) static const kernelPanic = Skill( id: 'kernel_panic', name: 'Kernel Panic', type: SkillType.attack, mpCost: 100, cooldownMs: 60000, // 60초 power: 80, damageMultiplier: 8.0, selfDamagePercent: 0.1, // 자신 HP -10% ); /// Stack Overflow - 중급 공격 static const stackOverflow = Skill( id: 'stack_overflow', name: 'Stack Overflow', type: SkillType.attack, mpCost: 35, cooldownMs: 12000, // 12초 power: 30, damageMultiplier: 3.0, ); /// Null Pointer - 빠른 공격 static const nullPointer = Skill( id: 'null_pointer', name: 'Null Pointer', type: SkillType.attack, mpCost: 15, cooldownMs: 4000, // 4초 power: 18, damageMultiplier: 1.8, ); // ============================================================================ // 회복 스킬 // ============================================================================ /// Hot Reload - HP 회복 static const hotReload = Skill( id: 'hot_reload', name: 'Hot Reload', type: SkillType.heal, mpCost: 20, cooldownMs: 10000, // 10초 power: 0, healPercent: 0.3, // HP 30% 회복 ); /// Garbage Collection - 대량 회복 static const garbageCollection = Skill( id: 'garbage_collection', name: 'Garbage Collection', type: SkillType.heal, mpCost: 45, cooldownMs: 25000, // 25초 power: 0, healPercent: 0.5, // HP 50% 회복 ); /// Quick Fix - 빠른 소량 회복 static const quickFix = Skill( id: 'quick_fix', name: 'Quick Fix', type: SkillType.heal, mpCost: 10, cooldownMs: 5000, // 5초 power: 0, healAmount: 20, // 고정 20 회복 ); // ============================================================================ // 버프 스킬 // ============================================================================ /// Safe Mode - 방어 버프 static const safeMode = Skill( id: 'safe_mode', name: 'Safe Mode', type: SkillType.buff, mpCost: 30, cooldownMs: 30000, // 30초 power: 0, buff: BuffEffect( id: 'safe_mode_buff', name: 'Safe Mode', durationMs: 10000, // 10초 지속 defModifier: 0.5, // 방어력 +50% ), ); /// Overclock - 공격 버프 static const overclock = Skill( id: 'overclock', name: 'Overclock', type: SkillType.buff, mpCost: 25, cooldownMs: 25000, // 25초 power: 0, buff: BuffEffect( id: 'overclock_buff', name: 'Overclock', durationMs: 8000, // 8초 지속 atkModifier: 0.4, // 공격력 +40% criRateModifier: 0.1, // 크리티컬 +10% ), ); /// Firewall - 회피 버프 static const firewall = Skill( id: 'firewall', name: 'Firewall', type: SkillType.buff, mpCost: 20, cooldownMs: 20000, // 20초 power: 0, buff: BuffEffect( id: 'firewall_buff', name: 'Firewall', durationMs: 12000, // 12초 지속 evasionModifier: 0.15, // 회피율 +15% defModifier: 0.2, // 방어력 +20% ), ); // ============================================================================ // 스킬 목록 // ============================================================================ /// 모든 스킬 목록 static const List allSkills = [ // 공격 스킬 debugStrike, nullPointer, memoryLeak, stackOverflow, coreDump, kernelPanic, // 회복 스킬 quickFix, hotReload, garbageCollection, // 버프 스킬 overclock, safeMode, firewall, ]; /// ID로 스킬 찾기 static Skill? getSkillById(String id) { for (final skill in allSkills) { if (skill.id == id) return skill; } return null; } /// 타입별 스킬 목록 static List getSkillsByType(SkillType type) { return allSkills.where((s) => s.type == type).toList(); } /// 공격 스킬 목록 (MP 효율순 정렬) static List get attackSkillsByEfficiency { final attacks = getSkillsByType(SkillType.attack); attacks.sort((a, b) => b.mpEfficiency.compareTo(a.mpEfficiency)); return attacks; } /// 회복 스킬 목록 static List get healSkills => getSkillsByType(SkillType.heal); /// 버프 스킬 목록 static List get buffSkills => getSkillsByType(SkillType.buff); /// 기본 스킬 세트 (새 캐릭터용) static List get defaultSkillIds => [ debugStrike.id, quickFix.id, ]; /// MP 비용 이하의 사용 가능한 공격 스킬 static List getAffordableAttackSkills(int currentMp) { return getSkillsByType(SkillType.attack) .where((s) => s.mpCost <= currentMp) .toList(); } }