Unhardcoded bonus enchant scrolls.

This commit is contained in:
MobiusDevelopment
2021-04-28 14:40:04 +00:00
parent 160f58a554
commit f81e3d62ce
70 changed files with 807 additions and 283 deletions

View File

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

View File

@@ -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">

View File

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

View File

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