Selaa lähdekoodia

Fix for Healing Pot Icon disappear. Should fix #2093

nBd 17 vuotta sitten
vanhempi
sitoutus
d044773469

+ 1 - 20
L2_GameServer_T1/java/net/sf/l2j/gameserver/handler/itemhandlers/Potions.java

@@ -29,7 +29,6 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
 import net.sf.l2j.gameserver.model.entity.TvTEvent;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.serverpackets.ActionFailed;
-import net.sf.l2j.gameserver.serverpackets.ShortBuffStatusUpdate;
 import net.sf.l2j.gameserver.serverpackets.SystemMessage;
 
 /**
@@ -459,8 +458,7 @@ public class Potions implements IItemHandler
 				//only for Heal potions
 				if (magicId == 2031 ||magicId == 2032 ||magicId == 2037)
 				{
-					activeChar.sendPacket(new ShortBuffStatusUpdate(magicId, level, 15)); 
-					ThreadPoolManager.getInstance().scheduleGeneral(new ShortBuffTask(activeChar), 15000);
+					activeChar.shortBuffStatusUpdate(magicId, level, 15);
 				}
 				
 				if (!(activeChar.isSitting() && !skill.isPotion()))
@@ -474,21 +472,4 @@ public class Potions implements IItemHandler
 	{
 		return ITEM_IDS;
 	}
-
-	class ShortBuffTask implements Runnable
-	{
-		private L2PcInstance player = null;
-
-        public ShortBuffTask(L2PcInstance activeChar)
-        {
-	        player = activeChar;
-        }
-
-		public void run()
-		{
-			if (player == null)
-				return;
-			player.sendPacket(new ShortBuffStatusUpdate(0, 0, 0));
-		}
-	}
 }

+ 40 - 0
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -176,6 +176,7 @@ import net.sf.l2j.gameserver.serverpackets.RecipeShopSellList;
 import net.sf.l2j.gameserver.serverpackets.RelationChanged;
 import net.sf.l2j.gameserver.serverpackets.Ride;
 import net.sf.l2j.gameserver.serverpackets.SetupGauge;
+import net.sf.l2j.gameserver.serverpackets.ShortBuffStatusUpdate;
 import net.sf.l2j.gameserver.serverpackets.ShortCutInit;
 import net.sf.l2j.gameserver.serverpackets.SkillList;
 import net.sf.l2j.gameserver.serverpackets.Snoop;
@@ -705,6 +706,27 @@ public final class L2PcInstance extends L2PlayableInstance
 		}
 	}
 
+	/** ShortBuff clearing Task */
+	private ScheduledFuture<?> _shortBuffTask = null;
+
+	private class ShortBuffTask implements Runnable
+	{
+		private L2PcInstance _player = null;
+
+        public ShortBuffTask(L2PcInstance activeChar)
+        {
+	        _player = activeChar;
+        }
+
+		public void run()
+		{
+			if (_player == null)
+				return;
+			
+			_player.sendPacket(new ShortBuffStatusUpdate(0, 0, 0));
+		}
+	}
+
 	// L2JMOD Wedding
 	private boolean _married = false;
 	private int _partnerId = 0;
@@ -10669,6 +10691,24 @@ public final class L2PcInstance extends L2PlayableInstance
             _player.clearSouls();
         }
     }
+    
+    /**
+     *
+     * @param magicId
+     * @param level
+     * @param time
+     */
+    public void shortBuffStatusUpdate(int magicId, int level, int time)
+	{
+		if (_shortBuffTask != null)
+		{
+			_shortBuffTask.cancel(false);
+			_shortBuffTask = null;
+		}
+		_shortBuffTask = ThreadPoolManager.getInstance().scheduleGeneral(new ShortBuffTask(this), 15000);
+		
+		sendPacket(new ShortBuffStatusUpdate(magicId, level, time));
+	}
 
     public int getDeathPenaltyBuffLevel()
     {