diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 00ce2e0eac..a155c6bffc 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7370,23 +7370,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7539,8 +7536,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7563,20 +7558,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7599,8 +7580,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 1d6f507e2e..90cdbb091b 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7377,23 +7377,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7546,8 +7543,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7570,20 +7565,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7606,8 +7587,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 594e5da12e..8a121eafe8 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7379,23 +7379,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7548,8 +7545,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7572,20 +7567,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7608,8 +7589,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index e6adc8202a..62ea0cf7dd 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7374,23 +7374,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7543,8 +7540,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7567,20 +7562,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7603,8 +7584,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index d5c3f13c6f..5389548045 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7356,23 +7356,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7525,8 +7522,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7549,20 +7544,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7585,8 +7566,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index b78eb15f42..70af78d96d 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7356,23 +7356,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7525,8 +7522,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7549,20 +7544,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7585,8 +7566,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 8226509789..6de15a37d3 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7357,23 +7357,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7526,8 +7523,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7550,20 +7545,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7586,8 +7567,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index e263e2a9c3..1522817443 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7371,23 +7371,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7540,8 +7537,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7564,20 +7559,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7600,8 +7581,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index a9c477f7fb..c6ee2998f6 100644 --- a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7473,23 +7473,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7642,8 +7639,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7666,20 +7661,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7702,8 +7683,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } } diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index f6308fd98e..97fe2a2655 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7499,23 +7499,20 @@ public class PlayerInstance extends Playable if (store) { storeSkill(newSkill, oldSkill, -1); - if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId())) { final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - if (!dualClassSkills.contains(newSkill)) + for (Skill dualSkill : dualClassSkills) { - for (Skill dualSkill : dualClassSkills) + if (dualSkill.getId() == newSkill.getId()) { - if (dualSkill.getId() == newSkill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } + dualClassSkills.remove(dualSkill); + break; } - dualClassSkills.add(newSkill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); } + dualClassSkills.add(newSkill); + getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); + } } return oldSkill; @@ -7668,8 +7665,6 @@ public class PlayerInstance extends Playable */ private void restoreSkills() { - final List dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>()); - try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR)) { @@ -7692,20 +7687,6 @@ public class PlayerInstance extends Playable continue; } - if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill)) - { - for (Skill dualSkill : dualClassSkills) - { - if (dualSkill.getId() == skill.getId()) - { - dualClassSkills.remove(dualSkill); - break; - } - } - dualClassSkills.add(skill); - getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills); - } - // Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature addSkill(skill); @@ -7728,8 +7709,10 @@ public class PlayerInstance extends Playable // Learn known dualclass skills. if (isDualClassActive() || !isSubClassActive()) { + final List dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList())); for (Skill skill : dualClassSkills) { + removeSkill(skill); addSkill(skill, true); } }