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 @@ - - + 463 972 1458 1926
+ + + + +
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()) {