feat(phase5): 종족/클래스 시스템 균형 및 UI 통합
- 21개 종족 균형 재설계 (스탯 합계 = 0) - 18개 클래스 균형 재설계 (스탯 합계 = +3) - Traits에 raceId, classId 필드 추가 - 저장/불러오기에 종족/클래스 ID 추가 - 캐릭터 생성 UI에서 RaceData/ClassData 사용 - 선택 시 스탯 보정 및 패시브 정보 표시
This commit is contained in:
@@ -12,7 +12,7 @@ class ClassData {
|
||||
// 전사 계열 (STR 기반)
|
||||
// ==========================================================================
|
||||
|
||||
/// Bug Hunter: STR + INT
|
||||
/// Bug Hunter: STR + INT (스탯 합계: +3)
|
||||
static const bugHunter = ClassTraits(
|
||||
classId: 'bug_hunter',
|
||||
name: 'Bug Hunter',
|
||||
@@ -32,12 +32,13 @@ class ClassData {
|
||||
restriction: EquipmentRestriction.none,
|
||||
);
|
||||
|
||||
/// Overflow Warrior: STR
|
||||
/// Overflow Warrior: STR + CON (스탯 합계: +3)
|
||||
static const overflowWarrior = ClassTraits(
|
||||
classId: 'overflow_warrior',
|
||||
name: 'Overflow Warrior',
|
||||
statModifiers: {
|
||||
StatType.str: 2,
|
||||
StatType.con: 1,
|
||||
},
|
||||
startingSkills: ['power_strike'],
|
||||
classSkills: ['power_strike', 'overflow_slash', 'buffer_break'],
|
||||
@@ -51,7 +52,7 @@ class ClassData {
|
||||
restriction: EquipmentRestriction.none,
|
||||
);
|
||||
|
||||
/// Stack Crusher: STR + CON
|
||||
/// Stack Crusher: STR + CON (스탯 합계: +3)
|
||||
static const stackCrusher = ClassTraits(
|
||||
classId: 'stack_crusher',
|
||||
name: 'Stack Crusher',
|
||||
@@ -76,7 +77,7 @@ class ClassData {
|
||||
restriction: EquipmentRestriction.none,
|
||||
);
|
||||
|
||||
/// Assertion Knight: STR + WIS
|
||||
/// Assertion Knight: STR + WIS (스탯 합계: +3)
|
||||
static const assertionKnight = ClassTraits(
|
||||
classId: 'assertion_knight',
|
||||
name: 'Assertion Knight',
|
||||
@@ -102,7 +103,7 @@ class ClassData {
|
||||
// 탱커 계열 (CON 기반)
|
||||
// ==========================================================================
|
||||
|
||||
/// Debugger Paladin: WIS + CON
|
||||
/// Debugger Paladin: WIS + CON (스탯 합계: +3)
|
||||
static const debuggerPaladin = ClassTraits(
|
||||
classId: 'debugger_paladin',
|
||||
name: 'Debugger Paladin',
|
||||
@@ -129,12 +130,13 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Loop Breaker: CON
|
||||
/// Loop Breaker: CON + STR (스탯 합계: +3)
|
||||
static const loopBreaker = ClassTraits(
|
||||
classId: 'loop_breaker',
|
||||
name: 'Loop Breaker',
|
||||
statModifiers: {
|
||||
StatType.con: 2,
|
||||
StatType.str: 1,
|
||||
},
|
||||
startingSkills: ['shield_bash'],
|
||||
classSkills: ['shield_bash', 'infinite_guard', 'break_stance'],
|
||||
@@ -150,7 +152,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Garbage Collector: CON + STR
|
||||
/// Garbage Collector: CON + STR (스탯 합계: +3)
|
||||
static const garbageCollector = ClassTraits(
|
||||
classId: 'garbage_collector',
|
||||
name: 'Garbage Collector',
|
||||
@@ -181,12 +183,13 @@ class ClassData {
|
||||
// 마법사 계열 (INT 기반)
|
||||
// ==========================================================================
|
||||
|
||||
/// Compiler Mage: INT + MP Max
|
||||
/// Compiler Mage: INT + WIS (스탯 합계: +3)
|
||||
static const compilerMage = ClassTraits(
|
||||
classId: 'compiler_mage',
|
||||
name: 'Compiler Mage',
|
||||
statModifiers: {
|
||||
StatType.intelligence: 2,
|
||||
StatType.wis: 1,
|
||||
},
|
||||
startingSkills: ['fireball'],
|
||||
classSkills: ['fireball', 'compile_blast', 'syntax_storm'],
|
||||
@@ -202,12 +205,13 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Recursion Master: INT
|
||||
/// Recursion Master: INT + DEX (스탯 합계: +3)
|
||||
static const recursionMaster = ClassTraits(
|
||||
classId: 'recursion_master',
|
||||
name: 'Recursion Master',
|
||||
statModifiers: {
|
||||
StatType.intelligence: 2,
|
||||
StatType.dex: 1,
|
||||
},
|
||||
startingSkills: ['fireball'],
|
||||
classSkills: ['fireball', 'recursive_bolt', 'stack_overflow'],
|
||||
@@ -223,7 +227,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Memory Leaker: INT + WIS
|
||||
/// Memory Leaker: INT + WIS (스탯 합계: +3)
|
||||
static const memoryLeaker = ClassTraits(
|
||||
classId: 'memory_leaker',
|
||||
name: 'Memory Leaker',
|
||||
@@ -245,7 +249,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Type Caster: INT + CHA
|
||||
/// Type Caster: INT + CHA (스탯 합계: +3)
|
||||
static const typeCaster = ClassTraits(
|
||||
classId: 'type_caster',
|
||||
name: 'Type Caster',
|
||||
@@ -267,7 +271,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// DevOps Shaman: CON + INT
|
||||
/// DevOps Shaman: CON + INT (스탯 합계: +3)
|
||||
static const devOpsShaman = ClassTraits(
|
||||
classId: 'devops_shaman',
|
||||
name: 'DevOps Shaman',
|
||||
@@ -298,12 +302,13 @@ class ClassData {
|
||||
// 민첩 계열 (DEX 기반)
|
||||
// ==========================================================================
|
||||
|
||||
/// Refactor Monk: DEX
|
||||
/// Refactor Monk: DEX + CON (스탯 합계: +3)
|
||||
static const refactorMonk = ClassTraits(
|
||||
classId: 'refactor_monk',
|
||||
name: 'Refactor Monk',
|
||||
statModifiers: {
|
||||
StatType.dex: 2,
|
||||
StatType.con: 1,
|
||||
},
|
||||
startingSkills: ['flurry'],
|
||||
classSkills: ['flurry', 'clean_code_strike', 'refactor_combo'],
|
||||
@@ -324,12 +329,13 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Pointer Assassin: DEX
|
||||
/// Pointer Assassin: DEX + STR (스탯 합계: +3)
|
||||
static const pointerAssassin = ClassTraits(
|
||||
classId: 'pointer_assassin',
|
||||
name: 'Pointer Assassin',
|
||||
statModifiers: {
|
||||
StatType.dex: 2,
|
||||
StatType.str: 1,
|
||||
},
|
||||
startingSkills: ['backstab'],
|
||||
classSkills: ['backstab', 'null_strike', 'dereference_kill'],
|
||||
@@ -350,7 +356,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Callback Samurai: DEX + STR
|
||||
/// Callback Samurai: DEX + STR (스탯 합계: +3)
|
||||
static const callbackSamurai = ClassTraits(
|
||||
classId: 'callback_samurai',
|
||||
name: 'Callback Samurai',
|
||||
@@ -375,7 +381,7 @@ class ClassData {
|
||||
restriction: EquipmentRestriction.none,
|
||||
);
|
||||
|
||||
/// Tester Jester: DEX + CHA
|
||||
/// Tester Jester: DEX + CHA (스탯 합계: +3)
|
||||
static const testerJester = ClassTraits(
|
||||
classId: 'tester_jester',
|
||||
name: 'Tester Jester',
|
||||
@@ -406,12 +412,13 @@ class ClassData {
|
||||
// 지혜 계열 (WIS 기반)
|
||||
// ==========================================================================
|
||||
|
||||
/// Exception Handler: WIS
|
||||
/// Exception Handler: WIS + INT (스탯 합계: +3)
|
||||
static const exceptionHandler = ClassTraits(
|
||||
classId: 'exception_handler',
|
||||
name: 'Exception Handler',
|
||||
statModifiers: {
|
||||
StatType.wis: 2,
|
||||
StatType.intelligence: 1,
|
||||
},
|
||||
startingSkills: ['heal'],
|
||||
classSkills: ['heal', 'try_catch', 'finally_heal'],
|
||||
@@ -427,7 +434,7 @@ class ClassData {
|
||||
),
|
||||
);
|
||||
|
||||
/// Null Checker: WIS + INT
|
||||
/// Null Checker: WIS + INT (스탯 합계: +3)
|
||||
static const nullChecker = ClassTraits(
|
||||
classId: 'null_checker',
|
||||
name: 'Null Checker',
|
||||
|
||||
Reference in New Issue
Block a user