Command Post instance cleanup.

This commit is contained in:
MobiusDevelopment
2021-12-22 23:19:38 +00:00
parent 595a4831ca
commit 74a110a5cd
10 changed files with 2060 additions and 2130 deletions

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.C1_YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.C1_YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);

View File

@@ -132,229 +132,234 @@ public class CommandPost extends AbstractInstance
@Override @Override
public String onAdvEvent(String event, Npc npc, Player player) public String onAdvEvent(String event, Npc npc, Player player)
{ {
if (event.contains("enterInstance")) switch (event)
{ {
final Party party = player.getParty(); case "enterInstance":
if (player.isInParty())
{ {
final long currentTime = Chronos.currentTimeMillis(); final Party party = player.getParty();
if (player.isInParty())
if (!party.isLeader(player))
{ {
player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER)); final long currentTime = Chronos.currentTimeMillis();
return null;
}
if (player.isInCommandChannel()) if (!party.isLeader(player))
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
return null;
}
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{ {
player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit."); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
return null; return null;
} }
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID)) if (player.isInCommandChannel())
{ {
final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON); player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_ENTER_BECAUSE_YOU_DO_NOT_MEET_THE_REQUIREMENTS));
msg.addString(member.getName());
party.broadcastToPartyMembers(member, msg);
return null; return null;
} }
}
for (Player member : members) final List<Player> members = party.getMembers();
{ for (Player member : members)
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
}
else if (event.equals("check_status"))
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
world.getNpc(GEORK).setInvul(true); if (!member.isInsideRadius3D(npc, 1000))
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
monster.setInvul(true); player.sendMessage("Player " + member.getName() + " must go closer to Gatekeeper Spirit.");
monster.setImmobilized(true); return null;
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
} }
for (Npc monster : world.spawnGroup("group_2"))
if (currentTime < InstanceManager.getInstance().getInstanceTime(member, TEMPLATE_ID))
{ {
monster.setInvul(true); final SystemMessage msg = new SystemMessage(SystemMessageId.SINCE_C1_ENTERED_ANOTHER_INSTANCE_ZONE_THEREFORE_YOU_CANNOT_ENTER_THIS_DUNGEON);
monster.setImmobilized(true); msg.addString(member.getName());
monster.setRandomWalking(false); party.broadcastToPartyMembers(member, msg);
monster.setTargetable(false); return null;
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break; for (Player member : members)
}
case 2:
{
if (!player.isGM())
{ {
final Party party = player.getParty(); enterInstance(member, npc, TEMPLATE_ID);
final List<Player> members = party.getMembers(); }
for (Player member : members) }
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else
{
player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_NOT_CURRENTLY_IN_A_PARTY_SO_YOU_CANNOT_ENTER));
}
if (player.getInstanceWorld() != null)
{
startQuestTimer("check_status", 3000, null, player);
}
break;
}
case "check_status":
{
final Instance world = player.getInstanceWorld();
if (!isInInstance(world))
{
return null;
}
switch (world.getStatus())
{
case 0:
{
world.setStatus(1);
world.spawnGroup("geork");
if (world.getNpc(GEORK) != null)
{ {
if (FLOOR_1_TP.isInsideZone(member)) world.getNpc(GEORK).setInvul(true);
world.getNpc(GEORK).setImmobilized(true);
world.getNpc(GEORK).setRandomWalking(false);
world.getNpc(GEORK).setTargetable(false);
}
startQuestTimer("check_status", 3000, null, player);
break;
}
case 1:
{
if (world.getAliveNpcs(FIRST_FLOOR).isEmpty())
{
showOnScreenMsg(world, NpcStringId.THE_TELEPORT_GATE_TO_THE_2ND_FLOOR_HAS_BEEN_ACTIVATED, ExShowScreenMessage.TOP_CENTER, 2000, true);
world.setStatus(2);
world.getNpc(GEORK).teleToLocation(GEORK_FLOOR_2_SPAWN);
for (Npc monster : world.spawnGroup("group_1"))
{ {
member.teleToLocation(FLOOR_2_SPAWN); monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
monster.setScriptValue(1);
}
for (Npc monster : world.spawnGroup("group_2"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_3"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
}
for (Npc monster : world.spawnGroup("group_4"))
{
monster.setInvul(true);
monster.setImmobilized(true);
monster.setRandomWalking(false);
monster.setTargetable(false);
} }
} }
startQuestTimer("check_status", 3000, null, player);
break;
} }
else if (FLOOR_1_TP.isInsideZone(player)) case 2:
{ {
player.teleToLocation(FLOOR_2_SPAWN); if (!player.isGM())
} {
final Party party = player.getParty();
final List<Player> members = party.getMembers();
for (Player member : members)
{
if (FLOOR_1_TP.isInsideZone(member))
{
member.teleToLocation(FLOOR_2_SPAWN);
}
}
}
else if (FLOOR_1_TP.isInsideZone(player))
{
player.teleToLocation(FLOOR_2_SPAWN);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
}
case 3:
{
for (Npc monster : world.getNpcsOfGroup("group_1"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_1_MOVE);
} }
case 3:
startQuestTimer("check_status", 3000, null, player);
break;
}
case 4:
{
if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
for (Npc monster : world.getNpcsOfGroup("group_2")) for (Npc monster : world.getNpcsOfGroup("group_1"))
{ {
monster.setImmobilized(false); monster.setImmobilized(false);
monster.setWalking(); monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE); monster.getAI().moveTo(GROUP_1_MOVE);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 5: case 4:
{
if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_3")) if ((world.getStatus() == 4) && //
(!world.getNpc(ELITE_KNIGHT).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WARRIOR).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_ARCHER).isInsideZone(ZoneId.SCRIPT)) && //
(!world.getNpc(ELITE_WIZARD).isInsideZone(ZoneId.SCRIPT)))
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_2"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_3_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_2_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("secondGroupId"), true);
world.setStatus(5);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 6: case 5:
{
if (world.getAliveNpcs(GROUP_3).isEmpty())
{ {
for (Npc monster : world.getNpcsOfGroup("group_4")) if (world.getAliveNpcs(GROUP_2).isEmpty())
{ {
monster.setImmobilized(false); for (Npc monster : world.getNpcsOfGroup("group_3"))
monster.setWalking(); {
monster.getAI().moveTo(GROUP_4_MOVE); monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_3_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("thirdGroupId"), true);
world.setStatus(6);
} }
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
case 7: case 6:
{
if (world.getAliveNpcs(GROUP_4).isEmpty())
{ {
System.out.println("Status is 7."); if (world.getAliveNpcs(GROUP_3).isEmpty())
} {
for (Npc monster : world.getNpcsOfGroup("group_4"))
{
monster.setImmobilized(false);
monster.setWalking();
monster.getAI().moveTo(GROUP_4_MOVE);
}
world.openCloseDoor(world.getTemplateParameters().getInt("fourthGroupId"), true);
world.setStatus(7);
}
startQuestTimer("check_status", 3000, null, player); startQuestTimer("check_status", 3000, null, player);
break; break;
} }
default: case 7:
{ {
startQuestTimer("check_status", 3000, null, player); // if (world.getAliveNpcs(GROUP_4).isEmpty())
// {
// System.out.println("Status is 7.");
// }
startQuestTimer("check_status", 3000, null, player);
break;
}
default:
{
startQuestTimer("check_status", 3000, null, player);
}
} }
break;
} }
} }
return null; return null;
@@ -366,27 +371,12 @@ public class CommandPost extends AbstractInstance
final Instance world = npc.getInstanceWorld(); final Instance world = npc.getInstanceWorld();
if (world != null) if (world != null)
{ {
npc.setInvul(false);
npc.setTargetable(true);
if (CommonUtil.contains(GROUP_1, npc.getId())) if (CommonUtil.contains(GROUP_1, npc.getId()))
{ {
npc.setInvul(false);
npc.setTargetable(true);
world.setStatus(4); world.setStatus(4);
} }
else if (CommonUtil.contains(GROUP_2, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_3, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
else if (CommonUtil.contains(GROUP_4, npc.getId()))
{
npc.setInvul(false);
npc.setTargetable(true);
}
} }
super.onMoveFinished(npc); super.onMoveFinished(npc);
} }
@@ -395,32 +385,35 @@ public class CommandPost extends AbstractInstance
public String onEnterZone(Creature creature, ZoneType zone) public String onEnterZone(Creature creature, ZoneType zone)
{ {
final Instance world = creature.getInstanceWorld(); final Instance world = creature.getInstanceWorld();
switch (zone.getId()) if (world != null)
{ {
case 25901: switch (zone.getId())
{ {
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2)) case 25901:
{ {
creature.teleToLocation(FLOOR_2_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 2))
{
creature.teleToLocation(FLOOR_2_SPAWN);
}
break;
} }
break; case 25902:
}
case 25902:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{ {
creature.teleToLocation(FLOOR_3_SPAWN); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() >= 3))
{
creature.teleToLocation(FLOOR_3_SPAWN);
}
break;
} }
break; case 25903:
}
case 25903:
{
if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
{ {
world.setStatus(3); if (creature.isPlayer() && isInInstance(world) && (world.getStatus() == 2))
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true); {
world.setStatus(3);
world.openCloseDoor(world.getTemplateParameters().getInt("firstGroupId"), true);
}
break;
} }
break;
} }
} }
return super.onEnterZone(creature, zone); return super.onEnterZone(creature, zone);