Maintain enchant level for chance multisells.

This commit is contained in:
MobiusDevelopment
2021-09-15 22:13:24 +00:00
parent 11850ecb9f
commit 3a5431ea2b
19 changed files with 380 additions and 0 deletions

View File

@@ -284,6 +284,7 @@ public class MultiSellChoose implements IClientIncomingPacket
final InventoryUpdate iu = new InventoryUpdate();
boolean itemEnchantmentProcessed = (itemEnchantment == null);
int enchantLevel = -1;
// Take all ingredients
for (ItemChanceHolder ingredient : entry.getIngredients())
@@ -346,6 +347,10 @@ public class MultiSellChoose implements IClientIncomingPacket
{
itemEnchantmentProcessed = true;
iu.addItem(destroyedItem);
if (enchantLevel < 0) // Will only consider first ingredient enchant.
{
enchantLevel = destroyedItem.getEnchantLevel();
}
}
else
{
@@ -363,6 +368,10 @@ public class MultiSellChoose implements IClientIncomingPacket
{
itemEnchantmentProcessed = true;
iu.addItem(destroyedItem);
if (enchantLevel < 0) // Will only consider first ingredient enchant.
{
enchantLevel = destroyedItem.getEnchantLevel();
}
}
else
{
@@ -379,6 +388,10 @@ public class MultiSellChoose implements IClientIncomingPacket
if (destroyedItem != null)
{
iu.addItem(destroyedItem);
if (enchantLevel < 0) // Will only consider first ingredient enchant.
{
enchantLevel = destroyedItem.getEnchantLevel();
}
}
else
{
@@ -484,11 +497,18 @@ public class MultiSellChoose implements IClientIncomingPacket
// Mark that we have already upgraded the item.
itemEnchantmentProcessed = false;
}
if (product.getEnchantmentLevel() > 0)
{
addedItem.setEnchantLevel(product.getEnchantmentLevel());
addedItem.updateDatabase(true);
}
else if (itemEnchantmentProcessed && list.isMaintainEnchantment() && (enchantLevel > 0) && !addedItem.getItem().isEtcItem())
{
addedItem.setEnchantLevel(enchantLevel);
addedItem.updateDatabase(true);
enchantLevel = -1; // Will only enchant first product.
}
if (addedItem.getCount() > 1)
{