Quest The Invaded Execution Grounds (10377).

Contributed by gigilo1968.
This commit is contained in:
MobiusDev 2016-12-14 14:43:24 +00:00
parent e1fb70d08d
commit b3144d7103
20 changed files with 305 additions and 1 deletions

View File

@ -75,7 +75,6 @@
10374 That Place Succubus 10374 That Place Succubus
10375 Succubus Disciples 10375 Succubus Disciples
10376 Bloody Good Time 10376 Bloody Good Time
10377 The Invaded Execution Grounds
10378 Weeding Work 10378 Weeding Work
10379 An Uninvited Guest 10379 An Uninvited Guest
10380 The Executioner's Execution 10380 The Executioner's Execution

View File

@ -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;
}
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -259,6 +259,7 @@ import quests.Q10365_SeekerEscort.Q10365_SeekerEscort;
import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate; import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate;
import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters; import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters;
import quests.Q10369_NoblesseSoulTesting.Q10369_NoblesseSoulTesting; import quests.Q10369_NoblesseSoulTesting.Q10369_NoblesseSoulTesting;
import quests.Q10377_TheInvadedExecutionGrounds.Q10377_TheInvadedExecutionGrounds;
import quests.Q10381_ToTheSeedOfHellfire.Q10381_ToTheSeedOfHellfire; import quests.Q10381_ToTheSeedOfHellfire.Q10381_ToTheSeedOfHellfire;
import quests.Q10382_DayOfLiberation.Q10382_DayOfLiberation; import quests.Q10382_DayOfLiberation.Q10382_DayOfLiberation;
import quests.Q10383_FergasonsOffer.Q10383_FergasonsOffer; import quests.Q10383_FergasonsOffer.Q10383_FergasonsOffer;
@ -656,6 +657,7 @@ public class QuestMasterHandler
Q10366_RuinsStatusUpdate.class, Q10366_RuinsStatusUpdate.class,
Q10368_RebellionOfMonsters.class, Q10368_RebellionOfMonsters.class,
Q10369_NoblesseSoulTesting.class, Q10369_NoblesseSoulTesting.class,
Q10377_TheInvadedExecutionGrounds.class,
Q10381_ToTheSeedOfHellfire.class, Q10381_ToTheSeedOfHellfire.class,
Q10382_DayOfLiberation.class, Q10382_DayOfLiberation.class,
Q10383_FergasonsOffer.class, Q10383_FergasonsOffer.class,