diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/skillTrees.xsd index 8978dca1ea..4199a77a4f 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_2.5_Underground/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_2.5_Underground/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_3.0_Helios/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_3.0_Helios/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/skillTrees.xsd index 6c822603ed..3c97ba7277 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/skillTrees.xsd index 6c822603ed..3c97ba7277 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/skillTrees.xsd index 6c822603ed..3c97ba7277 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 9d1cc99f37..8129ca011b 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/skillTrees.xsd index 11a327509a..5e33ebeb22 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/skillTrees.xsd @@ -31,6 +31,7 @@ + diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 58f37dc4da..6193a64534 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/skillTrees.xsd index 11a327509a..5e33ebeb22 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/skillTrees.xsd @@ -31,6 +31,7 @@ + diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index ab37abe2a1..1ce1c1d3f0 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/skillTrees.xsd index 11a327509a..5e33ebeb22 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/xsd/skillTrees.xsd @@ -31,6 +31,7 @@ + diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index ab37abe2a1..1ce1c1d3f0 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/skillTrees.xsd index c5d4e0e7af..573397bd90 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 85b9768c26..9fe122caaa 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -270,7 +270,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skillTrees.xsd index 5b2c6792d7..fef3567aba 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 5c7dce8c0b..db1a593951 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -271,7 +271,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/skillTrees.xsd index c5d4e0e7af..573397bd90 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 85b9768c26..9fe122caaa 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -270,7 +270,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } } diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/skillTrees.xsd b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/skillTrees.xsd index c5d4e0e7af..573397bd90 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/skillTrees.xsd +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/skillTrees.xsd @@ -32,6 +32,7 @@ + diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java index 85b9768c26..9fe122caaa 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/SkillTreeData.java @@ -270,7 +270,10 @@ public class SkillTreeData implements IXmlReader { final int removeSkillId = parseInteger(attrs, "id"); skillLearn.addRemoveSkills(removeSkillId); - _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + if (!parseBoolean(attrs, "onlyReplaceByLearn", false)) + { + _removeSkillCache.computeIfAbsent(classId, k -> new HashSet<>()).add(removeSkillId); + } break; } }