Quest The Seal of Punishment: Den of Evil (10431).

Contributed by Stayway.
This commit is contained in:
MobiusDev
2016-08-23 06:49:55 +00:00
parent d374b92f48
commit ce6a1a843d
17 changed files with 297 additions and 1 deletions

View File

@@ -89,7 +89,6 @@
10380 The Executioner's Execution
10388 Conspiracy Behind Doors
10389 The Voice of Authority
10431 The Seal of Punishment: Den of Evil
10432 Chasing Varangka
10434 The Seal of Punishment: Sel Mahum Training Grounds
10435 Chasing Keltron

View File

@@ -0,0 +1,4 @@
<html><body>Chairen:<br>
What brings you here, stranger?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil 32655-02.html">Deliver Jokel's message</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Chairen:<br>
Varangka, eh? I could give you a hand with that. No one looks forward to his fall more than I.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil 32655-03.html">Any suggestions?</Button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Chairen:<br>
I suggest starting with the force field. To get to it, you'll need my help. Here's the deal. Defeat <font color="LEVEL">Ragna Orc Warriors, Ragna Orc Heroes, Ragna Orc Commanders, Ragna Orc Healers, Ragna Orc Shamans, Ragna Orc Priests, Ragna Orc Archers, Ragna Orc Snipers, Varangka's Dre Vanuls, and Varangka's Destroyers</font>. Bring me, oh, <font color="LEVEL">50</font> <font color="LEVEL">Evil Freed Soul</font>, and I will make you something to take down the force field.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Chairen:<br>
To breach the force field, you'll need my help. Here's the deal. Defeat <font color="LEVEL">Ragna Orc Warriors, Ragna Orc Heroes, Ragna Orc Commanders, Ragna Orc Healers, Ragna Orc Shamans, Ragna Orc Priests, Ragna Orc Archers, Ragna Orc Snipers, Varangka's Dre Vanuls, and Varangka's Destroyers</font>. Bring me, oh, <font color="LEVEL">50 Evil Freed Soul</font>, and I will make you something to take down the force field.
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body>Chairen:<br>
I see you've amassed quite the collection of Evil Freed Souls. Good, you've advanced both our efforts. Hand them over and I'll see if I can't find something to reward you with.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9546">15 Fire Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9547">15 Water Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9548">15 Earth Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9549">15 Wind Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9550">15 Dark Stones</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil reward_9551">15 Holy Stones</Button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Chairen:<br>
Here is the reward you asked for. If you give me some time I'll have the item you wanted soon.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Giant's Minion Jokel:<br>
We have to find out how the Den of Evil is connected to the Seal of Punishment. If Shilen succeeds in removing the seal, I can hardly bear to think of what will happen! Is there anyone who can stop this?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil 33868-02.htm">"There is one who will."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Giant's Minion Jokel:<br>
Good, then you understand me. First, we need to stop whatever the Ragnas are planning, and the best way to do that is to kill Varangka, the shaman who leads them. But there is a problem.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil 33868-03.htm">"Of course there is."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Giant's Minion Jokel:<br>
Varangka is unrivaled in his dark curses. He has set up a force field around himself to stop us from attacking him. Before we can do anything, we have to find a way to destroy the force field.<br>
I've found an old enemy of Varangka's, who might know something of the force field's weaknesses. I want you to talk to him and follow any instructions he give you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10431_TheSealOfPunishmentDenOfEvil 33868-04.htm">">"I will."</Button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Giant's Minion Jokel:<br>
Do you see <font color="LEVEL">Chairen</font>, near the altar over there? He is the one I want you to meet.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Giant's Minion Jokel:<br>
Do you see <font color="LEVEL">Chairen</font>, near the altar over there? He is the one I want you to meet.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Giant's Minion Jokel:<br>
I don't trust you.<br>
(Characters must be Lv. 81 or above to perform this quest.)
</body></html>

View File

@@ -0,0 +1,238 @@
/*
* 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.Q10431_TheSealOfPunishmentDenOfEvil;
import java.util.HashMap;
import java.util.Map;
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.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
/**
* The Seal of Punishment: Den of Evil (10431)
* @author Stayway
*/
public class Q10431_TheSealOfPunishmentDenOfEvil extends Quest
{
// Npcs
private static final int JOKEL = 33868;
private static final int CHAIREN = 32655;
// Item
private static final int EVIL_FREED_SOUL = 36715;
// Misc
private static final Map<Integer, Double> RAGNA_ORC = new HashMap<>();
static
{
RAGNA_ORC.put(22692, 0.888); // Ragna Orc Warriors
RAGNA_ORC.put(22693, 0.888); // Ragna Orc Heroes
RAGNA_ORC.put(22694, 0.888); // Ragna Orc Commanders
RAGNA_ORC.put(22695, 0.888); // Ragna Orc Healers
RAGNA_ORC.put(22696, 0.888); // Ragna Orc Shamans
RAGNA_ORC.put(22697, 0.888); // Ragna Orc Priests
RAGNA_ORC.put(22698, 0.888); // Ragna Orc Archers
RAGNA_ORC.put(22699, 0.888); // Ragna Orc Snipers
RAGNA_ORC.put(22701, 0.888); // Varangka's Dre Vanuls
RAGNA_ORC.put(22702, 0.888); // Varangka's Destroyers
}
private static final int MIN_LEVEL = 81;
private static final int MAX_LEVEL = 84;
public Q10431_TheSealOfPunishmentDenOfEvil()
{
super(10431);
addStartNpc(JOKEL);
addTalkId(JOKEL, CHAIREN);
addKillId(RAGNA_ORC.keySet());
registerQuestItems(EVIL_FREED_SOUL);
addCondMaxLevel(MAX_LEVEL, "33868-06.html");
addCondMaxLevel(MIN_LEVEL, "33868-06.html");
addCondNotRace(Race.ERTHEIA, "noErtheia.html");
addCondInCategory(CategoryType.FOURTH_CLASS_GROUP, "nocond.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 "32655-02.htm":
case "33868-02.htm":
case "33868-03.htm":
{
htmltext = event;
break;
}
case "33868-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "32655-03.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "reward_9546":
case "reward_9547":
case "reward_9548":
case "reward_9549":
case "reward_9550":
case "reward_9551":
{
if (!qs.isCond(3))
{
break;
}
takeItems(player, EVIL_FREED_SOUL, -1);
final int stoneId = Integer.parseInt(event.replaceAll("reward_", ""));
giveItems(player, stoneId, 15);
giveStoryQuestReward(player, 60);
final long count = getQuestItemsCount(player, EVIL_FREED_SOUL);
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);
htmltext = "32655-06.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 JOKEL:
{
if (qs.isCreated())
{
htmltext = "33868-01.htm";
}
else if (qs.isCond(1))
{
htmltext = "33868-05.html";
}
else if (qs.isCompleted())
{
htmltext = getAlreadyCompletedMsg(player);
}
break;
}
case CHAIREN:
{
if (qs.isCond(1))
{
htmltext = "32655-01.html";
}
else if (qs.isCond(2))
{
htmltext = "32655-04.html";
}
else if (qs.isCond(3))
{
htmltext = "32655-05.html";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if (qs == null)
{
return null;
}
final int npcId = npc.getId();
if (RAGNA_ORC.containsKey(npcId))
{
giveItemRandomly(qs.getPlayer(), npc, EVIL_FREED_SOUL, 1, 0, RAGNA_ORC.get(npcId), true);
}
if (getQuestItemsCount(killer, EVIL_FREED_SOUL) < 50)
{
giveItems(killer, EVIL_FREED_SOUL, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (getQuestItemsCount(killer, EVIL_FREED_SOUL) >= 50)
{
qs.setCond(3, true);
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Giant's Minion Jokel:<br>
Whoa, not so fast. You're way out of your league here. <br>
(This quest can only be performed by characters Lv. 81 or above of the Duelist, Phoenix Knight, Hell Knight, Adventurer, Eva's Templar, Sword Muse, Wind Rider, Shillien Templar, Spectral Dancer, Ghost Hunter, Grand Khavatari, Doombringer, Soul Hound, or Judicator class.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Giant's Minion Jokel:<br>
Whoa, not so fast. You're way out of your league here. <br>
(Ertheia are excluded from this quest.)
</body></html>

View File

@@ -292,6 +292,7 @@ import quests.Q10425_TheKetraOrcSupporters.Q10425_TheKetraOrcSupporters;
import quests.Q10426_AssassinationOfTheKetraOrcCommander.Q10426_AssassinationOfTheKetraOrcCommander;
import quests.Q10427_AssassinationOfTheKetraOrcChief.Q10427_AssassinationOfTheKetraOrcChief;
import quests.Q10430_KekropusLetterTrackingTheEvil.Q10430_KekropusLetterTrackingTheEvil;
import quests.Q10431_TheSealOfPunishmentDenOfEvil.Q10431_TheSealOfPunishmentDenOfEvil;
import quests.Q10433_KekropusLetterRegardingASeal.Q10433_KekropusLetterRegardingASeal;
import quests.Q10436_KekropusLetterTheSealOfPunishment.Q10436_KekropusLetterTheSealOfPunishment;
import quests.Q10439_KekropusLetterTheOriginsOfARumor.Q10439_KekropusLetterTheOriginsOfARumor;
@@ -670,6 +671,7 @@ public class QuestMasterHandler
Q10426_AssassinationOfTheKetraOrcCommander.class,
Q10427_AssassinationOfTheKetraOrcChief.class,
Q10430_KekropusLetterTrackingTheEvil.class,
Q10431_TheSealOfPunishmentDenOfEvil.class,
Q10433_KekropusLetterRegardingASeal.class,
Q10436_KekropusLetterTheSealOfPunishment.class,
Q10439_KekropusLetterTheOriginsOfARumor.class,