diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
index 41a8ffa7e752c0b75960b6c2b478524fd49e486e..85f5fc10cf7337738f4b0ed7756ac3195ff304ff 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
@@ -157,6 +157,7 @@ import handlers.itemhandlers.BeastSpice;
 import handlers.itemhandlers.BeastSpiritShot;
 import handlers.itemhandlers.BlessedSpiritShot;
 import handlers.itemhandlers.Book;
+import handlers.itemhandlers.Calculator;
 import handlers.itemhandlers.Disguise;
 import handlers.itemhandlers.Elixir;
 import handlers.itemhandlers.EnchantAttribute;
@@ -492,6 +493,7 @@ public class MasterHandler
 			BlessedSpiritShot.class,
 			BeastSoulShot.class,
 			BeastSpiritShot.class,
+			Calculator.class,
 			PaganKeys.class,
 			Maps.class,
 			NicknameColor.class,
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java
index 1442f608499479c565a6b81f2475407c8b9b1b4b..63dd4baf2214f47ef180a64d0a2c1ba2ffb0f10b 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java
@@ -184,7 +184,7 @@ public class AdminBuffs implements IAdminCommandHandler
 			
 			try
 			{
-				player.getReuseTimeStamp().clear();
+				player.getSkillReuseTimeStamps().clear();
 				player.getDisabledSkills().clear();
 				player.sendPacket(new SkillCoolTime(player));
 				activeChar.sendMessage("Skill reuse was removed from " + player.getName() + ".");
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
index 7ac392f3fd0592e3faf5b2036e0338ff022e1a88..46f7e0b4b9f8a8f98d63767b14054b0a18cf8efa 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
@@ -26,45 +26,40 @@ import com.l2jserver.gameserver.util.Broadcast;
 
 /**
  * Beast SoulShot Handler
- *
  * @author Tempy
  */
 public class BeastSoulShot implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (playable == null)
-			return;
+			return false;
 		
 		L2PcInstance activeOwner = null;
 		if (playable instanceof L2Summon)
 		{
 			activeOwner = ((L2Summon) playable).getOwner();
 			activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM);
-			return;
+			return false;
 		}
 		else if (playable instanceof L2PcInstance)
 			activeOwner = (L2PcInstance) playable;
 		
 		if (activeOwner == null)
-			return;
+			return false;
 		L2Summon activePet = activeOwner.getPet();
 		
 		if (activePet == null)
 		{
 			activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME);
-			return;
+			return false;
 		}
 		
 		if (activePet.isDead())
 		{
 			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET);
-			return;
+			return false;
 		}
 		
 		int itemId = item.getItemId();
@@ -76,7 +71,7 @@ public class BeastSoulShot implements IItemHandler
 			// Not enough Soulshots to use.
 			if (!activeOwner.disableAutoShot(itemId))
 				activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS_FOR_PET);
-			return;
+			return false;
 		}
 		
 		L2ItemInstance weaponInst = null;
@@ -87,7 +82,7 @@ public class BeastSoulShot implements IItemHandler
 		if (weaponInst == null)
 		{
 			if (activePet.getChargedSoulShot() != L2ItemInstance.CHARGED_NONE)
-				return;
+				return false;
 			
 			activePet.setChargedSoulShot(L2ItemInstance.CHARGED_SOULSHOT);
 		}
@@ -96,7 +91,7 @@ public class BeastSoulShot implements IItemHandler
 			if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE)
 			{
 				// SoulShots are already active.
-				return;
+				return false;
 			}
 			weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT);
 		}
@@ -106,12 +101,13 @@ public class BeastSoulShot implements IItemHandler
 		{
 			if (!activeOwner.disableAutoShot(itemId))
 				activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS_FOR_PET);
-			return;
+			return false;
 		}
 		
 		// Pet uses the power of spirit.
 		activeOwner.sendPacket(SystemMessageId.PET_USE_SPIRITSHOT);
 		
 		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, itemId == 6645 ? 2033 : 22036, 1, 0, 0), 360000/*600*/);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java
index a56aad85a28f9be86fd036c7e815729d8376585c..95441b08cbf5e73da345623bef0c1e717015733f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java
@@ -25,22 +25,18 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 
 public class BeastSpice implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		
 		if (!(activeChar.getTarget() instanceof L2FeedableBeastInstance))
 		{
 			activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
-			return;
+			return false;
 		}
 		
 		int skillId = 0;
@@ -56,5 +52,6 @@ public class BeastSpice implements IItemHandler
 		L2Skill skill = SkillTable.getInstance().getInfo(skillId, 1);
 		if (skill != null)
 			activeChar.useMagic(skill, false, false);
+		return true;
 	}
 }
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
index faf02219a85c8b26c83b8fdf68455e760b5d871b..63bd83216e9c0ec14e59dc59ebd3d9da6ab925a5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
@@ -26,27 +26,22 @@ import com.l2jserver.gameserver.util.Broadcast;
 
 /**
  * Beast SpiritShot Handler
- *
  * @author Tempy
  */
 public class BeastSpiritShot implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (playable == null)
-			return;
+			return false;
 		
 		L2PcInstance activeOwner = playable.getActingPlayer();
 		
 		if (playable instanceof L2Summon)
 		{
 			activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM);
-			return;
+			return false;
 		}
 		
 		L2Summon activePet = activeOwner.getPet();
@@ -54,13 +49,13 @@ public class BeastSpiritShot implements IItemHandler
 		if (activePet == null)
 		{
 			activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME);
-			return;
+			return false;
 		}
 		
 		if (activePet.isDead())
 		{
 			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET);
-			return;
+			return false;
 		}
 		
 		int itemId = item.getItemId();
@@ -73,7 +68,7 @@ public class BeastSpiritShot implements IItemHandler
 			// Not enough SpiritShots to use.
 			if (!activeOwner.disableAutoShot(itemId))
 				activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITHOTS_FOR_PET);
-			return;
+			return false;
 		}
 		
 		L2ItemInstance weaponInst = null;
@@ -84,7 +79,7 @@ public class BeastSpiritShot implements IItemHandler
 		if (weaponInst == null)
 		{
 			if (activePet.getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE)
-				return;
+				return false;
 			
 			if (isBlessed)
 				activePet.setChargedSpiritShot(L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT);
@@ -96,7 +91,7 @@ public class BeastSpiritShot implements IItemHandler
 			if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE)
 			{
 				// SpiritShots are already active.
-				return;
+				return false;
 			}
 			
 			if (isBlessed)
@@ -109,7 +104,7 @@ public class BeastSpiritShot implements IItemHandler
 		{
 			if (!activeOwner.disableAutoShot(itemId))
 				activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITHOTS_FOR_PET);
-			return;
+			return false;
 		}
 		
 		// Pet uses the power of spirit.
@@ -131,5 +126,6 @@ public class BeastSpiritShot implements IItemHandler
 				break;
 		}
 		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skillId, 1, 0, 0), 360000/*600*/);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java
index da30b18389c97010b458c17cceeed2a7c6117576..d2375d8383c9166bccf47cdc4523b28ad8024169 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java
@@ -24,23 +24,13 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 import com.l2jserver.gameserver.util.Broadcast;
 
-/**
- * This class ...
- *
- * @version $Revision: 1.1.2.1.2.5 $ $Date: 2005/03/27 15:30:07 $
- */
-
 public class BlessedSpiritShot implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public synchronized void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public synchronized boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
@@ -52,12 +42,12 @@ public class BlessedSpiritShot implements IItemHandler
 		{
 			if (!activeChar.getAutoSoulShot().contains(itemId))
 				activeChar.sendPacket(SystemMessageId.CANNOT_USE_SPIRITSHOTS);
-			return;
+			return false;
 		}
 		
 		// Check if Blessed SpiritShot is already active (it can be charged over SpiritShot)
 		if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE)
-			return;
+			return false;
 		
 		// Check for correct grade
 		final int weaponGrade = weaponItem.getCrystalType();
@@ -99,7 +89,7 @@ public class BlessedSpiritShot implements IItemHandler
 			if (!activeChar.getAutoSoulShot().contains(itemId))
 				activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH);
 			
-			return;
+			return false;
 		}
 		
 		
@@ -108,7 +98,7 @@ public class BlessedSpiritShot implements IItemHandler
 		{
 			if (!activeChar.disableAutoShot(itemId))
 				activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS);
-			return;
+			return false;
 		}
 		
 		// Charge Blessed SpiritShot
@@ -155,5 +145,6 @@ public class BlessedSpiritShot implements IItemHandler
 				
 		}
 		Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java
index a092a080542f63e54c08dde72d7ccd0ea9384c09..b1bd5c1596ac7d3e55f684d2ab8d0dae4f640580 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java
@@ -24,15 +24,11 @@ import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
 
 public class Book implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		final int itemId = item.getItemId();
 		
@@ -54,5 +50,6 @@ public class Book implements IItemHandler
 		}
 		
 		activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java
new file mode 100644
index 0000000000000000000000000000000000000000..019bad0c4e67fc14ac7c846e6e01bb49bbce7515
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java
@@ -0,0 +1,39 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.itemhandlers;
+
+import com.l2jserver.gameserver.handler.IItemHandler;
+import com.l2jserver.gameserver.model.actor.L2Playable;
+import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jserver.gameserver.network.serverpackets.ShowCalculator;
+
+/**
+ * @author Zoey76
+ */
+public class Calculator implements IItemHandler
+{
+	private static final int CalculatorId = 4393;
+	
+	@Override
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	{
+		if (!playable.isPlayer())
+		{
+			return false;
+		}
+		playable.broadcastPacket(new ShowCalculator(CalculatorId));
+		return true;
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java
index 6b493c0d11de1147ca03c20633e32d0dfa143c20..e2bc0fafbb27da8bfd7ab65b6fc459d532e82f12 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java
@@ -22,15 +22,12 @@ import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
 
 public class ChristmasTree implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		L2NpcTemplate template1 = null;
@@ -46,7 +43,7 @@ public class ChristmasTree implements IItemHandler
 		}
 		
 		if (template1 == null)
-			return;
+			return false;
 		
 		L2Object target = activeChar.getTarget();
 		if (target == null)
@@ -63,10 +60,12 @@ public class ChristmasTree implements IItemHandler
 			activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false);
 			
 			activeChar.sendMessage("Created " + template1.getName() + " at x: " + spawn.getLocx() + " y: " + spawn.getLocy() + " z: " + spawn.getLocz());
+			return true;
 		}
 		catch (Exception e)
 		{
-			activeChar.sendMessage("Target is not ingame.");
+			activeChar.sendPacket(SystemMessageId.TARGET_CANT_FOUND);
+			return false;
 		}
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java
index 82658740ea711bdec6cff25c8de7a79243f0a164..76f2597202bc02c518e5836d9aeafc2049ea2d64 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java
@@ -22,23 +22,15 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
 
 /**
- * This class provides handling for items that should display a map
- * when double clicked.
- * 
- * @version $Revision: 1.1.4.3 $ $Date: 2005/03/27 15:30:07 $
+ * This class provides handling for items that should display a map when double clicked.
  */
-
 public class Disguise implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		
@@ -48,21 +40,22 @@ public class Disguise implements IItemHandler
 			if (activeChar.getClan() != null && activeChar.getClan().getHasCastle() > 0)
 			{
 				activeChar.sendPacket(SystemMessageId.TERRITORY_OWNING_CLAN_CANNOT_USE_DISGUISE_SCROLL);
-				return;
+				return false;
 			}
 			TerritoryWarManager.getInstance().addDisguisedPlayer(activeChar.getObjectId());
 			activeChar.broadcastUserInfo();
 			playable.destroyItem("Consume", item.getObjectId(), 1, null, false);
+			return true;
 		}
 		else if (regId > 0)
 		{
 			activeChar.sendPacket(SystemMessageId.THE_DISGUISE_SCROLL_MEANT_FOR_DIFFERENT_TERRITORY);
-			return;
+			return false;
 		}
 		else
 		{
 			activeChar.sendPacket(SystemMessageId.TERRITORY_WAR_SCROLL_CAN_NOT_USED_NOW);
-			return;
+			return false;
 		}
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java
index d4682750cc31353ca829d6b6857cf0839fb295cb..242e1c3df33280f6a89d7ad2d81adce98aacf3cc 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java
@@ -21,18 +21,14 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 
 public class Elixir extends ItemSkills
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
 		{
 			playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS);
-			return;
+			return false;
 		}
-		super.useItem(playable, item, forceUse);
+		return super.useItem(playable, item, forceUse);
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java
index 26dcd6f5c62b4985bc3b058a93e991a91384aa21..076faac09efb36c37d303895c42a5de5a5269c11 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java
@@ -24,22 +24,23 @@ import com.l2jserver.gameserver.network.serverpackets.ExChooseInventoryAttribute
 public class EnchantAttribute implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		final L2PcInstance activeChar = (L2PcInstance) playable;
 		if (activeChar.isCastingNow())
-			return;
+			return false;
 		
 		if (activeChar.isEnchanting())
 		{
 			activeChar.sendPacket(SystemMessageId.ENCHANTMENT_ALREADY_IN_PROGRESS);
-			return;
+			return false;
 		}
 		
 		activeChar.setActiveEnchantAttrItem(item);
 		activeChar.sendPacket(new ExChooseInventoryAttributeItem(item));
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java
index 42019f3c55a8aac0f3913afe2c883ff25a24fbbe..ef0fe55b9d65128dc836587e57223b6442ef6d29 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java
@@ -23,27 +23,24 @@ import com.l2jserver.gameserver.network.serverpackets.ChooseInventoryItem;
 
 public class EnchantScrolls implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		final L2PcInstance activeChar = (L2PcInstance) playable;
 		if (activeChar.isCastingNow())
-			return;
+			return false;
 		
 		if (activeChar.isEnchanting())
 		{
 			activeChar.sendPacket(SystemMessageId.ENCHANTMENT_ALREADY_IN_PROGRESS);
-			return;
+			return false;
 		}
 		
 		activeChar.setActiveEnchantItem(item);
 		activeChar.sendPacket(new ChooseInventoryItem(item.getItemId()));
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java
index 6743eb4c3e9e8a5aca9827cb6e04a0b1a86cd207..69ad172b88020b02950461e2bd356c297052f608 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java
@@ -25,15 +25,11 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 public class EnergyStarStone extends ItemSkills
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		final L2AirShipInstance ship = ((L2PcInstance)playable).getAirShip();
 		if (ship == null
@@ -44,8 +40,8 @@ public class EnergyStarStone extends ItemSkills
 			sm.addItemName(item);
 			playable.sendPacket(sm);
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
-		super.useItem(playable, item, forceUse);
+		return super.useItem(playable, item, forceUse);
 	}
 }
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java
index 37daf5910c9708df1a9a47e3fbdfe0a0bd416151..c13ac838ef327f222fd3a25da83e952b3baeebff 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java
@@ -1,5 +1,16 @@
-/**
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
  * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
  */
 package handlers.itemhandlers;
 
@@ -20,14 +31,12 @@ public class EventItem implements IItemHandler
 {
 	private static final Logger _log = Logger.getLogger(EventItem.class.getName());
 	
-	/* (non-Javadoc)
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.item.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
+		boolean used = false;
 		if(!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		final L2PcInstance activeChar = (L2PcInstance)playable;
 		
@@ -35,17 +44,18 @@ public class EventItem implements IItemHandler
 		switch(itemId)
 		{
 			case 13787: // Handy's Block Checker Bond
-				useBlockCheckerItem(activeChar, item);
+				used = useBlockCheckerItem(activeChar, item);
 				break;
 			case 13788: // Handy's Block Checker Land Mine
-				useBlockCheckerItem(activeChar, item);
+				used = useBlockCheckerItem(activeChar, item);
 				break;
 			default:
 				_log.warning("EventItemHandler: Item with id: "+itemId+" is not handled");
 		}
+		return used;
 	}
 	
-	private final void useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item)
+	private final boolean useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item)
 	{
 		final int blockCheckerArena = castor.getBlockCheckerArena();
 		if(blockCheckerArena == -1)
@@ -53,16 +63,16 @@ public class EventItem implements IItemHandler
 			SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
 			msg.addItemName(item);
 			castor.sendPacket(msg);
-			return;
+			return false;
 		}
 		
 		
 		final L2Skill sk = item.getEtcItem().getSkills()[0].getSkill();
 		if(sk == null)
-			return;
+			return false;
 		
 		if(!castor.destroyItem("Consume", item, 1, castor, true))
-			return;
+			return false;
 		
 		final L2BlockInstance block = (L2BlockInstance) castor.getTarget();
 		
@@ -76,8 +86,9 @@ public class EventItem implements IItemHandler
 				if(enemyTeam != -1 && enemyTeam != team)
 					sk.getEffects(castor, pc);
 			}
+			return true;
 		}
-		else
-			_log.warning("Char: "+castor.getName()+"["+castor.getObjectId()+"] has unknown block checker arena");
+		_log.warning("Char: "+castor.getName()+"["+castor.getObjectId()+"] has unknown block checker arena");
+		return false;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java
index 7dc5dad97cd90ae8967356b87a5ad0b74d84c837..be2dc8b96408dfee4ea47e92a2258d5097899968 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java
@@ -12,7 +12,6 @@
  * You should have received a copy of the GNU General Public License along with
  * this program. If not, see <http://www.gnu.org/licenses/>.
  */
-
 package handlers.itemhandlers;
 
 import java.util.List;
@@ -37,11 +36,11 @@ public class ExtractableItems implements IItemHandler
 	private static Logger _log = Logger.getLogger(ItemTable.class.getName());
 	
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
 		{
-			return;
+			return false;
 		}
 		
 		final L2PcInstance activeChar = playable.getActingPlayer();
@@ -52,13 +51,13 @@ public class ExtractableItems implements IItemHandler
 		if (exitem == null)
 		{
 			_log.info("No extractable data defined for " + etcitem);
-			return;
+			return false;
 		}
 		
 		//destroy item
 		if (!activeChar.destroyItem("Extract", item.getObjectId(), 1, activeChar, true))
 		{
-			return;
+			return false;
 		}
 		
 		boolean created = false;
@@ -86,5 +85,6 @@ public class ExtractableItems implements IItemHandler
 		{
 			activeChar.sendPacket(SystemMessageId.NOTHING_INSIDE_THAT);
 		}
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java
index 5dfb9275bffdcb43e93a121b1e78fc603dc063ba..5f746f6182970ef58b993bc45f98d6b8e469d4b9 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java
@@ -28,7 +28,6 @@ import com.l2jserver.gameserver.util.Broadcast;
 
 /**
  * @author -Nemesiss-
- *
  */
 public class FishShots implements IItemHandler
 {
@@ -37,26 +36,22 @@ public class FishShots implements IItemHandler
 		2181, 2182, 2183, 2184, 2185, 2186
 	};
 	
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
 		L2Weapon weaponItem = activeChar.getActiveWeaponItem();
 		
 		if (weaponInst == null || weaponItem.getItemType() != L2WeaponType.FISHINGROD)
-			return;
+			return false;
 		
 		if (weaponInst.getChargedFishshot())
 			// spirit shot is already active
-			return;
+			return false;
 		
 		int FishshotId = item.getItemId();
 		int grade = weaponItem.getCrystalType();
@@ -67,11 +62,11 @@ public class FishShots implements IItemHandler
 		{
 			//1479 - This fishing shot is not fit for the fishing pole crystal.
 			activeChar.sendPacket(SystemMessageId.WRONG_FISHINGSHOT_GRADE);
-			return;
+			return false;
 		}
 		
 		if (count < 1)
-			return;
+			return false;
 		
 		weaponInst.setChargedFishshot(true);
 		activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), 1, null, false);
@@ -80,5 +75,6 @@ public class FishShots implements IItemHandler
 		
 		Broadcast.toSelfAndKnownPlayers(activeChar, new MagicSkillUse(activeChar, SKILL_IDS[grade], 1, 0, 0));
 		activeChar.setTarget(oldTarget);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java
index 85863f9a953f717efb123c1e33b97b3ff8c670b1..4da29f4075898adc324e5859a5779b8dc83b03f4 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java
@@ -33,18 +33,14 @@ public class Harvester implements IItemHandler
 	L2PcInstance _activeChar;
 	L2MonsterInstance _target;
 	
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance _item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance _item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		if (CastleManorManager.getInstance().isDisabled())
-			return;
+			return false;
 		
 		_activeChar = (L2PcInstance) playable;
 		
@@ -52,7 +48,7 @@ public class Harvester implements IItemHandler
 		{
 			_activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
 			_activeChar.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		_target = (L2MonsterInstance) _activeChar.getTarget();
@@ -60,11 +56,12 @@ public class Harvester implements IItemHandler
 		if (_target == null || !_target.isDead())
 		{
 			_activeChar.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		L2Skill skill = SkillTable.getInstance().getInfo(2098, 1); //harvesting skill
 		if (skill != null)
 			_activeChar.useMagic(skill, false, false);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java
index 8fb1e62912f3f3b05f3b6f407acf292d682078c0..a5c6a1a932ce086ebd834d1d8b52416bac5de1bb 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java
@@ -25,14 +25,14 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 public class ItemSkills extends ItemSkillsTemplate
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		final L2PcInstance activeChar = playable.getActingPlayer();
 		if ((activeChar != null) && activeChar.isInOlympiadMode())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
-			return;
+			return false;
 		}
-		super.useItem(playable, item, forceUse);
+		return super.useItem(playable, item, forceUse);
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
index e04f7ce61551faf2439130f78d7cf31922cd199a..b5e6493fbb67b5b608748358f780604c19a0fe28 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
@@ -18,20 +18,15 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.handler.IItemHandler;
 import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance.TimeStamp;
-import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
 import com.l2jserver.gameserver.model.entity.TvTEvent;
 import com.l2jserver.gameserver.model.holders.SkillHolder;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.items.type.L2EtcItemType;
 import com.l2jserver.gameserver.model.skills.L2Skill;
-import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
-import com.l2jserver.gameserver.network.serverpackets.ExUseSharedGroupItem;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
-import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 
 /**
  * Template for item skills handler.<br>
@@ -40,192 +35,179 @@ import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 public class ItemSkillsTemplate implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
-		L2PcInstance activeChar;
-		boolean isPet = playable instanceof L2PetInstance;
-		if (isPet)
+		final L2PcInstance activeChar = playable.getActingPlayer();
+		if (!playable.isPet() && !playable.isPlayer())
 		{
-			activeChar = ((L2PetInstance) playable).getOwner();
-		}
-		else if (playable instanceof L2PcInstance)
-		{
-			activeChar = (L2PcInstance) playable;
-		}
-		else
-		{
-			return;
+			return false;
 		}
 		
 		if (!TvTEvent.onScrollUse(playable.getObjectId()))
 		{
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
-		// pets can use items only when they are tradeable
-		if (isPet && !item.isTradeable())
+		// Pets can use items only when they are tradable.
+		if (playable.isPet() && !item.isTradeable())
 		{
 			activeChar.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS);
-			return;
+			return false;
+		}
+		
+		System.out.println("Trying to use item Id: " + item.getItemId() + "!!!!!!");
+		if (!checkReuse(activeChar, null, item))
+		{
+			System.out.println("Avoiding item usage due reuse time!");
+			return false;
 		}
 		
 		int skillId;
 		int skillLvl;
 		
 		final SkillHolder[] skills = item.getEtcItem().getSkills();
-		if (skills != null)
+		if (skills == null)
+		{
+			_log.info("Item " + item + " does not have registered any skill for handler.");
+			return false;
+		}
+		
+		for (SkillHolder skillInfo : skills)
 		{
-			for (SkillHolder skillInfo : skills)
+			if (skillInfo == null)
 			{
-				if (skillInfo == null)
+				continue;
+			}
+			
+			skillId = skillInfo.getSkillId();
+			skillLvl = skillInfo.getSkillLvl();
+			L2Skill itemSkill = skillInfo.getSkill();
+			
+			if (itemSkill != null)
+			{
+				if (!itemSkill.checkCondition(playable, playable.getTarget(), false))
 				{
-					continue;
+					return false;
 				}
 				
-				skillId = skillInfo.getSkillId();
-				skillLvl = skillInfo.getSkillLvl();
-				L2Skill itemSkill = skillInfo.getSkill();
+				if (playable.isSkillDisabled(itemSkill))
+				{
+					checkReuse(activeChar, itemSkill, item);
+					return false;
+				}
 				
-				if (itemSkill != null)
+				if (!itemSkill.isPotion() && playable.isCastingNow())
 				{
-					if (!itemSkill.checkCondition(playable, playable.getTarget(), false))
-					{
-						return;
-					}
-					
-					if (playable.isSkillDisabled(itemSkill))
-					{
-						reuse(activeChar, itemSkill, item);
-						return;
-					}
-					
-					if (!itemSkill.isPotion() && playable.isCastingNow())
-					{
-						return;
-					}
-					
-					if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0) && (itemSkill.isPotion() || itemSkill.isSimultaneousCast()))
-					{
-						if (!playable.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
-						{
-							activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
-							return;
-						}
-					}
-					
-					// send message to owner
-					if (isPet)
+					return false;
+				}
+				
+				if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0) && (itemSkill.isPotion() || itemSkill.isSimultaneousCast()))
+				{
+					if (!playable.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
 					{
-						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1);
-						sm.addString(itemSkill.getName());
-						activeChar.sendPacket(sm);
+						activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
+						return false;
 					}
-					else
+				}
+				
+				// send message to owner
+				if (playable.isPet())
+				{
+					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1);
+					sm.addString(itemSkill.getName());
+					activeChar.sendPacket(sm);
+				}
+				else
+				{
+					switch (skillId)
 					{
-						switch (skillId)
-						{
-						// short buff icon for healing potions
-							case 2031:
-							case 2032:
-							case 2037:
-							case 26025:
-							case 26026:
-								int buffId = activeChar._shortBuffTaskSkillId;
-								// greater healing potions
-								if ((skillId == 2037) || (skillId == 26025))
-								{
-									activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
-								}
-								else if (((skillId == 2032) || (skillId == 26026)) && (buffId != 2037) && (buffId != 26025))
+					// short buff icon for healing potions
+						case 2031:
+						case 2032:
+						case 2037:
+						case 26025:
+						case 26026:
+							int buffId = activeChar._shortBuffTaskSkillId;
+							// greater healing potions
+							if ((skillId == 2037) || (skillId == 26025))
+							{
+								activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
+							}
+							else if (((skillId == 2032) || (skillId == 26026)) && (buffId != 2037) && (buffId != 26025))
+							{
+								activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
+								// lesser healing potions
+							}
+							else
+							{
+								if ((buffId != 2037) && (buffId != 26025) && (buffId != 2032) && (buffId != 26026))
 								{
 									activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
-									// lesser healing potions
 								}
-								else
-								{
-									if ((buffId != 2037) && (buffId != 26025) && (buffId != 2032) && (buffId != 26026))
-									{
-										activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
-									}
-								}
-								break;
-						}
+							}
+							break;
 					}
-					
-					if (itemSkill.isPotion() || itemSkill.isSimultaneousCast())
+				}
+				
+				if (itemSkill.isPotion() || itemSkill.isSimultaneousCast())
+				{
+					playable.doSimultaneousCast(itemSkill);
+					// Summons should be affected by herbs too, self time effect is handled at L2Effect constructor
+					if (!playable.isPet() && (item.getItemType() == L2EtcItemType.HERB) && (activeChar.getPet() != null) && (activeChar.getPet() instanceof L2ServitorInstance))
 					{
-						playable.doSimultaneousCast(itemSkill);
-						// Summons should be affected by herbs too, self time effect is handled at L2Effect constructor
-						if (!isPet && (item.getItemType() == L2EtcItemType.HERB) && (activeChar.getPet() != null) && (activeChar.getPet() instanceof L2ServitorInstance))
-						{
-							activeChar.getPet().doSimultaneousCast(itemSkill);
-						}
+						activeChar.getPet().doSimultaneousCast(itemSkill);
 					}
-					else
+				}
+				else
+				{
+					playable.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
+					
+					if (!playable.useMagic(itemSkill, forceUse, false))
 					{
-						playable.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
-						
-						// TODO: Remove when reuse time for sub-class is implemented.
-						if (activeChar.isSubClassActive() && (itemSkill.getSkillType() == L2SkillType.EXTRACTABLE) && (itemSkill.getReuseDelay() > 5000))
-						{
-							activeChar.sendPacket(SystemMessageId.MAIN_CLASS_SKILL_ONLY);
-							return;
-						}
-						
-						if (!playable.useMagic(itemSkill, forceUse, false))
-						{
-							return;
-						}
-						
-						// Consume.
-						if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0))
-						{
-							if (!activeChar.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
-							{
-								activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
-								return;
-							}
-						}
+						return false;
 					}
 					
-					if (itemSkill.getReuseDelay() > 0)
+					// Consume.
+					if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0))
 					{
-						activeChar.addTimeStamp(itemSkill, itemSkill.getReuseDelay());
-						// activeChar.disableSkill(itemSkill, itemSkill.getReuseDelay());
-						if (item.isEtcItem())
+						if (!activeChar.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
 						{
-							final int group = item.getEtcItem().getSharedReuseGroup();
-							if (group >= 0)
-							{
-								activeChar.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, itemSkill.getReuseDelay(), itemSkill.getReuseDelay()));
-							}
+							activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
+							return false;
 						}
 					}
 				}
+				
+				if (itemSkill.getReuseDelay() > 0)
+				{
+					activeChar.addTimeStamp(itemSkill, itemSkill.getReuseDelay());
+				}
 			}
 		}
-		else
-		{
-			_log.info("Item " + item + " does not have registered any skill for handler.");
-		}
+		return true;
 	}
 	
-	private void reuse(L2PcInstance player, L2Skill skill, L2ItemInstance item)
+	/**
+	 * @param player
+	 * @param skill
+	 * @param item
+	 * @return
+	 */
+	private boolean checkReuse(L2PcInstance player, L2Skill skill, L2ItemInstance item)
 	{
-		SystemMessage sm = null;
-		final L2TIntObjectHashMap<TimeStamp> timeStamp = player.getReuseTimeStamp();
-		
-		if ((timeStamp != null) && timeStamp.containsKey(skill.getReuseHashCode()))
+		final SystemMessage sm;
+		final long remainingTime = (skill != null) ? player.getSkillRemainingReuseTime(skill.getReuseHashCode()) : player.getItemRemainingReuseTime(item.getObjectId());
+		final boolean isAvailable = remainingTime <= 0;
+		if (!isAvailable)
 		{
-			final long remainingTime = player.getReuseTimeStamp().get(skill.getReuseHashCode()).getRemaining();
 			final int hours = (int) (remainingTime / 3600000L);
 			final int minutes = (int) (remainingTime % 3600000L) / 60000;
 			final int seconds = (int) ((remainingTime / 1000) % 60);
 			if (hours > 0)
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HOURS_S3_MINUTES_S4_SECONDS_REMAINING_FOR_REUSE_S1);
-				if (skill.isPotion())
+				if ((skill == null) || skill.isPotion())
 				{
 					sm.addItemName(item);
 				}
@@ -239,7 +221,7 @@ public class ItemSkillsTemplate implements IItemHandler
 			else if (minutes > 0)
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MINUTES_S3_SECONDS_REMAINING_FOR_REUSE_S1);
-				if (skill.isPotion())
+				if ((skill == null) || skill.isPotion())
 				{
 					sm.addItemName(item);
 				}
@@ -252,7 +234,7 @@ public class ItemSkillsTemplate implements IItemHandler
 			else
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_SECONDS_REMAINING_FOR_REUSE_S1);
-				if (skill.isPotion())
+				if ((skill == null) || skill.isPotion())
 				{
 					sm.addItemName(item);
 				}
@@ -262,15 +244,6 @@ public class ItemSkillsTemplate implements IItemHandler
 				}
 			}
 			sm.addNumber(seconds);
-			
-			if (item.isEtcItem())
-			{
-				final int group = item.getEtcItem().getSharedReuseGroup();
-				if (group >= 0)
-				{
-					player.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, (int) remainingTime, skill.getReuseDelay()));
-				}
-			}
 		}
 		else
 		{
@@ -278,5 +251,6 @@ public class ItemSkillsTemplate implements IItemHandler
 			sm.addItemName(item);
 		}
 		player.sendPacket(sm);
+		return isAvailable;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java
index b7850ceeaf915e5f6dfe70310f574edf6a59bc67..496f9a31d03e877c4072a8c6f2451b88550f79ce 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java
@@ -21,18 +21,14 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 
 public class ManaPotion extends ItemSkills
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!Config.L2JMOD_ENABLE_MANA_POTIONS_SUPPORT)
 		{
 			playable.sendPacket(SystemMessageId.NOTHING_HAPPENED);
-			return;
+			return false;
 		}
-		super.useItem(playable, item, forceUse);
+		return super.useItem(playable, item, forceUse);
 	}
 }
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java
index 8cb79610d6b995f14a0901b3d82498edb70df035..36aac6fb0566aaff1a8ed2763128b36eaf291b2c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java
@@ -21,24 +21,17 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.serverpackets.ShowMiniMap;
 
 /**
- * This class provides handling for items that should display a map
- * when double clicked.
- * 
- * @version $Revision: 1.1.4.3 $ $Date: 2005/03/27 15:30:07 $
+ * This class provides handling for items that should display a map when double clicked.
  */
-
 public class Maps implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		playable.sendPacket(new ShowMiniMap(item.getItemId()));
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java
index 0e758600e18c2fba622ff1b1b085ff80b8eb38be..adb87b58f423276b5292d880d33c49925ccc57d3 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java
@@ -39,7 +39,7 @@ public class MercTicket implements IItemHandler
 	 * 3) Remove the item from the person's inventory
 	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		int itemId = item.getItemId();
 		L2PcInstance activeChar = (L2PcInstance) playable;
@@ -52,17 +52,17 @@ public class MercTicket implements IItemHandler
 		if (MercTicketManager.getInstance().getTicketCastleId(itemId) != castleId)
 		{
 			activeChar.sendPacket(SystemMessageId.MERCENARIES_CANNOT_BE_POSITIONED_HERE);
-			return;
+			return false;
 		}
 		else if (!activeChar.isCastleLord(castleId))
 		{
 			activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_AUTHORITY_TO_POSITION_MERCENARIES);
-			return;
+			return false;
 		}
 		else if (castle.getSiege().getIsInProgress())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-			return;
+			return false;
 		}
 		
 		//Checking Seven Signs Quest Period
@@ -70,7 +70,7 @@ public class MercTicket implements IItemHandler
 		{
 			//_log.warning("Someone has tried to spawn a guardian during Quest Event Period of The Seven Signs.");
 			activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-			return;
+			return false;
 		}
 		//Checking the Seal of Strife status
 		switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
@@ -81,7 +81,7 @@ public class MercTicket implements IItemHandler
 				{
 					//_log.warning("Someone has tried to spawn a Dawn Mercenary though the Seal of Strife is not controlled by anyone.");
 					activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-					return;
+					return false;
 				}
 				break;
 			}
@@ -91,7 +91,7 @@ public class MercTicket implements IItemHandler
 				{
 					//_log.warning("Someone has tried to spawn a non-Rookie Mercenary though the Seal of Strife is controlled by Revolutionaries of Dusk.");
 					activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-					return;
+					return false;
 				}
 				break;
 			}
@@ -104,21 +104,22 @@ public class MercTicket implements IItemHandler
 		if(MercTicketManager.getInstance().isAtCasleLimit(item.getItemId()))
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-			return;
+			return false;
 		}
 		else if (MercTicketManager.getInstance().isAtTypeLimit(item.getItemId()))
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE);
-			return;
+			return false;
 		}
 		else if (MercTicketManager.getInstance().isTooCloseToAnotherTicket(activeChar.getX(), activeChar.getY(), activeChar.getZ()))
 		{
 			activeChar.sendPacket(SystemMessageId.POSITIONING_CANNOT_BE_DONE_BECAUSE_DISTANCE_BETWEEN_MERCENARIES_TOO_SHORT);
-			return;
+			return false;
 		}
 		
 		MercTicketManager.getInstance().addTicket(item.getItemId(), activeChar, null);
 		activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); // Remove item from char's inventory
 		activeChar.sendPacket(SystemMessageId.PLACE_CURRENT_LOCATION_DIRECTION);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java
index 8748cb46ef500f0b31062eb3f5107b46fc22cbc6..477ebaca02197f3bdcd83e1a7905922b6497be32 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java
@@ -23,10 +23,11 @@ import com.l2jserver.gameserver.network.serverpackets.ExRequestChangeNicknameCol
 public class NicknameColor implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		playable.sendPacket(new ExRequestChangeNicknameColor(item.getObjectId()));
+		return true;
 	}
 }
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java
index e00509cfd0d4d66291cf51b41332a1aef9489239..f02d10a135bc05cdd1aadd732e558770f8bc851e 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java
@@ -32,16 +32,12 @@ public class PaganKeys implements IItemHandler
 {
 	public static final int INTERACTION_DISTANCE = 100;
 	
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		int itemId = item.getItemId();
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		L2Object target = activeChar.getTarget();
 		
@@ -49,7 +45,7 @@ public class PaganKeys implements IItemHandler
 		{
 			activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
 			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		L2DoorInstance door = (L2DoorInstance) target;
 		
@@ -57,17 +53,17 @@ public class PaganKeys implements IItemHandler
 		{
 			activeChar.sendMessage("Too far.");
 			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		if (activeChar.getAbnormalEffect() > 0 || activeChar.isInCombat())
 		{
 			activeChar.sendMessage("You cannot use the key now.");
 			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		if (!playable.destroyItem("Consume", item.getObjectId(), 1, null, false))
-			return;
+			return false;
 		
 		switch (itemId)
 		{
@@ -127,5 +123,6 @@ public class PaganKeys implements IItemHandler
 				}
 				break;
 		}
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java
index 25b4404b1c0ba73defa01e188d0415cde35d3d94..5486a7eaab6f7af914a07655a98ac6b208451be3 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java
@@ -34,42 +34,44 @@ import com.l2jserver.gameserver.util.Util;
 public class PetFood implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		int itemId = item.getItemId();
+		boolean used = false;
 		switch (itemId)
 		{
 			case 2515: //Food For Wolves
-				useFood(playable, 2048, item);
+				used = useFood(playable, 2048, item);
 				break;
 			case 4038: //Food For Hatchling
-				useFood(playable, 2063, item);
+				used = useFood(playable, 2063, item);
 				break;
 			case 5168: //Food for Strider
-				useFood(playable, 2101, item);
+				used = useFood(playable, 2101, item);
 				break;
 			case 5169: //Deluxe Food for Strider
-				useFood(playable, 2102, item);
+				used = useFood(playable, 2102, item);
 				break;
 			case 6316: //Food for Wyvern
-				useFood(playable, 2180, item);
+				used = useFood(playable, 2180, item);
 				break;
 			case 7582: //Baby Spice
-				useFood(playable, 2048, item);
+				used = useFood(playable, 2048, item);
 				break;
 			case 9668: //Great Wolf Food
-				useFood(playable, 2361, item);
+				used = useFood(playable, 2361, item);
 				break;
 			case 10425: //Improved Baby Pet Food
-				useFood(playable, 2361, item);
+				used = useFood(playable, 2361, item);
 				break;
 			case 14818: //Enriched Pet Food for Wolves
-				useFood(playable, 2916, item);
+				used = useFood(playable, 2916, item);
 				break;
 			default:
 				_log.warning("Pet Food Id: " + itemId + " without handler!");
 				break;
 		}
+		return used;
 	}
 	
 	public boolean useFood(L2Playable activeChar, int magicId, L2ItemInstance item)
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java
index 5d440f2582d523f728e0a9b436b92141c1c51f63..0b241fb9f7f2d81e18641a7fcbdeda5bc7c9f7d9 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java
@@ -1,5 +1,16 @@
-/**
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
  * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
  */
 package handlers.itemhandlers;
 
@@ -13,24 +24,19 @@ import com.l2jserver.gameserver.model.quest.QuestState;
 
 /**
  * @author BiggBoss
- *
  */
 public class QuestItems implements IItemHandler
 {
-
-	/* (non-Javadoc)
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.L2ItemInstance)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceuse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceuse)
 	{
 		if(!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance player = (L2PcInstance) playable;
 		
 		if(!player.destroyItem("Item Handler - QuestItems", item, player, true))
-			return;
+			return false;
 		
 		L2Item itm = item.getItem();
 		for(Quest quest : itm.getQuestEvents())
@@ -41,5 +47,6 @@ public class QuestItems implements IItemHandler
 			
 			quest.notifyItemUse(itm, player);
 		}
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java
index b081daea0484373755133894027dd407afd9dd8a..d3f7890b1c2ca390c60a7c0eff65e6c2c10ffcd4 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java
@@ -29,11 +29,11 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 public class Recipes implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
 		{
-			return;
+			return false;
 		}
 		
 		final L2PcInstance activeChar = playable.getActingPlayer();
@@ -41,19 +41,19 @@ public class Recipes implements IItemHandler
 		if (activeChar.isInCraftMode())
 		{
 			activeChar.sendPacket(SystemMessageId.CANT_ALTER_RECIPEBOOK_WHILE_CRAFTING);
-			return;
+			return false;
 		}
 		
 		final L2RecipeList rp = RecipeController.getInstance().getRecipeByItemId(item.getItemId());
 		if (rp == null)
 		{
-			return;
+			return false;
 		}
 		
 		if (activeChar.hasRecipeList(rp.getId()))
 		{
 			activeChar.sendPacket(SystemMessageId.RECIPE_ALREADY_REGISTERED);
-			return;
+			return false;
 		}
 		
 		boolean canCraft = false;
@@ -77,13 +77,13 @@ public class Recipes implements IItemHandler
 		if (!canCraft)
 		{
 			activeChar.sendPacket(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT);
-			return;
+			return false;
 		}
 		
 		if (recipeLevel)
 		{
 			activeChar.sendPacket(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER);
-			return;
+			return false;
 		}
 		
 		if (recipeLimit)
@@ -91,7 +91,7 @@ public class Recipes implements IItemHandler
 			final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.UP_TO_S1_RECIPES_CAN_REGISTER);
 			sm.addNumber(rp.isDwarvenRecipe() ? activeChar.getDwarfRecipeLimit() : activeChar.getCommonRecipeLimit());
 			activeChar.sendPacket(sm);
-			return;
+			return false;
 		}
 		
 		if (rp.isDwarvenRecipe())
@@ -107,5 +107,6 @@ public class Recipes implements IItemHandler
 		final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_ADDED);
 		sm.addItemName(item);
 		activeChar.sendPacket(sm);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java
index df8333c9ff1dab300c4a7a1026c8618bdb374375..eed240af3fbcd53c0888b7c6d2dad0d7161e5534 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java
@@ -25,23 +25,13 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.util.Broadcast;
 import com.l2jserver.util.Rnd;
 
-/**
- * This class ...
- *
- * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:07 $
- */
-
 public class RollingDice implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		int itemId = item.getItemId();
@@ -49,7 +39,7 @@ public class RollingDice implements IItemHandler
 		if (activeChar.isInOlympiadMode())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
-			return;
+			return false;
 		}
 		
 		if (itemId == 4625 || itemId == 4626 || itemId == 4627 || itemId == 4628)
@@ -58,7 +48,7 @@ public class RollingDice implements IItemHandler
 			if (number == 0)
 			{
 				activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_THROW_THE_DICE_AT_THIS_TIME_TRY_AGAIN_LATER);
-				return;
+				return false;
 			}
 			
 			Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), item.getItemId(), number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ()));
@@ -72,11 +62,12 @@ public class RollingDice implements IItemHandler
 				Broadcast.toKnownPlayers(activeChar, sm);
 			else if (activeChar.isInParty())
 				activeChar.getParty().broadcastToPartyMembers(activeChar, sm);
+			return true;
 		}
+		return false;
 	}
 	
 	/**
-	 * 
 	 * @param player
 	 * @return
 	 */
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java
index caee52a9ae7d8769fb3780a9859a9b33c9f10e6b..2754eba31c20e7db4fba42699cd937de3ff5ff6c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java
@@ -29,161 +29,174 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
-/**
- * This class ...
- *
- * @version $Revision: 1.1.2.2.2.7 $ $Date: 2005/04/05 19:41:13 $
- */
-
 public class ScrollOfResurrection implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+		{
+			return false;
+		}
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		
 		if (!TvTEvent.onScrollUse(playable.getObjectId()))
 		{
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		if (activeChar.isSitting())
 		{
 			activeChar.sendPacket(SystemMessageId.CANT_MOVE_SITTING);
-			return;
+			return false;
 		}
 		if (activeChar.isMovementDisabled())
-			return;
+		{
+			return false;
+		}
 		
 		int itemId = item.getItemId();
-		//boolean blessedScroll = (itemId != 737);
+		// boolean blessedScroll = (itemId != 737);
 		boolean petScroll = (itemId == 6387);
 		
 		// SoR Animation section
 		L2Character target = (L2Character) activeChar.getTarget();
 		
-		if (target != null && target.isDead())
+		if ((target == null) || target.isDead())
+		{
+			activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
+			return false;
+		}
+		
+		L2PcInstance targetPlayer = null;
+		
+		if (target instanceof L2PcInstance)
+		{
+			targetPlayer = (L2PcInstance) target;
+		}
+		
+		L2PetInstance targetPet = null;
+		
+		if (target instanceof L2PetInstance)
+		{
+			targetPet = (L2PetInstance) target;
+		}
+		
+		if ((targetPlayer != null) || (targetPet != null))
 		{
-			L2PcInstance targetPlayer = null;
+			boolean condGood = true;
 			
-			if (target instanceof L2PcInstance)
-				targetPlayer = (L2PcInstance) target;
+			// check target is not in a active siege zone
+			Castle castle = null;
 			
-			L2PetInstance targetPet = null;
+			if (targetPlayer != null)
+			{
+				castle = CastleManager.getInstance().getCastle(targetPlayer.getX(), targetPlayer.getY(), targetPlayer.getZ());
+			}
+			else
+			{
+				castle = CastleManager.getInstance().getCastle(targetPet.getOwner().getX(), targetPet.getOwner().getY(), targetPet.getOwner().getZ());
+			}
 			
-			if (target instanceof L2PetInstance)
-				targetPet = (L2PetInstance) target;
+			if ((castle != null) && castle.getSiege().getIsInProgress())
+			{
+				condGood = false;
+				activeChar.sendPacket(SystemMessageId.CANNOT_BE_RESURRECTED_DURING_SIEGE);
+			}
 			
-			if (targetPlayer != null || targetPet != null)
+			if (targetPet != null)
 			{
-				boolean condGood = true;
-				
-				//check target is not in a active siege zone
-				Castle castle = null;
-				
-				if (targetPlayer != null)
-					castle = CastleManager.getInstance().getCastle(targetPlayer.getX(), targetPlayer.getY(), targetPlayer.getZ());
-				else
-					castle = CastleManager.getInstance().getCastle(targetPet.getOwner().getX(), targetPet.getOwner().getY(), targetPet.getOwner().getZ());
-				
-				if (castle != null && castle.getSiege().getIsInProgress())
+				if (targetPet.getOwner() != activeChar)
 				{
-					condGood = false;
-					activeChar.sendPacket(SystemMessageId.CANNOT_BE_RESURRECTED_DURING_SIEGE);
-				}
-				
-				if (targetPet != null)
-				{
-					if (targetPet.getOwner() != activeChar)
+					if (targetPet.getOwner().isReviveRequested())
 					{
-						if (targetPet.getOwner().isReviveRequested())
+						if (targetPet.getOwner().isRevivingPet())
+						{
+							activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed.
+						}
+						else
 						{
-							if (targetPet.getOwner().isRevivingPet())
-								activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed.
-							else
-								activeChar.sendPacket(SystemMessageId.CANNOT_RES_PET2); // A pet cannot be resurrected while it's owner is in the process of resurrecting.
-							condGood = false;
+							activeChar.sendPacket(SystemMessageId.CANNOT_RES_PET2); // A pet cannot be resurrected while it's owner is in the process of resurrecting.
 						}
+						condGood = false;
 					}
 				}
-				else
+			}
+			else
+			{
+				if (targetPlayer.isFestivalParticipant()) // Check to see if the current player target is in a festival.
 				{
-					if (targetPlayer.isFestivalParticipant()) // Check to see if the current player target is in a festival.
-					{
-						condGood = false;
-						activeChar.sendMessage("You may not resurrect participants in a festival.");
-					}
-					if (targetPlayer.isReviveRequested())
+					condGood = false;
+					activeChar.sendMessage("You may not resurrect participants in a festival.");
+				}
+				if (targetPlayer.isReviveRequested())
+				{
+					if (targetPlayer.isRevivingPet())
 					{
-						if (targetPlayer.isRevivingPet())
-							activeChar.sendPacket(SystemMessageId.MASTER_CANNOT_RES); // While a pet is attempting to resurrect, it cannot help in resurrecting its master.
-						else
-							activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed.
-						condGood = false;
+						activeChar.sendPacket(SystemMessageId.MASTER_CANNOT_RES); // While a pet is attempting to resurrect, it cannot help in resurrecting its master.
 					}
-					else if (petScroll)
+					else
 					{
-						condGood = false;
-						activeChar.sendMessage("You do not have the correct scroll");
+						activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed.
 					}
+					condGood = false;
 				}
+				else if (petScroll)
+				{
+					condGood = false;
+					activeChar.sendMessage("You do not have the correct scroll");
+				}
+			}
+			
+			if (condGood)
+			{
+				if (!activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false))
+				{
+					return false;
+				}
+				
+				int skillId = 0;
+				int skillLevel = 1;
 				
-				if (condGood)
+				switch (itemId)
 				{
-					if (!activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false))
-						return;
-					
-					int skillId = 0;
-					int skillLevel = 1;
-					
-					switch (itemId)
-					{
-						case 737:
-							skillId = 2014;
-							break; // Scroll of Resurrection
-						case 3936:
-							skillId = 2049;
-							break; // Blessed Scroll of Resurrection
-						case 3959:
-							skillId = 2062;
-							break; // L2Day - Blessed Scroll of Resurrection
-						case 6387:
-							skillId = 2179;
-							break; // Blessed Scroll of Resurrection: For Pets
-						case 9157:
-							skillId = 2321;
-							break; // Blessed Scroll of Resurrection Event
-						case 10150:
-							skillId = 2393;
-							break; // Blessed Scroll of Battlefield Resurrection
-						case 13259:
-							skillId = 2596;
-							break; // Gran Kain's Blessed Scroll of Resurrection
-					}
+					case 737:
+						skillId = 2014;
+						break; // Scroll of Resurrection
+					case 3936:
+						skillId = 2049;
+						break; // Blessed Scroll of Resurrection
+					case 3959:
+						skillId = 2062;
+						break; // L2Day - Blessed Scroll of Resurrection
+					case 6387:
+						skillId = 2179;
+						break; // Blessed Scroll of Resurrection: For Pets
+					case 9157:
+						skillId = 2321;
+						break; // Blessed Scroll of Resurrection Event
+					case 10150:
+						skillId = 2393;
+						break; // Blessed Scroll of Battlefield Resurrection
+					case 13259:
+						skillId = 2596;
+						break; // Gran Kain's Blessed Scroll of Resurrection
+				}
+				
+				if (skillId != 0)
+				{
+					L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
+					activeChar.useMagic(skill, true, true);
 					
-					if (skillId != 0)
-					{
-						L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
-						activeChar.useMagic(skill, true, true);
-						
-						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
-						sm.addItemName(item);
-						activeChar.sendPacket(sm);
-					}
+					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
+					sm.addItemName(item);
+					activeChar.sendPacket(sm);
 				}
+				return true;
 			}
 		}
-		else
-		{
-			activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
-		}
+		return false;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java
index cec25eabc79a1cef969a55cb105be52391eaaae2..96a1099a23953c3d5ab5f52106535d52e57e7a43 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java
@@ -36,31 +36,27 @@ import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
  */
 public class Seed implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		if (CastleManorManager.getInstance().isDisabled())
-			return;
+			return false;
 		
 		final L2Object tgt = playable.getTarget();
 		if (!(tgt instanceof L2Npc))
 		{
 			playable.sendPacket(SystemMessageId.INCORRECT_TARGET);
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		if (!(tgt instanceof L2MonsterInstance) || tgt instanceof L2ChestInstance || ((L2Character)tgt).isRaid())
 		{
 			playable.sendPacket(SystemMessageId.THE_TARGET_IS_UNAVAILABLE_FOR_SEEDING);
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		final L2MonsterInstance target = (L2MonsterInstance)tgt;
@@ -68,32 +64,33 @@ public class Seed implements IItemHandler
 		{
 			playable.sendPacket(SystemMessageId.INCORRECT_TARGET);
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		if (target.isSeeded())
 		{
 			playable.sendPacket(ActionFailed.STATIC_PACKET);
-			return;
+			return false;
 		}
 		
 		final int seedId = item.getItemId();
-		if (areaValid(seedId, MapRegionManager.getInstance().getAreaCastle(playable)))
+		if (!areaValid(seedId, MapRegionManager.getInstance().getAreaCastle(playable)))
+		{
+			playable.sendPacket(SystemMessageId.THIS_SEED_MAY_NOT_BE_SOWN_HERE);
+			return false;
+		}
+		
+		target.setSeeded(seedId, (L2PcInstance)playable);
+		final SkillHolder[] skills = item.getEtcItem().getSkills();
+		if (skills != null)
 		{
-			target.setSeeded(seedId, (L2PcInstance)playable);
-			final SkillHolder[] skills = item.getEtcItem().getSkills();
-			if (skills != null)
-			{
-				if(skills[0] == null)
-					return;
-				
-				L2Skill itemskill = skills[0].getSkill();
-				((L2PcInstance)playable).useMagic(itemskill, false, false);
-			}
+			if(skills[0] == null)
+				return false;
 			
+			L2Skill itemskill = skills[0].getSkill();
+			((L2PcInstance)playable).useMagic(itemskill, false, false);
 		}
-		else
-			playable.sendPacket(SystemMessageId.THIS_SEED_MAY_NOT_BE_SOWN_HERE);
+		return true;
 	}
 	
 	/**
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java
index 9744a458b4b9069dab5eb4098704b69c713d5c9c..e7a94330220a654eae00c9bab90a92fae7d154b5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java
@@ -22,21 +22,17 @@ import com.l2jserver.gameserver.network.serverpackets.SSQStatus;
 
 /**
  * Item Handler for Seven Signs Record
- *
  * @author Tempy
  */
 public class SevenSignsRecord implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		playable.sendPacket(new SSQStatus(playable.getObjectId(), 1));
+		return true;
 	}
 }
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java
index 8809322d92077b353348f9d52a30c671d5df6af3..e4fad7db083e000f7069029a31a6ab528c21123f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java
@@ -28,11 +28,11 @@ import com.l2jserver.gameserver.util.Broadcast;
 public class SoulShots implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
 		{
-			return;
+			return false;
 		}
 		
 		final L2PcInstance activeChar = playable.getActingPlayer();
@@ -47,7 +47,7 @@ public class SoulShots implements IItemHandler
 			{
 				activeChar.sendPacket(SystemMessageId.CANNOT_USE_SOULSHOTS);
 			}
-			return;
+			return false;
 		}
 		
 		boolean gradeCheck = true;
@@ -100,7 +100,7 @@ public class SoulShots implements IItemHandler
 			{
 				activeChar.sendPacket(SystemMessageId.SOULSHOTS_GRADE_MISMATCH);
 			}
-			return;
+			return false;
 		}
 		
 		activeChar.soulShotLock.lock();
@@ -109,7 +109,7 @@ public class SoulShots implements IItemHandler
 			// Check if Soul shot is already active
 			if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE)
 			{
-				return;
+				return false;
 			}
 			
 			// Consume Soul shots if player has enough of them
@@ -122,7 +122,7 @@ public class SoulShots implements IItemHandler
 				{
 					activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS);
 				}
-				return;
+				return false;
 			}
 			// Charge soul shot
 			weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT);
@@ -172,5 +172,6 @@ public class SoulShots implements IItemHandler
 		// Send message to client
 		activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT);
 		Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java
index a51266429fa5635ea8e9473fc3be4dd9971765ec..ced98108a73e5339a5219f00e26c41312c0a8081 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java
@@ -21,21 +21,17 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.serverpackets.ShowXMasSeal;
 
 /**
- *
- * @author  devScarlet & mrTJO
+ * @author devScarlet & mrTJO
  */
 public class SpecialXMas implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		playable.broadcastPacket(new ShowXMasSeal(item.getItemId()));
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java
index e09261d3da8305687dfb653390f1583c4e4c01f9..6dabbdd353b45c7a47d0e523b445689a833793a0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java
@@ -24,23 +24,13 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 import com.l2jserver.gameserver.util.Broadcast;
 
-/**
- * This class ...
- *
- * @version $Revision: 1.1.2.1.2.5 $ $Date: 2005/03/27 15:30:07 $
- */
-
 public class SpiritShot implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public synchronized void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public synchronized boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance activeChar = (L2PcInstance) playable;
 		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
@@ -52,12 +42,12 @@ public class SpiritShot implements IItemHandler
 		{
 			if (!activeChar.getAutoSoulShot().contains(itemId))
 				activeChar.sendPacket(SystemMessageId.CANNOT_USE_SPIRITSHOTS);
-			return;
+			return false;
 		}
 		
 		// Check if Spirit shot is already active
 		if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE)
-			return;
+			return false;
 		
 		final int weaponGrade = weaponItem.getCrystalType();
 		
@@ -98,7 +88,7 @@ public class SpiritShot implements IItemHandler
 			if (!activeChar.getAutoSoulShot().contains(itemId))
 				activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH);
 			
-			return;
+			return false;
 		}
 		
 		// Consume Spirit shot if player has enough of them
@@ -106,7 +96,7 @@ public class SpiritShot implements IItemHandler
 		{
 			if (!activeChar.disableAutoShot(itemId))
 				activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS);
-			return;
+			return false;
 		}
 		
 		// Charge Spirit shot
@@ -153,5 +143,6 @@ public class SpiritShot implements IItemHandler
 		// Send message to client
 		activeChar.sendPacket(SystemMessageId.ENABLED_SPIRITSHOT);
 		Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
index 9c96f40b68d66c3407765fddf83d5aae323589a1..552f2fda38be00d7e38da7b0eb5e8fbc3222279e 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
@@ -49,65 +49,61 @@ import com.l2jserver.gameserver.util.Broadcast;
 
 public class SummonItems implements IItemHandler
 {
-	/**
-	 * 
-	 * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean)
-	 */
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (!(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		if (!TvTEvent.onItemSummon(playable.getObjectId()))
-			return;
+			return false;
 		
 		final L2PcInstance activeChar = (L2PcInstance) playable;
 		
 		if (!activeChar.getFloodProtectors().getItemPetSummon().tryPerformAction("summon items"))
-			return;
+			return false;
 		
 		if (activeChar.isSitting())
 		{
 			activeChar.sendPacket(SystemMessageId.CANT_MOVE_SITTING);
-			return;
+			return false;
 		}
 		
 		if(activeChar.getBlockCheckerArena() != -1)
-			return;
+			return false;
 
 		if (activeChar.inObserverMode())
-			return;
+			return false;
 		
 		if (activeChar.isInOlympiadMode())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
-			return;
+			return false;
 		}
 		if (activeChar.isAllSkillsDisabled() || activeChar.isCastingNow())
-			return;
+			return false;
 		
 		final L2SummonItem sitem = SummonItemsData.getInstance().getSummonItem(item.getItemId());
 		
 		if ((activeChar.getPet() != null || activeChar.isMounted()) && sitem.isPetSummon())
 		{
 			activeChar.sendPacket(SystemMessageId.YOU_ALREADY_HAVE_A_PET);
-			return;
+			return false;
 		}
 		
 		if (activeChar.isAttackingNow())
 		{
 			activeChar.sendPacket(SystemMessageId.YOU_CANNOT_SUMMON_IN_COMBAT);
-			return;
+			return false;
 		}
 		
 		final int npcId = sitem.getNpcId();
 		if (npcId == 0)
-			return;
+			return false;
 		
 		final L2NpcTemplate npcTemplate = NpcTable.getInstance().getTemplate(npcId);
 		if (npcTemplate == null)
-			return;
+			return false;
 		
 		activeChar.stopMove(null, false);
 		
@@ -124,7 +120,7 @@ public class SummonItems implements IItemHandler
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CANNOT_SUMMON_S1_AGAIN);
 							sm.addCharName(ch);
 							activeChar.sendPacket(sm);
-							return;
+							return false;
 						}
 					}
 					
@@ -166,6 +162,7 @@ public class SummonItems implements IItemHandler
 				activeChar.mount(sitem.getNpcId(), item.getObjectId(), false);
 				break;
 		}
+		return true;
 	}
 	
 	static class PetSummonFeedWait implements Runnable
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java
index 115d960efc734700656e6c6a5985da6fac9b3c33..63c47dedbd7346a549bc7c983832867b4ce8043f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java
@@ -23,23 +23,22 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 /**
  * Teleport Bookmark Slot Handler
- *
  * @author ShanSoft
  */
 public class TeleportBookmark implements IItemHandler
 {
 	@Override
-	public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
+	public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
 	{
 		if (playable == null || item == null || !(playable instanceof L2PcInstance))
-			return;
+			return false;
 		
 		L2PcInstance player = (L2PcInstance) playable;
 		
 		if(player.getBookMarkSlot() >= 9)
 		{
 			player.sendPacket(SystemMessageId.YOUR_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_REACHED_ITS_MAXIMUM_LIMIT);
-			return;
+			return false;
 		}
 		
 		player.destroyItem("Consume", item.getObjectId(), 1, null, false);
@@ -50,5 +49,6 @@ public class TeleportBookmark implements IItemHandler
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
 		sm.addItemName(item.getItemId());
 		player.sendPacket(sm);
+		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml
index 10b25a46f48f623dfa68267932c02040e2aca713..7ddfc4bf91a1f827e6154e0e7191e58fd1dcb53f 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml
@@ -883,6 +883,7 @@
 		<set name="material" val="steel" />
 		<set name="weight" val="20" />
 		<set name="price" val="100" />
+		<set name="handler" val="Calculator" />
 	</item>
 	<item id="4394" type="EtcItem" name="Hanellin's White Flower">
 		<set name="icon" val="icon.etc_flower_i00" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml
index 97c18f298e2fcd909f6754996131b07cabb1d450..f7e75c639b81b1418ecf74acb25e1b0e70da3a04 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml
@@ -400,6 +400,7 @@
 		<set name="is_sellable" val="false" />
 		<set name="is_depositable" val="false" />
 		<set name="is_stackable" val="true" />
+		<set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. -->
 		<set name="handler" val="ItemSkills" />
 		<set name="item_skill" val="2510-1" />
 	</item>
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml
index 3e37af94196aacf5ccaef43266182421bc1cd6fd..6fcf7bcf45eff754a9707ec88e24087f98263959 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml
@@ -381,6 +381,7 @@
 		<set name="is_dropable" val="false" />
 		<set name="is_sellable" val="false" />
 		<set name="is_premium" val="true" />
+		<set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. -->
 		<set name="handler" val="ItemSkills" />
 		<set name="item_skill" val="2606-1" />
 		<set name="time" val="43200" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml
index eb536fcb30270e26b617c9f9136ec30d9d1e06d9..54688929b0fe9ffe6c11d6192e2b699bb3a0ca63 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml
@@ -46,6 +46,7 @@
 		<set name="is_depositable" val="false" />
 		<set name="is_dropable" val="false" />
 		<set name="is_stackable" val="true" />
+		<set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. -->
 		<set name="handler" val="ItemSkills" />
 		<set name="item_skill" val="22180-1" />
 	</item>
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml
index e0c57e91b37ba7af673eb3641d8dc03462d52061..4f16ac10baf684b19f727a592025a2932f3218c9 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml
@@ -1508,8 +1508,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="600000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="HEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -1527,8 +1525,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="MANAHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -1545,8 +1541,6 @@
 		<set name="isPotion" val="true" />
 		<set name="itemConsumeCount" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2289-1" />
 		<set name="skillType" val="COMBATPOINTHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml
index ae54be903f545724eaa5f315d2affdd8ff53b41d..4e039fd6c06a0befbd25fff00b19daa4c9e84260 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml
@@ -149,7 +149,7 @@
 		</table>
 		<set name="capsuled_items_skill" val="#extractableItems" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="86400000" />
+		<!-- set name="reuseDelay" val="86400000" / -->
 		<set name="skillType" val="EXTRACTABLE" />
 		<set name="staticHitTime" val="true" />
 		<set name="staticReuse" val="true" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml
index 0366e5ba19b015aaf8adcc3d8708e9d0f1b13cbf..5a49ae208b13718c3bca8e70a0cbea579cf5aa17 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml
@@ -50,7 +50,7 @@
 		<set name="capsuled_items_skill" val="#extractableItems" />
 		<set name="itemConsumeCount" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="86400000" />
+		<!-- set name="reuseDelay" val="86400000" / -->
 		<set name="skillType" val="EXTRACTABLE" />
 		<set name="staticReuse" val="true" />
 		<set name="target" val="TARGET_SELF" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml
index 899f2d8e16d0f5930eb065874ead4f7097f17813..4f7dbbc629fda1ba9bc5bb5c01e7971f82189f0d 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml
@@ -1020,8 +1020,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="HEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -1039,8 +1037,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="MANAHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -1058,8 +1054,6 @@
 		<set name="isPotion" val="true" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2289-1" />
 		<set name="skillType" val="COMBATPOINTHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
index 00d65aec7d17c0ec447ed0cfd582910a592812b3..e7cc2ee7e9205fe14e15e0e16b3099c4e4da7d1b 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
@@ -583,8 +583,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2289-1" />
 		<set name="skillType" val="COMBATPOINTHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -602,8 +600,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="300000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="HEAL_PERCENT" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml
index 63b44e2ba0ce53adc91efed49a688c870edda245..ea882d1d20c8217029ca21fec04badc4611a5e82 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml
@@ -1011,8 +1011,9 @@
 			10633,1,35;10642,1,25;10634,1,20;10643,1,10;10635,1,4;10644,1,3;10636,1,1.2;10645,1,0.8;10637,1,0.6;10646,1,0.4
 		</table>
 		<set name="capsuled_items_skill" val="#extractableItems" />
+		<set name="itemConsumeCount" val="1" />
 		<set name="operateType" val="A1" /><!-- TODO: Confirm. -->
-		<set name="reuseDelay" val="86400000" />
+		<!-- set name="reuseDelay" val="86400000" / -->
 		<set name="skillType" val="EXTRACTABLE" />
 		<set name="staticHitTime" val="true" />
 		<set name="staticReuse" val="true" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
index b3e6b1481d111d211effe536c7db2162597d18b9..17b88dd3e1efa75ecd48eb24722306d58fe19903 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
@@ -250,8 +250,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="600000" />
-		<set name="sharedReuse" val="2289-1" />
 		<set name="skillType" val="COMBATPOINTHEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
@@ -271,8 +269,6 @@
 		<set name="itemConsumeCount" val="1" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="A1" />
-		<set name="reuseDelay" val="600000" />
-		<set name="sharedReuse" val="2287-1" />
 		<set name="skillType" val="HEAL" />
 		<set name="target" val="TARGET_SELF" />
 		<cond msgId="113" addName="1">
diff --git a/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql b/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql
new file mode 100644
index 0000000000000000000000000000000000000000..3a95c1a1736c9ba66cef33fac76fdfc75ea34ce6
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql
@@ -0,0 +1,8 @@
+CREATE TABLE IF NOT EXISTS `character_item_reuse_save` (
+  `charId` INT NOT NULL default 0,
+  `itemId` INT NOT NULL default 0,
+  `itemObjId` INT(3) NOT NULL default 1,
+  `reuseDelay` INT(8) NOT NULL DEFAULT 0,
+  `systime` BIGINT UNSIGNED NOT NULL DEFAULT 0,
+  PRIMARY KEY (`charId`,`itemId`,`itemObjId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
\ No newline at end of file