Bladeren bron

BETA: Fixing Herb System:
* Skill should be casted simultaneously.
* Closed #6377

Reported by: netvirus, valdaron, DareStrike, s3irios, _Blade_, Ghurdyl, Twist, decarvk, pandragon, Luna
Tested by: lion

Zoey76 11 jaren geleden
bovenliggende
commit
e47cd6d8d2

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IItemHandler.java

@@ -28,7 +28,7 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
  */
 public interface IItemHandler
 {
-	public static Logger _log = Logger.getLogger(IItemHandler.class.getName());
+	public static final Logger _log = Logger.getLogger(IItemHandler.class.getName());
 	
 	/**
 	 * Launch task associated to the item.

+ 6 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -51,7 +51,6 @@ import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
 
 /**
  * Base class for all interactive objects.
- * @author unknown
  */
 public abstract class L2Object implements IIdentifiable, INamable, ISpawnable, IUniqueId, IDecayable, IPositionable
 {
@@ -76,9 +75,9 @@ public abstract class L2Object implements IIdentifiable, INamable, ISpawnable, I
 		initKnownList();
 	}
 	
-	protected final void setInstanceType(InstanceType i)
+	protected final void setInstanceType(InstanceType instanceType)
 	{
-		_instanceType = i;
+		_instanceType = instanceType;
 	}
 	
 	public final InstanceType getInstanceType()
@@ -86,14 +85,14 @@ public abstract class L2Object implements IIdentifiable, INamable, ISpawnable, I
 		return _instanceType;
 	}
 	
-	public final boolean isInstanceType(InstanceType i)
+	public final boolean isInstanceType(InstanceType instanceType)
 	{
-		return _instanceType.isType(i);
+		return _instanceType.isType(instanceType);
 	}
 	
-	public final boolean isInstanceTypes(InstanceType... i)
+	public final boolean isInstanceTypes(InstanceType... instanceType)
 	{
-		return _instanceType.isTypes(i);
+		return _instanceType.isTypes(instanceType);
 	}
 	
 	public final void onAction(L2PcInstance player)

+ 4 - 21
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -167,7 +167,6 @@ import com.l2jserver.gameserver.model.actor.status.PcStatus;
 import com.l2jserver.gameserver.model.actor.tasks.player.DismountTask;
 import com.l2jserver.gameserver.model.actor.tasks.player.FameTask;
 import com.l2jserver.gameserver.model.actor.tasks.player.GameGuardCheckTask;
-import com.l2jserver.gameserver.model.actor.tasks.player.HerbTask;
 import com.l2jserver.gameserver.model.actor.tasks.player.InventoryEnableTask;
 import com.l2jserver.gameserver.model.actor.tasks.player.LookingForFishTask;
 import com.l2jserver.gameserver.model.actor.tasks.player.PetFeedTask;
@@ -897,9 +896,6 @@ public final class L2PcInstance extends L2Playable
 	// Character UI
 	private UIKeysSettings _uiKeySettings;
 	
-	/** Herbs Task Time **/
-	private int _herbstask = 0;
-	
 	// L2JMOD Wedding
 	private boolean _married = false;
 	private int _partnerId = 0;
@@ -3607,27 +3603,14 @@ public final class L2PcInstance extends L2Playable
 			// Auto-use herbs.
 			if (item.getItemType() == L2EtcItemType.HERB)
 			{
-				if (!isCastingNow())
+				final IItemHandler handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
+				if (handler == null)
 				{
-					L2ItemInstance herb = new L2ItemInstance(IdFactory.getInstance().getNextId(), itemId);
-					IItemHandler handler = ItemHandler.getInstance().getHandler(herb.getEtcItem());
-					if (handler == null)
-					{
-						_log.warning("No item handler registered for Herb - item ID " + herb.getId() + ".");
-					}
-					else
-					{
-						handler.useItem(this, herb, false);
-						if (_herbstask >= 100)
-						{
-							_herbstask -= 100;
-						}
-					}
+					_log.warning("No item handler registered for Herb ID " + item.getId() + "!");
 				}
 				else
 				{
-					_herbstask += 100;
-					ThreadPoolManager.getInstance().scheduleAi(new HerbTask(this, process, itemId, count, reference, sendMessage), _herbstask);
+					handler.useItem(this, new L2ItemInstance(itemId), false);
 				}
 			}
 			else

+ 0 - 55
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/tasks/player/HerbTask.java

@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2004-2013 L2J Server
- * 
- * This file is part of L2J Server.
- * 
- * L2J Server 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.
- * 
- * L2J Server is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package com.l2jserver.gameserver.model.actor.tasks.player;
-
-import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Task dedicated to apply herbs on player.
- * @author UnAfraid
- */
-public class HerbTask implements Runnable
-{
-	private final L2PcInstance _player;
-	private final String _process;
-	private final int _itemId;
-	private final long _count;
-	private final L2Object _reference;
-	private final boolean _sendMessage;
-	
-	public HerbTask(L2PcInstance player, String process, int itemId, long count, L2Object reference, boolean sendMessage)
-	{
-		_player = player;
-		_process = process;
-		_itemId = itemId;
-		_count = count;
-		_reference = reference;
-		_sendMessage = sendMessage;
-	}
-	
-	@Override
-	public void run()
-	{
-		if (_player != null)
-		{
-			_player.addItem(_process, _itemId, _count, _reference, _sendMessage);
-		}
-	}
-}

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

@@ -46,6 +46,7 @@ import com.l2jserver.gameserver.datatables.OptionsData;
 import com.l2jserver.gameserver.enums.InstanceType;
 import com.l2jserver.gameserver.enums.ItemLocation;
 import com.l2jserver.gameserver.enums.ShotType;
+import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
 import com.l2jserver.gameserver.instancemanager.MercTicketManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
@@ -227,6 +228,16 @@ public final class L2ItemInstance extends L2Object
 		scheduleLifeTimeTask();
 	}
 	
+	/**
+	 * Constructor overload.<br>
+	 * Sets the next free object ID in the ID factory.
+	 * @param itemId the item template ID
+	 */
+	public L2ItemInstance(int itemId)
+	{
+		this(IdFactory.getInstance().getNextId(), itemId);
+	}
+	
 	@Override
 	public void initKnownList()
 	{