From c58f57ad3fc3faff7f07acb265f2d273e99fe778 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 21 Jul 2022 09:05:06 +0000 Subject: [PATCH] Minor RequestAcquireSkill improvement and cleanup. --- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 9 +- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 176 ++++++++-------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- .../clientpackets/RequestAcquireSkill.java | 196 +++++++++--------- 23 files changed, 1461 insertions(+), 1578 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index c61015b069..2874f01354 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -641,13 +641,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 847dba8aba..80f5ec3ec3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -641,13 +641,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 847dba8aba..80f5ec3ec3 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -641,13 +641,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 847dba8aba..80f5ec3ec3 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -641,13 +641,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8e329ec039..9e0914fdeb 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -591,13 +591,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index dff4cb79d7..bf2f2494b4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -591,13 +591,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index dff4cb79d7..bf2f2494b4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -591,13 +591,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket { skillLearn.getRemoveSkills().forEach(skillId -> { - if (player.getSkillLevel(skillId) > 0) + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } + player.removeSkill(skillToRemove, true); } }); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index e868730165..3733359006 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -507,113 +507,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index cd8587f455..0e8fbf94fe 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -515,134 +515,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index cd8587f455..0e8fbf94fe 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -515,134 +515,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index c95761c56c..5930a73489 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -515,134 +515,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index c95761c56c..5930a73489 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -515,134 +515,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 978967ee23..c9c7fd0b17 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 978967ee23..c9c7fd0b17 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index db62efa5d8..2d352bae1a 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 4a1ca5917a..0f2f90a572 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 4a1ca5917a..0f2f90a572 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 37c36d66f2..370f9431ce 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -474,113 +474,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 978967ee23..c9c7fd0b17 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -555,113 +555,107 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + } + return false; + } + } + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + long reqItemCount = 0; + for (ItemHolder item : skillLearn.getRequiredItems()) + { + reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (reqItemCount < item.getCount()) + { + // Player doesn't have required item. + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); return false; } } - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + // If the player has all required items, they are consumed. + for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) - { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - } - return false; - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } - - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) - { - // Then checks that the player has all the items - long reqItemCount = 0; - for (ItemHolder item : skillLearn.getRequiredItems()) - { - reqItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (reqItemCount < item.getCount()) - { - // Player doesn't have required item. - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ITEMS_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - } - - // If the player has all required items, they are consumed. - for (ItemHolder itemIdCount : skillLearn.getRequiredItems()) - { - if (!player.destroyItemByItemId("SkillLearn", itemIdCount.getId(), itemIdCount.getCount(), trainer, true)) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + itemIdCount.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } - } - } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index bdb99ad32e..680304ff09 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -489,134 +489,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index bdb99ad32e..680304ff09 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -489,134 +489,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 92d3ac77b0..6f0728cf52 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -489,134 +489,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 92d3ac77b0..6f0728cf52 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -489,134 +489,128 @@ public class RequestAcquireSkill implements IClientIncomingPacket */ private boolean checkPlayerSkill(Player player, Npc trainer, SkillLearn skillLearn) { - if (skillLearn != null) + if ((skillLearn != null) && (skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) { - if ((skillLearn.getSkillId() == _id) && (skillLearn.getSkillLevel() == _level)) + // Hack check. + if (skillLearn.getGetLevel() > player.getLevel()) { - // Hack check. - if (skillLearn.getGetLevel() > player.getLevel()) + player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); + Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); + return false; + } + + if (skillLearn.getDualClassLevel() > 0) + { + final SubClassHolder playerDualClass = player.getDualClass(); + if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_SKILL_LEVEL_REQUIREMENTS); - Util.handleIllegalPlayerAction(player, player + ", level " + player.getLevel() + " is requesting skill Id: " + _id + " level " + _level + " without having minimum required level, " + skillLearn.getGetLevel() + "!", IllegalActionPunishmentType.NONE); return false; } - - if (skillLearn.getDualClassLevel() > 0) + } + + // First it checks that the skill require SP and the player has enough SP to learn it. + final long levelUpSp = skillLearn.getLevelUpSp(); + if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + { + player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); + showSkillList(trainer, player); + return false; + } + + if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) + { + return true; + } + + // Check for required skills. + if (!skillLearn.getPreReqSkills().isEmpty()) + { + for (SkillHolder skill : skillLearn.getPreReqSkills()) { - final SubClassHolder playerDualClass = player.getDualClass(); - if ((playerDualClass == null) || (playerDualClass.getLevel() < skillLearn.getDualClassLevel())) + if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) { + if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) + { + player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); + } + else + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + } return false; } } - - // First it checks that the skill require SP and the player has enough SP to learn it. - final long levelUpSp = skillLearn.getLevelUpSp(); - if ((levelUpSp > 0) && (levelUpSp > player.getSp())) + } + + // Check for required items. + if (!skillLearn.getRequiredItems().isEmpty()) + { + // Then checks that the player has all the items + int count = 0; + long playerItemCount = 0; + for (List items : skillLearn.getRequiredItems()) { - player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL); - showSkillList(trainer, player); - return false; - } - - if (!Config.DIVINE_SP_BOOK_NEEDED && (_id == CommonSkill.DIVINE_INSPIRATION.getId())) - { - return true; - } - - // Check for required skills. - if (!skillLearn.getPreReqSkills().isEmpty()) - { - for (SkillHolder skill : skillLearn.getPreReqSkills()) + count = 0; + SEARCH: for (ItemHolder item : items) { - if (player.getSkillLevel(skill.getSkillId()) < skill.getSkillLevel()) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if (playerItemCount >= item.getCount()) { - if (skill.getSkillId() == CommonSkill.ONYX_BEAST_TRANSFORMATION.getId()) - { - player.sendPacket(SystemMessageId.YOU_MUST_LEARN_THE_ONYX_BEAST_SKILL_BEFORE_YOU_CAN_LEARN_FURTHER_SKILLS); - } - else - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - } + break SEARCH; + } + + if (count == items.size()) + { + player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); + showSkillList(trainer, player); return false; } } } - // Check for required items. - if (!skillLearn.getRequiredItems().isEmpty()) + // If the player has all required items, they are consumed. + for (List items : skillLearn.getRequiredItems()) { - // Then checks that the player has all the items - int count = 0; - long playerItemCount = 0; - for (List items : skillLearn.getRequiredItems()) + count = 0; + SEARCH: for (ItemHolder item : items) { - count = 0; - SEARCH: for (ItemHolder item : items) + count++; + playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); + if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if (playerItemCount >= item.getCount()) - { - break SEARCH; - } - - if (count == items.size()) - { - player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS_TO_LEARN_THE_SKILL); - showSkillList(trainer, player); - return false; - } + break SEARCH; } - } - - // If the player has all required items, they are consumed. - for (List items : skillLearn.getRequiredItems()) - { - count = 0; - SEARCH: for (ItemHolder item : items) + + if (count == items.size()) { - count++; - playerItemCount = player.getInventory().getInventoryItemCount(item.getId(), -1); - if ((playerItemCount >= item.getCount()) && player.destroyItemByItemId("SkillLearn", item.getId(), item.getCount(), trainer, true)) - { - break SEARCH; - } - - if (count == items.size()) - { - Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); - } + Util.handleIllegalPlayerAction(player, "Somehow " + player + ", level " + player.getLevel() + " lose required item Id: " + item.getId() + " to learn skill while learning skill Id: " + _id + " level " + _level + "!", IllegalActionPunishmentType.NONE); } } } - - if (!skillLearn.getRemoveSkills().isEmpty()) - { - skillLearn.getRemoveSkills().forEach(skillId -> - { - if (player.getSkillLevel(skillId) > 0) - { - final Skill skillToRemove = player.getKnownSkill(skillId); - if (skillToRemove != null) - { - player.removeSkill(skillToRemove, true); - } - } - }); - } - - // If the player has SP and all required items then consume SP. - if (levelUpSp > 0) - { - player.setSp(player.getSp() - levelUpSp); - final UserInfo ui = new UserInfo(player); - ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); - player.sendPacket(ui); - } - return true; } + + if (!skillLearn.getRemoveSkills().isEmpty()) + { + skillLearn.getRemoveSkills().forEach(skillId -> + { + final Skill skillToRemove = player.getKnownSkill(skillId); + if (skillToRemove != null) + { + player.removeSkill(skillToRemove, true); + } + }); + } + + // If the player has SP and all required items then consume SP. + if (levelUpSp > 0) + { + player.setSp(player.getSp() - levelUpSp); + final UserInfo ui = new UserInfo(player); + ui.addComponentType(UserInfoType.CURRENT_HPMPCP_EXP_SP); + player.sendPacket(ui); + } + return true; } return false; }