diff --git a/trunk/dist/game/data/scripts/quests/MissingQuests.txt b/trunk/dist/game/data/scripts/quests/MissingQuests.txt index 6d34037ce4..f6dcb13305 100644 --- a/trunk/dist/game/data/scripts/quests/MissingQuests.txt +++ b/trunk/dist/game/data/scripts/quests/MissingQuests.txt @@ -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 diff --git a/trunk/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java b/trunk/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java index 570c62cf79..66ce85e421 100644 --- a/trunk/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java +++ b/trunk/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java @@ -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; diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-01.htm b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-01.htm new file mode 100644 index 0000000000..cc444d17d6 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-01.htm @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+Karna Maphra!
+Are you the one who Lionel has sent? Does this mean that he was right? Are we going into a new future?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-02.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-02.html new file mode 100644 index 0000000000..c9edf6c319 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-02.html @@ -0,0 +1,4 @@ +Head Priest of the Earth Daichir:
+You are weak. You would be butchered should I let you take on this challenge in your condition. Gain strength, friend!
+(Only characters above Lv. 99.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-03.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-03.html new file mode 100644 index 0000000000..798b7a1631 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-03.html @@ -0,0 +1,4 @@ +Head Priest of the Earth Daichir:
+You don't meet the qualifications. You must first talk to Lionel.
+(Only characters who are performing the Exalted, One Who Overcomes the Limit quest may take this quest.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-04.htm b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-04.htm new file mode 100644 index 0000000000..48c4ebf1c7 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-04.htm @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+We lost our village in the past. All the other races have also faced similar fates.
+We were powerless. All we could do was prevent a greater tragedy. Do you remember? What we had to go through...
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-05.htm b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-05.htm new file mode 100644 index 0000000000..690bca3e52 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-05.htm @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+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.
+I believe you have what it takes to lead this world. There's something you must do for this world.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm new file mode 100644 index 0000000000..dfa44f993f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm @@ -0,0 +1,6 @@ +Head Priest of the Earth Daichir:
+Defeat the monsters that are threatening the safety of this world. I'll tell you which ones to defeat.
+First, you must defeat Istina, Octavis, and Tauti in an Epic Battle. You must also defeat Beleth and Earth Wyrm Trasken, and bring a Dark Soul Stone.
+However, defeating Earth Wyrm Trasken is difficult. That's why I have another method. Would like to hear it?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06a.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06a.html new file mode 100644 index 0000000000..d9361065f9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06a.html @@ -0,0 +1,4 @@ +Head Priest of the Earth Daichir:
+Strong monsters have been appearing near the Crystal Caverns. You can get Veridan's Soul Stone, Kechi's Soul Stone, and Michaela's Soul Stone when you defeat Armed Veridan, Armed Kechi, and Armed Michaela respectively. When you combine these three, you can get a Dark Soul Stone.
+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. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07.html new file mode 100644 index 0000000000..c7c2eb36d8 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07.html @@ -0,0 +1,6 @@ +Head Priest of the Earth Daichir:
+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.
+You must defeat Istina, Octavis, and Tauti in an Epic Battle. You must also defeat Beleth and Earth Wyrm Trasken.
+However, defeating Earth Wyrm Trasken is difficult. That's why I have another method. Would like to hear it?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-08.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-08.html new file mode 100644 index 0000000000..bc892035dc --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-08.html @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+Did you finish? May the goddess' blessing be with you!
+So you are done, right?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-09.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-09.html new file mode 100644 index 0000000000..3acf61e833 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-09.html @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+Karna Maphra!
+May the goddess' blessing be with you.
+Take this certificate! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-10.html b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-10.html new file mode 100644 index 0000000000..fdbb8df4a6 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-10.html @@ -0,0 +1,5 @@ +Head Priest of the Earth Daichir:
+Karna Maphra!
+May the goddess' blessing be with you.
+Take this certificate. If you've received all the certificates, go see Lionel. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java new file mode 100644 index 0000000000..81ca7e07b9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java @@ -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 . + */ +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"); + } + } + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java index a98a0052ad..1f30151b58 100644 --- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -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)