Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Enchant into multisell

Iniciado por Pandragon, Jul 26, 2025, 11:57 PM

Tema anterior - Siguiente tema

Pandragon

### Eclipse Workspace Patch 1.0
#P L2J_Server_BETA
Index: java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java
===================================================================
--- java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java    (revision 6602)
+++ java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java    (working copy)
@@ -81,7 +81,7 @@
         adenaAmount += _taxAmount; // do not forget tax
         if (adenaAmount > 0)
         {
-            _ingredients.add(new Ingredient(ADENA_ID, adenaAmount, false, false));
+            _ingredients.add(new Ingredient(ADENA_ID, adenaAmount, 0, false, false));
         }
         
         // now copy products
Index: java/com/l2jserver/gameserver/model/multisell/Ingredient.java
===================================================================
--- java/com/l2jserver/gameserver/model/multisell/Ingredient.java    (revision 6602)
+++ java/com/l2jserver/gameserver/model/multisell/Ingredient.java    (working copy)
@@ -32,6 +32,7 @@
 {
     private int _itemId;
     private long _itemCount;
+    private final int _enchantmentLevel;
     private boolean _isTaxIngredient;
     private boolean _maintainIngredient;
     private L2Item _template = null;
@@ -39,13 +40,14 @@
     
     public Ingredient(StatsSet set)
     {
-        this(set.getInt("id"), set.getLong("count"), set.getBoolean("isTaxIngredient", false), set.getBoolean("maintainIngredient", false));
+        this(set.getInt("id"), set.getLong("count"), set.getInt("enchantmentLevel", 0), set.getBoolean("isTaxIngredient", false), set.getBoolean("maintainIngredient", false));
     }
     
-    public Ingredient(int itemId, long itemCount, boolean isTaxIngredient, boolean maintainIngredient)
+    public Ingredient(int itemId, long itemCount, int enchantmentLevel, boolean isTaxIngredient, boolean maintainIngredient)
     {
         _itemId = itemId;
         _itemCount = itemCount;
+        _enchantmentLevel = enchantmentLevel;
         _isTaxIngredient = isTaxIngredient;
         _maintainIngredient = maintainIngredient;
         if (_itemId > 0)
@@ -59,7 +61,7 @@
      */
     public Ingredient getCopy()
     {
-        return new Ingredient(_itemId, _itemCount, _isTaxIngredient, _maintainIngredient);
+        return new Ingredient(_itemId, _itemCount, _enchantmentLevel, _isTaxIngredient, _maintainIngredient);
     }
     
     public final L2Item getTemplate()
@@ -84,7 +86,7 @@
     
     public final int getEnchantLevel()
     {
-        return _itemInfo != null ? _itemInfo.getEnchantLevel() : 0;
+        return _itemInfo == null ? _enchantmentLevel : _itemInfo.getEnchantLevel();
     }
     
     public final void setItemId(int itemId)
Index: java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java    (revision 6602)
+++ java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java    (working copy)
@@ -226,7 +226,7 @@
                         // 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.S2_UNIT_OF_THE_ITEM_S1_REQUIRED);
                             sm.addItemName(e.getTemplate());
@@ -288,7 +288,7 @@
                                     // 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);
@@ -401,7 +401,7 @@
                                 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())
                                         {
Index: java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java
===================================================================
--- java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java    (revision 6602)
+++ java/com/l2jserver/gameserver/network/serverpackets/MultiSellList.java    (working copy)
@@ -107,7 +107,7 @@
                 }
                 else
                 {
-                    writeH(0x00); // enchant level
+                    writeH(ing.getEnchantLevel()); // enchant level
                     writeD(0x00); // augment id
                     writeD(0x00); // mana
                     writeH(0x00); // attack element
@@ -142,7 +142,7 @@
                 }
                 else
                 {
-                    writeH(0x00); // enchant level
+                    writeH(ing.getEnchantLevel()); // enchant level
                     writeD(0x00); // augment id
                     writeD(0x00); // mana
                     writeH(0x00); // attack element
#P L2J_DataPack_BETA
Index: dist/game/data/xsd/multisell.xsd
===================================================================
--- dist/game/data/xsd/multisell.xsd    (revision 10396)
+++ dist/game/data/xsd/multisell.xsd    (working copy)
@@ -24,6 +24,7 @@
                                 <xs:complexType>
                                     <xs:attribute name="count" type="xs:positiveInteger" use="required" />
                                     <xs:attribute name="id" type="xs:integer" use="required" />
+                                    <xs:attribute name="enchantmentLevel" type="xs:integer" />
                                     <xs:attribute name="maintainIngredient" type="xs:boolean" />
                                 </xs:complexType>
                             </xs:element>
@@ -31,6 +32,7 @@
                                 <xs:complexType>
                                     <xs:attribute name="count" type="xs:positiveInteger" use="required" />
                                     <xs:attribute name="id" type="xs:integer" use="required" />
+                                    <xs:attribute name="enchantmentLevel" type="xs:integer" />
                                 </xs:complexType>
                             </xs:element>
                         </xs:sequence>