From c4988df6a037b71dc683df87d3ef334c33216f45 Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Tue, 10 Nov 2015 08:52:13 +0000
Subject: [PATCH] Auto remove, skilltree and AcquireSkillList fixes.
Contributed by rocknowx.
---
.../admincommandhandlers/AdminEditChar.java | 3 +-
.../skillTrees/4rthClass/AeoreCardinal.xml | 1 -
.../skillTrees/4rthClass/AeoreEva'sSaint.xml | 1 -
.../4rthClass/AeoreShillienSaint.xml | 1 -
.../skillTrees/4rthClass/FeohArchmage.xml | 1 -
.../skillTrees/4rthClass/FeohMysticMuse.xml | 1 -
.../skillTrees/4rthClass/FeohSoulhound.xml | 1 -
.../skillTrees/4rthClass/FeohSoultaker.xml | 1 -
.../4rthClass/FeohStormScreamer.xml | 1 -
.../skillTrees/4rthClass/IssDominator.xml | 1 -
.../skillTrees/4rthClass/IssDoomcryer.xml | 1 -
.../skillTrees/4rthClass/IssHierophant.xml | 1 -
.../4rthClass/IssSpectralDancer.xml | 1 -
.../skillTrees/4rthClass/IssSwordMuse.xml | 1 -
.../skillTrees/4rthClass/OthellAdventurer.xml | 1 -
.../4rthClass/OthellGhostHunter.xml | 1 -
.../skillTrees/4rthClass/OthellWindRider.xml | 1 -
.../4rthClass/SigelEva'sTemplar.xml | 1 -
.../skillTrees/4rthClass/SigelHellKnight.xml | 1 -
.../4rthClass/SigelPhoenixKnight.xml | 1 -
.../4rthClass/SigelShillienTemplar.xml | 1 -
.../skillTrees/4rthClass/TyrrDoombringer.xml | 1 -
.../skillTrees/4rthClass/TyrrDreadnought.xml | 1 -
.../data/skillTrees/4rthClass/TyrrDuelist.xml | 1 -
.../4rthClass/TyrrGrandKhavatari.xml | 1 -
.../data/skillTrees/4rthClass/TyrrTitan.xml | 1 -
.../skillTrees/4rthClass/WynnArcanaLord.xml | 1 -
.../4rthClass/WynnElementalMaster.xml | 1 -
.../4rthClass/WynnSpectralMaster.xml | 1 -
.../skillTrees/4rthClass/YulGhostSentinel.xml | 1 -
.../4rthClass/YulMoonlightSentinel.xml | 1 -
.../skillTrees/4rthClass/YulSagittarius.xml | 1 -
.../skillTrees/4rthClass/YulTrickster.xml | 1 -
.../skillTrees/ErtheiaClass/Eviscerator.xml | 3 +
.../skillTrees/ErtheiaClass/Sayha'sSeer.xml | 3 +
.../game/data/skillTrees/raceSkillTree.xml | 5 --
.../data/xml/impl/SkillTreesData.java | 68 ++++++++++++++++++-
.../model/actor/instance/L2PcInstance.java | 2 +-
.../serverpackets/AcquireSkillList.java | 3 +-
39 files changed, 76 insertions(+), 43 deletions(-)
diff --git a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
index d36e3c3b67..8cfd11efe8 100644
--- a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
+++ b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
@@ -356,6 +356,7 @@ public class AdminEditChar implements IAdminCommandHandler
final L2PcInstance player = target.getActingPlayer();
if ((ClassId.getClassId(classidval) != null) && (player.getClassId().getId() != classidval))
{
+ final boolean wasAwaken = player.isAwaken();
player.setClassId(classidval);
if (player.isSubClassActive())
@@ -377,7 +378,7 @@ public class AdminEditChar implements IAdminCommandHandler
player.storeMe();
player.sendMessage("A GM changed your class to " + newclass + ".");
player.broadcastUserInfo();
- if (player.isAwaken())
+ if (!wasAwaken && player.isAwaken())
{
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
}
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
index 135c6b1308..6cf979c00a 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
@@ -13,7 +13,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
index 734d1021d7..0fb614767d 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
index d9c6f686cd..fead307baa 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
index 1222f8381d..ba0b0c6de3 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
@@ -16,7 +16,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
index cd7b0d83c2..791ad41584 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
@@ -33,7 +33,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
index 8e2bd94b66..808446feab 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
@@ -30,7 +30,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
index 8e9282ce74..41c2ce6346 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
@@ -26,7 +26,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
index 58e1ce3e1d..4c523fc06d 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
@@ -31,7 +31,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
index 6a77fc1db7..6cd8585833 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
index c1e1836a87..b9384584d3 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
index d886ab0d80..6fd8619ade 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
index 5918de69b6..1dc39c1783 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
index e9ebfcb9c8..8b8e912d87 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
index 95f0f1cd08..b1c1e6e484 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
index f8b65baee4..4bad7f69f8 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
index 8c894ec572..b163ec2094 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
@@ -11,7 +11,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
index 0db99ed5ec..1321a2d926 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
index e6ce148301..89f59d3222 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
index 5160e95ce8..8a263aff60 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
index 044a44119e..efc9041be3 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
index d8c6d3bf99..a8427ec49e 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
@@ -13,7 +13,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
index 6c27c3d0d7..d3b1734ddc 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
index b7934b2dce..d345411d1f 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
index 930f6a0adb..57cd7712cb 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
@@ -12,7 +12,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
index 7fd1a65f98..b005567d0c 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
@@ -13,7 +13,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
index 56c6582d66..d684cf9c91 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
index 2a76a11bc0..f0cc49b618 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
index 4761d5b811..f984e85820 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
index d41030154b..315ab1a51f 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
index 1511982e41..5b6b8d31a1 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
index 7c46465ee7..3d595c2553 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
@@ -17,7 +17,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
index 6ffcc7e4b8..3526e4a78f 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
@@ -16,7 +16,6 @@
-
diff --git a/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml b/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
index 0764095c31..c761ea50cc 100644
--- a/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
+++ b/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
@@ -3,6 +3,9 @@
+
+
+
diff --git a/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml b/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
index 5e1bb49c86..f3698d48a0 100644
--- a/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
+++ b/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
@@ -3,6 +3,9 @@
+
+
+
diff --git a/trunk/dist/game/data/skillTrees/raceSkillTree.xml b/trunk/dist/game/data/skillTrees/raceSkillTree.xml
index a712131107..16ceacc9f0 100644
--- a/trunk/dist/game/data/skillTrees/raceSkillTree.xml
+++ b/trunk/dist/game/data/skillTrees/raceSkillTree.xml
@@ -26,9 +26,4 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java b/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
index e5f1d02a0f..86eed294ea 100644
--- a/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
+++ b/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
@@ -653,6 +653,11 @@ public final class SkillTreesData implements IXmlReader
return getAvailableSkills(player, classId, includeByFs, includeAutoGet, player);
}
+ public List getAvailableSkillsList(L2PcInstance player, ClassId classId, boolean includeByFs, boolean includeAutoGet)
+ {
+ return getAvailableSkillsList(player, classId, includeByFs, includeAutoGet, player);
+ }
+
/**
* Gets the available skills.
* @param player the learning skill player
@@ -715,6 +720,56 @@ public final class SkillTreesData implements IXmlReader
return result;
}
+ private List getAvailableSkillsList(L2PcInstance player, ClassId classId, boolean includeByFs, boolean includeAutoGet, ISkillsHolder holder)
+ {
+ final List result = new LinkedList<>();
+ final Map skills = getCompleteClassSkillTree(classId);
+
+ if (skills.isEmpty())
+ {
+ // The Skill Tree for this class is undefined.
+ LOGGER.warning(getClass().getSimpleName() + ": Skilltree for class " + classId + " is not defined!");
+ return result;
+ }
+
+ final boolean isAwaken = player.isInCategory(CategoryType.AWAKEN_GROUP);
+
+ for (Entry entry : skills.entrySet())
+ {
+ final L2SkillLearn skill = entry.getValue();
+
+ // Skill level doesn't exist.
+ if (SkillData.getInstance().getMaxLevel(skill.getSkillId()) < skill.getSkillLevel())
+ {
+ continue;
+ }
+
+ if (((skill.getSkillId() == CommonSkill.DIVINE_INSPIRATION.getId()) && (!Config.AUTO_LEARN_DIVINE_INSPIRATION && includeAutoGet) && !player.isGM()) || (!includeAutoGet && skill.isAutoGet()) || (!includeByFs && skill.isLearnedByFS()) || isRemoveSkill(classId, skill.getSkillId()))
+ {
+ continue;
+ }
+
+ if (isAwaken && !isCurrentClassSkillNoParent(classId, entry.getKey()))
+ {
+ continue;
+ }
+
+ final Skill oldSkill = holder.getKnownSkill(skill.getSkillId());
+ if (oldSkill != null)
+ {
+ if (oldSkill.getLevel() == (skill.getSkillLevel() - 1))
+ {
+ result.add(skill);
+ }
+ }
+ else if (skill.getSkillLevel() == 1)
+ {
+ result.add(skill);
+ }
+ }
+ return result;
+ }
+
public Collection getAllAvailableSkills(L2PcInstance player, ClassId classId, boolean includeByFs, boolean includeAutoGet)
{
// Get available skills
@@ -1463,11 +1518,20 @@ public final class SkillTreesData implements IXmlReader
for (Skill skill : player.getAllSkills())
{
final int maxLvl = SkillData.getInstance().getMaxLevel(skill.getId());
+ final int Lvl_cur = skill.getLevel();
final int hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl);
+ final int hash_cur = SkillData.getSkillHashCode(skill.getId(), Lvl_cur); // must in parent class
+ final int hash_curx = SkillData.getSkillHashCode(skill.getId(), Lvl_cur + 1); // some skill not update maxlvl in stats
- if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()))
+ final int _classlv = player.getClassId().level();
+ ClassId _classId = player.getClassId();
+ for (int i = 0; i < _classlv; i++)
{
- player.removeSkill(skill, true, true);
+ _classId = _classId.getParent();
+ if (isCurrentClassSkillNoParent(_classId, hash_cur) && (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isCurrentClassSkillNoParent(player.getClassId(), hash_curx)) && !isRemoveSkill(player.getClassId(), skill.getId()))
+ {
+ player.removeSkill(skill, true, true);
+ }
}
}
}
diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
index 3189dab022..326fc66ee7 100644
--- a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
+++ b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
@@ -2657,7 +2657,7 @@ public final class L2PcInstance extends L2Playable
// Remove skills if required.
for (Skill sk : getSkills().values())
{
- final L2SkillLearn s = SkillTreesData.getInstance().getSkillLearn(sk.getId(), sk.getLevel(), this);
+ final L2SkillLearn s = SkillTreesData.getInstance().getSkillLearn(sk.getId(), 1, this);
if ((s != null) && !s.getRemoveSkills().isEmpty())
{
s.getRemoveSkills().forEach(skillId ->
diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
index 0fad517dde..c36cebf349 100644
--- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
+++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
@@ -40,8 +40,7 @@ public class AcquireSkillList extends L2GameServerPacket
public AcquireSkillList(L2PcInstance activeChar)
{
_activeChar = activeChar;
- _learnable = SkillTreesData.getInstance().getAvailableSkills(activeChar, activeChar.getClassId(), false, false);
- _learnable.addAll(SkillTreesData.getInstance().getNextAvailableSkills(activeChar, activeChar.getClassId(), false, false));
+ _learnable = SkillTreesData.getInstance().getAvailableSkillsList(activeChar, activeChar.getClassId(), false, false);
}
@Override