From 6130ef32b94a0cc02d9d7fd6be1eec83ef4307a8 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 3 Dec 2020 16:08:35 +0000 Subject: [PATCH] Addition of enchant_limit item value. Contributed by CostyKiller. --- L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- L2J_Mobius_3.0_Helios/dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- L2J_Mobius_5.0_Salvation/dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/EnchantItemData.xml | 6 +----- .../dist/game/data/stats/items/80800-80899.xml | 4 +++- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/EnchantItemData.xml | 2 +- .../dist/game/data/stats/items/80800-80899.xml | 2 ++ .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../dist/game/data/xsd/items.xsd | 1 + .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- .../org/l2jmobius/gameserver/model/items/Item.java | 11 +++++++++++ .../model/items/enchant/AbstractEnchantItem.java | 4 ++-- .../network/clientpackets/RequestEnchantItem.java | 2 +- 70 files changed, 260 insertions(+), 58 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/items.xsd b/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/items.xsd index be5f762c9f..fb24816202 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java index 6459f9d768..a5b5fa741d 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e7e28992ac..2673bee38c 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/xsd/items.xsd b/L2J_Mobius_2.5_Underground/dist/game/data/xsd/items.xsd index 95eb3c64ae..f3bfdc3cc8 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_2.5_Underground/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java index 6459f9d768..a5b5fa741d 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 5efbe1a603..f0cace76ce 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/xsd/items.xsd b/L2J_Mobius_3.0_Helios/dist/game/data/xsd/items.xsd index 95eb3c64ae..f3bfdc3cc8 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_3.0_Helios/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java index 6459f9d768..a5b5fa741d 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 448718720a..ba570c265f 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 5efbe1a603..f0cace76ce 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/items.xsd b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/items.xsd index 95eb3c64ae..f3bfdc3cc8 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java index a8b5ae54f1..3f1db930e3 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 5efbe1a603..f0cace76ce 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/items.xsd b/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/items.xsd index 1e89bcec9a..2aac0e0dff 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java index 2e601d1ce4..e3387ac537 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java @@ -141,6 +141,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -215,6 +216,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -617,6 +619,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 2f070a92a4..4211bdefc8 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/items.xsd b/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/items.xsd index ecd0e354a3..631f046d33 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java index 0888a264d0..2ac9a1e5a2 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -622,6 +624,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 2f070a92a4..4211bdefc8 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/items.xsd b/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/items.xsd index ecd0e354a3..631f046d33 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java index 0991a34565..f3a2c90720 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -623,6 +625,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 221b73c891..0820cef3bc 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/EnchantItemData.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/EnchantItemData.xml index 1b642c887e..eedfadf2d7 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/EnchantItemData.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/EnchantItemData.xml @@ -19,13 +19,9 @@ - + - - - - diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml index 07883cc9ba..25481b3f53 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml @@ -455,6 +455,7 @@ + @@ -471,8 +472,9 @@ - + + diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/items.xsd b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/items.xsd index 1011724ea9..5a793727b8 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java index 0991a34565..f3a2c90720 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -623,6 +625,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e8a4f7d6ff..511d19d217 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/EnchantItemData.xml b/L2J_Mobius_8.0_Homunculus/dist/game/data/EnchantItemData.xml index 23df0e58fb..3884e7c7d8 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/EnchantItemData.xml +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/EnchantItemData.xml @@ -31,7 +31,7 @@ - + diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/stats/items/80800-80899.xml b/L2J_Mobius_8.0_Homunculus/dist/game/data/stats/items/80800-80899.xml index f995f87006..0ec577d5d6 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/stats/items/80800-80899.xml +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/stats/items/80800-80899.xml @@ -460,6 +460,7 @@ + @@ -478,6 +479,7 @@ + diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java index 0991a34565..f3a2c90720 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -623,6 +625,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e8a4f7d6ff..511d19d217 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd index 487afe90e8..4663f1d0bc 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java index 9c51d11b3a..1dbdc3ab0c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e7e28992ac..2673bee38c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd index 487afe90e8..4663f1d0bc 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java index 9c51d11b3a..1dbdc3ab0c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e7e28992ac..2673bee38c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd index 487afe90e8..4663f1d0bc 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java index f0be6cc293..efac051bc6 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java @@ -141,6 +141,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -215,6 +216,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -617,6 +619,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 92ca7ff0e7..67fbe97164 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd index 7fdde48ccb..b1e0459900 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java index 1593354bba..1dcf025295 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -622,6 +624,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 92ca7ff0e7..67fbe97164 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd index 7fdde48ccb..b1e0459900 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java index 1593354bba..1dcf025295 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -622,6 +624,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e8a4f7d6ff..511d19d217 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd index 7fdde48ccb..b1e0459900 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java index 1593354bba..1dcf025295 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -622,6 +624,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index e8a4f7d6ff..511d19d217 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd index 487afe90e8..4663f1d0bc 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd @@ -71,6 +71,7 @@ + diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java index 6459f9d768..a5b5fa741d 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java @@ -140,6 +140,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -214,6 +215,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -616,6 +618,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 8592a7024d..5932eed22a 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -117,7 +117,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass()); diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java index 6899d6fb2b..99891d5bc2 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java @@ -143,6 +143,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _tradeable; private boolean _depositable; private int _enchantable; + private int _enchantLimit; private boolean _elementable; private boolean _questItem; private boolean _freightable; @@ -219,6 +220,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _elementable = set.getBoolean("element_enabled", false); _enchantable = set.getInt("enchant_enabled", 0); + _enchantLimit = set.getInt("enchant_limit", 0); _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); @@ -622,6 +624,15 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return Arrays.binarySearch(Config.ENCHANT_BLACKLIST, _itemId) < 0 ? _enchantable : 0; } + /** + * Returns the enchantment limit of the item + * @return int + */ + public int getEnchantLimit() + { + return _enchantLimit > 0 ? _enchantLimit : 0; + } + /** * @return {@code true} if the item can be elemented, {@code false} otherwise. */ diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java index 00a1abbca1..fa124a8d6e 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/enchant/AbstractEnchantItem.java @@ -142,7 +142,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (itemToEnchant.isEnchantable() == 0) + else if ((itemToEnchant.isEnchantable() == 0) || (!(itemToEnchant.getItem().getEnchantLimit() == 0) && (itemToEnchant.getEnchantLevel() == itemToEnchant.getItem().getEnchantLimit()))) { return false; } @@ -150,7 +150,7 @@ public abstract class AbstractEnchantItem { return false; } - else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) + else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) || ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))) { return false; } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 92816f60fd..49719db37d 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -119,7 +119,7 @@ public class RequestEnchantItem implements IClientIncomingPacket } // first validation check - also over enchant check - if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && (item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()))) + if (!scrollTemplate.isValid(item, supportTemplate) || (Config.DISABLE_OVER_ENCHANTING && ((item.getEnchantLevel() == scrollTemplate.getMaxEnchantLevel()) || (!(item.getItem().getEnchantLimit() == 0) && (item.getEnchantLevel() == item.getItem().getEnchantLimit()))))) { client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS); player.removeRequest(request.getClass());