浏览代码

BETA: Fixing NPEs caused by setting owner of `L2Summon` to null.
* Reported by: Sdw
* Patch by: Sdw

Rumen Nikiforov 11 年之前
父节点
当前提交
d132c375c9

+ 0 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -464,7 +464,6 @@ public abstract class L2Summon extends L2Playable
 			{
 			{
 				owner.setPet(null);
 				owner.setPet(null);
 			}
 			}
-			setOwner(null);
 			
 			
 			// Stop AI tasks
 			// Stop AI tasks
 			if (hasAI())
 			if (hasAI())

+ 14 - 10
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/BuffInfo.java

@@ -30,6 +30,7 @@ import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.model.CharEffectList;
 import com.l2jserver.gameserver.model.CharEffectList;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.effects.AbstractEffect;
 import com.l2jserver.gameserver.model.effects.AbstractEffect;
 import com.l2jserver.gameserver.model.effects.EffectTaskInfo;
 import com.l2jserver.gameserver.model.effects.EffectTaskInfo;
 import com.l2jserver.gameserver.model.effects.EffectTickTask;
 import com.l2jserver.gameserver.model.effects.EffectTickTask;
@@ -349,17 +350,20 @@ public final class BuffInfo
 		
 		
 		// Sends the proper system message.
 		// Sends the proper system message.
 		SystemMessageId smId = null;
 		SystemMessageId smId = null;
-		if (_env.getSkill().isToggle())
+		if (!(_env.getTarget().isSummon() && !((L2Summon) _env.getTarget()).getOwner().hasSummon()))
 		{
 		{
-			smId = SystemMessageId.S1_HAS_BEEN_ABORTED;
-		}
-		else if (isRemoved())
-		{
-			smId = SystemMessageId.EFFECT_S1_HAS_BEEN_REMOVED;
-		}
-		else if (!_env.getSkill().isPassive())
-		{
-			smId = SystemMessageId.S1_HAS_WORN_OFF;
+			if (_env.getSkill().isToggle())
+			{
+				smId = SystemMessageId.S1_HAS_BEEN_ABORTED;
+			}
+			else if (isRemoved())
+			{
+				smId = SystemMessageId.EFFECT_S1_HAS_BEEN_REMOVED;
+			}
+			else if (!_env.getSkill().isPassive())
+			{
+				smId = SystemMessageId.S1_HAS_WORN_OFF;
+			}
 		}
 		}
 		
 		
 		if (smId != null)
 		if (smId != null)