Addition of quest Thread of Fate Hanging on the Mother Tree (10599).
Contributed by Dmitri.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Refugee Neti:<br>
|
||||||
|
NOT DONE QUEST (@TODO need retail html).<br>
|
||||||
|
</body></html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Refugee Neti:<br>
|
||||||
|
NOT DONE QUEST (@TODO need retail html).<br>
|
||||||
|
</body></html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Refugee Neti:<br>
|
||||||
|
NOT DONE QUEST (@TODO need retail html).<br>
|
||||||
|
</body></html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Refugee Neti:<br>
|
||||||
|
NOT DONE QUEST (@TODO need retail html).<br>
|
||||||
|
</body></html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user