浏览代码

Aggression lock target effect fix: now not possible to switch target to the summon or pet.

_DS_ 16 年之前
父节点
当前提交
c0c2d14dba

+ 12 - 2
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Summon.java

@@ -198,7 +198,17 @@ public abstract class L2Summon extends L2Playable
 	@Override
 	public void onAction(L2PcInstance player)
     {
-        if (player == _owner && player.getTarget() == this)
+		L2Character target = player.getLockedTarget();
+
+		// Aggression target lock effect
+		if (player.isLockedTarget() && target != this)
+		{
+			player.sendPacket(new SystemMessage(SystemMessageId.FAILED_CHANGE_TARGET));
+			player.sendPacket(ActionFailed.STATIC_PACKET);
+			return;
+		}
+
+        if (player == _owner && target == this)
         {
             player.sendPacket(new PetStatusShow(this));
             player.sendPacket(ActionFailed.STATIC_PACKET);
@@ -216,7 +226,7 @@ public abstract class L2Summon extends L2Playable
 			su.addAttribute(StatusUpdate.MAX_HP, getMaxHp());
 			player.sendPacket(su);
         }
-        else if (player.getTarget() == this)
+        else if (target == this)
 		{
 			if (isAutoAttackable(player))
 			{

+ 2 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -3979,9 +3979,11 @@ public final class L2PcInstance extends L2Playable
 			return;
 		}
 
+		// Aggression target lock effect
 		if (player.isLockedTarget() && player.getLockedTarget() != this)
 		{
 			player.sendPacket(new SystemMessage(SystemMessageId.FAILED_CHANGE_TARGET));
+			player.sendPacket(ActionFailed.STATIC_PACKET);
 			return;
 		}
 

+ 8 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java

@@ -276,6 +276,14 @@ public class L2PetInstance extends L2Summon
 	@Override
 	public void onAction(L2PcInstance player)
 	{
+		// Aggression target lock effect
+		if (player.isLockedTarget() && player.getLockedTarget() != this)
+		{
+			player.sendPacket(new SystemMessage(SystemMessageId.FAILED_CHANGE_TARGET));
+			player.sendPacket(ActionFailed.STATIC_PACKET);
+			return;
+		}
+
 		boolean isOwner = player.getObjectId() == getOwner().getObjectId();
 
 		player.sendPacket(new ValidateLocation(this));