Missing Kartia dialogs and condition checks.

This commit is contained in:
MobiusDev
2016-07-20 18:33:30 +00:00
parent d5ef17f953
commit 9d59227c29
16 changed files with 261 additions and 57 deletions

View File

@@ -16,6 +16,7 @@
*/
package instances.KartiasLabyrinth;
import java.util.Calendar;
import java.util.List;
import com.l2jmobius.commons.util.CommonUtil;
@@ -36,6 +37,7 @@ import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.util.Util;
import instances.AbstractInstance;
import quests.Q00494_IncarnationOfGreedZellakaGroup.Q00494_IncarnationOfGreedZellakaGroup;
@@ -60,6 +62,30 @@ public final class KartiasLabyrinth extends AbstractInstance
33619,
33630,
};
private static final int[] BARTON =
{
33610,
33621,
33632,
};
private static final int[] ELISE =
{
33616,
33627,
33638,
};
private static final int[] ELIYAH =
{
33614,
33625,
33636,
};
private static final int[] HAYUK =
{
33612,
33623,
33634,
};
// @formatter:off
private static final int[] MONSTERS =
{
@@ -130,12 +156,26 @@ public final class KartiasLabyrinth extends AbstractInstance
private static final int TEMPLATE_ID_GROUP_85 = 208;
private static final int TEMPLATE_ID_GROUP_90 = 209;
private static final int TEMPLATE_ID_GROUP_95 = 210;
private static final int MIN_LVL_85 = 85;
private static final int MIN_LVL_90 = 90;
private static final int MIN_LVL_95 = 95;
private static final int MAX_LVL_85 = 89;
private static final int MAX_LVL_90 = 94;
private static final int MAX_LVL_95 = 99;
private static final String KARTIA_ENTRY_VAR = "Last_Kartia_entry";
private static final String KARTIA_PARTY_ENTRY_VAR = "Last_Kartia_party_entry";
public KartiasLabyrinth()
{
addStartNpc(KARTIA_RESEARCHER);
addFirstTalkId(KARTIA_RESEARCHER);
addFirstTalkId(ADOLPH);
addFirstTalkId(BARTON);
addFirstTalkId(ELISE);
addFirstTalkId(ELIYAH);
addFirstTalkId(HAYUK);
addTalkId(ADOLPH);
addTalkId(KARTIA_RESEARCHER);
addSpawnId(BOZ_ENERGY);
addSpawnId(BOSSES);
addAttackId(MINI_BOSSES);
@@ -157,35 +197,132 @@ public final class KartiasLabyrinth extends AbstractInstance
{
switch (event)
{
case "enter_85_solo":
case "33647-1.htm":
case "33647-2.htm":
case "33647-3.htm":
case "33647-4.htm":
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_85);
break;
return event;
}
case "enter_90_solo":
case "request_zellaka_solo":
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_90);
break;
if (!checkConditions(player, TEMPLATE_ID_SOLO_85))
{
return "33647-8.htm";
}
else if ((player.getLevel() >= MIN_LVL_85) && (player.getLevel() <= MAX_LVL_85))
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_85);
savePlayer(player);
return "33647-5.htm";
}
else
{
return "33647-6.htm";
}
}
case "enter_95_solo":
case "request_pelline_solo":
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_95);
break;
if (!checkConditions(player, TEMPLATE_ID_SOLO_90))
{
return "33647-8.htm";
}
else if ((player.getLevel() >= MIN_LVL_90) && (player.getLevel() <= MAX_LVL_90))
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_90);
savePlayer(player);
return "33647-5.htm";
}
else
{
return "33647-6.htm";
}
}
case "enter_85_group":
case "request_kalios_solo":
{
if (!checkConditions(player, TEMPLATE_ID_SOLO_95))
{
return "33647-8.htm";
}
else if ((player.getLevel() >= MIN_LVL_95) && (player.getLevel() <= MAX_LVL_95))
{
enterInstance(player, npc, TEMPLATE_ID_SOLO_95);
savePlayer(player);
return "33647-5.htm";
}
else
{
return "33647-6.htm";
}
}
case "request_zellaka_party":
{
if ((player.getParty() == null) || !player.getParty().isLeader(player))
{
return "33647-7.htm";
}
for (L2PcInstance member : player.getParty().getMembers())
{
if (!checkConditions(member, TEMPLATE_ID_GROUP_85) || (member.getLevel() < MIN_LVL_85) || (member.getLevel() > MAX_LVL_85) || (Util.calculateDistance(player, member, false, false) > 500))
{
return "33647-8.htm";
}
}
enterInstance(player, npc, TEMPLATE_ID_GROUP_85);
break;
savePlayer(player);
for (L2PcInstance member : player.getParty().getMembers())
{
player.getInstanceWorld().addAllowed(member);
member.teleToLocation(player, true);
savePlayer(member);
}
return "33647-5.htm";
}
case "enter_90_group":
case "request_pelline_party":
{
if ((player.getParty() == null) || !player.getParty().isLeader(player))
{
return "33647-7.htm";
}
for (L2PcInstance member : player.getParty().getMembers())
{
if (!checkConditions(member, TEMPLATE_ID_GROUP_90) || (member.getLevel() < MIN_LVL_90) || (member.getLevel() > MAX_LVL_90) || (Util.calculateDistance(player, member, false, false) > 500))
{
return "33647-8.htm";
}
}
enterInstance(player, npc, TEMPLATE_ID_GROUP_90);
break;
savePlayer(player);
for (L2PcInstance member : player.getParty().getMembers())
{
player.getInstanceWorld().addAllowed(member);
member.teleToLocation(player, true);
savePlayer(member);
}
return "33647-5.htm";
}
case "enter_95_group":
case "request_kalios_party":
{
if ((player.getParty() == null) || !player.getParty().isLeader(player))
{
return "33647-7.htm";
}
for (L2PcInstance member : player.getParty().getMembers())
{
if (!checkConditions(member, TEMPLATE_ID_GROUP_95) || (member.getLevel() < MIN_LVL_95) || (member.getLevel() > MAX_LVL_95) || (Util.calculateDistance(player, member, false, false) > 500))
{
return "33647-8.htm";
}
}
enterInstance(player, npc, TEMPLATE_ID_GROUP_95);
break;
savePlayer(player);
for (L2PcInstance member : player.getParty().getMembers())
{
player.getInstanceWorld().addAllowed(member);
member.teleToLocation(player, true);
savePlayer(member);
}
return "33647-5.htm";
}
default:
{
@@ -925,7 +1062,31 @@ public final class KartiasLabyrinth extends AbstractInstance
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
return "adolph.html";
if (npc.getId() == KARTIA_RESEARCHER)
{
return "33647.htm";
}
if (CommonUtil.contains(ADOLPH, npc.getId()))
{
return "adolph.html";
}
if (CommonUtil.contains(BARTON, npc.getId()))
{
return "barton.html";
}
if (CommonUtil.contains(ELISE, npc.getId()))
{
return "elise.html";
}
if (CommonUtil.contains(ELIYAH, npc.getId()))
{
return "eliyah.html";
}
if (CommonUtil.contains(HAYUK, npc.getId()))
{
return "hayuk.html";
}
return "";
}
private boolean isSoloKartia(Instance instance)
@@ -933,6 +1094,36 @@ public final class KartiasLabyrinth extends AbstractInstance
return (instance.getTemplateId() == TEMPLATE_ID_SOLO_85) || (instance.getTemplateId() == TEMPLATE_ID_SOLO_90) || (instance.getTemplateId() == TEMPLATE_ID_SOLO_95);
}
protected void savePlayer(L2PcInstance player)
{
if (isSoloKartia(player.getInstanceWorld()))
{
player.getVariables().set(KARTIA_ENTRY_VAR, System.currentTimeMillis());
}
else
{
player.getVariables().set(KARTIA_PARTY_ENTRY_VAR, System.currentTimeMillis());
}
}
protected boolean checkConditions(L2PcInstance player, int templateId)
{
long lastEntry = 0;
if ((templateId == TEMPLATE_ID_SOLO_85) || (templateId == TEMPLATE_ID_SOLO_90) || (templateId == TEMPLATE_ID_SOLO_95))
{
lastEntry = player.getVariables().getLong(KARTIA_ENTRY_VAR, 0);
}
else
{
lastEntry = player.getVariables().getLong(KARTIA_PARTY_ENTRY_VAR, 0);
}
final Calendar entryResetTime = Calendar.getInstance();
entryResetTime.set(Calendar.HOUR, 6);
entryResetTime.set(Calendar.MINUTE, 30);
entryResetTime.set(Calendar.AM_PM, Calendar.AM);
return lastEntry < entryResetTime.getTimeInMillis();
}
public static void main(String[] args)
{
new KartiasLabyrinth();