From f483f9bec5b2930064957998b52ae68098301a73 Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Fri, 24 Jul 2015 20:05:28 +0000
Subject: [PATCH] -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.
---
.../handlers/effecthandlers/ClassChange.java | 5 +++--
.../skillTrees/4rthClass/AeoreCardinal.xml | 6 +++++-
.../skillTrees/4rthClass/AeoreEva'sSaint.xml | 4 ++++
.../4rthClass/AeoreShillienSaint.xml | 4 ++++
.../data/skillTrees/4rthClass/FeohArchmage.xml | 4 ++++
.../skillTrees/4rthClass/FeohMysticMuse.xml | 4 ++++
.../skillTrees/4rthClass/FeohSoulhound.xml | 4 ++++
.../skillTrees/4rthClass/FeohSoultaker.xml | 4 ++++
.../skillTrees/4rthClass/FeohStormScreamer.xml | 4 ++++
.../data/skillTrees/4rthClass/IssDominator.xml | 4 ++++
.../data/skillTrees/4rthClass/IssDoomcryer.xml | 4 ++++
.../skillTrees/4rthClass/IssHierophant.xml | 4 ++++
.../skillTrees/4rthClass/IssSpectralDancer.xml | 4 ++++
.../data/skillTrees/4rthClass/IssSwordMuse.xml | 4 ++++
.../skillTrees/4rthClass/OthellAdventurer.xml | 4 ++++
.../4rthClass/OthellFortuneSeeker.xml | 4 ++++
.../skillTrees/4rthClass/OthellGhostHunter.xml | 4 ++++
.../skillTrees/4rthClass/OthellWindRider.xml | 4 ++++
.../skillTrees/4rthClass/SigelEva'sTemplar.xml | 4 ++++
.../skillTrees/4rthClass/SigelHellKnight.xml | 4 ++++
.../4rthClass/SigelPhoenixKnight.xml | 4 ++++
.../4rthClass/SigelShillienTemplar.xml | 4 ++++
.../skillTrees/4rthClass/TyrrDoombringer.xml | 4 ++++
.../skillTrees/4rthClass/TyrrDreadnought.xml | 4 ++++
.../data/skillTrees/4rthClass/TyrrDuelist.xml | 4 ++++
.../4rthClass/TyrrGrandKhavatari.xml | 6 +++++-
.../data/skillTrees/4rthClass/TyrrMaestro.xml | 4 ++++
.../data/skillTrees/4rthClass/TyrrTitan.xml | 4 ++++
.../skillTrees/4rthClass/WynnArcanaLord.xml | 4 ++++
.../4rthClass/WynnElementalMaster.xml | 4 ++++
.../4rthClass/WynnSpectralMaster.xml | 4 ++++
.../skillTrees/4rthClass/YulGhostSentinel.xml | 4 ++++
.../4rthClass/YulMoonlightSentinel.xml | 4 ++++
.../skillTrees/4rthClass/YulSagittarius.xml | 4 ++++
.../data/skillTrees/4rthClass/YulTrickster.xml | 4 ++++
.../skillTrees/ErtheiaClass/Eviscerator.xml | 4 ++++
.../skillTrees/ErtheiaClass/Sayha'sSeer.xml | 5 ++++-
.../game/data/stats/skills/01900-01999.xml | 8 ++++++--
trunk/dist/game/data/xsd/skillTrees.xsd | 8 ++++++++
.../data/xml/impl/SkillTreesData.java | 18 +++++++++---------
.../gameserver/model/L2SkillLearn.java | 10 ++++++++++
.../model/actor/instance/L2PcInstance.java | 18 ++++++++++++++++++
.../serverpackets/AcquireSkillList.java | 2 +-
43 files changed, 201 insertions(+), 17 deletions(-)
diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java
index 463e8d3dec..f01aeec20f 100644
--- a/trunk/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java
+++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/ClassChange.java
@@ -28,6 +28,7 @@ import com.l2jserver.gameserver.model.effects.AbstractEffect;
import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.skills.Skill;
import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
import com.l2jserver.gameserver.network.serverpackets.ExSubjobInfo;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -80,10 +81,10 @@ public class ClassChange extends AbstractEffect
msg.addClassId(activeClass);
msg.addClassId(player.getClassId().getId());
player.sendPacket(msg);
-
player.broadcastUserInfo();
+ player.sendPacket(new AcquireSkillList(player));
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
- }, 1000);
+ } , 1000);
}
}
}
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
index 6284da932a..50e0dd388c 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreCardinal.xml
@@ -9,6 +9,7 @@
+
@@ -206,6 +207,7 @@
+
@@ -257,6 +259,7 @@
+
@@ -300,6 +303,7 @@
+
@@ -331,4 +335,4 @@
-
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
index eee685cf4b..1f6dc04431 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreEva'sSaint.xml
@@ -9,6 +9,7 @@
+
@@ -206,6 +207,7 @@
+
@@ -257,6 +259,7 @@
+
@@ -300,6 +303,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml b/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
index 18adf48280..0573cfef3a 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/AeoreShillienSaint.xml
@@ -9,6 +9,7 @@
+
@@ -207,6 +208,7 @@
+
@@ -258,6 +260,7 @@
+
@@ -301,6 +304,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
index a25fec3b82..fdf1c81380 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohArchmage.xml
@@ -9,6 +9,7 @@
+
@@ -217,6 +218,7 @@
+
@@ -263,6 +265,7 @@
+
@@ -306,6 +309,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
index ea831692b2..1444632c99 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohMysticMuse.xml
@@ -9,6 +9,7 @@
+
@@ -218,6 +219,7 @@
+
@@ -265,6 +267,7 @@
+
@@ -309,6 +312,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
index ed7dc4f617..a5b4a21319 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoulhound.xml
@@ -9,6 +9,7 @@
+
@@ -218,6 +219,7 @@
+
@@ -265,6 +267,7 @@
+
@@ -310,6 +313,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
index 0a6659c7bb..493f4cdac8 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohSoultaker.xml
@@ -9,6 +9,7 @@
+
@@ -219,6 +220,7 @@
+
@@ -268,6 +270,7 @@
+
@@ -314,6 +317,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml b/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
index f8431ebb4c..abca654b21 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/FeohStormScreamer.xml
@@ -9,6 +9,7 @@
+
@@ -217,6 +218,7 @@
+
@@ -263,6 +265,7 @@
+
@@ -306,6 +309,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
index 54772185e6..53157fbc38 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssDominator.xml
@@ -9,6 +9,7 @@
+
@@ -258,6 +259,7 @@
+
@@ -297,6 +299,7 @@
+
@@ -335,6 +338,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
index e797b30110..aea18f70a3 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssDoomcryer.xml
@@ -9,6 +9,7 @@
+
@@ -316,6 +317,7 @@
+
@@ -352,6 +354,7 @@
+
@@ -387,6 +390,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
index fdb2f41d5a..a0eaefa004 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssHierophant.xml
@@ -9,6 +9,7 @@
+
@@ -177,6 +178,7 @@
+
@@ -214,6 +216,7 @@
+
@@ -248,6 +251,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
index 99dba8fe90..93b489b9be 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssSpectralDancer.xml
@@ -9,6 +9,7 @@
+
@@ -298,6 +299,7 @@
+
@@ -335,6 +337,7 @@
+
@@ -371,6 +374,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml b/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
index 180a4cca0e..ba2a023001 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/IssSwordMuse.xml
@@ -9,6 +9,7 @@
+
@@ -297,6 +298,7 @@
+
@@ -334,6 +336,7 @@
+
@@ -370,6 +373,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
index 14828a1a74..b165cfa141 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellAdventurer.xml
@@ -9,6 +9,7 @@
+
@@ -155,6 +156,7 @@
+
@@ -204,6 +206,7 @@
+
@@ -240,6 +243,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellFortuneSeeker.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellFortuneSeeker.xml
index 69d599610a..5e23294bca 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellFortuneSeeker.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellFortuneSeeker.xml
@@ -9,6 +9,7 @@
+
@@ -153,6 +154,7 @@
+
@@ -203,6 +205,7 @@
+
@@ -240,6 +243,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
index 1ca8947646..cbfb94fbee 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellGhostHunter.xml
@@ -9,6 +9,7 @@
+
@@ -154,6 +155,7 @@
+
@@ -204,6 +206,7 @@
+
@@ -241,6 +244,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml b/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
index d869988160..7977131bd7 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/OthellWindRider.xml
@@ -9,6 +9,7 @@
+
@@ -155,6 +156,7 @@
+
@@ -205,6 +207,7 @@
+
@@ -242,6 +245,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
index 96d800ddb3..85f7d46b05 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelEva'sTemplar.xml
@@ -9,6 +9,7 @@
+
@@ -153,6 +154,7 @@
+
@@ -195,6 +197,7 @@
+
@@ -232,6 +235,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
index 584bec8353..d34e6911d2 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelHellKnight.xml
@@ -9,6 +9,7 @@
+
@@ -151,6 +152,7 @@
+
@@ -191,6 +193,7 @@
+
@@ -227,6 +230,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
index 93dbe7bac6..b767cd9e76 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelPhoenixKnight.xml
@@ -9,6 +9,7 @@
+
@@ -152,6 +153,7 @@
+
@@ -193,6 +195,7 @@
+
@@ -231,6 +234,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml b/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
index cc593741cd..bccdb9d10a 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/SigelShillienTemplar.xml
@@ -9,6 +9,7 @@
+
@@ -154,6 +155,7 @@
+
@@ -196,6 +198,7 @@
+
@@ -235,6 +238,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
index 14721a01eb..0cf3b3336a 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDoombringer.xml
@@ -9,6 +9,7 @@
+
@@ -186,6 +187,7 @@
+
@@ -235,6 +237,7 @@
+
@@ -272,6 +275,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
index cb1020f6b3..1e44687871 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDreadnought.xml
@@ -9,6 +9,7 @@
+
@@ -185,6 +186,7 @@
+
@@ -234,6 +236,7 @@
+
@@ -269,6 +272,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
index 8d5f1a7c41..f001adc349 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrDuelist.xml
@@ -9,6 +9,7 @@
+
@@ -174,6 +175,7 @@
+
@@ -223,6 +225,7 @@
+
@@ -258,6 +261,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
index daf8518b33..2eae36190e 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrGrandKhavatari.xml
@@ -8,7 +8,8 @@
-
+
+
@@ -175,6 +176,7 @@
+
@@ -220,6 +222,7 @@
+
@@ -252,6 +255,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrMaestro.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrMaestro.xml
index 8d712b2781..b39fc46423 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrMaestro.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrMaestro.xml
@@ -9,6 +9,7 @@
+
@@ -188,6 +189,7 @@
+
@@ -238,6 +240,7 @@
+
@@ -272,6 +275,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml b/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
index f056bba2ba..40b491c494 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/TyrrTitan.xml
@@ -9,6 +9,7 @@
+
@@ -176,6 +177,7 @@
+
@@ -225,6 +227,7 @@
+
@@ -259,6 +262,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
index 3909f85df1..73a9f6b580 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnArcanaLord.xml
@@ -9,6 +9,7 @@
+
@@ -151,6 +152,7 @@
+
@@ -200,6 +202,7 @@
+
@@ -245,6 +248,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
index 6d1927c9c0..c0d8f9e556 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnElementalMaster.xml
@@ -9,6 +9,7 @@
+
@@ -151,6 +152,7 @@
+
@@ -200,6 +202,7 @@
+
@@ -245,6 +248,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml b/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
index d5f2da38d6..e027a57776 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/WynnSpectralMaster.xml
@@ -9,6 +9,7 @@
+
@@ -151,6 +152,7 @@
+
@@ -200,6 +202,7 @@
+
@@ -245,6 +248,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
index b07f5eaf5c..db4d649b14 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulGhostSentinel.xml
@@ -9,6 +9,7 @@
+
@@ -163,6 +164,7 @@
+
@@ -202,6 +204,7 @@
+
@@ -237,6 +240,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
index 6273eeada9..5d74e64253 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulMoonlightSentinel.xml
@@ -9,6 +9,7 @@
+
@@ -163,6 +164,7 @@
+
@@ -202,6 +204,7 @@
+
@@ -237,6 +240,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
index e989db1c00..c0fcad65cb 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulSagittarius.xml
@@ -9,6 +9,7 @@
+
@@ -163,6 +164,7 @@
+
@@ -202,6 +204,7 @@
+
@@ -237,6 +240,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml b/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
index fe625b7a57..eaf59fbaad 100644
--- a/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
+++ b/trunk/dist/game/data/skillTrees/4rthClass/YulTrickster.xml
@@ -9,6 +9,7 @@
+
@@ -163,6 +164,7 @@
+
@@ -202,6 +204,7 @@
+
@@ -237,6 +240,7 @@
+
diff --git a/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml b/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
index 4922d4c141..2df0fe73e8 100644
--- a/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
+++ b/trunk/dist/game/data/skillTrees/ErtheiaClass/Eviscerator.xml
@@ -9,6 +9,10 @@
+
+
+
+
diff --git a/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml b/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
index be29594143..c143ceb11c 100644
--- a/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
+++ b/trunk/dist/game/data/skillTrees/ErtheiaClass/Sayha'sSeer.xml
@@ -9,8 +9,11 @@
+
+
+
+
-
diff --git a/trunk/dist/game/data/stats/skills/01900-01999.xml b/trunk/dist/game/data/stats/skills/01900-01999.xml
index 2c7e96e494..888b6b59ac 100644
--- a/trunk/dist/game/data/stats/skills/01900-01999.xml
+++ b/trunk/dist/game/data/stats/skills/01900-01999.xml
@@ -1058,11 +1058,15 @@
-
-
+
+
+
+
+
+
diff --git a/trunk/dist/game/data/xsd/skillTrees.xsd b/trunk/dist/game/data/xsd/skillTrees.xsd
index 35960bc279..f42eb91384 100644
--- a/trunk/dist/game/data/xsd/skillTrees.xsd
+++ b/trunk/dist/game/data/xsd/skillTrees.xsd
@@ -97,6 +97,14 @@
+
+
+
+
+
+
+
+
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 b15c1747c9..31532a5383 100644
--- a/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
+++ b/trunk/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
@@ -623,7 +623,7 @@ public final class SkillTreesData implements IXmlReader
final Map 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)
diff --git a/trunk/java/com/l2jserver/gameserver/model/L2SkillLearn.java b/trunk/java/com/l2jserver/gameserver/model/L2SkillLearn.java
index 52dabe1700..efb4f98f61 100644
--- a/trunk/java/com/l2jserver/gameserver/model/L2SkillLearn.java
+++ b/trunk/java/com/l2jserver/gameserver/model/L2SkillLearn.java
@@ -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 _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.
*/
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 bc6099f56f..27d1a7768d 100644
--- a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
+++ b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
@@ -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()
{
diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
index 565bae414f..d5468e4b14 100644
--- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
+++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/AcquireSkillList.java
@@ -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())
{