Files
asciinevrdie/lib/data/skill_data.dart
JiWoong Sul 7cd8be88df feat(game): 포션 시스템 및 UI 패널 추가
- 포션 시스템 구현 (PotionService, Potion 모델)
- 포션 인벤토리 패널 위젯
- 활성 버프 패널 위젯
- 장비 스탯 패널 위젯
- 스킬 시스템 확장
- 일본어 번역 추가
- 전투 이벤트/상태 모델 개선
2025-12-21 23:53:27 +09:00

338 lines
8.7 KiB
Dart

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,
);
// ============================================================================
// DOT (지속 피해) 스킬
// ============================================================================
/// Memory Corruption - 기본 DOT 스킬
///
/// INT → 틱당 데미지 보정, WIS → 틱 간격 보정
static const memoryCorruption = Skill(
id: 'memory_corruption',
name: 'Memory Corruption',
type: SkillType.attack,
mpCost: 20,
cooldownMs: 10000, // 10초
power: 0,
damageMultiplier: 0,
element: SkillElement.memory,
attackMode: AttackMode.dot,
baseDotDamage: 8, // 틱당 8 데미지 (INT 보정 전)
baseDotDurationMs: 6000, // 6초 지속
baseDotTickMs: 1000, // 1초마다 틱
);
/// Infinite Loop - 장시간 DOT
///
/// 오래 지속되는 중급 DOT
static const infiniteLoop = Skill(
id: 'infinite_loop',
name: 'Infinite Loop',
type: SkillType.attack,
mpCost: 35,
cooldownMs: 18000, // 18초
power: 0,
damageMultiplier: 0,
element: SkillElement.memory,
attackMode: AttackMode.dot,
baseDotDamage: 12, // 틱당 12 데미지
baseDotDurationMs: 10000, // 10초 지속
baseDotTickMs: 1000, // 1초마다 틱
);
/// Thermal Throttle - 화염 DOT
///
/// 빠른 틱, 짧은 지속시간
static const thermalThrottle = Skill(
id: 'thermal_throttle',
name: 'Thermal Throttle',
type: SkillType.attack,
mpCost: 30,
cooldownMs: 12000, // 12초
power: 0,
damageMultiplier: 0,
element: SkillElement.fire,
attackMode: AttackMode.dot,
baseDotDamage: 15, // 틱당 15 데미지
baseDotDurationMs: 4000, // 4초 지속
baseDotTickMs: 500, // 0.5초마다 틱
);
/// Race Condition - 빠른 DOT
///
/// 매우 빠른 틱의 번개 DOT
static const raceCondition = Skill(
id: 'race_condition',
name: 'Race Condition',
type: SkillType.attack,
mpCost: 45,
cooldownMs: 15000, // 15초
power: 0,
damageMultiplier: 0,
element: SkillElement.lightning,
attackMode: AttackMode.dot,
baseDotDamage: 6, // 틱당 6 데미지
baseDotDurationMs: 5000, // 5초 지속
baseDotTickMs: 300, // 0.3초마다 틱
);
/// System32 Delete - 강력한 DOT
///
/// 높은 틱 데미지의 공허 DOT
static const system32Delete = Skill(
id: 'system32_delete',
name: 'System32 Delete',
type: SkillType.attack,
mpCost: 70,
cooldownMs: 30000, // 30초
power: 0,
damageMultiplier: 0,
element: SkillElement.voidElement,
attackMode: AttackMode.dot,
baseDotDamage: 25, // 틱당 25 데미지
baseDotDurationMs: 8000, // 8초 지속
baseDotTickMs: 1000, // 1초마다 틱
);
// ============================================================================
// 회복 스킬
// ============================================================================
/// 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<Skill> allSkills = [
// 공격 스킬 (단발성)
debugStrike,
nullPointer,
memoryLeak,
stackOverflow,
coreDump,
kernelPanic,
// DOT 스킬
memoryCorruption,
infiniteLoop,
thermalThrottle,
raceCondition,
system32Delete,
// 회복 스킬
quickFix,
hotReload,
garbageCollection,
// 버프 스킬
overclock,
safeMode,
firewall,
];
/// DOT 스킬 목록
static List<Skill> get dotSkills =>
allSkills.where((s) => s.isDot).toList();
/// ID로 스킬 찾기
static Skill? getSkillById(String id) {
for (final skill in allSkills) {
if (skill.id == id) return skill;
}
return null;
}
/// 타입별 스킬 목록
static List<Skill> getSkillsByType(SkillType type) {
return allSkills.where((s) => s.type == type).toList();
}
/// 공격 스킬 목록 (MP 효율순 정렬)
static List<Skill> get attackSkillsByEfficiency {
final attacks = getSkillsByType(SkillType.attack);
attacks.sort((a, b) => b.mpEfficiency.compareTo(a.mpEfficiency));
return attacks;
}
/// 회복 스킬 목록
static List<Skill> get healSkills => getSkillsByType(SkillType.heal);
/// 버프 스킬 목록
static List<Skill> get buffSkills => getSkillsByType(SkillType.buff);
/// 기본 스킬 세트 (새 캐릭터용)
static List<String> get defaultSkillIds => [
debugStrike.id,
quickFix.id,
];
/// MP 비용 이하의 사용 가능한 공격 스킬
static List<Skill> getAffordableAttackSkills(int currentMp) {
return getSkillsByType(SkillType.attack)
.where((s) => s.mpCost <= currentMp)
.toList();
}
}