-Added getDualClassLevel() for skill learn packet and dual skill that learned if player have needed main & dual class level.

-Update AcquireSkillList packet.
-Added skill Dual Maximum Hp to skill tree for all awaken classes.
-Fixed a bug when changing class skills to learn stay from previous class until relogin.

Contributed by NviX.
This commit is contained in:
MobiusDev
2015-07-24 20:05:28 +00:00
parent 6d92b97a62
commit f483f9bec5
43 changed files with 201 additions and 17 deletions

View File

@ -623,7 +623,7 @@ public final class SkillTreesData implements IXmlReader
final Map<Integer, L2SkillLearn> skills = getCompleteClassSkillTree(classId);
for (L2SkillLearn skill : skills.values())
{
if ((skill.getSkillId() == CommonSkill.DIVINE_INSPIRATION.getId()) || skill.isAutoGet() || skill.isLearnedByFS() || (skill.getGetLevel() > player.getLevel()))
if ((skill.getSkillId() == CommonSkill.DIVINE_INSPIRATION.getId()) || skill.isAutoGet() || skill.isLearnedByFS() || (skill.getGetLevel() > player.getLevel()) || (skill.getDualClassLevel() > player.getDualClassLevel()))
{
continue;
}
@ -690,7 +690,7 @@ public final class SkillTreesData implements IXmlReader
continue;
}
if (player.getLevel() >= skill.getGetLevel())
if ((player.getLevel() >= skill.getGetLevel()) && (player.getDualClassLevel() >= skill.getDualClassLevel()))
{
final Skill oldSkill = holder.getKnownSkill(skill.getSkillId());
if (oldSkill != null)
@ -769,7 +769,7 @@ public final class SkillTreesData implements IXmlReader
final int maxLvl = SkillData.getInstance().getMaxLevel(skill.getSkillId());
final int hashCode = SkillData.getSkillHashCode(skill.getSkillId(), maxLvl);
if (skill.isAutoGet() && (player.getLevel() >= skill.getGetLevel()))
if (skill.isAutoGet() && ((player.getLevel() >= skill.getGetLevel()) && (player.getDualClassLevel() >= skill.getDualClassLevel())))
{
final Skill oldSkill = player.getKnownSkill(skill.getSkillId());
if (oldSkill != null)
@ -805,7 +805,7 @@ public final class SkillTreesData implements IXmlReader
continue;
}
if (skill.isLearnedByNpc() && (player.getLevel() >= skill.getGetLevel()))
if (skill.isLearnedByNpc() && ((player.getLevel() >= skill.getGetLevel()) && (player.getDualClassLevel() >= skill.getDualClassLevel())))
{
final Skill oldSkill = player.getSkills().get(skill.getSkillId());
if (oldSkill != null)
@ -858,7 +858,7 @@ public final class SkillTreesData implements IXmlReader
for (L2SkillLearn skill : _alchemySkillTree.values())
{
if (skill.isLearnedByNpc() && (player.getLevel() >= skill.getGetLevel()))
if (skill.isLearnedByNpc() && ((player.getLevel() >= skill.getGetLevel()) && (player.getDualClassLevel() >= skill.getDualClassLevel())))
{
final Skill oldSkill = player.getSkills().get(skill.getSkillId());
@ -941,7 +941,7 @@ public final class SkillTreesData implements IXmlReader
final Race race = player.getRace();
for (L2SkillLearn skill : _transformSkillTree.values())
{
if ((player.getLevel() >= skill.getGetLevel()) && (skill.getRaces().isEmpty() || skill.getRaces().contains(race)))
if (((player.getLevel() >= skill.getGetLevel()) && (player.getDualClassLevel() >= skill.getDualClassLevel())) && (skill.getRaces().isEmpty() || skill.getRaces().contains(race)))
{
final Skill oldSkill = player.getSkills().get(skill.getSkillId());
if (oldSkill != null)
@ -1342,9 +1342,9 @@ public final class SkillTreesData implements IXmlReader
{
for (L2SkillLearn s : skillTree.values())
{
if (player.getLevel() < s.getGetLevel())
if ((player.getLevel() < s.getGetLevel()) || (player.getDualClassLevel() < s.getDualClassLevel()))
{
if ((minLevel == 0) || (minLevel > s.getGetLevel()))
if ((minLevel == 0) || ((minLevel > s.getGetLevel()) && (minLevel > s.getDualClassLevel())))
{
minLevel = s.getGetLevel();
}
@ -1372,7 +1372,7 @@ public final class SkillTreesData implements IXmlReader
{
continue;
}
if (minLevelForNewSkill <= skill.getGetLevel())
if ((minLevelForNewSkill <= skill.getGetLevel()) && (minLevelForNewSkill <= skill.getDualClassLevel()))
{
final Skill oldSkill = player.getKnownSkill(skill.getSkillId());
if (oldSkill != null)