Addition of enchant_limit item value.

Contributed by CostyKiller.
This commit is contained in:
MobiusDevelopment 2020-12-03 16:08:35 +00:00
parent b140419920
commit 6130ef32b9
70 changed files with 260 additions and 58 deletions

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -19,13 +19,9 @@
</enchant>
<!-- Enchant Scroll: Blessed Bracelet -->
<enchant id="80838" maxEnchant="5">
<enchant id="80838" maxEnchant="10">
<item id="80835" />
<item id="80836" />
</enchant>
<!-- Enchant Scroll: Blessed Bracelet -->
<enchant id="80838" maxEnchant="10">
<item id="80837" />
</enchant>

View File

@ -455,6 +455,7 @@
<set name="immediate_effect" val="true" />
<set name="commissionItemType" val="BRACELET" />
<set name="enchant_enabled" val="1" />
<set name="enchant_limit" val="5" />
<skills>
<skill id="35524" level="1" /> <!-- Kaliel's Bracelet -->
<skill id="35524" level="2" type="ON_ENCHANT" type_value="1" /> <!-- Kaliel's Bracelet +1 -->
@ -471,8 +472,9 @@
<set name="is_sellable" val="false" />
<set name="bodypart" val="rbracelet" />
<set name="immediate_effect" val="true" />
<set name="commissionItemType" val="BRACELET" />
<set name="is_commissionable" val="false" />
<set name="enchant_enabled" val="1" />
<set name="enchant_limit" val="5" />
<skills>
<skill id="35525" level="1" /> <!-- Kaliel's Greater Bracelet -->
<skill id="35525" level="2" type="ON_ENCHANT" type_value="1" /> <!-- Kaliel's Greater Bracelet +1 -->

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -31,7 +31,7 @@
<enchant id="80838" maxEnchant="10">
<item id="80835" />
<item id="80836" />
<item id="80837" /> <!-- TODO: Only this +10 -->
<item id="80837" />
</enchant>
<!-- Blessed Scroll: Enchant Dragon Shirt -->

View File

@ -460,6 +460,7 @@
<set name="immediate_effect" val="true" />
<set name="commissionItemType" val="BRACELET" />
<set name="enchant_enabled" val="5" />
<set name="enchant_limit" val="5" />
<skills>
<skill id="35524" level="1" /> <!-- Kaliel's Bracelet -->
<skill id="35524" level="2" type="ON_ENCHANT" type_value="1" /> <!-- Kaliel's Bracelet -->
@ -478,6 +479,7 @@
<set name="immediate_effect" val="true" />
<set name="is_commissionable" val="false" />
<set name="enchant_enabled" val="5" />
<set name="enchant_limit" val="5" />
<skills>
<skill id="35525" level="1" /> <!-- Kaliel's Greater Bracelet -->
<skill id="35525" level="2" type="ON_ENCHANT" type_value="1" /> <!-- Kaliel's Greater Bracelet -->

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -71,6 +71,7 @@
<xs:enumeration value="duration" />
<xs:enumeration value="element_enabled" />
<xs:enumeration value="enchant_enabled" />
<xs:enumeration value="enchant_limit" />
<xs:enumeration value="enchant4_skill" />
<xs:enumeration value="enchanted" />
<xs:enumeration value="equip_condition" />

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());

View File

@ -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.
*/

View File

@ -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;
}

View File

@ -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());