Noticias:

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

Menú Principal

Dressme Engine v3.2

Iniciado por Swarlog, Jul 29, 2025, 12:10 AM

Tema anterior - Siguiente tema

Swarlog

CitarCORE:

Index: java/l2r/gameserver/model/itemcontainer/PcInventory.java
===================================================================
--- java/l2r/gameserver/model/itemcontainer/PcInventory.java	(revision 232)
+++ java/l2r/gameserver/model/itemcontainer/PcInventory.java	(working copy)
@@ -852,7 +852,7 @@
 	{
 		int[][] paperdoll = new int[31][3];
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement2 = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
+			PreparedStatement statement2 = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level,visual_item_id FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
 		{
 			statement2.setInt(1, objectId);
 			try (ResultSet invdata = statement2.executeQuery())
@@ -861,7 +861,7 @@
 				{
 					int slot = invdata.getInt("loc_data");
 					paperdoll[slot][0] = invdata.getInt("object_id");
-					paperdoll[slot][1] = invdata.getInt("item_id");
+					paperdoll[slot][1] = invdata.getInt("visual_item_id") > 0 ? invdata.getInt("visual_item_id") : invdata.getInt("item_id");
 					paperdoll[slot][2] = invdata.getInt("enchant_level");
 					/*
 					 * if (slot == Inventory.PAPERDOLL_RHAND) { paperdoll[Inventory.PAPERDOLL_RHAND][0] = invdata.getInt("object_id"); paperdoll[Inventory.PAPERDOLL_RHAND][1] = invdata.getInt("item_id"); paperdoll[Inventory.PAPERDOLL_RHAND][2] = invdata.getInt("enchant_level"); }
Index: java/gr/sr/dressmeEngine/data/DressMeCloakData.java
===================================================================
--- java/gr/sr/dressmeEngine/data/DressMeCloakData.java	(revision 0)
+++ java/gr/sr/dressmeEngine/data/DressMeCloakData.java	(working copy)
@@ -0,0 +1,44 @@
+package gr.sr.dressmeEngine.data;
+
+public class DressMeCloakData
+{
+	private final int _id;
+	private final int _cloak;
+	private final String _name;
+	private final int _priceId;
+	private final long _priceCount;
+	
+	public DressMeCloakData(int id, int cloak, String name, int priceId, long priceCount)
+	{
+		_id = id;
+		_cloak = cloak;
+		_name = name;
+		_priceId = priceId;
+		_priceCount = priceCount;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public int getCloakId()
+	{
+		return _cloak;
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public int getPriceId()
+	{
+		return _priceId;
+	}
+	
+	public long getPriceCount()
+	{
+		return _priceCount;
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataParser/DressMeShieldParser.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataParser/DressMeShieldParser.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataParser/DressMeShieldParser.java	(working copy)
@@ -0,0 +1,90 @@
+package gr.sr.dressmeEngine.xml.dataParser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import l2r.Config;
+
+import gr.sr.data.xml.AbstractFileParser;
+import gr.sr.dressmeEngine.data.DressMeShieldData;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeShieldHolder;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+public final class DressMeShieldParser extends AbstractFileParser<DressMeShieldHolder>
+{
+	private final String SHIELD_FILE_PATH = Config.DATAPACK_ROOT + "/data/xml/sunrise/dressme/shield.xml";
+	
+	private static final DressMeShieldParser _instance = new DressMeShieldParser();
+	
+	public static DressMeShieldParser getInstance()
+	{
+		return _instance;
+	}
+	
+	private DressMeShieldParser()
+	{
+		super(DressMeShieldHolder.getInstance());
+	}
+	
+	@Override
+	public File getXMLFile()
+	{
+		return new File(SHIELD_FILE_PATH);
+	}
+	
+	@Override
+	protected void readData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		
+		File file = getXMLFile();
+		
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(in);
+			
+			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
+			{
+				if (n.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+					{
+						if (d.getNodeName().equalsIgnoreCase("shield"))
+						{
+							int number = Integer.parseInt(d.getAttributes().getNamedItem("number").getNodeValue());
+							int id = Integer.parseInt(d.getAttributes().getNamedItem("id").getNodeValue());
+							String name = d.getAttributes().getNamedItem("name").getNodeValue();
+							int itemId = 0;
+							long itemCount = 0;
+							
+							for (Node price = d.getFirstChild(); price != null; price = price.getNextSibling())
+							{
+								if ("price".equalsIgnoreCase(price.getNodeName()))
+								{
+									itemId = Integer.parseInt(price.getAttributes().getNamedItem("id").getNodeValue());
+									itemCount = Long.parseLong(price.getAttributes().getNamedItem("count").getNodeValue());
+								}
+							}
+							
+							getHolder().addShield(new DressMeShieldData(number, id, name, itemId, itemCount));
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warn(getClass().getSimpleName() + ": Error: " + e);
+		}
+	}
+}
\ No newline at end of file
Index: java/l2r/gameserver/network/serverpackets/CharInfo.java
===================================================================
--- java/l2r/gameserver/network/serverpackets/CharInfo.java	(revision 232)
+++ java/l2r/gameserver/network/serverpackets/CharInfo.java	(working copy)
@@ -232,7 +232,7 @@
 			
 			for (int slot : getPaperdollOrder())
 			{
-				writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
+				writeD(_activeChar.isInOlympiadMode() || !_activeChar.getVarB("showVisualChange") ? _activeChar.getInventory().getPaperdollItemDisplayId(slot) : _activeChar.getInventory().getPaperdollItemVisualDisplayId(slot));
 			}
 			
 			for (int slot : getPaperdollOrder())
Index: java/l2r/gameserver/GameServer.java
===================================================================
--- java/l2r/gameserver/GameServer.java	(revision 254)
+++ java/l2r/gameserver/GameServer.java	(working copy)
@@ -140,6 +140,7 @@
 import l2r.util.IPv4Filter;
 
 import gr.sr.configsEngine.ConfigsController;
+import gr.sr.dressmeEngine.DressMeLoader;
 import gr.sr.interf.SunriseEvents;
 import gr.sr.main.PlayerValues;
 import gr.sr.main.SunriseInfo;
@@ -395,6 +396,8 @@
 		// System.out.println("Loading static images....");
 		// CustomServerMods.getInstance().loadStaticImages();
 		
+		DressMeLoader.load();
+		
 		Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
 		
 		_log.info("IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());
Index: java/l2r/gameserver/network/serverpackets/UserInfo.java
===================================================================
--- java/l2r/gameserver/network/serverpackets/UserInfo.java	(revision 232)
+++ java/l2r/gameserver/network/serverpackets/UserInfo.java	(working copy)
@@ -123,7 +123,7 @@
 		
 		for (int slot : getPaperdollOrder())
 		{
-			writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
+			writeD(_activeChar.getInventory().getPaperdollItemVisualDisplayId(slot));
 		}
 		
 		for (int slot : getPaperdollOrder())
Index: java/gr/sr/dressmeEngine/DressMeLoader.java
===================================================================
--- java/gr/sr/dressmeEngine/DressMeLoader.java	(revision 0)
+++ java/gr/sr/dressmeEngine/DressMeLoader.java	(working copy)
@@ -0,0 +1,263 @@
+package gr.sr.dressmeEngine;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import l2r.gameserver.handler.VoicedCommandHandler;
+
+import gr.sr.dressmeEngine.data.DressMeArmorData;
+import gr.sr.dressmeEngine.data.DressMeHatData;
+import gr.sr.dressmeEngine.data.DressMeWeaponData;
+import gr.sr.dressmeEngine.handler.DressMeVCmd;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeArmorHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeHatHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeWeaponHolder;
+import gr.sr.dressmeEngine.xml.dataParser.DressMeArmorParser;
+import gr.sr.dressmeEngine.xml.dataParser.DressMeCloakParser;
+import gr.sr.dressmeEngine.xml.dataParser.DressMeHatParser;
+import gr.sr.dressmeEngine.xml.dataParser.DressMeShieldParser;
+import gr.sr.dressmeEngine.xml.dataParser.DressMeWeaponParser;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DressMeLoader
+{
+	private static final Logger _log = LoggerFactory.getLogger(DressMeLoader.class);
+	
+	public static Map<Integer, DressMeWeaponData> SWORD;
+	public static Map<Integer, DressMeWeaponData> BLUNT;
+	public static Map<Integer, DressMeWeaponData> DAGGER;
+	public static Map<Integer, DressMeWeaponData> BOW;
+	public static Map<Integer, DressMeWeaponData> POLE;
+	public static Map<Integer, DressMeWeaponData> FIST;
+	public static Map<Integer, DressMeWeaponData> DUAL;
+	public static Map<Integer, DressMeWeaponData> DUALFIST;
+	public static Map<Integer, DressMeWeaponData> BIGSWORD;
+	public static Map<Integer, DressMeWeaponData> ROD;
+	public static Map<Integer, DressMeWeaponData> BIGBLUNT;
+	public static Map<Integer, DressMeWeaponData> CROSSBOW;
+	public static Map<Integer, DressMeWeaponData> RAPIER;
+	public static Map<Integer, DressMeWeaponData> ANCIENTSWORD;
+	public static Map<Integer, DressMeWeaponData> DUALDAGGER;
+	
+	public static Map<Integer, DressMeArmorData> LIGHT;
+	public static Map<Integer, DressMeArmorData> HEAVY;
+	public static Map<Integer, DressMeArmorData> ROBE;
+	
+	public static Map<Integer, DressMeHatData> HAIR;
+	public static Map<Integer, DressMeHatData> HAIR2;
+	public static Map<Integer, DressMeHatData> HAIR_FULL;
+	
+	public static void load()
+	{
+		DressMeArmorParser.getInstance().load();
+		DressMeCloakParser.getInstance().load();
+		DressMeHatParser.getInstance().load();
+		DressMeShieldParser.getInstance().load();
+		DressMeWeaponParser.getInstance().load();
+		
+		SWORD = new HashMap<>();
+		BLUNT = new HashMap<>();
+		DAGGER = new HashMap<>();
+		BOW = new HashMap<>();
+		POLE = new HashMap<>();
+		FIST = new HashMap<>();
+		DUAL = new HashMap<>();
+		DUALFIST = new HashMap<>();
+		BIGSWORD = new HashMap<>();
+		ROD = new HashMap<>();
+		BIGBLUNT = new HashMap<>();
+		CROSSBOW = new HashMap<>();
+		RAPIER = new HashMap<>();
+		ANCIENTSWORD = new HashMap<>();
+		DUALDAGGER = new HashMap<>();
+		
+		LIGHT = new HashMap<>();
+		HEAVY = new HashMap<>();
+		ROBE = new HashMap<>();
+		
+		HAIR = new HashMap<>();
+		HAIR2 = new HashMap<>();
+		HAIR_FULL = new HashMap<>();
+		
+		parseWeapon();
+		parseArmor();
+		parseHat();
+		VoicedCommandHandler.getInstance().registerHandler(new DressMeVCmd());
+	}
+	
+	private static int parseWeapon()
+	{
+		int Sword = 1, Blunt = 1, Dagger = 1, Bow = 1, Pole = 1, Fist = 1, DualSword = 1, DualFist = 1, BigSword = 1, Rod = 1, BigBlunt = 1, Crossbow = 1, Rapier = 1, AncientSword = 1, DualDagger = 1;
+		
+		for (DressMeWeaponData weapon : DressMeWeaponHolder.getInstance().getAllWeapons())
+		{
+			if (weapon.getType().equals("SWORD") && !weapon.isBig())
+			{
+				SWORD.put(Sword, weapon);
+				Sword++;
+			}
+			else if (weapon.getType().equals("BLUNT") && !weapon.isBig())
+			{
+				BLUNT.put(Blunt, weapon);
+				Blunt++;
+			}
+			else if (weapon.getType().equals("SWORD") && weapon.isBig())
+			{
+				BIGSWORD.put(BigSword, weapon);
+				BigSword++;
+			}
+			else if (weapon.getType().equals("BLUNT") && weapon.isBig())
+			{
+				BIGBLUNT.put(BigBlunt, weapon);
+				BigBlunt++;
+			}
+			else if (weapon.getType().equals("DAGGER"))
+			{
+				DAGGER.put(Dagger, weapon);
+				Dagger++;
+			}
+			else if (weapon.getType().equals("BOW"))
+			{
+				BOW.put(Bow, weapon);
+				Bow++;
+			}
+			else if (weapon.getType().equals("POLE"))
+			{
+				POLE.put(Pole, weapon);
+				Pole++;
+			}
+			else if (weapon.getType().equals("FIST"))
+			{
+				FIST.put(Fist, weapon);
+				Fist++;
+			}
+			else if (weapon.getType().equals("DUAL"))
+			{
+				DUAL.put(DualSword, weapon);
+				DualSword++;
+			}
+			else if (weapon.getType().equals("DUALFIST"))
+			{
+				DUALFIST.put(DualFist, weapon);
+				DualFist++;
+			}
+			else if (weapon.getType().equals("FISHINGROD"))
+			{
+				ROD.put(Rod, weapon);
+				Rod++;
+			}
+			else if (weapon.getType().equals("CROSSBOW"))
+			{
+				CROSSBOW.put(Crossbow, weapon);
+				Crossbow++;
+			}
+			else if (weapon.getType().equals("RAPIER"))
+			{
+				RAPIER.put(Rapier, weapon);
+				Rapier++;
+			}
+			else if (weapon.getType().equals("ANCIENTSWORD"))
+			{
+				ANCIENTSWORD.put(AncientSword, weapon);
+				AncientSword++;
+			}
+			else if (weapon.getType().equals("DUALDAGGER"))
+			{
+				DUALDAGGER.put(DualDagger, weapon);
+				DualDagger++;
+			}
+			else
+			{
+				_log.error("Dress me system: Can't find type: " + weapon.getType());
+			}
+		}
+		
+		_log.info("Dress me system: Loaded " + (Sword - 1) + " Sword(s).");
+		_log.info("Dress me system: Loaded " + (Blunt - 1) + " Blunt(s).");
+		_log.info("Dress me system: Loaded " + (Dagger - 1) + " Dagger(s).");
+		_log.info("Dress me system: Loaded " + (Bow - 1) + " Bow(s).");
+		_log.info("Dress me system: Loaded " + (Pole - 1) + " Pole(s).");
+		_log.info("Dress me system: Loaded " + (Fist - 1) + " Fist(s).");
+		_log.info("Dress me system: Loaded " + (DualSword - 1) + " Dual Sword(s).");
+		_log.info("Dress me system: Loaded " + (DualFist - 1) + " Dual Fist(s).");
+		_log.info("Dress me system: Loaded " + (BigSword - 1) + " Big Sword(s).");
+		_log.info("Dress me system: Loaded " + (Rod - 1) + " Rod(s).");
+		_log.info("Dress me system: Loaded " + (BigBlunt - 1) + " Big Blunt(s).");
+		_log.info("Dress me system: Loaded " + (Crossbow - 1) + " Crossbow(s).");
+		_log.info("Dress me system: Loaded " + (Rapier - 1) + " Rapier(s).");
+		_log.info("Dress me system: Loaded " + (AncientSword - 1) + " Ancient Sword(s).");
+		_log.info("Dress me system: Loaded " + (DualDagger - 1) + " Dual Dagger(s).");
+		
+		return 0;
+	}
+	
+	private static int parseArmor()
+	{
+		int light = 1, heavy = 1, robe = 1;
+		
+		for (DressMeArmorData armor : DressMeArmorHolder.getInstance().getAllDress())
+		{
+			if (armor.getType().equals("LIGHT"))
+			{
+				LIGHT.put(light, armor);
+				light++;
+			}
+			else if (armor.getType().equals("HEAVY"))
+			{
+				HEAVY.put(heavy, armor);
+				heavy++;
+			}
+			else if (armor.getType().equals("ROBE"))
+			{
+				ROBE.put(robe, armor);
+				robe++;
+			}
+			else
+			{
+				_log.error("Dress me system: Can't find type: " + armor.getType());
+			}
+		}
+		
+		_log.info("Dress me system: Loaded " + (light - 1) + " Light Armor(s).");
+		_log.info("Dress me system: Loaded " + (heavy - 1) + " Heavy Armor(s).");
+		_log.info("Dress me system: Loaded " + (robe - 1) + " Robe Armor(s).");
+		
+		return 0;
+	}
+	
+	private static int parseHat()
+	{
+		int hair = 1, hair2 = 1, full_hair = 1;
+		
+		for (DressMeHatData hat : DressMeHatHolder.getInstance().getAllHats())
+		{
+			if (hat.getSlot() == 1)
+			{
+				HAIR.put(hair, hat);
+				hair++;
+			}
+			else if (hat.getSlot() == 2)
+			{
+				HAIR2.put(hair2, hat);
+				hair2++;
+			}
+			else if (hat.getSlot() == 3)
+			{
+				HAIR_FULL.put(full_hair, hat);
+				full_hair++;
+			}
+			else
+			{
+				_log.error("Dress me system: Can't find slot: " + hat.getSlot());
+			}
+		}
+		
+		_log.info("Dress me system: Loaded " + (hair - 1) + " Hair(s).");
+		_log.info("Dress me system: Loaded " + (hair2 - 1) + " Hair2(s).");
+		_log.info("Dress me system: Loaded " + (full_hair - 1) + " Full Hair(s).");
+		
+		return 0;
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataParser/DressMeCloakParser.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataParser/DressMeCloakParser.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataParser/DressMeCloakParser.java	(working copy)
@@ -0,0 +1,90 @@
+package gr.sr.dressmeEngine.xml.dataParser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import l2r.Config;
+
+import gr.sr.data.xml.AbstractFileParser;
+import gr.sr.dressmeEngine.data.DressMeCloakData;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeCloakHolder;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+public final class DressMeCloakParser extends AbstractFileParser<DressMeCloakHolder>
+{
+	private final String CLOAK_FILE_PATH = Config.DATAPACK_ROOT + "/data/xml/sunrise/dressme/cloak.xml";
+	
+	private static final DressMeCloakParser _instance = new DressMeCloakParser();
+	
+	public static DressMeCloakParser getInstance()
+	{
+		return _instance;
+	}
+	
+	private DressMeCloakParser()
+	{
+		super(DressMeCloakHolder.getInstance());
+	}
+	
+	@Override
+	public File getXMLFile()
+	{
+		return new File(CLOAK_FILE_PATH);
+	}
+	
+	@Override
+	protected void readData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		
+		File file = getXMLFile();
+		
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(in);
+			
+			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
+			{
+				if (n.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+					{
+						if (d.getNodeName().equalsIgnoreCase("cloak"))
+						{
+							int number = Integer.parseInt(d.getAttributes().getNamedItem("number").getNodeValue());
+							int id = Integer.parseInt(d.getAttributes().getNamedItem("id").getNodeValue());
+							String name = d.getAttributes().getNamedItem("name").getNodeValue();
+							int itemId = 0;
+							long itemCount = 0;
+							
+							for (Node price = d.getFirstChild(); price != null; price = price.getNextSibling())
+							{
+								if ("price".equalsIgnoreCase(price.getNodeName()))
+								{
+									itemId = Integer.parseInt(price.getAttributes().getNamedItem("id").getNodeValue());
+									itemCount = Long.parseLong(price.getAttributes().getNamedItem("count").getNodeValue());
+								}
+							}
+							
+							getHolder().addCloak(new DressMeCloakData(number, id, name, itemId, itemCount));
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warn(getClass().getSimpleName() + ": Error: " + e);
+		}
+	}
+}
\ No newline at end of file
Index: java/gr/sr/dressmeEngine/xml/dataParser/DressMeWeaponParser.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataParser/DressMeWeaponParser.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataParser/DressMeWeaponParser.java	(working copy)
@@ -0,0 +1,94 @@
+package gr.sr.dressmeEngine.xml.dataParser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import l2r.Config;
+
+import gr.sr.data.xml.AbstractFileParser;
+import gr.sr.dressmeEngine.data.DressMeWeaponData;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeWeaponHolder;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+public final class DressMeWeaponParser extends AbstractFileParser<DressMeWeaponHolder>
+{
+	private final String WEAPON_FILE_PATH = Config.DATAPACK_ROOT + "/data/xml/sunrise/dressme/weapon.xml";
+	
+	private static final DressMeWeaponParser _instance = new DressMeWeaponParser();
+	
+	public static DressMeWeaponParser getInstance()
+	{
+		return _instance;
+	}
+	
+	private DressMeWeaponParser()
+	{
+		super(DressMeWeaponHolder.getInstance());
+	}
+	
+	@Override
+	public File getXMLFile()
+	{
+		return new File(WEAPON_FILE_PATH);
+	}
+	
+	@Override
+	protected void readData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		
+		File file = getXMLFile();
+		
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(in);
+			
+			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
+			{
+				if (n.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+					{
+						if (d.getNodeName().equalsIgnoreCase("weapon"))
+						{
+							int id = Integer.parseInt(d.getAttributes().getNamedItem("id").getNodeValue());
+							String name = d.getAttributes().getNamedItem("name").getNodeValue();
+							String type = d.getAttributes().getNamedItem("type").getNodeValue();
+							
+							Node isBigNode = d.getAttributes().getNamedItem("isBig");
+							Boolean isBig = (isBigNode != null) && Boolean.parseBoolean(isBigNode.getNodeValue());
+							
+							int itemId = 0;
+							long itemCount = 0;
+							
+							for (Node price = d.getFirstChild(); price != null; price = price.getNextSibling())
+							{
+								if ("price".equalsIgnoreCase(price.getNodeName()))
+								{
+									itemId = Integer.parseInt(price.getAttributes().getNamedItem("id").getNodeValue());
+									itemCount = Long.parseLong(price.getAttributes().getNamedItem("count").getNodeValue());
+								}
+							}
+							
+							getHolder().addWeapon(new DressMeWeaponData(id, name, type, isBig, itemId, itemCount));
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warn(getClass().getSimpleName() + ": Error: " + e);
+		}
+	}
+}
\ No newline at end of file
Index: java/gr/sr/dressmeEngine/util/Util.java
===================================================================
--- java/gr/sr/dressmeEngine/util/Util.java	(revision 0)
+++ java/gr/sr/dressmeEngine/util/Util.java	(working copy)
@@ -0,0 +1,57 @@
+package gr.sr.dressmeEngine.util;
+
+import java.text.NumberFormat;
+import java.util.Locale;
+
+import l2r.gameserver.data.xml.impl.ItemData;
+import l2r.gameserver.model.actor.instance.L2PcInstance;
+import l2r.gameserver.model.itemcontainer.Inventory;
+
+public class Util
+{
+	public static String getItemName(int itemId)
+	{
+		if (itemId == Inventory.ITEM_ID_FAME)
+		{
+			return "Fame";
+		}
+		else if (itemId == Inventory.ITEM_ID_PC_BANG_POINTS)
+		{
+			return "PC Bang point";
+		}
+		else if (itemId == Inventory.ITEM_ID_CLAN_REPUTATION_SCORE)
+		{
+			return "Clan reputation";
+		}
+		else
+		{
+			return ItemData.getInstance().getTemplate(itemId).getName();
+		}
+	}
+	
+	public static String getItemIcon(int itemId)
+	{
+		return ItemData.getInstance().getTemplate(itemId).getIcon();
+	}
+	
+	public static String formatPay(L2PcInstance player, long count, int item)
+	{
+		if (count > 0)
+		{
+			return formatAdena(count) + " " + getItemName(item);
+		}
+		return "Free";
+	}
+	
+	private static NumberFormat adenaFormatter = NumberFormat.getIntegerInstance(Locale.FRANCE);
+	
+	/**
+	 * Return amount of adena formatted with " " delimiter
+	 * @param amount
+	 * @return String formatted adena amount
+	 */
+	public static String formatAdena(long amount)
+	{
+		return adenaFormatter.format(amount);
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataParser/DressMeArmorParser.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataParser/DressMeArmorParser.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataParser/DressMeArmorParser.java	(working copy)
@@ -0,0 +1,103 @@
+package gr.sr.dressmeEngine.xml.dataParser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import l2r.Config;
+
+import gr.sr.data.xml.AbstractFileParser;
+import gr.sr.dressmeEngine.data.DressMeArmorData;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeArmorHolder;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+public final class DressMeArmorParser extends AbstractFileParser<DressMeArmorHolder>
+{
+	private final String ARMOR_FILE_PATH = Config.DATAPACK_ROOT + "/data/xml/sunrise/dressme/armor.xml";
+	
+	private static final DressMeArmorParser _instance = new DressMeArmorParser();
+	
+	public static DressMeArmorParser getInstance()
+	{
+		return _instance;
+	}
+	
+	private DressMeArmorParser()
+	{
+		super(DressMeArmorHolder.getInstance());
+	}
+	
+	@Override
+	public File getXMLFile()
+	{
+		return new File(ARMOR_FILE_PATH);
+	}
+	
+	@Override
+	protected void readData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		
+		File file = getXMLFile();
+		
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(in);
+			
+			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
+			{
+				if (n.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+					{
+						if (d.getNodeName().equalsIgnoreCase("dress"))
+						{
+							int id = Integer.parseInt(d.getAttributes().getNamedItem("id").getNodeValue());
+							String name = d.getAttributes().getNamedItem("name").getNodeValue();
+							String type = d.getAttributes().getNamedItem("type").getNodeValue();
+							
+							int itemId = 0;
+							long itemCount = 0;
+							int chest = 0;
+							int legs = 0;
+							int gloves = 0;
+							int feet = 0;
+							
+							for (Node att = d.getFirstChild(); att != null; att = att.getNextSibling())
+							{
+								if ("set".equalsIgnoreCase(att.getNodeName()))
+								{
+									chest = Integer.parseInt(att.getAttributes().getNamedItem("chest").getNodeValue());
+									legs = Integer.parseInt(att.getAttributes().getNamedItem("legs").getNodeValue());
+									gloves = Integer.parseInt(att.getAttributes().getNamedItem("gloves").getNodeValue());
+									feet = Integer.parseInt(att.getAttributes().getNamedItem("feet").getNodeValue());
+								}
+								
+								if ("price".equalsIgnoreCase(att.getNodeName()))
+								{
+									itemId = Integer.parseInt(att.getAttributes().getNamedItem("id").getNodeValue());
+									itemCount = Long.parseLong(att.getAttributes().getNamedItem("count").getNodeValue());
+								}
+							}
+							
+							getHolder().addDress(new DressMeArmorData(id, name, type, chest, legs, gloves, feet, itemId, itemCount));
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warn(getClass().getSimpleName() + ": Error: " + e);
+		}
+	}
+}
\ No newline at end of file
Index: java/l2r/gameserver/model/itemcontainer/Mail.java
===================================================================
--- java/l2r/gameserver/model/itemcontainer/Mail.java	(revision 232)
+++ java/l2r/gameserver/model/itemcontainer/Mail.java	(working copy)
@@ -118,7 +118,7 @@
 	public void restore()
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time FROM items WHERE owner_id=? AND loc=? AND loc_data=?"))
+			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time, visual_item_id FROM items WHERE owner_id=? AND loc=? AND loc_data=?"))
 		{
 			statement.setInt(1, getOwnerId());
 			statement.setString(2, getBaseLocation().name());
Index: java/gr/sr/dressmeEngine/handler/DressMeVCmd.java
===================================================================
--- java/gr/sr/dressmeEngine/handler/DressMeVCmd.java	(revision 0)
+++ java/gr/sr/dressmeEngine/handler/DressMeVCmd.java	(working copy)
@@ -0,0 +1,1063 @@
+package gr.sr.dressmeEngine.handler;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import l2r.gameserver.cache.HtmCache;
+import l2r.gameserver.data.xml.impl.ArmorSetsData;
+import l2r.gameserver.data.xml.impl.ItemData;
+import l2r.gameserver.handler.IVoicedCommandHandler;
+import l2r.gameserver.model.L2ArmorSet;
+import l2r.gameserver.model.actor.instance.L2PcInstance;
+import l2r.gameserver.model.itemcontainer.Inventory;
+import l2r.gameserver.model.items.L2Item;
+import l2r.gameserver.model.items.instance.L2ItemInstance;
+import l2r.gameserver.model.items.type.ItemType;
+import l2r.gameserver.network.serverpackets.NpcHtmlMessage;
+
+import gr.sr.dressmeEngine.DressMeHandler;
+import gr.sr.dressmeEngine.data.DressMeArmorData;
+import gr.sr.dressmeEngine.data.DressMeCloakData;
+import gr.sr.dressmeEngine.data.DressMeHatData;
+import gr.sr.dressmeEngine.data.DressMeShieldData;
+import gr.sr.dressmeEngine.data.DressMeWeaponData;
+import gr.sr.dressmeEngine.util.Util;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeArmorHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeCloakHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeHatHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeShieldHolder;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeWeaponHolder;
+import gr.sr.main.Conditions;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DressMeVCmd implements IVoicedCommandHandler
+{
+	private static final Logger _log = LoggerFactory.getLogger(DressMeVCmd.class);
+	
+	String index_path = "data/html/sunrise/dressme/index.htm";
+	String info_path = "data/html/sunrise/dressme/info.htm";
+	String undressme_path = "data/html/sunrise/dressme/undressme.htm";
+	
+	String index_armor_path = "data/html/sunrise/dressme/index-armor.htm";
+	String template_armor_path = "data/html/sunrise/dressme/template-armor.htm";
+	
+	String index_cloak = "data/html/sunrise/dressme/index-cloak.htm";
+	String template_cloak_path = "data/html/sunrise/dressme/template-cloak.htm";
+	
+	String index_shield_path = "data/html/sunrise/dressme/index-shield.htm";
+	String template_shield_path = "data/html/sunrise/dressme/template-shield.htm";
+	
+	String index_weapon_path = "data/html/sunrise/dressme/index-weapon.htm";
+	String template_weapon_path = "data/html/sunrise/dressme/template-weapon.htm";
+	
+	String index_hat_path = "data/html/sunrise/dressme/index-hat.htm";
+	String template_hat_path = "data/html/sunrise/dressme/template-hat.htm";
+	
+	String dress_cloak_path = "data/html/sunrise/dressme/dress-cloak.htm";
+	String dress_shield_path = "data/html/sunrise/dressme/dress-shield.htm";
+	String dress_armor_path = "data/html/sunrise/dressme/dress-armor.htm";
+	String dress_weapon_path = "data/html/sunrise/dressme/dress-weapon.htm";
+	String dress_hat_path = "data/html/sunrise/dressme/dress-hat.htm";
+	
+	private final String[] _commandList = new String[]
+	{
+		"dressme",
+		"undressme",
+		
+		"dressinfo",
+		
+		"showdress",
+		"hidedress",
+		
+		"dressme-armor",
+		"dress-armor",
+		"dress-armorpage",
+		"undressme-armor",
+		
+		"dressme-cloak",
+		"dress-cloak",
+		"dress-cloakpage",
+		"undressme-cloak",
+		
+		"dressme-shield",
+		"dress-shield",
+		"dress-shieldpage",
+		"undressme-shield",
+		
+		"dressme-weapon",
+		"dress-weapon",
+		"dress-weaponpage",
+		"undressme-weapon",
+		
+		"dressme-hat",
+		"dress-hat",
+		"dress-hatpage",
+		"undressme-hat"
+	};
+	
+	@Override
+	public boolean useVoicedCommand(String command, L2PcInstance player, String args)
+	{
+		if (command.equals("dressme"))
+		{
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_path);
+			html = html.replace("<?show_hide?>", !player.getVarB("showVisualChange") ? "Show visual equip on other player!" : "Hide visual equip on other player!");
+			html = html.replace("<?show_hide_b?>", !player.getVarB("showVisualChange") ? "showdress" : "hidedress");
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dressme-armor"))
+		{
+			L2ItemInstance slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+			if ((slot == null) || !slot.isArmor())
+			{
+				player.sendMessage("Error: Armor chest must be equiped!");
+				return false;
+			}
+			
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_armor_path);
+			String template = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), template_armor_path);
+			String block = "";
+			String list = "";
+			
+			if (args == null)
+			{
+				args = "1";
+			}
+			
+			String[] param = args.split(" ");
+			
+			final int page = param[0].length() > 0 ? Integer.parseInt(param[0]) : 1;
+			final int perpage = 5;
+			int counter = 0;
+			
+			String type = slot.getArmorItem().getItemType().getDescription();
+			Map<Integer, DressMeArmorData> map = DressMeHandler.initArmorMap(type, new HashMap<>(), slot);
+			if (map == null)
+			{
+				_log.error("Dress me system: Armor Map is null.");
+				return false;
+			}
+			
+			for (int i = (page - 1) * perpage; i < map.size(); i++)
+			{
+				DressMeArmorData dress = map.get(i + 1);
+				if (dress != null)
+				{
+					block = template;
+					
+					String dress_name = dress.getName();
+					
+					if (dress_name.length() > 29)
+					{
+						dress_name = dress_name.substring(0, 29) + "...";
+					}
+					
+					block = block.replace("{bypass}", "bypass -h voice .dress-armorpage " + dress.getId());
+					block = block.replace("{name}", dress_name);
+					block = block.replace("{price}", Util.formatPay(player, dress.getPriceCount(), dress.getPriceId()));
+					block = block.replace("{icon}", Util.getItemIcon(dress.getChest()));
+					list += block;
+				}
+				
+				counter++;
+				
+				if (counter >= perpage)
+				{
+					break;
+				}
+			}
+			
+			double count = Math.ceil((double) map.size() / perpage);
+			int inline = 1;
+			String navigation = "";
+			
+			for (int i = 1; i <= count; i++)
+			{
+				if (i == page)
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"[" + i + "]\" action=\"bypass -h voice .dressme-armor " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				else
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"" + i + "\" action=\"bypass -h voice .dressme-armor " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				
+				if (inline == 7)
+				{
+					navigation += "</tr><tr>";
+					inline = 0;
+				}
+				inline++;
+			}
+			
+			if (navigation.equals(""))
+			{
+				navigation = "<td width=30 align=center valign=top>...</td>";
+			}
+			
+			html = html.replace("{list}", list);
+			html = html.replace("{navigation}", navigation);
+			
+			NpcHtmlMessage msg = new NpcHtmlMessage();
+			msg.setHtml(html);
+			player.sendPacket(msg);
+			return true;
+		}
+		else if (command.equals("dressme-cloak"))
+		{
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_cloak);
+			String template = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), template_cloak_path);
+			String block = "";
+			String list = "";
+			
+			if (args == null)
+			{
+				args = "1";
+			}
+			
+			String[] param = args.split(" ");
+			
+			final int page = param[0].length() > 0 ? Integer.parseInt(param[0]) : 1;
+			final int perpage = 5;
+			int counter = 0;
+			
+			for (int i = (page - 1) * perpage; i < DressMeCloakHolder.getInstance().size(); i++)
+			{
+				DressMeCloakData cloak = DressMeCloakHolder.getInstance().getCloak(i + 1);
+				if (cloak != null)
+				{
+					block = template;
+					
+					String cloak_name = cloak.getName();
+					
+					if (cloak_name.length() > 29)
+					{
+						cloak_name = cloak_name.substring(0, 29) + "...";
+					}
+					
+					block = block.replace("{bypass}", "bypass -h voice .dress-cloakpage " + (i + 1));
+					block = block.replace("{name}", cloak_name);
+					block = block.replace("{price}", Util.formatPay(player, cloak.getPriceCount(), cloak.getPriceId()));
+					block = block.replace("{icon}", Util.getItemIcon(cloak.getCloakId()));
+					list += block;
+				}
+				
+				counter++;
+				
+				if (counter >= perpage)
+				{
+					break;
+				}
+			}
+			
+			double count = Math.ceil((double) DressMeCloakHolder.getInstance().size() / perpage);
+			int inline = 1;
+			String navigation = "";
+			
+			for (int i = 1; i <= count; i++)
+			{
+				if (i == page)
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"[" + i + "]\" action=\"bypass -h voice .dressme-cloak " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				else
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"" + i + "\" action=\"bypass -h voice .dressme-cloak " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				
+				if (inline == 7)
+				{
+					navigation += "</tr><tr>";
+					inline = 0;
+				}
+				inline++;
+			}
+			
+			if (navigation.equals(""))
+			{
+				navigation = "<td width=30 align=center valign=top>...</td>";
+			}
+			
+			html = html.replace("{list}", list);
+			html = html.replace("{navigation}", navigation);
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dressme-shield"))
+		{
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_shield_path);
+			String template = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), template_shield_path);
+			String block = "";
+			String list = "";
+			
+			if (args == null)
+			{
+				args = "1";
+			}
+			
+			String[] param = args.split(" ");
+			
+			final int page = param[0].length() > 0 ? Integer.parseInt(param[0]) : 1;
+			final int perpage = 5;
+			int counter = 0;
+			
+			for (int i = (page - 1) * perpage; i < DressMeShieldHolder.getInstance().size(); i++)
+			{
+				DressMeShieldData shield = DressMeShieldHolder.getInstance().getShield(i + 1);
+				if (shield != null)
+				{
+					block = template;
+					
+					String shield_name = shield.getName();
+					
+					if (shield_name.length() > 29)
+					{
+						shield_name = shield_name.substring(0, 29) + "...";
+					}
+					
+					block = block.replace("{bypass}", "bypass -h voice .dress-shieldpage " + (i + 1));
+					block = block.replace("{name}", shield_name);
+					block = block.replace("{price}", Util.formatPay(player, shield.getPriceCount(), shield.getPriceId()));
+					block = block.replace("{icon}", Util.getItemIcon(shield.getShieldId()));
+					list += block;
+				}
+				
+				counter++;
+				
+				if (counter >= perpage)
+				{
+					break;
+				}
+			}
+			
+			double count = Math.ceil((double) DressMeShieldHolder.getInstance().size() / perpage);
+			int inline = 1;
+			String navigation = "";
+			
+			for (int i = 1; i <= count; i++)
+			{
+				if (i == page)
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"[" + i + "]\" action=\"bypass -h voice .dressme-shield " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				else
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"" + i + "\" action=\"bypass -h voice .dressme-shield " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				
+				if (inline == 7)
+				{
+					navigation += "</tr><tr>";
+					inline = 0;
+				}
+				inline++;
+			}
+			
+			if (navigation.equals(""))
+			{
+				navigation = "<td width=30 align=center valign=top>...</td>";
+			}
+			
+			html = html.replace("{list}", list);
+			html = html.replace("{navigation}", navigation);
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dressme-weapon"))
+		{
+			L2ItemInstance slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+			if (slot == null)
+			{
+				player.sendMessage("Error: Weapon must be equiped!");
+				return false;
+			}
+			
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_weapon_path);
+			String template = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), template_weapon_path);
+			String block = "";
+			String list = "";
+			
+			if (args == null)
+			{
+				args = "1";
+			}
+			
+			String[] param = args.split(" ");
+			
+			final int page = param[0].length() > 0 ? Integer.parseInt(param[0]) : 1;
+			final int perpage = 5;
+			int counter = 0;
+			
+			ItemType type = slot.getItemType();
+			Map<Integer, DressMeWeaponData> map = DressMeHandler.initWeaponMap(type.toString(), new HashMap<>(), slot);
+			if (map == null)
+			{
+				_log.error("Dress me system: Weapon Map is null.");
+				return false;
+			}
+			
+			for (int i = (page - 1) * perpage; i < map.size(); i++)
+			{
+				DressMeWeaponData weapon = map.get(i + 1);
+				if (weapon != null)
+				{
+					block = template;
+					
+					String cloak_name = weapon.getName();
+					
+					if (cloak_name.length() > 29)
+					{
+						cloak_name = cloak_name.substring(0, 29) + "...";
+					}
+					
+					block = block.replace("{bypass}", "bypass -h voice .dress-weaponpage " + weapon.getId());
+					block = block.replace("{name}", cloak_name);
+					block = block.replace("{price}", Util.formatPay(player, weapon.getPriceCount(), weapon.getPriceId()));
+					block = block.replace("{icon}", Util.getItemIcon(weapon.getId()));
+					list += block;
+				}
+				
+				counter++;
+				
+				if (counter >= perpage)
+				{
+					break;
+				}
+			}
+			
+			double count = Math.ceil((double) map.size() / perpage);
+			int inline = 1;
+			String navigation = "";
+			
+			for (int i = 1; i <= count; i++)
+			{
+				if (i == page)
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"[" + i + "]\" action=\"bypass -h voice .dressme-weapon " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				else
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"" + i + "\" action=\"bypass -h voice .dressme-weapon " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				
+				if (inline == 7)
+				{
+					navigation += "</tr><tr>";
+					inline = 0;
+				}
+				inline++;
+			}
+			
+			if (navigation.equals(""))
+			{
+				navigation = "<td width=30 align=center valign=top>...</td>";
+			}
+			
+			html = html.replace("{list}", list);
+			html = html.replace("{navigation}", navigation);
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dressme-hat"))
+		{
+			L2ItemInstance slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR);
+			if (slot == null)
+			{
+				slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR2);
+			}
+			
+			if (slot == null)
+			{
+				player.sendMessage("Error: Hat must be equiped!");
+				return false;
+			}
+			
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), index_hat_path);
+			String template = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), template_hat_path);
+			String block = "";
+			String list = "";
+			
+			if (args == null)
+			{
+				args = "1";
+			}
+			
+			String[] param = args.split(" ");
+			
+			final int page = param[0].length() > 0 ? Integer.parseInt(param[0]) : 1;
+			final int perpage = 5;
+			int counter = 0;
+			
+			Map<Integer, DressMeHatData> map = DressMeHandler.initHatMap(new HashMap<>(), slot);
+			if (map == null)
+			{
+				_log.error("Dress me system: Hat Map is null.");
+				return false;
+			}
+			
+			for (int i = (page - 1) * perpage; i < map.size(); i++)
+			{
+				DressMeHatData hat = map.get(i + 1);
+				if (hat != null)
+				{
+					block = template;
+					
+					String hat_name = hat.getName();
+					
+					if (hat_name.length() > 29)
+					{
+						hat_name = hat_name.substring(0, 29) + "...";
+					}
+					
+					block = block.replace("{bypass}", "bypass -h voice .dress-hatpage " + hat.getId());
+					block = block.replace("{name}", hat_name);
+					block = block.replace("{price}", Util.formatPay(player, hat.getPriceCount(), hat.getPriceId()));
+					block = block.replace("{icon}", Util.getItemIcon(hat.getHatId()));
+					list += block;
+				}
+				
+				counter++;
+				
+				if (counter >= perpage)
+				{
+					break;
+				}
+			}
+			
+			double count = Math.ceil((double) map.size() / perpage);
+			int inline = 1;
+			String navigation = "";
+			
+			for (int i = 1; i <= count; i++)
+			{
+				if (i == page)
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"[" + i + "]\" action=\"bypass -h voice .dressme-hat " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				else
+				{
+					navigation += "<td width=25 align=center valign=top><button value=\"" + i + "\" action=\"bypass -h voice .dressme-hat " + i + "\" width=32 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>";
+				}
+				
+				if (inline == 7)
+				{
+					navigation += "</tr><tr>";
+					inline = 0;
+				}
+				inline++;
+			}
+			
+			if (navigation.equals(""))
+			{
+				navigation = "<td width=30 align=center valign=top>...</td>";
+			}
+			
+			html = html.replace("{list}", list);
+			html = html.replace("{navigation}", navigation);
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dress-armorpage"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			DressMeArmorData dress = DressMeArmorHolder.getInstance().getArmor(set);
+			if (dress != null)
+			{
+				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), dress_armor_path);
+				
+				Inventory inv = player.getInventory();
+				
+				L2ItemInstance my_chest = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+				html = html.replace("{my_chest_icon}", my_chest == null ? "icon.NOIMAGE" : my_chest.getItem().getIcon());
+				L2ItemInstance my_legs = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+				html = html.replace("{my_legs_icon}", my_legs == null ? "icon.NOIMAGE" : my_legs.getItem().getIcon());
+				L2ItemInstance my_gloves = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
+				html = html.replace("{my_gloves_icon}", my_gloves == null ? "icon.NOIMAGE" : my_gloves.getItem().getIcon());
+				L2ItemInstance my_feet = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
+				html = html.replace("{my_feet_icon}", my_feet == null ? "icon.NOIMAGE" : my_feet.getItem().getIcon());
+				
+				html = html.replace("{bypass}", "bypass -h voice .dress-armor " + set);
+				html = html.replace("{name}", dress.getName());
+				html = html.replace("{price}", Util.formatPay(player, dress.getPriceCount(), dress.getPriceId()));
+				
+				L2Item chest = ItemData.getInstance().getTemplate(dress.getChest());
+				html = html.replace("{chest_icon}", chest.getIcon());
+				html = html.replace("{chest_name}", chest.getName());
+				html = html.replace("{chest_grade}", chest.getItemGrade().name());
+				
+				if (dress.getLegs() != -1)
+				{
+					L2Item legs = ItemData.getInstance().getTemplate(dress.getLegs());
+					html = html.replace("{legs_icon}", legs.getIcon());
+					html = html.replace("{legs_name}", legs.getName());
+					html = html.replace("{legs_grade}", legs.getItemGrade().name());
+				}
+				else
+				{
+					html = html.replace("{legs_icon}", "icon.NOIMAGE");
+					html = html.replace("{legs_name}", "<font color=FF0000>...</font>");
+					html = html.replace("{legs_grade}", "NO");
+				}
+				
+				L2Item gloves = ItemData.getInstance().getTemplate(dress.getGloves());
+				html = html.replace("{gloves_icon}", gloves.getIcon());
+				html = html.replace("{gloves_name}", gloves.getName());
+				html = html.replace("{gloves_grade}", gloves.getItemGrade().name());
+				
+				L2Item feet = ItemData.getInstance().getTemplate(dress.getFeet());
+				html = html.replace("{feet_icon}", feet.getIcon());
+				html = html.replace("{feet_name}", feet.getName());
+				html = html.replace("{feet_grade}", feet.getItemGrade().name());
+				
+				sendHtml(player, html);
+				return true;
+			}
+			return false;
+		}
+		else if (command.equals("dress-cloakpage"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			DressMeCloakData cloak = DressMeCloakHolder.getInstance().getCloak(set);
+			if (cloak != null)
+			{
+				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), dress_cloak_path);
+				
+				Inventory inv = player.getInventory();
+				L2ItemInstance my_cloak = inv.getPaperdollItem(Inventory.PAPERDOLL_CLOAK);
+				html = html.replace("{my_cloak_icon}", my_cloak == null ? "icon.NOIMAGE" : my_cloak.getItem().getIcon());
+				
+				html = html.replace("{bypass}", "bypass -h voice .dress-cloak " + cloak.getId());
+				html = html.replace("{name}", cloak.getName());
+				html = html.replace("{price}", Util.formatPay(player, cloak.getPriceCount(), cloak.getPriceId()));
+				
+				L2Item item = ItemData.getInstance().getTemplate(cloak.getCloakId());
+				html = html.replace("{item_icon}", item.getIcon());
+				html = html.replace("{item_name}", item.getName());
+				html = html.replace("{item_grade}", item.getItemGrade().name());
+				
+				sendHtml(player, html);
+				return true;
+			}
+			return false;
+		}
+		else if (command.equals("dress-shieldpage"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			DressMeShieldData shield = DressMeShieldHolder.getInstance().getShield(set);
+			if (shield != null)
+			{
+				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), dress_shield_path);
+				
+				Inventory inv = player.getInventory();
+				L2ItemInstance my_shield = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+				html = html.replace("{my_shield_icon}", my_shield == null ? "icon.NOIMAGE" : my_shield.getItem().getIcon());
+				
+				html = html.replace("{bypass}", "bypass -h voice .dress-shield " + shield.getId());
+				html = html.replace("{name}", shield.getName());
+				html = html.replace("{price}", Util.formatPay(player, shield.getPriceCount(), shield.getPriceId()));
+				
+				L2Item item = ItemData.getInstance().getTemplate(shield.getShieldId());
+				html = html.replace("{item_icon}", item.getIcon());
+				html = html.replace("{item_name}", item.getName());
+				html = html.replace("{item_grade}", item.getItemGrade().name());
+				
+				sendHtml(player, html);
+				return true;
+			}
+			return false;
+		}
+		else if (command.equals("dress-weaponpage"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			DressMeWeaponData weapon = DressMeWeaponHolder.getInstance().getWeapon(set);
+			if (weapon != null)
+			{
+				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), dress_weapon_path);
+				
+				Inventory inv = player.getInventory();
+				L2ItemInstance my_weapon = inv.getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+				html = html.replace("{my_weapon_icon}", my_weapon == null ? "icon.NOIMAGE" : my_weapon.getItem().getIcon());
+				
+				html = html.replace("{bypass}", "bypass -h voice .dress-weapon " + weapon.getId());
+				html = html.replace("{name}", weapon.getName());
+				html = html.replace("{price}", Util.formatPay(player, weapon.getPriceCount(), weapon.getPriceId()));
+				
+				L2Item item = ItemData.getInstance().getTemplate(weapon.getId());
+				html = html.replace("{item_icon}", item.getIcon());
+				html = html.replace("{item_name}", item.getName());
+				html = html.replace("{item_grade}", item.getItemGrade().name());
+				
+				sendHtml(player, html);
+				return true;
+			}
+			return false;
+		}
+		else if (command.equals("dress-hatpage"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			DressMeHatData hat = DressMeHatHolder.getInstance().getHat(set);
+			if (hat != null)
+			{
+				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), dress_hat_path);
+				
+				Inventory inv = player.getInventory();
+				
+				L2ItemInstance my_hat = null;
+				switch (hat.getSlot())
+				{
+					case 1: // HAIR
+					case 3: // FULL HAIR
+						my_hat = inv.getPaperdollItem(Inventory.PAPERDOLL_HAIR);
+						break;
+					case 2: // HAIR2
+						my_hat = inv.getPaperdollItem(Inventory.PAPERDOLL_HAIR2);
+						break;
+				}
+				
+				html = html.replace("{my_hat_icon}", my_hat == null ? "icon.NOIMAGE" : my_hat.getItem().getIcon());
+				
+				html = html.replace("{bypass}", "bypass -h voice .dress-hat " + hat.getId());
+				html = html.replace("{name}", hat.getName());
+				html = html.replace("{price}", Util.formatPay(player, hat.getPriceCount(), hat.getPriceId()));
+				
+				L2Item item = ItemData.getInstance().getTemplate(hat.getHatId());
+				html = html.replace("{item_icon}", item.getIcon());
+				html = html.replace("{item_name}", item.getName());
+				html = html.replace("{item_grade}", item.getItemGrade().name());
+				
+				sendHtml(player, html);
+				return true;
+			}
+			return false;
+		}
+		else if (command.equals("dressinfo"))
+		{
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), info_path);
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("dress-armor"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			
+			DressMeArmorData dress = DressMeArmorHolder.getInstance().getArmor(set);
+			Inventory inv = player.getInventory();
+			
+			L2ItemInstance chest = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+			L2ItemInstance legs = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+			L2ItemInstance gloves = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
+			L2ItemInstance feet = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
+			
+			if (chest == null)
+			{
+				player.sendMessage("Error: Chest must be equiped.");
+				useVoicedCommand("dress-armorpage", player, args);
+				return false;
+			}
+			
+			if (chest.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR)
+			{
+				L2Item visual = ItemData.getInstance().getTemplate(dress.getChest());
+				if (chest.getItem().getBodyPart() != visual.getBodyPart())
+				{
+					player.sendMessage("Error: You can't change visual in full armor type not full armors.");
+					useVoicedCommand("dress-armorpage", player, args);
+					return false;
+				}
+			}
+			
+			// Checks for armor set for the equipped chest.
+			if (!ArmorSetsData.getInstance().isArmorSet(chest.getId()))
+			{
+				player.sendMessage("Error: You can't visualize current set.");
+				useVoicedCommand("dress-armorpage", player, args);
+				return false;
+			}
+			
+			L2ArmorSet armoSet = ArmorSetsData.getInstance().getSet(chest.getId());
+			if ((armoSet == null) || !armoSet.containAll(player))
+			{
+				player.sendMessage("Error: You can't visualize, set is not complete.");
+				useVoicedCommand("dress-armorpage", player, args);
+				return false;
+			}
+			
+			if (!chest.getArmorItem().getItemType().getDescription().equals(dress.getType()))
+			{
+				player.sendMessage("Error: You can't visualize current set.");
+				useVoicedCommand("dress-armorpage", player, args);
+				return false;
+			}
+			
+			if (Conditions.checkPlayerItemCount(player, dress.getPriceId(), dress.getPriceCount()))
+			{
+				player.destroyItemByItemId("VisualChange", dress.getPriceId(), dress.getPriceCount(), player, true);
+				DressMeHandler.visuality(player, chest, dress.getChest());
+				
+				if (dress.getLegs() != -1)
+				{
+					DressMeHandler.visuality(player, legs, dress.getLegs());
+				}
+				else if ((dress.getLegs() == -1) && (chest.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR))
+				{
+					DressMeHandler.visuality(player, legs, dress.getChest());
+				}
+				
+				DressMeHandler.visuality(player, gloves, dress.getGloves());
+				DressMeHandler.visuality(player, feet, dress.getFeet());
+				player.broadcastUserInfo();
+			}
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("dress-cloak"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			
+			DressMeCloakData cloak_data = DressMeCloakHolder.getInstance().getCloak(set);
+			Inventory inv = player.getInventory();
+			
+			L2ItemInstance cloak = inv.getPaperdollItem(Inventory.PAPERDOLL_CLOAK);
+			
+			if (cloak == null)
+			{
+				player.sendMessage("Error: Cloak must be equiped.");
+				useVoicedCommand("dress-cloakpage", player, args);
+				return false;
+			}
+			
+			if (Conditions.checkPlayerItemCount(player, cloak_data.getPriceId(), cloak_data.getPriceCount()))
+			{
+				player.destroyItemByItemId("VisualChange", cloak_data.getPriceId(), cloak_data.getPriceCount(), player, true);
+				DressMeHandler.visuality(player, cloak, cloak_data.getCloakId());
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("dress-shield"))
+		{
+			final int shield_id = Integer.parseInt(args.split(" ")[0]);
+			
+			DressMeShieldData shield_data = DressMeShieldHolder.getInstance().getShield(shield_id);
+			Inventory inv = player.getInventory();
+			
+			L2ItemInstance shield = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+			
+			if (shield == null)
+			{
+				player.sendMessage("Error: Shield must be equiped.");
+				useVoicedCommand("dress-shieldpage", player, args);
+				return false;
+			}
+			
+			if (Conditions.checkPlayerItemCount(player, shield_data.getPriceId(), shield_data.getPriceCount()))
+			{
+				player.destroyItemByItemId("VisualChange", shield_data.getPriceId(), shield_data.getPriceCount(), player, true);
+				DressMeHandler.visuality(player, shield, shield_data.getShieldId());
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("dress-weapon"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			
+			DressMeWeaponData weapon_data = DressMeWeaponHolder.getInstance().getWeapon(set);
+			Inventory inv = player.getInventory();
+			
+			L2ItemInstance weapon = inv.getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+			
+			if (weapon == null)
+			{
+				player.sendMessage("Error: Weapon must be equiped.");
+				useVoicedCommand("dress-weaponpage", player, args);
+				return false;
+			}
+			
+			if (!weapon.getItemType().toString().equals(weapon_data.getType()))
+			{
+				player.sendMessage("Error: Weapon must be equals type.");
+				useVoicedCommand("dressme-weapon", player, null);
+				return false;
+			}
+			
+			if (Conditions.checkPlayerItemCount(player, weapon_data.getPriceId(), weapon_data.getPriceCount()))
+			{
+				player.destroyItemByItemId("VisualChange", weapon_data.getPriceId(), weapon_data.getPriceCount(), player, true);
+				DressMeHandler.visuality(player, weapon, weapon_data.getId());
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("dress-hat"))
+		{
+			final int set = Integer.parseInt(args.split(" ")[0]);
+			
+			DressMeHatData hat_data = DressMeHatHolder.getInstance().getHat(set);
+			Inventory inv = player.getInventory();
+			
+			L2ItemInstance hat = null;
+			switch (hat_data.getSlot())
+			{
+				case 1: // HAIR
+				case 3: // FULL HAIR
+					hat = inv.getPaperdollItem(Inventory.PAPERDOLL_HAIR);
+					break;
+				case 2: // HAIR2
+					hat = inv.getPaperdollItem(Inventory.PAPERDOLL_HAIR2);
+					break;
+			}
+			
+			if (hat == null)
+			{
+				player.sendMessage("Error: Hat must be equiped.");
+				useVoicedCommand("dress-hatpage", player, args);
+				return false;
+			}
+			
+			L2Item visual = ItemData.getInstance().getTemplate(hat_data.getHatId());
+			if (hat.getItem().getBodyPart() != visual.getBodyPart())
+			{
+				player.sendMessage("Error: You can't change visual on different hat types!");
+				useVoicedCommand("dress-hatpage", player, args);
+				return false;
+			}
+			
+			if (Conditions.checkPlayerItemCount(player, hat_data.getPriceId(), hat_data.getPriceCount()))
+			{
+				player.destroyItemByItemId("VisualChange", hat_data.getPriceId(), hat_data.getPriceCount(), player, true);
+				DressMeHandler.visuality(player, hat, hat_data.getHatId());
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("undressme"))
+		{
+			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), undressme_path);
+			html = html.replace("<?show_hide?>", !player.getVarB("showVisualChange") ? "Show visual equip on other player!" : "Hide visual equip on other player!");
+			html = html.replace("<?show_hide_b?>", !player.getVarB("showVisualChange") ? "showdress" : "hidedress");
+			
+			sendHtml(player, html);
+			return true;
+		}
+		else if (command.equals("undressme-armor"))
+		{
+			Inventory inv = player.getInventory();
+			L2ItemInstance chest = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+			L2ItemInstance legs = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+			L2ItemInstance gloves = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
+			L2ItemInstance feet = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
+			
+			if (chest != null)
+			{
+				DressMeHandler.visuality(player, chest, 0);
+			}
+			if (legs != null)
+			{
+				DressMeHandler.visuality(player, legs, 0);
+			}
+			if (gloves != null)
+			{
+				DressMeHandler.visuality(player, gloves, 0);
+			}
+			if (feet != null)
+			{
+				DressMeHandler.visuality(player, feet, 0);
+			}
+			
+			player.broadcastUserInfo();
+			useVoicedCommand("undressme", player, null);
+			return true;
+		}
+		else if (command.equals("undressme-cloak"))
+		{
+			L2ItemInstance cloak = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CLOAK);
+			if (cloak != null)
+			{
+				DressMeHandler.visuality(player, cloak, 0);
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("undressme", player, null);
+			return true;
+		}
+		else if (command.equals("undressme-shield"))
+		{
+			L2ItemInstance shield = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+			if (shield != null)
+			{
+				DressMeHandler.visuality(player, shield, 0);
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("undressme", player, null);
+			return true;
+		}
+		else if (command.equals("undressme-weapon"))
+		{
+			L2ItemInstance weapon = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+			if (weapon != null)
+			{
+				DressMeHandler.visuality(player, weapon, 0);
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("undressme", player, null);
+			return true;
+		}
+		else if (command.equals("undressme-hat"))
+		{
+			L2ItemInstance slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR);
+			if (slot == null)
+			{
+				slot = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR2);
+			}
+			
+			if (slot != null)
+			{
+				DressMeHandler.visuality(player, slot, 0);
+			}
+			player.broadcastUserInfo();
+			useVoicedCommand("undressme", player, null);
+			return true;
+		}
+		else if (command.equals("showdress"))
+		{
+			player.setVar("showVisualChange", "true");
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		else if (command.equals("hidedress"))
+		{
+			player.setVar("showVisualChange", "false");
+			player.broadcastUserInfo();
+			useVoicedCommand("dressme", player, null);
+			return true;
+		}
+		
+		return false;
+	}
+	
+	private void sendHtml(L2PcInstance player, String html)
+	{
+		NpcHtmlMessage msg = new NpcHtmlMessage();
+		msg.setHtml(html);
+		player.sendPacket(msg);
+	}
+	
+	@Override
+	public String[] getVoicedCommandList()
+	{
+		return _commandList;
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataHolder/DressMeHatHolder.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataHolder/DressMeHatHolder.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataHolder/DressMeHatHolder.java	(working copy)
@@ -0,0 +1,54 @@
+package gr.sr.dressmeEngine.xml.dataHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gr.sr.data.xml.AbstractHolder;
+import gr.sr.dressmeEngine.data.DressMeHatData;
+
+public final class DressMeHatHolder extends AbstractHolder
+{
+	private static final DressMeHatHolder _instance = new DressMeHatHolder();
+	
+	public static DressMeHatHolder getInstance()
+	{
+		return _instance;
+	}
+	
+	private final List<DressMeHatData> _hat = new ArrayList<>();
+	
+	public void addHat(DressMeHatData hat)
+	{
+		_hat.add(hat);
+	}
+	
+	public List<DressMeHatData> getAllHats()
+	{
+		return _hat;
+	}
+	
+	public DressMeHatData getHat(int id)
+	{
+		for (DressMeHatData hat : _hat)
+		{
+			if (hat.getId() == id)
+			{
+				return hat;
+			}
+		}
+		
+		return null;
+	}
+	
+	@Override
+	public int size()
+	{
+		return _hat.size();
+	}
+	
+	@Override
+	public void clear()
+	{
+		_hat.clear();
+	}
+}
Index: java/l2r/gameserver/model/items/instance/L2ItemInstance.java
===================================================================
--- java/l2r/gameserver/model/items/instance/L2ItemInstance.java	(revision 232)
+++ java/l2r/gameserver/model/items/instance/L2ItemInstance.java	(working copy)
@@ -1495,6 +1495,8 @@
 		int objectId, item_id, loc_data, enchant_level, custom_type1, custom_type2, manaLeft;
 		long time, count;
 		ItemLocation loc;
+		
+		int visualItemId;
 		try
 		{
 			objectId = rs.getInt(1);
@@ -1507,6 +1509,7 @@
 			custom_type2 = rs.getInt("custom_type2");
 			manaLeft = rs.getInt("mana_left");
 			time = rs.getLong("time");
+			visualItemId = rs.getInt("visual_item_id");
 		}
 		catch (Exception e)
 		{
@@ -1534,6 +1537,9 @@
 		inst._mana = manaLeft;
 		inst._time = time;
 		
+		// Set visual item id for dress me
+		inst.visualItemId = visualItemId;
+		
 		// load augmentation and elemental enchant
 		if (inst.isEquipable())
 		{
@@ -1646,7 +1652,7 @@
 		}
 		
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement ps = con.prepareStatement("UPDATE items SET owner_id=?,count=?,loc=?,loc_data=?,enchant_level=?,custom_type1=?,custom_type2=?,mana_left=?,time=? " + "WHERE object_id = ?"))
+			PreparedStatement ps = con.prepareStatement("UPDATE items SET owner_id=?,count=?,loc=?,loc_data=?,enchant_level=?,custom_type1=?,custom_type2=?,mana_left=?,time=?,visual_item_id=? " + "WHERE object_id = ?"))
 		{
 			ps.setInt(1, _ownerId);
 			ps.setLong(2, getCount());
@@ -1657,7 +1663,8 @@
 			ps.setInt(7, getCustomType2());
 			ps.setInt(8, getMana());
 			ps.setLong(9, getTime());
-			ps.setInt(10, getObjectId());
+			ps.setInt(10, getVisualItemId());
+			ps.setInt(11, getObjectId());
 			ps.executeUpdate();
 			_existsInDb = true;
 			_storedInDb = true;
@@ -1684,7 +1691,7 @@
 		}
 		
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement ps = con.prepareStatement("INSERT INTO items (owner_id,item_id,count,loc,loc_data,enchant_level,object_id,custom_type1,custom_type2,mana_left,time) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?)"))
+			PreparedStatement ps = con.prepareStatement("INSERT INTO items (owner_id,item_id,count,loc,loc_data,enchant_level,object_id,custom_type1,custom_type2,mana_left,time,visual_item_id) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"))
 		{
 			ps.setInt(1, _ownerId);
 			ps.setInt(2, _itemId);
@@ -1697,6 +1704,7 @@
 			ps.setInt(9, _type2);
 			ps.setInt(10, getMana());
 			ps.setLong(11, getTime());
+			ps.setInt(12, getVisualItemId());
 			
 			ps.executeUpdate();
 			_existsInDb = true;
@@ -2247,4 +2255,17 @@
 			_lifeTimeTask = null;
 		}
 	}
+	
+	// Used for dress me engine
+	private int visualItemId = 0;
+	
+	public int getVisualItemId()
+	{
+		return visualItemId;
+	}
+	
+	public void setVisualItemId(int visualItemId)
+	{
+		this.visualItemId = visualItemId;
+	}
 }
Index: java/gr/sr/dressmeEngine/data/DressMeHatData.java
===================================================================
--- java/gr/sr/dressmeEngine/data/DressMeHatData.java	(revision 0)
+++ java/gr/sr/dressmeEngine/data/DressMeHatData.java	(working copy)
@@ -0,0 +1,51 @@
+package gr.sr.dressmeEngine.data;
+
+public class DressMeHatData
+{
+	private final int _id;
+	private final int _hat;
+	private final String _name;
+	private final int _slot;
+	private final int _priceId;
+	private final long _priceCount;
+	
+	public DressMeHatData(int id, int hat, String name, int slot, int priceId, long priceCount)
+	{
+		_id = id;
+		_hat = hat;
+		_name = name;
+		_slot = slot;
+		_priceId = priceId;
+		_priceCount = priceCount;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public int getHatId()
+	{
+		return _hat;
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public int getSlot()
+	{
+		return _slot;
+	}
+	
+	public int getPriceId()
+	{
+		return _priceId;
+	}
+	
+	public long getPriceCount()
+	{
+		return _priceCount;
+	}
+}
Index: java/gr/sr/dressmeEngine/data/DressMeArmorData.java
===================================================================
--- java/gr/sr/dressmeEngine/data/DressMeArmorData.java	(revision 0)
+++ java/gr/sr/dressmeEngine/data/DressMeArmorData.java	(working copy)
@@ -0,0 +1,72 @@
+package gr.sr.dressmeEngine.data;
+
+public class DressMeArmorData
+{
+	private final int _id;
+	private final String _name;
+	private final String _type;
+	private final int _chest;
+	private final int _legs;
+	private final int _gloves;
+	private final int _feet;
+	private final int _priceId;
+	private final long _priceCount;
+	
+	public DressMeArmorData(int id, String name, String type, int chest, int legs, int gloves, int feet, int priceId, long priceCount)
+	{
+		_id = id;
+		_name = name;
+		_type = type;
+		_chest = chest;
+		_legs = legs;
+		_gloves = gloves;
+		_feet = feet;
+		_priceId = priceId;
+		_priceCount = priceCount;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public String getType()
+	{
+		return _type;
+	}
+	
+	public int getChest()
+	{
+		return _chest;
+	}
+	
+	public int getLegs()
+	{
+		return _legs;
+	}
+	
+	public int getGloves()
+	{
+		return _gloves;
+	}
+	
+	public int getFeet()
+	{
+		return _feet;
+	}
+	
+	public int getPriceId()
+	{
+		return _priceId;
+	}
+	
+	public long getPriceCount()
+	{
+		return _priceCount;
+	}
+}
Index: java/l2r/gameserver/model/items/type/ArmorType.java
===================================================================
--- java/l2r/gameserver/model/items/type/ArmorType.java	(revision 232)
+++ java/l2r/gameserver/model/items/type/ArmorType.java	(working copy)
@@ -23,23 +23,26 @@
  */
 public enum ArmorType implements ItemType
 {
-	NONE,
-	LIGHT,
-	HEAVY,
-	MAGIC,
-	SIGIL,
+	NONE("NONE"),
+	LIGHT("LIGHT"),
+	HEAVY("HEAVY"),
+	MAGIC("ROBE"),
+	SIGIL("SIGIL"),
 	
 	// L2J CUSTOM
-	SHIELD;
+	SHIELD("SHIELD");
 	
 	final int _mask;
+	private final String _descr;
 	
 	/**
 	 * Constructor of the ArmorType.
+	 * @param descr
 	 */
-	private ArmorType()
+	private ArmorType(String descr)
 	{
 		_mask = 1 << (ordinal() + WeaponType.values().length);
+		_descr = descr;
 	}
 	
 	/**
@@ -50,4 +53,9 @@
 	{
 		return _mask;
 	}
+	
+	public String getDescription()
+	{
+		return _descr;
+	}
 }
Index: java/l2r/gameserver/model/itemcontainer/ItemContainer.java
===================================================================
--- java/l2r/gameserver/model/itemcontainer/ItemContainer.java	(revision 232)
+++ java/l2r/gameserver/model/itemcontainer/ItemContainer.java	(working copy)
@@ -645,7 +645,7 @@
 	public void restore()
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time FROM items WHERE owner_id=? AND (loc=?)"))
+			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time, visual_item_id FROM items WHERE owner_id=? AND (loc=?)"))
 		{
 			statement.setInt(1, getOwnerId());
 			statement.setString(2, getBaseLocation().name());
Index: java/gr/sr/dressmeEngine/data/DressMeWeaponData.java
===================================================================
--- java/gr/sr/dressmeEngine/data/DressMeWeaponData.java	(revision 0)
+++ java/gr/sr/dressmeEngine/data/DressMeWeaponData.java	(working copy)
@@ -0,0 +1,51 @@
+package gr.sr.dressmeEngine.data;
+
+public class DressMeWeaponData
+{
+	private final int _id;
+	private final String _name;
+	private final String _type;
+	private final boolean _isBig;
+	private final int _priceId;
+	private final long _priceCount;
+	
+	public DressMeWeaponData(int id, String name, String type, boolean isBig, int priceId, long priceCount)
+	{
+		_id = id;
+		_name = name;
+		_type = type;
+		_isBig = isBig;
+		_priceId = priceId;
+		_priceCount = priceCount;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public String getType()
+	{
+		return _type;
+	}
+	
+	public boolean isBig()
+	{
+		return _isBig;
+	}
+	
+	public int getPriceId()
+	{
+		return _priceId;
+	}
+	
+	public long getPriceCount()
+	{
+		return _priceCount;
+	}
+}
Index: java/gr/sr/dressmeEngine/data/DressMeShieldData.java
===================================================================
--- java/gr/sr/dressmeEngine/data/DressMeShieldData.java	(revision 0)
+++ java/gr/sr/dressmeEngine/data/DressMeShieldData.java	(working copy)
@@ -0,0 +1,44 @@
+package gr.sr.dressmeEngine.data;
+
+public class DressMeShieldData
+{
+	private final int _id;
+	private final int _shield;
+	private final String _name;
+	private final int _priceId;
+	private final long _priceCount;
+	
+	public DressMeShieldData(int id, int shield, String name, int priceId, long priceCount)
+	{
+		_id = id;
+		_shield = shield;
+		_name = name;
+		_priceId = priceId;
+		_priceCount = priceCount;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public int getShieldId()
+	{
+		return _shield;
+	}
+	
+	public String getName()
+	{
+		return _name;
+	}
+	
+	public int getPriceId()
+	{
+		return _priceId;
+	}
+	
+	public long getPriceCount()
+	{
+		return _priceCount;
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataHolder/DressMeShieldHolder.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataHolder/DressMeShieldHolder.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataHolder/DressMeShieldHolder.java	(working copy)
@@ -0,0 +1,54 @@
+package gr.sr.dressmeEngine.xml.dataHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gr.sr.data.xml.AbstractHolder;
+import gr.sr.dressmeEngine.data.DressMeShieldData;
+
+public final class DressMeShieldHolder extends AbstractHolder
+{
+	private static final DressMeShieldHolder _instance = new DressMeShieldHolder();
+	
+	public static DressMeShieldHolder getInstance()
+	{
+		return _instance;
+	}
+	
+	private final List<DressMeShieldData> _shield = new ArrayList<>();
+	
+	public void addShield(DressMeShieldData shield)
+	{
+		_shield.add(shield);
+	}
+	
+	public List<DressMeShieldData> getAllShields()
+	{
+		return _shield;
+	}
+	
+	public DressMeShieldData getShield(int id)
+	{
+		for (DressMeShieldData shield : _shield)
+		{
+			if (shield.getId() == id)
+			{
+				return shield;
+			}
+		}
+		
+		return null;
+	}
+	
+	@Override
+	public int size()
+	{
+		return _shield.size();
+	}
+	
+	@Override
+	public void clear()
+	{
+		_shield.clear();
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataParser/DressMeHatParser.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataParser/DressMeHatParser.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataParser/DressMeHatParser.java	(working copy)
@@ -0,0 +1,91 @@
+package gr.sr.dressmeEngine.xml.dataParser;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import l2r.Config;
+
+import gr.sr.data.xml.AbstractFileParser;
+import gr.sr.dressmeEngine.data.DressMeHatData;
+import gr.sr.dressmeEngine.xml.dataHolder.DressMeHatHolder;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+public final class DressMeHatParser extends AbstractFileParser<DressMeHatHolder>
+{
+	private final String CLOAK_FILE_PATH = Config.DATAPACK_ROOT + "/data/xml/sunrise/dressme/hat.xml";
+	
+	private static final DressMeHatParser _instance = new DressMeHatParser();
+	
+	public static DressMeHatParser getInstance()
+	{
+		return _instance;
+	}
+	
+	private DressMeHatParser()
+	{
+		super(DressMeHatHolder.getInstance());
+	}
+	
+	@Override
+	public File getXMLFile()
+	{
+		return new File(CLOAK_FILE_PATH);
+	}
+	
+	@Override
+	protected void readData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		
+		File file = getXMLFile();
+		
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(in);
+			
+			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
+			{
+				if (n.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+					{
+						if (d.getNodeName().equalsIgnoreCase("hat"))
+						{
+							int number = Integer.parseInt(d.getAttributes().getNamedItem("number").getNodeValue());
+							int id = Integer.parseInt(d.getAttributes().getNamedItem("id").getNodeValue());
+							String name = d.getAttributes().getNamedItem("name").getNodeValue();
+							int slot = Integer.parseInt(d.getAttributes().getNamedItem("slot").getNodeValue());
+							int itemId = 0;
+							long itemCount = 0;
+							
+							for (Node price = d.getFirstChild(); price != null; price = price.getNextSibling())
+							{
+								if ("price".equalsIgnoreCase(price.getNodeName()))
+								{
+									itemId = Integer.parseInt(price.getAttributes().getNamedItem("id").getNodeValue());
+									itemCount = Long.parseLong(price.getAttributes().getNamedItem("count").getNodeValue());
+								}
+							}
+							
+							getHolder().addHat(new DressMeHatData(number, id, name, slot, itemId, itemCount));
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warn(getClass().getSimpleName() + ": Error: " + e);
+		}
+	}
+}
\ No newline at end of file
Index: java/gr/sr/dressmeEngine/DressMeHandler.java
===================================================================
--- java/gr/sr/dressmeEngine/DressMeHandler.java	(revision 0)
+++ java/gr/sr/dressmeEngine/DressMeHandler.java	(working copy)
@@ -0,0 +1,170 @@
+package gr.sr.dressmeEngine;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.Map;
+
+import l2r.Config;
+import l2r.L2DatabaseFactory;
+import l2r.gameserver.model.actor.instance.L2PcInstance;
+import l2r.gameserver.model.items.L2Item;
+import l2r.gameserver.model.items.instance.L2ItemInstance;
+
+import gr.sr.dressmeEngine.data.DressMeArmorData;
+import gr.sr.dressmeEngine.data.DressMeHatData;
+import gr.sr.dressmeEngine.data.DressMeWeaponData;
+import gr.sr.dressmeEngine.util.Util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DressMeHandler
+{
+	private static final Logger _log = LoggerFactory.getLogger(DressMeHandler.class);
+	
+	public static void visuality(L2PcInstance player, L2ItemInstance item, int visual)
+	{
+		item.setVisualItemId(visual);
+		updateVisualInDb(item, visual);
+		
+		if (visual > 0)
+		{
+			player.sendMessage(item.getName() + " visual change to " + Util.getItemName(visual));
+		}
+		else
+		{
+			player.sendMessage("Visual removed from " + item.getName() + ".");
+		}
+		
+		player.broadcastUserInfo();
+	}
+	
+	public static void updateVisualInDb(L2ItemInstance item, int visual)
+	{
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement("UPDATE items SET visual_item_id=? " + "WHERE object_id = ?"))
+		{
+			ps.setInt(1, visual);
+			ps.setInt(2, item.getObjectId());
+			ps.executeUpdate();
+		}
+		catch (Exception e)
+		{
+			if (Config.DEBUG)
+			{
+				_log.error("Could not update dress me item in DB: Reason: " + e.getMessage(), e);
+			}
+		}
+	}
+	
+	public static Map<Integer, DressMeWeaponData> initWeaponMap(String type, Map<Integer, DressMeWeaponData> map, L2ItemInstance slot)
+	{
+		if (type.equals("SWORD") && (slot.getItem().getBodyPart() != L2Item.SLOT_LR_HAND))
+		{
+			return map = DressMeLoader.SWORD;
+		}
+		else if (type.equals("BLUNT") && (slot.getItem().getBodyPart() != L2Item.SLOT_LR_HAND))
+		{
+			return map = DressMeLoader.BLUNT;
+		}
+		else if (type.equals("SWORD") && (slot.getItem().getBodyPart() == L2Item.SLOT_LR_HAND))
+		{
+			return map = DressMeLoader.BIGSWORD;
+		}
+		else if (type.equals("BLUNT") && (slot.getItem().getBodyPart() == L2Item.SLOT_LR_HAND))
+		{
+			return map = DressMeLoader.BIGBLUNT;
+		}
+		else if (type.equals("DAGGER"))
+		{
+			return map = DressMeLoader.DAGGER;
+		}
+		else if (type.equals("BOW"))
+		{
+			return map = DressMeLoader.BOW;
+		}
+		else if (type.equals("POLE"))
+		{
+			return map = DressMeLoader.POLE;
+		}
+		else if (type.equals("FIST"))
+		{
+			return map = DressMeLoader.FIST;
+		}
+		else if (type.equals("DUAL"))
+		{
+			return map = DressMeLoader.DUAL;
+		}
+		else if (type.equals("DUALFIST"))
+		{
+			return map = DressMeLoader.DUALFIST;
+		}
+		else if (type.equals("FISHINGROD"))
+		{
+			return map = DressMeLoader.ROD;
+		}
+		else if (type.equals("CROSSBOW"))
+		{
+			return map = DressMeLoader.CROSSBOW;
+		}
+		else if (type.equals("RAPIER"))
+		{
+			return map = DressMeLoader.RAPIER;
+		}
+		else if (type.equals("ANCIENTSWORD"))
+		{
+			return map = DressMeLoader.ANCIENTSWORD;
+		}
+		else if (type.equals("DUALDAGGER"))
+		{
+			return map = DressMeLoader.DUALDAGGER;
+		}
+		else
+		{
+			_log.error("Dress me system: Unknown weapon type: " + type);
+			return null;
+		}
+	}
+	
+	public static Map<Integer, DressMeArmorData> initArmorMap(String type, Map<Integer, DressMeArmorData> map, L2ItemInstance slot)
+	{
+		if (type.equals("LIGHT"))
+		{
+			return map = DressMeLoader.LIGHT;
+		}
+		else if (type.equals("HEAVY"))
+		{
+			return map = DressMeLoader.HEAVY;
+		}
+		else if (type.equals("ROBE"))
+		{
+			return map = DressMeLoader.ROBE;
+		}
+		else
+		{
+			_log.error("Dress me system: Unknown armor type: " + type);
+			return null;
+		}
+	}
+	
+	public static Map<Integer, DressMeHatData> initHatMap(Map<Integer, DressMeHatData> map, L2ItemInstance slot)
+	{
+		if ((slot.getLocationSlot() == 2) && (slot.getItem().getBodyPart() != L2Item.SLOT_HAIRALL))
+		{
+			return map = DressMeLoader.HAIR;
+		}
+		else if ((slot.getLocationSlot() == 2) && (slot.getItem().getBodyPart() == L2Item.SLOT_HAIRALL))
+		{
+			return map = DressMeLoader.HAIR_FULL;
+		}
+		else if (slot.getLocationSlot() == 3)
+		{
+			return map = DressMeLoader.HAIR2;
+		}
+		else
+		{
+			_log.error("Dress me system: Unknown hat slot: " + slot.getLocationSlot());
+			return null;
+		}
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataHolder/DressMeWeaponHolder.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataHolder/DressMeWeaponHolder.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataHolder/DressMeWeaponHolder.java	(working copy)
@@ -0,0 +1,54 @@
+package gr.sr.dressmeEngine.xml.dataHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gr.sr.data.xml.AbstractHolder;
+import gr.sr.dressmeEngine.data.DressMeWeaponData;
+
+public final class DressMeWeaponHolder extends AbstractHolder
+{
+	private static final DressMeWeaponHolder _instance = new DressMeWeaponHolder();
+	
+	public static DressMeWeaponHolder getInstance()
+	{
+		return _instance;
+	}
+	
+	private final List<DressMeWeaponData> _weapons = new ArrayList<>();
+	
+	public void addWeapon(DressMeWeaponData weapon)
+	{
+		_weapons.add(weapon);
+	}
+	
+	public List<DressMeWeaponData> getAllWeapons()
+	{
+		return _weapons;
+	}
+	
+	public DressMeWeaponData getWeapon(int id)
+	{
+		for (DressMeWeaponData weapon : _weapons)
+		{
+			if (weapon.getId() == id)
+			{
+				return weapon;
+			}
+		}
+		
+		return null;
+	}
+	
+	@Override
+	public int size()
+	{
+		return _weapons.size();
+	}
+	
+	@Override
+	public void clear()
+	{
+		_weapons.clear();
+	}
+}
Index: java/l2r/gameserver/model/itemcontainer/Inventory.java
===================================================================
--- java/l2r/gameserver/model/itemcontainer/Inventory.java	(revision 232)
+++ java/l2r/gameserver/model/itemcontainer/Inventory.java	(working copy)
@@ -70,6 +70,10 @@
 	public static final int SKULL_ID = 41006;
 	public static final int ANCIENT_ADENA_ID = 5575;
 	
+	public static final int ITEM_ID_PC_BANG_POINTS = -100;
+	public static final int ITEM_ID_CLAN_REPUTATION_SCORE = -200;
+	public static final int ITEM_ID_FAME = -300;
+	
 	public static final long MAX_ADENA = Config.MAX_ADENA;
 	
 	public static final int PAPERDOLL_UNDER = 0;
@@ -1017,6 +1021,25 @@
 	 * @param slot : int designating the slot
 	 * @return int designating the ID of the item
 	 */
+	public int getPaperdollItemVisualDisplayId(int slot)
+	{
+		final L2ItemInstance item = _paperdoll[slot];
+		if (item != null)
+		{
+			if (item.getVisualItemId() > 0)
+			{
+				return item.getVisualItemId();
+			}
+			return item.getDisplayId();
+		}
+		return 0;
+	}
+	
+	/**
+	 * Returns the ID of the item in the paperdoll slot
+	 * @param slot : int designating the slot
+	 * @return int designating the ID of the item
+	 */
 	public int getPaperdollItemDisplayId(int slot)
 	{
 		final L2ItemInstance item = _paperdoll[slot];
@@ -1664,7 +1687,7 @@
 	public void restore()
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time FROM items WHERE owner_id=? AND (loc=? OR loc=?) ORDER BY loc_data"))
+			PreparedStatement statement = con.prepareStatement("SELECT object_id, item_id, count, enchant_level, loc, loc_data, custom_type1, custom_type2, mana_left, time, visual_item_id FROM items WHERE owner_id=? AND (loc=? OR loc=?) ORDER BY loc_data"))
 		{
 			statement.setInt(1, getOwnerId());
 			statement.setString(2, getBaseLocation().name());
Index: java/gr/sr/dressmeEngine/xml/dataHolder/DressMeArmorHolder.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataHolder/DressMeArmorHolder.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataHolder/DressMeArmorHolder.java	(working copy)
@@ -0,0 +1,54 @@
+package gr.sr.dressmeEngine.xml.dataHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gr.sr.data.xml.AbstractHolder;
+import gr.sr.dressmeEngine.data.DressMeArmorData;
+
+public final class DressMeArmorHolder extends AbstractHolder
+{
+	private static final DressMeArmorHolder _instance = new DressMeArmorHolder();
+	
+	public static DressMeArmorHolder getInstance()
+	{
+		return _instance;
+	}
+	
+	private final List<DressMeArmorData> _dress = new ArrayList<>();
+	
+	public void addDress(DressMeArmorData armorset)
+	{
+		_dress.add(armorset);
+	}
+	
+	public List<DressMeArmorData> getAllDress()
+	{
+		return _dress;
+	}
+	
+	public DressMeArmorData getArmor(int id)
+	{
+		for (DressMeArmorData dress : _dress)
+		{
+			if (dress.getId() == id)
+			{
+				return dress;
+			}
+		}
+		
+		return null;
+	}
+	
+	@Override
+	public int size()
+	{
+		return _dress.size();
+	}
+	
+	@Override
+	public void clear()
+	{
+		_dress.clear();
+	}
+}
Index: java/gr/sr/dressmeEngine/xml/dataHolder/DressMeCloakHolder.java
===================================================================
--- java/gr/sr/dressmeEngine/xml/dataHolder/DressMeCloakHolder.java	(revision 0)
+++ java/gr/sr/dressmeEngine/xml/dataHolder/DressMeCloakHolder.java	(working copy)
@@ -0,0 +1,54 @@
+package gr.sr.dressmeEngine.xml.dataHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gr.sr.data.xml.AbstractHolder;
+import gr.sr.dressmeEngine.data.DressMeCloakData;
+
+public final class DressMeCloakHolder extends AbstractHolder
+{
+	private static final DressMeCloakHolder _instance = new DressMeCloakHolder();
+	
+	public static DressMeCloakHolder getInstance()
+	{
+		return _instance;
+	}
+	
+	private final List<DressMeCloakData> _cloak = new ArrayList<>();
+	
+	public void addCloak(DressMeCloakData cloak)
+	{
+		_cloak.add(cloak);
+	}
+	
+	public List<DressMeCloakData> getAllCloaks()
+	{
+		return _cloak;
+	}
+	
+	public DressMeCloakData getCloak(int id)
+	{
+		for (DressMeCloakData cloak : _cloak)
+		{
+			if (cloak.getId() == id)
+			{
+				return cloak;
+			}
+		}
+		
+		return null;
+	}
+	
+	@Override
+	public int size()
+	{
+		return _cloak.size();
+	}
+	
+	@Override
+	public void clear()
+	{
+		_cloak.clear();
+	}
+}

CitarDATA

### Eclipse Workspace Patch 1.0
#P L2J_SunriseProject_Data
Index: dist/game/data/html/sunrise/dressme/template-weapon.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/template-weapon.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/template-weapon.htm   (working copy)
@@ -0,0 +1,24 @@
+<tr>
+   <td width=270 height=46 align=center valign=top>
+      <table border=0 cellspacing=2 cellpadding=4 width=270 height=46>
+         <tr>
+            <td FIXWIDTH=40 align=right valign=top>
+               <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{icon}">
+                  <tr>
+                     <td width=32 align=center valign=top>
+                        <img src="l2ui_ch3.multisell_plusicon" width="32" height="32">
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td FIXWIDTH=170 align=left valign=top>
+               <font color="99CC00">{name}</font>
+               <br1>› <font color=999966>Price:</font> {price}.
+            </td>
+            <td valign="top" align="center">
+               <button action="{bypass}" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Blue_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Blue" />
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/undressme.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/undressme.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/undressme.htm   (working copy)
@@ -0,0 +1,215 @@
+<html>
+<head>
+<body scroll="no">
+<title>UnDress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=100>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.weapon_ysandy_crusher_i01">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Weapon</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme-weapon" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.armor_t94_u_i03">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Armor</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme-armor" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.evilgate_shield_i01">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Shield</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme-shield" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.feud_lord_cloak_i00">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Cloak</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme-cloak" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.armor_t94_u_i03">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Hat</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme-hat" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="branchsys2.br_transform_lilith_01_i00">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="99CC33"><?show_hide?></font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .<?show_hide_b?>" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="branchsys2.br_s_search_treasure1_i00">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Add visual effect</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Depends on the type.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xsd/dressme/weapon.xsd
===================================================================
--- dist/game/data/xsd/dressme/weapon.xsd   (revision 0)
+++ dist/game/data/xsd/dressme/weapon.xsd   (working copy)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.">
+   <xs:element name="list">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="weapon" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="price">
+                        <xs:complexType>
+                           <xs:attribute name="id" type="xs:int"></xs:attribute>
+                           <xs:attribute name="count" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="id" type="xs:int"></xs:attribute>
+                  <xs:attribute name="name" type="xs:string"></xs:attribute>
+                  <xs:attribute name="type" type="xs:string"></xs:attribute>
+                  <xs:attribute name="isBig" type="xs:string"></xs:attribute>
+               </xs:complexType>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+   </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/template-shield.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/template-shield.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/template-shield.htm   (working copy)
@@ -0,0 +1,24 @@
+<tr>
+   <td width=270 height=46 align=center valign=top>
+      <table border=0 cellspacing=2 cellpadding=4 width=270 height=46>
+         <tr>
+            <td FIXWIDTH=40 align=right valign=top>
+               <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{icon}">
+                  <tr>
+                     <td width=32 align=center valign=top>
+                        <img src="l2ui_ch3.multisell_plusicon" width="32" height="32">
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td FIXWIDTH=170 align=left valign=top>
+               <font color="99CC00">{name}</font>
+               <br1>› <font color=999966>Price:</font> {price}.
+            </td>
+            <td valign="top" align="center">
+               <button action="{bypass}" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Blue_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Blue" />
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/dress-shield.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/dress-shield.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/dress-shield.htm   (working copy)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td valign="top" align="center"><br>
+                  <font name="__SystemEditBoxFont" color="669933">{name}</font>
+                  <img src="L2UI_CH3.herotower_deco" width="252" height="32">
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=250>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_shield_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{item_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{item_name}</font>
+                                    <br1>› Grade: {item_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td valign="top" align="center"><br><br>
+                           <font color="99CC00">Cost:</font> {price}.
+                           <button action="{bypass}" value="Change visual to {name}" width=282 height=26 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xsd/dressme/cloak.xsd
===================================================================
--- dist/game/data/xsd/dressme/cloak.xsd   (revision 0)
+++ dist/game/data/xsd/dressme/cloak.xsd   (working copy)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.">
+   <xs:element name="list">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="cloak" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="price">
+                        <xs:complexType>
+                           <xs:attribute name="id" type="xs:int"></xs:attribute>
+                           <xs:attribute name="count" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="number" type="xs:int"></xs:attribute>
+                  <xs:attribute name="id" type="xs:int"></xs:attribute>
+                  <xs:attribute name="name" type="xs:string"></xs:attribute>
+               </xs:complexType>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+   </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/dress-weapon.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/dress-weapon.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/dress-weapon.htm   (working copy)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td valign="top" align="center"><br>
+                  <font name="__SystemEditBoxFont" color="669933">{name}</font>
+                  <img src="L2UI_CH3.herotower_deco" width="252" height="32">
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=250>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_weapon_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{item_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{item_name}</font>
+                                    <br1>› Grade: {item_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td valign="top" align="center"><br><br>
+                           <font color="99CC00">Cost:</font> {price}.
+                           <button action="{bypass}" value="Change visual to {name}" width=282 height=26 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/dress-cloak.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/dress-cloak.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/dress-cloak.htm   (working copy)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td valign="top" align="center"><br>
+                  <font name="__SystemEditBoxFont" color="669933">{name}</font>
+                  <img src="L2UI_CH3.herotower_deco" width="252" height="32">
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=250>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_cloak_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{item_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{item_name}</font>
+                                    <br1>› Grade: {item_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td valign="top" align="center"><br><br>
+                           <font color="99CC00">Cost:</font> {price}.
+                           <button action="{bypass}" value="Change visual to {name}" width=282 height=26 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xml/sunrise/dressme/armor.xml
===================================================================
--- dist/game/data/xml/sunrise/dressme/armor.xml   (revision 0)
+++ dist/game/data/xml/sunrise/dressme/armor.xml   (working copy)
@@ -0,0 +1,283 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list xmlns:xsi="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate." xsi:noNamespaceSchemaLocation="../../../xsd/dressme/armor.xsd">
+   <dress id="1" name="Zubei's Breastplate Set" type="HEAVY">
+      <set chest="357" legs="383" gloves="5710" feet="5726" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="2" name="Avadon Breastplate Set" type="HEAVY">
+      <set chest="2376" legs="2379" gloves="5714" feet="5730" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="3" name="Zubei's Leather Shirt Set" type="LIGHT">
+      <set chest="2384" legs="2388" gloves="5711" feet="5727" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="4" name="Avadon Leather Armor Set" type="LIGHT">
+      <set chest="2390" legs="-1" gloves="5715" feet="5731" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="5" name="Zubei Set" type="ROBE">
+      <set chest="2397" legs="2402" gloves="5712" feet="5728" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="6" name="Avadon Robe Set" type="ROBE">
+      <set chest="2406" legs="-1" gloves="5716" feet="5732" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="7" name="Blue Wolf Breastplate Set" type="HEAVY">
+      <set chest="358" legs="2380" gloves="5718" feet="5734" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="8" name="Doom Armor Set" type="HEAVY">
+      <set chest="2381" legs="-1" gloves="5722" feet="5738" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="9" name="Blue Wolf Leather Armor Set" type="LIGHT">
+      <set chest="2391" legs="-1" gloves="5719" feet="5735" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="10" name="LeatherDoom Set" type="LIGHT">
+      <set chest="2392" legs="-1" gloves="5723" feet="5739" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="11" name="Blue Wolf Tunic Set" type="ROBE">
+      <set chest="2398" legs="2403" gloves="5720" feet="5736" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="12" name="Doom Set" type="HEAVY">
+      <set chest="2399" legs="2404" gloves="5724" feet="5740" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="13" name="Dark Crystal Breastplate Set" type="HEAVY">
+      <set chest="365" legs="388" gloves="5765" feet="5777" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="14" name="Tallum Armor Set" type="HEAVY">
+      <set chest="2382" legs="-1" gloves="5768" feet="5780" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="15" name="Dark Crystal Leather Armor Set" type="LIGHT">
+      <set chest="2385" legs="2389" gloves="5766" feet="5778" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="16" name="Tallum Leather Armor Set" type="LIGHT">
+      <set chest="2393" legs="-1" gloves="5769" feet="5781" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="17" name="Tallum Tunic Set" type="ROBE">
+      <set chest="2400" legs="2405" gloves="5770" feet="5782" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="18" name="Dark Crystal Robe Set" type="ROBE">
+      <set chest="2407" legs="-1" gloves="5767" feet="5779" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="19" name="Nightmare Set" type="HEAVY">
+      <set chest="374" legs="-1" gloves="5771" feet="5783" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="20" name="Majestic Armor Set" type="HEAVY">
+      <set chest="2383" legs="-1" gloves="5774" feet="5786" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="21" name="Nightmarish Leather Armor Set" type="LIGHT">
+      <set chest="2394" legs="-1" gloves="5772" feet="5784" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="22" name="Majestic Leather Armor Set" type="LIGHT">
+      <set chest="2395" legs="-1" gloves="5775" feet="5787" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="23" name="Nightmare Robe Set" type="ROBE">
+      <set chest="2408" legs="-1" gloves="5773" feet="5785" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="24" name="Majestic Robe Set" type="ROBE">
+      <set chest="2409" legs="-1" gloves="5776" feet="5788" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="25" name="Imperial Crusader Breastplate Set" type="HEAVY">
+      <set chest="6373" legs="6374" gloves="6375" feet="6376" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="26" name="Draconic Leather Armor Set" type="LIGHT">
+      <set chest="6379" legs="-1" gloves="6380" feet="6381" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="27" name="Major Arcana Robe Set" type="ROBE">
+      <set chest="6383" legs="-1" gloves="6384" feet="6385" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="28" name="Clan Oath Armor Set" type="HEAVY">
+      <set chest="7851" legs="-1" gloves="7852" feet="7853" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="29" name="Clan Oath Brigandine Set" type="LIGHT">
+      <set chest="7854" legs="-1" gloves="7855" feet="7856" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="30" name="Clan Oath Aketon Set" type="ROBE">
+      <set chest="7857" legs="-1" gloves="7858" feet="7859" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="31" name="Apella Armor Set" type="HEAVY">
+      <set chest="7861" legs="-1" gloves="7862" feet="7863" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="32" name="Apella Brigandine Set" type="LIGHT">
+      <set chest="7864" legs="-1" gloves="7865" feet="7866" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="33" name="Apella Doublet Set" type="ROBE">
+      <set chest="7867" legs="-1" gloves="7868" feet="7869" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="34" name="Dynasty Breast Plate Set" type="HEAVY">
+      <set chest="9417" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="35" name="Dynasty Breast Plate Set" type="HEAVY">
+      <set chest="9418" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="36" name="Dynasty Breast Plate Set" type="HEAVY">
+      <set chest="9419" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="37" name="Dynasty Breast Plate Set" type="HEAVY">
+      <set chest="9420" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="38" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="9426" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="39" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="9427" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="40" name="Dynasty Tunic Set" type="ROBE">
+      <set chest="9433" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="41" name="Dynasty Tunic Set" type="ROBE">
+      <set chest="9434" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="42" name="Dynasty Tunic Set" type="ROBE">
+      <set chest="9435" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="43" name="Dynasty Tunic Set" type="ROBE">
+      <set chest="9436" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="44" name="Improved Apella Armor Set" type="HEAVY">
+      <set chest="9831" legs="-1" gloves="9832" feet="9833" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="45" name="Improved Apella Brigandine Set" type="LIGHT">
+      <set chest="9834" legs="-1" gloves="9835" feet="9836" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="46" name="Improved Apella Doublet Set" type="ROBE">
+      <set chest="9837" legs="-1" gloves="9838" feet="9839" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="47" name="Dynasty Breast Plate Set" type="HEAVY">
+      <set chest="9416" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="48" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="9425" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="49" name="Dynasty Tunic Set" type="ROBE">
+      <set chest="9432" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="50" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="10126" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="51" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="10127" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="52" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="10168" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="53" name="Dynasty Leather Armor Set" type="LIGHT">
+      <set chest="10214" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="54" name="Dynasty Platinum Plate Set" type="HEAVY">
+      <set chest="10228" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="55" name="Dynasty Platinum Plate Set" type="HEAVY">
+      <set chest="10229" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="56" name="Dynasty Platinum Plate Set" type="HEAVY">
+      <set chest="10230" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="57" name="Dynasty Platinum Plate Set" type="HEAVY">
+      <set chest="10231" legs="9421" gloves="9423" feet="9424" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="58" name="Dynasty Jewel Leather Mail Set" type="LIGHT">
+      <set chest="10233" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="59" name="Dynasty Jewel Leather Mail Set" type="LIGHT">
+      <set chest="10234" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="60" name="Dynasty Jeweled Leather Armor Set" type="LIGHT">
+      <set chest="10487" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="61" name="Dynasty Jeweled Leather Armor Set" type="LIGHT">
+      <set chest="10488" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="62" name="Dynasty Jeweled Leather Armor Set" type="LIGHT">
+      <set chest="10489" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="63" name="Dynasty Jeweled Leather Armor Set" type="LIGHT">
+      <set chest="10490" legs="9428" gloves="9430" feet="9431" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="64" name="Dynasty Silver Satin Tunic Set" type="ROBE">
+      <set chest="10236" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="65" name="Dynasty Silver Satin Tunic Set" type="ROBE">
+      <set chest="10237" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="66" name="Dynasty Silver Satin Tunic Set" type="ROBE">
+      <set chest="10238" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="67" name="Dynasty Silver Satin Tunic Set" type="ROBE">
+      <set chest="10239" legs="9437" gloves="9439" feet="9440" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="68" name="Apella Combat Armor Set" type="HEAVY">
+      <set chest="14583" legs="-1" gloves="14584" feet="14585" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="69" name="Apella Combat Clothes Set" type="LIGHT">
+      <set chest="14586" legs="-1" gloves="14587" feet="14588" />
+      <price id="57" count="2000000000" />
+   </dress>
+   <dress id="70" name="Apella Combat Overcoat Set" type="ROBE">
+      <set chest="14589" legs="-1" gloves="14590" feet="14591" />
+      <price id="57" count="2000000000" />
+   </dress>
+</list>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/index-cloak.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index-cloak.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index-cloak.htm   (working copy)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=222>
+                  <table width=270 height=46>
+                        {list}
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <table width=50 height=30>
+                     <tr>
+                        {navigation}
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/template-hat.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/template-hat.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/template-hat.htm   (working copy)
@@ -0,0 +1,24 @@
+<tr>
+   <td width=270 height=46 align=center valign=top>
+      <table border=0 cellspacing=2 cellpadding=4 width=270 height=46>
+         <tr>
+            <td FIXWIDTH=40 align=right valign=top>
+               <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{icon}">
+                  <tr>
+                     <td width=32 align=center valign=top>
+                        <img src="l2ui_ch3.multisell_plusicon" width="32" height="32">
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td FIXWIDTH=170 align=left valign=top>
+               <font color="99CC00">{name}</font>
+               <br1>› <font color=999966>Price:</font> {price}.
+            </td>
+            <td valign="top" align="center">
+               <button action="{bypass}" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Blue_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Blue" />
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/info.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/info.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/info.htm   (working copy)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=310 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=220 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› The .dressme command is a brand new <br1>
+                           system that gives you the chance to <br1>
+                           change your armors or weapon or cloak <br1>
+                           texture to look like a different grade <br1>
+                           (B-A-S-Dynasty-Icarus textures ONLY). <br>
+                           *WARNING:* Full body armors can use <br1>
+                           ONLY full body armor textures, and <br1>
+                           half & half tunic/gaiter armor sets can <br1>
+                           use textures from other armors with same <br1>
+                           type half & half tunic/gaiters! <br>
+                           After you purchase the dressme, these features are saved to your character and restored when you log back in-game.
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/template-armor.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/template-armor.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/template-armor.htm   (working copy)
@@ -0,0 +1,24 @@
+<tr>
+   <td width=270 height=46 align=center valign=top>
+      <table border=0 cellspacing=2 cellpadding=4 width=270 height=46>
+         <tr>
+            <td FIXWIDTH=40 align=right valign=top>
+               <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{icon}">
+                  <tr>
+                     <td width=32 align=center valign=top>
+                        <img src="l2ui_ch3.multisell_plusicon" width="32" height="32">
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td FIXWIDTH=170 align=left valign=top>
+               <font color="99CC00">{name}</font>
+               <br1>› <font color=999966>Price:</font> {price}.
+            </td>
+            <td valign="top" align="center">
+               <button action="{bypass}" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Blue_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Blue" />
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
\ No newline at end of file
Index: dist/game/data/xml/sunrise/dressme/weapon.xml
===================================================================
--- dist/game/data/xml/sunrise/dressme/weapon.xml   (revision 0)
+++ dist/game/data/xml/sunrise/dressme/weapon.xml   (working copy)
@@ -0,0 +1,1206 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list xmlns:xsi="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate." xsi:noNamespaceSchemaLocation="../../../xsd/dressme/weapon.xsd">
+   <weapon id="78" name="Great Sword" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="79" name="Sword of Damascus" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="80" name="Tallum Blade" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="81" name="Dragon Slayer" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="82" name="God's Blade" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="85" name="Phantom Sword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="91" name="Heavy War Axe" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="92" name="Sprite's Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="97" name="Lance" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="98" name="Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="142" name="Keshanberk" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="146" name="Ghoulbane" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="147" name="Tear of Darkness" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="148" name="Sword of Valhalla" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="149" name="Sword of Life" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="150" name="Elemental Sword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="151" name="Sword of Miracles" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="164" name="Elysian" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="165" name="Yablonski's Hammer" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="171" name="Deadman's Glory" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="175" name="Art of Battle Axe" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10004" name="Dynasty Dual Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10215" name="Icarus Sawsword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10216" name="Icarus Disperser" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10217" name="Icarus Spirit" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10218" name="Icarus Heavy Arms" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10219" name="Icarus Trident" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10220" name="Icarus Hammer" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10221" name="Icarus Hand" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10222" name="Icarus Hall" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10223" name="Icarus Spitter" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10224" name="Icarus Stinger" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10225" name="Icarus Wingblade" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10226" name="Icarus Shooter" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10252" name="Dynasty Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10253" name="Dynasty Crusher" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10415" name="Icarus Dual Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10870" name="Great Sword - Lightning" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10874" name="Great Axe - Thunder" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10878" name="Sword of Limit*Sword of Limit - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10879" name="Sword of Limit*Sword of Delusion - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10880" name="Sword of Limit*Sword of Nightmare - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10881" name="Sword of Limit*Tsurugi - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10882" name="Innominate Victory - Lightning" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10886" name="Dark Elven Long Bow - Concentration" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10890" name="Sword of Delusion*Sword of Delusion - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10891" name="Sword of Delusion*Sword of Nightmare - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10892" name="Sword of Delusion*Tsurugi - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10893" name="Sword of Valhalla - Nature" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10897" name="Stormbringer*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10898" name="Spell Breaker - Hail" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10902" name="Arthro Nail - Destruction" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10906" name="Ice Storm Hammer - Lightning" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10910" name="Sword of Nightmare*Sword of Nightmare - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10911" name="Sword of Nightmare*Tsurugi - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10912" name="Military Fleuret - Destruction" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10916" name="Sprite's Staff - Hail" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10920" name="Tsurugi*Tsurugi - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10921" name="Caliburs*Sword of Limit - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10922" name="Caliburs*Sword of Delusion - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10923" name="Caliburs*Sword of Nightmare - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10924" name="Caliburs*Tsurugi - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10925" name="Caliburs*Caliburs - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10926" name="Kris - Confusion" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10930" name="Keshanberk - Destruction" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10934" name="Peacemaker - Concentration" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10938" name="Heavy War Axe - Earth" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10942" name="Hell Knife - Confusion" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10946" name="Raid Sword*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10947" name="Shamshir*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10948" name="Spirit Sword*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10949" name="Katana*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10950" name="Sword of Limit*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10951" name="Sword of Delusion*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10952" name="Sword of Nightmare*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10953" name="Tsurugi*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10954" name="Caliburs*Samurai Long Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10955" name="Guardian Sword - Great Gale" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10959" name="Sword of Damascus - Earth" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10963" name="Dismantler - Great Gale" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10967" name="Lance - Earth" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10971" name="Bellion Cestus - Great Gale" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10975" name="Staff of Evil Spirits - Holy Spirit" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10979" name="Deadman's Glory - Landslide" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10983" name="Star Buster - Great Gale" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10987" name="Samurai Long Sword*Samurai Long Sword - Landslide" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10988" name="Art of Battle Axe - Landslide" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10992" name="Demon Dagger - Great Gale" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="10997" name="Kaim Vanul's Bones - Earth" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11001" name="Colichemarde - Earth" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11005" name="Wizard's Tear - Cleverness" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11009" name="Bow of Peril - Earth" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11013" name="Hell Hound - Earth" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11017" name="Dasparion's Staff - Hail" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11021" name="Doomchanter - Concentration" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11025" name="White Lightning - Destruction" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11029" name="Meteor Shower - Earth" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11033" name="Blood Tornado - Destruction" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11037" name="Bloody Orchid - Confusion" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11041" name="Elemental Sword - Hail" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11045" name="Spiritual Eye - Hail" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11049" name="Infernal Master - Concentration" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11053" name="Carnage Bow - Concentration" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11057" name="Keshanberk*Keshanberk - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11058" name="Tallum Blade - Destruction" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11062" name="Destroyer Hammer - Lightning" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11066" name="Divine Pain - Concentration" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11070" name="Halberd - Lightning" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11074" name="Keshanberk*Damascus - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11075" name="Lacerator - Thunder" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11079" name="Damascus*Damascus - Thunder" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11080" name="Dark Legion - Thunder" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11084" name="Undertaker - Evil Spirit" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11088" name="Doom Crusher - Thunder" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11092" name="Dragon Grinder - Earth" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11096" name="Dragon Slayer - Evil Spirit" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11100" name="Flaming Dragon Skull - Wisdom" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11104" name="Branch of the Mother Tree - Nature" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11108" name="Sword of Miracles - Holy Spirit" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11112" name="Reaper - Clairvoyance" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11116" name="Soul Separator - On Fire" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11120" name="Elysian - Great Gale" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11124" name="Soul Bow - Clairvoyance" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11128" name="Tallum Glaive - On Fire" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11133" name="Naga Storm - Molar" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11137" name="Daimon Crystal - Wisdom" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11141" name="Barakiel's Axe - On Fire" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11145" name="Screaming Vengeance - Concentration" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11149" name="Behemoth's Tuning Fork - Destruction" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11153" name="Bultgang - Earth" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11157" name="Shyeed's Bow - Concentration" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11161" name="Sword of Ipos - Earth" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11165" name="Sobekk's Hurricane - Landslide" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11169" name="Sirra's Blade - Landslide" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11173" name="Eclair Bijou - Landslide" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11177" name="Tiphon's Spear - Landslide" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11181" name="Tallum Blade*Damascus - Landslide" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11182" name="Themis' Tongue - Cleverness" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11186" name="Cabrio's Hand - Cleverness" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11190" name="Gram - Thunder" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11194" name="Demon Splinter - Thunder" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11198" name="Draconic Bow - Earth" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11202" name="Dragon Hunter Axe - Thunder" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11206" name="Laevateinn - Lightning" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11210" name="Basalt Battlehammer - Concentration" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11214" name="Sarunga - Earth" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11218" name="Saint Spear - Destruction" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11222" name="Arcana Mace - Nature" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11226" name="Angel Slayer - Concentration" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11230" name="Imperial Staff - Nature" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11234" name="Tallum Blade*Dark Legion's Edge - Lightning" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11235" name="Forgotten Blade - Lightning" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11239" name="Heaven's Divider - Thunder" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11243" name="Dynasty Ancient Sword - Great Gale" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11247" name="Dynasty Knife - Great Gale" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11251" name="Dynasty Dual Sword - Earth" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11252" name="Dynasty Rapier - Earth" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11256" name="Dynasty Mace - Earth" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11260" name="Dynasty Bagh-Nakh - Great Gale" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11264" name="Dynasty Bow - Great Gale" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11268" name="Dynasty Blade - Great Gale" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11272" name="Dynasty Sword - Earth" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11276" name="Dynasty Staff - Holy Spirit" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11280" name="Dynasty Cudgel - Landslide" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11284" name="Dynasty Crusher - Great Gale" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11288" name="Dynasty Crossbow - Great Gale" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11292" name="Dynasty Phantom - Nature" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11296" name="Dynasty Halberd - Earth" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11300" name="Icarus Dual Sword - Destruction" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11301" name="Icarus Disperser - Confusion" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11305" name="Icarus Sawsword - Destruction" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11309" name="Icarus Shooter - Concentration" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11313" name="Icarus Stinger - Destruction" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11317" name="Icarus Spirit - Nature" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11321" name="Icarus Spitter - Concentration" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11325" name="Icarus Wingblade - Lightning" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11329" name="Icarus Trident - Thunder" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11333" name="Icarus Hammer - Earth" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11337" name="Icarus Hand - Destruction" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11341" name="Icarus Heavy Arms - Lightning" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="11345" name="Icarus Hall - Hail" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13042" name="Ancient Legacy Sword" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13043" name="Enhanced Ancient Legacy Sword" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13044" name="Complete Ancient Legacy Sword" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13052" name="Spear of Silenos" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13053" name="Enhanced Spear of Silenos" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13054" name="Complete Spear of Silenos" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13845" name="Attribute Master Yin's Sword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13881" name="Attribute Master Yang's Sword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13882" name="Dynasty Dual Daggers" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13883" name="Icarus Dual Daggers" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13985" name="Exclusive to Monsters (Death Slayer_r)" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13986" name="Exclusive to Monsters (Death Slayer_l)" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="13987" name="Exclusive to Monsters (Savage Warrior)" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14526" name="Dynasty Dual Daggers - Great Gale" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14527" name="Icarus Dual Daggers - Confusion" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14560" name="Dagger of Val Turner Family" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14561" name="Slasher of Val Turner Family" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14562" name="Sword of Ashton Family" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14563" name="Claw of Ashton Family" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14564" name="Slasher of Esthus Family" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14565" name="Great Hammer of Esthus Family" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14566" name="Staff of Dake Family" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14567" name="Hall of Dake Family" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14568" name="Bow of Cadmus Family" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14569" name="Mace of Cadmus Family" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14570" name="Dual Sword of Hunter Family" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14571" name="Spear of Hunter Family" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14572" name="Staff of Abygail Family" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14573" name="Great Hammer of Abygail Family" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14574" name="Spear of Halter Family" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14575" name="Dagger of Halter Family" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14576" name="Mace of Orwen Family" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14577" name="Claw of Orwen Family" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14578" name="Slicer of Val Turner Family" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14579" name="?p?e of Ashton Family" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14580" name="Slicer of Esthus Family" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="14581" name="Estoc of Cadmus Family" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15280" name="NPC use clear 1HS" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15281" name="NPC use clear 2HS" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15300" name="NPC exclusive transparent dual" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15301" name="NPC exclusive transparent pole" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15302" name="NPC exclusive transparent bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15303" name="NPC exclusive transparent claw" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15304" name="NPC exclusive transparent bowgun" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15305" name="NPC exclusive transparent rapier" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15306" name="NPC exclusive transparent dual dagger" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15310" name="Sacred Sword of Einhasad" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="15687" name="Triumph Rapier" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="207" name="Staff of Phantom" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="208" name="Staff of Seal" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="209" name="Divine Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="210" name="Staff of Evil Spirits" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="211" name="Staff of Nobility" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="212" name="Dasparion's Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="213" name="Branch of the Mother Tree" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="214" name="The Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="229" name="Kris" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="234" name="Demon Dagger" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="235" name="Bloody Orchid" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="236" name="Soul Separator" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="237" name="Dragon's Tooth" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="243" name="Hell Knife" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="264" name="Pata" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="267" name="Arthro Nail" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="268" name="Bellion Cestus" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="269" name="Blood Tornado" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="270" name="Dragon Grinder" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="284" name="Dark Elven Long Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="287" name="Bow of Peril" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="288" name="Carnage Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="289" name="Soul Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="290" name="The Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21935" name="Butcher Blades" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21937" name="Butcher Blades - Confusion" type="DUALDAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21955" name="Blades of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21957" name="Blades of Delusion - Earth" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21959" name="Blood Brother" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21966" name="Blood Brother - Great Gale" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21973" name="Mardil's Fan" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="21977" name="Mardil's Fan - Holy Spirit" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2500" name="Dark Legion's Edge" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2504" name="Meteor Shower" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2566" name="Stormbringer*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2567" name="Stormbringer*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2568" name="Stormbringer*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2569" name="Stormbringer*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2570" name="Stormbringer*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2571" name="Stormbringer*Samurai Long sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2576" name="Shamshir*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2577" name="Shamshir*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2578" name="Shamshir*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2579" name="Shamshir*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2580" name="Shamshir*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2581" name="Shamshir*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2585" name="Katana*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2586" name="Katana*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2587" name="Katana*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2588" name="Katana*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2589" name="Katana*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2590" name="Katana*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2593" name="Spirit Sword*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2594" name="Spirit Sword*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2595" name="Spirit Sword*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2596" name="Spirit Sword*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2597" name="Spirit Sword*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2598" name="Spirit Sword*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2600" name="Raid Sword*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2601" name="Raid Sword*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2602" name="Raid Sword*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2603" name="Raid Sword*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2604" name="Raid Sword*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2605" name="Raid Sword*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2606" name="Caliburs*Caliburs" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2607" name="Caliburs*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2608" name="Caliburs*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2609" name="Caliburs*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2610" name="Caliburs*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2611" name="Caliburs*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2612" name="Sword of Limit*Sword of Limit" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2613" name="Sword of Limit*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2614" name="Sword of Limit*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2615" name="Sword of Limit*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2616" name="Sword of Limit*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2617" name="Sword of Delusion*Sword of Delusion" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2618" name="Sword of Delusion*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2619" name="Sword of Delusion*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2620" name="Sword of Delusion*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2621" name="Sword of Nightmare*Sword of Nightmare" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2622" name="Sword of Nightmare*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2623" name="Sword of Nightmare*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2624" name="Tsurugi*Tsurugi" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2625" name="Tsurugi*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="2626" name="Samurai Long Sword*Samurai Long Sword" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="300" name="Great Axe" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="304" name="Orcish Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="305" name="Tallum Glaive" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="306" name="Dragon Claw Axe" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="307" name="Aurakyria Lance" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="4903" name="Dasparion's Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="4904" name="Dasparion's Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="4905" name="Dasparion's Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5233" name="Keshanberk*Keshanberk" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5629" name="Orcish Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5630" name="Orcish Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5631" name="Orcish Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5704" name="Keshanberk*Keshanberk" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5705" name="Keshanberk*Damascus" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="5706" name="Damascus*Damascus" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6364" name="Forgotten Blade" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6365" name="Basalt Battlehammer" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6366" name="Imperial Staff" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6367" name="Angel Slayer" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6368" name="Shining Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6369" name="Dragon Hunter Axe" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6370" name="Saint Spear" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6371" name="Demon Splinter" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6372" name="Heaven's Divider" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6532" name="KingFisher Rod" type="FISHINGROD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6533" name="Cygnus Pole" type="FISHINGROD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6534" name="Triton Pole" type="FISHINGROD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6579" name="Arcana Mace" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6580" name="Tallum Blade*Dark Legion's Edge" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="6722" name="Monster Only(Ahrimanes)" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7575" name="Draconic Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7834" name="Art of Battle Axe" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7883" name="Guardian Sword" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7884" name="Infernal Master" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7889" name="Wizard's Tear" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7892" name="Spell Breaker" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7893" name="Kaim Vanul's Bones" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7894" name="Spiritual Eye" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7895" name="Flaming Dragon Skull" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7899" name="Destroyer Hammer" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7900" name="Ice Storm Hammer" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7901" name="Star Buster" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="7902" name="Doom Crusher" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8678" name="Sirra's Blade" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8679" name="Sword of Ipos" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8680" name="Barakiel's Axe" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8681" name="Behemoth's Tuning Fork" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8682" name="Naga Storm" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8683" name="Tiphon's Spear" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8684" name="Shyeed's Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8685" name="Sobekk's Hurricane" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8686" name="Themis' Tongue" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8687" name="Cabrio's Hand" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8688" name="Daimon Crystal" type="BLUNT" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8763" name="Elrokian Trap" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="8938" name="Damascus * Tallum Blade" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9304" name="Military Fleuret" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9308" name="Innominate Victory" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9312" name="Peacemaker" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9316" name="Colichemarde" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9320" name="Dismantler" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9324" name="Hell Hound" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9328" name="White Lightning" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9332" name="Divine Pain" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9336" name="Doomchanter" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9340" name="Lacerator" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9344" name="Undertaker" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9348" name="Reaper" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9352" name="?clair Bijou" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9356" name="Durendal" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9360" name="Screaming Vengeance" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9364" name="Laevateinn" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9368" name="Gram" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9372" name="Sarnga" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9376" name="Dynasty Rapier" type="RAPIER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9380" name="Dynasty Ancient Sword" type="ANCIENTSWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9384" name="Dynasty Crossbow" type="CROSSBOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9442" name="Dynasty Sword" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9443" name="Dynasty Blade" type="SWORD" isBig="true">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9444" name="Dynasty Phantom" type="SWORD">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9445" name="Dynasty Bow" type="BOW">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9446" name="Dynasty Knife" type="DAGGER">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9447" name="Dynasty Halberd" type="POLE">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9448" name="Dynasty Cudgel" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9449" name="Dynasty Mace" type="BLUNT">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9450" name="Dynasty Bagh-Nakh" type="DUALFIST">
+      <price id="57" count="1000000000" />
+   </weapon>
+   <weapon id="9813" name="Orc Officer" type="DUAL">
+      <price id="57" count="1000000000" />
+   </weapon>
+</list>
\ No newline at end of file
Index: dist/game/data/xml/sunrise/dressme/cloak.xml
===================================================================
--- dist/game/data/xml/sunrise/dressme/cloak.xml   (revision 0)
+++ dist/game/data/xml/sunrise/dressme/cloak.xml   (working copy)
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list xmlns:xsi="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate." xsi:noNamespaceSchemaLocation="../../../xsd/dressme/cloak.xsd">
+   <cloak number="1" id="13687" name="Knight's Cloak">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="2" id="21583" name="Festival's Cloak - True Black">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="3" id="21587" name="Festival's Cloak - Bloody Red">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="4" id="21588" name="Festival's Cloak - Pearl White">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="5" id="21716" name="Cloak of Zaken">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="6" id="21717" name="Cloak of Freya">
+      <price id="57" count="500000000" />
+   </cloak>
+   <cloak number="7" id="21718" name="Cloak of Frintezza">
+      <price id="57" count="500000000" />
+   </cloak>
+</list>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/dress-armor.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/dress-armor.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/dress-armor.htm   (working copy)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td valign="top" align="center"><br>
+                  <font name="__SystemEditBoxFont" color="669933">{name}</font>
+                  <img src="L2UI_CH3.herotower_deco" width="252" height="32">
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=250>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_chest_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{chest_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{chest_name}</font>
+                                    <br1>› Grade: {chest_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_legs_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{legs_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{legs_name}</font>
+                                    <br1>› Grade: {legs_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_gloves_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{gloves_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{gloves_name}</font>
+                                    <br1>› Grade: {gloves_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_feet_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{feet_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{feet_name}</font>
+                                    <br1>› Grade: {feet_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td valign="top" align="center"><br><br>
+                           <font color="99CC00">Cost:</font> {price}.
+                           <button action="{bypass}" value="Change visual to {name}" width=282 height=26 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xml/sunrise/dressme/hat.xml
===================================================================
--- dist/game/data/xml/sunrise/dressme/hat.xml   (revision 0)
+++ dist/game/data/xml/sunrise/dressme/hat.xml   (working copy)
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list xmlns:xsi="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate." xsi:noNamespaceSchemaLocation="../../../xsd/dressme/hat.xsd">
+   <hat number="1" id="6843" name="Cat Ears" slot="2"> <!-- Hair 2 -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="2" id="6844" name="Lady's Hair Pin" slot="2"> <!-- Hair 2 -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="3" id="7680" name="Raccoon Ears" slot="2"> <!-- Hair 2 -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="4" id="8660" name="Demon Horns" slot="2"> <!-- Hair 2 -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="5" id="8661" name="Mask of Spirits" slot="1"> <!-- Hair 1 -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="7" id="8565" name="Romantic Chapeau" slot="3"> <!-- Full Hair -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="8" id="8566" name="Iron Circlet" slot="3"> <!-- Full Hair -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="6" id="8918" name="Leather Cap" slot="3"> <!-- Full Hair -->
+      <price id="57" count="500000000" />
+   </hat>
+   <hat number="9" id="8919" name="First Mate's Hat" slot="3"> <!-- Full Hair -->
+      <price id="57" count="500000000" />
+   </hat>
+</list>
\ No newline at end of file
Index: dist/game/data/xsd/dressme/shield.xsd
===================================================================
--- dist/game/data/xsd/dressme/shield.xsd   (revision 0)
+++ dist/game/data/xsd/dressme/shield.xsd   (working copy)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.">
+   <xs:element name="list">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="shield" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="price">
+                        <xs:complexType>
+                           <xs:attribute name="id" type="xs:int"></xs:attribute>
+                           <xs:attribute name="count" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="number" type="xs:int"></xs:attribute>
+                  <xs:attribute name="id" type="xs:int"></xs:attribute>
+                  <xs:attribute name="name" type="xs:string"></xs:attribute>
+               </xs:complexType>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+   </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/index-armor.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index-armor.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index-armor.htm   (working copy)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=222>
+                  <table width=270 height=46>
+                        {list}
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <table width=50 height=30>
+                     <tr>
+                        {navigation}
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/template-cloak.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/template-cloak.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/template-cloak.htm   (working copy)
@@ -0,0 +1,24 @@
+<tr>
+   <td width=270 height=46 align=center valign=top>
+      <table border=0 cellspacing=2 cellpadding=4 width=270 height=46>
+         <tr>
+            <td FIXWIDTH=40 align=right valign=top>
+               <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{icon}">
+                  <tr>
+                     <td width=32 align=center valign=top>
+                        <img src="l2ui_ch3.multisell_plusicon" width="32" height="32">
+                     </td>
+                  </tr>
+               </table>
+            </td>
+            <td FIXWIDTH=170 align=left valign=top>
+               <font color="99CC00">{name}</font>
+               <br1>› <font color=999966>Price:</font> {price}.
+            </td>
+            <td valign="top" align="center">
+               <button action="{bypass}" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Blue_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Blue" />
+            </td>
+         </tr>
+      </table>
+   </td>
+</tr>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/index.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index.htm   (working copy)
@@ -0,0 +1,215 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=100>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.weapon_ysandy_crusher_i01">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Weapon</font>
+                                    <br1>› <font color=CCCC33>Price:</font> 1 000 000 000 Adena.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme-weapon" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.armor_t94_u_i03">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Armor</font>
+                                    <br1>› <font color=CCCC33>Price:</font> 2 000 000 000 Adena.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme-armor" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.evilgate_shield_i01">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Shield</font>
+                                    <br1>› <font color=CCCC33>Price:</font> 5 000 000 Adena.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme-shield" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.feud_lord_cloak_i00">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Cloak</font>
+                                    <br1>› <font color=CCCC33>Price:</font> 500 000 000 Adena.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme-cloak" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.evilgate_shield_i01">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="669933">Hat</font>
+                                    <br1>› <font color=CCCC33>Price:</font> 500 000 000 Adena.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .dressme-hat" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="branchsys2.br_transform_lilith_01_i00">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="99CC33"><?show_hide?></font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .<?show_hide_b?>" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                     <tr>
+                        <td width=270 height=50 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=50>
+                              <tr>
+                                 <td FIXWIDTH=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="branchsys2.br_s_hammerpunch_treasure1_i001">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td FIXWIDTH=210 align=left valign=top>
+                                    <font color="CC3333">Remove visual effect</font>
+                                    <br1>› <font color=CCCC33>Price:</font> Free.
+                                 </td>
+                                 <td valign="top" align="center">
+                                    <br>
+                                    <button action="bypass -h voice .undressme" width="15" height="15" back="L2UI_CT1.Button_DF_Input_Down" fore="L2UI_CT1.Button_DF_Input">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xsd/dressme/hat.xsd
===================================================================
--- dist/game/data/xsd/dressme/hat.xsd   (revision 0)
+++ dist/game/data/xsd/dressme/hat.xsd   (working copy)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.">
+   <xs:element name="list">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="hat" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="price">
+                        <xs:complexType>
+                           <xs:attribute name="id" type="xs:int"></xs:attribute>
+                           <xs:attribute name="count" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="number" type="xs:int"></xs:attribute>
+                  <xs:attribute name="id" type="xs:int"></xs:attribute>
+                  <xs:attribute name="name" type="xs:string"></xs:attribute>
+                  <xs:attribute name="slot" type="xs:int"></xs:attribute>
+               </xs:complexType>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+   </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/index-shield.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index-shield.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index-shield.htm   (working copy)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=222>
+                  <table width=270 height=46>
+                        {list}
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <table width=50 height=30>
+                     <tr>
+                        {navigation}
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/dress-hat.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/dress-hat.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/dress-hat.htm   (working copy)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td valign="top" align="center"><br>
+                  <font name="__SystemEditBoxFont" color="669933">{name}</font>
+                  <img src="L2UI_CH3.herotower_deco" width="252" height="32">
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=250>
+                  <table width=270 height=46>
+                     <tr>
+                        <td width=270 height=40 align=center valign=top>
+                           <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                              <tr>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{my_hat_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=20 align=center valign=center>
+                                    <img src="L2UI_CH3.shortcut_minimizev_down" width="16" height="16">
+                                 </td>
+                                 <td width=40 align=right valign=top>
+                                    <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="{item_icon}">
+                                       <tr>
+                                          <td width=32 align=center valign=top>
+                                             <img src="icon.panel_2" width="32" height="32">
+                                          </td>
+                                       </tr>
+                                    </table>
+                                 </td>
+                                 <td width=184 align=left valign=top>
+                                    <font color="99CC66">{item_name}</font>
+                                    <br1>› Grade: {item_grade}.
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                     </tr>
+                  </table>
+                  <table width=270 height=46>
+                     <tr>
+                        <td valign="top" align="center"><br><br>
+                           <font color="99CC00">Cost:</font> {price}.
+                           <button action="{bypass}" value="Change visual to {name}" width=282 height=26 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <button action="bypass -h voice .dressme" width=32 height=32 back="L2UI_CT1.MiniMap_DF_MinusBtn_Red_Down" fore="L2UI_CT1.MiniMap_DF_MinusBtn_Red" />
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/html/sunrise/dressme/index-weapon.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index-weapon.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index-weapon.htm   (working copy)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=222>
+                  <table width=270 height=46>
+                        {list}
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <table width=50 height=30>
+                     <tr>
+                        {navigation}
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>
Index: dist/game/data/xml/sunrise/dressme/shield.xml
===================================================================
--- dist/game/data/xml/sunrise/dressme/shield.xml   (revision 0)
+++ dist/game/data/xml/sunrise/dressme/shield.xml   (working copy)
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list xmlns:xsi="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate." xsi:noNamespaceSchemaLocation="../../../xsd/dressme/shield.xsd">
+   <shield number="1" id="2497" name="Full Plate Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="2" id="673" name="Avadon Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="3" id="633" name="Zubei's Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="4" id="110" name="Doom Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="5" id="641" name="Dark Crystal Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="6" id="2498" name="Shield of Nightmare">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="7" id="6377" name="Imperial Crusader Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="8" id="9441" name="Dynasty Shield">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="9" id="12811" name="Arcana Sigil">
+      <price id="57" count="5000000" />
+   </shield>
+   <shield number="10" id="12812" name="Dynasty Sigil">
+      <price id="57" count="5000000" />
+   </shield>
+</list>
\ No newline at end of file
Index: dist/game/data/xsd/dressme/armor.xsd
===================================================================
--- dist/game/data/xsd/dressme/armor.xsd   (revision 0)
+++ dist/game/data/xsd/dressme/armor.xsd   (working copy)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.">
+   <xs:element name="list">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="dress" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="set">
+                        <xs:complexType>
+                           <xs:attribute name="chest" type="xs:int"></xs:attribute>
+                           <xs:attribute name="legs" type="xs:int"></xs:attribute>
+                           <xs:attribute name="gloves" type="xs:int"></xs:attribute>
+                           <xs:attribute name="feet" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                     <xs:element name="price">
+                        <xs:complexType>
+                           <xs:attribute name="id" type="xs:int"></xs:attribute>
+                           <xs:attribute name="count" type="xs:int"></xs:attribute>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="id" type="xs:int"></xs:attribute>
+                  <xs:attribute name="name" type="xs:string"></xs:attribute>
+                  <xs:attribute name="type" type="xs:string"></xs:attribute>
+               </xs:complexType>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+   </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/html/sunrise/dressme/index-hat.htm
===================================================================
--- dist/game/data/html/sunrise/dressme/index-hat.htm   (revision 0)
+++ dist/game/data/html/sunrise/dressme/index-hat.htm   (working copy)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<body scroll="no">
+<title>Dress me</title>
+<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="l2ui_ct1.Windows_DF_TooltipBG">
+   <tr>
+      <td valign="top">
+         <table width=290 height=330>
+            <tr>
+               <td width=270 height=40 align=center valign=top>
+                  <table border=0 cellspacing=2 cellpadding=4 width=270 height=40>
+                     <tr>
+                        <td FIXWIDTH=40 align=right valign=top>
+                           <table border=0 cellspacing=0 cellpadding=0 width=32 height=32 background="icon.etc_letter_in_bottle_red_i00">
+                              <tr>
+                                 <td width=32 align=center valign=top>
+                                    <img src="icon.panel_2" width="32" height="32">
+                                 </td>
+                              </tr>
+                           </table>
+                        </td>
+                        <td FIXWIDTH=170 align=left valign=top>
+                           <font color="CC3333">Visual change equip</font>
+                           <br1>› Information.
+                        </td>
+                        <td valign="top" align="center">
+                           <button action="bypass -h voice .dressinfo" width=32 height=32 back="L2UI_CT1.MiniMap_DF_PlusBtn_Gray_Down" fore="L2UI_CT1.MiniMap_DF_PlusBtn_Gray" />
+                        </td>
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center" height=222>
+                  <table width=270 height=46>
+                        {list}
+                  </table>
+               </td>
+            </tr>
+            <tr>
+               <td valign="top" align="center">
+                  <table width=50 height=30>
+                     <tr>
+                        {navigation}
+                     </tr>
+                  </table>
+               </td>
+            </tr>
+         </table>
+      </td>
+   </tr>
+</table>
+</body>
+</html>

CitarSQL

ALTER TABLE items ADD COLUMN `visual_item_id` int(7) NOT NULL DEFAULT '0' AFTER `time`;