diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/html/default/34414.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/html/default/34414.htm new file mode 100644 index 0000000000..453f4727b9 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/html/default/34414.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them pay back for what they're done. I swear.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt index 52ff5b37bb..b9ed84a082 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt @@ -1,7 +1,5 @@ 504 Competition for the Bandit Stronghold 561 Basic Mission: Harnak Underground Ruins -562 Basic Mission: Altar of Evil -563 Basic Mission: Bloody Swampland 565 Basic Mission: Fairy Settlement - West 566 Basic Mission: Fairy Settlement - East 567 Basic Mission: Isle of Souls @@ -15,10 +13,6 @@ 575 Special Mission: Fortuna 576 Special Mission: Defeat Spezion 580 Beyond the Memories -581 The Purification Ritual -582 Wash Blood with Blood -583 Meaning of Survival -584 Never Say Good Bye 585 Can't Go Against the Time 586 Mutated Creatures 587 More Aggressive Operation diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html new file mode 100644 index 0000000000..ee5909a872 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html @@ -0,0 +1,4 @@ +Teleport Device:
+(According to Gatekeeper Bella, in order to reach the Altar of Evil, you need to go to the Bloody SwamplandGo there and look for Lapathiaa Mystic of Dark Arts.)
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html new file mode 100644 index 0000000000..5f73e7c15a --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html @@ -0,0 +1,4 @@ +Gatekeeper Bella:
+ Do you have something else you need?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html new file mode 100644 index 0000000000..61054e646b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html @@ -0,0 +1,6 @@ +Gatekeeper Bella:
+Are you here on a mission from the Adventure Guild? I've seen many who are. If so, I'll explain the details.
+You'll have to select Dark Elf Village from the teleport link I give you and go there. The area for an active mission will appear at the top of the teleport list so it won't be hard to find.
+But you have to watch out for one thing.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html new file mode 100644 index 0000000000..3f5c6e5103 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html @@ -0,0 +1,5 @@ +Gatekeeper Bella:
+There's no Gatekeeper in the Dark Elf Village. In the past, there had been a Gatekeeper, however, now, due to a tragic accident, there is only a Teleport Device.
+Anyway, there's no other option. Go and check the missions.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html new file mode 100644 index 0000000000..6d0eeb391e --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html @@ -0,0 +1,4 @@ +Gatekeeper Elisa:
+You want to know how to go to the Altar of Evil? It must be because of your mission from the Adventure Guild! Alright, I'll tell you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html new file mode 100644 index 0000000000..021cbb0551 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html @@ -0,0 +1,5 @@ +Gatekeeper Elisa:
+The Altar of Evil is a Hunting Zone that can be accessed by the Dark Elf Village. But, there is no direct channel to teleport from the Town of Aden to the Dark Elf Village. So, you'll have to go somewhere that has teleporting routes to the Dark Elf Village.
+You should go to the Town of Gludio. Once you get there, ask Gatekeeper Bella about how to teleport. For now, why don't you just focus on getting to the Town of Gludio.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm new file mode 100644 index 0000000000..1c3d215937 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm new file mode 100644 index 0000000000..c7ebb5e75c --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm new file mode 100644 index 0000000000..952932f71b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm new file mode 100644 index 0000000000..2b1165f865 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm @@ -0,0 +1,6 @@ +Adventure Guildsman Penny:
+You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.
+But if you want to listen to the explanation again, I'd be happy to tell you.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html new file mode 100644 index 0000000000..6a2b0fce5e --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Black Wizard Lapathia at the Altar of Evil and do the mission that she gives you. When the mission is done, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html new file mode 100644 index 0000000000..c8bf4d565f --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html new file mode 100644 index 0000000000..190351d034 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to go to Black Wizard Lapathia at the Altar of Evil. Do the mission that Lapathia gives. Then, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html new file mode 100644 index 0000000000..05b3a3231b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+I'm sure the Gatekeeper of the town, Gatekeeper Elise, could give you a better explanation. Go to her and ask how you can go to the Altar of Evil. She's very friendly so don't be shy.
+If you anive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html new file mode 100644 index 0000000000..3ecc46dbe2 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+You need to leam how to get there first. Go to Gatekeeper Elise and ask how to go to the Altar of Evil. She will give you a detailed explanation.
+If you arive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html new file mode 100644 index 0000000000..f6bbf7a149 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.
+(To do "Basic Mission: Altar of Evil," you must do "The Purification Ritual" and "Wash Blood with Blood" through Black Wizard Lapathia.) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html new file mode 100644 index 0000000000..3a5774610d --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?
+Don't tell me you're going to walk all the way up there. I know a better way.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html new file mode 100644 index 0000000000..3e6d7f24be --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+When setting out for a joumey, veteran adventurers always pack Scrolls of Escape, it teleports the user immediately to the closest village or to the check point.
+If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html new file mode 100644 index 0000000000..2d2a44edc7 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html @@ -0,0 +1,6 @@ +Black Wizard Lapathia:
+You can use the scroll now or later. Just don't forget to pack enough Scrolls of Escape once you retum to town.
+You can easily buy Scrolls of Escape at stores. Be safe until we meet again.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java new file mode 100644 index 0000000000..559914a2a1 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java @@ -0,0 +1,271 @@ +/* + * 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.Q00562_BasicMissionAltarOfEvil; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.Location; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00562_BasicMissionAltarOfEvil + * @URL https://l2wiki.com/Basic_Mission:_Altar_of_Evil + * @author NightBR + */ +public class Q00562_BasicMissionAltarOfEvil extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int LAPATHIA = 34414; + private static final int ELISA = 30848; + private static final int BELLA = 30256; + private static final int DE_VILLAGE_TELEPORT_DEVICE = 30134; + // Reward's + private static final long EXP = 231860550; + private static final int SP = 231840; + private static final int FP = 200; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413; + // Misc + private static final int MIN_LEVEL = 85; + private static final int MAX_LEVEL = 88; + // Location + private static final Location TOWN_OF_ADEN = new Location(146632, 26760, -2213); + + public Q00562_BasicMissionAltarOfEvil() + { + super(562); + addStartNpc(PENNY); + addTalkId(PENNY, LAPATHIA); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-06.html": + case "30256-02.html": + case "34414-03.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-05.html": + { + qs.setCond(5, true); + htmltext = event; + break; + } + case "34413-09.html": + { + qs.setCond(2, true); + htmltext = event; + break; + } + case "34413-07.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-08.html"; + } + break; + } + case "30848-02.html": // ELISA + { + qs.setCond(3, true); + htmltext = event; + break; + } + case "30256-03.html": // BELLA + { + qs.setCond(4, true); + htmltext = event; + break; + } + case "34414-04.html": // DE_VILLAGE_TELEPORT_DEVICE + { + giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1); + htmltext = event; + break; + } + case "usescroll": + { + // TODO: force player to use item SCROLL_OF_ESCAPE_TOWN_OF_ADEN + player.teleToLocation(TOWN_OF_ADEN); // Town of Aden near Npc Penny - temp solution + takeItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, -1); // remove SOE - temp solution + qs.setCond(8, true); + break; + } + case "keepscroll": + { + qs.setCond(8, true); + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + if (qs.getCond() == 1) + { + htmltext = "34413-04.htm"; + } + else if (qs.getCond() == 2) + { + // htmltext = qs.getCond() == 2 ? "34413-10.htm" : "34413-06.html"; + htmltext = "33509-10.htm"; + } + else if (qs.getCond() == 5) + { + // htmltext = qs.getCond() == 5 ? "34413-08.htm" : "34413-06.html"; + htmltext = "34413-08.html"; + } + else + { + htmltext = "34413-06.html"; + } + break; + } + case ELISA: + { + htmltext = "30848-01.html"; + break; + } + case BELLA: + { + htmltext = "30256-01.html"; + break; + } + case DE_VILLAGE_TELEPORT_DEVICE: + { + qs.setCond(5, true); + htmltext = "30134-01.html"; + break; + } + case LAPATHIA: + { + if (qs.getCond() == 5) + { + qs.setCond(6, true); + htmltext = "34414-01.html"; + } + else + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(7, true); + htmltext = "34414-02.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00581_ThePurificationRitual"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00582_WashBloodWithBlood"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html new file mode 100644 index 0000000000..d81f2eca2b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Adventure Guild? I really appreciate it. I was desperate for help. The more help I can get, the better.
+(To do "Basic Mission: Blood Swampland," you must first carry out "Meaning of Survival" and "Never Say Good Bye" through Grocer Volllodos.) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html new file mode 100644 index 0000000000..dc2f0b11c1 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Now go back to Adventure Guildsman Penny.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm new file mode 100644 index 0000000000..5f46858b3b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm new file mode 100644 index 0000000000..318b325744 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm new file mode 100644 index 0000000000..fa0b430ee0 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with task at Blood SwampLand. If are successful, our Adventure Guild will give you additional rewards on top of the mission payment and, your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm new file mode 100644 index 0000000000..7d7198ba79 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Vollodos the Grocer at the Blood Swampland. He will give you a mission. Come back to me when you complete the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html new file mode 100644 index 0000000000..d3832d9aff --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html new file mode 100644 index 0000000000..6ef23bf39a --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to meet the Vollodos the Grocer at the Bloody Swampland. Do the mission, then come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java new file mode 100644 index 0000000000..f73321b1e8 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java @@ -0,0 +1,190 @@ +/* + * 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.Q00563_BasicMissionBloodySwampland; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00563_BasicMissionBloodySwampland + * @URL https://l2wiki.com/Basic_Mission:_Bloody_Swampland + * @author NightBR + */ +public class Q00563_BasicMissionBloodySwampland extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int VOLLODOS = 30137; + // Reward's + private static final long EXP = 429526470; + private static final int SP = 429510; + private static final int FP = 220; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + // Misc + private static final int MIN_LEVEL = 86; + private static final int MAX_LEVEL = 90; + + public Q00563_BasicMissionBloodySwampland() + { + super(563); + addStartNpc(PENNY); + addTalkId(PENNY, VOLLODOS); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-05.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-06.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-07.html"; + } + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + htmltext = qs.isCond(1) ? "34413-07.html" : "34413-05.html"; + break; + } + case VOLLODOS: + { + if (qs.isCond(1)) + { + qs.setCond(2, true); + htmltext = "30137-01.html"; + } + else if (qs.isCond(2)) + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(3, true); + htmltext = "30137-02.html"; + } + else + { + htmltext = "30137-01.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00583_MeaningOfSurvival"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00584_NeverSayGoodBye"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html index 0dfa3df849..ae83ec0828 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html @@ -1,4 +1,4 @@ Adventure Guildsman Penny:
-Welcome back! So, did you di a good job?
+Welcome back! So, did you do a good job?
\ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm new file mode 100644 index 0000000000..4b1574dff9 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Have you had a chance to visit this place before the Rain of Blood fell and drew crazy monsters here?
+Only few remember those days. This land is neither beautiful nor recommendable, but I still have precious memories here.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm new file mode 100644 index 0000000000..8b0337fdf2 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I was away from the Dark Elf Village for a long time doing research in the Ivory Tower. So, I was safe when the Rain of Blood and the Fog of Plague took the lives of my people.
+As soon as I retumed after completing the research, I realized what I had to do: to purify this land.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm new file mode 100644 index 0000000000..41ac1d9f55 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+It is not easy to prepare and perform the Purification Ritual alone. If you help me, I'll be able to purify this land more quickly.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm new file mode 100644 index 0000000000..dbbbcd78e3 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Defeat the Arbitor of Darkness, Altar of Evil Spirit Offering Box, Dartanion, and Dimensional Rifter at the Altar of Evil, and collect 100 Traces of Evil Spirit. You will get a reward for your effort, and I'll be able to perform the Purification Ritual more quickly.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html new file mode 100644 index 0000000000..58c3978cce --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html new file mode 100644 index 0000000000..99b795822f --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Thank you. It will help me purify this land more quickly. Now get some rest while you can. I may need your help again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java new file mode 100644 index 0000000000..e559b36715 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java @@ -0,0 +1,213 @@ +/* + * 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.Q00581_ThePurificationRitual; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00581_ThePurificationRitual extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23174, // Arbitor of Darkness + 23175, // Altar of Evil Spirit Offering Box + 23177, // Dartanion + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48377; // Traces of Evil Spirit + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00581_ThePurificationRitual() + { + super(581); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm new file mode 100644 index 0000000000..db403ae4ef --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+My ultimate goal is to purify this land, and Pm doing my best to fulfill it. But I don't want to lie to you. I have another goal.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm new file mode 100644 index 0000000000..e3639110b8 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+It's a personal vendetta. I may be aiming at the wrong target or employing unacceptable means, but it means a lot to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm new file mode 100644 index 0000000000..4a4d319c1e --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them wash away the blood of my people with theirs.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm new file mode 100644 index 0000000000..42f653e8d8 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+If you want to help my personal vendetta, please kill Mutated Cerberos, Insane Phions, Hellgate Fighting Dog, and Dimensional Rifters in the Bloody Swampland. If you bring me 100 Monster Fragments. I'll give you a reward.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html new file mode 100644 index 0000000000..2239bf228c --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+You've brought the Monster Fragments! This much must mean you've killed enough of them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html new file mode 100644 index 0000000000..adf82ef894 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+Here is the reward I promised. I hope we can work together again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java new file mode 100644 index 0000000000..50cf05c45c --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java @@ -0,0 +1,213 @@ +/* + * 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.Q00582_WashBloodWithBlood; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00582_WashBloodWithBlood extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23176, // Mutated Cerberos + 23178, // Insane Phions + 23180, // Hellgate Fighting Dog + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48378; // Monster Fragment + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00582_WashBloodWithBlood() + { + super(582); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm new file mode 100644 index 0000000000..60163a741b --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Have you been to the Dark Elf Village?
+Some unusual events occurred here. Most of my clansmen were killed, and I had no choice but to abandon the village.
+The epidemic is covering the entire continent. Look! Don't you see the blackish red fog all over this area? It will kill us all!
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm new file mode 100644 index 0000000000..4ad8b63ebb --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+The problem is that not everyone has found a safe haven. Those who have not found a place to retreat to, or have their reasons for not being able to relocate to some place safe, are bound to die of the epidemic. Many around me have met their demise that way.
+At this rate, the casualties will continue to mount. Could you possibly help me?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm new file mode 100644 index 0000000000..d6cad466d7 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+I am actually working on an antidote for the epidemic along with several Dark Elves who have survived. But I'm not a scholar or a magician, so there aren't that many things I can do. All I can do is collect research materials from nearby monsters to help with the research.
+But I'm not a warrior, so that's why I must ask adventurers like you for help.
+Please gather research ingredients from the monsters in the Bloody Swampland. If you do so, you'll have my etemal gratitude!
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm new file mode 100644 index 0000000000..425a4e4192 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Oh, great! So, what you have to do is to collect research ingredients from the monsters in the Bloody Swampland.
+Defeat Corpse Devourer, Corpse Absorber, Contaminated Rotten Root, Corpse Collector, and Decayed Spore, and collect 100 Putrefied Extracts. I will certainly pay for your efforts.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html new file mode 100644 index 0000000000..10a02e6667 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Did you get them all already? You're... amazingly quick. I thought it would take longer to collect the Putrefied Extracts.
+Please give me the extracts. Then, I'll pay for them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html new file mode 100644 index 0000000000..37ef4017f4 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Thank you for helping us. The researchers will be thrilled to see them.
+I hope that no more people perish from this epidemic. We will do our best to successfully develop an antidote.
+Please continue to be careful as you travel in this area.
+Oh! The antidote research will continue, so if you have time tomorrow, please stop by again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java new file mode 100644 index 0000000000..1eb37987ab --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java @@ -0,0 +1,214 @@ +/* + * 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.Q00583_MeaningOfSurvival; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00583) + * @URL https://l2wiki.com/Meaning_of_Survival + * @author NightBR + */ +public class Q00583_MeaningOfSurvival extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23162, // Corpse Devourer + 23163, // Corpse Absorber + 23166, // Contaminated Rotten Root + 23167, // Decayed Spore + 23171, // Corpse Collector + }; + // Item + private static final int MONSTER_DROP = 48379; // Putrefied Extracts + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00583_MeaningOfSurvival() + { + super(583); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm new file mode 100644 index 0000000000..359d0f4b83 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+An old saying has it that a disastrous event can change you to a completely different person. I heard it many times but never paid attention because I thought such event would never happen to me.
+But alas... the old saying was true after all.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm new file mode 100644 index 0000000000..f68f5f9a47 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I had friends. Not many, but they meant a lot to me.
+Then, a disaster occurred near Dark Elf Village and killed all of them. I survived, but with no friends.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm new file mode 100644 index 0000000000..cbb8f5e686 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+They left forever before I said good-bye. So, I'd like to hold a memorial service for my dear friends.
+If you don't mind, I'd like to ask a favor of you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm new file mode 100644 index 0000000000..0da57e9407 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+I want you to gather materials for the memorial service for my poor friends. Hunt Swamp Trackers, Corpse Shredder, Swamp Assassins, Delegates of Blood, and Swamp Watchers in the Bloody Swampland, and bring me 100 Rotten Blood.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html new file mode 100644 index 0000000000..0bc6e365b0 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You brought the Rotten Blood? Oh, that's plenty. Please give it to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html new file mode 100644 index 0000000000..fa9b1940b2 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Here is the reward I promised. There's one thing I'd like to tell you... Take care of your friends and make good memories with them. Otherwise, you'll regret it when they're gone.
+Ah... sorry. Forget what I just said. Anyway, you are always welcome here. I could always use your help. Visit me whenever you have time.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java new file mode 100644 index 0000000000..9d182ee45e --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java @@ -0,0 +1,214 @@ +/* + * 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.Q00584_NeverSayGoodBye; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Never Say Good Bye (00584) + * @URL https://l2wiki.com/Never_Say_Good_Bye + * @author NightBR + */ +public class Q00584_NeverSayGoodBye extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23164, // Corpse Shredder + 23168, // Swamp Tracker + 23169, // Swamp Assassin + 23170, // Swamp Watcher + 23172, // Delegate of Blood + }; + // Item + private static final int MONSTER_DROP = 48380; // Rotten Blood + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00584_NeverSayGoodBye() + { + super(584); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java index 7ee2c307ff..d4ec04770e 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -137,7 +137,13 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot; import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot; import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter; import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated; +import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil; +import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland; import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo; +import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual; +import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; +import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; +import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00620_FourGoblets.Q00620_FourGoblets; @@ -577,8 +583,8 @@ public class QuestMasterHandler Q00551_OlympiadStarter.class, Q00553_OlympiadUndefeated.class, Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done. - Q00562_BasicMissionAltarOfEvil.class, // TODO: Not done. - Q00563_BasicMissionBloodySwampland.class, // TODO: Not done. + Q00562_BasicMissionAltarOfEvil.class, + Q00563_BasicMissionBloodySwampland.class, Q00564_BasicMissionKartiasLabyrinthSolo.class, Q00565_BasicMissionFairySettlementWest.class, // TODO: Not done. Q00566_BasicMissionFairySettlementEast.class, // TODO: Not done. diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java deleted file mode 100644 index 1bdf89eda7..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00562_BasicMissionAltarOfEvil extends Quest -{ - private static final int START_NPC = 34413; - - public Q00562_BasicMissionAltarOfEvil() - { - super(562); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java deleted file mode 100644 index c1a74b7f5a..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00563_BasicMissionBloodySwampland extends Quest -{ - private static final int START_NPC = 34413; - - public Q00563_BasicMissionBloodySwampland() - { - super(563); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java deleted file mode 100644 index 63378e4973..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00581_ThePurificationRitual extends Quest -{ - private static final int START_NPC = 34414; - - public Q00581_ThePurificationRitual() - { - super(581); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java deleted file mode 100644 index d59ab02e69..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00582_WashBloodWithBlood extends Quest -{ - private static final int START_NPC = 34414; - - public Q00582_WashBloodWithBlood() - { - super(582); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java deleted file mode 100644 index 4acc17b7ef..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00583_MeaningOfSurvival extends Quest -{ - private static final int START_NPC = 30137; - - public Q00583_MeaningOfSurvival() - { - super(583); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java deleted file mode 100644 index 81c6a8549b..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00584_NeverSayGoodBye extends Quest -{ - private static final int START_NPC = 30137; - - public Q00584_NeverSayGoodBye() - { - super(584); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/html/default/34414.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/html/default/34414.htm new file mode 100644 index 0000000000..453f4727b9 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/html/default/34414.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them pay back for what they're done. I swear.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt index 3f2b08ddb0..9f3e50fd0f 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt @@ -5,8 +5,6 @@ 556 Red Libra Request - Fallen Emperor's Throne 557 Red Libra Request - Fall of Etina 561 Basic Mission: Harnak Underground Ruins -562 Basic Mission: Altar of Evil -563 Basic Mission: Bloody Swampland 565 Basic Mission: Fairy Settlement - West 566 Basic Mission: Fairy Settlement - East 567 Basic Mission: Isle of Souls @@ -21,10 +19,6 @@ 576 Special Mission: Defeat Spezion 577 Basic Mission: Silent Valley 580 Beyond the Memories -581 The Purification Ritual -582 Wash Blood with Blood -583 Meaning of Survival -584 Never Say Good Bye 585 Can't Go Against the Time 586 Mutated Creatures 587 More Aggressive Operation diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html new file mode 100644 index 0000000000..ee5909a872 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html @@ -0,0 +1,4 @@ +Teleport Device:
+(According to Gatekeeper Bella, in order to reach the Altar of Evil, you need to go to the Bloody SwamplandGo there and look for Lapathiaa Mystic of Dark Arts.)
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html new file mode 100644 index 0000000000..5f73e7c15a --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html @@ -0,0 +1,4 @@ +Gatekeeper Bella:
+ Do you have something else you need?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html new file mode 100644 index 0000000000..61054e646b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html @@ -0,0 +1,6 @@ +Gatekeeper Bella:
+Are you here on a mission from the Adventure Guild? I've seen many who are. If so, I'll explain the details.
+You'll have to select Dark Elf Village from the teleport link I give you and go there. The area for an active mission will appear at the top of the teleport list so it won't be hard to find.
+But you have to watch out for one thing.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html new file mode 100644 index 0000000000..3f5c6e5103 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html @@ -0,0 +1,5 @@ +Gatekeeper Bella:
+There's no Gatekeeper in the Dark Elf Village. In the past, there had been a Gatekeeper, however, now, due to a tragic accident, there is only a Teleport Device.
+Anyway, there's no other option. Go and check the missions.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html new file mode 100644 index 0000000000..6d0eeb391e --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html @@ -0,0 +1,4 @@ +Gatekeeper Elisa:
+You want to know how to go to the Altar of Evil? It must be because of your mission from the Adventure Guild! Alright, I'll tell you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html new file mode 100644 index 0000000000..021cbb0551 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html @@ -0,0 +1,5 @@ +Gatekeeper Elisa:
+The Altar of Evil is a Hunting Zone that can be accessed by the Dark Elf Village. But, there is no direct channel to teleport from the Town of Aden to the Dark Elf Village. So, you'll have to go somewhere that has teleporting routes to the Dark Elf Village.
+You should go to the Town of Gludio. Once you get there, ask Gatekeeper Bella about how to teleport. For now, why don't you just focus on getting to the Town of Gludio.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm new file mode 100644 index 0000000000..1c3d215937 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm new file mode 100644 index 0000000000..c7ebb5e75c --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm new file mode 100644 index 0000000000..952932f71b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm new file mode 100644 index 0000000000..2b1165f865 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm @@ -0,0 +1,6 @@ +Adventure Guildsman Penny:
+You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.
+But if you want to listen to the explanation again, I'd be happy to tell you.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html new file mode 100644 index 0000000000..6a2b0fce5e --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Black Wizard Lapathia at the Altar of Evil and do the mission that she gives you. When the mission is done, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html new file mode 100644 index 0000000000..c8bf4d565f --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html new file mode 100644 index 0000000000..190351d034 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to go to Black Wizard Lapathia at the Altar of Evil. Do the mission that Lapathia gives. Then, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html new file mode 100644 index 0000000000..05b3a3231b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+I'm sure the Gatekeeper of the town, Gatekeeper Elise, could give you a better explanation. Go to her and ask how you can go to the Altar of Evil. She's very friendly so don't be shy.
+If you anive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html new file mode 100644 index 0000000000..3ecc46dbe2 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+You need to leam how to get there first. Go to Gatekeeper Elise and ask how to go to the Altar of Evil. She will give you a detailed explanation.
+If you arive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html new file mode 100644 index 0000000000..f6bbf7a149 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.
+(To do "Basic Mission: Altar of Evil," you must do "The Purification Ritual" and "Wash Blood with Blood" through Black Wizard Lapathia.) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html new file mode 100644 index 0000000000..3a5774610d --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?
+Don't tell me you're going to walk all the way up there. I know a better way.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html new file mode 100644 index 0000000000..3e6d7f24be --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+When setting out for a joumey, veteran adventurers always pack Scrolls of Escape, it teleports the user immediately to the closest village or to the check point.
+If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html new file mode 100644 index 0000000000..2d2a44edc7 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html @@ -0,0 +1,6 @@ +Black Wizard Lapathia:
+You can use the scroll now or later. Just don't forget to pack enough Scrolls of Escape once you retum to town.
+You can easily buy Scrolls of Escape at stores. Be safe until we meet again.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java new file mode 100644 index 0000000000..559914a2a1 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java @@ -0,0 +1,271 @@ +/* + * 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.Q00562_BasicMissionAltarOfEvil; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.Location; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00562_BasicMissionAltarOfEvil + * @URL https://l2wiki.com/Basic_Mission:_Altar_of_Evil + * @author NightBR + */ +public class Q00562_BasicMissionAltarOfEvil extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int LAPATHIA = 34414; + private static final int ELISA = 30848; + private static final int BELLA = 30256; + private static final int DE_VILLAGE_TELEPORT_DEVICE = 30134; + // Reward's + private static final long EXP = 231860550; + private static final int SP = 231840; + private static final int FP = 200; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413; + // Misc + private static final int MIN_LEVEL = 85; + private static final int MAX_LEVEL = 88; + // Location + private static final Location TOWN_OF_ADEN = new Location(146632, 26760, -2213); + + public Q00562_BasicMissionAltarOfEvil() + { + super(562); + addStartNpc(PENNY); + addTalkId(PENNY, LAPATHIA); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-06.html": + case "30256-02.html": + case "34414-03.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-05.html": + { + qs.setCond(5, true); + htmltext = event; + break; + } + case "34413-09.html": + { + qs.setCond(2, true); + htmltext = event; + break; + } + case "34413-07.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-08.html"; + } + break; + } + case "30848-02.html": // ELISA + { + qs.setCond(3, true); + htmltext = event; + break; + } + case "30256-03.html": // BELLA + { + qs.setCond(4, true); + htmltext = event; + break; + } + case "34414-04.html": // DE_VILLAGE_TELEPORT_DEVICE + { + giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1); + htmltext = event; + break; + } + case "usescroll": + { + // TODO: force player to use item SCROLL_OF_ESCAPE_TOWN_OF_ADEN + player.teleToLocation(TOWN_OF_ADEN); // Town of Aden near Npc Penny - temp solution + takeItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, -1); // remove SOE - temp solution + qs.setCond(8, true); + break; + } + case "keepscroll": + { + qs.setCond(8, true); + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + if (qs.getCond() == 1) + { + htmltext = "34413-04.htm"; + } + else if (qs.getCond() == 2) + { + // htmltext = qs.getCond() == 2 ? "34413-10.htm" : "34413-06.html"; + htmltext = "33509-10.htm"; + } + else if (qs.getCond() == 5) + { + // htmltext = qs.getCond() == 5 ? "34413-08.htm" : "34413-06.html"; + htmltext = "34413-08.html"; + } + else + { + htmltext = "34413-06.html"; + } + break; + } + case ELISA: + { + htmltext = "30848-01.html"; + break; + } + case BELLA: + { + htmltext = "30256-01.html"; + break; + } + case DE_VILLAGE_TELEPORT_DEVICE: + { + qs.setCond(5, true); + htmltext = "30134-01.html"; + break; + } + case LAPATHIA: + { + if (qs.getCond() == 5) + { + qs.setCond(6, true); + htmltext = "34414-01.html"; + } + else + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(7, true); + htmltext = "34414-02.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00581_ThePurificationRitual"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00582_WashBloodWithBlood"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html new file mode 100644 index 0000000000..d81f2eca2b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Adventure Guild? I really appreciate it. I was desperate for help. The more help I can get, the better.
+(To do "Basic Mission: Blood Swampland," you must first carry out "Meaning of Survival" and "Never Say Good Bye" through Grocer Volllodos.) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html new file mode 100644 index 0000000000..dc2f0b11c1 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Now go back to Adventure Guildsman Penny.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm new file mode 100644 index 0000000000..5f46858b3b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm new file mode 100644 index 0000000000..318b325744 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm new file mode 100644 index 0000000000..fa0b430ee0 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with task at Blood SwampLand. If are successful, our Adventure Guild will give you additional rewards on top of the mission payment and, your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm new file mode 100644 index 0000000000..7d7198ba79 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Vollodos the Grocer at the Blood Swampland. He will give you a mission. Come back to me when you complete the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html new file mode 100644 index 0000000000..d3832d9aff --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html new file mode 100644 index 0000000000..6ef23bf39a --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to meet the Vollodos the Grocer at the Bloody Swampland. Do the mission, then come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java new file mode 100644 index 0000000000..f73321b1e8 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java @@ -0,0 +1,190 @@ +/* + * 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.Q00563_BasicMissionBloodySwampland; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00563_BasicMissionBloodySwampland + * @URL https://l2wiki.com/Basic_Mission:_Bloody_Swampland + * @author NightBR + */ +public class Q00563_BasicMissionBloodySwampland extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int VOLLODOS = 30137; + // Reward's + private static final long EXP = 429526470; + private static final int SP = 429510; + private static final int FP = 220; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + // Misc + private static final int MIN_LEVEL = 86; + private static final int MAX_LEVEL = 90; + + public Q00563_BasicMissionBloodySwampland() + { + super(563); + addStartNpc(PENNY); + addTalkId(PENNY, VOLLODOS); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-05.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-06.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-07.html"; + } + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + htmltext = qs.isCond(1) ? "34413-07.html" : "34413-05.html"; + break; + } + case VOLLODOS: + { + if (qs.isCond(1)) + { + qs.setCond(2, true); + htmltext = "30137-01.html"; + } + else if (qs.isCond(2)) + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(3, true); + htmltext = "30137-02.html"; + } + else + { + htmltext = "30137-01.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00583_MeaningOfSurvival"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00584_NeverSayGoodBye"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html index 0dfa3df849..ae83ec0828 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html @@ -1,4 +1,4 @@ Adventure Guildsman Penny:
-Welcome back! So, did you di a good job?
+Welcome back! So, did you do a good job?
\ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm new file mode 100644 index 0000000000..4b1574dff9 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Have you had a chance to visit this place before the Rain of Blood fell and drew crazy monsters here?
+Only few remember those days. This land is neither beautiful nor recommendable, but I still have precious memories here.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm new file mode 100644 index 0000000000..8b0337fdf2 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I was away from the Dark Elf Village for a long time doing research in the Ivory Tower. So, I was safe when the Rain of Blood and the Fog of Plague took the lives of my people.
+As soon as I retumed after completing the research, I realized what I had to do: to purify this land.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm new file mode 100644 index 0000000000..41ac1d9f55 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+It is not easy to prepare and perform the Purification Ritual alone. If you help me, I'll be able to purify this land more quickly.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm new file mode 100644 index 0000000000..dbbbcd78e3 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Defeat the Arbitor of Darkness, Altar of Evil Spirit Offering Box, Dartanion, and Dimensional Rifter at the Altar of Evil, and collect 100 Traces of Evil Spirit. You will get a reward for your effort, and I'll be able to perform the Purification Ritual more quickly.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html new file mode 100644 index 0000000000..58c3978cce --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html new file mode 100644 index 0000000000..99b795822f --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Thank you. It will help me purify this land more quickly. Now get some rest while you can. I may need your help again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java new file mode 100644 index 0000000000..e559b36715 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java @@ -0,0 +1,213 @@ +/* + * 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.Q00581_ThePurificationRitual; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00581_ThePurificationRitual extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23174, // Arbitor of Darkness + 23175, // Altar of Evil Spirit Offering Box + 23177, // Dartanion + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48377; // Traces of Evil Spirit + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00581_ThePurificationRitual() + { + super(581); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm new file mode 100644 index 0000000000..db403ae4ef --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+My ultimate goal is to purify this land, and Pm doing my best to fulfill it. But I don't want to lie to you. I have another goal.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm new file mode 100644 index 0000000000..e3639110b8 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+It's a personal vendetta. I may be aiming at the wrong target or employing unacceptable means, but it means a lot to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm new file mode 100644 index 0000000000..4a4d319c1e --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them wash away the blood of my people with theirs.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm new file mode 100644 index 0000000000..42f653e8d8 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+If you want to help my personal vendetta, please kill Mutated Cerberos, Insane Phions, Hellgate Fighting Dog, and Dimensional Rifters in the Bloody Swampland. If you bring me 100 Monster Fragments. I'll give you a reward.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html new file mode 100644 index 0000000000..2239bf228c --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+You've brought the Monster Fragments! This much must mean you've killed enough of them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html new file mode 100644 index 0000000000..adf82ef894 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+Here is the reward I promised. I hope we can work together again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java new file mode 100644 index 0000000000..50cf05c45c --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java @@ -0,0 +1,213 @@ +/* + * 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.Q00582_WashBloodWithBlood; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00582_WashBloodWithBlood extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23176, // Mutated Cerberos + 23178, // Insane Phions + 23180, // Hellgate Fighting Dog + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48378; // Monster Fragment + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00582_WashBloodWithBlood() + { + super(582); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm new file mode 100644 index 0000000000..60163a741b --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Have you been to the Dark Elf Village?
+Some unusual events occurred here. Most of my clansmen were killed, and I had no choice but to abandon the village.
+The epidemic is covering the entire continent. Look! Don't you see the blackish red fog all over this area? It will kill us all!
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm new file mode 100644 index 0000000000..4ad8b63ebb --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+The problem is that not everyone has found a safe haven. Those who have not found a place to retreat to, or have their reasons for not being able to relocate to some place safe, are bound to die of the epidemic. Many around me have met their demise that way.
+At this rate, the casualties will continue to mount. Could you possibly help me?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm new file mode 100644 index 0000000000..d6cad466d7 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+I am actually working on an antidote for the epidemic along with several Dark Elves who have survived. But I'm not a scholar or a magician, so there aren't that many things I can do. All I can do is collect research materials from nearby monsters to help with the research.
+But I'm not a warrior, so that's why I must ask adventurers like you for help.
+Please gather research ingredients from the monsters in the Bloody Swampland. If you do so, you'll have my etemal gratitude!
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm new file mode 100644 index 0000000000..425a4e4192 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Oh, great! So, what you have to do is to collect research ingredients from the monsters in the Bloody Swampland.
+Defeat Corpse Devourer, Corpse Absorber, Contaminated Rotten Root, Corpse Collector, and Decayed Spore, and collect 100 Putrefied Extracts. I will certainly pay for your efforts.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html new file mode 100644 index 0000000000..10a02e6667 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Did you get them all already? You're... amazingly quick. I thought it would take longer to collect the Putrefied Extracts.
+Please give me the extracts. Then, I'll pay for them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html new file mode 100644 index 0000000000..37ef4017f4 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Thank you for helping us. The researchers will be thrilled to see them.
+I hope that no more people perish from this epidemic. We will do our best to successfully develop an antidote.
+Please continue to be careful as you travel in this area.
+Oh! The antidote research will continue, so if you have time tomorrow, please stop by again.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java new file mode 100644 index 0000000000..1eb37987ab --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java @@ -0,0 +1,214 @@ +/* + * 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.Q00583_MeaningOfSurvival; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00583) + * @URL https://l2wiki.com/Meaning_of_Survival + * @author NightBR + */ +public class Q00583_MeaningOfSurvival extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23162, // Corpse Devourer + 23163, // Corpse Absorber + 23166, // Contaminated Rotten Root + 23167, // Decayed Spore + 23171, // Corpse Collector + }; + // Item + private static final int MONSTER_DROP = 48379; // Putrefied Extracts + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00583_MeaningOfSurvival() + { + super(583); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm new file mode 100644 index 0000000000..359d0f4b83 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+An old saying has it that a disastrous event can change you to a completely different person. I heard it many times but never paid attention because I thought such event would never happen to me.
+But alas... the old saying was true after all.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm new file mode 100644 index 0000000000..f68f5f9a47 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I had friends. Not many, but they meant a lot to me.
+Then, a disaster occurred near Dark Elf Village and killed all of them. I survived, but with no friends.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm new file mode 100644 index 0000000000..cbb8f5e686 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+They left forever before I said good-bye. So, I'd like to hold a memorial service for my dear friends.
+If you don't mind, I'd like to ask a favor of you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm new file mode 100644 index 0000000000..0da57e9407 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+I want you to gather materials for the memorial service for my poor friends. Hunt Swamp Trackers, Corpse Shredder, Swamp Assassins, Delegates of Blood, and Swamp Watchers in the Bloody Swampland, and bring me 100 Rotten Blood.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html new file mode 100644 index 0000000000..0bc6e365b0 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You brought the Rotten Blood? Oh, that's plenty. Please give it to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html new file mode 100644 index 0000000000..fa9b1940b2 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Here is the reward I promised. There's one thing I'd like to tell you... Take care of your friends and make good memories with them. Otherwise, you'll regret it when they're gone.
+Ah... sorry. Forget what I just said. Anyway, you are always welcome here. I could always use your help. Visit me whenever you have time.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java new file mode 100644 index 0000000000..9d182ee45e --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java @@ -0,0 +1,214 @@ +/* + * 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.Q00584_NeverSayGoodBye; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Never Say Good Bye (00584) + * @URL https://l2wiki.com/Never_Say_Good_Bye + * @author NightBR + */ +public class Q00584_NeverSayGoodBye extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23164, // Corpse Shredder + 23168, // Swamp Tracker + 23169, // Swamp Assassin + 23170, // Swamp Watcher + 23172, // Delegate of Blood + }; + // Item + private static final int MONSTER_DROP = 48380; // Rotten Blood + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00584_NeverSayGoodBye() + { + super(584); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java index 092a3558e8..2b09b2eb8f 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -115,7 +115,13 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot; import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot; import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter; import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated; +import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil; +import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland; import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo; +import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual; +import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; +import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; +import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00620_FourGoblets.Q00620_FourGoblets; @@ -506,8 +512,8 @@ public class QuestMasterHandler Q00551_OlympiadStarter.class, Q00553_OlympiadUndefeated.class, Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done. - Q00562_BasicMissionAltarOfEvil.class, // TODO: Not done. - Q00563_BasicMissionBloodySwampland.class, // TODO: Not done. + Q00562_BasicMissionAltarOfEvil.class, + Q00563_BasicMissionBloodySwampland.class, Q00564_BasicMissionKartiasLabyrinthSolo.class, Q00565_BasicMissionFairySettlementWest.class, // TODO: Not done. Q00566_BasicMissionFairySettlementEast.class, // TODO: Not done. @@ -523,10 +529,10 @@ public class QuestMasterHandler Q00576_SpecialMissionDefeatSpezion.class, // TODO: Not done. Q00577_BasicMissionSilentValley.class, // TODO: Not done. Q00580_BeyondTheMemories.class, // TODO: Not done. - Q00581_ThePurificationRitual.class, // TODO: Not done. - Q00582_WashBloodWithBlood.class, // TODO: Not done. - Q00583_MeaningOfSurvival.class, // TODO: Not done. - Q00584_NeverSayGoodBye.class, // TODO: Not done. + Q00581_ThePurificationRitual.class, + Q00582_WashBloodWithBlood.class, + Q00583_MeaningOfSurvival.class, + Q00584_NeverSayGoodBye.class, Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class, // TODO: Not done. diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java deleted file mode 100644 index 1bdf89eda7..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00562_BasicMissionAltarOfEvil extends Quest -{ - private static final int START_NPC = 34413; - - public Q00562_BasicMissionAltarOfEvil() - { - super(562); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java deleted file mode 100644 index c1a74b7f5a..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00563_BasicMissionBloodySwampland extends Quest -{ - private static final int START_NPC = 34413; - - public Q00563_BasicMissionBloodySwampland() - { - super(563); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java deleted file mode 100644 index 63378e4973..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00581_ThePurificationRitual extends Quest -{ - private static final int START_NPC = 34414; - - public Q00581_ThePurificationRitual() - { - super(581); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java deleted file mode 100644 index d59ab02e69..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00582_WashBloodWithBlood extends Quest -{ - private static final int START_NPC = 34414; - - public Q00582_WashBloodWithBlood() - { - super(582); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java deleted file mode 100644 index 4acc17b7ef..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00583_MeaningOfSurvival extends Quest -{ - private static final int START_NPC = 30137; - - public Q00583_MeaningOfSurvival() - { - super(583); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java deleted file mode 100644 index 81c6a8549b..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00584_NeverSayGoodBye extends Quest -{ - private static final int START_NPC = 30137; - - public Q00584_NeverSayGoodBye() - { - super(584); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/html/default/34414.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/html/default/34414.htm new file mode 100644 index 0000000000..453f4727b9 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/html/default/34414.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them pay back for what they're done. I swear.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt index 9560f980d4..0467f9ea43 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt @@ -8,8 +8,6 @@ 558 Request from the Red Libra Guild - Sea of Spores 559 Request from the Red Libra Guild - Krofin’s Nest 561 Basic Mission: Harnak Underground Ruins -562 Basic Mission: Altar of Evil -563 Basic Mission: Bloody Swampland 565 Basic Mission: Fairy Settlement - West 566 Basic Mission: Fairy Settlement - East 567 Basic Mission: Isle of Souls @@ -25,10 +23,6 @@ 578 Basic Mission: Cemetery 579 Basic Mission: Blazing Swamp 580 Beyond the Memories -581 The Purification Ritual -582 Wash Blood with Blood -583 Meaning of Survival -584 Never Say Good Bye 585 Can't Go Against the Time 586 Mutated Creatures 587 More Aggressive Operation diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html new file mode 100644 index 0000000000..ee5909a872 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30134-01.html @@ -0,0 +1,4 @@ +Teleport Device:
+(According to Gatekeeper Bella, in order to reach the Altar of Evil, you need to go to the Bloody SwamplandGo there and look for Lapathiaa Mystic of Dark Arts.)
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html new file mode 100644 index 0000000000..5f73e7c15a --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-01.html @@ -0,0 +1,4 @@ +Gatekeeper Bella:
+ Do you have something else you need?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html new file mode 100644 index 0000000000..61054e646b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-02.html @@ -0,0 +1,6 @@ +Gatekeeper Bella:
+Are you here on a mission from the Adventure Guild? I've seen many who are. If so, I'll explain the details.
+You'll have to select Dark Elf Village from the teleport link I give you and go there. The area for an active mission will appear at the top of the teleport list so it won't be hard to find.
+But you have to watch out for one thing.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html new file mode 100644 index 0000000000..3f5c6e5103 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30256-03.html @@ -0,0 +1,5 @@ +Gatekeeper Bella:
+There's no Gatekeeper in the Dark Elf Village. In the past, there had been a Gatekeeper, however, now, due to a tragic accident, there is only a Teleport Device.
+Anyway, there's no other option. Go and check the missions.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html new file mode 100644 index 0000000000..6d0eeb391e --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-01.html @@ -0,0 +1,4 @@ +Gatekeeper Elisa:
+You want to know how to go to the Altar of Evil? It must be because of your mission from the Adventure Guild! Alright, I'll tell you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html new file mode 100644 index 0000000000..021cbb0551 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/30848-02.html @@ -0,0 +1,5 @@ +Gatekeeper Elisa:
+The Altar of Evil is a Hunting Zone that can be accessed by the Dark Elf Village. But, there is no direct channel to teleport from the Town of Aden to the Dark Elf Village. So, you'll have to go somewhere that has teleporting routes to the Dark Elf Village.
+You should go to the Town of Gludio. Once you get there, ask Gatekeeper Bella about how to teleport. For now, why don't you just focus on getting to the Town of Gludio.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm new file mode 100644 index 0000000000..1c3d215937 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm new file mode 100644 index 0000000000..c7ebb5e75c --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm new file mode 100644 index 0000000000..952932f71b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm new file mode 100644 index 0000000000..2b1165f865 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-04.htm @@ -0,0 +1,6 @@ +Adventure Guildsman Penny:
+You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.
+But if you want to listen to the explanation again, I'd be happy to tell you.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html new file mode 100644 index 0000000000..6a2b0fce5e --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-05.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Black Wizard Lapathia at the Altar of Evil and do the mission that she gives you. When the mission is done, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html new file mode 100644 index 0000000000..c8bf4d565f --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-06.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html new file mode 100644 index 0000000000..190351d034 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-08.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to go to Black Wizard Lapathia at the Altar of Evil. Do the mission that Lapathia gives. Then, come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html new file mode 100644 index 0000000000..05b3a3231b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-09.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+I'm sure the Gatekeeper of the town, Gatekeeper Elise, could give you a better explanation. Go to her and ask how you can go to the Altar of Evil. She's very friendly so don't be shy.
+If you anive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html new file mode 100644 index 0000000000..3ecc46dbe2 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34413-10.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+You need to leam how to get there first. Go to Gatekeeper Elise and ask how to go to the Altar of Evil. She will give you a detailed explanation.
+If you arive successfully, meet the black wizard, Lapathia, and ask about the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html new file mode 100644 index 0000000000..f6bbf7a149 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-01.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.
+(To do "Basic Mission: Altar of Evil," you must do "The Purification Ritual" and "Wash Blood with Blood" through Black Wizard Lapathia.) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html new file mode 100644 index 0000000000..3a5774610d --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-02.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?
+Don't tell me you're going to walk all the way up there. I know a better way.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html new file mode 100644 index 0000000000..3e6d7f24be --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-03.html @@ -0,0 +1,5 @@ +Black Wizard Lapathia:
+When setting out for a joumey, veteran adventurers always pack Scrolls of Escape, it teleports the user immediately to the closest village or to the check point.
+If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html new file mode 100644 index 0000000000..2d2a44edc7 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/34414-04.html @@ -0,0 +1,6 @@ +Black Wizard Lapathia:
+You can use the scroll now or later. Just don't forget to pack enough Scrolls of Escape once you retum to town.
+You can easily buy Scrolls of Escape at stores. Be safe until we meet again.
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java new file mode 100644 index 0000000000..559914a2a1 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/Q00562_BasicMissionAltarOfEvil.java @@ -0,0 +1,271 @@ +/* + * 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.Q00562_BasicMissionAltarOfEvil; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.Location; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00562_BasicMissionAltarOfEvil + * @URL https://l2wiki.com/Basic_Mission:_Altar_of_Evil + * @author NightBR + */ +public class Q00562_BasicMissionAltarOfEvil extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int LAPATHIA = 34414; + private static final int ELISA = 30848; + private static final int BELLA = 30256; + private static final int DE_VILLAGE_TELEPORT_DEVICE = 30134; + // Reward's + private static final long EXP = 231860550; + private static final int SP = 231840; + private static final int FP = 200; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413; + // Misc + private static final int MIN_LEVEL = 85; + private static final int MAX_LEVEL = 88; + // Location + private static final Location TOWN_OF_ADEN = new Location(146632, 26760, -2213); + + public Q00562_BasicMissionAltarOfEvil() + { + super(562); + addStartNpc(PENNY); + addTalkId(PENNY, LAPATHIA); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-06.html": + case "30256-02.html": + case "34414-03.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-05.html": + { + qs.setCond(5, true); + htmltext = event; + break; + } + case "34413-09.html": + { + qs.setCond(2, true); + htmltext = event; + break; + } + case "34413-07.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-08.html"; + } + break; + } + case "30848-02.html": // ELISA + { + qs.setCond(3, true); + htmltext = event; + break; + } + case "30256-03.html": // BELLA + { + qs.setCond(4, true); + htmltext = event; + break; + } + case "34414-04.html": // DE_VILLAGE_TELEPORT_DEVICE + { + giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1); + htmltext = event; + break; + } + case "usescroll": + { + // TODO: force player to use item SCROLL_OF_ESCAPE_TOWN_OF_ADEN + player.teleToLocation(TOWN_OF_ADEN); // Town of Aden near Npc Penny - temp solution + takeItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, -1); // remove SOE - temp solution + qs.setCond(8, true); + break; + } + case "keepscroll": + { + qs.setCond(8, true); + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + if (qs.getCond() == 1) + { + htmltext = "34413-04.htm"; + } + else if (qs.getCond() == 2) + { + // htmltext = qs.getCond() == 2 ? "34413-10.htm" : "34413-06.html"; + htmltext = "33509-10.htm"; + } + else if (qs.getCond() == 5) + { + // htmltext = qs.getCond() == 5 ? "34413-08.htm" : "34413-06.html"; + htmltext = "34413-08.html"; + } + else + { + htmltext = "34413-06.html"; + } + break; + } + case ELISA: + { + htmltext = "30848-01.html"; + break; + } + case BELLA: + { + htmltext = "30256-01.html"; + break; + } + case DE_VILLAGE_TELEPORT_DEVICE: + { + qs.setCond(5, true); + htmltext = "30134-01.html"; + break; + } + case LAPATHIA: + { + if (qs.getCond() == 5) + { + qs.setCond(6, true); + htmltext = "34414-01.html"; + } + else + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(7, true); + htmltext = "34414-02.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00581_ThePurificationRitual"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00582_WashBloodWithBlood"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00562_BasicMissionAltarOfEvil/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html new file mode 100644 index 0000000000..d81f2eca2b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-01.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Adventure Guild? I really appreciate it. I was desperate for help. The more help I can get, the better.
+(To do "Basic Mission: Blood Swampland," you must first carry out "Meaning of Survival" and "Never Say Good Bye" through Grocer Volllodos.) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html new file mode 100644 index 0000000000..dc2f0b11c1 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/30137-02.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Now go back to Adventure Guildsman Penny.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm new file mode 100644 index 0000000000..5f46858b3b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-01.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm new file mode 100644 index 0000000000..318b325744 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-02.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm new file mode 100644 index 0000000000..fa0b430ee0 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-03.htm @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Your mission is to assist with task at Blood SwampLand. If are successful, our Adventure Guild will give you additional rewards on top of the mission payment and, your relationship with our faction will grow even stronger.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm new file mode 100644 index 0000000000..7d7198ba79 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-04.htm @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Good choice. Now, go to Vollodos the Grocer at the Blood Swampland. He will give you a mission. Come back to me when you complete the mission.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html new file mode 100644 index 0000000000..d3832d9aff --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-05.html @@ -0,0 +1,4 @@ +Adventure Guildsman Penny:
+Welcome back! So, did you do a good job?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html new file mode 100644 index 0000000000..ba0fe1f086 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-06.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html new file mode 100644 index 0000000000..6ef23bf39a --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/34413-07.html @@ -0,0 +1,3 @@ +Adventure Guildsman Penny:
+To do the mission, you have to meet the Vollodos the Grocer at the Bloody Swampland. Do the mission, then come back to me.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java new file mode 100644 index 0000000000..f73321b1e8 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/Q00563_BasicMissionBloodySwampland.java @@ -0,0 +1,190 @@ +/* + * 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.Q00563_BasicMissionBloodySwampland; + +import com.l2jmobius.gameserver.enums.Faction; +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * Q00563_BasicMissionBloodySwampland + * @URL https://l2wiki.com/Basic_Mission:_Bloody_Swampland + * @author NightBR + */ +public class Q00563_BasicMissionBloodySwampland extends Quest +{ + // NPCs + private static final int PENNY = 34413; + private static final int VOLLODOS = 30137; + // Reward's + private static final long EXP = 429526470; + private static final int SP = 429510; + private static final int FP = 220; // Faction points + private static final int SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND = 39494; + // Misc + private static final int MIN_LEVEL = 86; + private static final int MAX_LEVEL = 90; + + public Q00563_BasicMissionBloodySwampland() + { + super(563); + addStartNpc(PENNY); + addTalkId(PENNY, VOLLODOS); + addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html"); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "34413-02.htm": + case "34413-03.htm": + case "34413-05.html": + { + htmltext = event; + break; + } + case "34413-04.htm": + { + qs.startQuest(); + htmltext = event; + break; + } + case "34413-06.html": + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + giveItems(player, SCROLL_OF_ESCAPE_BLOODY_SWAMPLAND, 1); + addExpAndSp(player, EXP, SP); + addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction + qs.exitQuest(QuestType.DAILY, true); + htmltext = event; + } + else + { + htmltext = "34413-07.html"; + } + break; + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + switch (qs.getState()) + { + case State.CREATED: + { + if (npc.getId() == PENNY) + { + htmltext = "34413-01.htm"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case PENNY: + { + htmltext = qs.isCond(1) ? "34413-07.html" : "34413-05.html"; + break; + } + case VOLLODOS: + { + if (qs.isCond(1)) + { + qs.setCond(2, true); + htmltext = "30137-01.html"; + } + else if (qs.isCond(2)) + { + StringBuilder str = new StringBuilder("00"); + checkQuestCompleted(player, str); // Initialize the array with all quests completed + + if (str.indexOf("11") != -1) // verify if all quests completed + { + qs.setCond(3, true); + htmltext = "30137-02.html"; + } + else + { + htmltext = "30137-01.html"; + } + } + break; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34413-01.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY); + } + break; + } + } + return htmltext; + } + + private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) + { + int index = 0; + char ch = '1'; + final QuestState st1 = player.getQuestState("Q00583_MeaningOfSurvival"); + if ((st1 != null) && st1.isCompleted()) + { + index = 0; + string.setCharAt(index, ch); + } + final QuestState st2 = player.getQuestState("Q00584_NeverSayGoodBye"); + if ((st2 != null) && st2.isCompleted()) + { + index = 1; + string.setCharAt(index, ch); + } + return string; + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html new file mode 100644 index 0000000000..1f3fb779d3 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00563_BasicMissionBloodySwampland/noLevel.html @@ -0,0 +1,4 @@ +Penny:
+I don't understand why someone like you is interested in this mission?
+(Only characters above Lv.85.) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html index 0dfa3df849..ae83ec0828 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00564_BasicMissionKartiasLabyrinthSolo/34413-08.html @@ -1,4 +1,4 @@ Adventure Guildsman Penny:
-Welcome back! So, did you di a good job?
+Welcome back! So, did you do a good job?
\ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm new file mode 100644 index 0000000000..4b1574dff9 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Have you had a chance to visit this place before the Rain of Blood fell and drew crazy monsters here?
+Only few remember those days. This land is neither beautiful nor recommendable, but I still have precious memories here.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm new file mode 100644 index 0000000000..8b0337fdf2 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I was away from the Dark Elf Village for a long time doing research in the Ivory Tower. So, I was safe when the Rain of Blood and the Fog of Plague took the lives of my people.
+As soon as I retumed after completing the research, I realized what I had to do: to purify this land.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm new file mode 100644 index 0000000000..41ac1d9f55 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-02.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+It is not easy to prepare and perform the Purification Ritual alone. If you help me, I'll be able to purify this land more quickly.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm new file mode 100644 index 0000000000..dbbbcd78e3 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Defeat the Arbitor of Darkness, Altar of Evil Spirit Offering Box, Dartanion, and Dimensional Rifter at the Altar of Evil, and collect 100 Traces of Evil Spirit. You will get a reward for your effort, and I'll be able to perform the Purification Ritual more quickly.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html new file mode 100644 index 0000000000..58c3978cce --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html new file mode 100644 index 0000000000..99b795822f --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-05.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+Thank you. It will help me purify this land more quickly. Now get some rest while you can. I may need your help again.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java new file mode 100644 index 0000000000..e559b36715 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00581_ThePurificationRitual/Q00581_ThePurificationRitual.java @@ -0,0 +1,213 @@ +/* + * 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.Q00581_ThePurificationRitual; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00581_ThePurificationRitual extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23174, // Arbitor of Darkness + 23175, // Altar of Evil Spirit Offering Box + 23177, // Dartanion + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48377; // Traces of Evil Spirit + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_THE_PURIFICATION_RITUAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00581_ThePurificationRitual() + { + super(581); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm new file mode 100644 index 0000000000..db403ae4ef --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-00.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+My ultimate goal is to purify this land, and Pm doing my best to fulfill it. But I don't want to lie to you. I have another goal.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm new file mode 100644 index 0000000000..e3639110b8 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-01.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+It's a personal vendetta. I may be aiming at the wrong target or employing unacceptable means, but it means a lot to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm new file mode 100644 index 0000000000..4a4d319c1e --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-02.htm @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+I shall make them wash away the blood of my people with theirs.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm new file mode 100644 index 0000000000..42f653e8d8 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-03.htm @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+If you want to help my personal vendetta, please kill Mutated Cerberos, Insane Phions, Hellgate Fighting Dog, and Dimensional Rifters in the Bloody Swampland. If you bring me 100 Monster Fragments. I'll give you a reward.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html new file mode 100644 index 0000000000..2239bf228c --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-04.html @@ -0,0 +1,4 @@ +Black Wizard Lapathia:
+You've brought the Monster Fragments! This much must mean you've killed enough of them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html new file mode 100644 index 0000000000..adf82ef894 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-05.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+Here is the reward I promised. I hope we can work together again.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html new file mode 100644 index 0000000000..9a9fba378d --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-06.html @@ -0,0 +1,8 @@ +Black Wizard Lapathia:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html new file mode 100644 index 0000000000..d1a1efc3f6 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/34414-07.html @@ -0,0 +1,3 @@ +Black Wizard Lapathia:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java new file mode 100644 index 0000000000..50cf05c45c --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00582_WashBloodWithBlood/Q00582_WashBloodWithBlood.java @@ -0,0 +1,213 @@ +/* + * 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.Q00582_WashBloodWithBlood; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00581) + * @URL https://l2wiki.com/The_Purification_Ritual + * @author NightBR + */ +public class Q00582_WashBloodWithBlood extends Quest +{ + // NPCs + private static final int START_NPC = 34414; // Lapathia + private static final int[] MONSTERS = + { + 23176, // Mutated Cerberos + 23178, // Insane Phions + 23180, // Hellgate Fighting Dog + 23179, // Dimensional Rifter + }; + // Item + private static final int MONSTER_DROP = 48378; // Monster Fragment + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_85_95_WASH_BLOOD_WITH_BLOOD_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 85; + // Rewards + private static final int XP = 231860550; + private static final int SP = 231840; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 505080 ; + + public Q00582_WashBloodWithBlood() + { + super(582); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "34414-01.htm": + case "34414-02.htm": + { + return event; + } + case "34414-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "34414-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "34414-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "34414-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00562_BasicMissionAltarOfEvil"); + if ((st != null) && st.isStarted()) + { + htmltext = "34414-04.html"; + } + else + { + htmltext = "34414-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "34414-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm new file mode 100644 index 0000000000..60163a741b --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-00.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Have you been to the Dark Elf Village?
+Some unusual events occurred here. Most of my clansmen were killed, and I had no choice but to abandon the village.
+The epidemic is covering the entire continent. Look! Don't you see the blackish red fog all over this area? It will kill us all!
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm new file mode 100644 index 0000000000..4ad8b63ebb --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+The problem is that not everyone has found a safe haven. Those who have not found a place to retreat to, or have their reasons for not being able to relocate to some place safe, are bound to die of the epidemic. Many around me have met their demise that way.
+At this rate, the casualties will continue to mount. Could you possibly help me?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm new file mode 100644 index 0000000000..d6cad466d7 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-02.htm @@ -0,0 +1,6 @@ +Grocer Vollodos:
+I am actually working on an antidote for the epidemic along with several Dark Elves who have survived. But I'm not a scholar or a magician, so there aren't that many things I can do. All I can do is collect research materials from nearby monsters to help with the research.
+But I'm not a warrior, so that's why I must ask adventurers like you for help.
+Please gather research ingredients from the monsters in the Bloody Swampland. If you do so, you'll have my etemal gratitude!
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm new file mode 100644 index 0000000000..425a4e4192 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-03.htm @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Oh, great! So, what you have to do is to collect research ingredients from the monsters in the Bloody Swampland.
+Defeat Corpse Devourer, Corpse Absorber, Contaminated Rotten Root, Corpse Collector, and Decayed Spore, and collect 100 Putrefied Extracts. I will certainly pay for your efforts.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html new file mode 100644 index 0000000000..10a02e6667 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-04.html @@ -0,0 +1,5 @@ +Grocer Vollodos:
+Did you get them all already? You're... amazingly quick. I thought it would take longer to collect the Putrefied Extracts.
+Please give me the extracts. Then, I'll pay for them.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html new file mode 100644 index 0000000000..37ef4017f4 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-05.html @@ -0,0 +1,6 @@ +Grocer Vollodos:
+Thank you for helping us. The researchers will be thrilled to see them.
+I hope that no more people perish from this epidemic. We will do our best to successfully develop an antidote.
+Please continue to be careful as you travel in this area.
+Oh! The antidote research will continue, so if you have time tomorrow, please stop by again.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java new file mode 100644 index 0000000000..1eb37987ab --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00583_MeaningOfSurvival/Q00583_MeaningOfSurvival.java @@ -0,0 +1,214 @@ +/* + * 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.Q00583_MeaningOfSurvival; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Meaning Of Survival (00583) + * @URL https://l2wiki.com/Meaning_of_Survival + * @author NightBR + */ +public class Q00583_MeaningOfSurvival extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23162, // Corpse Devourer + 23163, // Corpse Absorber + 23166, // Contaminated Rotten Root + 23167, // Decayed Spore + 23171, // Corpse Collector + }; + // Item + private static final int MONSTER_DROP = 48379; // Putrefied Extracts + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_MEANING_OF_SURVIVAL_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00583_MeaningOfSurvival() + { + super(583); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm new file mode 100644 index 0000000000..359d0f4b83 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-00.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+An old saying has it that a disastrous event can change you to a completely different person. I heard it many times but never paid attention because I thought such event would never happen to me.
+But alas... the old saying was true after all.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm new file mode 100644 index 0000000000..f68f5f9a47 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-01.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+I had friends. Not many, but they meant a lot to me.
+Then, a disaster occurred near Dark Elf Village and killed all of them. I survived, but with no friends.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm new file mode 100644 index 0000000000..cbb8f5e686 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-02.htm @@ -0,0 +1,5 @@ +Grocer Vollodos:
+They left forever before I said good-bye. So, I'd like to hold a memorial service for my dear friends.
+If you don't mind, I'd like to ask a favor of you.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm new file mode 100644 index 0000000000..0da57e9407 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-03.htm @@ -0,0 +1,3 @@ +Grocer Vollodos:
+I want you to gather materials for the memorial service for my poor friends. Hunt Swamp Trackers, Corpse Shredder, Swamp Assassins, Delegates of Blood, and Swamp Watchers in the Bloody Swampland, and bring me 100 Rotten Blood.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html new file mode 100644 index 0000000000..0bc6e365b0 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-04.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+You brought the Rotten Blood? Oh, that's plenty. Please give it to me.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html new file mode 100644 index 0000000000..fa9b1940b2 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-05.html @@ -0,0 +1,4 @@ +Grocer Vollodos:
+Here is the reward I promised. There's one thing I'd like to tell you... Take care of your friends and make good memories with them. Otherwise, you'll regret it when they're gone.
+Ah... sorry. Forget what I just said. Anyway, you are always welcome here. I could always use your help. Visit me whenever you have time.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html new file mode 100644 index 0000000000..826637f660 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-06.html @@ -0,0 +1,8 @@ +Grocer Vollodos:
+You've brought all I asked for. Hand them over to me, and I'll give you the reward.
+Wait.. You didn't undertake the Adventure Guild's mission? It's none of my business, but id you don't do it, you will lose a chance to gain an additional reward.
+Why don't you reconsider? I hope you make a wise choice.
+((If you do Basic Mission: Altar of Evil and then complete this quest, you can eam additional rewards and Amity Points.)
+ + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html new file mode 100644 index 0000000000..6c8eb50ddb --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/30137-07.html @@ -0,0 +1,3 @@ +Grocer Vollodos:
+You made the wise decision. Get the mission from Adventure Guildsman Penny and come back to me. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java new file mode 100644 index 0000000000..9d182ee45e --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00584_NeverSayGoodBye/Q00584_NeverSayGoodBye.java @@ -0,0 +1,214 @@ +/* + * 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.Q00584_NeverSayGoodBye; + +import java.util.HashSet; +import java.util.Set; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.Npc; +import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +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.model.quest.State; +import com.l2jmobius.gameserver.network.NpcStringId; + +/** + * Never Say Good Bye (00584) + * @URL https://l2wiki.com/Never_Say_Good_Bye + * @author NightBR + */ +public class Q00584_NeverSayGoodBye extends Quest +{ + // NPCs + private static final int START_NPC = 30137; // Vollodos + private static final int[] MONSTERS = + { + 23164, // Corpse Shredder + 23168, // Swamp Tracker + 23169, // Swamp Assassin + 23170, // Swamp Watcher + 23172, // Delegate of Blood + }; + // Item + private static final int MONSTER_DROP = 48380; // Rotten Blood + // Misc + private static final int REQUIRED_DROP_COUNT = 100; + private static final int REQUIRED_KILL_COUNT = 100; + private static final String KILL_COUNT_VAR = "KillCount"; + private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_IN_PROGRESS.getId(); + private static final int KILLING_NPCSTRING_ID2 = NpcStringId.LV_86_96_NEVER_SAY_GOOD_BYE_2.getId(); + private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY + private static final boolean PARTY_QUEST = true; + private static final int KILLING_COND = 1; + private static final int FINISH_COND = 2; + private static final int MIN_LEVEL = 86; + // Rewards + private static final int XP = 284703720; + private static final int SP = 284700; + private static final int REWARD_ITEM1 = 57; // ADENA + private static final int REWARD_ITEM1_AMOUNT = 512370; + + public Q00584_NeverSayGoodBye() + { + super(584); + addStartNpc(START_NPC); + addTalkId(START_NPC); + addKillId(MONSTERS); + registerQuestItems(MONSTER_DROP); + addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + switch (event) + { + case "30137-01.htm": + case "30137-02.htm": + { + return event; + } + case "30137-03.htm": + { + if (qs.isCreated()) + { + qs.startQuest(); + qs.setCond(KILLING_COND); + } + break; + } + case "30137-05.html": + { + if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + takeItems(player, MONSTER_DROP, -1); + // Reward. + addExpAndSp(player, XP, SP); + rewardItems(player, REWARD_ITEM1, REWARD_ITEM1_AMOUNT); + qs.exitQuest(QUEST_TYPE, true); + } + break; + } + default: + { + return null; + } + } + return event; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + + if (npc.getId() == START_NPC) + { + switch (qs.getState()) + { + case State.CREATED: + { + htmltext = "30137-00.htm"; + break; + } + case State.STARTED: + { + if (qs.isCond(KILLING_COND)) + { + htmltext = "30137-03.htm"; + } + else if (qs.isCond(FINISH_COND)) + { + // Check if Faction quest has been taken + final QuestState st = player.getQuestState("Q00563_BasicMissionBloodySwampland"); + if ((st != null) && st.isStarted()) + { + htmltext = "30137-04.html"; + } + else + { + htmltext = "30137-06.html"; + } + } + break; + } + case State.COMPLETED: + { + if (qs.isNowAvailable()) + { + qs.setState(State.CREATED); + htmltext = "30137-00.htm"; + } + else + { + htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + { + QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + giveItemRandomly(killer, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true); + + final int killCount = qs.getInt(KILL_COUNT_VAR) + 1; + if (killCount < REQUIRED_KILL_COUNT) + { + qs.set(KILL_COUNT_VAR, killCount); + } + + if ((killCount >= REQUIRED_KILL_COUNT) && (getQuestItemsCount(killer, MONSTER_DROP) >= REQUIRED_DROP_COUNT)) + { + qs.setCond(FINISH_COND, true); + } + + sendNpcLogList(killer); + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(KILLING_COND)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID1, true, (int) getQuestItemsCount(player, MONSTER_DROP))); + holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID2, true, qs.getInt(KILL_COUNT_VAR))); + return holder; + } + return super.getNpcLogList(player); + } +} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java index 36344591e7..c43413e044 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -114,7 +114,13 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot; import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot; import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter; import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated; +import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil; +import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland; import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo; +import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual; +import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; +import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; +import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00620_FourGoblets.Q00620_FourGoblets; @@ -509,8 +515,8 @@ public class QuestMasterHandler Q00553_OlympiadUndefeated.class, Q00560_HowToOvercomeFear.class, // FIXME: Custom. Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done. - Q00562_BasicMissionAltarOfEvil.class, // TODO: Not done. - Q00563_BasicMissionBloodySwampland.class, // TODO: Not done. + Q00562_BasicMissionAltarOfEvil.class, + Q00563_BasicMissionBloodySwampland.class, Q00564_BasicMissionKartiasLabyrinthSolo.class, Q00565_BasicMissionFairySettlementWest.class, // TODO: Not done. Q00566_BasicMissionFairySettlementEast.class, // TODO: Not done. @@ -527,10 +533,10 @@ public class QuestMasterHandler Q00578_BasicMissionCemetery.class, // TODO: Not done. Q00579_BasicMissionBlazingSwamp.class, // TODO: Not done. Q00580_BeyondTheMemories.class, // TODO: Not done. - Q00581_ThePurificationRitual.class, // TODO: Not done. - Q00582_WashBloodWithBlood.class, // TODO: Not done. - Q00583_MeaningOfSurvival.class, // TODO: Not done. - Q00584_NeverSayGoodBye.class, // TODO: Not done. + Q00581_ThePurificationRitual.class, + Q00582_WashBloodWithBlood.class, + Q00583_MeaningOfSurvival.class, + Q00584_NeverSayGoodBye.class, Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class, // TODO: Not done. diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java deleted file mode 100644 index 1bdf89eda7..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00562_BasicMissionAltarOfEvil.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00562_BasicMissionAltarOfEvil extends Quest -{ - private static final int START_NPC = 34413; - - public Q00562_BasicMissionAltarOfEvil() - { - super(562); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java deleted file mode 100644 index c1a74b7f5a..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00563_BasicMissionBloodySwampland.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00563_BasicMissionBloodySwampland extends Quest -{ - private static final int START_NPC = 34413; - - public Q00563_BasicMissionBloodySwampland() - { - super(563); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java deleted file mode 100644 index 63378e4973..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00581_ThePurificationRitual.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00581_ThePurificationRitual extends Quest -{ - private static final int START_NPC = 34414; - - public Q00581_ThePurificationRitual() - { - super(581); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java deleted file mode 100644 index d59ab02e69..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00582_WashBloodWithBlood.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00582_WashBloodWithBlood extends Quest -{ - private static final int START_NPC = 34414; - - public Q00582_WashBloodWithBlood() - { - super(582); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java deleted file mode 100644 index 4acc17b7ef..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00583_MeaningOfSurvival.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00583_MeaningOfSurvival extends Quest -{ - private static final int START_NPC = 30137; - - public Q00583_MeaningOfSurvival() - { - super(583); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java deleted file mode 100644 index 81c6a8549b..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00584_NeverSayGoodBye.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import com.l2jmobius.Config; -import com.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q00584_NeverSayGoodBye extends Quest -{ - private static final int START_NPC = 30137; - - public Q00584_NeverSayGoodBye() - { - super(584); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -}