Преглед изворни кода

BETA: Implementing enchant bonus options for some premium items (It's like an augment but only for few items, shirts mostly)
* Note: This is only visual implementation the stats aren't done yet!
* Reviewed by: Zoey76, MELERIX

Rumen Nikiforov пре 12 година
родитељ
комит
073045cadd
31 измењених фајлова са 331 додато и 70 уклоњено
  1. 2 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java
  2. 126 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/EnchantOptionsData.java
  3. 50 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/EnchantOptions.java
  4. 10 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/ItemInfo.java
  5. 7 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/TradeItem.java
  6. 8 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/L2WarehouseItem.java
  7. 17 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java
  8. 3 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java
  9. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExBuySellListPacket.java
  10. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExQuestItemList.java
  11. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplyPostItemList.java
  12. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplyReceivedPost.java
  13. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplySentPost.java
  14. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExRpItemLink.java
  15. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewItemList.java
  16. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java
  17. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/InventoryUpdate.java
  18. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ItemList.java
  19. 12 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/NpcHtmlMessage.java
  20. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PackageSendableList.java
  21. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetInventoryUpdate.java
  22. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetItemList.java
  23. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListBuy.java
  24. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListSell.java
  25. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListBuy.java
  26. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListSell.java
  27. 5 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SellList.java
  28. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SortedWareHouseWithdrawalList.java
  29. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/TradeStart.java
  30. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/WareHouseDepositList.java
  31. 11 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/WareHouseWithdrawalList.java

+ 2 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java

@@ -46,6 +46,7 @@ import com.l2jserver.gameserver.datatables.DoorTable;
 import com.l2jserver.gameserver.datatables.EnchantGroupsData;
 import com.l2jserver.gameserver.datatables.EnchantHPBonusData;
 import com.l2jserver.gameserver.datatables.EnchantItemData;
+import com.l2jserver.gameserver.datatables.EnchantOptionsData;
 import com.l2jserver.gameserver.datatables.EventDroplist;
 import com.l2jserver.gameserver.datatables.ExperienceTable;
 import com.l2jserver.gameserver.datatables.FishData;
@@ -217,6 +218,7 @@ public class GameServer
 		printSection("Items");
 		ItemTable.getInstance();
 		EnchantItemData.getInstance();
+		EnchantOptionsData.getInstance();
 		SummonItemsData.getInstance();
 		EnchantHPBonusData.getInstance();
 		MerchantPriceConfigTable.getInstance().loadInstances();

+ 126 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/EnchantOptionsData.java

@@ -0,0 +1,126 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.datatables;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+
+import org.w3c.dom.Node;
+
+import com.l2jserver.gameserver.engines.DocumentParser;
+import com.l2jserver.gameserver.model.EnchantOptions;
+import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * @author UnAfraid
+ */
+public class EnchantOptionsData extends DocumentParser
+{
+	private final Map<Integer, Map<Integer, EnchantOptions>> _data = new HashMap<>();
+	
+	protected EnchantOptionsData()
+	{
+		load();
+	}
+	
+	@Override
+	public synchronized void load()
+	{
+		parseDatapackFile("data/enchantOptions.xml");
+	}
+	
+	@Override
+	protected void parseDocument()
+	{
+		Node att = null;
+		int counter = 0;
+		EnchantOptions op = null;
+		for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
+		{
+			if ("list".equalsIgnoreCase(n.getNodeName()))
+			{
+				for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+				{
+					if ("item".equalsIgnoreCase(d.getNodeName()))
+					{
+						int itemId = parseInt(d.getAttributes(), "id");
+						if (!_data.containsKey(itemId))
+						{
+							_data.put(itemId, new HashMap<Integer, EnchantOptions>());
+						}
+						for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
+						{
+							if ("options".equalsIgnoreCase(cd.getNodeName()))
+							{
+								op = new EnchantOptions(parseInt(cd.getAttributes(), "level"));
+								_data.get(itemId).put(op.getLevel(), op);
+								
+								for (byte i = 0; i < 3; i++)
+								{
+									att = cd.getAttributes().getNamedItem("option" + (i + 1));
+									if (Util.isDigit(att.getNodeValue()))
+									{
+										op.setOption(i, parseInt(att));
+									}
+								}
+								counter++;
+							}
+						}
+					}
+				}
+			}
+		}
+		_log.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _data.size() + " Items and " + counter + " Options.");
+	}
+	
+	/**
+	 * @param itemId
+	 * @param enchantLevel
+	 * @return enchant effects information.
+	 */
+	public EnchantOptions getOptions(int itemId, int enchantLevel)
+	{
+		if (!_data.containsKey(itemId) || !_data.get(itemId).containsKey(enchantLevel))
+		{
+			return null;
+		}
+		return _data.get(itemId).get(enchantLevel);
+	}
+	
+	/**
+	 * @param item
+	 * @return enchant effects information.
+	 */
+	public EnchantOptions getOptions(L2ItemInstance item)
+	{
+		return item != null ? getOptions(item.getItemId(), item.getEnchantLevel()) : null;
+	}
+	
+	/**
+	 * Gets the single instance of EnchantOptionsData.
+	 * @return single instance of EnchantOptionsData
+	 */
+	public static final EnchantOptionsData getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
+	private static class SingletonHolder
+	{
+		protected static final EnchantOptionsData _instance = new EnchantOptionsData();
+	}
+}

+ 50 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/EnchantOptions.java

@@ -0,0 +1,50 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
+
+/**
+ * @author UnAfraid
+ */
+public class EnchantOptions
+{
+	private final int _level;
+	private final int[] _options;
+	
+	public EnchantOptions(int level)
+	{
+		_level = level;
+		_options = L2ItemInstance.DEFAULT_ENCHANT_OPTIONS;
+	}
+	
+	public int getLevel()
+	{
+		return _level;
+	}
+	
+	public int[] getOptions()
+	{
+		return _options;
+	}
+	
+	public void setOption(byte index, int option)
+	{
+		if (_options.length > index)
+		{
+			_options[index] = option;
+		}
+	}
+}

+ 10 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/ItemInfo.java

@@ -68,6 +68,8 @@ public class ItemInfo
 		0
 	};
 	
+	private int[] _option = L2ItemInstance.DEFAULT_ENCHANT_OPTIONS;
+	
 	/**
 	 * Get all information from L2ItemInstance to generate ItemInfo.
 	 * @param item
@@ -139,6 +141,7 @@ public class ItemInfo
 		{
 			_elemDefAttr[i] = item.getElementDefAttr(i);
 		}
+		_option = item.getEnchantOptions();
 	}
 	
 	public ItemInfo(L2ItemInstance item, int change)
@@ -192,6 +195,8 @@ public class ItemInfo
 		{
 			_elemDefAttr[i] = item.getElementDefAttr(i);
 		}
+		
+		_option = item.getEnchantOptions();
 	}
 	
 	public int getObjectId()
@@ -273,4 +278,9 @@ public class ItemInfo
 	{
 		return _elemDefAttr[i];
 	}
+	
+	public int[] getEnchantOptions()
+	{
+		return _option;
+	}
 }

+ 7 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/TradeItem.java

@@ -39,6 +39,7 @@ public class TradeItem
 		0,
 		0
 	};
+	private int[] _enchantOptions = L2ItemInstance.DEFAULT_ENCHANT_OPTIONS;
 	
 	public TradeItem(L2ItemInstance item, long count, long price)
 	{
@@ -56,6 +57,7 @@ public class TradeItem
 		{
 			_elemDefAttr[i] = item.getElementDefAttr(i);
 		}
+		_enchantOptions = item.getEnchantOptions();
 	}
 	
 	public TradeItem(L2Item item, long count, long price)
@@ -171,4 +173,9 @@ public class TradeItem
 	{
 		return _elemDefAttr[i];
 	}
+	
+	public int[] getEnchantOptions()
+	{
+		return _enchantOptions;
+	}
 }

+ 8 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/L2WarehouseItem.java

@@ -55,6 +55,8 @@ public class L2WarehouseItem
 		0
 	};
 	
+	private int[] _enchantOptions = L2ItemInstance.DEFAULT_ENCHANT_OPTIONS;
+	
 	private final int _time;
 	
 	public L2WarehouseItem(L2ItemInstance item)
@@ -86,6 +88,7 @@ public class L2WarehouseItem
 		{
 			_elemDefAttr[i] = item.getElementDefAttr(i);
 		}
+		_enchantOptions = item.getEnchantOptions();
 	}
 	
 	/**
@@ -270,6 +273,11 @@ public class L2WarehouseItem
 		return _elemDefAttr[i];
 	}
 	
+	public int[] getEnchantOptions()
+	{
+		return _enchantOptions;
+	}
+	
 	public int getTime()
 	{
 		return _time;

+ 17 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java

@@ -34,12 +34,14 @@ import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.datatables.EnchantOptionsData;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
 import com.l2jserver.gameserver.instancemanager.MercTicketManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.model.DropProtection;
 import com.l2jserver.gameserver.model.Elementals;
+import com.l2jserver.gameserver.model.EnchantOptions;
 import com.l2jserver.gameserver.model.L2Augmentation;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2World;
@@ -160,6 +162,11 @@ public final class L2ItemInstance extends L2Object
 	public static final int ADDED = 1;
 	public static final int REMOVED = 3;
 	public static final int MODIFIED = 2;
+	
+	//@formatter:off
+	public static final int[] DEFAULT_ENCHANT_OPTIONS = new int[] { 0, 0, 0 };
+	//@formatter:on
+	
 	private int _lastChange = 2; // 1 ??, 2 modified, 3 removed
 	private boolean _existsInDb; // if a record exists in DB.
 	private boolean _storedInDb; // if DB data is up-to-date.
@@ -2344,4 +2351,14 @@ public final class L2ItemInstance extends L2Object
 	{
 		_shotsMask = 0;
 	}
+	
+	public int[] getEnchantOptions()
+	{
+		EnchantOptions op = EnchantOptionsData.getInstance().getOptions(this);
+		if (op != null)
+		{
+			return op.getOptions();
+		}
+		return DEFAULT_ENCHANT_OPTIONS;
+	}
 }

+ 3 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java

@@ -399,7 +399,9 @@ public final class RequestEnchantItem extends L2GameClientPacket
 			su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
 			activeChar.sendPacket(su);
 			
-			activeChar.sendPacket(new ItemList(activeChar, false));
+			InventoryUpdate iu = new InventoryUpdate();
+			iu.addModifiedItem(item);
+			activeChar.sendPacket(iu);
 			activeChar.broadcastUserInfo();
 			activeChar.setActiveEnchantItem(null);
 		}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExBuySellListPacket.java

@@ -84,9 +84,10 @@ public class ExBuySellListPacket extends L2GameServerPacket
 					writeH(item.getElementDefAttr(i));
 				}
 				// Enchant Effects
-				writeH(0x00);
-				writeH(0x00);
-				writeH(0x00);
+				for (int op : item.getEnchantOptions())
+				{
+					writeH(op);
+				}
 				
 				writeQ(item.getItem().getReferencePrice() / 2);
 			}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExQuestItemList.java

@@ -68,9 +68,10 @@ public class ExQuestItemList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 		if (_inventory.hasInventoryBlock())
 		{

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplyPostItemList.java

@@ -67,9 +67,10 @@ public class ExReplyPostItemList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0);
-			writeH(0);
-			writeH(0);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplyReceivedPost.java

@@ -87,9 +87,10 @@ public class ExReplyReceivedPost extends L2GameServerPacket
 					writeH(item.getElementDefAttr(i));
 				}
 				// Enchant Effects
-				writeH(0);
-				writeH(0);
-				writeH(0);
+				for (int op : item.getEnchantOptions())
+				{
+					writeH(op);
+				}
 				writeD(item.getObjectId());
 			}
 		}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExReplySentPost.java

@@ -86,9 +86,10 @@ public class ExReplySentPost extends L2GameServerPacket
 					writeH(item.getElementDefAttr(i));
 				}
 				// Enchant Effects
-				writeH(0);
-				writeH(0);
-				writeH(0);
+				for (int op : item.getEnchantOptions())
+				{
+					writeH(op);
+				}
 				writeD(item.getObjectId());
 			}
 			writeQ(_msg.getReqAdena());

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExRpItemLink.java

@@ -60,8 +60,9 @@ public final class ExRpItemLink extends L2GameServerPacket
 			writeH(_item.getElementDefAttr(i));
 		}
 		// Enchant Effects
-		writeH(0x00);
-		writeH(0x00);
-		writeH(0x00);
+		for (int op : _item.getEnchantOptions())
+		{
+			writeH(op);
+		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewItemList.java

@@ -76,9 +76,10 @@ public class GMViewItemList extends L2GameServerPacket
 				writeH(temp.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : temp.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java

@@ -77,9 +77,10 @@ public class GMViewWarehouseWithdrawList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId());
 		}
 	}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/InventoryUpdate.java

@@ -116,9 +116,10 @@ public class InventoryUpdate extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ItemList.java

@@ -91,9 +91,10 @@ public final class ItemList extends L2GameServerPacket
 				writeH(temp.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : temp.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 		if (_inventory.hasInventoryBlock())
 		{

+ 12 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/NpcHtmlMessage.java

@@ -139,6 +139,18 @@ public final class NpcHtmlMessage extends L2GameServerPacket
 		_itemId = itemId;
 	}
 	
+	/**
+	 * @param npcObjId
+	 * @param itemId
+	 * @param text
+	 */
+	public NpcHtmlMessage(int npcObjId, int itemId, String text)
+	{
+		_npcObjId = npcObjId;
+		_itemId = itemId;
+		_html = text;
+	}
+	
 	/**
 	 * @param npcObjId
 	 * @param text

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PackageSendableList.java

@@ -74,9 +74,10 @@ public class PackageSendableList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId()); // object id THE REAL ONE
 		}
 	}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetInventoryUpdate.java

@@ -97,9 +97,10 @@ public class PetInventoryUpdate extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetItemList.java

@@ -64,9 +64,10 @@ public class PetItemList extends L2GameServerPacket
 				writeH(temp.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : temp.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListBuy.java

@@ -68,9 +68,10 @@ public class PrivateStoreListBuy extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId());
 			writeQ(item.getPrice());
 			writeQ(item.getItem().getReferencePrice() * 2);

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreListSell.java

@@ -64,9 +64,10 @@ public class PrivateStoreListSell extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeQ(item.getPrice());
 			writeQ(item.getItem().getReferencePrice() * 2);
 		}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListBuy.java

@@ -67,9 +67,10 @@ public class PrivateStoreManageListBuy extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeQ(item.getItem().getReferencePrice() * 2);
 		}
 		

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PrivateStoreManageListSell.java

@@ -70,9 +70,10 @@ public class PrivateStoreManageListSell extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeQ(item.getItem().getReferencePrice() * 2);
 		}
 		// section 3

+ 5 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SellList.java

@@ -92,10 +92,11 @@ public class SellList extends L2GameServerPacket
 			{
 				writeH(item.getElementDefAttr(i));
 			}
-			
-			writeH(0x00); // Enchant effect 1
-			writeH(0x00); // Enchant effect 2
-			writeH(0x00); // Enchant effect 3
+			// Enchant Effects
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SortedWareHouseWithdrawalList.java

@@ -774,9 +774,10 @@ public class SortedWareHouseWithdrawalList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId());
 		}
 	}

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/TradeStart.java

@@ -65,9 +65,10 @@ public final class TradeStart extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 		}
 	}
 }

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/WareHouseDepositList.java

@@ -87,9 +87,10 @@ public final class WareHouseDepositList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId());
 		}
 		_items.clear();

+ 11 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/WareHouseWithdrawalList.java

@@ -56,8 +56,13 @@ public final class WareHouseWithdrawalList extends L2GameServerPacket
 	protected final void writeImpl()
 	{
 		writeC(0x42);
-		/*
-		 * 0x01-Private Warehouse 0x02-Clan Warehouse 0x03-Castle Warehouse 0x04-Warehouse
+		/**
+		 * <ul>
+		 * <li>0x01-Private Warehouse</li>
+		 * <li>0x02-Clan Warehouse</li>
+		 * <li>0x03-Castle Warehouse</li>
+		 * <li>0x04-Warehouse</li>
+		 * </ul>
 		 */
 		writeH(_whType);
 		writeQ(_playerAdena);
@@ -92,9 +97,10 @@ public final class WareHouseWithdrawalList extends L2GameServerPacket
 				writeH(item.getElementDefAttr(i));
 			}
 			// Enchant Effects
-			writeH(0x00);
-			writeH(0x00);
-			writeH(0x00);
+			for (int op : item.getEnchantOptions())
+			{
+				writeH(op);
+			}
 			writeD(item.getObjectId());
 		}
 	}