From 1289171727164439eb38473be3ab15caed02068d Mon Sep 17 00:00:00 2001 From: mobius <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 31 Jan 2015 22:49:02 +0000 Subject: [PATCH] Enchantment level support for multisells. --- trunk/dist/game/data/multisell/documentation.txt | 6 ++++-- trunk/dist/game/data/xsd/multisell.xsd | 2 ++ .../gameserver/model/multisell/Ingredient.java | 10 ++++++---- .../gameserver/model/multisell/PreparedEntry.java | 2 +- .../network/clientpackets/MultiSellChoose.java | 6 +++--- .../network/serverpackets/MultiSellList.java | 4 ++-- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/trunk/dist/game/data/multisell/documentation.txt b/trunk/dist/game/data/multisell/documentation.txt index 2678009f1c..94b227ad1e 100644 --- a/trunk/dist/game/data/multisell/documentation.txt +++ b/trunk/dist/game/data/multisell/documentation.txt @@ -37,7 +37,9 @@ TAGS: : start and end the list : start and end a single entry within the list : add a product for the entry - : add an ingredient for the entry. + : add an ingredient for the entry +enchantmentLevel : add item enchantment level + Sample: @@ -48,7 +50,7 @@ Sample: - + \ No newline at end of file diff --git a/trunk/dist/game/data/xsd/multisell.xsd b/trunk/dist/game/data/xsd/multisell.xsd index 96a02ace7a..ebc2c8dbda 100644 --- a/trunk/dist/game/data/xsd/multisell.xsd +++ b/trunk/dist/game/data/xsd/multisell.xsd @@ -23,6 +23,7 @@ + @@ -30,6 +31,7 @@ + diff --git a/trunk/java/com/l2jserver/gameserver/model/multisell/Ingredient.java b/trunk/java/com/l2jserver/gameserver/model/multisell/Ingredient.java index 20b076a572..696b1f329a 100644 --- a/trunk/java/com/l2jserver/gameserver/model/multisell/Ingredient.java +++ b/trunk/java/com/l2jserver/gameserver/model/multisell/Ingredient.java @@ -32,6 +32,7 @@ public class Ingredient { private int _itemId; private long _itemCount; + private final int _enchantmentLevel; private boolean _isTaxIngredient; private boolean _maintainIngredient; private L2Item _template = null; @@ -40,13 +41,14 @@ public class Ingredient public Ingredient(StatsSet set) { - this(set.getInt("id"), set.getLong("count"), set.getInt("chance", 0), set.getBoolean("isTaxIngredient", false), set.getBoolean("maintainIngredient", false)); + this(set.getInt("id"), set.getLong("count"), set.getInt("enchantmentLevel", 0), set.getInt("chance", 0), set.getBoolean("isTaxIngredient", false), set.getBoolean("maintainIngredient", false)); } - public Ingredient(int itemId, long itemCount, int chance, boolean isTaxIngredient, boolean maintainIngredient) + public Ingredient(int itemId, long itemCount, int enchantmentLevel, int chance, boolean isTaxIngredient, boolean maintainIngredient) { _itemId = itemId; _itemCount = itemCount; + _enchantmentLevel = enchantmentLevel; _chance = chance; _isTaxIngredient = isTaxIngredient; _maintainIngredient = maintainIngredient; @@ -61,7 +63,7 @@ public class Ingredient */ public Ingredient getCopy() { - return new Ingredient(_itemId, _itemCount, _chance, _isTaxIngredient, _maintainIngredient); + return new Ingredient(_itemId, _itemCount, _enchantmentLevel, _chance, _isTaxIngredient, _maintainIngredient); } public final L2Item getTemplate() @@ -86,7 +88,7 @@ public class Ingredient public final int getEnchantLevel() { - return _itemInfo != null ? _itemInfo.getEnchantLevel() : 0; + return _itemInfo == null ? _enchantmentLevel : _itemInfo.getEnchantLevel(); } public final void setItemId(int itemId) diff --git a/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java b/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java index c3b1702545..7cb3615b63 100644 --- a/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java +++ b/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java @@ -81,7 +81,7 @@ public class PreparedEntry extends Entry adenaAmount += _taxAmount; // do not forget tax if (adenaAmount > 0) { - _ingredients.add(new Ingredient(ADENA_ID, adenaAmount, 0, false, false)); + _ingredients.add(new Ingredient(ADENA_ID, adenaAmount, 0, 0, false, false)); } // now copy products diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java index 5c2414f2b6..c52b95b303 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java @@ -205,7 +205,7 @@ public class MultiSellChoose extends L2GameClientPacket // if this is not a list that maintains enchantment, check the count of all items that have the given id. // otherwise, check only the count of items with exactly the needed enchantment level final long required = ((Config.ALT_BLACKSMITH_USE_RECIPES || !e.getMaintainIngredient()) ? (e.getItemCount() * _amount) : e.getItemCount()); - if (inv.getInventoryItemCount(e.getItemId(), list.getMaintainEnchantment() ? e.getEnchantLevel() : -1, false) < required) + if (inv.getInventoryItemCount(e.getItemId(), (list.getMaintainEnchantment() || (e.getEnchantLevel() > 0)) ? e.getEnchantLevel() : -1, false) < required) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_NEED_S2_S1_S); sm.addItemName(e.getTemplate()); @@ -267,7 +267,7 @@ public class MultiSellChoose extends L2GameClientPacket // b) list does not maintain enchantment: get the instances with the LOWEST enchantment level // a) if enchantment is maintained, then get a list of items that exactly match this enchantment - if (list.getMaintainEnchantment()) + if (list.getMaintainEnchantment() || (e.getEnchantLevel() > 0)) { // loop through this list and remove (one by one) each item until the required amount is taken. L2ItemInstance[] inventoryContents = inv.getAllItemsByItemId(e.getItemId(), e.getEnchantLevel(), false); @@ -400,7 +400,7 @@ public class MultiSellChoose extends L2GameClientPacket for (int i = 0; i < (e.getItemCount() * _amount); i++) { product = inv.addItem("Multisell", e.getItemId(), 1, player, player.getTarget()); - if ((product != null) && list.getMaintainEnchantment()) + if ((product != null) && (list.getMaintainEnchantment() || (e.getEnchantLevel() > 0))) { if (i < augmentation.size()) { diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java index 6cb2b47fa7..8d37d13e87 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java @@ -110,7 +110,7 @@ public final class MultiSellList extends L2GameServerPacket } else { - writeH(0x00); // enchant level + writeH(ing.getEnchantLevel()); // enchant level writeD(ing.getChance()); // augment id writeD(0x00); // mana writeD(0x00); // time ? @@ -146,7 +146,7 @@ public final class MultiSellList extends L2GameServerPacket } else { - writeH(0x00); // enchant level + writeH(ing.getEnchantLevel()); // enchant level writeD(ing.getChance()); // augment id writeD(0x00); // mana writeH(0x00); // attack element