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 10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8 10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9 10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5 10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6 10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree; import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight; import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension; import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction; import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity; import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@@ -958,7 +959,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done. Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class, Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class, Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done. Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class, Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class, Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.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 10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8 10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9 10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5 10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6 10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree; import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight; import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension; import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction; import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity; import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@@ -872,7 +873,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done. Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class, Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class, Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done. Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class, Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class, Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.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 10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8 10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9 10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5 10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6 10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree; import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight; import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension; import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction; import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity; import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@@ -894,7 +895,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done. Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class, Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class, Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done. Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class, Q10658_MakkumInTheDimension.class,
Q10701_TheRoadToDestruction.class, Q10701_TheRoadToDestruction.class,
Q10702_TheRoadToInfinity.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 10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8 10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9 10596 The Dimensional Warp, Part 9
10599 Thread of Fate Hanging on the Mother Tree
10673 Valentine's Day, Lucy's Reply 10673 Valentine's Day, Lucy's Reply
10848 Trials before the Battle 10848 Trials before the Battle
10853 To Weaken the Giants 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.Q10591_NobleMaterial.Q10591_NobleMaterial;
import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree; import quests.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree;
import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight; import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight;
import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension; import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction; import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity; import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
@@ -448,7 +449,7 @@ public class QuestMasterHandler
Q10596_TheDimensionalWarpPart9.class, // TODO: Not done. Q10596_TheDimensionalWarpPart9.class, // TODO: Not done.
Q10597_EscapeToTheShadowOfTheMotherTree.class, Q10597_EscapeToTheShadowOfTheMotherTree.class,
Q10598_WithAllYourMight.class, Q10598_WithAllYourMight.class,
Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done. Q10599_ThreadOfFateHangingOnTheMotherTree.class,
Q10658_MakkumInTheDimension.class, Q10658_MakkumInTheDimension.class,
Q10673_ValentinesDayLucysReply.class, // TODO: Not done. Q10673_ValentinesDayLucysReply.class, // TODO: Not done.
Q10701_TheRoadToDestruction.class, 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));
}
}