Fixed Etis Van Etina been unreachable.

This commit is contained in:
MobiusDevelopment 2024-02-03 00:37:24 +02:00
parent 64b5d6251a
commit 57b6fd06a5
8 changed files with 136 additions and 64 deletions

View File

@ -112,7 +112,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
if (plr != null)
{
final double distance = npc.calculateDistance2D(plr);
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250))
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250) && instance.getParameters().getBoolean("BARRICADE_DESTROYED", true))
{
final Location loc = new Location(plr.getX(), plr.getY(), plr.getZ() + 50);
final Location randLoc = new Location(loc.getX() + getRandom(-100, 100), loc.getY() + getRandom(-100, 100), loc.getZ());
@ -156,8 +156,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
aliber.setRunning();
aliber.setInvul(true);
aliber.setCanReturnToSpawnPoint(false);
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -168,15 +167,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_1");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_2").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_1) == 0) && instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -187,15 +189,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_2");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_3").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_2) == 0) && instance.getNpcsOfGroup("BARRICADES_2").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -206,15 +211,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_3");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_4").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_3) == 0) && instance.getNpcsOfGroup("BARRICADES_3").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -225,8 +233,12 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_4");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
}
}
break;

View File

@ -57,9 +57,9 @@ public class EtisVanEtinaSolo extends AbstractInstance
// Corridor Mobs
//@formatter:off
private static final int[] CORRIDOR_MOBS_1 = {24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183, 24164, 24165, 24166, 24167};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192, 24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192, 24173, 24174, 24175, 24176};
//@formatter:on
private static final int PARAGON = 24193;
// Seals
@ -156,6 +156,12 @@ public class EtisVanEtinaSolo extends AbstractInstance
}
case "talkLeona":
{
// Check distance from Camille spawn.
if (player.calculateDistance2D(-245766, 192148, 3054) > 2300)
{
return "34471-01.html";
}
final Instance world = player.getInstanceWorld();
if (isInInstance(world))
{

View File

@ -112,7 +112,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
if (plr != null)
{
final double distance = npc.calculateDistance2D(plr);
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250))
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250) && instance.getParameters().getBoolean("BARRICADE_DESTROYED", true))
{
final Location loc = new Location(plr.getX(), plr.getY(), plr.getZ() + 50);
final Location randLoc = new Location(loc.getX() + getRandom(-100, 100), loc.getY() + getRandom(-100, 100), loc.getZ());
@ -156,8 +156,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
aliber.setRunning();
aliber.setInvul(true);
aliber.setCanReturnToSpawnPoint(false);
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -168,15 +167,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_1");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_2").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_1) == 0) && instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -187,15 +189,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_2");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_3").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_2) == 0) && instance.getNpcsOfGroup("BARRICADES_2").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -206,15 +211,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_3");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_4").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_3) == 0) && instance.getNpcsOfGroup("BARRICADES_3").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -225,8 +233,12 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_4");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
}
}
break;

View File

@ -57,9 +57,9 @@ public class EtisVanEtinaSolo extends AbstractInstance
// Corridor Mobs
//@formatter:off
private static final int[] CORRIDOR_MOBS_1 = {24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183, 24164, 24165, 24166, 24167};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192, 24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192, 24173, 24174, 24175, 24176};
//@formatter:on
private static final int PARAGON = 24193;
// Seals
@ -156,6 +156,12 @@ public class EtisVanEtinaSolo extends AbstractInstance
}
case "talkLeona":
{
// Check distance from Camille spawn.
if (player.calculateDistance2D(-245766, 192148, 3054) > 2300)
{
return "34471-01.html";
}
final Instance world = player.getInstanceWorld();
if (isInInstance(world))
{

View File

@ -112,7 +112,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
if (plr != null)
{
final double distance = npc.calculateDistance2D(plr);
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250))
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250) && instance.getParameters().getBoolean("BARRICADE_DESTROYED", true))
{
final Location loc = new Location(plr.getX(), plr.getY(), plr.getZ() + 50);
final Location randLoc = new Location(loc.getX() + getRandom(-100, 100), loc.getY() + getRandom(-100, 100), loc.getZ());
@ -156,8 +156,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
aliber.setRunning();
aliber.setInvul(true);
aliber.setCanReturnToSpawnPoint(false);
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -168,15 +167,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_1");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_2").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_1) == 0) && instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -187,15 +189,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_2");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_3").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_2) == 0) && instance.getNpcsOfGroup("BARRICADES_2").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -206,15 +211,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_3");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_4").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_3) == 0) && instance.getNpcsOfGroup("BARRICADES_3").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -225,8 +233,12 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_4");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
}
}
break;

View File

@ -57,9 +57,9 @@ public class EtisVanEtinaSolo extends AbstractInstance
// Corridor Mobs
//@formatter:off
private static final int[] CORRIDOR_MOBS_1 = {24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183, 24164, 24165, 24166, 24167};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192, 24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192, 24173, 24174, 24175, 24176};
//@formatter:on
private static final int PARAGON = 24193;
// Seals
@ -156,6 +156,12 @@ public class EtisVanEtinaSolo extends AbstractInstance
}
case "talkLeona":
{
// Check distance from Camille spawn.
if (player.calculateDistance2D(-245766, 192148, 3054) > 2300)
{
return "34471-01.html";
}
final Instance world = player.getInstanceWorld();
if (isInInstance(world))
{

View File

@ -112,7 +112,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
if (plr != null)
{
final double distance = npc.calculateDistance2D(plr);
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250))
if (!npc.isAttackingNow() && !npc.isMoving() && (distance > 250) && instance.getParameters().getBoolean("BARRICADE_DESTROYED", true))
{
final Location loc = new Location(plr.getX(), plr.getY(), plr.getZ() + 50);
final Location randLoc = new Location(loc.getX() + getRandom(-100, 100), loc.getY() + getRandom(-100, 100), loc.getZ());
@ -156,8 +156,7 @@ public class EtinaHelperAliber extends AbstractNpcAI
aliber.setRunning();
aliber.setInvul(true);
aliber.setCanReturnToSpawnPoint(false);
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[0], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -168,15 +167,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_1");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[0]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_2").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_1) == 0) && instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[1], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -187,15 +189,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_2");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[1]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_3").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_2) == 0) && instance.getNpcsOfGroup("BARRICADES_2").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[2], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -206,15 +211,18 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_3");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[2]);
}
}
else if (!instance.getNpcsOfGroup("BARRICADES_4").isEmpty() && (instance.getAliveNpcCount(CORRIDOR_MOBS_3) == 0) && instance.getNpcsOfGroup("BARRICADES_3").isEmpty())
{
aliber.setRunning();
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 200) && !destroyed)
if (aliber.getLocation().isIn2DRadius(SKILL_CAST_LOCATIONS[3], 10) && !destroyed && !aliber.isMoving())
{
aliber.broadcastPacket(new MagicSkillUse(aliber, aliber, BARRICADE_DESTRUCTION.getSkillId(), 1, 500, 0));
aliber.broadcastPacket(new ExShowScreenMessage(NpcStringId.ALIBER_IS_CASTING_A_SPELL_TO_DESTROY_THE_BARRICADE, ExShowScreenMessage.TOP_CENTER, 7000, true));
@ -225,8 +233,12 @@ public class EtinaHelperAliber extends AbstractNpcAI
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_4");
instance.getParameters().set("BARRICADE_DESTROYED", true);
}
else
{
aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
}
}
break;

View File

@ -57,9 +57,9 @@ public class EtisVanEtinaSolo extends AbstractInstance
// Corridor Mobs
//@formatter:off
private static final int[] CORRIDOR_MOBS_1 = {24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192};
private static final int[] CORRIDOR_MOBS_2 = {24180, 24181, 24182, 24183, 24164, 24165, 24166, 24167};
private static final int[] CORRIDOR_MOBS_3 = {24184, 24185, 24186, 24187, 24188, 24189, 24190, 24191, 24192, 24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176};
private static final int[] CORRIDOR_MOBS_4 = {24189, 24190, 24191, 24192, 24173, 24174, 24175, 24176};
//@formatter:on
private static final int PARAGON = 24193;
// Seals
@ -156,6 +156,12 @@ public class EtisVanEtinaSolo extends AbstractInstance
}
case "talkLeona":
{
// Check distance from Camille spawn.
if (player.calculateDistance2D(-245766, 192148, 3054) > 2300)
{
return "34471-01.html";
}
final Instance world = player.getInstanceWorld();
if (isInInstance(world))
{