Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/QuestMasterHandler.java
index 96c53afb8d..161f7e74d8 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -217,6 +217,7 @@ import quests.Q00790_ObtainingFerinsTrust.Q00790_ObtainingFerinsTrust;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -510,7 +511,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q10352_LegacyOfCrumaTower;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
import quests.not_done.Q10456_OperationRescue;
@@ -756,7 +756,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/MissingQuests.txt
index 0fc2798d8a..1e89bdd065 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/MissingQuests.txt
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/MissingQuests.txt
@@ -25,7 +25,6 @@
809 Hunter Guild Request - The Immortal Plateau
810 Hunter Guild Request - Isle of Souls
811 Hunter Guild Request - Cemetery
-824 Attack the Command Post
825 Hunter Guild Request - Valley of Saints
832 Hunter Guild Request - Southern Region, Isle of Prayer
834 Against Dragonclaw
@@ -46,7 +45,6 @@
922 Hunter Guild Request - Northern Region, Isle of Prayer
925 Hunter Guild Request - Garden of Spirits
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
10298 Wasteland Queen
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/QuestMasterHandler.java
index e8a43b6bbb..042d19dc7e 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -190,6 +190,7 @@ import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -212,6 +213,7 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
@@ -499,7 +501,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -514,7 +515,6 @@ import quests.not_done.Q00912_RedLibraRequestLv3;
import quests.not_done.Q00913_RedLibraRequestLv4;
import quests.not_done.Q00914_RedLibraRequestLv5;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
import quests.not_done.Q00938_TheFishermansOtherHobby;
import quests.not_done.Q10298_WastelandQueen;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
@@ -725,7 +725,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -762,7 +762,7 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt
index 3e3801314c..caac7b474a 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt
@@ -72,7 +72,6 @@
809 Hunter Guild Request - The Immortal Plateau
810 Hunter Guild Request - Isle of Souls
811 Hunter Guild Request - Cemetery
-824 Attack the Command Post
825 Hunter Guild Request - Valley of Saints
832 Hunter Guild Request - Southern Region, Isle of Prayer
834 Against Dragonclaw
@@ -98,10 +97,8 @@
922 Hunter Guild Request - Northern Region, Isle of Prayer
925 Hunter Guild Request - Garden of Spirits
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
-985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
new file mode 100644
index 0000000000..70c09ffd8e
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
@@ -0,0 +1,5 @@
+Histie:
+What brings you to such a dangerous place?
+You shouldn't be here. Go back.
+(Only characters above Lv. 85-89.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
new file mode 100644
index 0000000000..03294017b5
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
@@ -0,0 +1,6 @@
+Histie:
+Huh? Are you an ally?
+That seal... Isn't it Elikia's? Well I guess you are an ally.
+Did Elikia send you?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
new file mode 100644
index 0000000000..b28d4768f0
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
@@ -0,0 +1,6 @@
+Histie:
+Elikia must have been in a hurry.
+Well, I'm doing fine. Of course I didn't completly recover from my time with the Embryo, but I should be able to carry out my revenge soon.
+Elise is pretty talented. I was able to recover thanks to her.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
new file mode 100644
index 0000000000..5edf5cf37e
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
@@ -0,0 +1,6 @@
+Histie:
+Why are you talking to me?
+I don't know you... Don't you even try to trick me.
+(Quest may only be undertaken by characters with the Blackbird Seal.)
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
new file mode 100644
index 0000000000..ec21366051
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
@@ -0,0 +1,6 @@
+Histie:
+We have to get our revenge!
+They dared set up a trap for me, and made me rely on Elise! Unforgivable!
+Won't you help me get my revenge?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
new file mode 100644
index 0000000000..d784fe1d2d
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
new file mode 100644
index 0000000000..b1b26013e6
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy 200 monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
new file mode 100644
index 0000000000..ad7db8a429
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
@@ -0,0 +1,5 @@
+Histie:
+Not enough. You think this is enough to honor our name?
+Kill 200 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Pirests, and Fortress Dark Wizards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
new file mode 100644
index 0000000000..3764267bc3
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
@@ -0,0 +1,4 @@
+Histie:
+Already done? Great!
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
new file mode 100644
index 0000000000..215d5054a7
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
@@ -0,0 +1,4 @@
+Histie:
+Great! No wonder Elikia sent you here.
+But this isn't enough. I'll stay here until I'm satisfied. Elikia and Leona might be worried about me, so can you tell them I'm alright? Here's a letter. They'll know I'm safe with this.
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
new file mode 100644
index 0000000000..bbb4166013
--- /dev/null
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
@@ -0,0 +1,179 @@
+/*
+ * 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.Q00985_AdventureGuildsSpecialRequestLv1;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+import org.l2jmobius.gameserver.network.NpcStringId;
+
+/**
+ * Adventure Guilds Special Request Lv1 (985)
+ * @author Dmitri
+ */
+public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
+{
+ // NPCs
+ private static final int ADVENTURE_GUILDSMAN = 33946;
+ // Monsters
+ private static final int[] MONSTERS =
+ {
+ 24458, // Vampire Swamp Warrior
+ 24457, // Swamp Vampire Rogue
+ 24460, // Swamp Vampire Shooter
+ 24459, // Swamp Vampire Wizard
+ 24454, // Berserker of Fate
+ 24455, // Prophet of Doom
+ 24453, // Servant of Fate
+ 24452, // Soldier of Fate
+ };
+ // Misc
+ private static final int MIN_LEVEL = 85;
+ private static final int MAX_LEVEL = 89;
+ private static final boolean PARTY_QUEST = true;
+ // Reward
+ private static final int RUNE_WIND_RESISTANCE_RING = 14599;
+
+ public Q00985_AdventureGuildsSpecialRequestLv1()
+ {
+ super(985);
+ addStartNpc(ADVENTURE_GUILDSMAN);
+ addTalkId(ADVENTURE_GUILDSMAN);
+ addKillId(MONSTERS);
+ addCondLevel(MIN_LEVEL, MAX_LEVEL, "33946-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "33946-02.htm":
+ case "33946-03.htm":
+ case "33946-04.htm":
+ case "33946-08.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "33946-05.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "33946-09.html":
+ {
+ giveItems(player, RUNE_WIND_RESISTANCE_RING, 1);
+ addExpAndSp(player, 2108117571L, 2529741);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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:
+ {
+ htmltext = "33946-01.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "33946-06.html";
+ }
+ else
+ {
+ htmltext = "33946-07.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "33946-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
+ if ((qs != null) && qs.isCond(1))
+ {
+ final int killedGhosts = qs.getInt("AncientGhosts") + 1;
+ qs.set("AncientGhosts", killedGhosts);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+
+ if (killedGhosts >= 200)
+ {
+ qs.setCond(2, 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(1))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTER.getId(), true, qs.getInt("AncientGhosts")));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java
index a9da7997ed..a917b23e08 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -198,6 +198,7 @@ import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -218,9 +219,11 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
+import quests.Q00985_AdventureGuildsSpecialRequestLv1.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.Q10273_GoodDayToFly.Q10273_GoodDayToFly;
import quests.Q10274_CollectingInTheAir.Q10274_CollectingInTheAir;
import quests.Q10275_ContainingTheAttributePower.Q10275_ContainingTheAttributePower;
@@ -510,7 +513,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -520,8 +522,6 @@ import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00846_BuildingUpStrength;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
-import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
@@ -753,7 +753,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -783,11 +783,11 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
- Q00985_AdventureGuildsSpecialRequestLv1.class, // TODO: Not done.
+ Q00985_AdventureGuildsSpecialRequestLv1.class,
Q00986_AdventureGuildsSpecialRequestLv2.class, // TODO: Not done.
Q00987_AdventureGuildsSpecialRequestLv3.class, // TODO: Not done.
Q00988_AdventureGuildsSpecialRequestLv4.class, // TODO: Not done.
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java
deleted file mode 100644
index 9a0fe7fa4f..0000000000
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
-{
- private static final int START_NPC = 33946;
-
- public Q00985_AdventureGuildsSpecialRequestLv1()
- {
- super(985);
- 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/MissingQuests.txt b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt
index a0248253f5..3e371a332e 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
@@ -77,7 +77,6 @@
809 Hunter Guild Request - The Immortal Plateau
810 Hunter Guild Request - Isle of Souls
811 Hunter Guild Request - Cemetery
-824 Attack the Command Post
825 Hunter Guild Request - Valley of Saints
832 Hunter Guild Request - Southern Region, Isle of Prayer
834 Against Dragonclaw
@@ -103,10 +102,8 @@
922 Hunter Guild Request - Northern Region, Isle of Prayer
925 Hunter Guild Request - Garden of Spirits
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
-985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
new file mode 100644
index 0000000000..70c09ffd8e
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
@@ -0,0 +1,5 @@
+Histie:
+What brings you to such a dangerous place?
+You shouldn't be here. Go back.
+(Only characters above Lv. 85-89.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
new file mode 100644
index 0000000000..03294017b5
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
@@ -0,0 +1,6 @@
+Histie:
+Huh? Are you an ally?
+That seal... Isn't it Elikia's? Well I guess you are an ally.
+Did Elikia send you?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
new file mode 100644
index 0000000000..b28d4768f0
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
@@ -0,0 +1,6 @@
+Histie:
+Elikia must have been in a hurry.
+Well, I'm doing fine. Of course I didn't completly recover from my time with the Embryo, but I should be able to carry out my revenge soon.
+Elise is pretty talented. I was able to recover thanks to her.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
new file mode 100644
index 0000000000..5edf5cf37e
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
@@ -0,0 +1,6 @@
+Histie:
+Why are you talking to me?
+I don't know you... Don't you even try to trick me.
+(Quest may only be undertaken by characters with the Blackbird Seal.)
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
new file mode 100644
index 0000000000..ec21366051
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
@@ -0,0 +1,6 @@
+Histie:
+We have to get our revenge!
+They dared set up a trap for me, and made me rely on Elise! Unforgivable!
+Won't you help me get my revenge?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
new file mode 100644
index 0000000000..d784fe1d2d
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
new file mode 100644
index 0000000000..b1b26013e6
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy 200 monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
new file mode 100644
index 0000000000..ad7db8a429
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
@@ -0,0 +1,5 @@
+Histie:
+Not enough. You think this is enough to honor our name?
+Kill 200 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Pirests, and Fortress Dark Wizards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
new file mode 100644
index 0000000000..3764267bc3
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
@@ -0,0 +1,4 @@
+Histie:
+Already done? Great!
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
new file mode 100644
index 0000000000..215d5054a7
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
@@ -0,0 +1,4 @@
+Histie:
+Great! No wonder Elikia sent you here.
+But this isn't enough. I'll stay here until I'm satisfied. Elikia and Leona might be worried about me, so can you tell them I'm alright? Here's a letter. They'll know I'm safe with this.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
new file mode 100644
index 0000000000..bbb4166013
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
@@ -0,0 +1,179 @@
+/*
+ * 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.Q00985_AdventureGuildsSpecialRequestLv1;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+import org.l2jmobius.gameserver.network.NpcStringId;
+
+/**
+ * Adventure Guilds Special Request Lv1 (985)
+ * @author Dmitri
+ */
+public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
+{
+ // NPCs
+ private static final int ADVENTURE_GUILDSMAN = 33946;
+ // Monsters
+ private static final int[] MONSTERS =
+ {
+ 24458, // Vampire Swamp Warrior
+ 24457, // Swamp Vampire Rogue
+ 24460, // Swamp Vampire Shooter
+ 24459, // Swamp Vampire Wizard
+ 24454, // Berserker of Fate
+ 24455, // Prophet of Doom
+ 24453, // Servant of Fate
+ 24452, // Soldier of Fate
+ };
+ // Misc
+ private static final int MIN_LEVEL = 85;
+ private static final int MAX_LEVEL = 89;
+ private static final boolean PARTY_QUEST = true;
+ // Reward
+ private static final int RUNE_WIND_RESISTANCE_RING = 14599;
+
+ public Q00985_AdventureGuildsSpecialRequestLv1()
+ {
+ super(985);
+ addStartNpc(ADVENTURE_GUILDSMAN);
+ addTalkId(ADVENTURE_GUILDSMAN);
+ addKillId(MONSTERS);
+ addCondLevel(MIN_LEVEL, MAX_LEVEL, "33946-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "33946-02.htm":
+ case "33946-03.htm":
+ case "33946-04.htm":
+ case "33946-08.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "33946-05.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "33946-09.html":
+ {
+ giveItems(player, RUNE_WIND_RESISTANCE_RING, 1);
+ addExpAndSp(player, 2108117571L, 2529741);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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:
+ {
+ htmltext = "33946-01.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "33946-06.html";
+ }
+ else
+ {
+ htmltext = "33946-07.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "33946-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
+ if ((qs != null) && qs.isCond(1))
+ {
+ final int killedGhosts = qs.getInt("AncientGhosts") + 1;
+ qs.set("AncientGhosts", killedGhosts);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+
+ if (killedGhosts >= 200)
+ {
+ qs.setCond(2, 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(1))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTER.getId(), true, qs.getInt("AncientGhosts")));
+ 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 a74e5991b7..184531c31a 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
@@ -220,6 +220,7 @@ import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -240,9 +241,11 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
+import quests.Q00985_AdventureGuildsSpecialRequestLv1.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.Q10273_GoodDayToFly.Q10273_GoodDayToFly;
import quests.Q10274_CollectingInTheAir.Q10274_CollectingInTheAir;
import quests.Q10282_ToTheSeedOfAnnihilation.Q10282_ToTheSeedOfAnnihilation;
@@ -545,7 +548,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -555,8 +557,6 @@ import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00846_BuildingUpStrength;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
-import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
@@ -828,7 +828,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -858,11 +858,11 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
- Q00985_AdventureGuildsSpecialRequestLv1.class, // TODO: Not done.
+ Q00985_AdventureGuildsSpecialRequestLv1.class,
Q00986_AdventureGuildsSpecialRequestLv2.class, // TODO: Not done.
Q00987_AdventureGuildsSpecialRequestLv3.class, // TODO: Not done.
Q00988_AdventureGuildsSpecialRequestLv4.class, // TODO: Not done.
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- 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/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- 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/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java
deleted file mode 100644
index 9a0fe7fa4f..0000000000
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
-{
- private static final int START_NPC = 33946;
-
- public Q00985_AdventureGuildsSpecialRequestLv1()
- {
- super(985);
- 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/MissingQuests.txt b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt
index 9fcd7da31c..e55ab39c7f 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
@@ -84,7 +84,6 @@
809 Hunter Guild Request - The Immortal Plateau
810 Hunter Guild Request - Isle of Souls
811 Hunter Guild Request - Cemetery
-824 Attack the Command Post
825 Hunter Guild Request - Valley of Saints
832 Hunter Guild Request - Southern Region, Isle of Prayer
834 Against Dragonclaw
@@ -111,10 +110,8 @@
922 Hunter Guild Request - Northern Region, Isle of Prayer
925 Hunter Guild Request - Garden of Spirits
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
-985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
new file mode 100644
index 0000000000..70c09ffd8e
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
@@ -0,0 +1,5 @@
+Histie:
+What brings you to such a dangerous place?
+You shouldn't be here. Go back.
+(Only characters above Lv. 85-89.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
new file mode 100644
index 0000000000..03294017b5
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
@@ -0,0 +1,6 @@
+Histie:
+Huh? Are you an ally?
+That seal... Isn't it Elikia's? Well I guess you are an ally.
+Did Elikia send you?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
new file mode 100644
index 0000000000..b28d4768f0
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
@@ -0,0 +1,6 @@
+Histie:
+Elikia must have been in a hurry.
+Well, I'm doing fine. Of course I didn't completly recover from my time with the Embryo, but I should be able to carry out my revenge soon.
+Elise is pretty talented. I was able to recover thanks to her.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
new file mode 100644
index 0000000000..5edf5cf37e
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
@@ -0,0 +1,6 @@
+Histie:
+Why are you talking to me?
+I don't know you... Don't you even try to trick me.
+(Quest may only be undertaken by characters with the Blackbird Seal.)
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
new file mode 100644
index 0000000000..ec21366051
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
@@ -0,0 +1,6 @@
+Histie:
+We have to get our revenge!
+They dared set up a trap for me, and made me rely on Elise! Unforgivable!
+Won't you help me get my revenge?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
new file mode 100644
index 0000000000..d784fe1d2d
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
new file mode 100644
index 0000000000..b1b26013e6
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy 200 monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
new file mode 100644
index 0000000000..ad7db8a429
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
@@ -0,0 +1,5 @@
+Histie:
+Not enough. You think this is enough to honor our name?
+Kill 200 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Pirests, and Fortress Dark Wizards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
new file mode 100644
index 0000000000..3764267bc3
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
@@ -0,0 +1,4 @@
+Histie:
+Already done? Great!
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
new file mode 100644
index 0000000000..215d5054a7
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
@@ -0,0 +1,4 @@
+Histie:
+Great! No wonder Elikia sent you here.
+But this isn't enough. I'll stay here until I'm satisfied. Elikia and Leona might be worried about me, so can you tell them I'm alright? Here's a letter. They'll know I'm safe with this.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
new file mode 100644
index 0000000000..bbb4166013
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
@@ -0,0 +1,179 @@
+/*
+ * 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.Q00985_AdventureGuildsSpecialRequestLv1;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+import org.l2jmobius.gameserver.network.NpcStringId;
+
+/**
+ * Adventure Guilds Special Request Lv1 (985)
+ * @author Dmitri
+ */
+public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
+{
+ // NPCs
+ private static final int ADVENTURE_GUILDSMAN = 33946;
+ // Monsters
+ private static final int[] MONSTERS =
+ {
+ 24458, // Vampire Swamp Warrior
+ 24457, // Swamp Vampire Rogue
+ 24460, // Swamp Vampire Shooter
+ 24459, // Swamp Vampire Wizard
+ 24454, // Berserker of Fate
+ 24455, // Prophet of Doom
+ 24453, // Servant of Fate
+ 24452, // Soldier of Fate
+ };
+ // Misc
+ private static final int MIN_LEVEL = 85;
+ private static final int MAX_LEVEL = 89;
+ private static final boolean PARTY_QUEST = true;
+ // Reward
+ private static final int RUNE_WIND_RESISTANCE_RING = 14599;
+
+ public Q00985_AdventureGuildsSpecialRequestLv1()
+ {
+ super(985);
+ addStartNpc(ADVENTURE_GUILDSMAN);
+ addTalkId(ADVENTURE_GUILDSMAN);
+ addKillId(MONSTERS);
+ addCondLevel(MIN_LEVEL, MAX_LEVEL, "33946-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "33946-02.htm":
+ case "33946-03.htm":
+ case "33946-04.htm":
+ case "33946-08.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "33946-05.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "33946-09.html":
+ {
+ giveItems(player, RUNE_WIND_RESISTANCE_RING, 1);
+ addExpAndSp(player, 2108117571L, 2529741);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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:
+ {
+ htmltext = "33946-01.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "33946-06.html";
+ }
+ else
+ {
+ htmltext = "33946-07.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "33946-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
+ if ((qs != null) && qs.isCond(1))
+ {
+ final int killedGhosts = qs.getInt("AncientGhosts") + 1;
+ qs.set("AncientGhosts", killedGhosts);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+
+ if (killedGhosts >= 200)
+ {
+ qs.setCond(2, 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(1))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTER.getId(), true, qs.getInt("AncientGhosts")));
+ 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 4e8603021d..1ca47c3e11 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
@@ -196,6 +196,7 @@ import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -216,9 +217,11 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
+import quests.Q00985_AdventureGuildsSpecialRequestLv1.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.Q10282_ToTheSeedOfAnnihilation.Q10282_ToTheSeedOfAnnihilation;
import quests.Q10283_RequestOfIceMerchant.Q10283_RequestOfIceMerchant;
import quests.Q10284_AcquisitionOfDivineSword.Q10284_AcquisitionOfDivineSword;
@@ -503,7 +506,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -513,8 +515,6 @@ import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00846_BuildingUpStrength;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
-import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
@@ -770,7 +770,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -800,11 +800,11 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
- Q00985_AdventureGuildsSpecialRequestLv1.class, // TODO: Not done.
+ Q00985_AdventureGuildsSpecialRequestLv1.class,
Q00986_AdventureGuildsSpecialRequestLv2.class, // TODO: Not done.
Q00987_AdventureGuildsSpecialRequestLv3.class, // TODO: Not done.
Q00988_AdventureGuildsSpecialRequestLv4.class, // TODO: Not done.
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- 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/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- 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/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java
deleted file mode 100644
index 9a0fe7fa4f..0000000000
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
-{
- private static final int START_NPC = 33946;
-
- public Q00985_AdventureGuildsSpecialRequestLv1()
- {
- super(985);
- 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/MissingQuests.txt b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt
index 9c23fa6512..2ca4c1c936 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
@@ -87,7 +87,6 @@
809 Hunter Guild Request - The Immortal Plateau
810 Hunter Guild Request - Isle of Souls
811 Hunter Guild Request - Cemetery
-824 Attack the Command Post
825 Hunter Guild Request - Valley of Saints
832 Hunter Guild Request - Southern Region, Isle of Prayer
834 Against Dragonclaw
@@ -114,10 +113,8 @@
922 Hunter Guild Request - Northern Region, Isle of Prayer
925 Hunter Guild Request - Garden of Spirits
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
-985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
new file mode 100644
index 0000000000..70c09ffd8e
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
@@ -0,0 +1,5 @@
+Histie:
+What brings you to such a dangerous place?
+You shouldn't be here. Go back.
+(Only characters above Lv. 85-89.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
new file mode 100644
index 0000000000..03294017b5
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
@@ -0,0 +1,6 @@
+Histie:
+Huh? Are you an ally?
+That seal... Isn't it Elikia's? Well I guess you are an ally.
+Did Elikia send you?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
new file mode 100644
index 0000000000..b28d4768f0
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
@@ -0,0 +1,6 @@
+Histie:
+Elikia must have been in a hurry.
+Well, I'm doing fine. Of course I didn't completly recover from my time with the Embryo, but I should be able to carry out my revenge soon.
+Elise is pretty talented. I was able to recover thanks to her.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
new file mode 100644
index 0000000000..5edf5cf37e
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
@@ -0,0 +1,6 @@
+Histie:
+Why are you talking to me?
+I don't know you... Don't you even try to trick me.
+(Quest may only be undertaken by characters with the Blackbird Seal.)
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
new file mode 100644
index 0000000000..ec21366051
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
@@ -0,0 +1,6 @@
+Histie:
+We have to get our revenge!
+They dared set up a trap for me, and made me rely on Elise! Unforgivable!
+Won't you help me get my revenge?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
new file mode 100644
index 0000000000..d784fe1d2d
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
new file mode 100644
index 0000000000..b1b26013e6
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy 200 monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
new file mode 100644
index 0000000000..ad7db8a429
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
@@ -0,0 +1,5 @@
+Histie:
+Not enough. You think this is enough to honor our name?
+Kill 200 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Pirests, and Fortress Dark Wizards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
new file mode 100644
index 0000000000..3764267bc3
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
@@ -0,0 +1,4 @@
+Histie:
+Already done? Great!
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
new file mode 100644
index 0000000000..215d5054a7
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
@@ -0,0 +1,4 @@
+Histie:
+Great! No wonder Elikia sent you here.
+But this isn't enough. I'll stay here until I'm satisfied. Elikia and Leona might be worried about me, so can you tell them I'm alright? Here's a letter. They'll know I'm safe with this.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
new file mode 100644
index 0000000000..bbb4166013
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
@@ -0,0 +1,179 @@
+/*
+ * 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.Q00985_AdventureGuildsSpecialRequestLv1;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+import org.l2jmobius.gameserver.network.NpcStringId;
+
+/**
+ * Adventure Guilds Special Request Lv1 (985)
+ * @author Dmitri
+ */
+public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
+{
+ // NPCs
+ private static final int ADVENTURE_GUILDSMAN = 33946;
+ // Monsters
+ private static final int[] MONSTERS =
+ {
+ 24458, // Vampire Swamp Warrior
+ 24457, // Swamp Vampire Rogue
+ 24460, // Swamp Vampire Shooter
+ 24459, // Swamp Vampire Wizard
+ 24454, // Berserker of Fate
+ 24455, // Prophet of Doom
+ 24453, // Servant of Fate
+ 24452, // Soldier of Fate
+ };
+ // Misc
+ private static final int MIN_LEVEL = 85;
+ private static final int MAX_LEVEL = 89;
+ private static final boolean PARTY_QUEST = true;
+ // Reward
+ private static final int RUNE_WIND_RESISTANCE_RING = 14599;
+
+ public Q00985_AdventureGuildsSpecialRequestLv1()
+ {
+ super(985);
+ addStartNpc(ADVENTURE_GUILDSMAN);
+ addTalkId(ADVENTURE_GUILDSMAN);
+ addKillId(MONSTERS);
+ addCondLevel(MIN_LEVEL, MAX_LEVEL, "33946-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "33946-02.htm":
+ case "33946-03.htm":
+ case "33946-04.htm":
+ case "33946-08.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "33946-05.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "33946-09.html":
+ {
+ giveItems(player, RUNE_WIND_RESISTANCE_RING, 1);
+ addExpAndSp(player, 2108117571L, 2529741);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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:
+ {
+ htmltext = "33946-01.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "33946-06.html";
+ }
+ else
+ {
+ htmltext = "33946-07.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "33946-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
+ if ((qs != null) && qs.isCond(1))
+ {
+ final int killedGhosts = qs.getInt("AncientGhosts") + 1;
+ qs.set("AncientGhosts", killedGhosts);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+
+ if (killedGhosts >= 200)
+ {
+ qs.setCond(2, 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(1))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTER.getId(), true, qs.getInt("AncientGhosts")));
+ 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 035dafaff0..dd4ef1b492 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
@@ -202,6 +202,7 @@ import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00817_BlackAteliaResearch.Q00817_BlackAteliaResearch;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -222,9 +223,11 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
+import quests.Q00985_AdventureGuildsSpecialRequestLv1.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.Q10282_ToTheSeedOfAnnihilation.Q10282_ToTheSeedOfAnnihilation;
import quests.Q10283_RequestOfIceMerchant.Q10283_RequestOfIceMerchant;
import quests.Q10284_AcquisitionOfDivineSword.Q10284_AcquisitionOfDivineSword;
@@ -524,7 +527,6 @@ import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
import quests.not_done.Q00789_WaitingForPaagrio;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -534,8 +536,6 @@ import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00846_BuildingUpStrength;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
-import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
@@ -798,7 +798,7 @@ public class QuestMasterHandler
Q00816_PlansToRepairTheStronghold.class,
Q00817_BlackAteliaResearch.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -828,11 +828,11 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
- Q00985_AdventureGuildsSpecialRequestLv1.class, // TODO: Not done.
+ Q00985_AdventureGuildsSpecialRequestLv1.class,
Q00986_AdventureGuildsSpecialRequestLv2.class, // TODO: Not done.
Q00987_AdventureGuildsSpecialRequestLv3.class, // TODO: Not done.
Q00988_AdventureGuildsSpecialRequestLv4.class, // TODO: Not done.
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- 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/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- 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/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java
deleted file mode 100644
index 9a0fe7fa4f..0000000000
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
-{
- private static final int START_NPC = 33946;
-
- public Q00985_AdventureGuildsSpecialRequestLv1()
- {
- super(985);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt
index 82945e13bd..3c6b9ba6e9 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt
@@ -92,7 +92,6 @@
780 Utilize the Darkness - Seed of Infinity
781 Utilize the Darkness - Seed of Annihilation
782 Utilize the Darkness - Seed of Hellfire
-824 Command Post Raid
834 Against Dragonclaw
836 Request from the Blackbird Clan
837 Request from the Giant Trackers
@@ -109,9 +108,7 @@
918 Red Libra Request - Atelia Fortress
919 Red Libra Request - Superion
929 Seeker Rescue
-930 Disparaging the Phantoms
938 The Fisherman's Other Hobby
-985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
new file mode 100644
index 0000000000..51e9ace38e
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-06.html
@@ -0,0 +1,5 @@
+Elikia:
+Did you kill Burnshine?
+You ruined Burnshine designs...
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
new file mode 100644
index 0000000000..3f409c7f11
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34057-07.html
@@ -0,0 +1,3 @@
+Elikia:
+Good job. This will help the Adventure Guild take the lead.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
new file mode 100644
index 0000000000..292c5af2c1
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-00.htm
@@ -0,0 +1,4 @@
+Penny
+I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.
+(Only characters with Lv. 100+.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
new file mode 100644
index 0000000000..554b64d563
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-01.htm
@@ -0,0 +1,5 @@
+Devianne:
+Have you seen? If not, it's okay.
+Bershtein went on the run, and the gate to the Legion Headquarters opened. Good or bad, I don't know, but the main task has been completed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
new file mode 100644
index 0000000000..59b47980e5
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-02.htm
@@ -0,0 +1,5 @@
+Devianne:
+It is these gates that do not allow us to find out what is happening inside the Headquarters of the Legion.
+Only Bershtein can open them, and while he is inside the headquarters, they cannot be opened from the outside. The only possibility is the moment when Bershtein enters the Legion Headquarters. But this happens almost instantly. It is necessary to somehow hold the gates so that they do not close immediately.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
new file mode 100644
index 0000000000..e96567bd48
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-03.htm
@@ -0,0 +1,5 @@
+Devianne:
+The gates can be kept open briefly with the help of magic. That's what I'm doing.
+It is impossible to fix the gates for a long time, and I can't take a single step, I keep them. Also, if Bernstein finds out, there will be big problems. As soon as I feel that he is going into the fortress, I am forced to drop everything and hide. But Bernstein, whom we want to destroy, is very dangerous.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-04.htm
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
new file mode 100644
index 0000000000..8ca15df7a1
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/34089-05.html
@@ -0,0 +1,5 @@
+Devianne:
+Yes. I need help. The last time the gates opened, Aden Vanguard detachment burst into the Legion Headquarters, but so far there has been no news from them.
+While I will keep the gate, enter the Legion Headquarters, find the Aden Vanguard Members and destroy Bernstein. Don't worry: even if the gate closes, you will be able to get out.
+After you deal with Burnshine, report this to Elric.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
new file mode 100644
index 0000000000..c539c32aac
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00824_AttackTheCommandPost/Q00824_AttackTheCommandPost.java
@@ -0,0 +1,161 @@
+/*
+ * 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.Q00824_AttackTheCommandPost;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+/**
+ * Command Post Raid (824)
+ * @URL https://l2wiki.com/Command_Post_Raid
+ * @author Dmitri
+ */
+public class Q00824_AttackTheCommandPost extends Quest
+{
+ // NPCs
+ private static final int DEVIANNE = 34089;
+ private static final int ELIKIA = 34057;
+ // RaidBosses
+ private static final int BURNSTEIN = 26136;
+ // Rewards
+ private static final int ADEN_VANGUARD_SUPPLY_BOX = 46283;
+ // Misc
+ private static final int MIN_LEVEL = 100;
+
+ public Q00824_AttackTheCommandPost()
+ {
+ super(824);
+ addStartNpc(DEVIANNE);
+ addTalkId(DEVIANNE, ELIKIA);
+ addKillId(BURNSTEIN);
+ addCondMinLevel(MIN_LEVEL, "34089-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+ switch (event)
+ {
+ case "34089-02.htm":
+ case "34089-03.htm":
+ {
+ htmltext = event;
+ break;
+ }
+ case "34089-04.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "34057-07.html":
+ {
+ // Rewards
+ giveItems(player, ADEN_VANGUARD_SUPPLY_BOX, 1);
+ addExpAndSp(player, 3954960000L, 9491880);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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() == DEVIANNE)
+ {
+ htmltext = "34089-01.htm";
+ }
+ break;
+ }
+ case State.STARTED:
+ {
+ switch (npc.getId())
+ {
+ case DEVIANNE:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "34089-05.html";
+ }
+ break;
+ }
+ case ELIKIA:
+ {
+ if (qs.isCond(2))
+ {
+ htmltext = "34057-06.html";
+ }
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34089-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
+ {
+ executeForEachPlayer(player, npc, isSummon, true, false);
+ return super.onKill(npc, player, isSummon);
+ }
+
+ @Override
+ public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ qs.setCond(2, true);
+ }
+ }
+}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
new file mode 100644
index 0000000000..6b1aea92ae
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-00.htm
@@ -0,0 +1,5 @@
+Sporcha:
+The Enchanted Valley has changed, so it's very dangerous.
+I don't think you are supposed to be here yet. Come back when you get stronger.
+(Only characters above Lv. 99+ and Complete: Kefensis' Illusion and Blackbird Clan amity level 4 and above.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
new file mode 100644
index 0000000000..06843ad605
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-01.htm
@@ -0,0 +1,6 @@
+Sporcha:
+Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.
+What do you say? if you don't remember what to do, I can tell you again.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
new file mode 100644
index 0000000000..6fb6357712
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-02.htm
@@ -0,0 +1,4 @@
+Sporcha:
+We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
new file mode 100644
index 0000000000..ff620a5f2c
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-03.htm
@@ -0,0 +1,6 @@
+Sporcha:
+We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.
+Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.
+That's about it.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
new file mode 100644
index 0000000000..8d9331f582
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
new file mode 100644
index 0000000000..a9af9dd2cb
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-04a.htm
@@ -0,0 +1,7 @@
+Sporcha:
+Good. Let me tell you what to do. Just choose the mission that you are capable of doing.
+Basic Mission - Collect 3 Mutated Spirit's Souls.
+Intermediate Mission - Collect 6 Mutated Spirit's Souls.
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
new file mode 100644
index 0000000000..7f9b1de132
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-05.html
@@ -0,0 +1,3 @@
+Sporcha:
+Your Unworldly Visitors Faction Level Must be 5 or above may undertake this mission.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
new file mode 100644
index 0000000000..1bb27674a1
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the basic mission to collect 3 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
new file mode 100644
index 0000000000..ab800c94de
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-06a.html
@@ -0,0 +1,6 @@
+Sporcha:
+You have chosen the intermediate mission to collect 6 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.
+Are you sure you want to proceed with this mission?
+
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
new file mode 100644
index 0000000000..b517f36546
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 3 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
new file mode 100644
index 0000000000..c7c79a3caa
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-07a.html
@@ -0,0 +1,4 @@
+Sporcha:
+Good. Left me explain the details. Go to the Garden of Spirits, defeat the Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero, and put them to rest.
+As evidence, please bring back 6 Mutated Spirit's Souls. It should be manageable.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
new file mode 100644
index 0000000000..a402c941f1
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 3 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
new file mode 100644
index 0000000000..073ca6a98d
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-08a.html
@@ -0,0 +1,3 @@
+Sporcha:
+Go to the Garden of Spirits and defeat all type monsters until you collect 6 Mutated Spirit's Souls.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
new file mode 100644
index 0000000000..07a9819e69
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-09.html
@@ -0,0 +1,5 @@
+Sporcha:
+Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.
+I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
new file mode 100644
index 0000000000..b5ec5291ce
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/34230-10.html
@@ -0,0 +1,4 @@
+Sporcha:
+Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.
+As long as you don't forget us, that is. We thank you for your hard work.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
new file mode 100644
index 0000000000..03503ed1b3
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00930_DisparagingThePhantoms/Q00930_DisparagingThePhantoms.java
@@ -0,0 +1,358 @@
+/*
+ * 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.Q00930_DisparagingThePhantoms;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.Config;
+import org.l2jmobius.commons.util.CommonUtil;
+import org.l2jmobius.gameserver.enums.Faction;
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+
+import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
+
+/**
+ * Disparaging the Phantoms (930)
+ * @URL https://l2wiki.com/Disparaging_the_Phantoms
+ * @author Dmitri
+ */
+public class Q00930_DisparagingThePhantoms extends Quest
+{
+ // NPCs
+ private static final int SPORCHA = 34230;
+ // Monsters
+ private static final int VIPER = 23389;
+ private static final int VIPER_CHERKIA = 23796;
+ private static final int SMAUG = 23384;
+ private static final int LUNATIKAN = 23385;
+ private static final int JABBERWOK = 23386;
+ private static final int KANZAROTH = 23387;
+ private static final int KANDILOTH = 23388;
+ private static final int GARION = 23395;
+ private static final int GARION_NETI = 23396;
+ private static final int DESERT_WENDIGO = 23397;
+ private static final int KORAZA = 23398;
+ private static final int BEND_BEETLE = 23399;
+ private static final int[] VIPE =
+ {
+ 23389, // Viper
+ 23796, // Viper Cherkia
+ };
+ // Items Rewards
+ private static final int BASIC_SUPPLY_BOX = 47356; // Basic Supply Box Blackbird Clan
+ private static final int INTERMEDIATE_SUPPLY_BOX = 47357; // Intermediate Supply Box Blackbird Clan
+ private static final int ADVANCED_SUPPLY_BOX = 47358; // Advanced Supply Box Blackbird Clan
+ // Misc
+ private static final int MIN_LEVEL = 99;
+
+ public Q00930_DisparagingThePhantoms()
+ {
+ super(930);
+ addStartNpc(SPORCHA);
+ addTalkId(SPORCHA);
+ addKillId(VIPE);
+ addKillId(VIPER, VIPER_CHERKIA, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
+ addCondMinLevel(MIN_LEVEL, "34230-00.htm");
+ addCondCompletedQuest(Q10457_KefensisIllusion.class.getSimpleName(), "34230-00.htm");
+ addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "34230-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "34230-02.htm":
+ case "34230-03.htm":
+ case "34230-04.htm":
+ case "34230-04a.htm":
+ case "34230-06.html":
+ case "34230-06a.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "select_mission":
+ {
+ qs.startQuest();
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "return":
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case "34230-07.html":
+ {
+ qs.setCond(2, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-07a.html":
+ {
+ qs.setCond(3, true);
+ htmltext = event;
+ break;
+ }
+ case "34230-10.html":
+ {
+ final int chance = getRandom(100);
+ switch (qs.getCond())
+ {
+ case 4:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 12113489880L, 12113460);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 100);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ case 5:
+ {
+ if (player.getLevel() >= MIN_LEVEL)
+ {
+ if (chance < 2)
+ {
+ giveItems(player, ADVANCED_SUPPLY_BOX, 1);
+ }
+ else if (chance < 20)
+ {
+ giveItems(player, BASIC_SUPPLY_BOX, 1);
+ }
+ else if (chance < 100)
+ {
+ giveItems(player, INTERMEDIATE_SUPPLY_BOX, 1);
+ }
+ addExpAndSp(player, 24226979760L, 24226920);
+ addFactionPoints(player, Faction.BLACKBIRD_CLAN, 200);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ }
+ else
+ {
+ htmltext = getNoQuestLevelRewardMsg(player);
+ }
+ break;
+ }
+ }
+ 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:
+ {
+ htmltext = "34230-01.htm";
+ }
+ case State.STARTED:
+ {
+ switch (qs.getCond())
+ {
+ case 1:
+ {
+ if (player.getFactionLevel(Faction.BLACKBIRD_CLAN) < 5)
+ {
+ htmltext = "34230-04a.htm";
+ break;
+ }
+ htmltext = "34230-04.htm";
+ break;
+ }
+ case 2:
+ {
+ htmltext = "34230-08.html";
+ break;
+ }
+ case 3:
+ {
+ htmltext = "34230-08a.html";
+ break;
+ }
+ case 4:
+ case 5:
+ {
+ htmltext = "34230-09.html";
+ break;
+ }
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (!qs.isNowAvailable())
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ else
+ {
+ qs.setState(State.CREATED);
+ htmltext = "34230-01.htm";
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = getQuestState(killer, false);
+ if ((qs != null) && (qs.getCond() > 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
+ {
+ switch (npc.getId())
+ {
+ case SMAUG:
+ case LUNATIKAN:
+ case JABBERWOK:
+ case KANZAROTH:
+ case KANDILOTH:
+ case GARION:
+ case GARION_NETI:
+ case DESERT_WENDIGO:
+ case KORAZA:
+ case BEND_BEETLE:
+ {
+ if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ else if (getRandom(100) < 25)
+ {
+ final Npc mob = addSpawn(VIPER_CHERKIA, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
+ addAttackPlayerDesire(mob, killer, 5);
+ }
+ break;
+ }
+ case VIPER:
+ case VIPER_CHERKIA:
+ {
+ int killedViper = qs.getInt("killed_" + VIPE[0]);
+ switch (qs.getCond())
+ {
+ case 2:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 3) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 3)
+ {
+ qs.setCond(4, true);
+ }
+ break;
+ }
+ }
+ case 3:
+ {
+ if (CommonUtil.contains(VIPE, npc.getId()))
+ {
+ if ((killedViper < 6) && (getRandom(100) < 25))
+ {
+ killedViper++;
+ qs.set("killed_" + VIPE[0], killedViper);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+ }
+
+ if (killedViper == 6)
+ {
+ qs.setCond(5, true);
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && (qs.getCond() > 1))
+ {
+ final Set npcLogList = new HashSet<>();
+ npcLogList.add(new NpcLogListHolder(VIPE[0], false, qs.getInt("killed_" + VIPE[0])));
+ return npcLogList;
+ }
+ return super.getNpcLogList(player);
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
new file mode 100644
index 0000000000..70c09ffd8e
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-00.htm
@@ -0,0 +1,5 @@
+Histie:
+What brings you to such a dangerous place?
+You shouldn't be here. Go back.
+(Only characters above Lv. 85-89.)
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
new file mode 100644
index 0000000000..03294017b5
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-01.htm
@@ -0,0 +1,6 @@
+Histie:
+Huh? Are you an ally?
+That seal... Isn't it Elikia's? Well I guess you are an ally.
+Did Elikia send you?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
new file mode 100644
index 0000000000..b28d4768f0
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-02.htm
@@ -0,0 +1,6 @@
+Histie:
+Elikia must have been in a hurry.
+Well, I'm doing fine. Of course I didn't completly recover from my time with the Embryo, but I should be able to carry out my revenge soon.
+Elise is pretty talented. I was able to recover thanks to her.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
new file mode 100644
index 0000000000..5edf5cf37e
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-03.htm
@@ -0,0 +1,6 @@
+Histie:
+Why are you talking to me?
+I don't know you... Don't you even try to trick me.
+(Quest may only be undertaken by characters with the Blackbird Seal.)
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
new file mode 100644
index 0000000000..ec21366051
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-04.htm
@@ -0,0 +1,6 @@
+Histie:
+We have to get our revenge!
+They dared set up a trap for me, and made me rely on Elise! Unforgivable!
+Won't you help me get my revenge?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
new file mode 100644
index 0000000000..d784fe1d2d
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-05.htm
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
new file mode 100644
index 0000000000..b1b26013e6
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-06.html
@@ -0,0 +1,4 @@
+Histie:
+Travelers Guild asks to destroy 200 monsters in the Blood Marsh and on the Altar of Evil.
+Hunting objectives: all monsters in these locations.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
new file mode 100644
index 0000000000..ad7db8a429
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-07.html
@@ -0,0 +1,5 @@
+Histie:
+Not enough. You think this is enough to honor our name?
+Kill 200 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Pirests, and Fortress Dark Wizards.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
new file mode 100644
index 0000000000..3764267bc3
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-08.html
@@ -0,0 +1,4 @@
+Histie:
+Already done? Great!
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
new file mode 100644
index 0000000000..215d5054a7
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/33946-09.html
@@ -0,0 +1,4 @@
+Histie:
+Great! No wonder Elikia sent you here.
+But this isn't enough. I'll stay here until I'm satisfied. Elikia and Leona might be worried about me, so can you tell them I'm alright? Here's a letter. They'll know I'm safe with this.
+
\ No newline at end of file
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
new file mode 100644
index 0000000000..bbb4166013
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q00985_AdventureGuildsSpecialRequestLv1/Q00985_AdventureGuildsSpecialRequestLv1.java
@@ -0,0 +1,179 @@
+/*
+ * 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.Q00985_AdventureGuildsSpecialRequestLv1;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.l2jmobius.gameserver.enums.QuestSound;
+import org.l2jmobius.gameserver.enums.QuestType;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
+import org.l2jmobius.gameserver.model.quest.Quest;
+import org.l2jmobius.gameserver.model.quest.QuestState;
+import org.l2jmobius.gameserver.model.quest.State;
+import org.l2jmobius.gameserver.network.NpcStringId;
+
+/**
+ * Adventure Guilds Special Request Lv1 (985)
+ * @author Dmitri
+ */
+public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
+{
+ // NPCs
+ private static final int ADVENTURE_GUILDSMAN = 33946;
+ // Monsters
+ private static final int[] MONSTERS =
+ {
+ 24458, // Vampire Swamp Warrior
+ 24457, // Swamp Vampire Rogue
+ 24460, // Swamp Vampire Shooter
+ 24459, // Swamp Vampire Wizard
+ 24454, // Berserker of Fate
+ 24455, // Prophet of Doom
+ 24453, // Servant of Fate
+ 24452, // Soldier of Fate
+ };
+ // Misc
+ private static final int MIN_LEVEL = 85;
+ private static final int MAX_LEVEL = 89;
+ private static final boolean PARTY_QUEST = true;
+ // Reward
+ private static final int RUNE_WIND_RESISTANCE_RING = 14599;
+
+ public Q00985_AdventureGuildsSpecialRequestLv1()
+ {
+ super(985);
+ addStartNpc(ADVENTURE_GUILDSMAN);
+ addTalkId(ADVENTURE_GUILDSMAN);
+ addKillId(MONSTERS);
+ addCondLevel(MIN_LEVEL, MAX_LEVEL, "33946-00.htm");
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ String htmltext = null;
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return htmltext;
+ }
+
+ switch (event)
+ {
+ case "33946-02.htm":
+ case "33946-03.htm":
+ case "33946-04.htm":
+ case "33946-08.html":
+ {
+ htmltext = event;
+ break;
+ }
+ case "33946-05.htm":
+ {
+ qs.startQuest();
+ htmltext = event;
+ break;
+ }
+ case "33946-09.html":
+ {
+ giveItems(player, RUNE_WIND_RESISTANCE_RING, 1);
+ addExpAndSp(player, 2108117571L, 2529741);
+ qs.exitQuest(QuestType.DAILY, true);
+ htmltext = event;
+ 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:
+ {
+ htmltext = "33946-01.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(1))
+ {
+ htmltext = "33946-06.html";
+ }
+ else
+ {
+ htmltext = "33946-07.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "33946-01.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
+ }
+ break;
+ }
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
+ {
+ final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
+ if ((qs != null) && qs.isCond(1))
+ {
+ final int killedGhosts = qs.getInt("AncientGhosts") + 1;
+ qs.set("AncientGhosts", killedGhosts);
+ playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+
+ if (killedGhosts >= 200)
+ {
+ qs.setCond(2, 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(1))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTER.getId(), true, qs.getInt("AncientGhosts")));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java
index bb936a3a9a..721c004961 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -116,6 +116,7 @@ import quests.Q00790_ObtainingFerinsTrust.Q00790_ObtainingFerinsTrust;
import quests.Q00792_TheSuperionGiants.Q00792_TheSuperionGiants;
import quests.Q00816_PlansToRepairTheStronghold.Q00816_PlansToRepairTheStronghold;
import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
+import quests.Q00824_AttackTheCommandPost.Q00824_AttackTheCommandPost;
import quests.Q00826_InSearchOfTheSecretWeapon.Q00826_InSearchOfTheSecretWeapon;
import quests.Q00827_EinhasadsOrder.Q00827_EinhasadsOrder;
import quests.Q00828_EvasBlessing.Q00828_EvasBlessing;
@@ -135,9 +136,11 @@ import quests.Q00923_ShinedustExtraction.Q00923_ShinedustExtraction;
import quests.Q00924_GiantOfTheRestorationRoom.Q00924_GiantOfTheRestorationRoom;
import quests.Q00926_30DaySearchOperation.Q00926_30DaySearchOperation;
import quests.Q00928_100DaySubjugationOperation.Q00928_100DaySubjugationOperation;
+import quests.Q00930_DisparagingThePhantoms.Q00930_DisparagingThePhantoms;
import quests.Q00931_MemoriesOfTheWind.Q00931_MemoriesOfTheWind;
import quests.Q00932_SayhasEnergy.Q00932_SayhasEnergy;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
+import quests.Q00985_AdventureGuildsSpecialRequestLv1.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.Q10282_ToTheSeedOfAnnihilation.Q10282_ToTheSeedOfAnnihilation;
import quests.Q10283_RequestOfIceMerchant.Q10283_RequestOfIceMerchant;
import quests.Q10284_AcquisitionOfDivineSword.Q10284_AcquisitionOfDivineSword;
@@ -280,7 +283,6 @@ import quests.not_done.Q00773_ToCalmTheFlood;
import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
-import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
@@ -289,8 +291,6 @@ import quests.not_done.Q00840_RequestFromTheKingdomsRoyalGuard;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00846_BuildingUpStrength;
import quests.not_done.Q00929_SeekerRescue;
-import quests.not_done.Q00930_DisparagingThePhantoms;
-import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
@@ -449,7 +449,7 @@ public class QuestMasterHandler
Q00792_TheSuperionGiants.class,
Q00816_PlansToRepairTheStronghold.class,
Q00823_DisappearedRaceNewFairy.class,
- Q00824_AttackTheCommandPost.class, // TODO: Not done.
+ Q00824_AttackTheCommandPost.class,
Q00826_InSearchOfTheSecretWeapon.class,
Q00827_EinhasadsOrder.class,
Q00828_EvasBlessing.class,
@@ -477,11 +477,11 @@ public class QuestMasterHandler
Q00926_30DaySearchOperation.class,
Q00928_100DaySubjugationOperation.class,
Q00929_SeekerRescue.class, // TODO: Not done.
- Q00930_DisparagingThePhantoms.class, // TODO: Not done.
+ Q00930_DisparagingThePhantoms.class,
Q00931_MemoriesOfTheWind.class,
Q00932_SayhasEnergy.class,
Q00937_ToReviveTheFishingGuild.class,
- Q00985_AdventureGuildsSpecialRequestLv1.class, // TODO: Not done.
+ Q00985_AdventureGuildsSpecialRequestLv1.class,
Q00986_AdventureGuildsSpecialRequestLv2.class, // TODO: Not done.
Q00987_AdventureGuildsSpecialRequestLv3.class, // TODO: Not done.
Q00988_AdventureGuildsSpecialRequestLv4.class, // TODO: Not done.
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.java
deleted file mode 100644
index ffe3893c09..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00824_AttackTheCommandPost.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00824_AttackTheCommandPost extends Quest
-{
- private static final int START_NPC = 34089;
-
- public Q00824_AttackTheCommandPost()
- {
- super(824);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.java
deleted file mode 100644
index 870ab9430d..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00930_DisparagingThePhantoms.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00930_DisparagingThePhantoms extends Quest
-{
- private static final int START_NPC = 34230;
-
- public Q00930_DisparagingThePhantoms()
- {
- super(930);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.java
deleted file mode 100644
index 9a0fe7fa4f..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q00985_AdventureGuildsSpecialRequestLv1.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 org.l2jmobius.Config;
-import org.l2jmobius.gameserver.model.quest.Quest;
-
-/**
- * @author Mobius
- */
-public class Q00985_AdventureGuildsSpecialRequestLv1 extends Quest
-{
- private static final int START_NPC = 33946;
-
- public Q00985_AdventureGuildsSpecialRequestLv1()
- {
- super(985);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}