ソースを参照

BETA: Targethandlers fixes:

	- Removed useless target type
	- Added support to affect limit for area skills
	- Replacing !FastList with !ArrayList
	
		Reviewed by: !UnAfraid, Zoey76
		
	- Fixed Chain Heal issue with clan/ally targets
	
		Reported by: oscard
		Reviewed by: !UnAfraid
Adry_85 12 年 前
コミット
4b19981bc2
27 ファイル変更81 行追加435 行削除
  1. 0 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
  2. 0 152
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Ally.java
  3. 5 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Area.java
  4. 3 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaCorpseMob.java
  5. 8 19
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaFriendly.java
  6. 5 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaSummon.java
  7. 2 8
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Aura.java
  8. 4 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AuraCorpseMob.java
  9. 5 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/BehindArea.java
  10. 5 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/BehindAura.java
  11. 5 10
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Clan.java
  12. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/ClanMember.java
  13. 0 154
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseAlly.java
  14. 7 7
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java
  15. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseMob.java
  16. 0 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpsePet.java
  17. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpsePlayer.java
  18. 5 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/FrontArea.java
  19. 5 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/FrontAura.java
  20. 0 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/OwnerPet.java
  21. 8 8
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Party.java
  22. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/PartyClan.java
  23. 2 8
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/PartyNotMe.java
  24. 0 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Pet.java
  25. 0 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Summon.java
  26. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Unlockable.java
  27. 0 1
      L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml

+ 0 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java

@@ -244,7 +244,6 @@ import handlers.skillhandlers.TakeFort;
 import handlers.skillhandlers.TransformDispel;
 import handlers.skillhandlers.Trap;
 import handlers.skillhandlers.Unlock;
-import handlers.targethandlers.Ally;
 import handlers.targethandlers.Area;
 import handlers.targethandlers.AreaCorpseMob;
 import handlers.targethandlers.AreaFriendly;
@@ -255,7 +254,6 @@ import handlers.targethandlers.BehindArea;
 import handlers.targethandlers.BehindAura;
 import handlers.targethandlers.Clan;
 import handlers.targethandlers.ClanMember;
-import handlers.targethandlers.CorpseAlly;
 import handlers.targethandlers.CorpseClan;
 import handlers.targethandlers.CorpseMob;
 import handlers.targethandlers.CorpsePet;
@@ -598,7 +596,6 @@ public class MasterHandler
 		},
 		{
 			// Target Handlers
-			Ally.class,
 			Area.class,
 			AreaCorpseMob.class,
 			AreaFriendly.class,
@@ -609,7 +606,6 @@ public class MasterHandler
 			BehindAura.class,
 			Clan.class,
 			ClanMember.class,
-			CorpseAlly.class,
 			CorpseClan.class,
 			CorpseMob.class,
 			CorpsePet.class,

+ 0 - 152
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Ally.java

@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2004-2013 L2J DataPack
- * 
- * This file is part of L2J DataPack.
- * 
- * L2J DataPack 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 DataPack 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.targethandlers;
-
-import java.util.Collection;
-import java.util.List;
-
-import javolution.util.FastList;
-
-import com.l2jserver.gameserver.handler.ITargetTypeHandler;
-import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.entity.TvTEvent;
-import com.l2jserver.gameserver.model.skills.L2Skill;
-import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
-
-/**
- * @author UnAfraid
- */
-public class Ally implements ITargetTypeHandler
-{
-	@Override
-	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
-	{
-		List<L2Character> targetList = new FastList<>();
-		if (activeChar.isPlayable())
-		{
-			final L2PcInstance player = activeChar.getActingPlayer();
-			
-			if (player == null)
-			{
-				return _emptyTargetList;
-			}
-			
-			if (player.isInOlympiadMode())
-			{
-				return new L2Character[]
-				{
-					player
-				};
-			}
-			
-			if (onlyFirst)
-			{
-				return new L2Character[]
-				{
-					player
-				};
-			}
-			
-			targetList.add(player);
-			
-			final int radius = skill.getAffectRange();
-			
-			if (L2Skill.addSummon(activeChar, player, radius, false))
-			{
-				targetList.add(player.getSummon());
-			}
-			
-			if (player.getClan() != null)
-			{
-				// Get all visible objects in a spherical area near the L2Character
-				final Collection<L2PcInstance> objs = activeChar.getKnownList().getKnownPlayersInRadius(radius);
-				for (L2PcInstance obj : objs)
-				{
-					if (obj == null)
-					{
-						continue;
-					}
-					if (((obj.getAllyId() == 0) || (obj.getAllyId() != player.getAllyId())) && ((obj.getClan() == null) || (obj.getClanId() != player.getClanId())))
-					{
-						continue;
-					}
-					
-					if (player.isInDuel())
-					{
-						if (player.getDuelId() != obj.getDuelId())
-						{
-							continue;
-						}
-						if (player.isInParty() && obj.isInParty() && (player.getParty().getLeaderObjectId() != obj.getParty().getLeaderObjectId()))
-						{
-							continue;
-						}
-					}
-					
-					// Don't add this target if this is a Pc->Pc pvp
-					// casting and pvp condition not met
-					if (!player.checkPvpSkill(obj, skill))
-					{
-						continue;
-					}
-					
-					if (!TvTEvent.checkForTvTSkill(player, obj, skill))
-					{
-						continue;
-					}
-					
-					if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, false))
-					{
-						targetList.add(obj.getSummon());
-					}
-					
-					if (!L2Skill.addCharacter(activeChar, obj, radius, false))
-					{
-						continue;
-					}
-					
-					if (onlyFirst)
-					{
-						return new L2Character[]
-						{
-							obj
-						};
-					}
-					
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-					{
-						break;
-					}
-					
-					targetList.add(obj);
-				}
-			}
-		}
-		
-		return targetList.toArray(new L2Character[targetList.size()]);
-	}
-	
-	@Override
-	public Enum<L2TargetType> getTargetType()
-	{
-		return L2TargetType.ALLY;
-	}
-}

+ 5 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Area.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -40,7 +39,7 @@ public class Area implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if ((target == null) || (((target == activeChar) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isL2Attackable() || target.isPlayable())))
 		{
 			activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
@@ -49,7 +48,6 @@ public class Area implements ITargetTypeHandler
 		
 		final L2Character origin;
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
-		final int radius = skill.getAffectRange();
 		
 		if (skill.getCastRange() >= 0)
 		{
@@ -74,6 +72,7 @@ public class Area implements ITargetTypeHandler
 			origin = activeChar;
 		}
 		
+		int maxTargets = skill.getAffectLimit();
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharacters();
 		for (L2Character obj : objs)
 		{
@@ -87,14 +86,14 @@ public class Area implements ITargetTypeHandler
 				continue;
 			}
 			
-			if (Util.checkIfInRange(radius, origin, obj, true))
+			if (Util.checkIfInRange(skill.getAffectRange(), origin, obj, true))
 			{
 				if (!L2Skill.checkForAreaOffensiveSkills(activeChar, obj, skill, srcInArena))
 				{
 					continue;
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}

+ 3 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaCorpseMob.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -40,7 +39,7 @@ public class AreaCorpseMob implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (!target.isL2Attackable() || !target.isDead())
 		{
 			activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
@@ -59,11 +58,10 @@ public class AreaCorpseMob implements ITargetTypeHandler
 		
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
 		
-		final int radius = skill.getAffectRange();
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharacters();
 		for (L2Character obj : objs)
 		{
-			if (!(obj.isL2Attackable() || obj.isPlayable()) || !Util.checkIfInRange(radius, target, obj, true))
+			if (!(obj.isL2Attackable() || obj.isPlayable()) || !Util.checkIfInRange(skill.getAffectRange(), target, obj, true))
 			{
 				continue;
 			}

+ 8 - 19
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaFriendly.java

@@ -33,7 +33,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
 import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.util.Rnd;
 
 /**
  * @author Adry_85
@@ -72,10 +71,7 @@ public class AreaFriendly implements ITargetTypeHandler
 		
 		if (target != null)
 		{
-			int[] affectLimit = skill.getAffectLimit();
-			// calculate maximum affect limit between min and max values
-			int randomMax = Rnd.get(affectLimit[0], affectLimit[1]);
-			int curTargets = 0;
+			int maxTargets = skill.getAffectLimit();
 			final Collection<L2Character> objs = target.getKnownList().getKnownCharactersInRadius(skill.getAffectRange());
 			
 			// TODO: Chain Heal - The recovery amount decreases starting from the most injured person.
@@ -88,13 +84,12 @@ public class AreaFriendly implements ITargetTypeHandler
 					continue;
 				}
 				
-				targetList.add(obj);
-				
-				curTargets++;
-				if (curTargets >= randomMax)
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}
+				
+				targetList.add(obj);
 			}
 		}
 		
@@ -122,20 +117,14 @@ public class AreaFriendly implements ITargetTypeHandler
 			return false;
 		}
 		
-		if ((activeChar.getActingPlayer().getClan() != null) && (target.getActingPlayer().getClan() != null))
+		if ((target.isPlayer() && (target.getClanId() != 0)) && (activeChar.getClanId() != target.getClanId()))
 		{
-			if (activeChar.getActingPlayer().getClanId() != target.getActingPlayer().getClanId())
-			{
-				return false;
-			}
+			return false;
 		}
 		
-		if ((activeChar.getActingPlayer().getAllyId() != 0) && (target.getActingPlayer().getAllyId() != 0))
+		if ((target.isPlayer() && (target.getAllyId() != 0)) && (activeChar.getAllyId() != target.getAllyId()))
 		{
-			if (activeChar.getActingPlayer().getAllyId() != target.getActingPlayer().getAllyId())
-			{
-				return false;
-			}
+			return false;
 		}
 		
 		if ((target != activeChar) && (target.getActingPlayer() != null) && (target.getActingPlayer().getPvpFlag() > 0))

+ 5 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AreaSummon.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -39,7 +38,7 @@ public class AreaSummon implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		target = activeChar.getSummon();
 		if ((target == null) || !target.isServitor() || target.isDead())
 		{
@@ -56,7 +55,7 @@ public class AreaSummon implements ITargetTypeHandler
 		
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
 		final Collection<L2Character> objs = target.getKnownList().getKnownCharacters();
-		final int radius = skill.getAffectRange();
+		int maxTargets = skill.getAffectLimit();
 		
 		for (L2Character obj : objs)
 		{
@@ -65,7 +64,7 @@ public class AreaSummon implements ITargetTypeHandler
 				continue;
 			}
 			
-			if (!Util.checkIfInRange(radius, target, obj, true))
+			if (!Util.checkIfInRange(skill.getAffectRange(), target, obj, true))
 			{
 				continue;
 			}
@@ -80,7 +79,7 @@ public class AreaSummon implements ITargetTypeHandler
 				continue;
 			}
 			
-			if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+			if (targetList.size() >= maxTargets)
 			{
 				break;
 			}

+ 2 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Aura.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -38,10 +37,9 @@ public class Aura implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange());
-		
 		for (L2Character obj : objs)
 		{
 			if (obj.isL2Attackable() || obj.isPlayable())
@@ -59,10 +57,6 @@ public class Aura implements ITargetTypeHandler
 					};
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-				{
-					break;
-				}
 				targetList.add(obj);
 			}
 		}

+ 4 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/AuraCorpseMob.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -37,9 +36,10 @@ public class AuraCorpseMob implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		// Go through the L2Character _knownList
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange());
+		int maxTargets = skill.getAffectLimit();
 		for (L2Character obj : objs)
 		{
 			if (obj.isL2Attackable() && obj.isDead())
@@ -52,7 +52,7 @@ public class AuraCorpseMob implements ITargetTypeHandler
 					};
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}

+ 5 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/BehindArea.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -40,7 +39,7 @@ public class BehindArea implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if ((target == null) || (((target == activeChar) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isL2Attackable() || target.isPlayable())))
 		{
 			activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
@@ -49,7 +48,6 @@ public class BehindArea implements ITargetTypeHandler
 		
 		final L2Character origin;
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
-		final int radius = skill.getAffectRange();
 		
 		if (skill.getCastRange() >= 0)
 		{
@@ -75,6 +73,7 @@ public class BehindArea implements ITargetTypeHandler
 		}
 		
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharacters();
+		int maxTargets = skill.getAffectLimit();
 		for (L2Character obj : objs)
 		{
 			if (!(obj.isL2Attackable() || obj.isPlayable()))
@@ -87,7 +86,7 @@ public class BehindArea implements ITargetTypeHandler
 				continue;
 			}
 			
-			if (Util.checkIfInRange(radius, origin, obj, true))
+			if (Util.checkIfInRange(skill.getAffectRange(), origin, obj, true))
 			{
 				if (!obj.isBehind(activeChar))
 				{
@@ -99,7 +98,7 @@ public class BehindArea implements ITargetTypeHandler
 					continue;
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}

+ 5 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/BehindAura.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -38,10 +37,10 @@ public class BehindAura implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange());
-		
+		int maxTargets = skill.getAffectLimit();
 		for (L2Character obj : objs)
 		{
 			if (obj.isL2Attackable() || obj.isPlayable())
@@ -65,10 +64,11 @@ public class BehindAura implements ITargetTypeHandler
 					};
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}
+				
 				targetList.add(obj);
 			}
 		}

+ 5 - 10
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Clan.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2ClanMember;
@@ -43,7 +42,8 @@ public class Clan implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
+		
 		if (activeChar.isPlayable())
 		{
 			final L2PcInstance player = activeChar.getActingPlayer();
@@ -132,11 +132,6 @@ public class Clan implements ITargetTypeHandler
 						};
 					}
 					
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-					{
-						break;
-					}
-					
 					targetList.add(obj);
 				}
 			}
@@ -156,7 +151,7 @@ public class Clan implements ITargetTypeHandler
 			targetList.add(activeChar);
 			
 			final Collection<L2Object> objs = activeChar.getKnownList().getKnownObjects().values();
-			
+			int maxTargets = skill.getAffectLimit();
 			for (L2Object newTarget : objs)
 			{
 				if (newTarget.isNpc() && npc.getFactionId().equals(((L2Npc) newTarget).getFactionId()))
@@ -166,7 +161,7 @@ public class Clan implements ITargetTypeHandler
 						continue;
 					}
 					
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+					if (targetList.size() >= maxTargets)
 					{
 						break;
 					}

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/ClanMember.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -39,7 +38,7 @@ public class ClanMember implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (activeChar.isNpc())
 		{
 			// for buff purposes, returns friendly mobs nearby and mob itself

+ 0 - 154
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseAlly.java

@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2004-2013 L2J DataPack
- * 
- * This file is part of L2J DataPack.
- * 
- * L2J DataPack 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 DataPack 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.targethandlers;
-
-import java.util.Collection;
-import java.util.List;
-
-import javolution.util.FastList;
-
-import com.l2jserver.gameserver.handler.ITargetTypeHandler;
-import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.entity.TvTEvent;
-import com.l2jserver.gameserver.model.skills.L2Skill;
-import com.l2jserver.gameserver.model.skills.L2SkillType;
-import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
-import com.l2jserver.gameserver.model.zone.ZoneId;
-
-/**
- * @author UnAfraid
- */
-public class CorpseAlly implements ITargetTypeHandler
-{
-	@Override
-	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
-	{
-		List<L2Character> targetList = new FastList<>();
-		if (activeChar.isPlayable())
-		{
-			final L2PcInstance player = activeChar.getActingPlayer();
-			
-			if (player == null)
-			{
-				return _emptyTargetList;
-			}
-			
-			if (player.isInOlympiadMode())
-			{
-				return new L2Character[]
-				{
-					player
-				};
-			}
-			
-			final int radius = skill.getAffectRange();
-			
-			if (L2Skill.addSummon(activeChar, player, radius, true))
-			{
-				targetList.add(player.getSummon());
-			}
-			
-			if (player.getClan() != null)
-			{
-				// Get all visible objects in a spherical area near the L2Character
-				final Collection<L2PcInstance> objs = activeChar.getKnownList().getKnownPlayersInRadius(radius);
-				{
-					for (L2PcInstance obj : objs)
-					{
-						if (obj == null)
-						{
-							continue;
-						}
-						if (((obj.getAllyId() == 0) || (obj.getAllyId() != player.getAllyId())) && ((obj.getClan() == null) || (obj.getClanId() != player.getClanId())))
-						{
-							continue;
-						}
-						
-						if (player.isInDuel())
-						{
-							if (player.getDuelId() != obj.getDuelId())
-							{
-								continue;
-							}
-							if (player.isInParty() && obj.isInParty() && (player.getParty().getLeaderObjectId() != obj.getParty().getLeaderObjectId()))
-							{
-								continue;
-							}
-						}
-						
-						// Don't add this target if this is a Pc->Pc pvp
-						// casting and pvp condition not met
-						if (!player.checkPvpSkill(obj, skill))
-						{
-							continue;
-						}
-						
-						if (!TvTEvent.checkForTvTSkill(player, obj, skill))
-						{
-							continue;
-						}
-						
-						if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, true))
-						{
-							targetList.add(obj.getSummon());
-						}
-						
-						if (!L2Skill.addCharacter(activeChar, obj, radius, true))
-						{
-							continue;
-						}
-						
-						// Siege battlefield resurrect has been made possible for participants
-						if (skill.getSkillType() == L2SkillType.RESURRECT)
-						{
-							if (obj.isInsideZone(ZoneId.SIEGE) && !obj.isInSiege())
-							{
-								continue;
-							}
-						}
-						
-						if (onlyFirst)
-						{
-							return new L2Character[]
-							{
-								obj
-							};
-						}
-						
-						if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-						{
-							break;
-						}
-						
-						targetList.add(obj);
-					}
-				}
-			}
-		}
-		return targetList.toArray(new L2Character[targetList.size()]);
-	}
-	
-	@Override
-	public Enum<L2TargetType> getTargetType()
-	{
-		return L2TargetType.CORPSE_ALLY;
-	}
-}

+ 7 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2ClanMember;
@@ -45,7 +44,7 @@ public class CorpseClan implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (activeChar.isPlayable())
 		{
 			final L2PcInstance player = activeChar.getActingPlayer();
@@ -74,6 +73,7 @@ public class CorpseClan implements ITargetTypeHandler
 			if (clan != null)
 			{
 				L2PcInstance obj;
+				int maxTargets = skill.getAffectLimit();
 				for (L2ClanMember member : clan.getMembers())
 				{
 					obj = member.getPlayerInstance();
@@ -133,7 +133,7 @@ public class CorpseClan implements ITargetTypeHandler
 						};
 					}
 					
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+					if (targetList.size() >= maxTargets)
 					{
 						break;
 					}
@@ -142,7 +142,7 @@ public class CorpseClan implements ITargetTypeHandler
 				}
 			}
 		}
-		else if (activeChar instanceof L2Npc)
+		else if (activeChar.isNpc())
 		{
 			// for buff purposes, returns friendly mobs nearby and mob itself
 			final L2Npc npc = (L2Npc) activeChar;
@@ -157,7 +157,7 @@ public class CorpseClan implements ITargetTypeHandler
 			targetList.add(activeChar);
 			
 			final Collection<L2Object> objs = activeChar.getKnownList().getKnownObjects().values();
-			
+			int maxTargets = skill.getAffectLimit();
 			for (L2Object newTarget : objs)
 			{
 				if ((newTarget.isNpc()) && npc.getFactionId().equals(((L2Npc) newTarget).getFactionId()))
@@ -167,7 +167,7 @@ public class CorpseClan implements ITargetTypeHandler
 						continue;
 					}
 					
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+					if (targetList.size() >= maxTargets)
 					{
 						break;
 					}

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpseMob.java

@@ -18,10 +18,9 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
@@ -40,7 +39,7 @@ public class CorpseMob implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		final boolean isSummon = target.isServitor();
 		if (!(isSummon || target.isL2Attackable()) || !target.isDead())
 		{

+ 0 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpsePet.java

@@ -43,7 +43,6 @@ public class CorpsePet implements ITargetTypeHandler
 				};
 			}
 		}
-		
 		return _emptyTargetList;
 	}
 	

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/CorpsePlayer.java

@@ -18,10 +18,9 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -41,7 +40,7 @@ public class CorpsePlayer implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if ((target != null) && target.isDead())
 		{
 			final L2PcInstance player;

+ 5 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/FrontArea.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -40,7 +39,7 @@ public class FrontArea implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if ((target == null) || (((target == activeChar) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isL2Attackable() || target.isPlayable())))
 		{
 			activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
@@ -49,7 +48,6 @@ public class FrontArea implements ITargetTypeHandler
 		
 		final L2Character origin;
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
-		final int radius = skill.getAffectRange();
 		
 		if (skill.getCastRange() >= 0)
 		{
@@ -75,6 +73,7 @@ public class FrontArea implements ITargetTypeHandler
 		}
 		
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharacters();
+		int maxTargets = skill.getAffectLimit();
 		for (L2Character obj : objs)
 		{
 			if (!(obj.isL2Attackable() || obj.isPlayable()))
@@ -87,7 +86,7 @@ public class FrontArea implements ITargetTypeHandler
 				continue;
 			}
 			
-			if (Util.checkIfInRange(radius, origin, obj, true))
+			if (Util.checkIfInRange(skill.getAffectRange(), origin, obj, true))
 			{
 				if (!obj.isInFrontOf(activeChar))
 				{
@@ -99,7 +98,7 @@ public class FrontArea implements ITargetTypeHandler
 					continue;
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}

+ 5 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/FrontAura.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -38,10 +37,10 @@ public class FrontAura implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		final boolean srcInArena = (activeChar.isInsideZone(ZoneId.PVP) && !activeChar.isInsideZone(ZoneId.SIEGE));
 		final Collection<L2Character> objs = activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange());
-		
+		int maxTargets = skill.getAffectLimit();
 		for (L2Character obj : objs)
 		{
 			if (obj.isL2Attackable() || obj.isPlayable())
@@ -65,10 +64,11 @@ public class FrontAura implements ITargetTypeHandler
 					};
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+				if (targetList.size() >= maxTargets)
 				{
 					break;
 				}
+				
 				targetList.add(obj);
 			}
 		}

+ 0 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/OwnerPet.java

@@ -44,7 +44,6 @@ public class OwnerPet implements ITargetTypeHandler
 				};
 			}
 		}
-		
 		return _emptyTargetList;
 	}
 	

+ 8 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Party.java

@@ -18,10 +18,9 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -37,7 +36,7 @@ public class Party implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (onlyFirst)
 		{
 			return new L2Character[]
@@ -68,6 +67,7 @@ public class Party implements ITargetTypeHandler
 		
 		if (activeChar.isInParty())
 		{
+			int maxTargets = skill.getAffectLimit();
 			// Get a list of Party Members
 			for (L2PcInstance partyMember : activeChar.getParty().getMembers())
 			{
@@ -76,11 +76,6 @@ public class Party implements ITargetTypeHandler
 					continue;
 				}
 				
-				if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-				{
-					break;
-				}
-				
 				if (L2Skill.addCharacter(activeChar, partyMember, radius, false))
 				{
 					targetList.add(partyMember);
@@ -90,6 +85,11 @@ public class Party implements ITargetTypeHandler
 				{
 					targetList.add(partyMember.getSummon());
 				}
+				
+				if (targetList.size() >= maxTargets)
+				{
+					break;
+				}
 			}
 		}
 		return targetList.toArray(new L2Character[targetList.size()]);

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/PartyClan.java

@@ -18,11 +18,10 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -39,7 +38,7 @@ public class PartyClan implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (onlyFirst)
 		{
 			return new L2Character[]
@@ -74,6 +73,7 @@ public class PartyClan implements ITargetTypeHandler
 		
 		// Get all visible objects in a spherical area near the L2Character
 		final Collection<L2PcInstance> objs = activeChar.getKnownList().getKnownPlayersInRadius(radius);
+		int maxTargets = skill.getAffectLimit();
 		for (L2PcInstance obj : objs)
 		{
 			if (obj == null)
@@ -146,14 +146,13 @@ public class PartyClan implements ITargetTypeHandler
 				};
 			}
 			
-			if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
+			if (targetList.size() >= maxTargets)
 			{
 				break;
 			}
 			
 			targetList.add(obj);
 		}
-		
 		return targetList.toArray(new L2Character[targetList.size()]);
 	}
 	

+ 2 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/PartyNotMe.java

@@ -18,10 +18,9 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -39,7 +38,7 @@ public class PartyNotMe implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if (onlyFirst)
 		{
 			return new L2Character[]
@@ -80,11 +79,6 @@ public class PartyNotMe implements ITargetTypeHandler
 				}
 				else if (!partyMember.isDead() && Util.checkIfInRange(skill.getAffectRange(), activeChar, partyMember, true))
 				{
-					if ((skill.getMaxTargets() > -1) && (targetList.size() >= skill.getMaxTargets()))
-					{
-						break;
-					}
-					
 					targetList.add(partyMember);
 					
 					if ((partyMember.getSummon() != null) && !partyMember.getSummon().isDead())

+ 0 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Pet.java

@@ -40,7 +40,6 @@ public class Pet implements ITargetTypeHandler
 				target
 			};
 		}
-		
 		return _emptyTargetList;
 	}
 	

+ 0 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Summon.java

@@ -40,7 +40,6 @@ public class Summon implements ITargetTypeHandler
 				target
 			};
 		}
-		
 		return _emptyTargetList;
 	}
 	

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/Unlockable.java

@@ -18,10 +18,9 @@
  */
 package handlers.targethandlers;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -37,7 +36,7 @@ public class Unlockable implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		List<L2Character> targetList = new FastList<>();
+		List<L2Character> targetList = new ArrayList<>();
 		if ((target == null) || (!target.isDoor() && !(target instanceof L2ChestInstance)))
 		{
 			return _emptyTargetList;

+ 0 - 1
L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml

@@ -947,7 +947,6 @@
 		<set name="affectLimit" val="50-50" />
 		<set name="abnormalLvl" val="1" />
 		<set name="abnormalType" val="pa_up" />
-		<!-- set name="affectLimit" = "50;50" / -->
 		<set name="aggroPoints" val="1" />
 		<set name="hitTime" val="2500" />
 		<set name="isMagic" val="1" /> <!-- Magic Skill -->