public string GenerateSlInfo(SpecialistInstance inventoryItem, int type)
{
int freepoint = CharacterHelper.SPPoint(inventoryItem.SpLevel, inventoryItem.Upgrade) - inventoryItem.SlDamage - inventoryItem.SlHP - inventoryItem.SlElement - inventoryItem.SlDefence;
int slElement = CharacterHelper.SlPoint(inventoryItem.SlElement, 2);
int slHp = CharacterHelper.SlPoint(inventoryItem.SlHP, 3);
int slDefence = CharacterHelper.SlPoint(inventoryItem.SlDefence, 1);
int slHit = CharacterHelper.SlPoint(inventoryItem.SlDamage, 0);
string skill = String.Empty;
List<CharacterSkill> skillsSp = new List<CharacterSkill>();
foreach (Skill ski in ServerManager.GetAllSkill().Where(ski => ski.Class == inventoryItem.Item.Morph + 31 && ski.LevelMinimum <= inventoryItem.SpLevel))
{
skillsSp.Add(new CharacterSkill() { SkillVNum = ski.SkillVNum, CharacterId = CharacterId });
}
byte spdestroyed = 0;
if (inventoryItem.Rare == -2)
{
spdestroyed = 1;
}
if (!skillsSp.Any())
{
skill = "-1";
}
short firstskillvnum = skillsSp[0].SkillVNum;
for (int i = 1; i < 11; i++)
{
if (skillsSp.Count >= i + 1)
{
if (skillsSp[i].SkillVNum <= firstskillvnum + 10)
skill += $"{skillsSp[i].SkillVNum}.";
}
}
// 10 9 8 '0 0 0 0'<- bonusdamage bonusarmor bonuselement bonushpmp its after upgrade and
// 3 first values are not important
skill = skill.TrimEnd('.');
return $"slinfo {type} {inventoryItem.ItemVNum} {inventoryItem.Item.Morph} {inventoryItem.SpLevel} {inventoryItem.Item.LevelJobMinimum} {inventoryItem.Item.ReputationMinimum} 0 0 0 0 0 0 0 {inventoryItem.Item.SpType} {inventoryItem.Item.FireResistance} {inventoryItem.Item.WaterResistance} {inventoryItem.Item.LightResistance} {inventoryItem.Item.DarkResistance} {inventoryItem.XP} {CharacterHelper.SPXPData[inventoryItem.SpLevel - 1]} {skill} {inventoryItem.TransportId} {freepoint} {slHit} {slDefence} {slElement} {slHp} {inventoryItem.Upgrade} 0 0 {spdestroyed} 0 0 0 0 {inventoryItem.SpStoneUpgrade} {inventoryItem.SpDamage} {inventoryItem.SpDefence} {inventoryItem.SpElement} {inventoryItem.SpHP} {inventoryItem.SpFire} {inventoryItem.SpWater} {inventoryItem.SpLight} {inventoryItem.SpDark}";
}