Quest Confronting a Giant Monster (10818).

This commit is contained in:
MobiusDev 2016-07-28 21:49:45 +00:00
parent 35b6e8110d
commit b14d0e74d2
15 changed files with 256 additions and 13 deletions

View File

@ -165,8 +165,6 @@
10806 The Dimensional Warp, Part 6
10807 The Dimensional Warp, Part 7
10809 The Hero's Journey: Blazing Swamp
10817 Exalted, One Who Overcomes the Limit
10818 Confronting a Giant Monster
10819 For Honor
10820 Relationships Befitting of the Status
10821 Helping Others

View File

@ -20,6 +20,7 @@ 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;
import com.l2jmobius.gameserver.model.quest.State;
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
@ -36,6 +37,7 @@ public final class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
private static final int ISHUMA_CERTIFICATE = 45630;
private static final int SIR_KRISTOF_RODEMAI_CERTIFICATE = 45631;
private static final int LIONEL_MISSION_LIST_2 = 45632;
// Rewards
private static final int SPELLBOOK_DIGNITY_OF_THE_EXALTED = 45923;
private static final int SPELLBOOK_BELIEF_OF_THE_EXALTED = 45925;
@ -50,7 +52,7 @@ public final class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
addTalkId(LIONEL);
addCondMinLevel(MIN_LEVEL, "33907-07.html");
addCondCompletedQuest(Q10811_ExaltedOneWhoFacesTheLimit.class.getSimpleName(), "33907-02.html");
registerQuestItems(DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE);
registerQuestItems(LIONEL_MISSION_LIST_2, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE);
}
@Override
@ -75,6 +77,7 @@ public final class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
{
if (qs.isCreated())
{
giveItems(player, LIONEL_MISSION_LIST_2, 1);
qs.startQuest();
htmltext = event;
}
@ -105,19 +108,29 @@ public final class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
return htmltext;
}
if (qs.isCreated())
switch (qs.getState())
{
htmltext = "33907-01.htm";
}
else if (qs.isStarted())
{
if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
case State.CREATED:
{
htmltext = "33907-07.html";
htmltext = "33907-01.htm";
break;
}
else
case State.STARTED:
{
htmltext = "33907-06.html";
if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
htmltext = "33907-07.html";
}
else
{
htmltext = "33907-06.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
<font color="LEVEL">Karna Maphra!</font><br>
Are you the one who Lionel has sent? Does this mean that he was right? Are we going into a new future?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-04.htm">"Of course."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Priest of the Earth Daichir:<br>
You are weak. You would be butchered should I let you take on this challenge in your condition. Gain strength, friend!<br>
(Only characters above Lv. 99.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Priest of the Earth Daichir:<br>
You don't meet the qualifications. You must first talk to Lionel.<br>
(Only characters who are performing the Exalted, One Who Overcomes the Limit quest may take this quest.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
We lost our village in the past. All the other races have also faced similar fates.<br>
We were powerless. All we could do was prevent a greater tragedy. Do you remember? What we had to go through...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-05.htm">"Yes..."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
When Lionel asked for help, I didn't really believe him. But it looks like he was right. It is time for us to stand on our own, rather than relying on the goddess' power.<br>
I believe you have what it takes to lead this world. There's something you must do for this world.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06.htm">"What is it?"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Head Priest of the Earth Daichir:<br>
Defeat the monsters that are threatening the safety of this world. I'll tell you which ones to defeat.<br>
First, you must defeat <font color="LEVEL">Istina, Octavis, and Tauti</font> in an <font color="LEVEL">Epic Battle</font>. You must also defeat <font color="LEVEL">Beleth</font> and <font color="LEVEL">Earth Wyrm Trasken</font>, and bring a <font color="LEVEL">Dark Soul Stone</font>.<br>
However, defeating Earth Wyrm Trasken is difficult. That's why I have another method. Would like to hear it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06a.html">"What is it?"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Priest of the Earth Daichir:<br>
Strong monsters have been appearing near the Crystal Caverns. You can get <font color="LEVEL">Veridan's Soul Stone</font>, <font color="LEVEL">Kechi's Soul Stone</font>, and <font color="LEVEL">Michaela's Soul Stone</font> when you defeat <font color="LEVEL">Armed Veridan, Armed Kechi, and Armed Michaela</font> respectively. When you combine these three, you can get a <font color="LEVEL">Dark Soul Stone</font>.<br>
This is the same item that you can get after defeating Earth Wyrm Trasken. So if you can get a Dark Soul Stone this way, I'll consider it as if you've defeated Earth Wyrm Trasken.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Head Priest of the Earth Daichir:<br>
If you want to achieve true strength, defeat the monsters who threaten the safety of this world. I'll tell you which monsters to defeat.<br>
You must defeat <font color="LEVEL">Istina, Octavis, and Tauti</font> in an <font color="LEVEL">Epic Battle</font>. You must also defeat <font color="LEVEL">Beleth and Earth Wyrm Trasken</font>.<br>
However, defeating Earth Wyrm Trasken is difficult. That's why I have another method. Would like to hear it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06a.html">"What is it?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
Did you finish? May the goddess' blessing be with you!<br>
So you are done, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-09.html">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
<font color="LEVEL">Karna Maphra!</font><br>
May the goddess' blessing be with you.<br>
Take this certificate!
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Priest of the Earth Daichir:<br>
<font color="LEVEL">Karna Maphra!</font><br>
May the goddess' blessing be with you.<br>
Take this certificate. If you've received all the certificates, go see Lionel.
</body></html>

View File

@ -0,0 +1,176 @@
/*
* 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.Q10818_ConfrontingAGiantMonster;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.enums.QuestSound;
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;
import com.l2jmobius.gameserver.model.quest.State;
import quests.Q10817_ExaltedOneWhoOvercomesTheLimit.Q10817_ExaltedOneWhoOvercomesTheLimit;
/**
* Confronting a Giant Monster (10818)
* @URL https://l2wiki.com/Confronting_a_Giant_Monster
* @author Mobius
*/
public final class Q10818_ConfrontingAGiantMonster extends Quest
{
// Npc
private static final int DAICHIR = 30537;
// Monsters
private static final int ISTINA = 29196; // Extreme
private static final int OCTAVIS = 29212; // Extreme
private static final int TAUTI = 29233; // correct id?
private static final int EKIMUS = 29251; // correct id?
private static final int TRASKEN = 29197; // correct id?
// Items
private static final int LIONEL_MISSION_LIST_2 = 45632;
private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
private static final int ISHUMA_CERTIFICATE = 45630;
private static final int SIR_KRISTOF_RODEMAI_CERTIFICATE = 45631;
private static final int DARK_SOUL_STONE = 46055;
// Rewards
private static final int EXP_AMOUNT = 45923;
private static final int DAICHIR_SERTIFICATE = 45628;
// Misc
private static final int MIN_LEVEL = 99;
public Q10818_ConfrontingAGiantMonster()
{
super(10818);
addStartNpc(DAICHIR);
addTalkId(DAICHIR);
addKillId(ISTINA, OCTAVIS, TAUTI, EKIMUS, TRASKEN);
addCondMinLevel(MIN_LEVEL, "30537-02.html");
addCondStartedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "30537-03.html");
registerQuestItems(DARK_SOUL_STONE);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "30537-04.htm":
case "30537-05.htm":
case "30537-06.htm":
{
htmltext = event;
break;
}
case "30537-06a.html":
{
if (qs.isCreated() && hasQuestItems(player, LIONEL_MISSION_LIST_2))
{
qs.startQuest();
}
htmltext = event;
break;
}
case "30537-09.html":
{
if (hasQuestItems(player, DARK_SOUL_STONE) && qs.get("" + ISTINA).equals("true") && qs.get("" + OCTAVIS).equals("true") && qs.get("" + TAUTI).equals("true") && qs.get("" + EKIMUS).equals("true"))
{
if (hasQuestItems(player, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE))
{
htmltext = "30537-10.html";
}
addExpAndSp(player, EXP_AMOUNT, 0);
giveItems(player, DAICHIR_SERTIFICATE, 1);
qs.unset("" + ISTINA);
qs.unset("" + OCTAVIS);
qs.unset("" + TAUTI);
qs.unset("" + EKIMUS);
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);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30537-01.htm";
break;
}
case State.STARTED:
{
if (hasQuestItems(player, DARK_SOUL_STONE) && qs.get("" + ISTINA).equals("true") && qs.get("" + OCTAVIS).equals("true") && qs.get("" + TAUTI).equals("true") && qs.get("" + EKIMUS).equals("true"))
{
htmltext = "30537-08.html";
}
else
{
htmltext = "30537-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && player.isInsideRadius(npc, Config.ALT_PARTY_RANGE, true, true))
{
if (npc.getId() == TRASKEN)
{
giveItems(player, DARK_SOUL_STONE, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else
{
qs.set("" + npc.getId(), "true");
}
}
}
}

View File

@ -354,6 +354,7 @@ import quests.Q10813_ForGlory.Q10813_ForGlory;
import quests.Q10814_BefittingOfTheStatus.Q10814_BefittingOfTheStatus;
import quests.Q10815_StepUp.Q10815_StepUp;
import quests.Q10817_ExaltedOneWhoOvercomesTheLimit.Q10817_ExaltedOneWhoOvercomesTheLimit;
import quests.Q10818_ConfrontingAGiantMonster.Q10818_ConfrontingAGiantMonster;
/**
* @author NosBit
@ -698,7 +699,8 @@ public class QuestMasterHandler
Q10813_ForGlory.class,
Q10814_BefittingOfTheStatus.class,
Q10815_StepUp.class,
Q10817_ExaltedOneWhoOvercomesTheLimit.class
Q10817_ExaltedOneWhoOvercomesTheLimit.class,
Q10818_ConfrontingAGiantMonster.class
};
public static void main(String[] args)