feat(phase6): 밸런싱 상수 및 몬스터 스탯 스케일링 시스템 구현
- balance_constants.dart 생성 - ExpConstants: 경험치 곡선 (baseExp * 1.15^level) - MonsterType: normal, elite, miniboss, boss, finalBoss - MonsterTypeMultiplier: 타입별 HP/ATK/DEF/EXP/GOLD 배율 - MonsterBaseStats: 레벨 기반 몬스터 스탯 생성 - BossStats: 5개 보스 정의 (Syntax Error Dragon ~ Glitch God) - LevelTierSettings: 구간별 난이도 설정 (초반/중반/후반/엔드게임) - PlayerScaling: 플레이어 레벨업 시 HP/MP 스케일링 - MonsterCombatStats 통합 - MonsterBaseStats.generate() 사용하여 스탯 생성 - monsterType 매개변수 추가로 타입별 몬스터 지원
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'package:askiineverdie/src/core/util/balance_constants.dart';
|
||||
|
||||
/// 몬스터 공격 속도 타입
|
||||
enum MonsterSpeedType {
|
||||
/// 빠름 (600ms)
|
||||
@@ -127,22 +129,15 @@ class MonsterCombatStats {
|
||||
/// [name] 몬스터 표시 이름
|
||||
/// [level] 몬스터 레벨 (원본 데이터 기준)
|
||||
/// [speedType] 공격 속도 타입 (기본: normal)
|
||||
/// [monsterType] 몬스터 타입 (기본: normal)
|
||||
factory MonsterCombatStats.fromLevel({
|
||||
required String name,
|
||||
required int level,
|
||||
MonsterSpeedType speedType = MonsterSpeedType.normal,
|
||||
MonsterType monsterType = MonsterType.normal,
|
||||
}) {
|
||||
// 레벨 기반 스탯 스케일링
|
||||
// 레벨 1 기준으로 선형/비선형 증가
|
||||
|
||||
// HP: 레벨 * 15 + 기본값 20
|
||||
final hpMax = 20 + level * 15;
|
||||
|
||||
// 공격력: 레벨 * 3 + 기본값 5
|
||||
final atk = 5 + level * 3;
|
||||
|
||||
// 방어력: 레벨 * 1.5 + 기본값 2
|
||||
final def = 2 + (level * 1.5).round();
|
||||
// balance_constants.dart의 MonsterBaseStats 사용
|
||||
final baseStats = MonsterBaseStats.generate(level, monsterType);
|
||||
|
||||
// 크리티컬 확률: 레벨에 따라 천천히 증가 (0.02 ~ 0.3)
|
||||
final criRate = (0.02 + level * 0.003).clamp(0.02, 0.3);
|
||||
@@ -163,22 +158,19 @@ class MonsterCombatStats {
|
||||
MonsterSpeedType.slow => 1400,
|
||||
};
|
||||
|
||||
// 경험치 보상: 레벨 기반
|
||||
final expReward = 10 + level * 5;
|
||||
|
||||
return MonsterCombatStats(
|
||||
name: name,
|
||||
level: level,
|
||||
atk: atk,
|
||||
def: def,
|
||||
hpMax: hpMax,
|
||||
hpCurrent: hpMax,
|
||||
atk: baseStats.atk,
|
||||
def: baseStats.def,
|
||||
hpMax: baseStats.hp,
|
||||
hpCurrent: baseStats.hp,
|
||||
criRate: criRate,
|
||||
criDamage: criDamage,
|
||||
evasion: evasion,
|
||||
accuracy: accuracy,
|
||||
attackDelayMs: attackDelayMs,
|
||||
expReward: expReward,
|
||||
expReward: baseStats.exp,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user