Addition of quests 10355, 10356, 10373 and 10535.
Contributed by Sero.
This commit is contained in:
		| @@ -1,4 +1,3 @@ | ||||
| 504 Competition for the Bandit Stronghold | ||||
| 655 A Grand Plan for Taming Wild Beasts | ||||
| 667 How to Cover Shilen's Eyes | ||||
| 690 |Attack| Begin Alliance Base Defense - 1 | ||||
| @@ -104,13 +103,9 @@ | ||||
| 988 Adventure Guild's Special Request - Lv. 4 | ||||
| 989 Adventure Guild's Special Request - Lv. 5 | ||||
| 10298 Wasteland Queen | ||||
| 10355 Blacksmith's Soul-awakening Weapon - 1 | ||||
| 10356 Blacksmith's Soul-awakening Weapon - 2 | ||||
| 10373 Exploring the Dimension - Sealing the Dimension | ||||
| 10396 Witch of Spores | ||||
| 10423 Embryo Stronghold Ambush | ||||
| 10506 Diana's Request | ||||
| 10535 Blacksmith's Soul-awakening Weapon - 3 | ||||
| 10712 The Minstrel's Song, Part 1 | ||||
| 10717 The Minstrel's Song, Part 2 | ||||
| 10720 The Minstrel's Song, Part 3 | ||||
|   | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Taboy:<br> | ||||
| Hello now Go ahead and talk with <font color="LEVEL">Legendary Blacksmith Shadai</font> in <font color="LEVEL">Heine</font>!<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| You have made a great work now you go to <font color="LEVEL">Nightmare Kamaloka</font> and defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font><br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| You have made a great work now you go to <font color="LEVEL"> Enchanted Valley</font> and defeat 3000 of them. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| You need to defeat 5 of <font color="LEVEL">Dark Rider</font> then go to <font color="LEVEL">Command Post</font> and defeat 5 of <font color="LEVEL"> Burnstein (Command Post)</font> and bring me 5 <font color="LEVEL"> Shadow ingot</font>. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Congratulations you have complate the challenge now you're able to take the next challenge <font color="LEVEL"> Blacksmiths Soul part 2 </font> and bring me 5 Shadow ingot.<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Shadai:<br> | ||||
| Hello now go ahead and talk with <font color="LEVEL">Maestro Ishuma</font> at <font color="LEVEL">Wharf of Gludio Airships</font>!<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Shadai:<br> | ||||
| Hello now Go ahead and talk with <font color="LEVEL">Blacksmith of Mammon</font> at <font color="LEVEL">Aden</font> or <font color="LEVEL">Giran</font>!<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Neti:<br> | ||||
| This will be long way !<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10355_BlacksmithsSoul1 34095-01.htm">"Okay."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Neti:<br> | ||||
| Great you choose to take the challenge Go ahead and talk with <font color="LEVEL">Head Blacksmith Tapoy</font> in <font color="LEVEL">Gludin </font>!<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,320 @@ | ||||
| /* | ||||
|  * 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.Q10355_BlacksmithsSoul1; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| 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; | ||||
|  | ||||
| /** | ||||
|  * @author Sero | ||||
|  */ | ||||
| public class Q10355_BlacksmithsSoul1 extends Quest | ||||
| { | ||||
| 	// NPC | ||||
| 	private static final int NETI = 34095; | ||||
| 	private static final int TAPOY = 30499; | ||||
| 	private static final int SHADAI = 32347; | ||||
| 	private static final int ISHUMA = 32615; | ||||
| 	private static final int MERCHANT_OF_MAMMON = 31126; | ||||
| 	// Items | ||||
| 	private static final int SHADOW_INGOT = 46395; | ||||
| 	 | ||||
| 	// Monsters | ||||
| 	private static final int BURNSTEIN = 23587; | ||||
| 	private static final int DARK_RIDER = 26102; | ||||
| 	private static final int[] NYMPH_MONSTERS = | ||||
| 	{ | ||||
| 		23569, // Nymph Lily | ||||
| 		23583, // Nymph Lily big | ||||
| 		23573, // Nymph Cosmos | ||||
| 		23567, // Nymph Rose | ||||
| 		23578, // Nymph Guardian | ||||
| 		23570, // Nymph Tulip | ||||
| 		19600, // Flower Bud | ||||
| 		23581, // Apherus | ||||
| 	}; | ||||
| 	// Misc | ||||
| 	private static final int MIN_LEVEL = 99; | ||||
| 	private static final String KILL_COUNT_VAR = "KillCount"; | ||||
| 	 | ||||
| 	public Q10355_BlacksmithsSoul1() | ||||
| 	{ | ||||
| 		super(10355); | ||||
| 		addStartNpc(NETI); | ||||
| 		addTalkId(NETI, TAPOY, SHADAI, ISHUMA, MERCHANT_OF_MAMMON); | ||||
| 		registerQuestItems(SHADOW_INGOT); | ||||
| 		addKillId(DARK_RIDER); | ||||
| 		addKillId(BURNSTEIN); | ||||
| 		addKillId(NYMPH_MONSTERS); | ||||
| 		addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if (qs == null) | ||||
| 		{ | ||||
| 			return getNoQuestMsg(player); | ||||
| 		} | ||||
| 		if (event.equals("34095-01.htm")) | ||||
| 		{ | ||||
| 			qs.startQuest(); | ||||
| 			htmltext = event; | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onTalk(Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, true); | ||||
| 		String htmltext = getNoQuestMsg(player); | ||||
| 		switch (npc.getId()) | ||||
| 		{ | ||||
| 			case NETI: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.CREATED: | ||||
| 					{ | ||||
| 						htmltext = "34095-00.htm"; | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						htmltext = "30756-09.html"; | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "34227-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case TAPOY: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(1)) | ||||
| 						{ | ||||
| 							htmltext = "30499-00.htm"; | ||||
| 							qs.setCond(2); | ||||
| 						} | ||||
| 						else | ||||
| 						{ | ||||
| 							htmltext = "30499-00.htm"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "34227-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case SHADAI: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(2)) | ||||
| 						{ | ||||
| 							htmltext = "32347-00.htm"; | ||||
| 							qs.setCond(3); | ||||
| 						} | ||||
| 						else | ||||
| 						{ | ||||
| 							htmltext = "32347-00.htm"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "34227-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case ISHUMA: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(3)) | ||||
| 						{ | ||||
| 							htmltext = "32615-00.htm"; | ||||
| 							qs.setCond(4); | ||||
| 						} | ||||
| 						else | ||||
| 						{ | ||||
| 							htmltext = "32615-00.htm"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "34227-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case MERCHANT_OF_MAMMON: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(4)) | ||||
| 						{ | ||||
| 							htmltext = "31126-00.htm"; | ||||
| 							qs.setCond(5); | ||||
| 						} | ||||
| 						else if (qs.isCond(5)) | ||||
| 						{ | ||||
| 							htmltext = "31126-00.htm"; | ||||
| 						} | ||||
| 						else if (qs.isCond(6) && (getQuestItemsCount(player, SHADOW_INGOT) >= 5)) | ||||
| 						{ | ||||
| 							takeItems(player, SHADOW_INGOT, 5); | ||||
| 							htmltext = "31126-01.htm"; | ||||
| 							qs.setCond(7); | ||||
| 						} | ||||
| 						else if (qs.isCond(8)) | ||||
| 						{ | ||||
| 							htmltext = "31126-03.htm"; | ||||
| 							addExpAndSp(player, 26918866543L, 24226979); | ||||
| 							qs.exitQuest(false, true); | ||||
| 						} | ||||
| 						else | ||||
| 						{ | ||||
| 							htmltext = "31126-02.htm"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "34227-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if ((qs != null) && qs.isCond(5)) | ||||
| 		{ | ||||
| 			final int killedCount = qs.getInt(Integer.toString(npc.getId())); | ||||
| 			if (killedCount < 5) | ||||
| 			{ | ||||
| 				qs.set(Integer.toString(npc.getId()), killedCount + 1); | ||||
| 			} | ||||
| 			 | ||||
| 			final int killedRessurected = qs.getInt(Integer.toString(DARK_RIDER)); | ||||
| 			final int killedLunatic = qs.getInt(Integer.toString(BURNSTEIN)); | ||||
| 			if ((killedLunatic == 5) && (killedRessurected == 5)) | ||||
| 			{ | ||||
| 				qs.setCond(6, true); | ||||
| 			} | ||||
| 		} | ||||
| 		else if ((qs != null) && qs.isCond(7)) | ||||
| 		{ | ||||
| 			int count = qs.getInt(KILL_COUNT_VAR); | ||||
| 			qs.set(KILL_COUNT_VAR, ++count); | ||||
| 			if (count >= 3000) | ||||
| 			{ | ||||
| 				qs.setCond(8, true); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance player, boolean isSummon) | ||||
| 	{ | ||||
| 		executeForEachPlayer(player, npc, isSummon, true, false); | ||||
| 		return super.onKill(npc, player, isSummon); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if ((qs != null) && qs.isCond(5)) | ||||
| 		{ | ||||
| 			final Set<NpcLogListHolder> npcLogList = new HashSet<>(2); | ||||
| 			npcLogList.add(new NpcLogListHolder(DARK_RIDER, false, qs.getInt(Integer.toString(DARK_RIDER)))); | ||||
| 			npcLogList.add(new NpcLogListHolder(NpcStringId.DEFEAT_COMMANDER_BURNSTEIN_2, qs.getInt(Integer.toString(BURNSTEIN)))); | ||||
| 			return npcLogList; | ||||
| 		} | ||||
| 		else if ((qs != null) && qs.isCond(7)) | ||||
| 		{ | ||||
| 			final int killCount = qs.getInt(KILL_COUNT_VAR); | ||||
| 			if (killCount > 0) | ||||
| 			{ | ||||
| 				final Set<NpcLogListHolder> holder = new HashSet<>(); | ||||
| 				holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_IN_THE_ENCHANTED_VALLEY_2, killCount)); | ||||
| 				return holder; | ||||
| 			} | ||||
| 		} | ||||
| 		return super.getNpcLogList(player); | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Now the next part of your challenge is to bring me <font color="LEVEL">Improved Shadow Ingot</font>.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-01.htm">"Okay Let's go."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| When you have <font color="LEVEL">Improved Shadow Ingot</font> come back to me. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| You need to complete Blacksmiths Soul - Part 1 first. | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Do you have the <font color="LEVEL">Improved Shadow Ingot</font>?<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 31126-04.htm">"Yes take it."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Do you have the <font color="LEVEL">Improved Shadow Ingot</font>? | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Good job now bring me a Shadow weapon that you don't want so I can make my research. | ||||
| </body></html> | ||||
							
								
								
									
										13
									
								
								L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10356_BlacksmithsSoul2/31126-05.htm
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10356_BlacksmithsSoul2/31126-05.htm
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Choose the weapon that you don't need to I can make my research on it "Warning! The weapon will not be returned to you" <br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_1">"Shadow Shaper."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_2">"Shadow Cutter."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_3">"Shadow Slasher."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_4">"Shadow Fighter."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_5">"Shadow Stormer."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_6">"Shadow Thrower."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_7">"Shadow Shooter."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_8">"Shadow Buster."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_9">"Shadow Retributer."</Button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 SHADOW_WEAPON_10">"Shadow Dual Sword."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Great work! Now take this weapon, upgrade it to +7 and bring it back to me. | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Nice now hand me the weapon let me do my research.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10356_BlacksmithsSoul2 RESEARCH_Shadow_WEAPON7">"Take it."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| It's hard work but please enchant my the weapon to +7. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| You have done good so far now you can take your reward and be ready for the next challenge. Have a great day. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Shadai:<br> | ||||
| I agreed to take a part in the research. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Ishuma:<br> | ||||
| I agreed to take a part in the research. | ||||
| </body></html> | ||||
| @@ -0,0 +1,371 @@ | ||||
| /* | ||||
|  * 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.Q10356_BlacksmithsSoul2; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| 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.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1; | ||||
|  | ||||
| /** | ||||
|  * @author Sero | ||||
|  */ | ||||
| public class Q10356_BlacksmithsSoul2 extends Quest | ||||
| { | ||||
| 	// NPCs | ||||
| 	private static final int BLACKSMITH_MAMMON = 31126; | ||||
| 	private static final int SHADAI = 32347; | ||||
| 	private static final int ISHUMA = 32615; | ||||
| 	// Items | ||||
| 	private static final int Improved_SHADOW_Ingot = 47896; | ||||
| 	private static final int RESEARCH_SHADOW_WEAPON = 47890; | ||||
| 	private static final int SHADOW_WEAPON_1 = 46317; | ||||
| 	private static final int SHADOW_WEAPON_2 = 46318; | ||||
| 	private static final int SHADOW_WEAPON_3 = 46319; | ||||
| 	private static final int SHADOW_WEAPON_4 = 46320; | ||||
| 	private static final int SHADOW_WEAPON_5 = 46321; | ||||
| 	private static final int SHADOW_WEAPON_6 = 46322; | ||||
| 	private static final int SHADOW_WEAPON_7 = 46323; | ||||
| 	private static final int SHADOW_WEAPON_8 = 46324; | ||||
| 	private static final int SHADOW_WEAPON_9 = 46325; | ||||
| 	private static final int SHADOW_WEAPON_10 = 46326; | ||||
| 	private static final int SHADOW_CRYSTAL = 47899; | ||||
| 	private static final int MAIN_LEVEL = 99; | ||||
| 	 | ||||
| 	public Q10356_BlacksmithsSoul2() | ||||
| 	{ | ||||
| 		super(10356); | ||||
| 		addStartNpc(BLACKSMITH_MAMMON); | ||||
| 		addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA); | ||||
| 		addCondCompletedQuest(Q10355_BlacksmithsSoul1.class.getSimpleName(), "31126-02.htm"); | ||||
| 		addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null)); | ||||
| 		registerQuestItems(Improved_SHADOW_Ingot, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10, RESEARCH_SHADOW_WEAPON); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if (qs == null) | ||||
| 		{ | ||||
| 			return getNoQuestMsg(player); | ||||
| 		} | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "31126-01.htm": | ||||
| 			{ | ||||
| 				qs.startQuest(); | ||||
| 				htmltext = event; | ||||
| 				break; | ||||
| 			} | ||||
| 			case "31126-04.htm": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, Improved_SHADOW_Ingot)) | ||||
| 				{ | ||||
| 					takeItems(player, Improved_SHADOW_Ingot, 1); | ||||
| 					qs.setCond(2); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					htmltext = "31126-03r.htm"; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_1": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_1)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_1, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_2": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_2)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_2, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_3": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_3)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_3, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_4": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_4)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_4, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_5": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_5)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_5, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_6": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_6)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_6, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_7": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_7)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_7, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_8": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_8)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_8, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_9": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_9)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_9, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "SHADOW_WEAPON_10": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, SHADOW_WEAPON_10)) | ||||
| 				{ | ||||
| 					takeItems(player, SHADOW_WEAPON_10, 1); | ||||
| 					giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 					htmltext = "31126-06.htm"; | ||||
| 					qs.setCond(3); | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "RESEARCH_SHADOW_WEAPON7": | ||||
| 			{ | ||||
| 				if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON) && (getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7)) | ||||
| 				{ | ||||
| 					takeItems(player, RESEARCH_SHADOW_WEAPON, -1); | ||||
| 					giveItems(player, SHADOW_CRYSTAL, 2); | ||||
| 					qs.setCond(5); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onTalk(Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, true); | ||||
| 		String htmltext = getNoQuestMsg(player); | ||||
| 		switch (npc.getId()) | ||||
| 		{ | ||||
| 			case BLACKSMITH_MAMMON: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.CREATED: | ||||
| 					{ | ||||
| 						htmltext = "31126-00.htm"; | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(1)) | ||||
| 						{ | ||||
| 							htmltext = "31126-03.htm"; | ||||
| 						} | ||||
| 						else if (qs.isCond(2)) | ||||
| 						{ | ||||
| 							htmltext = "31126-05.htm"; | ||||
| 						} | ||||
| 						else if (qs.isCond(3)) | ||||
| 						{ | ||||
| 							htmltext = "31126-08.htm"; | ||||
| 							qs.setCond(4); | ||||
| 						} | ||||
| 						else if (qs.isCond(4)) | ||||
| 						{ | ||||
| 							if (hasQuestItems(player, RESEARCH_SHADOW_WEAPON)) | ||||
| 							{ | ||||
| 								htmltext = "31126-07.htm"; | ||||
| 							} | ||||
| 							else | ||||
| 							{ | ||||
| 								giveItems(player, RESEARCH_SHADOW_WEAPON, 1); | ||||
| 								htmltext = "31126-06.htm"; | ||||
| 							} | ||||
| 						} | ||||
| 						else if (qs.isCond(6)) | ||||
| 						{ | ||||
| 							htmltext = "31126-09.htm"; | ||||
| 							addExpAndSp(player, 32958000000L, 29662200); | ||||
| 							qs.exitQuest(false, true); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case SHADAI: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL)) | ||||
| 						{ | ||||
| 							htmltext = "32347-00.htm"; | ||||
| 							takeItems(player, SHADOW_CRYSTAL, -1); | ||||
| 							qs.setCond(6); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case ISHUMA: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(5) && hasQuestItems(player, SHADOW_CRYSTAL)) | ||||
| 						{ | ||||
| 							htmltext = "32615-00.htm"; | ||||
| 							takeItems(player, SHADOW_CRYSTAL, -1); | ||||
| 							qs.setCond(6); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance player, boolean isSummon) | ||||
| 	{ | ||||
| 		executeForEachPlayer(player, npc, isSummon, true, false); | ||||
| 		return super.onKill(npc, player, isSummon); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if ((qs != null) && qs.isCond(2)) | ||||
| 		{ | ||||
| 			if (hasAtLeastOneQuestItem(player, SHADOW_WEAPON_1, SHADOW_WEAPON_2, SHADOW_WEAPON_3, SHADOW_WEAPON_4, SHADOW_WEAPON_5, SHADOW_WEAPON_6, SHADOW_WEAPON_7, SHADOW_WEAPON_8, SHADOW_WEAPON_9, SHADOW_WEAPON_10)) | ||||
| 			{ | ||||
| 				final Set<NpcLogListHolder> holder = new HashSet<>(); | ||||
| 				holder.add(new NpcLogListHolder(NpcStringId.BRING_SHADOW_WEAPON, 1)); | ||||
| 				return holder; | ||||
| 			} | ||||
| 			 | ||||
| 		} | ||||
| 		if ((qs != null) && qs.isCond(4)) | ||||
| 		{ | ||||
| 			if ((getEnchantLevel(player, RESEARCH_SHADOW_WEAPON) >= 7)) | ||||
| 			{ | ||||
| 				final Set<NpcLogListHolder> holder = new HashSet<>(); | ||||
| 				holder.add(new NpcLogListHolder(NpcStringId.ENCHANT_THE_RESEARCH_WEAPON, 1)); | ||||
| 				return holder; | ||||
| 			} | ||||
| 			 | ||||
| 		} | ||||
| 		return super.getNpcLogList(player); | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Beola:<br> | ||||
| You have completed the quest.<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Beola:<br> | ||||
| It's a fortunate thing that such a skilled adventurer as yourself has committed to making yourself available to the cause. Here is your mission. | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>Beloa:<br> | ||||
| You need 30 of the Renants of the Rift item in order to seal the Dimensional Rift..<br> | ||||
| Are you strong enough to collect 30 Remnant of the Rift for me?<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10373_ExploringTheDimensionSealingTheDimension 34227-04.htm">"Yes I'm."</Button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Beola:<br> | ||||
| Not done yet. | ||||
| </body></html> | ||||
| @@ -0,0 +1,107 @@ | ||||
| /* | ||||
|  * 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.Q10373_ExploringTheDimensionSealingTheDimension; | ||||
|  | ||||
| import org.l2jmobius.gameserver.enums.QuestType; | ||||
| import org.l2jmobius.gameserver.model.actor.Npc; | ||||
| import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
| import org.l2jmobius.gameserver.model.quest.Quest; | ||||
| import org.l2jmobius.gameserver.model.quest.QuestState; | ||||
| import org.l2jmobius.gameserver.model.quest.State; | ||||
|  | ||||
| /** | ||||
|  * @author Sero | ||||
|  */ | ||||
| public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest | ||||
| { | ||||
| 	private static final int BELOA = 34227; | ||||
| 	private static final int RUNE_STONE = 39738; | ||||
| 	private static final int COMMANDO_BELT = 47044; | ||||
| 	private static final int REMNANT_OF_THE_RIFT = 46787; | ||||
| 	private static final int ZODIAC_AGATHION = 45577; | ||||
| 	private static final int MIN_LEVEL = 95; | ||||
| 	 | ||||
| 	public Q10373_ExploringTheDimensionSealingTheDimension() | ||||
| 	{ | ||||
| 		super(10373); | ||||
| 		addStartNpc(BELOA); | ||||
| 		addTalkId(BELOA); | ||||
| 		addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if (qs == null) | ||||
| 		{ | ||||
| 			return getNoQuestMsg(player); | ||||
| 		} | ||||
| 		if (event.equals("34227-04.htm")) | ||||
| 		{ | ||||
| 			qs.startQuest(); | ||||
| 			htmltext = event; | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onTalk(Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, true); | ||||
| 		String htmltext = getNoQuestMsg(player); | ||||
| 		if (npc.getId() == BELOA) | ||||
| 		{ | ||||
| 			switch (qs.getState()) | ||||
| 			{ | ||||
| 				case State.CREATED: | ||||
| 				{ | ||||
| 					htmltext = "34227-05.htm"; | ||||
| 					break; | ||||
| 				} | ||||
| 				case State.STARTED: | ||||
| 				{ | ||||
| 					if (getQuestItemsCount(player, REMNANT_OF_THE_RIFT) >= 30) | ||||
| 					{ | ||||
| 						takeItems(player, REMNANT_OF_THE_RIFT, -1); | ||||
| 						giveItems(player, COMMANDO_BELT, 1); | ||||
| 						giveItems(player, ZODIAC_AGATHION, 1); | ||||
| 						giveItems(player, RUNE_STONE, 1); | ||||
| 						addExpAndSp(player, 12113489880L, 12113460); | ||||
| 						qs.exitQuest(QuestType.ONE_TIME); | ||||
| 						htmltext = "30756-09.html"; | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						htmltext = "34227-05a.htm"; | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 				case State.COMPLETED: | ||||
| 				{ | ||||
| 					if (!qs.isNowAvailable()) | ||||
| 					{ | ||||
| 						htmltext = "34227-00a.htm"; | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| This the <font color="LEVEL">Last challenge</font> Defeat monster in  Giant's Cave and Hellbound collect Ore with Giant's Energy and Crystal with Magical Power Crystal with Magical Power then take them to Shadai and Ishuma. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Mammon:<br> | ||||
| Congratulations you have completed the challenge you deserve your reward warrior! | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Shadai:<br> | ||||
| Thank you for your hard work. | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Ishuma:<br> | ||||
| Thank you for your hard work. | ||||
| </body></html> | ||||
| @@ -0,0 +1,238 @@ | ||||
| /* | ||||
| * 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.Q10535_BlacksmithsSoul3; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import org.l2jmobius.commons.util.CommonUtil; | ||||
| import org.l2jmobius.gameserver.enums.QuestSound; | ||||
| import org.l2jmobius.gameserver.model.Party; | ||||
| import org.l2jmobius.gameserver.model.actor.Npc; | ||||
| import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
| import org.l2jmobius.gameserver.model.quest.Quest; | ||||
| import org.l2jmobius.gameserver.model.quest.QuestState; | ||||
| import org.l2jmobius.gameserver.model.quest.State; | ||||
|  | ||||
| import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2; | ||||
|  | ||||
| /** | ||||
|  * @author Sero | ||||
|  */ | ||||
| public class Q10535_BlacksmithsSoul3 extends Quest | ||||
| { | ||||
| 	// NPCs | ||||
| 	private static final int BLACKSMITH_MAMMON = 31126; | ||||
| 	private static final int SHADAI = 32347; | ||||
| 	private static final int ISHUMA = 32615; | ||||
| 	// Monsters | ||||
| 	private static final int[] HELL_MONSTERS = | ||||
| 	{ | ||||
| 		23386, // Jabberwok | ||||
| 		23387, // Kanzaroth | ||||
| 		23388, // Kandiloth | ||||
| 		23384, // Smaug | ||||
| 		23385, // Lunatikan | ||||
| 		23399, // Bend Beetle | ||||
| 		23398, // Koraza | ||||
| 		23397, // Desert Wendigo | ||||
| 		23395, // Garion | ||||
| 		23396, // Garion neti | ||||
| 	}; | ||||
| 	private static final int[] CAVE_MONSTERS = | ||||
| 	{ | ||||
| 		23727, // Shaqrima Bathus | ||||
| 		23728, // Shaqrima Carcass | ||||
| 		23729, // Kshana | ||||
| 	}; | ||||
| 	// Items | ||||
| 	private static final int OREWITH_GIANTS_ENERGY = 47892; | ||||
| 	private static final int CRYSTAL_WITH_MAGOCAL_POWER = 47891; | ||||
| 	private static final int ENCHANTED_SHADOW_INGOT = 47886; | ||||
| 	// Misc | ||||
| 	private static final int MAIN_LEVEL = 99; | ||||
| 	 | ||||
| 	public Q10535_BlacksmithsSoul3() | ||||
| 	{ | ||||
| 		super(10535); | ||||
| 		addStartNpc(BLACKSMITH_MAMMON); | ||||
| 		addTalkId(BLACKSMITH_MAMMON, SHADAI, ISHUMA); | ||||
| 		addKillId(HELL_MONSTERS); | ||||
| 		addKillId(CAVE_MONSTERS); | ||||
| 		addCondCompletedQuest(Q10356_BlacksmithsSoul2.class.getSimpleName(), "31126-02.htm"); | ||||
| 		addCondMinLevel(MAIN_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onTalk(Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, true); | ||||
| 		String htmltext = getNoQuestMsg(player); | ||||
| 		switch (npc.getId()) | ||||
| 		{ | ||||
| 			case BLACKSMITH_MAMMON: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.CREATED: | ||||
| 					{ | ||||
| 						htmltext = "31126-00.htm"; | ||||
| 						qs.startQuest(); | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(9)) | ||||
| 						{ | ||||
| 							htmltext = "31126-01.htm"; | ||||
| 							addExpAndSp(player, 40346120829L, 36311508); | ||||
| 							giveItems(player, ENCHANTED_SHADOW_INGOT, 1); | ||||
| 							qs.exitQuest(false, true); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case SHADAI: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(7) && (getQuestItemsCount(player, CRYSTAL_WITH_MAGOCAL_POWER) >= 500) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500)) | ||||
| 						{ | ||||
| 							htmltext = "32347-00.htm"; | ||||
| 							takeItems(player, CRYSTAL_WITH_MAGOCAL_POWER, -1); | ||||
| 							qs.setCond(8); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case ISHUMA: | ||||
| 			{ | ||||
| 				switch (qs.getState()) | ||||
| 				{ | ||||
| 					case State.STARTED: | ||||
| 					{ | ||||
| 						if (qs.isCond(8) && (getQuestItemsCount(player, OREWITH_GIANTS_ENERGY) >= 500)) | ||||
| 						{ | ||||
| 							htmltext = "32615-00.htm"; | ||||
| 							takeItems(player, OREWITH_GIANTS_ENERGY, -1); | ||||
| 							qs.setCond(9); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case State.COMPLETED: | ||||
| 					{ | ||||
| 						if (!qs.isNowAvailable()) | ||||
| 						{ | ||||
| 							htmltext = "31126-00a.htm"; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		if (killer.isInParty()) | ||||
| 		{ | ||||
| 			final Party party = killer.getParty(); | ||||
| 			final List<PlayerInstance> partyMember = party.getMembers(); | ||||
| 			for (PlayerInstance singleMember : partyMember) | ||||
| 			{ | ||||
| 				final QuestState qsPartyMember = getQuestState(singleMember, false); | ||||
| 				final double distance = npc.calculateDistance3D(singleMember); | ||||
| 				if ((qsPartyMember != null) && (distance <= 1000)) | ||||
| 				{ | ||||
| 					if (qsPartyMember.isCond(1)) | ||||
| 					{ | ||||
| 						if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) < 500)) | ||||
| 						{ | ||||
| 							giveItems(singleMember, CRYSTAL_WITH_MAGOCAL_POWER, 1); | ||||
| 							playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET); | ||||
| 						} | ||||
| 					} | ||||
| 					if (qsPartyMember.isCond(1)) | ||||
| 					{ | ||||
| 						if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) < 500)) | ||||
| 						{ | ||||
| 							giveItems(singleMember, OREWITH_GIANTS_ENERGY, 1); | ||||
| 							playSound(singleMember, QuestSound.ITEMSOUND_QUEST_ITEMGET); | ||||
| 						} | ||||
| 					} | ||||
| 					if (qsPartyMember.isCond(1) && (getQuestItemsCount(singleMember, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(singleMember, CRYSTAL_WITH_MAGOCAL_POWER) >= 500)) | ||||
| 					{ | ||||
| 						qsPartyMember.setCond(7); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc); | ||||
| 			if (qs != null) | ||||
| 			{ | ||||
| 				if (qs.isCond(1)) | ||||
| 				{ | ||||
| 					if (CommonUtil.contains(HELL_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) < 500)) | ||||
| 					{ | ||||
| 						giveItems(killer, CRYSTAL_WITH_MAGOCAL_POWER, 1); | ||||
| 						playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); | ||||
| 						 | ||||
| 					} | ||||
| 				} | ||||
| 				if (qs.isCond(1)) | ||||
| 				{ | ||||
| 					if (CommonUtil.contains(CAVE_MONSTERS, npc.getId()) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) < 500)) | ||||
| 					{ | ||||
| 						giveItems(killer, OREWITH_GIANTS_ENERGY, 1); | ||||
| 						playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); | ||||
| 					} | ||||
| 				} | ||||
| 				if (qs.isCond(1) && (getQuestItemsCount(killer, OREWITH_GIANTS_ENERGY) >= 500) && (getQuestItemsCount(killer, CRYSTAL_WITH_MAGOCAL_POWER) >= 500)) | ||||
| 				{ | ||||
| 					qs.setCond(7); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
| } | ||||
| @@ -277,6 +277,8 @@ import quests.Q10346_DayOfDestinyKamaelsFate.Q10346_DayOfDestinyKamaelsFate; | ||||
| import quests.Q10351_OwnerOfHall.Q10351_OwnerOfHall; | ||||
| import quests.Q10353_CertificationOfValue.Q10353_CertificationOfValue; | ||||
| import quests.Q10354_ResurrectedOwnerOfHall.Q10354_ResurrectedOwnerOfHall; | ||||
| import quests.Q10355_BlacksmithsSoul1.Q10355_BlacksmithsSoul1; | ||||
| import quests.Q10356_BlacksmithsSoul2.Q10356_BlacksmithsSoul2; | ||||
| import quests.Q10358_DividedSakumPoslof.Q10358_DividedSakumPoslof; | ||||
| import quests.Q10359_TracesOfEvil.Q10359_TracesOfEvil; | ||||
| import quests.Q10360_CertificationOfFate.Q10360_CertificationOfFate; | ||||
| @@ -375,6 +377,7 @@ import quests.Q10530_KekropusLetterTheDragonsTransition.Q10530_KekropusLetterThe | ||||
| import quests.Q10531_OddHappeningsAtDragonValley.Q10531_OddHappeningsAtDragonValley; | ||||
| import quests.Q10532_UncoveringTheConspiracy.Q10532_UncoveringTheConspiracy; | ||||
| import quests.Q10534_HatchlingResearch.Q10534_HatchlingResearch; | ||||
| import quests.Q10535_BlacksmithsSoul3.Q10535_BlacksmithsSoul3; | ||||
| import quests.Q10537_KamaelDisarray.Q10537_KamaelDisarray; | ||||
| import quests.Q10538_GiantsEvolution.Q10538_GiantsEvolution; | ||||
| import quests.Q10539_EnergySupplyCutoffPlan.Q10539_EnergySupplyCutoffPlan; | ||||
| @@ -527,13 +530,9 @@ import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3; | ||||
| import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4; | ||||
| import quests.not_done.Q00989_AdventureGuildsSpecialRequestLv5; | ||||
| import quests.not_done.Q10298_WastelandQueen; | ||||
| import quests.not_done.Q10355_BlacksmithsSoulAwakeningWeapon1; | ||||
| import quests.not_done.Q10356_BlacksmithsSoulAwakeningWeapon2; | ||||
| import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension; | ||||
| import quests.not_done.Q10396_WitchOfSpores; | ||||
| import quests.not_done.Q10423_EmbryoStrongholdAmbush; | ||||
| import quests.not_done.Q10506_DianasRequest; | ||||
| import quests.not_done.Q10535_BlacksmithsSoulAwakeningWeapon3; | ||||
| import quests.not_done.Q10748_MysteriousSuggestion1; | ||||
| import quests.not_done.Q10749_MysteriousSuggestion2; | ||||
| import quests.not_done.Q10845_BloodyBattleRescueTheSmiths; | ||||
| @@ -847,8 +846,8 @@ public class QuestMasterHandler | ||||
| 		Q10351_OwnerOfHall.class, | ||||
| 		Q10353_CertificationOfValue.class, | ||||
| 		Q10354_ResurrectedOwnerOfHall.class, | ||||
| 		Q10355_BlacksmithsSoulAwakeningWeapon1.class, // TODO: Not done. | ||||
| 		Q10356_BlacksmithsSoulAwakeningWeapon2.class, // TODO: Not done. | ||||
| 		Q10355_BlacksmithsSoul1.class, | ||||
| 		Q10356_BlacksmithsSoul2.class, | ||||
| 		Q10358_DividedSakumPoslof.class, | ||||
| 		Q10359_TracesOfEvil.class, | ||||
| 		Q10360_CertificationOfFate.class, | ||||
| @@ -861,7 +860,6 @@ public class QuestMasterHandler | ||||
| 		Q10370_MenacingTimes.class, | ||||
| 		Q10371_GraspThyPower.class, | ||||
| 		Q10372_PurgatoryVolvere.class, | ||||
| 		Q10373_ExploringTheDimensionSealingTheDimension.class, // TODO: Not done. | ||||
| 		Q10374_ThatPlaceSuccubus.class, | ||||
| 		Q10375_SuccubusDisciples.class, | ||||
| 		Q10376_BloodyGoodTime.class, | ||||
| @@ -951,7 +949,7 @@ public class QuestMasterHandler | ||||
| 		Q10531_OddHappeningsAtDragonValley.class, | ||||
| 		Q10532_UncoveringTheConspiracy.class, | ||||
| 		Q10534_HatchlingResearch.class, | ||||
| 		Q10535_BlacksmithsSoulAwakeningWeapon3.class, // TODO: Not done. | ||||
| 		Q10535_BlacksmithsSoul3.class, | ||||
| 		Q10537_KamaelDisarray.class, | ||||
| 		Q10538_GiantsEvolution.class, | ||||
| 		Q10539_EnergySupplyCutoffPlan.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 Q10355_BlacksmithsSoulAwakeningWeapon1 extends Quest | ||||
| { | ||||
| 	private static final int START_NPC = 34095; | ||||
| 	 | ||||
| 	public Q10355_BlacksmithsSoulAwakeningWeapon1() | ||||
| 	{ | ||||
| 		super(10355); | ||||
| 		addStartNpc(START_NPC); | ||||
| 		addTalkId(START_NPC); | ||||
| 		addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| } | ||||
| @@ -1,36 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  *  | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  *  | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package quests.not_done; | ||||
|  | ||||
| import org.l2jmobius.Config; | ||||
| import org.l2jmobius.gameserver.model.quest.Quest; | ||||
|  | ||||
| /** | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class Q10356_BlacksmithsSoulAwakeningWeapon2 extends Quest | ||||
| { | ||||
| 	private static final int START_NPC = 31126; | ||||
| 	 | ||||
| 	public Q10356_BlacksmithsSoulAwakeningWeapon2() | ||||
| 	{ | ||||
| 		super(10356); | ||||
| 		addStartNpc(START_NPC); | ||||
| 		addTalkId(START_NPC); | ||||
| 		addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| } | ||||
| @@ -1,36 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  *  | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  *  | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package quests.not_done; | ||||
|  | ||||
| import org.l2jmobius.Config; | ||||
| import org.l2jmobius.gameserver.model.quest.Quest; | ||||
|  | ||||
| /** | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class Q10373_ExploringTheDimensionSealingTheDimension extends Quest | ||||
| { | ||||
| 	private static final int START_NPC = 34227; | ||||
| 	 | ||||
| 	public Q10373_ExploringTheDimensionSealingTheDimension() | ||||
| 	{ | ||||
| 		super(10373); | ||||
| 		addStartNpc(START_NPC); | ||||
| 		addTalkId(START_NPC); | ||||
| 		addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| } | ||||
| @@ -1,36 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  *  | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  *  | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package quests.not_done; | ||||
|  | ||||
| import org.l2jmobius.Config; | ||||
| import org.l2jmobius.gameserver.model.quest.Quest; | ||||
|  | ||||
| /** | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class Q10535_BlacksmithsSoulAwakeningWeapon3 extends Quest | ||||
| { | ||||
| 	private static final int START_NPC = 31126; | ||||
| 	 | ||||
| 	public Q10535_BlacksmithsSoulAwakeningWeapon3() | ||||
| 	{ | ||||
| 		super(10535); | ||||
| 		addStartNpc(START_NPC); | ||||
| 		addTalkId(START_NPC); | ||||
| 		addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment