Addition of quest Thread of Fate Hanging on the Mother Tree (10599).

Contributed by Dmitri.
This commit is contained in:
MobiusDevelopment 2020-01-12 06:42:54 +00:00
parent 083013f237
commit 82730d669b
56 changed files with 1056 additions and 152 deletions

View File

@ -164,7 +164,6 @@
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1

View File

@ -0,0 +1,5 @@
<html><body>Fairy Mimyu:<br>
The Enchanted Valley has changed, so it's very dangerous.<br>
I don't think you are supposed to be here yet. Come back when you get stronger.<br>
(Only characters above Lv. 103.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-02.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-03.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-04.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-06.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-07.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-09.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,224 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package quests.Q10599_ThreadOfFateHangingOnTheMotherTree;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
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;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject;
/**
* Thread of Fate Hanging on the Mother Tree (10599)
* @URL https://l2wiki.com/Thread_of_Fate_Hanging_on_the_Mother_Tree
* @author Dmitri
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
// NPCs
private static final int NERUPA = 34412;
// Monsters
private static final int BOSS = 26312; // Lithra 106
private static final int[] MONSTERS =
{
24118, // Crystal Reep
24120, // Crystal Needle
24122, // Treant Blossom
24124, // Flush Teasle
24126, // Creeper Rampike
24128 // Nerupa Aprias
};
// Items
private static final int THREAD_OF_FATE = 48367; // Thread of Fate
// Reward Items
private static final int IMMORTAL_SCROLL_CHAPTER = 26431;
private static final int RUNE_STONE = 39738;
private static final int HUNTERS_AMULET = 47739;
// Misc
private static final int MIN_LEVEL = 103;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(NERUPA);
addTalkId(NERUPA);
addKillId(MONSTERS);
addKillId(BOSS);
registerQuestItems(THREAD_OF_FATE);
addCondMinLevel(MIN_LEVEL, "34412-00.htm");
addCondCompletedQuest(Q10852_TheMotherTreeRevivalProject.class.getSimpleName(), "34412-00.htm");
addCondCompletedQuest(Q10598_WithAllYourMight.class.getSimpleName(), "34412-00.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 10, "34412-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 "34412-03.htm":
case "34412-02.htm":
case "34412-06.html":
{
htmltext = event;
break;
}
case "34412-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34412-07.html":
{
qs.setCond(4, true);
htmltext = event;
break;
}
case "34412-09.html":
{
if (qs.isCond(5))
{
addExpAndSp(player, 108766499040L, 108766440);
takeItems(player, THREAD_OF_FATE, -1);
giveItems(player, IMMORTAL_SCROLL_CHAPTER, 1);
giveItems(player, HUNTERS_AMULET, 1);
giveItems(player, RUNE_STONE, 1);
qs.exitQuest(false, 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 = "34412-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "34412-04.htm";
break;
}
case 3:
{
htmltext = "34412-05.html";
break;
}
case 4:
{
htmltext = "34412-07.html";
break;
}
case 5:
{
htmltext = "34412-08.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
qs.setCond(2, true);
}
if ((qs != null) && qs.isCond(2) && CommonUtil.contains(MONSTERS, npc.getId()))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 30)
{
qs.setCond(3, true);
}
else
{
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((qs != null) && qs.isCond(4) && (npc.getId() == BOSS))
{
qs.setCond(5, true);
giveItems(killer, THREAD_OF_FATE, 1);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_REPEAT, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -386,6 +386,7 @@ import quests.Q10578_TheSoulOfASword.Q10578_TheSoulOfASword;
import quests.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@ -958,7 +959,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done.
Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.class,

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
private static final int START_NPC = 34412;
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -176,7 +176,6 @@
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1

View File

@ -0,0 +1,5 @@
<html><body>Fairy Mimyu:<br>
The Enchanted Valley has changed, so it's very dangerous.<br>
I don't think you are supposed to be here yet. Come back when you get stronger.<br>
(Only characters above Lv. 103.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-02.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-03.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-04.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-06.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-07.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-09.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,224 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package quests.Q10599_ThreadOfFateHangingOnTheMotherTree;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
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;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject;
/**
* Thread of Fate Hanging on the Mother Tree (10599)
* @URL https://l2wiki.com/Thread_of_Fate_Hanging_on_the_Mother_Tree
* @author Dmitri
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
// NPCs
private static final int NERUPA = 34412;
// Monsters
private static final int BOSS = 26312; // Lithra 106
private static final int[] MONSTERS =
{
24118, // Crystal Reep
24120, // Crystal Needle
24122, // Treant Blossom
24124, // Flush Teasle
24126, // Creeper Rampike
24128 // Nerupa Aprias
};
// Items
private static final int THREAD_OF_FATE = 48367; // Thread of Fate
// Reward Items
private static final int IMMORTAL_SCROLL_CHAPTER = 26431;
private static final int RUNE_STONE = 39738;
private static final int HUNTERS_AMULET = 47739;
// Misc
private static final int MIN_LEVEL = 103;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(NERUPA);
addTalkId(NERUPA);
addKillId(MONSTERS);
addKillId(BOSS);
registerQuestItems(THREAD_OF_FATE);
addCondMinLevel(MIN_LEVEL, "34412-00.htm");
addCondCompletedQuest(Q10852_TheMotherTreeRevivalProject.class.getSimpleName(), "34412-00.htm");
addCondCompletedQuest(Q10598_WithAllYourMight.class.getSimpleName(), "34412-00.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 10, "34412-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 "34412-03.htm":
case "34412-02.htm":
case "34412-06.html":
{
htmltext = event;
break;
}
case "34412-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34412-07.html":
{
qs.setCond(4, true);
htmltext = event;
break;
}
case "34412-09.html":
{
if (qs.isCond(5))
{
addExpAndSp(player, 108766499040L, 108766440);
takeItems(player, THREAD_OF_FATE, -1);
giveItems(player, IMMORTAL_SCROLL_CHAPTER, 1);
giveItems(player, HUNTERS_AMULET, 1);
giveItems(player, RUNE_STONE, 1);
qs.exitQuest(false, 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 = "34412-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "34412-04.htm";
break;
}
case 3:
{
htmltext = "34412-05.html";
break;
}
case 4:
{
htmltext = "34412-07.html";
break;
}
case 5:
{
htmltext = "34412-08.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
qs.setCond(2, true);
}
if ((qs != null) && qs.isCond(2) && CommonUtil.contains(MONSTERS, npc.getId()))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 30)
{
qs.setCond(3, true);
}
else
{
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((qs != null) && qs.isCond(4) && (npc.getId() == BOSS))
{
qs.setCond(5, true);
giveItems(killer, THREAD_OF_FATE, 1);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_REPEAT, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -340,6 +340,7 @@ import quests.Q10578_TheSoulOfASword.Q10578_TheSoulOfASword;
import quests.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@ -872,7 +873,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done.
Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.class,

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
private static final int START_NPC = 34412;
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -184,7 +184,6 @@
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1

View File

@ -0,0 +1,5 @@
<html><body>Fairy Mimyu:<br>
The Enchanted Valley has changed, so it's very dangerous.<br>
I don't think you are supposed to be here yet. Come back when you get stronger.<br>
(Only characters above Lv. 103.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-02.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-03.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-04.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-06.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-07.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-09.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,224 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package quests.Q10599_ThreadOfFateHangingOnTheMotherTree;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
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;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject;
/**
* Thread of Fate Hanging on the Mother Tree (10599)
* @URL https://l2wiki.com/Thread_of_Fate_Hanging_on_the_Mother_Tree
* @author Dmitri
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
// NPCs
private static final int NERUPA = 34412;
// Monsters
private static final int BOSS = 26312; // Lithra 106
private static final int[] MONSTERS =
{
24118, // Crystal Reep
24120, // Crystal Needle
24122, // Treant Blossom
24124, // Flush Teasle
24126, // Creeper Rampike
24128 // Nerupa Aprias
};
// Items
private static final int THREAD_OF_FATE = 48367; // Thread of Fate
// Reward Items
private static final int IMMORTAL_SCROLL_CHAPTER = 26431;
private static final int RUNE_STONE = 39738;
private static final int HUNTERS_AMULET = 47739;
// Misc
private static final int MIN_LEVEL = 103;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(NERUPA);
addTalkId(NERUPA);
addKillId(MONSTERS);
addKillId(BOSS);
registerQuestItems(THREAD_OF_FATE);
addCondMinLevel(MIN_LEVEL, "34412-00.htm");
addCondCompletedQuest(Q10852_TheMotherTreeRevivalProject.class.getSimpleName(), "34412-00.htm");
addCondCompletedQuest(Q10598_WithAllYourMight.class.getSimpleName(), "34412-00.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 10, "34412-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 "34412-03.htm":
case "34412-02.htm":
case "34412-06.html":
{
htmltext = event;
break;
}
case "34412-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34412-07.html":
{
qs.setCond(4, true);
htmltext = event;
break;
}
case "34412-09.html":
{
if (qs.isCond(5))
{
addExpAndSp(player, 108766499040L, 108766440);
takeItems(player, THREAD_OF_FATE, -1);
giveItems(player, IMMORTAL_SCROLL_CHAPTER, 1);
giveItems(player, HUNTERS_AMULET, 1);
giveItems(player, RUNE_STONE, 1);
qs.exitQuest(false, 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 = "34412-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "34412-04.htm";
break;
}
case 3:
{
htmltext = "34412-05.html";
break;
}
case 4:
{
htmltext = "34412-07.html";
break;
}
case 5:
{
htmltext = "34412-08.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
qs.setCond(2, true);
}
if ((qs != null) && qs.isCond(2) && CommonUtil.contains(MONSTERS, npc.getId()))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 30)
{
qs.setCond(3, true);
}
else
{
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((qs != null) && qs.isCond(4) && (npc.getId() == BOSS))
{
qs.setCond(5, true);
giveItems(killer, THREAD_OF_FATE, 1);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_REPEAT, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -339,6 +339,7 @@ import quests.Q10578_TheSoulOfASword.Q10578_TheSoulOfASword;
import quests.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@ -894,7 +895,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done.
Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.class,

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
private static final int START_NPC = 34412;
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -176,7 +176,6 @@
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10673 Valentine's Day, Lucy's Reply
10848 Trials before the Battle
10853 To Weaken the Giants

View File

@ -0,0 +1,5 @@
<html><body>Fairy Mimyu:<br>
The Enchanted Valley has changed, so it's very dangerous.<br>
I don't think you are supposed to be here yet. Come back when you get stronger.<br>
(Only characters above Lv. 103.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-02.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-03.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-04.htm">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Refugee Neti:<br>
NOT DONE QUEST (@TODO need retail html).<br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-06.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-07.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,4 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10599_ThreadOfFateHangingOnTheMotherTree 34412-09.html">"Give me a reward"</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><head>Flame Patrol Warrior Bruener:<br>
I'm glad to see you again. Probably it was hard, but you and your friends were able to perform my job, now we can talk about compensation.
</body></html>

View File

@ -0,0 +1,224 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package quests.Q10599_ThreadOfFateHangingOnTheMotherTree;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
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;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject;
/**
* Thread of Fate Hanging on the Mother Tree (10599)
* @URL https://l2wiki.com/Thread_of_Fate_Hanging_on_the_Mother_Tree
* @author Dmitri
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
// NPCs
private static final int NERUPA = 34412;
// Monsters
private static final int BOSS = 26312; // Lithra 106
private static final int[] MONSTERS =
{
24118, // Crystal Reep
24120, // Crystal Needle
24122, // Treant Blossom
24124, // Flush Teasle
24126, // Creeper Rampike
24128 // Nerupa Aprias
};
// Items
private static final int THREAD_OF_FATE = 48367; // Thread of Fate
// Reward Items
private static final int IMMORTAL_SCROLL_CHAPTER = 26431;
private static final int RUNE_STONE = 39738;
private static final int HUNTERS_AMULET = 47739;
// Misc
private static final int MIN_LEVEL = 103;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(NERUPA);
addTalkId(NERUPA);
addKillId(MONSTERS);
addKillId(BOSS);
registerQuestItems(THREAD_OF_FATE);
addCondMinLevel(MIN_LEVEL, "34412-00.htm");
addCondCompletedQuest(Q10852_TheMotherTreeRevivalProject.class.getSimpleName(), "34412-00.htm");
addCondCompletedQuest(Q10598_WithAllYourMight.class.getSimpleName(), "34412-00.htm");
addFactionLevel(Faction.MOTHER_TREE_GUARDIANS, 10, "34412-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 "34412-03.htm":
case "34412-02.htm":
case "34412-06.html":
{
htmltext = event;
break;
}
case "34412-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34412-07.html":
{
qs.setCond(4, true);
htmltext = event;
break;
}
case "34412-09.html":
{
if (qs.isCond(5))
{
addExpAndSp(player, 108766499040L, 108766440);
takeItems(player, THREAD_OF_FATE, -1);
giveItems(player, IMMORTAL_SCROLL_CHAPTER, 1);
giveItems(player, HUNTERS_AMULET, 1);
giveItems(player, RUNE_STONE, 1);
qs.exitQuest(false, 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 = "34412-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "34412-04.htm";
break;
}
case 3:
{
htmltext = "34412-05.html";
break;
}
case 4:
{
htmltext = "34412-07.html";
break;
}
case 5:
{
htmltext = "34412-08.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
qs.setCond(2, true);
}
if ((qs != null) && qs.isCond(2) && CommonUtil.contains(MONSTERS, npc.getId()))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 30)
{
qs.setCond(3, true);
}
else
{
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((qs != null) && qs.isCond(4) && (npc.getId() == BOSS))
{
qs.setCond(5, true);
giveItems(killer, THREAD_OF_FATE, 1);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(2))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_REPEAT, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@ -147,6 +147,7 @@ import quests.Q10590_ReawakenedFate.Q10590_ReawakenedFate;
import quests.Q10591_NobleMaterial.Q10591_NobleMaterial;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@ -448,7 +449,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done.
Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class,
Q10673_ValentinesDayLucysReply.class, // TODO: Not done.
Q10701_TheRoadToDestruction.class,

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10599_ThreadOfFateHangingOnTheMotherTree extends Quest
{
private static final int START_NPC = 34412;
public Q10599_ThreadOfFateHangingOnTheMotherTree()
{
super(10599);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}