Quest Request of the Seeker (10363).

Contributed by spider.
This commit is contained in:
MobiusDev
2015-08-12 12:48:47 +00:00
parent cd6d0d7188
commit d5a85ec14c
18 changed files with 391 additions and 68 deletions

View File

@ -0,0 +1,5 @@
<html><body>Nagel:<br>
Do you hear that?<br>
I've heard noises every since I came to this damned place. It's not just me, either. Others have heard it, and it freaks us all out.<br>
<button align=LEFT icon=NORMAL action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-02.htm">"What do you hear exactly?"</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Nagel:<br>
Crying, that's what.<br>
I can hear the cries of the people who've died here... the cries of the soldiers who were sacrificed to defend heir families and friends...<br>
Please - stop their suffering.<br>
<button align=LEFT icon=NORMAL action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-03.htm">"I'll try."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Nagel:<br>
Thank you!<br>
Listen, you'll find the corpses <font color="LEVEL">beyond the cracked gap</font>. You must show <font color="LEVEL">sorrow</font> before <font color="LEVEL"> five corpses</font>, and show them that we grieve for them.<br>
(To show your grief, select a <font color="LEVEL">corpse</font>, and open your Action Window(Alt+C), then click <font color="LEVEL">Sorrow</font>.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Nagel:<br>
You can find <font color="LEVEL">the corpses beyond the cracked gap</font>.
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Nagel:<br>
Thank you!<br>
The pain will hopefully start to subside now... hopefully.<br>
Listen, I have one more favor to ask. The other rangers all knew I was suffering the most, and were all looking out for me, <font color="LEVEL">Celin</font> especially.<br>
Could you tell Celin what's happened? I'd appreciate it...<br>
<button align=LEFT icon=NORMAL action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-06.html">"Of course."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Nagel:<br>
Thank you!<br>
<font color="LEVEL">Celin</font> is in <font color="LEVEL">Exploration Zone 3</font>. Thank you again!
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Celin:<br>
Did you hear crying on your way here? I think the noises have died down, but mayby I'm finally getting used to them...<br>
<button align=LEFT icon=NORMAL action="bypass -h Quest Q10363_RequestOfTheSeeker 33451-02.html">"I've seen them, and paid my condolences.</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Celin:<br>
You have? Oh... oh thank you!<br>
Maybe now we can finally get some rest, and actually get some work done around here! The noises were so upsetting...<br>
Please, tell me how Nagel is? We all found it tough, but he dealt with everything much worse than the rest of us.<br>
<button align=LEFT icon=NORMAL action="bypass -h Quest Q10363_RequestOfTheSeeker 33451-03.html">"Don't worry. He's fine now."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Celin:<br>
Good! I'm glad to hear that.<br>
He hadn't slept or eaten in days, you know. Carry on the way you've been going and you'll be a great ranger.
</body></html>

View File

@ -0,0 +1,214 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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 Server 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.Q10363_RequestOfTheSeeker;
import quests.Q10362_CertificationOfTheSeeker.Q10362_CertificationOfTheSeeker;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
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.model.quest.State;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
/**
* Request of the Seeker (10363)
* @author spider
*/
public class Q10363_RequestOfTheSeeker extends Quest
{
// NPCs
private static final int NAGEL = 33450;
private static final int CELIN = 33451;
private static final int[] CORPSES =
{
32961,
32962,
32963,
32964
};
// Rewards
private static final int ADENA_REWARD = 48000;
private static final int EXP_REWARD = 72000;
private static final int SP_REWARD = 16;
private static final ItemHolder HEALING_POTIONS = new ItemHolder(1060, 100);
private static final ItemHolder WOODEN_HELMET = new ItemHolder(43, 1);
// Others
private static final int SORROW_ID = 13;
private static final int MIN_LEVEL = 12;
private static final int MAX_LEVEL = 20;
public Q10363_RequestOfTheSeeker()
{
super(10363, Q10363_RequestOfTheSeeker.class.getSimpleName(), "Request of the Seeker");
addStartNpc(NAGEL);
addTalkId(NAGEL, CELIN);
addSocialActionSeeId(CORPSES);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "no_level.htm");
addCondCompletedQuest(Q10362_CertificationOfTheSeeker.class.getSimpleName(), "no_prequest.html");
}
@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 "33450-02.htm":
{
htmltext = event;
break;
}
case "33450-03.htm": // start quest
{
qs.startQuest();
htmltext = event;
break;
}
case "33450-06.html":
{
if (qs.getCond() == 6)
{
qs.setCond(7);
htmltext = event;
}
break;
}
case "33451-02.html":
{
htmltext = event;
break;
}
case "33451-03.html":
{
if (qs.isCond(7))
{
giveAdena(player, ADENA_REWARD, true);
addExpAndSp(player, EXP_REWARD, SP_REWARD);
giveItems(player, WOODEN_HELMET);
giveItems(player, HEALING_POTIONS);
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 = null;
switch (qs.getState())
{
case State.CREATED:
{
htmltext = npc.getId() == NAGEL ? "33450-01.htm" : getNoQuestMsg(player);
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
htmltext = npc.getId() == NAGEL ? "33450-04.html" : getNoQuestMsg(player);
break;
}
case 6:
{
htmltext = npc.getId() == NAGEL ? "33450-05.html" : getNoQuestMsg(player);
break;
}
case 7:
{
htmltext = npc.getId() == NAGEL ? "33450-06.html" : "33451-01.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onSocialActionSee(L2Npc npc, L2PcInstance caster, int actionId)
{
final QuestState qs = getQuestState(caster, false);
if ((qs != null) && (qs.getCond() >= 1) && (qs.getCond() < 6) && (actionId == SORROW_ID) && (caster.getTarget().getObjectId() == npc.getObjectId()))
{
switch (qs.getCond())
{
case 1:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_ONE_CORPSE, ExShowScreenMessage.TOP_CENTER, 5000);
qs.setCond(2);
npc.deleteMe();
break;
}
case 2:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_SECOND_CORPSE, ExShowScreenMessage.TOP_CENTER, 5000);
qs.setCond(3);
npc.deleteMe();
break;
}
case 3:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_THIRD_CORPSE, ExShowScreenMessage.TOP_CENTER, 5000);
qs.setCond(4);
npc.deleteMe();
break;
}
case 4:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_FOURTH_CORPSE, ExShowScreenMessage.TOP_CENTER, 5000);
qs.setCond(5);
npc.deleteMe();
break;
}
case 5:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_FIFTH_CORPSE, ExShowScreenMessage.TOP_CENTER, 5000);
qs.setCond(6);
npc.deleteMe();
break;
}
}
}
return super.onSocialActionSee(npc, caster, actionId);
}
}

View File

@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
(Quest available from level 10 to level 20)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>To begin this quest, you need to complete Roles of the Seeker quest first.
</body></html>

View File

@ -206,6 +206,7 @@ import quests.Q10358_DividedSakumPoslof.Q10358_DividedSakumPoslof;
import quests.Q10359_SakumsTrace.Q10359_SakumsTrace;
import quests.Q10361_RolesOfTheSeeker.Q10361_RolesOfTheSeeker;
import quests.Q10362_CertificationOfTheSeeker.Q10362_CertificationOfTheSeeker;
import quests.Q10363_RequestOfTheSeeker.Q10363_RequestOfTheSeeker;
import quests.Q10365_SeekerEscort.Q10365_SeekerEscort;
import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
@ -432,6 +433,7 @@ public class QuestMasterHandler
Q10359_SakumsTrace.class,
Q10361_RolesOfTheSeeker.class,
Q10362_CertificationOfTheSeeker.class,
Q10363_RequestOfTheSeeker.class,
Q10365_SeekerEscort.class,
Q10368_RebellionOfMonsters.class,
Q10390_KekropusLetter.class,