Caution deleting NPCs with active quest timers.
This commit is contained in:
@@ -168,9 +168,9 @@ public class Alarm extends AbstractNpcAI
|
||||
{
|
||||
npc0.getVariables().set("SPAWNED", false);
|
||||
}
|
||||
npc.deleteMe();
|
||||
setMemoState(player, ART_OF_PERSUASION_ID, 4);
|
||||
htmltext = "32367-184_09.html";
|
||||
npc.deleteMe();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -186,9 +186,9 @@ public class Alarm extends AbstractNpcAI
|
||||
{
|
||||
npc0.getVariables().set("SPAWNED", false);
|
||||
}
|
||||
npc.deleteMe();
|
||||
setMemoState(player, NIKOLAS_COOPERATION_ID, 4);
|
||||
htmltext = "32367-185_09.html";
|
||||
npc.deleteMe();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -168,8 +168,8 @@ public class Natives extends AbstractNpcAI
|
||||
else if (event.equalsIgnoreCase("delete_me"))
|
||||
{
|
||||
npc.setBusy(false); // TODO: Does it really need?
|
||||
npc.deleteMe();
|
||||
npc.getSpawn().decreaseCount(npc);
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
@@ -120,9 +120,9 @@ public class Quarry extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
npc.setAutoAttackable(false);
|
||||
npc.deleteMe();
|
||||
npc.getSpawn().decreaseCount(npc);
|
||||
HellboundEngine.getInstance().updateTrust(TRUST, true);
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -466,7 +466,6 @@ public class TowerOfNaia extends AbstractNpcAI
|
||||
{
|
||||
htmltext = null;
|
||||
_sporeSpawn.remove(npc);
|
||||
npc.deleteMe();
|
||||
|
||||
if (npcId == SPORE_BASIC)
|
||||
{
|
||||
@@ -488,6 +487,8 @@ public class TowerOfNaia extends AbstractNpcAI
|
||||
startQuestTimer("despawn_total", 60000, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
npc.deleteMe();
|
||||
}
|
||||
else if (event.equalsIgnoreCase("18492-05.htm"))
|
||||
{
|
||||
|
@@ -749,8 +749,8 @@ public class TullyWorkshop extends AbstractNpcAI
|
||||
{
|
||||
if ((npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK) && (npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_CAST) && (npc.getCurrentHp() == npc.getMaxHp()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
allowServantSpawn = true;
|
||||
npc.deleteMe();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -759,9 +759,9 @@ public class TullyWorkshop extends AbstractNpcAI
|
||||
}
|
||||
else if (event.equalsIgnoreCase("despawn_agent"))
|
||||
{
|
||||
npc.deleteMe();
|
||||
allowServantSpawn = true;
|
||||
allowAgentSpawn = true;
|
||||
npc.deleteMe();
|
||||
}
|
||||
else if (event.equalsIgnoreCase("despawn_agent_7"))
|
||||
{
|
||||
@@ -787,8 +787,8 @@ public class TullyWorkshop extends AbstractNpcAI
|
||||
}
|
||||
});
|
||||
|
||||
npc.deleteMe();
|
||||
startQuestTimer("start_7th_floor_spawn", 120000, null, null);
|
||||
npc.deleteMe();
|
||||
}
|
||||
|
||||
if (player == null)
|
||||
@@ -1000,7 +1000,6 @@ public class TullyWorkshop extends AbstractNpcAI
|
||||
else if (event.equalsIgnoreCase("refuse") && !allowAgentSpawn_7th)
|
||||
{
|
||||
allowAgentSpawn_7th = true;
|
||||
npc.deleteMe();
|
||||
spawnedAgent = null;
|
||||
for (MonsterInstance monster : spawnedFollowers)
|
||||
{
|
||||
@@ -1026,6 +1025,8 @@ public class TullyWorkshop extends AbstractNpcAI
|
||||
is7thFloorAttackBegan = true;
|
||||
startQuestTimer("end_7th_floor_attack", 1200000, null, null);
|
||||
}
|
||||
|
||||
npc.deleteMe();
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("teleport") && (npcId == DWARVEN_GHOST))
|
||||
|
@@ -219,9 +219,9 @@ public class StakatoNest extends AbstractNpcAI
|
||||
if (npcId > 0)
|
||||
{
|
||||
npc.getSpawn().decreaseCount(npc);
|
||||
npc.deleteMe();
|
||||
final Npc spawned = addSpawn(npcId, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), false, 0, true);
|
||||
addAttackDesire(spawned, player);
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
@@ -202,7 +202,6 @@ public class Baium extends AbstractNpcAI
|
||||
{
|
||||
if (getStatus() == ALIVE)
|
||||
{
|
||||
npc.deleteMe();
|
||||
setStatus(IN_FIGHT);
|
||||
_baium = (GrandBossInstance) addSpawn(BAIUM, BAIUM_LOC, false, 0);
|
||||
_baium.disableCoreAI(true);
|
||||
@@ -212,6 +211,7 @@ public class Baium extends AbstractNpcAI
|
||||
startQuestTimer("MANAGE_EARTHQUAKE", 2000, _baium, null);
|
||||
startQuestTimer("SOCIAL_ACTION", 10000, _baium, player);
|
||||
startQuestTimer("CHECK_ATTACK", 60000, _baium, null);
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -120,12 +120,12 @@ public class DrChaos extends AbstractNpcAI
|
||||
{
|
||||
if ((npc.getId() == CHAOS_GOLEM) && ((_lastAttackVsGolem + 1800000) < System.currentTimeMillis()))
|
||||
{
|
||||
final Npc chaos = addSpawn(DOCTOR_CHAOS, 96320, -110912, -3328, 8191, false, 0, false); // spawn Dr. Chaos
|
||||
GrandBossManager.getInstance().setBossStatus(CHAOS_GOLEM, NORMAL); // mark Dr. Chaos is not crazy any more
|
||||
cancelQuestTimer("golem_despawn", chaos, null);
|
||||
|
||||
// Despawn the war golem.
|
||||
npc.deleteMe();
|
||||
|
||||
addSpawn(DOCTOR_CHAOS, 96320, -110912, -3328, 8191, false, 0, false); // spawn Dr. Chaos
|
||||
GrandBossManager.getInstance().setBossStatus(CHAOS_GOLEM, NORMAL); // mark Dr. Chaos is not crazy any more
|
||||
cancelQuestTimer("golem_despawn", npc, null);
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("1"))
|
||||
@@ -148,20 +148,19 @@ public class DrChaos extends AbstractNpcAI
|
||||
}
|
||||
else if (event.equalsIgnoreCase("5"))
|
||||
{
|
||||
// Delete Dr. Chaos && spawn the war golem.
|
||||
npc.deleteMe();
|
||||
final GrandBossInstance golem = (GrandBossInstance) addSpawn(CHAOS_GOLEM, 96080, -110822, -3343, 0, false, 0, false);
|
||||
GrandBossManager.getInstance().addBoss(golem);
|
||||
|
||||
// The "npc" variable attribution is now for the golem.
|
||||
npc = golem;
|
||||
npc.broadcastPacket(new SpecialCamera(npc, 30, 200, 20, 6000, 700, 8000, 0, 0, 0, 0, 0));
|
||||
npc.broadcastPacket(new SocialAction(npc.getObjectId(), 1));
|
||||
npc.broadcastPacket(new PlaySound(1, "Rm03_A", 0, 0, 0, 0, 0));
|
||||
golem.broadcastPacket(new SpecialCamera(npc, 30, 200, 20, 6000, 700, 8000, 0, 0, 0, 0, 0));
|
||||
golem.broadcastPacket(new SocialAction(npc.getObjectId(), 1));
|
||||
golem.broadcastPacket(new PlaySound(1, "Rm03_A", 0, 0, 0, 0, 0));
|
||||
|
||||
// start monitoring Dr. Chaos's inactivity
|
||||
_lastAttackVsGolem = System.currentTimeMillis();
|
||||
startQuestTimer("golem_despawn", 60000, npc, null, true);
|
||||
startQuestTimer("golem_despawn", 60000, golem, null, true);
|
||||
|
||||
// Delete Dr. Chaos after spawned the war golem.
|
||||
npc.deleteMe();
|
||||
}
|
||||
// Check every sec if someone is in range, if found, launch one task to decrease the timer.
|
||||
else if (event.equalsIgnoreCase("paranoia_activity") && (GrandBossManager.getInstance().getBossStatus(CHAOS_GOLEM) == NORMAL))
|
||||
|
@@ -58,8 +58,8 @@ public class QueenShyeed extends AbstractNpcAI
|
||||
{
|
||||
if (!npc.isDead())
|
||||
{
|
||||
npc.deleteMe();
|
||||
startRespawn();
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -109,8 +109,8 @@ public class IceQueensCastle extends AbstractInstance
|
||||
if (npc != null)
|
||||
{
|
||||
playMovie(player, Movie.SC_BOSS_FREYA_FORCED_DEFEAT);
|
||||
startQuestTimer("TIMER_PC_LEAVE", 24000, null, player);
|
||||
npc.deleteMe();
|
||||
startQuestTimer("TIMER_PC_LEAVE", 24000, npc, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user