From 66f0a226294a85fe2292e8ee3f5fd1d3ebf8f4e2 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Thu, 18 Apr 2019 03:16:31 +0000
Subject: [PATCH] Addition of quests 589 and 590.
---
.../data/scripts/quests/MissingQuests.txt | 2 -
.../scripts/quests/QuestMasterHandler.java | 6 +-
.../Q00589_ASecretChange.java | 183 ++++++++++++++++++
.../custom/Q00589_ASecretChange/accept.htm | 3 +
.../custom/Q00589_ASecretChange/finish.html | 4 +
.../custom/Q00589_ASecretChange/reward.html | 3 +
.../custom/Q00589_ASecretChange/start.htm | 5 +
.../Q00590_ToEachTheirOwn.java | 182 +++++++++++++++++
.../custom/Q00590_ToEachTheirOwn/accept.htm | 3 +
.../custom/Q00590_ToEachTheirOwn/finish.html | 4 +
.../custom/Q00590_ToEachTheirOwn/reward.html | 3 +
.../custom/Q00590_ToEachTheirOwn/start.htm | 5 +
.../quests/not_done/Q00589_ASecretChange.java | 36 ----
.../not_done/Q00590_ToEachTheirOwn.java | 36 ----
.../game/data/stats/items/48500-48599.xml | 24 +++
.../data/scripts/quests/MissingQuests.txt | 2 -
.../scripts/quests/QuestMasterHandler.java | 6 +-
.../Q00589_ASecretChange.java | 183 ++++++++++++++++++
.../custom/Q00589_ASecretChange/accept.htm | 3 +
.../custom/Q00589_ASecretChange/finish.html | 4 +
.../custom/Q00589_ASecretChange/reward.html | 3 +
.../custom/Q00589_ASecretChange/start.htm | 5 +
.../Q00590_ToEachTheirOwn.java | 182 +++++++++++++++++
.../custom/Q00590_ToEachTheirOwn/accept.htm | 3 +
.../custom/Q00590_ToEachTheirOwn/finish.html | 4 +
.../custom/Q00590_ToEachTheirOwn/reward.html | 3 +
.../custom/Q00590_ToEachTheirOwn/start.htm | 5 +
.../quests/not_done/Q00589_ASecretChange.java | 36 ----
.../not_done/Q00590_ToEachTheirOwn.java | 36 ----
.../game/data/stats/items/48500-48599.xml | 2 +
30 files changed, 824 insertions(+), 152 deletions(-)
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
create mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
delete mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java
delete mode 100644 L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.java
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
create mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
delete mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java
delete mode 100644 L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.java
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 f6b734cd0a..d32a3dc29e 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
@@ -21,8 +21,6 @@
586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash
-589 A Secret Change
-590 To Each Their Own
591 Great Ambitions
599 Demons and Dimensional Energy
600 Key to the Refining Process
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 92d4b76006..3854ee9441 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
@@ -408,6 +408,8 @@ import quests.Q10839_BlackbirdsNameValue.Q10839_BlackbirdsNameValue;
import quests.Q10840_TimeToRecover.Q10840_TimeToRecover;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
+import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
+import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
import quests.not_done.*;
/**
@@ -543,8 +545,8 @@ public class QuestMasterHandler
Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done.
Q00588_HeadOnCrash.class, // TODO: Not done.
- Q00589_ASecretChange.class, // TODO: Not done.
- Q00590_ToEachTheirOwn.class, // TODO: Not done.
+ Q00589_ASecretChange.class, // FIXME: Custom.
+ Q00590_ToEachTheirOwn.class, // FIXME: Custom.
Q00591_GreatAmbitions.class, // TODO: Not done.
Q00599_DemonsAndDimensionalEnergy.class, // TODO: Not done.
Q00600_KeyToTheRefiningProcess.class, // TODO: Not done.
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
new file mode 100644
index 0000000000..e7f7d7d6ab
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
@@ -0,0 +1,183 @@
+/*
+ * 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.custom.Q00589_ASecretChange;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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;
+
+/**
+ * A Secret Change (589)
+ * @URL https://l2wiki.com/A_Secret_Change
+ * @author Mobius
+ */
+public class Q00589_ASecretChange extends Quest
+{
+ // NPCs
+ private static final int START_NPC = 34424;
+ private static final int[] MONSTERS =
+ {
+ 24200,
+ 24201,
+ 24202,
+ 24203,
+ };
+ // Item
+ private static final int MONSTER_DROP = 48533;
+ // Misc
+ private static final int REQUIRED_DROP_COUNT = 250;
+ private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_A_SECRET_CHANGE_IN_PROGRESS.getId();
+ private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
+ private static final boolean PARTY_QUEST = false;
+ private static final int KILLING_COND = 1;
+ private static final int FINISH_COND = 2;
+ private static final int MIN_LEVEL = 95;
+ private static final int MAX_LEVEL = 105;
+
+ public Q00589_ASecretChange()
+ {
+ super(589);
+ addStartNpc(START_NPC);
+ addTalkId(START_NPC);
+ addKillId(MONSTERS);
+ registerQuestItems(MONSTER_DROP);
+ addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
+ addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return null;
+ }
+
+ switch (event)
+ {
+ case "accept.htm":
+ {
+ if (qs.isCreated())
+ {
+ qs.startQuest();
+ qs.setCond(KILLING_COND);
+ }
+ break;
+ }
+ case "reward.html":
+ {
+ if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
+ {
+ takeItems(player, MONSTER_DROP, -1);
+ // Reward.
+ addExpAndSp(player, 1793099880, 1793070);
+ giveAdena(player, 680100, false);
+ qs.exitQuest(QUEST_TYPE, true);
+ }
+ break;
+ }
+ default:
+ {
+ return null;
+ }
+ }
+ return event;
+ }
+
+ @Override
+ public String onTalk(Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, true);
+ String htmltext = getNoQuestMsg(player);
+
+ if (npc.getId() == START_NPC)
+ {
+ switch (qs.getState())
+ {
+ case State.CREATED:
+ {
+ htmltext = "start.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(KILLING_COND))
+ {
+ htmltext = "accept.htm";
+ }
+ else if (qs.isCond(FINISH_COND))
+ {
+ htmltext = "finish.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "start.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
+ }
+ 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(KILLING_COND))
+ {
+ final PlayerInstance player = qs.getPlayer();
+ if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
+ {
+ qs.setCond(FINISH_COND, true);
+ }
+ sendNpcLogList(player);
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(KILLING_COND))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, (int) getQuestItemsCount(player, MONSTER_DROP)));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
new file mode 100644
index 0000000000..42f2e8fb83
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
@@ -0,0 +1,3 @@
+Corzet:
+You have to hunt monsters in Silent Valley. Hunt Silence Warrior, Silence Slave, Silence Claw, Silence Witch. You need to gather 250 Trace of Evil.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
new file mode 100644
index 0000000000..d3bd1cdebc
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
@@ -0,0 +1,4 @@
+Corzet:
+Have you retrieved the items I asked for?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
new file mode 100644
index 0000000000..56e74601a9
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
@@ -0,0 +1,3 @@
+Corzet:
+Thank you for your assistance.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
new file mode 100644
index 0000000000..e0c3db61b8
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
@@ -0,0 +1,5 @@
+Corzet:
+If you have time I have a mission for you.
+This area needs to be cleansed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
new file mode 100644
index 0000000000..fe298aa333
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
@@ -0,0 +1,182 @@
+/*
+ * 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.custom.Q00590_ToEachTheirOwn;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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;
+
+/**
+ * To Each Their Own (590)
+ * @URL https://l2wiki.com/To_Each_Their_Own
+ * @author Mobius
+ */
+public class Q00590_ToEachTheirOwn extends Quest
+{
+ // NPCs
+ private static final int START_NPC = 34424;
+ private static final int[] MONSTERS =
+ {
+ 24204,
+ 24205,
+ 24206,
+ };
+ // Item
+ private static final int MONSTER_DROP = 48534;
+ // Misc
+ private static final int REQUIRED_DROP_COUNT = 50;
+ private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_TO_EACH_THEIR_OWN_IN_PROGRESS.getId();
+ private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
+ private static final boolean PARTY_QUEST = false;
+ private static final int KILLING_COND = 1;
+ private static final int FINISH_COND = 2;
+ private static final int MIN_LEVEL = 95;
+ private static final int MAX_LEVEL = 105;
+
+ public Q00590_ToEachTheirOwn()
+ {
+ super(590);
+ addStartNpc(START_NPC);
+ addTalkId(START_NPC);
+ addKillId(MONSTERS);
+ registerQuestItems(MONSTER_DROP);
+ addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
+ addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return null;
+ }
+
+ switch (event)
+ {
+ case "accept.htm":
+ {
+ if (qs.isCreated())
+ {
+ qs.startQuest();
+ qs.setCond(KILLING_COND);
+ }
+ break;
+ }
+ case "reward.html":
+ {
+ if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
+ {
+ takeItems(player, MONSTER_DROP, -1);
+ // Reward.
+ addExpAndSp(player, 1793099880, 1793070);
+ giveAdena(player, 680100, false);
+ qs.exitQuest(QUEST_TYPE, true);
+ }
+ break;
+ }
+ default:
+ {
+ return null;
+ }
+ }
+ return event;
+ }
+
+ @Override
+ public String onTalk(Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, true);
+ String htmltext = getNoQuestMsg(player);
+
+ if (npc.getId() == START_NPC)
+ {
+ switch (qs.getState())
+ {
+ case State.CREATED:
+ {
+ htmltext = "start.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(KILLING_COND))
+ {
+ htmltext = "accept.htm";
+ }
+ else if (qs.isCond(FINISH_COND))
+ {
+ htmltext = "finish.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "start.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
+ }
+ 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(KILLING_COND))
+ {
+ final PlayerInstance player = qs.getPlayer();
+ if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
+ {
+ qs.setCond(FINISH_COND, true);
+ }
+ sendNpcLogList(player);
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(KILLING_COND))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, (int) getQuestItemsCount(player, MONSTER_DROP)));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
new file mode 100644
index 0000000000..3787b9db10
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
@@ -0,0 +1,3 @@
+Corzet:
+You have to hunt monsters in Silent Valley. Hunt Silence Hannibal, Silence Preacle, Silence Phantom. You need to gather 50 Dust of Destroyed Demon.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
new file mode 100644
index 0000000000..fe5f81f07a
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
@@ -0,0 +1,4 @@
+Corzet:
+Have you retrieved the items I asked for?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
new file mode 100644
index 0000000000..56e74601a9
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
@@ -0,0 +1,3 @@
+Corzet:
+Thank you for your assistance.
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
new file mode 100644
index 0000000000..ebb7fdcc4d
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
@@ -0,0 +1,5 @@
+Corzet:
+If you have time I have a mission for you.
+This area needs to be cleansed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java
deleted file mode 100644
index 20a05c5489..0000000000
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.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 Q00589_ASecretChange extends Quest
-{
- private static final int START_NPC = 34424;
-
- public Q00589_ASecretChange()
- {
- super(589);
- 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/Q00590_ToEachTheirOwn.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.java
deleted file mode 100644
index d35b853896..0000000000
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.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 Q00590_ToEachTheirOwn extends Quest
-{
- private static final int START_NPC = 34424;
-
- public Q00590_ToEachTheirOwn()
- {
- super(590);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml
index 3e71750fb0..b26ed18b63 100644
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml
@@ -148,4 +148,28 @@
40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 4dd7df231f..b932ba8e9c 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
@@ -25,8 +25,6 @@
586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash
-589 A Secret Change
-590 To Each Their Own
591 Great Ambitions
593 Basic Mission: Pagan Temple
594 Basic Mission: Dimensional Rift
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 143c4896c0..183ee2df7f 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
@@ -408,6 +408,8 @@ import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
import quests.Q10843_AnomalyInTheEnchantedValley.Q10843_AnomalyInTheEnchantedValley;
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
+import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
+import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
import quests.custom.Q00683_AdventOfKrofinSubspecies.Q00683_AdventOfKrofinSubspecies;
import quests.custom.Q00684_DisturbedFields.Q00684_DisturbedFields;
import quests.custom.Q10516_UnveiledFafurionTemple.Q10516_UnveiledFafurionTemple;
@@ -553,8 +555,8 @@ public class QuestMasterHandler
Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done.
Q00588_HeadOnCrash.class, // TODO: Not done.
- Q00589_ASecretChange.class, // TODO: Not done.
- Q00590_ToEachTheirOwn.class, // TODO: Not done.
+ Q00589_ASecretChange.class, // FIXME: Custom.
+ Q00590_ToEachTheirOwn.class, // FIXME: Custom.
Q00591_GreatAmbitions.class, // TODO: Not done.
Q00593_BasicMissionPaganTemple.class, // TODO: Not done.
Q00594_BasicMissionDimensionalRift.class, // TODO: Not done.
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
new file mode 100644
index 0000000000..e7f7d7d6ab
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/Q00589_ASecretChange.java
@@ -0,0 +1,183 @@
+/*
+ * 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.custom.Q00589_ASecretChange;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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;
+
+/**
+ * A Secret Change (589)
+ * @URL https://l2wiki.com/A_Secret_Change
+ * @author Mobius
+ */
+public class Q00589_ASecretChange extends Quest
+{
+ // NPCs
+ private static final int START_NPC = 34424;
+ private static final int[] MONSTERS =
+ {
+ 24200,
+ 24201,
+ 24202,
+ 24203,
+ };
+ // Item
+ private static final int MONSTER_DROP = 48533;
+ // Misc
+ private static final int REQUIRED_DROP_COUNT = 250;
+ private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_A_SECRET_CHANGE_IN_PROGRESS.getId();
+ private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
+ private static final boolean PARTY_QUEST = false;
+ private static final int KILLING_COND = 1;
+ private static final int FINISH_COND = 2;
+ private static final int MIN_LEVEL = 95;
+ private static final int MAX_LEVEL = 105;
+
+ public Q00589_ASecretChange()
+ {
+ super(589);
+ addStartNpc(START_NPC);
+ addTalkId(START_NPC);
+ addKillId(MONSTERS);
+ registerQuestItems(MONSTER_DROP);
+ addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
+ addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return null;
+ }
+
+ switch (event)
+ {
+ case "accept.htm":
+ {
+ if (qs.isCreated())
+ {
+ qs.startQuest();
+ qs.setCond(KILLING_COND);
+ }
+ break;
+ }
+ case "reward.html":
+ {
+ if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
+ {
+ takeItems(player, MONSTER_DROP, -1);
+ // Reward.
+ addExpAndSp(player, 1793099880, 1793070);
+ giveAdena(player, 680100, false);
+ qs.exitQuest(QUEST_TYPE, true);
+ }
+ break;
+ }
+ default:
+ {
+ return null;
+ }
+ }
+ return event;
+ }
+
+ @Override
+ public String onTalk(Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, true);
+ String htmltext = getNoQuestMsg(player);
+
+ if (npc.getId() == START_NPC)
+ {
+ switch (qs.getState())
+ {
+ case State.CREATED:
+ {
+ htmltext = "start.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(KILLING_COND))
+ {
+ htmltext = "accept.htm";
+ }
+ else if (qs.isCond(FINISH_COND))
+ {
+ htmltext = "finish.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "start.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
+ }
+ 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(KILLING_COND))
+ {
+ final PlayerInstance player = qs.getPlayer();
+ if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
+ {
+ qs.setCond(FINISH_COND, true);
+ }
+ sendNpcLogList(player);
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(KILLING_COND))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, (int) getQuestItemsCount(player, MONSTER_DROP)));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
new file mode 100644
index 0000000000..42f2e8fb83
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/accept.htm
@@ -0,0 +1,3 @@
+Corzet:
+You have to hunt monsters in Silent Valley. Hunt Silence Warrior, Silence Slave, Silence Claw, Silence Witch. You need to gather 250 Trace of Evil.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
new file mode 100644
index 0000000000..d3bd1cdebc
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/finish.html
@@ -0,0 +1,4 @@
+Corzet:
+Have you retrieved the items I asked for?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
new file mode 100644
index 0000000000..56e74601a9
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/reward.html
@@ -0,0 +1,3 @@
+Corzet:
+Thank you for your assistance.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
new file mode 100644
index 0000000000..e0c3db61b8
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00589_ASecretChange/start.htm
@@ -0,0 +1,5 @@
+Corzet:
+If you have time I have a mission for you.
+This area needs to be cleansed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
new file mode 100644
index 0000000000..fe298aa333
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/Q00590_ToEachTheirOwn.java
@@ -0,0 +1,182 @@
+/*
+ * 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.custom.Q00590_ToEachTheirOwn;
+
+import java.util.HashSet;
+import java.util.Set;
+
+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;
+
+/**
+ * To Each Their Own (590)
+ * @URL https://l2wiki.com/To_Each_Their_Own
+ * @author Mobius
+ */
+public class Q00590_ToEachTheirOwn extends Quest
+{
+ // NPCs
+ private static final int START_NPC = 34424;
+ private static final int[] MONSTERS =
+ {
+ 24204,
+ 24205,
+ 24206,
+ };
+ // Item
+ private static final int MONSTER_DROP = 48534;
+ // Misc
+ private static final int REQUIRED_DROP_COUNT = 50;
+ private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_TO_EACH_THEIR_OWN_IN_PROGRESS.getId();
+ private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
+ private static final boolean PARTY_QUEST = false;
+ private static final int KILLING_COND = 1;
+ private static final int FINISH_COND = 2;
+ private static final int MIN_LEVEL = 95;
+ private static final int MAX_LEVEL = 105;
+
+ public Q00590_ToEachTheirOwn()
+ {
+ super(590);
+ addStartNpc(START_NPC);
+ addTalkId(START_NPC);
+ addKillId(MONSTERS);
+ registerQuestItems(MONSTER_DROP);
+ addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
+ addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
+ }
+
+ @Override
+ public String onAdvEvent(String event, Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if (qs == null)
+ {
+ return null;
+ }
+
+ switch (event)
+ {
+ case "accept.htm":
+ {
+ if (qs.isCreated())
+ {
+ qs.startQuest();
+ qs.setCond(KILLING_COND);
+ }
+ break;
+ }
+ case "reward.html":
+ {
+ if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
+ {
+ takeItems(player, MONSTER_DROP, -1);
+ // Reward.
+ addExpAndSp(player, 1793099880, 1793070);
+ giveAdena(player, 680100, false);
+ qs.exitQuest(QUEST_TYPE, true);
+ }
+ break;
+ }
+ default:
+ {
+ return null;
+ }
+ }
+ return event;
+ }
+
+ @Override
+ public String onTalk(Npc npc, PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, true);
+ String htmltext = getNoQuestMsg(player);
+
+ if (npc.getId() == START_NPC)
+ {
+ switch (qs.getState())
+ {
+ case State.CREATED:
+ {
+ htmltext = "start.htm";
+ break;
+ }
+ case State.STARTED:
+ {
+ if (qs.isCond(KILLING_COND))
+ {
+ htmltext = "accept.htm";
+ }
+ else if (qs.isCond(FINISH_COND))
+ {
+ htmltext = "finish.html";
+ }
+ break;
+ }
+ case State.COMPLETED:
+ {
+ if (qs.isNowAvailable())
+ {
+ qs.setState(State.CREATED);
+ htmltext = "start.htm";
+ }
+ else
+ {
+ htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
+ }
+ 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(KILLING_COND))
+ {
+ final PlayerInstance player = qs.getPlayer();
+ if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
+ {
+ qs.setCond(FINISH_COND, true);
+ }
+ sendNpcLogList(player);
+ }
+ return super.onKill(npc, killer, isSummon);
+ }
+
+ @Override
+ public Set getNpcLogList(PlayerInstance player)
+ {
+ final QuestState qs = getQuestState(player, false);
+ if ((qs != null) && qs.isCond(KILLING_COND))
+ {
+ final Set holder = new HashSet<>();
+ holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, (int) getQuestItemsCount(player, MONSTER_DROP)));
+ return holder;
+ }
+ return super.getNpcLogList(player);
+ }
+}
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
new file mode 100644
index 0000000000..3787b9db10
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/accept.htm
@@ -0,0 +1,3 @@
+Corzet:
+You have to hunt monsters in Silent Valley. Hunt Silence Hannibal, Silence Preacle, Silence Phantom. You need to gather 50 Dust of Destroyed Demon.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
new file mode 100644
index 0000000000..fe5f81f07a
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/finish.html
@@ -0,0 +1,4 @@
+Corzet:
+Have you retrieved the items I asked for?
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
new file mode 100644
index 0000000000..56e74601a9
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/reward.html
@@ -0,0 +1,3 @@
+Corzet:
+Thank you for your assistance.
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
new file mode 100644
index 0000000000..ebb7fdcc4d
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/custom/Q00590_ToEachTheirOwn/start.htm
@@ -0,0 +1,5 @@
+Corzet:
+If you have time I have a mission for you.
+This area needs to be cleansed.
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.java
deleted file mode 100644
index 20a05c5489..0000000000
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00589_ASecretChange.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 Q00589_ASecretChange extends Quest
-{
- private static final int START_NPC = 34424;
-
- public Q00589_ASecretChange()
- {
- super(589);
- 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/Q00590_ToEachTheirOwn.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.java
deleted file mode 100644
index d35b853896..0000000000
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q00590_ToEachTheirOwn.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 Q00590_ToEachTheirOwn extends Quest
-{
- private static final int START_NPC = 34424;
-
- public Q00590_ToEachTheirOwn()
- {
- super(590);
- addStartNpc(START_NPC);
- addTalkId(START_NPC);
- addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
- }
-}
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/items/48500-48599.xml
index 7d0066f60e..2e15e2ae55 100644
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/items/48500-48599.xml
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/stats/items/48500-48599.xml
@@ -337,6 +337,7 @@
+
@@ -348,6 +349,7 @@
+