public void LearnSPSkill()
{
SpecialistInstance specialist = null;
if (Inventory != null)
{
specialist = Inventory.LoadBySlotAndType<SpecialistInstance>((byte)EquipmentType.Sp, InventoryType.Wear);
}
byte SkillSpCount = (byte)SkillsSp.Count;
SkillsSp = new ThreadSafeSortedList<int, CharacterSkill>();
foreach (Skill ski in ServerManager.GetAllSkill())
{
if (specialist != null && ski.Class == Morph + 31 && specialist.SpLevel >= ski.LevelMinimum)
{
SkillsSp[ski.SkillVNum] = new CharacterSkill { SkillVNum = ski.SkillVNum, CharacterId = CharacterId };
}
}
if (SkillsSp.Count != SkillSpCount)
{
Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("SKILL_LEARNED"), 0));
Session.SendPacket(GenerateSki());
Session.SendPackets(GenerateQuicklist());
}
}