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 | ||||
| 10595 The Dimensional Warp, Part 8 | ||||
| 10596 The Dimensional Warp, Part 9 | ||||
| 10599 Thread of Fate Hanging on the Mother Tree | ||||
| 10726 The Minstrel's Song, Part 5 | ||||
| 10731 The Minstrel's Song, Part 6 | ||||
| 10748 Mysterious Suggestion - 1 | ||||
|   | ||||
| @@ -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.Q10597_EscapeToTheShadowOfTheMotherTree.Q10597_EscapeToTheShadowOfTheMotherTree; | ||||
| import quests.Q10598_WithAllYourMight.Q10598_WithAllYourMight; | ||||
| import quests.Q10599_ThreadOfFateHangingOnTheMotherTree.Q10599_ThreadOfFateHangingOnTheMotherTree; | ||||
| import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension; | ||||
| import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction; | ||||
| import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity; | ||||
| @@ -958,7 +959,7 @@ public class QuestMasterHandler | ||||
| 		Q10596_TheDimensionalWarpPart9.class, // TODO: Not done. | ||||
| 		Q10597_EscapeToTheShadowOfTheMotherTree.class, | ||||
| 		Q10598_WithAllYourMight.class, | ||||
| 		Q10599_ThreadOfFateHangingOnTheMotherTree.class, // TODO: Not done. | ||||
| 		Q10599_ThreadOfFateHangingOnTheMotherTree.class, | ||||
| 		Q10658_MakkumInTheDimension.class, | ||||
| 		Q10701_TheRoadToDestruction.class, | ||||
| 		Q10702_TheRoadToInfinity.class, | ||||
|   | ||||
| @@ -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
	 MobiusDevelopment
					MobiusDevelopment