From 9a21ad51d7b3675ba133229f269ba2f811b20b42 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 13 Mar 2022 10:12:46 +0000 Subject: [PATCH] Fixed AcquireSkillList related inconsistencies. --- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 12 +++++++----- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- .../l2jmobius/gameserver/data/xml/SkillTreeData.java | 4 ++-- .../network/serverpackets/AcquireSkillList.java | 6 ++++-- 46 files changed, 141 insertions(+), 95 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 175d86bda8..886173cf8a 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -63,18 +63,20 @@ public class AcquireSkillList implements IClientOutgoingPacket packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } - final Collection skillRem = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); - packet.writeC(skillRem.size()); - for (Skill skillRemove : skillRem) + + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); + packet.writeC(removeSkills.size()); + for (Skill removed : removeSkills) { - packet.writeD(skillRemove.getId()); - packet.writeH(skillRemove.getLevel()); + packet.writeD(removed.getId()); + packet.writeH(removed.getLevel()); } } return true; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index fe12488d18..c82f92b79e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index fe12488d18..c82f92b79e 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index fe12488d18..c82f92b79e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 844956b52b..30caa82356 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index d4d98581fb..ae03887751 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -681,7 +681,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1491,7 +1491,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 844956b52b..30caa82356 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 56f1fb2b93..0a9e42df98 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -683,7 +683,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1494,7 +1494,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index ea54a2c64f..7b6edead9e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index ca39c87f1d..cfd84cbe2d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -683,7 +683,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1494,7 +1494,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index ea54a2c64f..7b6edead9e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 0378e5b3b7..e4810a22e7 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -689,7 +689,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1500,7 +1500,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 1e3915c663..3a33544fbd 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 0378e5b3b7..e4810a22e7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -689,7 +689,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1500,7 +1500,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 1e3915c663..3a33544fbd 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 0378e5b3b7..e4810a22e7 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -689,7 +689,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1500,7 +1500,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 1e3915c663..3a33544fbd 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 0378e5b3b7..e4810a22e7 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -689,7 +689,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1500,7 +1500,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeByFp, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index 1e3915c663..3a33544fbd 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeD(skill.getSkillLevel()); + packet.writeD(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(skill.getDualClassLevel()); packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeD(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index a30026c58a..0ac87f94b9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index a30026c58a..0ac87f94b9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index d58cbca67e..f4170b6927 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index d58cbca67e..f4170b6927 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index d58cbca67e..f4170b6927 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index aacac70793..31807c7155 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index d58cbca67e..f4170b6927 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,23 +59,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 45adbcec26..cd480f33b0 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -680,7 +680,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1456,7 +1456,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index a30026c58a..0ac87f94b9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -59,22 +59,24 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Classic writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. + packet.writeC(skill.getRequiredItems().size()); for (ItemHolder item : skill.getRequiredItems()) { packet.writeD(item.getId()); packet.writeQ(item.getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Classic writeH. } } return true; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 24fdea8ed9..2a1d6b29c9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -686,7 +686,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1462,7 +1462,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index e0083c7368..45dabbde1a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 24fdea8ed9..2a1d6b29c9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -686,7 +686,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1462,7 +1462,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index e0083c7368..45dabbde1a 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 24fdea8ed9..2a1d6b29c9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -686,7 +686,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1462,7 +1462,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index e0083c7368..45dabbde1a 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Essence writeH. } } return true; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 24fdea8ed9..2a1d6b29c9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -686,7 +686,7 @@ public class SkillTreeData implements IXmlReader */ private Collection getAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet, boolean includeRequiredItems, ISkillsHolder holder) { - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); final Map skills = getCompleteClassSkillTree(classId); if (skills.isEmpty()) { @@ -1462,7 +1462,7 @@ public class SkillTreeData implements IXmlReader public Collection getNextAvailableSkills(Player player, ClassId classId, boolean includeByFs, boolean includeAutoGet) { final Map completeClassSkillTree = getCompleteClassSkillTree(classId); - final Set result = ConcurrentHashMap.newKeySet(); + final Set result = new HashSet<>(); if (completeClassSkillTree.isEmpty()) { return result; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java index e0083c7368..45dabbde1a 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/AcquireSkillList.java @@ -60,23 +60,25 @@ public class AcquireSkillList implements IClientOutgoingPacket for (SkillLearn skill : _learnable) { packet.writeD(skill.getSkillId()); - packet.writeH(skill.getSkillLevel()); + packet.writeH(skill.getSkillLevel()); // Main writeD, Essence writeH. packet.writeQ(skill.getLevelUpSp()); packet.writeC(skill.getGetLevel()); packet.writeC(0); // Skill dual class level. packet.writeC(_player.getKnownSkill(skill.getSkillId()) != null ? 0 : 1); + packet.writeC(skill.getRequiredItems().size()); for (List item : skill.getRequiredItems()) { packet.writeD(item.get(0).getId()); packet.writeQ(item.get(0).getCount()); } + final Collection removeSkills = skill.getRemoveSkills().stream().map(_player::getKnownSkill).filter(Objects::nonNull).collect(Collectors.toList()); packet.writeC(removeSkills.size()); for (Skill removed : removeSkills) { packet.writeD(removed.getId()); - packet.writeD(removed.getLevel()); + packet.writeH(removed.getLevel()); // Main writeD, Essence writeH. } } return true;