Unhardcoded bonus enchant scrolls.
This commit is contained in:
parent
160f58a554
commit
f81e3d62ce
@ -796,10 +796,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -822,10 +822,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -822,10 +822,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -864,10 +864,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -876,10 +876,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -885,10 +885,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -905,10 +905,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
@ -955,5 +955,4 @@
|
||||
<support id="23778" targetGrade="A" minEnchant="10" maxEnchant="15" bonusRate="18" />
|
||||
<support id="23779" targetGrade="S" minEnchant="10" maxEnchant="15" bonusRate="15" />
|
||||
<support id="23780" targetGrade="R" minEnchant="10" maxEnchant="15" bonusRate="10" />
|
||||
|
||||
</list>
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,20 +185,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -912,10 +912,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,20 +185,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -312,7 +312,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -559,7 +559,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -806,7 +806,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1053,7 +1053,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1300,7 +1300,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1547,7 +1547,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -2520,10 +2520,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
@ -2572,11 +2572,11 @@
|
||||
<support id="23780" targetGrade="R" minEnchant="10" maxEnchant="15" bonusRate="10" />
|
||||
|
||||
<!-- Royal Gold Save Ticket -->
|
||||
<support id="80501" targetGrade="R" maxEnchant="30" bonusRate="20" />
|
||||
<support id="80501" targetGrade="R" maxEnchant="30" bonusRate="20" randomEnchantMin="1" randomEnchantMax="3" />
|
||||
<!-- Royal Black Save Ticket -->
|
||||
<support id="80449" targetGrade="R" minEnchant="3" maxEnchant="11" bonusRate="20" />
|
||||
<support id="80449" targetGrade="R" minEnchant="3" maxEnchant="11" bonusRate="20" randomEnchantMin="1" randomEnchantMax="2" />
|
||||
<!-- Royal Gold Save Ticket -->
|
||||
<support id="81697" targetGrade="R" maxEnchant="30" bonusRate="10" />
|
||||
<support id="81697" targetGrade="R" maxEnchant="30" bonusRate="10" randomEnchantMin="1" randomEnchantMax="3" />
|
||||
<!-- Royal Black Save Ticket -->
|
||||
<support id="81698" targetGrade="R" maxEnchant="30" bonusRate="10" />
|
||||
<support id="81698" targetGrade="R" maxEnchant="30" bonusRate="10" randomEnchantMin="1" randomEnchantMax="2" />
|
||||
</list>
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -61,6 +61,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -78,6 +80,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -142,6 +146,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,31 +185,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 80501)) || ((supportTemplate != null) && (supportTemplate.getId() == 81697))) // Save ticket gold
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else if (((supportTemplate != null) && (supportTemplate.getId() == 80449)) || ((supportTemplate != null) && (supportTemplate.getId() == 81698))) // Save ticket black
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(2), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -312,7 +312,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -559,7 +559,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -806,7 +806,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1053,7 +1053,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1300,7 +1300,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -1547,7 +1547,7 @@
|
||||
<item id="28850" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28851" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28852" /> <!-- Gemini Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28853" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28854" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28855" /> <!-- Scorpio Agathion Charm -->
|
||||
<item id="28856" /> <!-- Scorpio Agathion Charm -->
|
||||
@ -2520,10 +2520,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
@ -2572,11 +2572,11 @@
|
||||
<support id="23780" targetGrade="R" minEnchant="10" maxEnchant="15" bonusRate="10" />
|
||||
|
||||
<!-- Royal Gold Save Ticket -->
|
||||
<support id="80501" targetGrade="R" maxEnchant="30" bonusRate="20" />
|
||||
<support id="80501" targetGrade="R" maxEnchant="30" bonusRate="20" randomEnchantMin="1" randomEnchantMax="3" />
|
||||
<!-- Royal Black Save Ticket -->
|
||||
<support id="80449" targetGrade="R" minEnchant="3" maxEnchant="11" bonusRate="20" />
|
||||
<support id="80449" targetGrade="R" minEnchant="3" maxEnchant="11" bonusRate="20" randomEnchantMin="1" randomEnchantMax="2" />
|
||||
<!-- Royal Gold Save Ticket -->
|
||||
<support id="81697" targetGrade="R" maxEnchant="30" bonusRate="10" />
|
||||
<support id="81697" targetGrade="R" maxEnchant="30" bonusRate="10" randomEnchantMin="1" randomEnchantMax="3" />
|
||||
<!-- Royal Black Save Ticket -->
|
||||
<support id="81698" targetGrade="R" maxEnchant="30" bonusRate="10" />
|
||||
<support id="81698" targetGrade="R" maxEnchant="30" bonusRate="10" randomEnchantMin="1" randomEnchantMax="2" />
|
||||
</list>
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -61,6 +61,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -78,6 +80,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -142,6 +146,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,31 +185,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 80501)) || ((supportTemplate != null) && (supportTemplate.getId() == 81697))) // Save ticket gold
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else if (((supportTemplate != null) && (supportTemplate.getId() == 80449)) || ((supportTemplate != null) && (supportTemplate.getId() == 81698))) // Save ticket black
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(2), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,21 +183,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,21 +183,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,21 +183,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,21 +183,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,21 +185,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -185,21 +185,15 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -864,10 +864,10 @@
|
||||
<support id="38760" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="30" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Weapon -->
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23785" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Lesser Giant's Lucky Stone: Enchant Armor -->
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" />
|
||||
<support id="23786" targetGrade="R" minEnchant="3" maxEnchant="9" randomEnchantMin="2" randomEnchantMax="4" />
|
||||
|
||||
<!-- Giant's Lucky Enchant Stone Weapon -->
|
||||
<support id="23781" targetGrade="R" minEnchant="3" maxEnchant="9" bonusRate="10" />
|
||||
|
@ -101,6 +101,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -60,6 +60,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
@ -77,6 +79,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
}
|
||||
|
||||
@ -141,6 +145,22 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -183,20 +183,13 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.updateDatabase();
|
||||
}
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -62,7 +62,10 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
private final boolean _isBlessed;
|
||||
|
||||
public AbstractEnchantItem(StatSet set)
|
||||
{
|
||||
@ -79,7 +82,10 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
_isBlessed = set.getBoolean("isBlessed", false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -143,6 +149,27 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
public boolean isActionBlessed()
|
||||
{
|
||||
return _isBlessed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
|
@ -161,6 +161,10 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
}
|
||||
if (_items == null)
|
||||
{
|
||||
if (isActionBlessed() && itemToEnchant.isWeapon() && (itemToEnchant.getItem().getCrystalType() == getGrade()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
for (EnchantScroll scroll : EnchantItemData.getInstance().getScrolls())
|
||||
{
|
||||
if (scroll.getId() == getId())
|
||||
|
@ -186,16 +186,9 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else if (scrollTemplate.isCursed())
|
||||
{
|
||||
@ -203,8 +196,9 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
@ -35,6 +35,22 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMin" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="randomEnchantMax" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="127" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="maxEnchantFighter">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
|
@ -62,6 +62,8 @@ public abstract class AbstractEnchantItem
|
||||
private final int _minEnchantLevel;
|
||||
private final int _maxEnchantLevel;
|
||||
private final int _safeEnchantLevel;
|
||||
private final int _randomEnchantMin;
|
||||
private final int _randomEnchantMax;
|
||||
private final double _bonusRate;
|
||||
private final boolean _isBlessed;
|
||||
|
||||
@ -80,6 +82,8 @@ public abstract class AbstractEnchantItem
|
||||
_minEnchantLevel = set.getInt("minEnchant", 0);
|
||||
_maxEnchantLevel = set.getInt("maxEnchant", 127);
|
||||
_safeEnchantLevel = set.getInt("safeEnchant", 0);
|
||||
_randomEnchantMin = set.getInt("randomEnchantMin", 1);
|
||||
_randomEnchantMax = set.getInt("randomEnchantMax", _randomEnchantMin);
|
||||
_bonusRate = set.getDouble("bonusRate", 0);
|
||||
_isBlessed = set.getBoolean("isBlessed", false);
|
||||
}
|
||||
@ -145,6 +149,27 @@ public abstract class AbstractEnchantItem
|
||||
return _safeEnchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the minimum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMin()
|
||||
{
|
||||
return _randomEnchantMin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the maximum random enchant level of this scroll/item
|
||||
*/
|
||||
public int getRandomEnchantMax()
|
||||
{
|
||||
return _randomEnchantMax;
|
||||
}
|
||||
|
||||
public boolean isActionBlessed()
|
||||
{
|
||||
return _isBlessed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param itemToEnchant the item to be enchanted
|
||||
* @param supportItem
|
||||
@ -191,9 +216,4 @@ public abstract class AbstractEnchantItem
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isActionBlessed()
|
||||
{
|
||||
return _isBlessed;
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.items.enchant;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
|
||||
import org.l2jmobius.gameserver.data.xml.EnchantItemGroupsData;
|
||||
@ -238,26 +237,4 @@ public class EnchantScroll extends AbstractEnchantItem
|
||||
final boolean success = (random < finalChance);
|
||||
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
|
||||
}
|
||||
|
||||
public EnchantResultType calculateSuccess(PlayerInstance player, ItemInstance enchantItem)
|
||||
{
|
||||
if (!isActionBlessed() || !enchantItem.isWeapon())
|
||||
{
|
||||
return EnchantResultType.ERROR;
|
||||
}
|
||||
|
||||
final double chance = Config.BLESSING_CHANCE;
|
||||
if (chance == -1)
|
||||
{
|
||||
return EnchantResultType.ERROR;
|
||||
}
|
||||
|
||||
final int crystalLevel = enchantItem.getItem().getCrystalType().getLevel();
|
||||
final double enchantRateStat = (crystalLevel > CrystalType.NONE.getLevel()) && (crystalLevel < CrystalType.EVENT.getLevel()) ? player.getStat().getValue(Stat.ENCHANT_RATE) : 0;
|
||||
final double bonusRate = getBonusRate();
|
||||
final double finalChance = Math.min(chance + bonusRate + enchantRateStat, 100);
|
||||
final double random = 100 * Rnd.nextDouble();
|
||||
final boolean success = (random < finalChance);
|
||||
return success ? EnchantResultType.SUCCESS : EnchantResultType.FAILURE;
|
||||
}
|
||||
}
|
||||
|
@ -186,16 +186,9 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
|
||||
if (scrollTemplate.getChance(player, item) > 0)
|
||||
{
|
||||
if (scrollTemplate.isGiant())
|
||||
if (supportTemplate != null)
|
||||
{
|
||||
if (((supportTemplate != null) && (supportTemplate.getId() == 23785)) || ((supportTemplate != null) && (supportTemplate.getId() == 23786))) // Lesser Giant's Lucky Enchant Stones. Increase from +2 to +4
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 2 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(supportTemplate.getRandomEnchantMin(), supportTemplate.getRandomEnchantMax()), supportTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
else if (scrollTemplate.isCursed())
|
||||
{
|
||||
@ -203,8 +196,9 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
||||
}
|
||||
else
|
||||
{
|
||||
item.setEnchantLevel(item.getEnchantLevel() + 1);
|
||||
item.setEnchantLevel(Math.min(item.getEnchantLevel() + Rnd.get(scrollTemplate.getRandomEnchantMin(), scrollTemplate.getRandomEnchantMax()), scrollTemplate.getMaxEnchantLevel()));
|
||||
}
|
||||
|
||||
item.updateDatabase();
|
||||
}
|
||||
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));
|
||||
|
Loading…
Reference in New Issue
Block a user