Quest The Seal of Punishment: The Fields (10440).

Contributed by Stayway.
This commit is contained in:
MobiusDev 2016-08-26 19:57:07 +00:00
parent a895ed7809
commit bfc582df43
19 changed files with 341 additions and 1 deletions

View File

@ -92,7 +92,6 @@
10434 The Seal of Punishment: Sel Mahum Training Grounds
10435 Chasing Keltron
10438 Chasing Loygen
10440 The Seal of Punishment: The Fields
10441 Chasing Meccadan
10446 Hit and Run
10447 Timing is Everything

View File

@ -0,0 +1,5 @@
<html><body>Dr. Helvetica:<br>
I have bad news. We might have to drop everything and just take off.... Worst-case scenario, we will be lucky to return alive.<br>
Umm... If you would help me...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32641-02.htm">"What's your problem?"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Dr. Helvetica:<br>
The Seal of Punishment and Shilen. There are signs of the Seal of Punishment here. If it opens, that's the end for all of us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32641-03.htm">"Do you have a solution?"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Dr. Helvetica:<br>
We've been working work with <font color="LEVEL">Giant's Minions</font> to investigate the seal. Only because our lives are at stake, you understand. But the accursed Mucrokians are everywhere, disrupting our investigation. If we could reduce their numbers... Will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32641-04.htm">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Dr. Helvetica:<br>
Yes! That's what I wanted to hear. Get rid of the <font color="LEVEL">Mucrokian Fanatics, Mucrokian Ascetics, Mucrokian Saviors, Mucrokian Prophets, Contaminated Mucrokians and Awakened Mucrokians</font> around here. About <font color="LEVEL">50</font> of them should be fine.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Dr. Helvetica:<br>
Get rid of the <font color="LEVEL">Mucrokian Fanatics, Mucrokian Ascetics, Mucrokian Saviors, Mucrokian Prophets, Contaminated Mucrokians and Awakened Mucrokians</font> around here. About <font color="LEVEL">50</font> of them should be fine.
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Dr. Helvetica:<br>
Unreal! I didn't think anyone could do it. Well done, well done. What would you like for your reward?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9546">15 Fire Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9547">15 Water Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9548">15 Earth Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9549">15 Wind Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9550">15 Dark Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9551">15 Holy Stones</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Dr. Helvetica:<br>
Here you go! You made my day, haha!
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Priestess Athenia:<br>
So I need to tell you up front; it's not safe here. We may have to abandon our efforts to complete the ritual. Walking away would save a lot of lives, but if you're willing to do something a bit dangerous, we might be able to do both.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32643-02.htm">"I'll help if I can."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Priestess Athenia:<br>
Rumor has it that Shilen's final seal, the Seal of Punishment, was discovered near here. If it opens, not just the Reed Field will be threatened -- the entire continent will face death.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32643-03.htm">"Is there a way to prevent that?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Priestess Athenia:<br>
Fortunately, we've got an agreement with the <font color="LEVEL">Giant's Minions</font>. They have information about the seal, and we have information about nearby areas. We're joining forces to help them with their investigation.<br>
I'm sure you understand how important this is. Can we count on you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields 32643-04.htm">"Just point me in the right direction."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Priestess Athenia:<br>
It seems Eva hasn't abandoned us after all. If you kill some <font color="LEVEL">Mucrokian Fanatics, Mucrokian Ascetics, Mucrokian Saviors, Mucrokian Prophets, Contaminated Mucrokians, and Awakened Mucrokians</font> around here, it will take pressure off the Giant's Minions. About <font color="LEVEL">50</font> of them should be enough.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Priestess Athenia:<br>
Kill <font color="LEVEL">50</font><font color="LEVEL">Mucrokian Fanatics, Mucrokian Ascetics, Mucrokian Saviors, Mucrokian Prophets, Contaminated Mucrokians, and Awakened Mucrokians</font> to take pressure off the Giant's Minions.
</body></html>

View File

@ -0,0 +1,9 @@
<html><head><body>Priestess Athenia:<br>
You're incredible! Those things looked like nothing in front of you. Wow. Oh, tell me what you want and I'll give you what I can as a token of thanks.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9546">15 Fire Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9547">15 Water Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9548">15 Earth Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9549">15 Wind Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9550">15 Dark Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10440_TheSealOfPunishmentTheFields reward_9551">15 Holy Stones</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Priestess Athenia:<br>
Thank you! Here, I hope you find these useful.
</body></html>

View File

@ -0,0 +1,268 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.Q10440_TheSealOfPunishmentTheFields;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.network.NpcStringId;
/**
* The Seal of Punishment: The Fields (10440)
* @author Stayway
*/
public class Q10440_TheSealOfPunishmentTheFields extends Quest
{
// NPCs
private static final int HELVETICA = 32641;
private static final int ATHENIA = 32643;
// Monsters
private static final int MUCROKIAN_FANATIC = 22650;
private static final int MUCROKIAN_ASCETIC = 22651;
private static final int MUCROKIAN_SAVIOR = 22652;
private static final int MUCROKIAN_PROPHET = 22653;
private static final int CONTAMINATED_MUCROKIAN = 22654;
private static final int AWAKENED_MUCROKIAN = 22655;
// Misc
private static final String KILL_COUNT_VAR = "KillCounts";
private static final int MIN_LEVEL = 81;
private static final int MAX_LEVEL = 84;
public Q10440_TheSealOfPunishmentTheFields()
{
super(10440);
addStartNpc(HELVETICA, ATHENIA);
addTalkId(HELVETICA, ATHENIA);
addKillId(MUCROKIAN_FANATIC, MUCROKIAN_ASCETIC, MUCROKIAN_SAVIOR, MUCROKIAN_PROPHET, CONTAMINATED_MUCROKIAN, AWAKENED_MUCROKIAN);
addCondMaxLevel(MAX_LEVEL, "noLevel.html");
addCondMinLevel(MIN_LEVEL, "noLevel.html");
addCondNotRace(Race.ERTHEIA, "noErtheia.html");
addCondInCategory(CategoryType.MAGE_GROUP, "noLevel.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = event;
switch (event)
{
case "32641-02.htm":
case "32641-03.htm":
case "32643-02.htm":
case "32643-03.htm":
{
htmltext = event;
break;
}
case "32641-04.htm":
{
qs.startQuest();
qs.setMemoState(1);
qs.set(Integer.toString(MUCROKIAN_FANATIC), 0);
htmltext = event;
break;
}
case "32643-04.htm":
{
qs.startQuest();
qs.setMemoState(2);
qs.set(Integer.toString(MUCROKIAN_FANATIC), 0);
htmltext = event;
break;
}
case "reward_9546":
case "reward_9547":
case "reward_9548":
case "reward_9549":
case "reward_9550":
case "reward_9551":
{
final int stoneId = Integer.parseInt(event.replaceAll("reward_", ""));
giveItems(player, stoneId, 15);
giveStoryQuestReward(player, 60);
int count = qs.getInt(KILL_COUNT_VAR);
if ((count >= 50) && (count < 100))
{
addExpAndSp(player, 28240800, 6777);
}
else if ((count >= 100) && (count < 200))
{
addExpAndSp(player, 56481600, 13554);
}
else if ((count >= 200) && (count < 300))
{
addExpAndSp(player, 84722400, 20331);
}
else if ((count >= 300) && (count < 400))
{
addExpAndSp(player, 112963200, 27108);
}
else if ((count >= 400) && (count < 500))
{
addExpAndSp(player, 141204000, 33835);
}
else if ((count >= 500) && (count < 600))
{
addExpAndSp(player, 169444800, 40662);
}
else if ((count >= 600) && (count < 700))
{
addExpAndSp(player, 197685600, 47439);
}
else if ((count >= 700) && (count < 800))
{
addExpAndSp(player, 225926400, 54216);
}
else if ((count >= 800) && (count < 900))
{
addExpAndSp(player, 254167200, 60993);
}
else if (count >= 900)
{
addExpAndSp(player, 282408000, 67770);
}
qs.exitQuest(false, true);
if ((qs.isCond(2)) && (qs.isMemoState(1)))
{
htmltext = "32641-07.html";
}
else if ((qs.isCond(3)) && (qs.isMemoState(2)))
{
htmltext = "32643-07.html";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case HELVETICA:
{
if (qs.isCreated())
{
htmltext = "32641-01.htm";
}
else if (qs.isCond(1))
{
htmltext = "32641-05.html";
}
else if (qs.isCond(2))
{
htmltext = "32641-06.html";
}
else if (qs.isCompleted())
{
htmltext = getAlreadyCompletedMsg(player);
}
break;
}
case ATHENIA:
{
if (qs.isCreated())
{
htmltext = "32643-01.htm";
}
else if (qs.isCond(1))
{
htmltext = "32643-05.html";
}
else if (qs.isCond(3))
{
htmltext = "32643-06.html";
}
else if (qs.isCompleted())
{
htmltext = getAlreadyCompletedMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() > 0))
{
int count = qs.getInt(KILL_COUNT_VAR) + 1;
qs.set(KILL_COUNT_VAR, count);
if ((count >= 50) && (qs.isMemoState(1)))
{
qs.setCond(2, true);
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if ((count >= 50) && (qs.isMemoState(2)))
{
qs.setCond(3, true);
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else
{
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getCond() > 0))
{
final int killCounts = qs.getInt(KILL_COUNT_VAR);
if (killCounts > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.ELIMINATING_THE_MUCROKIANS, killCounts));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -0,0 +1,4 @@
<html><body><br>
This wasn't good news at all. I might have to take my research and leave this place. If worse comes to worst, it may not be a bad thing to go back.<br>Mm, but, why am I telling you all this? I talk too much when I'm upset. Now, go away.<br>
(Ertheia classes cannot perform this quest.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body><br>
Bad news, bad news. We might have to drop everything and run. We might be lucky to even survive on our way out. Oh, this is bad...<br>
Wait, why are you standing around listening? Go away!<br>
(This quest can only be performed by characters Lv. 81 or above, who are either an Archmage, Soultaker, Arcana Lord, Cardinal, Hierophant, Mystic Muse, Elemental Master, Eva's Saint, Storm Screamer, Spectral Master, Shillien Saint, Dominator, or Doomcryer.)
</body></html>

View File

@ -298,6 +298,7 @@ import quests.Q10433_KekropusLetterRegardingASeal.Q10433_KekropusLetterRegarding
import quests.Q10436_KekropusLetterTheSealOfPunishment.Q10436_KekropusLetterTheSealOfPunishment;
import quests.Q10437_TheSealOfPunishmentPlainsOfTheLizardmen.Q10437_TheSealOfPunishmentPlainsOfTheLizardmen;
import quests.Q10439_KekropusLetterTheOriginsOfARumor.Q10439_KekropusLetterTheOriginsOfARumor;
import quests.Q10440_TheSealOfPunishmentTheFields.Q10440_TheSealOfPunishmentTheFields;
import quests.Q10442_TheAnnihilatedPlains1.Q10442_TheAnnihilatedPlains1;
import quests.Q10443_TheAnnihilatedPlains2.Q10443_TheAnnihilatedPlains2;
import quests.Q10444_TheOriginOfMonsters.Q10444_TheOriginOfMonsters;
@ -680,6 +681,7 @@ public class QuestMasterHandler
Q10436_KekropusLetterTheSealOfPunishment.class,
Q10437_TheSealOfPunishmentPlainsOfTheLizardmen.class,
Q10439_KekropusLetterTheOriginsOfARumor.class,
Q10440_TheSealOfPunishmentTheFields.class,
Q10442_TheAnnihilatedPlains1.class,
Q10443_TheAnnihilatedPlains2.class,
Q10444_TheOriginOfMonsters.class,