From 8c7a646d546f92a8a54591532ec6c0a6c5593f0d Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Sun, 24 May 2015 23:37:15 -0300
Subject: [PATCH] Minor fix for Beleth AI

Patch by: sahar (@petpal)

http://www.l2jserver.com/forum/viewtopic.php?f=77&t=31179
---
 .../data/scripts/ai/individual/Beleth.java    | 40 ++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/L2J_DataPack/dist/game/data/scripts/ai/individual/Beleth.java b/L2J_DataPack/dist/game/data/scripts/ai/individual/Beleth.java
index 1f50ef102d..b3acc0452b 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/individual/Beleth.java
+++ b/L2J_DataPack/dist/game/data/scripts/ai/individual/Beleth.java
@@ -28,10 +28,12 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
+import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -93,6 +95,7 @@ public final class Beleth extends AbstractNpcAI
 	private L2PcInstance _killer;
 	private int _allowedObjId;
 	private int _killedCount;
+	private long _lastAttack;
 	private final List<L2Npc> _minions = new CopyOnWriteArrayList<>();
 	
 	private Beleth()
@@ -372,11 +375,17 @@ public final class Beleth extends AbstractNpcAI
 					c.setIsImmobilized(false);
 				}
 				
+				_lastAttack = System.currentTimeMillis();
+				
+				startQuestTimer("CHECK_ATTACK", 60000, null, null);
+				
 				startQuestTimer("SPAWN25", 60000, null, null);
 				break;
 			}
 			case "SPAWN25":
 			{
+				_minions.clear();
+				
 				int a = 0;
 				for (int i = 0; i < 16; i++)
 				{
@@ -534,6 +543,33 @@ public final class Beleth extends AbstractNpcAI
 				}
 				break;
 			}
+			case "CHECK_ATTACK":
+			{
+				if ((_lastAttack + 900000) < System.currentTimeMillis())
+				{
+					GrandBossManager.getInstance().setBossStatus(REAL_BELETH, ALIVE);
+					for (L2Character charInside : ZONE.getCharactersInside())
+					{
+						if (charInside != null)
+						{
+							if (charInside.isNpc())
+							{
+								charInside.deleteMe();
+							}
+							else if (charInside.isPlayer())
+							{
+								charInside.teleToLocation(MapRegionManager.getInstance().getTeleToLocation(charInside, TeleportWhereType.TOWN));
+							}
+						}
+					}
+					cancelQuestTimer("CHECK_ATTACK", null, null);
+				}
+				else
+				{
+					startQuestTimer("CHECK_ATTACK", 60000, null, null);
+				}
+				break;
+			}
 		}
 		return super.onAdvEvent(event, npc, player);
 	}
@@ -718,6 +754,8 @@ public final class Beleth extends AbstractNpcAI
 	{
 		if (npc.getId() == REAL_BELETH)
 		{
+			cancelQuestTimer("CHECK_ATTACK", null, null);
+			
 			setBelethKiller(killer);
 			GrandBossManager.getInstance().setBossStatus(REAL_BELETH, DEAD);
 			final long respawnTime = (Config.BELETH_SPAWN_INTERVAL + getRandom(-Config.BELETH_SPAWN_RANDOM, Config.BELETH_SPAWN_RANDOM)) * 3600000;
@@ -749,7 +787,7 @@ public final class Beleth extends AbstractNpcAI
 			
 			startQuestTimer("SPAWN26", 1000, null, null);
 		}
-		else if ((npc.getId() == FAKE_BELETH) && (npc.getObjectId() == _allowedObjId))
+		else if (npc.getObjectId() == _allowedObjId)
 		{
 			deleteAll();
 			
-- 
GitLab