Fix for minimum enchant value not used and support for blessed down by one enchant.
Contributed by CostyKiller.
This commit is contained in:
@ -39,6 +39,7 @@ public abstract class AbstractEnchantItem
|
||||
EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_AM,
|
||||
EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP,
|
||||
EtcItemType.BLESS_ENCHT_AM,
|
||||
EtcItemType.BLESS_ENCHT_AM_DOWN,
|
||||
EtcItemType.BLESS_ENCHT_WP,
|
||||
EtcItemType.ENCHT_AM,
|
||||
EtcItemType.ENCHT_WP,
|
||||
@ -56,6 +57,7 @@ public abstract class AbstractEnchantItem
|
||||
|
||||
private final int _id;
|
||||
private final CrystalType _grade;
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final double _bonusRate;
|
||||
|
||||
@ -71,6 +73,7 @@ public abstract class AbstractEnchantItem
|
||||
throw new IllegalAccessError();
|
||||
}
|
||||
_grade = set.getEnum("targetGrade", CrystalType.class, CrystalType.NONE);
|
||||
_minEnchantLevel = set.getInt("maxEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
@ -112,6 +115,14 @@ public abstract class AbstractEnchantItem
|
||||
*/
|
||||
public abstract boolean isWeapon();
|
||||
|
||||
/**
|
||||
* @return the minimum enchant level that this scroll/item can be used with
|
||||
*/
|
||||
public int getMinEnchantLevel()
|
||||
{
|
||||
return _minEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum enchant level that this scroll/item can be used with
|
||||
*/
|
||||
@ -139,7 +150,7 @@ public abstract class AbstractEnchantItem
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel))
|
||||
else if (((_minEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() < _minEnchantLevel)) && ((_maxEnchantLevel != 0) && (itemToEnchant.getEnchantLevel() >= _maxEnchantLevel)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
{
|
||||
private final boolean _isWeapon;
|
||||
private final boolean _isBlessed;
|
||||
private final boolean _isBlessedDown;
|
||||
private final boolean _isSafe;
|
||||
private final boolean _isGiant;
|
||||
private final int _scrollGroupId;
|
||||
@ -48,6 +49,7 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
final ItemType type = getItem().getItemType();
|
||||
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
|
||||
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.BLESSED_ENCHT_ATTR_INC_PROP_ENCHT_WP) || (type == EtcItemType.BLESSED_ENCHT_ATTR_INC_PROP_ENCHT_AM) || (type == EtcItemType.BLESSED_GIANT_ENCHT_ATTR_INC_PROP_ENCHT_AM) || (type == EtcItemType.BLESSED_GIANT_ENCHT_ATTR_INC_PROP_ENCHT_WP);
|
||||
_isBlessedDown = (type == EtcItemType.BLESS_ENCHT_AM_DOWN);
|
||||
_isSafe = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
|
||||
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
|
||||
}
|
||||
@ -59,13 +61,21 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} for blessed scrolls (enchanted item will remain on failure), {@code false} otherwise
|
||||
* @return {@code true} for blessed scrolls (enchanted item will remain on failure and enchant value will reset to 0), {@code false} otherwise
|
||||
*/
|
||||
public boolean isBlessed()
|
||||
{
|
||||
return _isBlessed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} for blessed scrolls (enchanted item will remain on failure and enchant value will go down by 1), {@code false} otherwise
|
||||
*/
|
||||
public boolean isBlessedDown()
|
||||
{
|
||||
return _isBlessedDown;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} for safe-enchant scrolls (enchant level will remain on failure), {@code false} otherwise
|
||||
*/
|
||||
@ -123,6 +133,10 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if ((isBlessedDown() && !supportItem.isBlessed()) || (!isBlessedDown() && supportItem.isBlessed()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if ((isGiant() && !supportItem.isGiant()) || (!isGiant() && supportItem.isGiant()))
|
||||
{
|
||||
return false;
|
||||
|
@ -46,6 +46,7 @@ public enum EtcItemType implements ItemType
|
||||
GIANT_ENCHT_AM,
|
||||
BLESS_ENCHT_WP,
|
||||
BLESS_ENCHT_AM,
|
||||
BLESS_ENCHT_AM_DOWN,
|
||||
COUPON,
|
||||
ELIXIR,
|
||||
ENCHT_ATTR,
|
||||
|
@ -318,12 +318,19 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
player.broadcastUserInfo();
|
||||
}
|
||||
|
||||
if (scrollTemplate.isBlessed() || ((supportTemplate != null) && supportTemplate.isBlessed()))
|
||||
if (scrollTemplate.isBlessed() || scrollTemplate.isBlessedDown() || ((supportTemplate != null) && supportTemplate.isBlessed()))
|
||||
{
|
||||
// blessed enchant - enchant value down by 1
|
||||
if (scrollTemplate.isBlessedDown())
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() - 1);
|
||||
}
|
||||
else
|
||||
// blessed enchant - clear enchant value
|
||||
client.sendPacket(SystemMessageId.THE_BLESSED_ENCHANT_FAILED_THE_ENCHANT_VALUE_OF_THE_ITEM_BECAME_0);
|
||||
|
||||
item.setEnchantLevel(0);
|
||||
{
|
||||
client.sendPacket(SystemMessageId.THE_BLESSED_ENCHANT_FAILED_THE_ENCHANT_VALUE_OF_THE_ITEM_BECAME_0);
|
||||
item.setEnchantLevel(0);
|
||||
}
|
||||
item.updateDatabase();
|
||||
client.sendPacket(new EnchantResult(EnchantResult.BLESSED_FAIL, 0, 0));
|
||||
if (Config.LOG_ITEM_ENCHANTS)
|
||||
|
Reference in New Issue
Block a user