Quest The Invaded Execution Grounds (10377).
Contributed by gigilo1968.
This commit is contained in:
		| @@ -75,7 +75,6 @@ | ||||
| 10374	That Place Succubus | ||||
| 10375	Succubus Disciples | ||||
| 10376	Bloody Good Time | ||||
| 10377	The Invaded Execution Grounds | ||||
| 10378	Weeding Work | ||||
| 10379	An Uninvited Guest | ||||
| 10380	The Executioner's Execution | ||||
|   | ||||
| @@ -0,0 +1,234 @@ | ||||
| /* | ||||
|  * 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.Q10377_TheInvadedExecutionGrounds; | ||||
|  | ||||
| import com.l2jmobius.gameserver.enums.ChatType; | ||||
| import com.l2jmobius.gameserver.model.actor.L2Npc; | ||||
| import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; | ||||
| import com.l2jmobius.gameserver.model.quest.Quest; | ||||
| import com.l2jmobius.gameserver.model.quest.QuestState; | ||||
| import com.l2jmobius.gameserver.model.quest.State; | ||||
| import com.l2jmobius.gameserver.network.NpcStringId; | ||||
| import com.l2jmobius.gameserver.network.serverpackets.NpcSay; | ||||
|  | ||||
| /** | ||||
|  * The Invaded Execution Grounds (10377) | ||||
|  * @URL https://l2wiki.com/The_Invaded_Execution_Grounds | ||||
|  * @author Gigi | ||||
|  */ | ||||
| public final class Q10377_TheInvadedExecutionGrounds extends Quest | ||||
| { | ||||
| 	// NPCs | ||||
| 	private static final int SYLVAIN = 30070; | ||||
| 	private static final int HARLAN = 30074; | ||||
| 	private static final int RODERIK = 30631; | ||||
| 	private static final int ENDRIGO = 30632; | ||||
| 	private static final int TOMBSTONE_OF_THE_GUILLOTINE_OF_DEATH = 33717; | ||||
| 	private static final int TOMBSTONE_OF_HOUPON_THE_WARDEN_OVERSEER = 33718; | ||||
| 	private static final int TOMBSTONE_OF_CROOK_THE_MAD = 33719; | ||||
| 	// Items | ||||
| 	private static final int SOE_GUILLOTINE_FORTRESS = 35292; | ||||
| 	private static final int ADENA = 57; | ||||
| 	private static final int HARLANS_ORDERS = 34972; | ||||
| 	private static final int ENDRIGOS_REPORT = 34973; | ||||
| 	// Misc | ||||
| 	private static final int MIN_LEVEL = 95; | ||||
| 	 | ||||
| 	public Q10377_TheInvadedExecutionGrounds() | ||||
| 	{ | ||||
| 		super(10377); | ||||
| 		addStartNpc(SYLVAIN); | ||||
| 		addFirstTalkId(TOMBSTONE_OF_THE_GUILLOTINE_OF_DEATH, TOMBSTONE_OF_HOUPON_THE_WARDEN_OVERSEER, TOMBSTONE_OF_CROOK_THE_MAD); | ||||
| 		addTalkId(SYLVAIN, HARLAN, RODERIK, ENDRIGO); | ||||
| 		registerQuestItems(HARLANS_ORDERS, ENDRIGOS_REPORT); | ||||
| 		addCondMinLevel(MIN_LEVEL); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(player, false); | ||||
| 		if (qs == null) | ||||
| 		{ | ||||
| 			return null; | ||||
| 		} | ||||
| 		 | ||||
| 		String htmltext = null; | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "sylvain_q10377_02a.html": | ||||
| 			case "sylvain_q10377_04.htm": | ||||
| 			case "sylvain_q10377_05.htm": | ||||
| 			case "hitsran_q10377_02.html": | ||||
| 			case "warden_roderik_q10377_02.html": | ||||
| 			{ | ||||
| 				htmltext = event; | ||||
| 				break; | ||||
| 			} | ||||
| 			case "sylvain_q10377_06.htm": | ||||
| 			{ | ||||
| 				qs.startQuest(); | ||||
| 				htmltext = event; | ||||
| 				npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, SYLVAIN, NpcStringId.OH_GODS_THANK_YOU_FOR_SENDING_US_AN_ADVENTURER_LIKE_S1)); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "hitsran_q10377_03.html": | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(player, HARLANS_ORDERS, 1); | ||||
| 				htmltext = event; | ||||
| 				break; | ||||
| 			} | ||||
| 			case "warden_roderik_q10377_03.html": | ||||
| 			{ | ||||
| 				qs.setCond(0); | ||||
| 				qs.setCond(3, true); | ||||
| 				takeItems(player, HARLANS_ORDERS, -1); | ||||
| 				giveItems(player, ENDRIGOS_REPORT, 1); | ||||
| 				htmltext = event; | ||||
| 				break; | ||||
| 			} | ||||
| 			case "warden_endrigo_q10377_02.html": | ||||
| 			{ | ||||
| 				giveItems(player, ADENA, 2970560); | ||||
| 				giveItems(player, SOE_GUILLOTINE_FORTRESS, 2); | ||||
| 				addExpAndSp(player, 756106110, 181465); | ||||
| 				qs.exitQuest(false, true); | ||||
| 				htmltext = event; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onFirstTalk(L2Npc npc, L2PcInstance player) | ||||
| 	{ | ||||
| 		QuestState qs = getQuestState(player, false); | ||||
| 		if (qs != null) | ||||
| 		{ | ||||
| 			switch (npc.getId()) | ||||
| 			{ | ||||
| 				case TOMBSTONE_OF_HOUPON_THE_WARDEN_OVERSEER: | ||||
| 				{ | ||||
| 					if (qs.isCond(3)) | ||||
| 					{ | ||||
| 						qs.setCond(4, true); | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 				case TOMBSTONE_OF_CROOK_THE_MAD: | ||||
| 				{ | ||||
| 					if (qs.isCond(4)) | ||||
| 					{ | ||||
| 						qs.setCond(5, true); | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 				case TOMBSTONE_OF_THE_GUILLOTINE_OF_DEATH: | ||||
| 				{ | ||||
| 					if (qs.isCond(5)) | ||||
| 					{ | ||||
| 						qs.setCond(6, true); | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return null; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String onTalk(L2Npc npc, L2PcInstance player) | ||||
| 	{ | ||||
| 		String htmltext = getNoQuestMsg(player); | ||||
| 		final QuestState qs = getQuestState(player, true); | ||||
| 		if (qs == null) | ||||
| 		{ | ||||
| 			return htmltext; | ||||
| 		} | ||||
| 		switch (qs.getState()) | ||||
| 		{ | ||||
| 			case State.CREATED: | ||||
| 			{ | ||||
| 				if (npc.getId() == SYLVAIN) | ||||
| 				{ | ||||
| 					htmltext = "sylvain_q10377_01.htm"; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case State.STARTED: | ||||
| 			{ | ||||
| 				switch (npc.getId()) | ||||
| 				{ | ||||
| 					case SYLVAIN: | ||||
| 					{ | ||||
| 						if (qs.isCond(1)) | ||||
| 						{ | ||||
| 							htmltext = "sylvain_q10377_03.html"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case HARLAN: | ||||
| 					{ | ||||
| 						if (qs.isCond(1)) | ||||
| 						{ | ||||
| 							htmltext = "hitsran_q10377_01.html"; | ||||
| 						} | ||||
| 						else if (qs.isCond(2)) | ||||
| 						{ | ||||
| 							htmltext = "hitsran_q10377_04.html"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case RODERIK: | ||||
| 					{ | ||||
| 						if (qs.isCond(2)) | ||||
| 						{ | ||||
| 							htmltext = "warden_roderik_q10377_01.html"; | ||||
| 						} | ||||
| 						else if (qs.isCond(3)) | ||||
| 						{ | ||||
| 							htmltext = "warden_roderik_q10377_04.html"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 					case ENDRIGO: | ||||
| 					{ | ||||
| 						if ((qs.getCond() > 3) && (qs.getCond() < 6)) | ||||
| 						{ | ||||
| 							htmltext = "warden_endrigo_q10377_03.html"; | ||||
| 						} | ||||
| 						else if (qs.isCond(6)) | ||||
| 						{ | ||||
| 							takeItems(player, ENDRIGOS_REPORT, -1); | ||||
| 							htmltext = "warden_endrigo_q10377_01.html"; | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case State.COMPLETED: | ||||
| 			{ | ||||
| 				htmltext = getAlreadyCompletedMsg(player); | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return htmltext; | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Guard Harlan:<br> | ||||
| What brings you here, adventurer?<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds hitsran_q10377_02.html">"I'm here about the Execution Grounds."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>Guard Harlan:<br> | ||||
| Ah! You were the one sent by High Priest Sylvain.<br> | ||||
| You should know that "Execution Grounds" isn't used anymore - people call it the <font color="LEVEL">Guillotine Fortress</font> now. You see, Guillotine, the Warden of the Execution Grounds, gained Shilen's power and has turned the place into a veritable fortress.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds hitsran_q10377_03.html">"What can I do then?"</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Guard Harlan:<br> | ||||
| Here is the order.<br> | ||||
| We need you to deliver it to <font color="LEVEL">Guillotine Fortress Watchman Roderik</font>. But be careful. The Guillotine of Death is not the only terror you will face there!<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Guard Harlan:<br> | ||||
| You already have the order, right? Please deliver it to Guillotine Fortress Watchman Roderik. <br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,6 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| I have have news.<br> | ||||
| It is important to Dion Territory, but does an outsider care to listen?<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds sylvain_q10377_04.htm">"I do. What about Dion Territory?"</button> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds sylvain_q10377_02a.html">"It's none of my business."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| I see. I... understand. If you ever change your mind, we are desperate for help.<br> | ||||
| Einhasad's blessing be with you...<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| Was I not clear? Speak to <font color="LEVEL">Guard Harlan</font> at the town entrance for details.<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| It's... embarrassing. Do not think less of us for it.<br> | ||||
| Shilen's catastrophe... You must certainly remember the <font color="LEVEL">Rain of Blood</font> and <font color="LEVEL">Fog of plague</font>? Of course, Dion suffered like the rest of Aden. But the disaster contaminated our land with wicked things... And the Duke <font color="LEVEL">Byron Ashton</font> has made a decision.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds sylvain_q10377_05.htm">"...yes?"</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| Well, he decided to dump everything in the <font color="LEVEL">Execution Grounds.</font> But the whole cause of the mess was <font color="LEVEL">Shilen's Blood</font>, and now that area is... horrible. <br> | ||||
| The spirits there must have gained malevolent power from Shilen's Blood. I'm supposed to go assess the situation, but it's too dangerous.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds sylvain_q10377_06.htm">"I'll go. I've probably seen worse."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>High Priest Sylvain:<br> | ||||
| Oh, what a relief! But you will need to prepare yourself well..<br> | ||||
| <font color="LEVEL">Guard Harlan</font> can give you more details and tell you the way. May the Einhasad's blessing be with you....<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>Guillotine Fortress Watchman Endrigo:<br> | ||||
| You've brought the Roderik's report? Did you finish scouting Guillotine Fortress?<br> | ||||
| Tell me what you saw.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds warden_endrigo_q10377_02.html">"There was a graveyard..."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,3 @@ | ||||
| <html><body>Guillotine Fortress Watchman Endrigo:<br> | ||||
| I can deliver the message to the town. I would appreciate it if you did something else for me.<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Guillotine Fortress Watchman Roderik:<br> | ||||
| What brings you to the land of the dead?<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds warden_roderik_q10377_02.html">"Well, it's a long story..."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>Guillotine Fortress Watchman Roderik:<br> | ||||
| You're On orders from town? Hmm... I see, I see. Well, getting this far proves you're no fool.<br> | ||||
| I will trust you for a mission.<br> | ||||
| <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10377_TheInvadedExecutionGrounds warden_roderik_q10377_03.html">"Let's hear it."</button> | ||||
| </body></html> | ||||
| @@ -0,0 +1,5 @@ | ||||
| <html><body>Guillotine Fortress Watchman Roderik:<br> | ||||
| After <font color="LEVEL">Guillotine of Death</font> turned this place into his fortress, everything changed. Even the land changed, and we can't spare scouts. It's impossible to plan without knowing the land. Could you scout for us?<br> | ||||
| I've heard that the <font color="LEVEL">Tombstones</font> are particularly haunted, so check the <font color="LEVEL">Tombstone of Houpon the Warden Overseer, Tombstone of Crook the Mad, and Tombstone of the Guillotine of Death</font>.<br> | ||||
| When you have finished, report to <font color="LEVEL">Guillotine Fortress Watchman Endrigo</font> over there, and give him this report as well.<br> | ||||
| </body></html> | ||||
| @@ -0,0 +1,4 @@ | ||||
| <html><body>Guillotine Fortress Watchman Roderik:<br> | ||||
| Scout around the <font color="LEVEL">Tombstone</font>, especially the <font color="LEVEL">Tombstone of Houpon the Warden Overseer, Tombstone of Crook the Mad, and Tombstone of the Guillotine of Death</font>.<br> | ||||
| When you have finished, report to <font color="LEVEL">Guillotine Fortress Watchman Endrigo</font> over there, and give him this report as well.<br> | ||||
| </body></html> | ||||
| @@ -259,6 +259,7 @@ import quests.Q10365_SeekerEscort.Q10365_SeekerEscort; | ||||
| import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate; | ||||
| import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters; | ||||
| import quests.Q10369_NoblesseSoulTesting.Q10369_NoblesseSoulTesting; | ||||
| import quests.Q10377_TheInvadedExecutionGrounds.Q10377_TheInvadedExecutionGrounds; | ||||
| import quests.Q10381_ToTheSeedOfHellfire.Q10381_ToTheSeedOfHellfire; | ||||
| import quests.Q10382_DayOfLiberation.Q10382_DayOfLiberation; | ||||
| import quests.Q10383_FergasonsOffer.Q10383_FergasonsOffer; | ||||
| @@ -656,6 +657,7 @@ public class QuestMasterHandler | ||||
| 		Q10366_RuinsStatusUpdate.class, | ||||
| 		Q10368_RebellionOfMonsters.class, | ||||
| 		Q10369_NoblesseSoulTesting.class, | ||||
| 		Q10377_TheInvadedExecutionGrounds.class, | ||||
| 		Q10381_ToTheSeedOfHellfire.class, | ||||
| 		Q10382_DayOfLiberation.class, | ||||
| 		Q10383_FergasonsOffer.class, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDev
					MobiusDev