فهرست منبع

BETA: Re-implementing Summon Agathion and Unsummon Agathion effects.
* Previous implementation was based on the idea that the effect was continuous and not instant.
* Now agathion is summonned and stay until unsummon skill is called.

Reported by: Midas

Zoey76 12 سال پیش
والد
کامیت
6ae6216d0e

+ 3 - 30
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java

@@ -48,50 +48,23 @@ public class SummonAgathion extends L2Effect
 		return true;
 	}
 	
-	@Override
-	public boolean onActionTime()
-	{
-		return true; // TODO: Review.
-	}
-	
-	@Override
-	public void onExit()
-	{
-		super.onExit();
-		final L2PcInstance player = getEffector().getActingPlayer();
-		if (player != null)
-		{
-			player.setAgathionId(0);
-			player.broadcastUserInfo();
-		}
-	}
-	
 	@Override
 	public boolean onStart()
 	{
-		if ((getEffector() == null) || (getEffected() == null) || !getEffector().isPlayer() || !getEffected().isPlayer() || getEffected().isAlikeDead())
+		if ((getEffected() == null) || !getEffected().isPlayer())
 		{
 			return false;
 		}
 		
-		final L2PcInstance player = getEffector().getActingPlayer();
+		final L2PcInstance player = getEffected().getActingPlayer();
 		if (player.isInOlympiadMode())
 		{
 			player.sendPacket(SystemMessageId.THIS_SKILL_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
 			return false;
 		}
 		
-		setAgathionId(player);
+		player.setAgathionId((getSkill() == null) ? 0 : getSkill().getNpcId());
 		player.broadcastUserInfo();
 		return true;
 	}
-	
-	/**
-	 * Set the player's agathion Id.
-	 * @param player the player to set the agathion Id
-	 */
-	protected void setAgathionId(L2PcInstance player)
-	{
-		player.setAgathionId((getSkill() == null) ? 0 : getSkill().getNpcId());
-	}
 }

+ 23 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java

@@ -20,13 +20,15 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
+import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
 import com.l2jserver.gameserver.model.stats.Env;
 
 /**
  * Unsummon Agathion effect implementation.
  * @author Zoey76
  */
-public class UnsummonAgathion extends SummonAgathion
+public class UnsummonAgathion extends L2Effect
 {
 	public UnsummonAgathion(Env env, EffectTemplate template)
 	{
@@ -34,8 +36,26 @@ public class UnsummonAgathion extends SummonAgathion
 	}
 	
 	@Override
-	protected void setAgathionId(L2PcInstance player)
+	public L2EffectType getEffectType()
 	{
-		player.setAgathionId(0);
+		return L2EffectType.NONE;
+	}
+	
+	@Override
+	public boolean isInstant()
+	{
+		return true;
+	}
+	
+	@Override
+	public boolean onStart()
+	{
+		final L2PcInstance player = getEffector().getActingPlayer();
+		if (player != null)
+		{
+			player.setAgathionId(0);
+			player.broadcastUserInfo();
+		}
+		return true;
 	}
 }