From de617c6d7e1a0cd755bfb1c86f9c75ca46dc807e Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Thu, 19 Jan 2012 15:17:51 +0000
Subject: [PATCH] BETA: Minor fix for [8613], let's restrict all items with
 Extractable Skills, not only the ones that consume an item, thanks UnAfraid
 and baluu for report.

---
 .../handlers/itemhandlers/ItemSkills.java     |  9 +-
 .../itemhandlers/ItemSkillsTemplate.java      | 97 ++++++++++++-------
 2 files changed, 66 insertions(+), 40 deletions(-)

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 b3eacfa33a..b779804295 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
@@ -20,24 +20,19 @@ import com.l2jserver.gameserver.model.item.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
 
 /**
- * Item skills not allowed on olympiad
+ * Item skills not allowed on Olympiad.
  */
 public class ItemSkills extends ItemSkillsTemplate
 {
-	/**
-	 * 
-	 * @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)
 	{
 		final L2PcInstance activeChar = playable.getActingPlayer();
-		if (activeChar != null && activeChar.isInOlympiadMode())
+		if ((activeChar != null) && activeChar.isInOlympiadMode())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
 			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 d691ccc911..d55ef08a2f 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
@@ -34,26 +34,28 @@ import com.l2jserver.gameserver.templates.skills.L2SkillType;
 import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 
 /**
- * Template for item skills handler
- * Only minimum of checks
+ * Template for item skills handler.<br>
+ * Only minimum of checks.
  */
 public class ItemSkillsTemplate implements IItemHandler
 {
-	/**
-	 * 
-	 * @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)
 	{
 		L2PcInstance activeChar;
 		boolean isPet = playable instanceof L2PetInstance;
 		if (isPet)
+		{
 			activeChar = ((L2PetInstance) playable).getOwner();
+		}
 		else if (playable instanceof L2PcInstance)
+		{
 			activeChar = (L2PcInstance) playable;
+		}
 		else
+		{
 			return;
+		}
 		
 		if (!TvTEvent.onScrollUse(playable.getObjectId()))
 		{
@@ -76,8 +78,10 @@ public class ItemSkillsTemplate implements IItemHandler
 		{
 			for (SkillHolder skillInfo : skills)
 			{
-				if(skillInfo == null)
+				if (skillInfo == null)
+				{
 					continue;
+				}
 				
 				skillId = skillInfo.getSkillId();
 				skillLvl = skillInfo.getSkillLvl();
@@ -86,12 +90,14 @@ public class ItemSkillsTemplate implements IItemHandler
 				if (itemSkill != null)
 				{
 					if (!itemSkill.checkCondition(playable, playable.getTarget(), false))
+					{
 						return;
+					}
 					
 					if (playable.isSkillDisabled(itemSkill))
 					{
-						reuse(activeChar,itemSkill, item);
-						return ;
+						reuse(activeChar, itemSkill, item);
+						return;
 					}
 					
 					if (!itemSkill.isPotion() && playable.isCastingNow())
@@ -99,7 +105,7 @@ public class ItemSkillsTemplate implements IItemHandler
 						return;
 					}
 					
-					if (itemSkill.getItemConsumeId() == 0 && itemSkill.getItemConsume() > 0 && (itemSkill.isPotion() || itemSkill.isSimultaneousCast()))
+					if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0) && (itemSkill.isPotion() || itemSkill.isSimultaneousCast()))
 					{
 						if (!playable.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
 						{
@@ -119,7 +125,7 @@ public class ItemSkillsTemplate implements IItemHandler
 					{
 						switch (skillId)
 						{
-							// short buff icon for healing potions
+						// short buff icon for healing potions
 							case 2031:
 							case 2032:
 							case 2037:
@@ -127,16 +133,21 @@ public class ItemSkillsTemplate implements IItemHandler
 							case 26026:
 								int buffId = activeChar._shortBuffTaskSkillId;
 								// greater healing potions
-								if (skillId == 2037 || skillId == 26025)
-									activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration()/1000);
-								// healing potions
-								else if ((skillId == 2032 || skillId == 26026) && buffId !=2037 && buffId != 26025)
-									activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration()/1000);
-								// lesser 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);
+									if ((buffId != 2037) && (buffId != 26025) && (buffId != 2032) && (buffId != 26026))
+									{
+										activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000);
+									}
 								}
 								break;
 						}
@@ -146,27 +157,29 @@ public class ItemSkillsTemplate implements IItemHandler
 					{
 						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 L2SummonInstance)
+						if (!isPet && (item.getItemType() == L2EtcItemType.HERB) && (activeChar.getPet() != null) && (activeChar.getPet() instanceof L2SummonInstance))
+						{
 							activeChar.getPet().doSimultaneousCast(itemSkill);
+						}
 					}
 					else
 					{
 						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) && (itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0))
+						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 ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0))
 						{
 							if (!activeChar.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false))
 							{
@@ -179,39 +192,47 @@ public class ItemSkillsTemplate implements IItemHandler
 					if (itemSkill.getReuseDelay() > 0)
 					{
 						activeChar.addTimeStamp(itemSkill, itemSkill.getReuseDelay());
-						//activeChar.disableSkill(itemSkill, itemSkill.getReuseDelay());
+						// activeChar.disableSkill(itemSkill, itemSkill.getReuseDelay());
 						if (item.isEtcItem())
 						{
 							final int group = item.getEtcItem().getSharedReuseGroup();
 							if (group >= 0)
+							{
 								activeChar.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, itemSkill.getReuseDelay(), itemSkill.getReuseDelay()));
+							}
 						}
 					}
 				}
 			}
 		}
 		else
-			_log.info("Item "+ item + " does not have registered any skill for handler.");
+		{
+			_log.info("Item " + item + " does not have registered any skill for handler.");
+		}
 	}
 	
-	private void reuse(L2PcInstance player,L2Skill skill, L2ItemInstance item)
+	private void reuse(L2PcInstance player, L2Skill skill, L2ItemInstance item)
 	{
 		SystemMessage sm = null;
 		final L2TIntObjectHashMap<TimeStamp> timeStamp = player.getReuseTimeStamp();
 		
-		if (timeStamp != null && timeStamp.containsKey(skill.getReuseHashCode()))
+		if ((timeStamp != null) && timeStamp.containsKey(skill.getReuseHashCode()))
 		{
 			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);
+			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())
+				{
 					sm.addItemName(item);
+				}
 				else
+				{
 					sm.addSkillName(skill);
+				}
 				sm.addNumber(hours);
 				sm.addNumber(minutes);
 			}
@@ -219,18 +240,26 @@ public class ItemSkillsTemplate implements IItemHandler
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MINUTES_S3_SECONDS_REMAINING_FOR_REUSE_S1);
 				if (skill.isPotion())
+				{
 					sm.addItemName(item);
+				}
 				else
+				{
 					sm.addSkillName(skill);
+				}
 				sm.addNumber(minutes);
 			}
 			else
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_SECONDS_REMAINING_FOR_REUSE_S1);
 				if (skill.isPotion())
+				{
 					sm.addItemName(item);
+				}
 				else
+				{
 					sm.addSkillName(skill);
+				}
 			}
 			sm.addNumber(seconds);
 			
@@ -238,7 +267,9 @@ public class ItemSkillsTemplate implements IItemHandler
 			{
 				final int group = item.getEtcItem().getSharedReuseGroup();
 				if (group >= 0)
-					player.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, (int)remainingTime, skill.getReuseDelay()));
+				{
+					player.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, (int) remainingTime, skill.getReuseDelay()));
+				}
 			}
 		}
 		else
@@ -248,4 +279,4 @@ public class ItemSkillsTemplate implements IItemHandler
 		}
 		player.sendPacket(sm);
 	}
-}
\ No newline at end of file
+}
-- 
GitLab