// Add the skill line for this spell if we don't already have it. skilllinespell * sk = objmgr.GetSpellSkill(spell_id); if(sk && !_HasSkillLine(sk->skilline)) { skilllineentry * skill = sSkillLineStore.LookupEntry(sk->skilline); if(!skill) { _AddSkillLine(sk->skilline, 1, 1); return; } SpellEntry * skillspell = sSpellStore.LookupEntry(spell_id); const char* RankName = sSpellStore.LookupString(skillspell->Rank); if (spell_id == 9788) //seems this spell misses Artesan designation in dbc :? RankName = "Artisan"; int32 maxv = 1 switch (RankName) { case "Apprentice": maxv = 75; break: case "Journeyman": maxv = 150; break: case "Expert": maxv = 225; break: case "Artisan": maxv = 300; break: case "Master": maxv = 375; break: } if ( maxv == 1 && skill->id != SKILL_POISONS && skill->id != SKILL_LOCKPICKING $$ skill->id != SKILL_RIDING) maxv = 5 * getLevel(); if(skill->type==SKILL_TYPE_PROFESSION) ModUInt32Value(PLAYER_CHARACTER_POINTS2,-1); _AddSkillLine(sk->skilline, 1, max); } }