Reworked quest Request of the Seeker (10363).

Contributed by gyo.
This commit is contained in:
MobiusDev
2016-02-14 14:55:13 +00:00
parent 3f76e7c7bd
commit 1ca1dc52a9
18 changed files with 169 additions and 94 deletions

View File

@@ -1,5 +1,5 @@
<html><body>Nagel:<br>
Do you hear that?<br>
Do you hear that?<br1>
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>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-02.htm">"What do you hear exactly?"</Button>
</body></html>

View File

@@ -1,6 +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>
I can hear the cries of the people who've died here... the cries of the soldiers who were sacrificed to defend their 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>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-03.htm">"I'll try."</Button>
</body></html>

View File

@@ -1,5 +1,6 @@
<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>.)
Thank you!<br1>
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>
You must not <font color="LEVEL">smile or dance</font>. Remember that.<br>
(To show your grief, select a <font color="LEVEL">corpse</font>, and open your <font color="LEVEL">Action Window (Alt + C)</font>, then click <font color="LEVEL">Sorrow</font>.)
</body></html>

View File

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

View File

@@ -1,7 +1,7 @@
<html><body>Nagel:<br>
Thank you!<br>
Thank you!<br1>
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>
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.<br1>
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>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10363_RequestOfTheSeeker 33450-06.html">"Of course."</Button>
</body></html>

View File

@@ -1,4 +1,4 @@
<html><body>Nagel:<br>
Thank you!<br>
Thank you!<br1>
<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>Nagel:<br>
The sounds haven't gone away, but at least they are much quieter now than they were before.<br>
(You have already completed the quest)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Nagel:<br>
Please... help us.<br>
(Only characters between level 10-20, and who have completed the "Verification of Ranger" quest, may start this quest)
</body></html>

View File

@@ -1,4 +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>
Did you hear crying on your way here? I think the noises have died down, but maybe 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

@@ -1,6 +1,6 @@
<html><body>Celin:<br>
You have? Oh... oh thank you!<br>
You have? Oh... oh thank you!<br1>
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>
<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>
Things are much better now, all thanks to you!<br>
(The quest has already been completed)
</body></html>

View File

@@ -16,6 +16,7 @@
*/
package quests.Q10363_RequestOfTheSeeker;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -29,7 +30,7 @@ import quests.Q10362_CertificationOfTheSeeker.Q10362_CertificationOfTheSeeker;
/**
* Request of the Seeker (10363)
* @author spider
* @author spider, gyo
*/
public class Q10363_RequestOfTheSeeker extends Quest
{
@@ -43,16 +44,25 @@ public class Q10363_RequestOfTheSeeker extends Quest
32963,
32964
};
// Monsters
private static final int CRAWLER = 22991;
private static final int STALKER = 22992;
private static final int RESURRECTED_VENGEFUL_SPIRIT1 = 19157;
private static final int RESURRECTED_VENGEFUL_SPIRIT2 = 19158;
// 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);
// Social Action IDs
private static final int LAUGH = 10;
private static final int DANCE = 12;
private static final int SORROW = 13;
// Others
private static final int SORROW_ID = 13;
private static final int MIN_LEVEL = 12;
private static final int MAX_LEVEL = 20;
private static final int distanceLimit = 70;
public Q10363_RequestOfTheSeeker()
{
@@ -60,8 +70,8 @@ public class Q10363_RequestOfTheSeeker extends Quest
addStartNpc(NAGEL);
addTalkId(NAGEL, CELIN);
addSocialActionSeeId(CORPSES);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "no_level.htm");
addCondCompletedQuest(Q10362_CertificationOfTheSeeker.class.getSimpleName(), "no_prequest.html");
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33450-08.htm");
addCondCompletedQuest(Q10362_CertificationOfTheSeeker.class.getSimpleName(), "33450-08.htm");
}
@Override
@@ -114,6 +124,11 @@ public class Q10363_RequestOfTheSeeker extends Quest
}
break;
}
case "life_over":
{
npc.deleteMe();
return null;
}
}
return htmltext;
}
@@ -135,6 +150,10 @@ public class Q10363_RequestOfTheSeeker extends Quest
switch (qs.getCond())
{
case 1:
case 2:
case 3:
case 4:
case 5:
{
htmltext = npc.getId() == NAGEL ? "33450-04.html" : getNoQuestMsg(player);
break;
@@ -154,7 +173,7 @@ public class Q10363_RequestOfTheSeeker extends Quest
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
htmltext = npc.getId() == NAGEL ? "33450-07.html" : "33451-04.html";
break;
}
}
@@ -164,47 +183,107 @@ public class Q10363_RequestOfTheSeeker extends Quest
@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()))
if ((caster == null) || (npc == null))
{
switch (qs.getCond())
return super.onSocialActionSee(npc, caster, actionId);
}
if ((caster.getTarget() == null) || !caster.getTarget().isNpc())
{
return super.onSocialActionSee(npc, caster, actionId);
}
final double distance = caster.calculateDistance(caster.getTarget().getLocation(), true, false);
final QuestState qs = getQuestState(caster, false);
if (actionId == SORROW)
{
if (distance > distanceLimit)
{
case 1:
showOnScreenMsg(caster, NpcStringId.YOU_ARE_TOO_FAR_FROM_THE_CORPSE_TO_SHOW_YOUR_CONDOLENCES, ExShowScreenMessage.TOP_CENTER, 10000);
npc.deleteMe();
}
else if (qs != null)
{
switch (qs.getCond())
{
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;
case 1:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_ONE_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(2, true);
npc.deleteMe();
break;
}
case 2:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_SECOND_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(3, true);
npc.deleteMe();
break;
}
case 3:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_THIRD_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(4, true);
npc.deleteMe();
break;
}
case 4:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_FOURTH_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(5, true);
npc.deleteMe();
break;
}
case 5:
{
showOnScreenMsg(caster, NpcStringId.YOU_VE_SHOWN_YOUR_CONDOLENCES_TO_A_FIFTH_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(6, true);
npc.deleteMe();
break;
}
default:
{
showOnScreenMsg(caster, NpcStringId.GRUDGE_OF_YE_SAGIRA_VICTIMS_HAVE_BEEN_RELIEVED_WITH_YOUR_TEARS, ExShowScreenMessage.TOP_CENTER, 10000);
npc.deleteMe();
break;
}
}
}
else
{
showOnScreenMsg(caster, NpcStringId.GRUDGE_OF_YE_SAGIRA_VICTIMS_HAVE_BEEN_RELIEVED_WITH_YOUR_TEARS, ExShowScreenMessage.TOP_CENTER, 10000);
npc.deleteMe();
}
}
else if ((actionId == LAUGH) || (actionId == DANCE))
{
if (distance > distanceLimit)
{
showOnScreenMsg(caster, NpcStringId.YOU_ARE_TOO_FAR_FROM_THE_CORPSE, ExShowScreenMessage.TOP_CENTER, 10000);
npc.deleteMe();
}
else if ((qs == null) || (qs.getState() != State.STARTED))
{
addSpawn(getRandom(1) == 0 ? CRAWLER : STALKER, npc.getLocation());
npc.deleteMe();
}
else
{
showOnScreenMsg(caster, NpcStringId.DON_T_TOY_WITH_THE_DEAD, ExShowScreenMessage.TOP_CENTER, 10000);
L2Npc Spirit1 = addSpawn(RESURRECTED_VENGEFUL_SPIRIT1, new Location(caster.getX() - getRandom(100), caster.getY() - getRandom(100), caster.getZ(), 0));
Spirit1.setCurrentHp(Spirit1.getMaxHp() / 2);
addAttackDesire(Spirit1, caster);
startQuestTimer("life_over", 20000, Spirit1, caster);
L2Npc Spirit2 = addSpawn(RESURRECTED_VENGEFUL_SPIRIT2, new Location(caster.getX() - getRandom(100), caster.getY() - getRandom(100), caster.getZ(), 0));
Spirit2.setCurrentHp(Spirit2.getMaxHp() / 2);
addAttackDesire(Spirit2, caster);
startQuestTimer("life_over", 20000, Spirit2, caster);
npc.deleteMe();
}
}
else
{
addSpawn(getRandom(1) == 0 ? CRAWLER : STALKER, ((L2Npc) caster.getTarget()).getLocation());
npc.deleteMe();
}
return super.onSocialActionSee(npc, caster, actionId);
}

View File

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

View File

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

View File

@@ -1409,9 +1409,10 @@
<height normal="25" />
</collision>
</npc>
<npc id="19157" level="10" type="L2Npc" name="Resurrected Vengeful Spirit">
<npc id="19157" level="10" type="L2Monster" name="Resurrected Vengeful Spirit">
<!-- Source http://l2i-god.gaikotsu.ru/ (Lindvior) -->
<race>HUMANOID</race>
<acquire exp="0" sp="0" />
<stats>
<vitals hp="258" hpRegen="7.5" mp="258" mpRegen="2.7" />
<attack physical="971" magical="663" random="30" critical="4" accuracy="4.75" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
@@ -1420,12 +1421,12 @@
<defence fire="160" water="160" wind="160" earth="160" holy="160" dark="160" />
</attribute>
<speed>
<walk ground="1" />
<run ground="1" />
<walk ground="8" />
<run ground="120" />
</speed>
<hitTime>333</hitTime>
</stats>
<status attackable="false" />
<status attackable="true" />
<skillList>
<skill id="4416" level="6" />
</skillList>
@@ -1435,9 +1436,10 @@
<height normal="18.5" />
</collision>
</npc>
<npc id="19158" level="8" type="L2Npc" name="Resurrected Vengeful Spirit">
<npc id="19158" level="8" type="L2Monster" name="Resurrected Vengeful Spirit">
<!-- Source http://l2i-god.gaikotsu.ru/ (Lindvior) -->
<race>HUMAN</race>
<acquire exp="0" sp="0" />
<stats>
<vitals hp="198" hpRegen="7.5" mp="198" mpRegen="2.7" />
<attack physical="971" magical="663" random="30" critical="4" accuracy="4.75" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
@@ -1446,12 +1448,12 @@
<defence fire="160" water="160" wind="160" earth="160" holy="160" dark="160" />
</attribute>
<speed>
<walk ground="1" />
<run ground="1" />
<walk ground="8" />
<run ground="120" />
</speed>
<hitTime>333</hitTime>
</stats>
<status attackable="false" />
<status attackable="true" />
<skillList>
<skill id="4416" level="14" />
</skillList>

View File

@@ -1541,7 +1541,7 @@
</speed>
<hitTime>398</hitTime>
</stats>
<status attackable="false" />
<status attackable="false" talkable="false" />
<skillList>
<skill id="4416" level="14" />
</skillList>
@@ -1566,7 +1566,7 @@
</speed>
<hitTime>398</hitTime>
</stats>
<status attackable="false" />
<status attackable="false" talkable="false" />
<skillList>
<skill id="4416" level="14" />
</skillList>
@@ -1591,7 +1591,7 @@
</speed>
<hitTime>398</hitTime>
</stats>
<status attackable="false" />
<status attackable="false" talkable="false" />
<skillList>
<skill id="4416" level="14" />
</skillList>
@@ -1616,7 +1616,7 @@
</speed>
<hitTime>398</hitTime>
</stats>
<status attackable="false" />
<status attackable="false" talkable="false" />
<skillList>
<skill id="4416" level="14" />
</skillList>