Kekropus Quests 40-75.

Contributed by Neanrakyr.
This commit is contained in:
mobius 2015-02-22 01:57:25 +00:00
parent 5d7c341ce8
commit 2a1610b69d
100 changed files with 2516 additions and 0 deletions

View File

@ -0,0 +1,4 @@
<html><body>Andy the Patrol:<br>
What can I do for you?<br>
<button align="left" icon="quest" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Paterson's Disciple Bacon:<br>
This dangerous place... you treat it like your living room. You're my kind of crazy.<br>
<button align="left" icon="quest" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html>

View File

@ -0,0 +1,8 @@
<html>
<head>
<body>Tracker Dokara:
<br>
What's your business here?<br>
<button align="left" icon="quest" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body>
</html>

View File

@ -0,0 +1,4 @@
<html><body>Baron's Personal Escort Eli<br>
Hush! Stay quiet and still. We don't want to get caught.<br>
<Button ALIGN=LEFT ICON="quest" action="bypass -h Quest">Quest</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Guard Kelios:<br>
Everything is fine around here, thanks for asking. I mean, It's normal to have Outlaws swarming everywhere, yes?
<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h Quest">Quest</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Shuvann:<br>
It's sad to see history repeat it self in the Fields of Massacre.<br>
We can only pray it's not too late to avoid the worst.<br>
<button align="left" icon="quest" action="bypass -h npc_%objectId%_Quest">Quest.</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
Ah, you've arrived. I've heard that High Prefect Drikus is paying a lot of attention to you. I'm not surprised. You're the reason for our success.<br>
You probably know already, but that's why I'm giving you this letter. Here is it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30332-02.html">Thank you.</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
What are you waiting for? Go ahead and read the letter.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30332-03.html">What, now? Okay.</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kekropus' Letter:<br>
A secret organization called Embryo is trying to resurrect monsters from the Giant Age. Go to <font color=LEVEL>Captain Bathis</font> in the Town of Gludio and get the detail from him.<br>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Captain Bathis:<br>
Are you done reading? If you continue to help us with our missions, Kekropus will regularly send you letters. Also, from now on, I'll enclose a Scroll of Escape in the envelope. It'll help you get to places easier.
<br>
Does that sound agreeable?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30332-05.html">Reasonable enough.</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
I've got another mission for you, a rather important one actually. I know you'll do your best. Let's get you to the mission Area.<br>
Go to <font color=LEVEL>Heine</font> and talk to Guard Captain Gosta about the mission. You'll find the scroll very useful. Good luck.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Prefect Drikus:<br>
Do you feel stronger after the class transfer? Good, but now is not time to be complacent. There is something you must do in order to resolve the crisis in Aden.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30505-02.htm">I'm listening.</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>High Prefect Drikus:<br>
As you know, the advent of Shilen was a disaster for every life. So, every race's leaders promised to work together, getting over their past feuding. Now, they can meet any impending threat.<br>
Kekropus, the Great Hierarch of Kamaels gave me informations about the great threat of all and asked me to recommend a trustworthy person to him.<br>
You've always done a great job for us, so the task is yours. Will you accept it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30505-03.html">Sure.</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>High Prefect Drikus:<br>
Good decision.<br>
What you need to do is very simple. Go to <font color=LEVEL>Captain Bathis</font> in the Town of Gludio first. He has a letter for you. Read it and he will tell you what to do next.<br>
May the Flames of Pa'agrio illuminate your future!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Prefect Drikus:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Prefect Drikus:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Gosta:<br>
What brings you here?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30916-02.html">Do you remember Kekropus?</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Gosta:<br>
Ah, I see. Kekropus spread the word to each territory that an organization called Embryo is trying to grow monsters from the seeds of this race. So just about everybody, including us, was looking out for anything suspicious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 30916-03.html">I'm listening</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Gosta:<br>
Not too long ago, we spotted a group of people with some strange equipment near Alligator Island. We sent several people over there to investigate. Still,
they could use your help. Meet Baron's Personal Escort Eli, but do so secretly.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Baron's Personal Escort Eli:<br>
Who are you? Who has sent you? You'd better give me a good answer.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10390_KekropusLetter 33858-02.html">I came according to Kekropus' Letter.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Baron's Personal Escort Eli:<br>
So you're the one who's supposed to help me?<br1>
Good, good. Let's have you hide first, shall we?<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Alligator Island. You can get the next item, Kekropus' Letter, at Lv. 46.
</font>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>The Kekropus's Letter<br>
Remember the fragment you discovered last time?<br>
Trace the delegation's steps-to <font color=LEVEL>Gludio Village.</font><br1>
For details, go to <font color=LEVEL>High Priest Drikus</font> in the <font color=LEVEL>Town of Gludio.</font><br>
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10390_Teleport">Here I go!</button>
</body></html>

View File

@ -0,0 +1,287 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10390_KekropusLetter;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10390_KekropusLetter extends Quest implements IBypassHandler
{
// NPCs
private static final int DRIKUS = 30505;
private static final int BATHIS = 30332;
private static final int GOSTA = 30916;
private static final int ELI = 33858;
// Items
private static final ItemHolder ENCHANT_WEAPON_C = new ItemHolder(951, 3);
private static final ItemHolder SCROLL_OF_ESCAPE_ALIGATOR_ISLAND = new ItemHolder(37025, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 21);
// Level Condition
private static final int MIN_LEVEL = 40;
private static final int MAX_LEVEL = 45;
// Others
private static final Location TELE_LOCATION = new Location(-12712, 124902, -3133);
private static final String[] COMMAND =
{
"Q10390_Teleport"
};
public Q10390_KekropusLetter()
{
super(10390, Q10390_KekropusLetter.class.getSimpleName(), "Kekropus Letter");
addStartNpc(DRIKUS);
addTalkId(DRIKUS, BATHIS, GOSTA, ELI);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "30505-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30505-03.html":
{
qs.startQuest();
htmltext = event;
break;
}
case "30332-03.html":
{
if (qs.isCond(1))
{
qs.setCond(2);
htmltext = event;
}
break;
}
case "30332-05.html":
{
if (qs.isCond(2))
{
qs.setCond(3);
htmltext = event;
}
break;
}
case "30916-03.html":
{
if (qs.isCond(3))
{
qs.setCond(4);
giveItems(player, SCROLL_OF_ESCAPE_ALIGATOR_ISLAND);
htmltext = event;
}
break;
}
case "33858-02.html":
{
if (qs.isCond(4))
{
giveItems(player, ENCHANT_WEAPON_C);
giveItems(player, STEEL_DOOR_GUILD);
addExpAndSp(player, 370440, 88);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_46, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "30505-02.htm":
case "30332-02.html":
case "30916-02.html":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "30505-noErtheia.html";
}
switch (npc.getId())
{
case DRIKUS:
{
if (qs.isCreated())
{
htmltext = "30505-01.htm";
}
else if (qs.isStarted())
{
htmltext = "30505-03.html";
}
break;
}
case BATHIS:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "30332-01.html";
break;
}
case 2:
{
htmltext = "30332-04.html";
break;
}
case 3:
{
htmltext = "30332-05.html";
break;
}
}
break;
}
case GOSTA:
{
switch (qs.getCond())
{
case 3:
{
htmltext = "30916-01.html";
break;
}
case 4:
{
htmltext = "30916-03.html";
break;
}
}
break;
}
case ELI:
{
if (qs.isCond(4))
{
htmltext = "33858-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10390_KekropusLetter/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Head Blacksmith FLutter:<br>
What's with you? You look so serious.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10393_KekropusLetter_AClueCompleted 30677-02.html">Do you remember Kekropus?</button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Head Blacksmith FLutter:<br>
You'll help? Well, who can say no to such an offer? HaHa! Tell you what. Since you offered to help, I'll try putting together some of those fragments for you.
<br>
First, go to
<font color=LEVEL>Guard Kelios </font>
in
<font color=LEVEL>Outlaw Forest </font>
and get the details.
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Head Blacksmith FLutter:<br>
It will just take a moment, sorry for the wait.
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Outlaw Forest. You can get the next item, Kekropus' Letter, at Lv. 52.
</font>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Head Blacksmith FLutter:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Head Blacksmith FLutter:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Guard Kelios:<br>
What brings you here?
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10393_KekropusLetter_AClueCompleted 33862-02.html">I have a message from Blacksmith Flutter.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Giant Minion Eblune:<br>
I knew it! Not that it matters. I really don't care if you're a Patrol Member or not. I just need an extra hand. I've got a mission for you.
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Forsaken Plains. You can get the next item, Kekropus' Letter, at Lv. 61.
</font>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>The Kekropus's Letter<br>
Innadril is in danger from Iason Heine. Go to the Town of Oren and ask <font color=LEVEL>Head Blacksmith Flutter</font> to combine Fragments. Thank you in advance.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10393_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,212 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10393_KekropusLetter_AClueCompleted;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10393_KekropusLetter_AClueCompleted extends Quest implements IBypassHandler
{
// Npcs
private static final int FLUTTER = 30677;
private static final int KELIOS = 33862;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_OUTLAW_FOREST = new ItemHolder(37026, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 15);
private static final ItemHolder ENCHANT_ARMOR_C = new ItemHolder(952, 4);
// Level Condition
private static final int MIN_LEVEL = 46;
private static final int MAX_LEVEL = 51;
// Other
private static final Location TELE_LOCATION = new Location(83697, 55446, -1512);
private static final String[] COMMAND =
{
"Q10393_Teleport"
};
public Q10393_KekropusLetter_AClueCompleted()
{
super(10393, Q10393_KekropusLetter_AClueCompleted.class.getSimpleName(), "Krekopus Letter: A Clue Completed");
addStartNpc(FLUTTER);
addTalkId(FLUTTER, KELIOS);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "30677-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30677-02.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_OUTLAW_FOREST);
htmltext = event;
break;
}
case "33862-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_ARMOR_C);
addExpAndSp(player, 483840, 116);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_52, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "30677-noErtheia.html";
}
switch (npc.getId())
{
case FLUTTER:
{
if (qs.isCreated())
{
htmltext = "30677-01.htm";
}
else if (qs.isStarted())
{
htmltext = "30677-03.html";
}
break;
}
case KELIOS:
{
if (qs.isCond(1))
{
htmltext = "33862-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10393_KekropusLetter_AClueCompleted/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Captain Mouen:<br>
Good to see you again. I guess you came here because you got a letter from Kekropus.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10397_KekropusLetter_ASuspiciousBadge 30196-02.htm">Yes</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Captain Mouen:<br>
You probably got the gist from Kekropus's Letter but the <font color=LEVEL> Sea of Spores</font> is where you have to go.
We've dispatched soldiers to tighten security, but I don't think that is enough.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10397_KekropusLetter_ASuspiciousBadge 30196-03.html">What do you need?</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Captain Mouen:<br>
For more information, go to talk to<font color=LEVEL> Andy the Patrol</font> at the <font color=LEVEL>Sea of Spores.</font> Good luck then.
<br>
To reach the Sea of Spores, use this Scroll of Escape: Sea of Spores, or ask a Gatekeeper for help.
<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mouen:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mouen:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Patrol Andy:<br>
Here in the Sea of Spores, we're dependent upon a force field built by the Ivory Tower wizards.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10397_KekropusLetter_ASuspiciousBadge 33845-02.html">Do you know anything about the Suspicious Badges being found in the area?</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Patrol Andy:<br>
I appreciate you coming all the way out here. Hopefully you can get to the botton of this.
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Sea of Spores. You can get the next item, Kekropus' Letter, at Lv. 58.
</font>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>The Kekropus's Letter<br>
A Suspicious Badge was discovered in the <font color=LEVEL>Sea of Spores</font>. Go to <font color=LEVEL>Captain Mouen</font> in the <font color=LEVEL>Town of Oren</font> for details.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10397_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,217 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10397_KekropusLetter_ASuspiciousBadge;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10397_KekropusLetter_ASuspiciousBadge extends Quest implements IBypassHandler
{
// Npcs
private static final int MOUEN = 30196;
private static final int ANDY = 33845;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_SEA_OF_SPORES = new ItemHolder(37027, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 20);
private static final ItemHolder ENCHANT_WEAPON_B = new ItemHolder(947, 2);
// Level Condition
private static final int MIN_LEVEL = 52;
private static final int MAX_LEVEL = 57;
// Others
private static final Location TELE_LOCATION = new Location(80951, 56382, -1552);
private static final String[] COMMAND =
{
"Q10397_Teleport"
};
public Q10397_KekropusLetter_ASuspiciousBadge()
{
super(10397, Q10397_KekropusLetter_ASuspiciousBadge.class.getSimpleName(), "Kekropus Letter: A Suspicious Badge");
addStartNpc(MOUEN);
addTalkId(MOUEN, ANDY);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "30196-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30196-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_SEA_OF_SPORES);
htmltext = event;
break;
}
case "33845-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_WEAPON_B);
addExpAndSp(player, 635250, 152);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_58, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "30196-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "30196-noErtheia.html";
}
switch (npc.getId())
{
case MOUEN:
{
if (qs.isCreated())
{
htmltext = "30196-01.htm";
}
else if (qs.isStarted())
{
htmltext = "30196-03.html";
}
break;
}
case ANDY:
{
if (qs.isCond(1))
{
htmltext = "33845-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10397_KekropusLetter_ASuspiciousBadge/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Paterson:<br>
Eh, are you looking for spiritual help? I may be in a place like this, but I am no priest.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10401_KekropusLetter_DecodingTheBadge 33864-02.htm">Do you remember Kekropus?</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Paterson:<br>
As, I see. I am a rune scholar who helps out the Giant's minions. From what they sent over, I've found something called <font color=LEVEL> Inverted Ewaz</font>, an ancient text which can harness the power of Gaints.<br>
I'm not sure, but I suspect this was some kind of spell to suppress the Giants' powers. I'd like to find out more.... will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10401_KekropusLetter_DecodingTheBadge 33864-03.html">Me? Well, sure..</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Paterson:<br>
<font color=LEVEL>Giant's Minion Eblune</font> is in the
<font color=LEVEL>Forsaken Plains</font>. I'll need her assistance to complete my research.
<br>
Let me give you a <font color=LEVEL>Scroll of Escape</font>. It will help you get to your next destination easily.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Paterson:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Paterson:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Giant Minion Eblune:<br>
Are you part of the patrol team? Why are you so late? Why did you come alone? You don't look like a Patrol Member to me...
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10401_KekropusLetter_DecodingTheBadge 33865-02.html">Deliver Paterson's message.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Giant Minion Eblune:<br>
I knew it! Not that it matters. I really don't care if you're a Patrol Member or not. I just need an extra hand. I've got a mission for you.
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Forsaken Plains. You can get the next item, Kekropus' Letter, at Lv. 61.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
I've asked <font color=LEVEL>Paterson</font> to decipher marks inscribed on monsters. His scholarly expertise includes written Rune.
Visit him in the <font color=LEVEL> Town of Aden.</font>
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10401_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,217 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10401_KekropusLetter_DecodingTheBadge;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10401_KekropusLetter_DecodingTheBadge extends Quest implements IBypassHandler
{
// Npcs
private static final int PATERSON = 33864;
private static final int EBLUNE = 33865;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_FORSAKEN_PLAINS = new ItemHolder(37028, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 30);
private static final ItemHolder ENCHANT_ARMOR_B = new ItemHolder(948, 5);
// Level Condition
private static final int MIN_LEVEL = 58;
private static final int MAX_LEVEL = 60;
// Others
private static final Location TELE_LOCATION = new Location(147619, 24681, -1984);
private static final String[] COMMAND =
{
"Q10401_Teleport"
};
public Q10401_KekropusLetter_DecodingTheBadge()
{
super(10401, Q10401_KekropusLetter_DecodingTheBadge.class.getSimpleName(), "Kekropus Letter: Decoding The Badge");
addStartNpc(PATERSON);
addTalkId(PATERSON, EBLUNE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33864-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "33864-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_FORSAKEN_PLAINS);
htmltext = event;
break;
}
case "33865-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_ARMOR_B);
addExpAndSp(player, 731010, 175);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_61, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "33864-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "33864-noErtheia.html";
}
switch (npc.getId())
{
case PATERSON:
{
if (qs.isCreated())
{
htmltext = "33864-01.htm";
}
else if (qs.isStarted())
{
htmltext = "33864-03.html";
}
break;
}
case EBLUNE:
{
if (qs.isCond(1))
{
htmltext = "33865-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10401_KekropusLetter_DecodingTheBadge/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Paterson:<br>
What do you want? Oh, sorry, of course I know you. You helped me with research. Wait, you're not? Sorry, I'm a bit confused right now. I've been so busy with my research lately...
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10404_KekropusLetter_AHiddenMeaning 33864-02.htm">Do you remember Kekropus?</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Paterson:<br>
Kekropus... Kekropus. SOunds familiar, But since you're here, I could use some help. From the clues and evidence I've assembled, I found out that Embryo neither works for Shilien not uses her power. What they want is... the power of Giants!
<br>
I am now convinced that we will soon find some complicated plan that explains all of this. But for now we need some answers in order to stop Embryo
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10404_KekropusLetter_AHiddenMeaning 33864-03.html">Oh this we agree.</button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Paterson:<br>
If you go to the
<font color=LEVEL>Field of Massacre</font>, you'll find
<font color=LEVEL>Shuvann</font>. He' not a great fighter, but has more knowledge about that place than anybody. I we are going to stop Embryo, you must help him. If you use the enclosed
<font color=LEVEL>Scroll of Escape</font>,
You'll get there much quicker.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Paterson:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Paterson:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Shuvann:<br>
Did Paterson send you? I can't think of any other reason anyone would talk to me.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10404_KekropusLetter_AHiddenMeaning 33867-02.html">Yes</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Shuvann:<br>
Without so many adventurers passing through, this area would be unlivable. Let's take a short break before we talk about your mission.
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Field of Massacre. You can get the next item, Kekropus' Letter, at Lv. 65.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
Rumor has it the inverted <font color=LEVEL>Ewaz</font> -- the Rune language!-- was discovered inside Karum's Core. Embryo must be involved.
Please hurry to <font color=LEVEL>Paterson</font> in <font color=LEVEL>the Town of Aden.</font>
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10404_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,218 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10404_KekropusLetter_AHiddenMeaning;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10404_KekropusLetter_AHiddenMeaning extends Quest implements IBypassHandler
{
// Npcs
private static final int PATERSON = 33864;
private static final int SHUVANN = 33867;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_FIELDS_OF_MASSACRE = new ItemHolder(37029, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 71);
private static final ItemHolder ENCHANT_WEAPON_A = new ItemHolder(729, 1);
// Level Condition
private static final int MIN_LEVEL = 61;
private static final int MAX_LEVEL = 64;
// Others
private static final Location TELE_LOCATION = new Location(147619, 24681, -1984);
private static final String[] COMMAND =
{
"Q10404_Teleport"
};
public Q10404_KekropusLetter_AHiddenMeaning()
{
super(10404, Q10404_KekropusLetter_AHiddenMeaning.class.getSimpleName(), "Kekropus Letter: A Hidden Meaning");
addStartNpc(PATERSON);
addTalkId(PATERSON, SHUVANN);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33864-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "33864-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_FIELDS_OF_MASSACRE);
htmltext = event;
break;
}
case "33867-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_WEAPON_A);
addExpAndSp(player, 807240, 193);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_65, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "33864-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "33864-noErtheia.html";
}
switch (npc.getId())
{
case PATERSON:
{
if (qs.isCreated())
{
htmltext = "33864-01.htm";
}
else if (qs.isStarted())
{
htmltext = "33864-03.html";
}
break;
}
case SHUVANN:
{
if (qs.isCond(1))
{
htmltext = "33867-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10404_KekropusLetter_AHiddenMeaning/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Captain Mathias:<br>
Nice to meet you. <font color=LEVEL>Kekropus</font> promised me that he would send me someone trustworthy. I guess he kept his word. You probably know what is going on after reading Kekropus letter, but let me tell you more details.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10408_KekropusLetter_TheSwampOfScream 31340-02.htm">Got it</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Mathias:<br>
Orc Trackers were chasing after a suspicious group when they split up toward the Swamp of Scream and the Forest of the Dead. The Orc Trackers also divided into two groups and chased after them separately. But now they are asking for help. I think both of the groups have run into problems.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10408_KekropusLetter_TheSwampOfScream 31340-03.html">So where should I go?</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Mathias:<br>
You're a brave one, aren't you? Go to the <font color=LEVEL>Swamp of Scream</font> and meet <font color=LEVEL>Tracker Dokara</font>
Get the details from him and help him with whatever he needs. I look forward to hearing the result.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
Sorry, you are a Mage, this quest is not for you.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Tracker Dokara:<br>
Me? I'm Dokara. An Orc Tracker. Since Shilen and her followees ruined the world, I have been chasing them. For revenge!
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10408_KekropusLetter_TheSwampOfScream 33847-02.html">You look injured</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Tracker Dokara:<br>
It was a trap! But no more. The Suspicious Vagabond will never harm another. Not if you go after him
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Swamp of Scream. You can get the next item, Kekropus' Letter, at Lv. 70.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
A group of suspicious people were seen in the
<font color=LEVEL>Swamp of Scream</font>, a part of the Rune territory. Go to <font color=LEVEL>Captain Mathias</font> in the <font color=LEVEL>Town of Rune</font> for details.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10408_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,222 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10408_KekropusLetter_TheSwampOfScream;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10408_KekropusLetter_TheSwampOfScream extends Quest implements IBypassHandler
{
// Npcs
private static final int MATHIAS = 31340;
private static final int DOKARA = 33847;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_SEA_OF_SPORES = new ItemHolder(37027, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 91);
private static final ItemHolder ENCHANT_WEAPON_A = new ItemHolder(729, 2);
// Level Condition
private static final int MIN_LEVEL = 65;
private static final int MAX_LEVEL = 69;
// Others
private static final Location TELE_LOCATION = new Location(42713, -48068, -801);
private static final String[] COMMAND =
{
"Q10408_Teleport"
};
public Q10408_KekropusLetter_TheSwampOfScream()
{
super(10408, Q10408_KekropusLetter_TheSwampOfScream.class.getSimpleName(), "Kekropus Letter: The Swamp Of Scream");
addStartNpc(MATHIAS);
addTalkId(MATHIAS, DOKARA);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "31340-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "31340-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_SEA_OF_SPORES);
htmltext = event;
break;
}
case "33847-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_WEAPON_A);
addExpAndSp(player, 942690, 226);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_70, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "31340-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "31340-noErtheia.html";
}
if (player.isMageClass())
{
return "31340-noMage.html";
}
switch (npc.getId())
{
case MATHIAS:
{
if (qs.isCreated())
{
htmltext = "31340-01.htm";
}
else if (qs.isStarted())
{
htmltext = "31340-03.html";
}
break;
}
case DOKARA:
{
if (qs.isCond(1))
{
htmltext = "33847-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA) && !player.isMageClass())
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10408_KekropusLetter_TheSwampOfScream/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Captain Mathias:<br>
[TODO: NO DIALOGUE]
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10411_KekropusLetter_TheForestOfTheDead 31340-02.htm">Got it</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Mathias:<br>
[TODO: NO DIALOGUE]
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10411_KekropusLetter_TheForestOfTheDead 31340-03.html">So where should I go?</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Mathias:<br>
[TODO: NO DIALOGUE]<br>
You're a brave one, aren't you? Go to the <font color=LEVEL>The Forest Of The Dead</font> and meet <font color=LEVEL>Tracker Hutaba</font>
Get the details from him and help him with whatever he needs. I look forward to hearing the result.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Mathias:<br>
Sorry, you are a Warrior, this quest is not for you.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Tracker Hutaba:<br>
[TODO: NO DIALOGUE]
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10411_KekropusLetter_TheForestOfTheDead 33849-02.html">[TODO: NO DIALOGUE]</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Tracker Hutaba:<br>
[TODO: NO DIALOGUE]
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on The Forest Of The Dead. You can get the next item, Kekropus' Letter, at Lv. 70.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
A group of suspicious people were seen in the
<font color=LEVEL>The Forest Of The Dead</font>, a part of the Rune territory. Go to <font color=LEVEL>Captain Mathias</font> in the <font color=LEVEL>Town of Rune</font> for details.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10411_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,226 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10411_KekropusLetter_TheForestOfTheDead;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10411_KekropusLetter_TheForestOfTheDead extends Quest implements IBypassHandler
{
// Npcs
private static final int MATHIAS = 31340;
private static final int HUTABA = 33849;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_THE_FOREST_OF_THE_DEAD = new ItemHolder(37031, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 91);
private static final ItemHolder ENCHANT_WEAPON_A = new ItemHolder(729, 2);
// Level Condition
private static final int MIN_LEVEL = 65;
private static final int MAX_LEVEL = 69;
// Others
private static final Location TELE_LOCATION = new Location(42713, -48068, -801);
private static final String[] COMMAND =
{
"Q10411_Teleport"
};
public Q10411_KekropusLetter_TheForestOfTheDead()
{
super(10411, Q10411_KekropusLetter_TheForestOfTheDead.class.getSimpleName(), "Kekropus Letter: The Forest of The Dead");
addStartNpc(MATHIAS);
addTalkId(MATHIAS, HUTABA);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "31340-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "31340-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_THE_FOREST_OF_THE_DEAD);
htmltext = event;
break;
}
case "33849-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_WEAPON_A);
addExpAndSp(player, 942690, 226);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_70, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "31340-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "31340-noErtheia.html";
}
if (!player.isMageClass())
{
return "31340-noWarrior.html";
}
switch (npc.getId())
{
case MATHIAS:
{
if (qs.isCreated())
{
htmltext = "31340-01.htm";
}
else if (qs.isStarted())
{
htmltext = "31340-03.html";
}
break;
}
case HUTABA:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33849-01.html";
break;
}
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA) && player.isMageClass())
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10411_KekropusLetter_TheForestOfTheDead/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Captain Andrei:<br>
Nice to meet you. <font color=LEVEL>Kekropus</font> promised me that he would send me someone trustworthy. I guess he kept his word. You probably know what is going on after reading Kekropus letter, but let me tell you more details.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10414_KekropusLetter_WithCourage 31292-02.htm">Got it</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Andrei:<br>
Orc Trackers were chasing after a suspicious group when they split up toward the Wall of Argos. The Orc Trackers also divided into two groups and chased after them separately. But now they are asking for help. I think both of the groups have run into problems.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10414_KekropusLetter_WithCourage 31292-03.html">So where should I go?</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Andrei:<br>
You're a brave one, aren't you? Go to the <font color=LEVEL>Wall of Argos</font> and meet <font color=LEVEL>Janitt</font>
Get the details from him and help him with whatever he needs. I look forward to hearing the result.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
Sorry, you are a Mage, this quest is not for you.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Giant's Minion Janitt:<br>
Me? I'm Janitt. The Giant's Minion. Since Shilen and her followees ruined the world, I have been chasing them. For revenge!
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10414_KekropusLetter_WithCourage 33851-02.html">You look injured</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Giant's Minion Janitt:<br>
It was a trap! But no more. The Suspicious Vagabond will never harm another. Not if you go after him
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Wall of Argos. You can get the next item, Kekropus' Letter, at Lv. 76.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
A group of suspicious people were seen in the
<font color=LEVEL>Wall of Argos</font>, a part of the Goddard territory. Go to <font color=LEVEL>Captain Andrei</font> in the <font color=LEVEL>Town of Goddard</font> for details.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10408_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,222 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10414_KekropusLetter_WithCourage;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10414_KekropusLetter_WithCourage extends Quest implements IBypassHandler
{
// Npcs
private static final int ANDREI = 31292;
private static final int JANITT = 33851;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_WALL_OF_ARGOS = new ItemHolder(37032, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 123);
private static final ItemHolder ENCHANT_ARMOR_A = new ItemHolder(730, 5);
// Level Condition
private static final int MIN_LEVEL = 70;
private static final int MAX_LEVEL = 75;
// Others
private static final Location TELE_LOCATION = new Location(147404, -56707, -2784);
private static final String[] COMMAND =
{
"Q10414_Teleport"
};
public Q10414_KekropusLetter_WithCourage()
{
super(10414, Q10414_KekropusLetter_WithCourage.class.getSimpleName(), "Kekropus Letter: With Courage");
addStartNpc(ANDREI);
addTalkId(ANDREI, JANITT);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "31292-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "31292-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_WALL_OF_ARGOS);
htmltext = event;
break;
}
case "33851-02.html":
{
if (qs.getCond() == 1)
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_ARMOR_A);
addExpAndSp(player, 1088640, 261);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_76, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "31292-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "31292-noErtheia.html";
}
if (player.isMageClass())
{
return "31292-noMage.html";
}
switch (npc.getId())
{
case ANDREI:
{
if (qs.isCreated())
{
htmltext = "31292-01.htm";
}
else if (qs.isStarted())
{
htmltext = "31292-03.html";
}
break;
}
case JANITT:
{
if (qs.isCond(1))
{
htmltext = "33851-01.html";
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA) && !player.isMageClass())
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10414_KekropusLetter_WithCourage/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -0,0 +1,5 @@
<html><body>Captain Andrei:<br>
Nice to meet you. <font color=LEVEL>Kekropus</font> promised me that he would send me someone trustworthy. I guess he kept his word. You probably know what is going on after reading Kekropus letter, but let me tell you more details.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10415_KekropusLetter_WithWisdom 31292-02.htm">Got it</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Andrei:<br>
Orc Trackers were chasing after a suspicious group when they split up toward the Wall of Argos. The Orc Trackers also divided into two groups and chased after them separately. But now they are asking for help. I think both of the groups have run into problems.
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10415_KekropusLetter_WithWisdom 31292-03.html">So where should I go?</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Andrei:<br>
You're a brave one, aren't you? Go to the <font color=LEVEL>Wall of Argos</font> and meet <font color=LEVEL>Janitt</font>
Get the details from him and help him with whatever he needs. I look forward to hearing the result.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
No you are Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
Your level is wrong for this quest.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Captain Andrei:<br>
Sorry, you are a Mage, this quest is not for you.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Giant's Minion Janitt:<br>
Me? I'm Janitt. The Giant's Minion. Since Shilen and her followees ruined the world, I have been chasing them. For revenge!
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10415_KekropusLetter_WithWisdom 33851-02.html">You look injured</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Giant's Minion Janitt:<br>
It was a trap! But no more. The Suspicious Vagabond will never harm another. Not if you go after him
<br>
<font color=LEVEL>
- Note: You can develop yourself through quests and hunting at the hunting ground on Wall of Argos. You can get the next item, Kekropus' Letter, at Lv. 76.
</font>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>The Kekropus's Letter<br>
A group of suspicious people were seen in the
<font color=LEVEL>Wall of Argos</font>, a part of the Goddard territory. Go to <font color=LEVEL>Captain Andrei</font> in the <font color=LEVEL>Town of Goddard</font> for details.
<br>
(A <font color=LEVEL>Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)
<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Q10415_Teleport">I will go right away this scroll.</button>
</body></html>

View File

@ -0,0 +1,223 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10415_KekropusLetter_WithWisdom;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.handler.BypassHandler;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* @author Neanrakyr
*/
public class Q10415_KekropusLetter_WithWisdom extends Quest implements IBypassHandler
{
// Npcs
private static final int ANDREI = 31292;
private static final int JANITT = 33851;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_WALL_OF_ARGOS = new ItemHolder(37032, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 123);
private static final ItemHolder ENCHANT_ARMOR_A = new ItemHolder(730, 5);
// Level Condition
private static final int MIN_LEVEL = 70;
private static final int MAX_LEVEL = 75;
// Others
private static final Location TELE_LOCATION = new Location(147404, -56707, -2784);
private static final String[] COMMAND =
{
"Q10415_Teleport"
};
public Q10415_KekropusLetter_WithWisdom()
{
super(10415, Q10415_KekropusLetter_WithWisdom.class.getSimpleName(), "Kekropus Letter: With Wisdom");
addStartNpc(ANDREI);
addTalkId(ANDREI, JANITT);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "31292-noLevel.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "31292-03.html":
{
qs.startQuest();
giveItems(player, SCROLL_OF_ESCAPE_WALL_OF_ARGOS);
htmltext = event;
break;
}
case "33851-02.html":
{
if (qs.isCond(1))
{
giveItems(player, STEEL_DOOR_GUILD);
giveItems(player, ENCHANT_ARMOR_A);
addExpAndSp(player, 1088640, 261);
showOnScreenMsg(player, NpcStringId.GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_THE_NEXT_LETTER_FROM_KEKROPUS_AT_LV_76, ExShowScreenMessage.TOP_CENTER, 4500);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "31292-02.htm":
{
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCompleted())
{
return getAlreadyCompletedMsg(player);
}
if (player.getRace() == Race.ERTHEIA)
{
return "31292-noErtheia.html";
}
if (player.isMageClass())
{
return "31292-noMage.html";
}
switch (npc.getId())
{
case ANDREI:
{
if (qs.isCreated())
{
htmltext = "31292-01.htm";
}
else if (qs.isStarted())
{
htmltext = "31292-03.html";
}
break;
}
case JANITT:
{
if (qs.isCond(1))
{
htmltext = "33851-01.html";
break;
}
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA) && !player.isMageClass())
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/quests/Q10415_KekropusLetter_WithWisdom/Announce.html"));
player.sendPacket(html);
}
return;
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() == Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TELE_LOCATION);
}
return true;
}
@Override
public String[] getBypassList()
{
return COMMAND;
}
}

View File

@ -190,6 +190,15 @@ import quests.Q10325_SearchingForNewPower.Q10325_SearchingForNewPower;
import quests.Q10326_RespectYourElders.Q10326_RespectYourElders;
import quests.Q10331_StartOfFate.Q10331_StartOfFate;
import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted;
import quests.Q10397_KekropusLetter_ASuspiciousBadge.Q10397_KekropusLetter_ASuspiciousBadge;
import quests.Q10401_KekropusLetter_DecodingTheBadge.Q10401_KekropusLetter_DecodingTheBadge;
import quests.Q10404_KekropusLetter_AHiddenMeaning.Q10404_KekropusLetter_AHiddenMeaning;
import quests.Q10408_KekropusLetter_TheSwampOfScream.Q10408_KekropusLetter_TheSwampOfScream;
import quests.Q10411_KekropusLetter_TheForestOfTheDead.Q10411_KekropusLetter_TheForestOfTheDead;
import quests.Q10414_KekropusLetter_WithCourage.Q10414_KekropusLetter_WithCourage;
import quests.Q10415_KekropusLetter_WithWisdom.Q10415_KekropusLetter_WithWisdom;
import quests.Q10501_ZakenEmbroideredSoulCloak.Q10501_ZakenEmbroideredSoulCloak;
import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak;
import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak;
@ -389,6 +398,15 @@ public class QuestMasterHandler
Q10326_RespectYourElders.class,
Q10331_StartOfFate.class,
Q10338_SeizeYourDestiny.class,
Q10390_KekropusLetter.class,
Q10393_KekropusLetter_AClueCompleted.class,
Q10397_KekropusLetter_ASuspiciousBadge.class,
Q10401_KekropusLetter_DecodingTheBadge.class,
Q10404_KekropusLetter_AHiddenMeaning.class,
Q10408_KekropusLetter_TheSwampOfScream.class,
Q10411_KekropusLetter_TheForestOfTheDead.class,
Q10414_KekropusLetter_WithCourage.class,
Q10415_KekropusLetter_WithWisdom.class,
Q10501_ZakenEmbroideredSoulCloak.class,
Q10502_FreyaEmbroideredSoulCloak.class,
Q10503_FrintezzaEmbroideredSoulCloak.class,