L2FolkInstance trainer = activeChar.getLastFolkNPC();
if ((trainer == null || !activeChar.isInsideRadius(trainer, L2NpcInstance.INTERACTION_DISTANCE, false, false)) && !activeChar.isGM())
return;
L2Skill skill = SkillTable.getInstance().getInfo(_id, _level);
boolean canteach = false;
if (skill == null)
{
if (Config.DEBUG)
_log.warning("skill id " + _id + " level " + _level
+ " is undefined. aquireSkillInfo failed.");
return;
}
if (_skillType == 0)
{
if (!trainer.getTemplate().canTeach(activeChar.getSkillLearningClassId()))
return; // cheater
L2SkillLearn[] skills = SkillTreeTable.getInstance().getAvailableSkills(activeChar, activeChar.getSkillLearningClassId());
for (L2SkillLearn s : skills)
{
if (s.getId() == _id && s.getLevel() == _level)
{
canteach = true;
break;
}
}
if (!canteach)
return; // cheater
int requiredSp = SkillTreeTable.getInstance().getSkillCost(activeChar, skill);
AquireSkillInfo asi = new AquireSkillInfo(skill.getId(), skill.getLevel(), requiredSp,0);
if (Config.SP_BOOK_NEEDED)
{
int spbId = SkillSpellbookTable.getInstance().getBookForSkill(skill);
if (skill.getLevel() == 1 && spbId > -1)
asi.addRequirement(99, spbId, 1, 50);
}
sendPacket(asi);
}
else if (_skillType == 2)
{
int requiredRep = 0;
int itemId = 0;
L2PledgeSkillLearn[] skills = SkillTreeTable.getInstance().getAvailablePledgeSkills(activeChar);
for (L2PledgeSkillLearn s : skills)
{
if (s.getId() == _id && s.getLevel() == _level)
{
canteach = true;
requiredRep = s.getRepCost();
itemId = s.getItemId();
break;
}
}
if (!canteach)
return; // cheater
AquireSkillInfo asi = new AquireSkillInfo(skill.getId(), skill.getLevel(), requiredRep,2);
if (Config.LIFE_CRYSTAL_NEEDED)
{
asi.addRequirement(1, itemId, 1, 0);
}
sendPacket(asi);
}
else // Common Skills
{
int costid = 0;
int costcount = 0;
int spcost = 0;
L2SkillLearn[] skillsc = SkillTreeTable.getInstance().getAvailableSkills(activeChar);
for (L2SkillLearn s : skillsc)
{
L2Skill sk = SkillTable.getInstance().getInfo(s.getId(), s.getLevel());
if (sk == null || sk != skill)
continue;
canteach = true;