diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-01.htm b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-01.htm new file mode 100644 index 0000000000..2b5a481ca2 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-01.htm @@ -0,0 +1,4 @@ +Priest Vanutu:
+May the glory of Pa'agrio shine upon the brave!
+Go to the Lair of Antharas and collect 360 cave beast teeth and 360 Death Wave Lights. You mustn't attempt this mission alone. + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-02.htm b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-02.htm new file mode 100644 index 0000000000..1b70302983 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-02.htm @@ -0,0 +1,4 @@ +Priest Vanutu:
+Your inner voice is not yet clear to you. Come back when you have it.
+(This quest may only be undertaken by a character of level 56 and above.) + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-03.html new file mode 100644 index 0000000000..aecd39a749 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-03.html @@ -0,0 +1,3 @@ +Priest Vanutu:
+You haven't brought enough! You must bring me 360 cave beast teeth and 360 Death Wave Lights. I don't like to repeat myself! Go! Now! + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-04.html new file mode 100644 index 0000000000..945940241b --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-04.html @@ -0,0 +1,8 @@ +Priest Vanutu:
+Oh, the sacred flames of Pa'agrio!
+Now I can perform the ritual! Choose your reward!
+1 Scroll Part: Enchant Armor
+2 Refined Scroll Part: Enchant Armor
+
1 Scroll: Enchant Armor (B-grade)
+
1 Improved Scroll: Enchant Armor (B-grade)
+ \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-05.html new file mode 100644 index 0000000000..2baf193d88 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-05.html @@ -0,0 +1,4 @@ +Priest Vanutu:
+Now I can perform the ritual. But, bear in mind, it's almost impossible to foretell the chaotic future with just one ritual. Why don't you stay and help me?
+
"I'll stay and help."
+ \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-06.html new file mode 100644 index 0000000000..16e3fab612 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-06.html @@ -0,0 +1,5 @@ +Priest Vanutu:
+May the power of Pa'agrio be with you...
+Now, you need to kill Cave Beast and Death Wave monsters and get the Sealed Mysterious Stone.
+Galman waiting for you! + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-07.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-07.html new file mode 100644 index 0000000000..4188704616 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-07.html @@ -0,0 +1,3 @@ +Priest Vanutu:
+You still here? Go inside Anthar's Lair and kill Cave Beast and Death Wave monsters in order bring to me the Sealed Mysterious Stone.
+ \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-08.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-08.html new file mode 100644 index 0000000000..7e6f81450f --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938-08.html @@ -0,0 +1,4 @@ +Priest Vanutu:
+Good work!
+You must meet with the dwarf named Galman. You'll find him in Dragon Valley. + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938.htm b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938.htm new file mode 100644 index 0000000000..8e2917a2bb --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/30938.htm @@ -0,0 +1,4 @@ +Priest Vanutus:
+Last night I dreamed of my ancestors. They spoke of a great turmoil approaching this world. I must perform a ritual to see what lies ahead. Will you help me to obtain the materials I need?
+"I will help." + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044-01.html new file mode 100644 index 0000000000..af02c71996 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044-01.html @@ -0,0 +1,4 @@ +Trader Galman:
+It's done!
+After you touch it a few times and your hand starts to feel warm, that means it's done. At least that's what the old orc said. Take this and don't ever come back, you hear? + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044.html b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044.html new file mode 100644 index 0000000000..c7c296890d --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/31044.html @@ -0,0 +1,4 @@ +Trader Galman:
+Well well well! It seems like the old orc has some vinegar left in him yet. My father told me about that old geezer bothering him when I was born, saying that I had the power of Pa'agrio or something... Now he's back. Just give me the stone and I'll do this quickly. Don't bother me again.
+Give him the Mysterious Stone. + \ No newline at end of file diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/Q00374_WhisperOfDreams_Part1.java b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/Q00374_WhisperOfDreams_Part1.java new file mode 100644 index 0000000000..d6a783bad1 --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/Q00374_WhisperOfDreams_Part1/Q00374_WhisperOfDreams_Part1.java @@ -0,0 +1,282 @@ +/* + * 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.Q00374_WhisperOfDreams_Part1; + +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +import com.l2jmobius.gameserver.model.holders.ItemHolder; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; + +/** + * Whisper Of Dreams Part1 (374) + * @author Stayway + */ +public class Q00374_WhisperOfDreams_Part1 extends Quest +{ + // NPCs + private static final int VANUTU = 30938; + private static final int GALMAN = 31044; + private static final int CAVE_BEAST = 20620; + private static final int DEATH_WAVE = 20621; + // Items + private static final ItemHolder CAVE_BEAST_TOOTH = new ItemHolder(5884, 360); + private static final ItemHolder DEATH_WAVE_LIGHT = new ItemHolder(5885, 360); + private static final ItemHolder SEALED_MYSTERIOUS_STONE = new ItemHolder(5886, 1); + private static final int MYSTERIOUS_STONE = 5887; + // Rewards + private static final int SCROLL_PART_EA = 49475; + private static final int REFINED_SCROLL_PART_EA = 49478; + private static final int ENCHANT_ARMOR_B = 948; + private static final int IMPROVED_ENCHANT_ARMOR_B = 29743; + // Misc + private static final int MIN_LEVEL = 56; + private static final int MAX_LEVEL = 66; + + public Q00374_WhisperOfDreams_Part1() + { + super(374); + addStartNpc(VANUTU); + addTalkId(VANUTU, GALMAN); + addKillId(CAVE_BEAST, DEATH_WAVE); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "30938-02.html"); + registerQuestItems(SEALED_MYSTERIOUS_STONE.getId()); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + final QuestState qs = getQuestState(player, false); + String htmltext = null; + if (qs != null) + { + switch (event) + { + case "30938-01.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "30938-06.html": + { + qs.setCond(3); + htmltext = event; + break; + } + case "reward1": + { + if (hasAllItems(player, true, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH)) + { + if (qs.isCond(2)) + { + giveItems(player, SCROLL_PART_EA, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-05.html"; + } + else if (qs.isCond(4)) + { + giveItems(player, SCROLL_PART_EA, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-08.html"; + } + } + break; + } + case "reward2": + { + if (hasAllItems(player, true, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH)) + { + if (qs.isCond(2)) + { + giveItems(player, REFINED_SCROLL_PART_EA, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-05.html"; + } + else if (qs.isCond(4)) + { + giveItems(player, REFINED_SCROLL_PART_EA, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-08.html"; + } + } + break; + } + case "reward3": + { + if (hasAllItems(player, true, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH)) + { + if (qs.isCond(2)) + { + giveItems(player, ENCHANT_ARMOR_B, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-05.html"; + } + else if (qs.isCond(4)) + { + giveItems(player, ENCHANT_ARMOR_B, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-08.html"; + } + } + break; + } + case "reward4": + { + if (hasAllItems(player, true, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH)) + { + if (qs.isCond(2)) + { + giveItems(player, IMPROVED_ENCHANT_ARMOR_B, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-05.html"; + } + else if (qs.isCond(4)) + { + giveItems(player, IMPROVED_ENCHANT_ARMOR_B, 1); + takeAllItems(player, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH); + giveAdena(player, 9000, true); + htmltext = "30938-08.html"; + } + } + break; + } + case "31044-01.html": + { + if (qs.isCond(4)) + { + giveItems(player, MYSTERIOUS_STONE, 1); + takeAllItems(player, SEALED_MYSTERIOUS_STONE); + qs.exitQuest(true, true); + htmltext = event; + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + String htmltext = getNoQuestMsg(player); + final QuestState qs = getQuestState(player, true); + switch (npc.getId()) + { + case VANUTU: + { + if (qs.isCompleted()) + { + htmltext = getAlreadyCompletedMsg(player); + } + else if (qs.isCreated()) + { + htmltext = "30938.htm"; + } + else if (qs.isStarted()) + { + switch (qs.getCond()) + { + case 1: + { + htmltext = "30938-03.html"; + break; + } + case 2: + { + htmltext = "30938-04.html"; + break; + } + case 3: + { + htmltext = "30938-07.html"; + break; + } + case 4: + { + htmltext = "30938-08.html"; + break; + } + } + } + break; + } + case GALMAN: + { + if (qs.isCond(4)) + { + htmltext = "31044.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) + { + switch (npc.getId()) + { + case CAVE_BEAST: + { + if (qs.getCond() < 4) + { + giveItemRandomly(qs.getPlayer(), npc, CAVE_BEAST_TOOTH.getId(), 1, CAVE_BEAST_TOOTH.getCount(), 0.9, true); + if (qs.isCond(3)) + { + giveItemRandomly(qs.getPlayer(), npc, SEALED_MYSTERIOUS_STONE.getId(), 1, SEALED_MYSTERIOUS_STONE.getCount(), 0.2, true); + } + } + break; + } + case DEATH_WAVE: + { + if (qs.getCond() < 4) + { + giveItemRandomly(qs.getPlayer(), npc, DEATH_WAVE_LIGHT.getId(), 1, DEATH_WAVE_LIGHT.getCount(), 0.9, true); + if (qs.isCond(3)) + { + giveItemRandomly(qs.getPlayer(), npc, SEALED_MYSTERIOUS_STONE.getId(), 1, SEALED_MYSTERIOUS_STONE.getCount(), 0.2, true); + } + } + break; + } + } + if (qs.isCond(1) && (hasAllItems(qs.getPlayer(), true, DEATH_WAVE_LIGHT, CAVE_BEAST_TOOTH))) + { + qs.setCond(2); + } + if (qs.isCond(3) && (hasAllItems(qs.getPlayer(), true, SEALED_MYSTERIOUS_STONE))) + { + qs.setCond(4); + } + } + return super.onKill(npc, killer, isSummon); + } +} diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java index 831da89d5e..b3b65cba58 100644 --- a/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_Classic/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -158,6 +158,7 @@ import quests.Q00358_IllegitimateChildOfTheGoddess.Q00358_IllegitimateChildOfThe import quests.Q00360_PlunderTheirSupplies.Q00360_PlunderTheirSupplies; import quests.Q00369_CollectorOfJewels.Q00369_CollectorOfJewels; import quests.Q00370_AnElderSowsSeeds.Q00370_AnElderSowsSeeds; +import quests.Q00374_WhisperOfDreams_Part1.Q00374_WhisperOfDreams_Part1; import quests.Q00401_PathOfTheWarrior.Q00401_PathOfTheWarrior; import quests.Q00402_PathOfTheHumanKnight.Q00402_PathOfTheHumanKnight; import quests.Q00403_PathOfTheRogue.Q00403_PathOfTheRogue; @@ -317,6 +318,7 @@ public class QuestMasterHandler Q00329_CuriosityOfADwarf.class, Q00331_ArrowOfVengeance.class, Q00333_HuntOfTheBlackLion.class, + Q00374_WhisperOfDreams_Part1.class, Q00344_1000YearsTheEndOfLamentation.class, Q00348_AnArrogantSearch.class, Q00354_ConquestOfAlligatorIsland.class, diff --git a/L2J_Mobius_Classic/dist/game/data/spawns/Others/24_21.xml b/L2J_Mobius_Classic/dist/game/data/spawns/Others/24_21.xml new file mode 100644 index 0000000000..f506fff5fe --- /dev/null +++ b/L2J_Mobius_Classic/dist/game/data/spawns/Others/24_21.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/L2J_Mobius_Classic/dist/game/data/stats/npcs/30900-30999.xml b/L2J_Mobius_Classic/dist/game/data/stats/npcs/30900-30999.xml index 3185c62344..376a5888d7 100644 --- a/L2J_Mobius_Classic/dist/game/data/stats/npcs/30900-30999.xml +++ b/L2J_Mobius_Classic/dist/game/data/stats/npcs/30900-30999.xml @@ -1445,11 +1445,7 @@ - - - - - + HUMANOID MALE diff --git a/L2J_Mobius_Classic/readme.txt b/L2J_Mobius_Classic/readme.txt index ca849b9c5d..333ffe58ce 100644 --- a/L2J_Mobius_Classic/readme.txt +++ b/L2J_Mobius_Classic/readme.txt @@ -50,3 +50,5 @@ TODO list -Moon Knight quest -Dungeon of Abyss https://www.youtube.com/watch?v=FZEu0hjCAK8 -New Savior class skills https://eu.4game.com/lineage2classic/play/saviors/classes/#newclasskills +-Provisional Clan Halls + \ No newline at end of file