-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:
@ -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)
|
||||
|
@ -39,6 +39,7 @@ public final class L2SkillLearn
|
||||
private final int _skillId;
|
||||
private final int _skillLvl;
|
||||
private final int _getLevel;
|
||||
private final int _getDualClassLevel;
|
||||
private final boolean _autoGet;
|
||||
private final int _levelUpSp;
|
||||
private final List<ItemHolder> _requiredItems = new ArrayList<>();
|
||||
@ -61,6 +62,7 @@ public final class L2SkillLearn
|
||||
_skillId = set.getInt("skillId");
|
||||
_skillLvl = set.getInt("skillLvl");
|
||||
_getLevel = set.getInt("getLevel");
|
||||
_getDualClassLevel = set.getInt("getDualClassLevel", 0);
|
||||
_autoGet = set.getBoolean("autoGet", false);
|
||||
_levelUpSp = set.getInt("levelUpSp", 0);
|
||||
_residenceSkill = set.getBoolean("residenceSkill", false);
|
||||
@ -100,6 +102,14 @@ public final class L2SkillLearn
|
||||
return _getLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum dual class level required to acquire this skill.
|
||||
*/
|
||||
public int getDualClassLevel()
|
||||
{
|
||||
return _getDualClassLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the amount of SP/Clan Reputation to acquire this skill.
|
||||
*/
|
||||
|
@ -1204,6 +1204,24 @@ public final class L2PcInstance extends L2Playable
|
||||
return getStat().getLevel();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return dual class level
|
||||
**/
|
||||
public final int getDualClassLevel()
|
||||
{
|
||||
if (hasDualClass())
|
||||
{
|
||||
for (SubClass subClass : getSubClasses().values())
|
||||
{
|
||||
if (subClass.isDualClass())
|
||||
{
|
||||
return subClass.getLevel();
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLevelMod()
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ public class AcquireSkillList extends L2GameServerPacket
|
||||
writeH(skill.getSkillLevel());
|
||||
writeQ(skill.getLevelUpSp());
|
||||
writeC(skill.getGetLevel());
|
||||
writeC(0x00); // Dual Class Level Required
|
||||
writeC(skill.getDualClassLevel());
|
||||
writeC(skill.getRequiredItems().size());
|
||||
for (ItemHolder item : skill.getRequiredItems())
|
||||
{
|
||||
|
Reference in New Issue
Block a user