void CHARACTER::SelectSkillGroup(uint8_t skill_group)
{
if (GetDesc() == nullptr)
return;
if (GetSkillGroup() > 0)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't learn a skill again."));
return;
}
// Skill Group
SetSkillGroup(skill_group);
// Define Common Skills
std::unordered_map<uint8_t, uint8_t> commonSkillLevels = {
{SKILL_LEADERSHIP, SKILL_MAX_LEVEL},
{SKILL_COMBO, 2},
{SKILL_MINING, SKILL_MAX_LEVEL},
{SKILL_POLYMORPH, SKILL_MAX_LEVEL},
{SKILL_HORSE_SUMMON, 10}, // At çağırma skili max 10
{SKILL_HORSE, HORSE_MAX_LEVEL}, // At sürme skili max seviye
};
// At skilleri (Her karaktere uygun şekilde dağıtılmış)
std::unordered_map<uint8_t, uint8_t> horseSkillLevels = {
{SKILL_HORSE_WILDATTACK, 40},
{SKILL_HORSE_CHARGE, 40},
{SKILL_HORSE_ESCAPE, 40},
};
// Set Job Skill
SelectSkill_JobSkillIndex(skill_group);
// Set Common Skill
for (uint16_t i = 0; i < SKILL_MAX_NUM; ++i)
{
if (CanUseSkill(i))
{
if (commonSkillLevels.contains(i))
{
SetSkillLevel(i, commonSkillLevels.at(i));
}
else if (horseSkillLevels.contains(i))
{
SetSkillLevel(i, horseSkillLevels.at(i));
}
}
}
// Özel Assassin At Skili Ayarı
if (GetJob() == EJobs::JOB_ASSASSIN)
{
SetSkillLevel(ESkillIndexes::SKILL_HORSE_WILDATTACK_RANGE, 20); // Assassinler için özel
}
// Dil skilleri (Empire sistemine göre ayarlanmış)
switch (GetEmpire())
{
case EEmpire::SHINSOO_EMPIRE: // Empire 1 (Shinsoo)
SetSkillLevel(SKILL_LANGUAGE2, 40);
SetSkillLevel(SKILL_LANGUAGE3, 40);
break;
case EEmpire::CHUNJO_EMPIRE: // Empire 2 (Chunjo)
SetSkillLevel(SKILL_LANGUAGE1, 40);
SetSkillLevel(SKILL_LANGUAGE3, 40);
break;
case EEmpire::JINNO_EMPIRE: // Empire 3 (Jinno)
SetSkillLevel(SKILL_LANGUAGE1, 40);
SetSkillLevel(SKILL_LANGUAGE2, 40);
break;
default:
break;
}
// At seviyesini maksimuma ayarla
SetHorseLevel(HORSE_MAX_LEVEL);
ComputePoints();
SkillLevelPacket();
commonSkillLevels.clear();
horseSkillLevels.clear();
}