L2JMobius

The Source of Flame There is a problem with completing the solo instance of Etis Van Etina Solo

CondorUA · 18 · 938

Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
There is a problem with completing the solo instance of Etis Van Etina Solo, after killing the mobs behind the second barricade, the mage Aliber does not destroy the third barricade and it is impossible to go forward. There was a similar problem with this instance in previous chronicles.



Online Mobius

  • Distinguished King
  • *****
    • Posts: 16114
Check data\scripts\instances\EtisVanEtinaSolo\EtinaHelperAliber.java

Try something like this.
Code: [Select]
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (working copy)
@@ -150,7 +150,6 @@
  case "DESTROY_BARRICADES":
  {
  final FriendlyNpc aliber = (FriendlyNpc) instance.getNpc(ETINA_HELPER_ALIBER);
- boolean destroyed = instance.getParameters().getBoolean("BARRICADE_DESTROYED", false);
  if (!instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
  {
  aliber.setRunning();
@@ -157,7 +156,7 @@
  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], 200))
  {
  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,7 +167,6 @@
  barricade.decayMe();
  }
  });
- instance.getParameters().set("BARRICADE_DESTROYED", true);
  instance.despawnGroup("BARRICADES_1");
  }
  }
@@ -176,7 +174,7 @@
  {
  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], 200))
  {
  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,7 +185,6 @@
  barricade.decayMe();
  }
  });
- instance.getParameters().set("BARRICADE_DESTROYED", true);
  instance.despawnGroup("BARRICADES_2");
  }
  }
@@ -194,8 +191,7 @@
  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], 200))
  {
  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));
@@ -214,7 +210,7 @@
  {
  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], 200))
  {
  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));
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (working copy)
@@ -19,11 +19,9 @@
 import org.l2jmobius.commons.util.CommonUtil;
 import org.l2jmobius.gameserver.enums.ChatType;
 import org.l2jmobius.gameserver.enums.Movie;
-import org.l2jmobius.gameserver.model.World;
 import org.l2jmobius.gameserver.model.actor.Attackable;
 import org.l2jmobius.gameserver.model.actor.Npc;
 import org.l2jmobius.gameserver.model.actor.Player;
-import org.l2jmobius.gameserver.model.actor.instance.Monster;
 import org.l2jmobius.gameserver.model.holders.SkillHolder;
 import org.l2jmobius.gameserver.model.instancezone.Instance;
 import org.l2jmobius.gameserver.model.skill.AbnormalVisualEffect;
@@ -114,7 +112,6 @@
  public void onInstanceCreated(Instance world, Player player)
  {
  world.setStatus(0);
- world.getParameters().set("BARRICADE_DESTROYED", false);
  world.getParameters().set("CORRIDOR_MOBS_1_SPAWNED", false);
  world.getParameters().set("CORRIDOR_MOBS_2_SPAWNED", false);
  world.getParameters().set("CORRIDOR_MOBS_3_SPAWNED", false);
@@ -184,22 +181,6 @@
  boolean mobs2 = world.getParameters().getBoolean("CORRIDOR_MOBS_2_SPAWNED", false);
  boolean mobs3 = world.getParameters().getBoolean("CORRIDOR_MOBS_3_SPAWNED", false);
  boolean mobs4 = world.getParameters().getBoolean("CORRIDOR_MOBS_4_SPAWNED", false);
- final Monster monsterCheck = getRandomEntry(World.getInstance().getVisibleObjectsInRange(npc, Monster.class, 2500));
- if (monsterCheck == null)
- {
- if (!world.getNpcsOfGroup("BARRICADES_2").isEmpty() && (world.getAliveNpcCount(CORRIDOR_MOBS_1) == 0) && world.getNpcsOfGroup("BARRICADES_1").isEmpty())
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- else if (!world.getNpcsOfGroup("BARRICADES_3").isEmpty() && (world.getAliveNpcCount(CORRIDOR_MOBS_2) == 0) && world.getNpcsOfGroup("BARRICADES_2").isEmpty())
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- else if (!world.getNpcsOfGroup("BARRICADES_4").isEmpty() && (world.getAliveNpcCount(CORRIDOR_MOBS_3) == 0) && world.getNpcsOfGroup("BARRICADES_3").isEmpty())
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- }
  if (!mobs1 && world.getNpcsOfGroup("BARRICADES_1").isEmpty() && !world.getNpcsOfGroup("BARRICADES_2").isEmpty() && (world.getAliveNpcCount(CORRIDOR_MOBS_1) == 0))
  {
  world.spawnGroup("CORRIDOR_MOBS_1");
@@ -592,27 +573,6 @@
  closeDoor(DOOR4, world.getId());
  world.finishInstance(2);
  }
- else if (CommonUtil.contains(CORRIDOR_MOBS_1, npc.getId()))
- {
- if (world.getAliveNpcCount(CORRIDOR_MOBS_1) == 0)
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- }
- else if (CommonUtil.contains(CORRIDOR_MOBS_2, npc.getId()))
- {
- if (world.getAliveNpcCount(CORRIDOR_MOBS_2) == 0)
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- }
- else if (CommonUtil.contains(CORRIDOR_MOBS_3, npc.getId()))
- {
- if (world.getAliveNpcCount(CORRIDOR_MOBS_3) == 0)
- {
- world.getParameters().set("BARRICADE_DESTROYED", false);
- }
- }
  else if (CommonUtil.contains(CORRIDOR_MOBS_4, npc.getId()))
  {
  if (world.getAliveNpcCount(CORRIDOR_MOBS_4) == 0)


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
Check data\scripts\instances\EtisVanEtinaSolo\EtinaHelperAliber.java
I checked the code section, but did not find any visible errors

Code: [Select]
case "DESTROY_BARRICADES":
{
final FriendlyNpc aliber = (FriendlyNpc) instance.getNpc(ETINA_HELPER_ALIBER);
boolean destroyed = instance.getParameters().getBoolean("BARRICADE_DESTROYED", false);
if (!instance.getNpcsOfGroup("BARRICADES_1").isEmpty())
{
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)
{
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));
instance.getNpcsOfGroup("BARRICADES_1").forEach(barricade ->
{
if (barricade != null)
{
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_1");
}
}
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)
{
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));
instance.getNpcsOfGroup("BARRICADES_2").forEach(barricade ->
{
if (barricade != null)
{
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_2");
}
}
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)
{
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));
instance.getNpcsOfGroup("BARRICADES_3").forEach(barricade ->
{
if (barricade != null)
{
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_3");
}
}
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)
{
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));
instance.getNpcsOfGroup("BARRICADES_4").forEach(barricade ->
{
if (barricade != null)
{
barricade.decayMe();
}
});
instance.getParameters().set("BARRICADE_DESTROYED", true);
instance.despawnGroup("BARRICADES_4");
}
}
break;
}
}
}
}

I think there may be a bug at the point where the NPC casts the destruction spell, but I'm not sure

Code: [Select]
private static final Location[] SKILL_CAST_LOCATIONS =
{
new Location(-245751, 182321, 2861, 16612), // First barricade line
new Location(-245751, 184001, 3025, 16612), // Second barricade line
new Location(-245751, 185298, 3031, 16612), // Third barricade line
new Location(-245751, 186612, 3038, 16612), // Fourth barricade line
};


Online CostyKiller

  • Distinguished King
  • *****
    • Posts: 968
Hi, I have this change on my server, but I don't remember what I added it for, I think it may fix your issue:

Code: [Select]
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (working copy)
@@ -255,8 +255,11 @@
  {
  final Instance instance = event.getWorld();
  instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("CHECK_ACTION", 3000, etinaHelperAliber, null));
- instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("USE_SKILL", 6000, etinaHelperAliber, null));
- instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("DESTROY_BARRICADES", 5000, etinaHelperAliber, null));
+ // instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("USE_SKILL", 6000, etinaHelperAliber, null));
+ if (!event.getWorld().getNpc(ETINA_HELPER_ALIBER).isInCombat() && (status == 1))
+ {
+ instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("DESTROY_BARRICADES", 5000, etinaHelperAliber, null));
+ }
  }
  }
 


Online Mobius

  • Distinguished King
  • *****
    • Posts: 16114
Just test this.
Seems to work.
NPC ids are wrong.
Code: [Select]
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (working copy)
@@ -112,7 +112,7 @@
  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 @@
  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 @@
  barricade.decayMe();
  }
  });
+ instance.despawnGroup("BARRICADES_1");
  instance.getParameters().set("BARRICADE_DESTROYED", true);
- instance.despawnGroup("BARRICADES_1");
  }
+ 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 @@
  barricade.decayMe();
  }
  });
+ instance.despawnGroup("BARRICADES_2");
  instance.getParameters().set("BARRICADE_DESTROYED", true);
- instance.despawnGroup("BARRICADES_2");
  }
+ 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 @@
  barricade.decayMe();
  }
  });
+ instance.despawnGroup("BARRICADES_3");
  instance.getParameters().set("BARRICADE_DESTROYED", true);
- instance.despawnGroup("BARRICADES_3");
  }
+ 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,9 +233,13 @@
  barricade.decayMe();
  }
  });
+ instance.despawnGroup("BARRICADES_4");
  instance.getParameters().set("BARRICADE_DESTROYED", true);
- instance.despawnGroup("BARRICADES_4");
  }
+ else
+ {
+ aliber.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, SKILL_CAST_LOCATIONS[3]);
+ }
  }
  break;
  }
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (working copy)
@@ -57,9 +57,9 @@
  // 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


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
Mobius, I made the first changes you suggested, the problem with the barricades disappeared, but other problems appeared, the magician destroys the barricades before all the mobs are killed, the castle gates open first, but after the video they are closed and it’s impossible to move forward



Now I’ll try to make the second changes you suggested


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
I made the second changes you suggested, but the castle gates remain closed after the video and I can’t go forward




Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
You talked to Leona before entering the boss room?
Thank you very much for your help, I’m learning the features of this script. I will continue testing.


Online Mobius

  • Distinguished King
  • *****
    • Posts: 16114
Try additionally this.
Code: [Select]
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtisVanEtinaSolo.java (working copy)
@@ -156,6 +156,12 @@
  }
  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))
  {


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
Hi, I have this change on my server, but I don't remember what I added it for, I think it may fix your issue:

Code: [Select]
Index: dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java
===================================================================
--- dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (revision 13405)
+++ dist/game/data/scripts/instances/EtisVanEtinaSolo/EtinaHelperAliber.java (working copy)
@@ -255,8 +255,11 @@
  {
  final Instance instance = event.getWorld();
  instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("CHECK_ACTION", 3000, etinaHelperAliber, null));
- instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("USE_SKILL", 6000, etinaHelperAliber, null));
- instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("DESTROY_BARRICADES", 5000, etinaHelperAliber, null));
+ // instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("USE_SKILL", 6000, etinaHelperAliber, null));
+ if (!event.getWorld().getNpc(ETINA_HELPER_ALIBER).isInCombat() && (status == 1))
+ {
+ instance.getAliveNpcs(ETINA_HELPER_ALIBER).forEach(etinaHelperAliber -> getTimers().addRepeatingTimer("DESTROY_BARRICADES", 5000, etinaHelperAliber, null));
+ }
  }
  }
 
Thank you for responding to this message.


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
A problem appeared after the changes were made: after killing Cain Van Holter, nothing happens, the video does not start and Etina does not go down



Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
I solved the problem, now the entire instance is completed. During testing, other problems emerged; later I will post a video with a description. I will also post a video from the official server to make it clear what differences exist.


Online Liamxroy

  • Grand Duke
  • *****
    • Posts: 761
    • Adenaplease!
I solved the problem, now the entire instance is completed. During testing, other problems emerged; later I will post a video with a description. I will also post a video from the official server to make it clear what differences exist.

By saying "I solved" you mean the mobius patch or you added something not willing to share?


Offline CondorUA

  • Black Sheep
  • Heir
  • **
    • Posts: 39
By saying "I solved" you mean the mobius patch or you added something not willing to share?
Mobius did everything, for which I thank him very much, I only slightly changed his recommendations.
The solution to the problem of Etina appearing after Cain is in Mobius's post
I changed the mob IDs and left the rest unchanged.
If anyone encounters a problem, the solution is in Mobius’s post, so I have nothing to share and I’m not hiding anything.

https://l2jmobius.org/forum/index.php?topic=11602.msg49645#msg49645