Untested: Some Grand Crusade quests to Helios.
This commit is contained in:
@@ -76,14 +76,6 @@
|
|||||||
10456 Operation: Rescue
|
10456 Operation: Rescue
|
||||||
10457 Kefensis' Illusion
|
10457 Kefensis' Illusion
|
||||||
10506 Diana's Request
|
10506 Diana's Request
|
||||||
10521 Queen Navari's Letter: Varka Silenos Barracks Achieve Level 76
|
|
||||||
10522 The Dark Secret of Varka Silenos Reveal the dark secret
|
|
||||||
10523 The Assassination of the Varka Silenos Commander Defeat Varka's Commander Mos
|
|
||||||
10524 The Assassination of the Varka Silenos Commander Chief Defeat Varka's Chief Horus
|
|
||||||
10525 Queen Navari's Letter, Ketra Orc Outpost Achieve Level 76
|
|
||||||
10526 The Dark Secret of the Ketra Orcs Reveal the dark secret
|
|
||||||
10527 The Assassination of the Ketra Orc Commander Defeat Ketra's Commander Tayr
|
|
||||||
10528 The Assassination of the Ketra Orc Chief Defeat Ketra's Chief Brakki
|
|
||||||
10530 Kekropus' Letter, The Dragon's Transition Achieve Level 81
|
10530 Kekropus' Letter, The Dragon's Transition Achieve Level 81
|
||||||
10531 Odd Happenings at Dragon Valley Strange Things Afoot in the Valley
|
10531 Odd Happenings at Dragon Valley Strange Things Afoot in the Valley
|
||||||
10532 Uncovering the Conspiracy Eliminate the Undead and Dragons
|
10532 Uncovering the Conspiracy Eliminate the Undead and Dragons
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
Haha. Queen Navari has already contacted me, and I have waiting for you. Have you heard what is happening?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10521_QueenNavarisLetterVarkaSilenosBarracks 31279-02.htm">"Not Exactly."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
Hahaha. That's what I thought<br>
|
||||||
|
The Ertheia are quite impatient, and tend to rush over without asking too many questions when they're asked for help.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10521_QueenNavarisLetterVarkaSilenosBarracks 31279-03.htm">"How can I help you?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
I thought that the Ertheia had nothing to do with this, but the Varka Silenos seem to be up to no good nowadays we have our eyes on them.<br>
|
||||||
|
We have been suspecting collision between the Embryo and the Varka Silenos for a long time now. Since the Ertheia also have something to do with the Embryo, you have been called on to provide help.<br>
|
||||||
|
For details, find the <font color="LEVEL">Giant's Minion Hansen</font> in the <font color="LEVEL">Varka Silenos Barracks</font>.
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
In the Town of Goddard has told you to go to the Giant's Minion Hansen in the Varka Silenos Barracks.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
You are...Ertheya.What brings you here?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10521_QueenNavarisLetterVarkaSilenosBarracks 33853-02.htm">"I have come because of the Delegation's Pledge."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,6 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I was worried that I hadn't received a reply to my request for backup. I was starting to think that it was difficult for the Ertheia to make it all the way out here.<br>
|
||||||
|
I wonder if you have heard about the ancient monster <font color="LEVEL">Sakum</font>. We have gained intelligence that the ancient monster, who should have vanished years ago, was actually cloned by the <font color="LEVEL">Embryo</font> and is currently in the <font color="LEVEL">Varka Silenos Barracks</font>.<br>
|
||||||
|
It appears that the Embryo have colluded with the Varka Silenos. That means that we need to stop it right away. There is a lot work for us to do. Please come to me when you are done preparing.<br>
|
||||||
|
(You can obtain the next Queen Navari's Letter at Lv. 81.)<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10521_QueenNavarisLetterVarkaSilenosBarracks;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.model.Location;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.network.NpcStringId;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||||
|
|
||||||
|
import quests.LetterQuest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queen Navari's Letter: Varka Silenos Barracks (10521)
|
||||||
|
* @URL https://l2wiki.com/Queen_Navari%27s_Letter:_Varka_Silenos_Barracks
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-14 - [22:13:27]
|
||||||
|
*/
|
||||||
|
public class Q10521_QueenNavarisLetterVarkaSilenosBarracks extends LetterQuest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int GREGORY = 31279;
|
||||||
|
private static final int HANSEN = 33853;
|
||||||
|
// Items
|
||||||
|
private static final int VARKA_SILENOS_BARRAKS = 46730;
|
||||||
|
private static final int SOE_TOWN_OF_GODDARD = 46731;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
// Teleport
|
||||||
|
private static final Location TELEPORT_LOC = new Location(147711, -52920, -2728);
|
||||||
|
|
||||||
|
public Q10521_QueenNavarisLetterVarkaSilenosBarracks()
|
||||||
|
{
|
||||||
|
super(10521);
|
||||||
|
addTalkId(GREGORY, HANSEN);
|
||||||
|
setIsErtheiaQuest(true);
|
||||||
|
setLevel(MIN_LEVEL, MAX_LEVEL);
|
||||||
|
setStartLocation(SOE_TOWN_OF_GODDARD, TELEPORT_LOC);
|
||||||
|
setStartQuestSound("Npcdialog1.serenia_quest_13");
|
||||||
|
registerQuestItems(SOE_TOWN_OF_GODDARD, VARKA_SILENOS_BARRAKS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "31279-02.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "31279-03.htm":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
qs.setCond(3, true);
|
||||||
|
giveItems(player, VARKA_SILENOS_BARRAKS, 1);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-02.htm":
|
||||||
|
{
|
||||||
|
if (qs.isCond(3))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 1277640, 306);
|
||||||
|
giveStoryQuestReward(player, 10);
|
||||||
|
showOnScreenMsg(player, NpcStringId.YOU_HAVE_FINISHED_ALL_OF_QUEEN_NAVARI_S_LETTERS_GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_LETTERS_FROM_A_MINSTREL_AT_LV_85, ExShowScreenMessage.TOP_CENTER, 8000);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
if (qs.isStarted())
|
||||||
|
{
|
||||||
|
if (npc.getId() == GREGORY)
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(2)) ? "31279-01.htm" : "31279-04.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(3))
|
||||||
|
{
|
||||||
|
htmltext = "33853-01.html";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canShowTutorialMark(L2PcInstance player)
|
||||||
|
{
|
||||||
|
return player.getClassId() == ClassId.RIPPER;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
<html><body>The Queen's Letter:<br>
|
||||||
|
I got an emergency request from the Town of Goddard. Near the Town of Goddard at Varka Sillenos Barracks.<br>
|
||||||
|
It's different from the one we came in, but it's worth looking into. Go see <font color="LEVEL">High Priest Gregory</font>.<br>
|
||||||
|
(A <font color="LEVEL">Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h %teleport%">"Here I go!"</button>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h tutorial_close">Close</button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>
|
||||||
|
Your character's level exceeds the level limit for this quest.
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I am sorry, but I can't trust you.<br>
|
||||||
|
(This quest is for Ertheia with Lv. 76 or above.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
We lost touch with Spirit Realm a long time ago, and there are many of us who do not know about the Ertheia. However, I am a Kamael who knows of the stories of old times. I have not forgotten the reputation and powerful impression of the Ertheia.<br>
|
||||||
|
The Ertheia will be able to resolve the problems that with the Ertheia and the ancient monster Sakum.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10522_TheDarkSecretOfVarkaSilenos 33853-02.htm">"What is the problem?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I trust that you already know about the Embryo. We have received information that the Embryo, who are behind all of these problems, have joined hands with the <font color="LEVEL">Varka Silenos</font>.<br>
|
||||||
|
We have also discovered that they have handed over <font color="LEVEL">Kampf</font> as a token of cooperation. For now, in order to verify this intelligence, we will need to hide among the <font color="LEVEL">Varka Silenos</font> and help the dark <font color="LEVEL">Embryo</font> sympathizers who are helping them.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10522_TheDarkSecretOfVarkaSilenos 33853-03.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
If I am right, the helpers <font color="LEVEL">Embryo</font> Sends will appear when <font color="LEVEL">Varka Silenos</font> soldiers are in danger.<br>
|
||||||
|
When the Embryo sympathizers appear, defeat them.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10522_TheDarkSecretOfVarkaSilenos 33853-04.htm">"I will."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Slay the <font color="LEVEL">Varka Silenoses</font> here in the <font color="LEVEL">Varka Silenos Barracks</font> and lure out the Embryo sympathizers.<br>
|
||||||
|
The Embryo sympathizers, I expect, will be <font color="LEVEL">Varka Backup Shooters</font> or <font color="LEVEL">Varka Backup Wizards</font> When the appear, take out <font color="LEVEL">100</font> of each, and then return to me.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Who is under cover in the Varka Silenos Barracks has asked you to find and defeat the Embryo Support Troops hiding in the Varka Silenos Barracks. He says that once the monsters at the Varka Silenos Barracks have been defeated, the Varka Backup Shooters and Varka Backup Wizards will appear.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Good work. They must be very confused. Now that the situation has fallen into chaos, they will bring out <font color="LEVEL">Kampf</font>. They've been saving him as their last defense against us.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10522_TheDarkSecretOfVarkaSilenos 33853-07.html">"What should we do now?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
For now, let's wait a bit and watch their movements. We will soon be able to figure out <font color="LEVEL">Kampf</font>'s whereabouts. Until then, get some rest.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,228 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10522_TheDarkSecretOfVarkaSilenos;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.ChatType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dark Secret of Varka Silenos (10522)
|
||||||
|
* @URL https://l2wiki.com/The_Dark_Secret_of_Varka_Silenos
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-17 - [19:27:54]
|
||||||
|
*/
|
||||||
|
public class Q10522_TheDarkSecretOfVarkaSilenos extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int HANSEN = 33853;
|
||||||
|
// Monsters
|
||||||
|
private static final int VARKA_SILENOS_RECRUIT = 21350;
|
||||||
|
private static final int VARKA_SILENOS_FOOTMAN = 21351;
|
||||||
|
private static final int VARKA_SILENOS_SCOUT = 21353;
|
||||||
|
private static final int VARKA_SILENOS_HUNTER = 21354;
|
||||||
|
private static final int VARKA_SILENOS_COMANDER = 21369;
|
||||||
|
private static final int VARKAS_ELITE_ESCORT = 21370;
|
||||||
|
private static final int VARKA_SILENOS_WARRIOR = 21358;
|
||||||
|
|
||||||
|
private static final int VARKA_SILENOS_SHAMAN = 21357;
|
||||||
|
private static final int VARKA_SILENOS_PRIEST = 21355;
|
||||||
|
|
||||||
|
private static final int VARKA_BACKUP_SHOOTER = 27514;
|
||||||
|
private static final int VARKA_BACKUP_WIZARD = 27515;
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10522_TheDarkSecretOfVarkaSilenos()
|
||||||
|
{
|
||||||
|
super(10522);
|
||||||
|
addStartNpc(HANSEN);
|
||||||
|
addTalkId(HANSEN);
|
||||||
|
addKillId(VARKA_BACKUP_SHOOTER, VARKA_BACKUP_WIZARD, VARKA_SILENOS_RECRUIT, VARKA_SILENOS_FOOTMAN, VARKA_SILENOS_SCOUT, VARKA_SILENOS_HUNTER, VARKA_SILENOS_SHAMAN, VARKA_SILENOS_COMANDER, VARKAS_ELITE_ESCORT, VARKA_SILENOS_WARRIOR, VARKA_SILENOS_PRIEST);
|
||||||
|
addCondRace(Race.ERTHEIA, "33853-00a.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.FIGHTER_GROUP), "33853-00a.html");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33853-00.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33853-02.htm":
|
||||||
|
case "33853-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 492760460, 5519);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33853-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33853-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33853-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
int killedShooter = qs.getInt("killed_" + VARKA_BACKUP_SHOOTER);
|
||||||
|
int killedWizard = qs.getInt("killed_" + VARKA_BACKUP_WIZARD);
|
||||||
|
|
||||||
|
switch (npc.getId())
|
||||||
|
{
|
||||||
|
case VARKA_SILENOS_RECRUIT:
|
||||||
|
case VARKA_SILENOS_FOOTMAN:
|
||||||
|
case VARKA_SILENOS_SCOUT:
|
||||||
|
case VARKA_SILENOS_HUNTER:
|
||||||
|
case VARKA_SILENOS_COMANDER:
|
||||||
|
case VARKAS_ELITE_ESCORT:
|
||||||
|
case VARKA_SILENOS_WARRIOR:
|
||||||
|
{
|
||||||
|
final L2Npc mob = addSpawn(VARKA_BACKUP_SHOOTER, npc, false, 60000);
|
||||||
|
mob.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case VARKA_SILENOS_SHAMAN:
|
||||||
|
case VARKA_SILENOS_PRIEST:
|
||||||
|
{
|
||||||
|
final L2Npc mob = addSpawn(VARKA_BACKUP_WIZARD, npc, false, 60000);
|
||||||
|
mob.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case VARKA_BACKUP_SHOOTER:
|
||||||
|
{
|
||||||
|
if (killedShooter < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + VARKA_BACKUP_SHOOTER, ++killedShooter);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VARKA_BACKUP_WIZARD:
|
||||||
|
{
|
||||||
|
if (killedWizard < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + VARKA_BACKUP_WIZARD, ++killedWizard);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((killedShooter >= 100) && (killedWizard >= 100))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>(2);
|
||||||
|
holder.add(new NpcLogListHolder(VARKA_BACKUP_SHOOTER, false, qs.getInt("killed_" + VARKA_BACKUP_SHOOTER)));
|
||||||
|
holder.add(new NpcLogListHolder(VARKA_BACKUP_WIZARD, false, qs.getInt("killed_" + VARKA_BACKUP_WIZARD)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I don't think it's time.<br>
|
||||||
|
(Only Ertheia characters with Lv. 76 or above who have completed the quest "The Dark Secret of the Varka Silenos".)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I don't think it's time.<br>
|
||||||
|
(This quest is for Ertheia Warriors with Lv. 76 or above.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
How are they keeping this so secret?.<br>
|
||||||
|
<font color="LEVEL">Kampf</font> is nowhere to be found. We need to flush them out.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10523_TheAssassinationOfTheVarkaSilenosCommander 33853-02.htm">"What should I do?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
We intend to <font color="LEVEL">take out their commander</font>.<br>
|
||||||
|
We have to assassinate their commander. When someone in such a high position is gone, they will have to bring out <font color="LEVEL">Kampf</font>. When that happens, kill <font color="LEVEL">Kampf</font> as well. Of course.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10523_TheAssassinationOfTheVarkaSilenosCommander 33853-03.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Of course, we don't expect it to be an easy task, to take out the <font color="LEVEL">Varka Silenos Commander</font>.<br>
|
||||||
|
Also, <font color="LEVEL">Kampf</font> still might not show up, if they're being careful. But it's the best plan we've got!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10523_TheAssassinationOfTheVarkaSilenosCommander 33853-04.htm">"Alright."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Find <font color="LEVEL">Varka's Silenos Commander Mos</font> in the <font color="LEVEL">Varka Silenos Barracks</font>, and defeat him.<br>
|
||||||
|
Even if Kampf does not show himself, do not be disappointed. Please return to me and report on the situation.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
You haven't finished the mission yet. Let me explain again.<br>
|
||||||
|
Find <font color="LEVEL">Varka's Silenos Commander Mos</font> in the <font color="LEVEL">Varka Silenos Barracks</font>, and defeat him.<br>
|
||||||
|
Even if Kampf does not show himself, do not be disappointed. Please return to me and report on the situation.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Hmm.. You have taken out <font color="LEVEL">Varka's Silenos Commander Mos</font>, but <font color="LEVEL">Kampf</font> did not show himself. Anyways, it's a good thing that you have taken out <font color="LEVEL">Varka's Silenos Commander Mos</font>.<br>
|
||||||
|
With in now being out in the open that the <font color="LEVEL">Embryo</font> and the <font color="LEVEL">Varka Silenos</font> has conspired together, leaving one such as him alive cannot be good for us.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10523_TheAssassinationOfTheVarkaSilenosCommander 33853-07.html">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Anyways you've worked hard for the mission. Here you should take some rest. I'll try to come up with a way to find <font color="LEVEL">Kampf</font>.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,144 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10523_TheAssassinationOfTheVarkaSilenosCommander;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
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 quests.Q10522_TheDarkSecretOfVarkaSilenos.Q10522_TheDarkSecretOfVarkaSilenos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Assassination of the Varka Silenos Commander Mos (10523)
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-18 - [12:27:08]
|
||||||
|
*/
|
||||||
|
public class Q10523_TheAssassinationOfTheVarkaSilenosCommander extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int HANSEN = 33853;
|
||||||
|
// Monsters
|
||||||
|
private static final int VARKAS_COMMANDER_MOS = 27502;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10523_TheAssassinationOfTheVarkaSilenosCommander()
|
||||||
|
{
|
||||||
|
super(10523);
|
||||||
|
addStartNpc(HANSEN);
|
||||||
|
addTalkId(HANSEN);
|
||||||
|
addKillId(VARKAS_COMMANDER_MOS);
|
||||||
|
addCondRace(Race.ERTHEIA, "33853-00.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.FIGHTER_GROUP), "33853-00a.htm");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33853-00.html");
|
||||||
|
addCondCompletedQuest(Q10522_TheDarkSecretOfVarkaSilenos.class.getSimpleName(), "33853-00.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33853-02.htm":
|
||||||
|
case "33853-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 327446943, 1839);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33853-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33853-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33853-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I don't think it's time.<br>
|
||||||
|
(Only Ertheia characters with Lv. 76 or above who have completed the quest "The Assassination of the Varka Silenos Commander".)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
I don't think it's time.<br>
|
||||||
|
(This quest may only be undertaken by an Ertheia Warrior class character with level 76 or above who has completed the quest "Assassination of the Varka Silenos Commander".)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
The situation is not favorable to us. Since you assassinated their commander, security's been tight around here. But we won't give up!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief 33853-02.htm">"What should I do?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
It's a dangerous, but there is a way, nonetheless.<br>
|
||||||
|
We have to <font color="LEVEL">assassinate their chief</font>. If they lose their chief on top of their commander, they will fail into chaos. So, I bet <font color="LEVEL">Kampf</font> will show up this time.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief 33853-03.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Of course, talking out the <font color="LEVEL">Varka Silenos chief</font> won't be an easy thing do to. If the chief is taken out, Kampf is sure to reveal himself,
|
||||||
|
making this whole thing even more dangerous. But I have a good feeling about you. Will you take the mission?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief 33853-04.htm">"I'll take care of everything."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Be careful<br>
|
||||||
|
Find <font color="LEVEL">Varka's Silenos Chief Horus</font> in the <font color="LEVEL">Varka Silenos Barracks</font>, and defeat him. It won't be easy, but you'll be able to do it. When you're done, return to me, and report the situation.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
You haven't finished the mission yet.<br>
|
||||||
|
Find <font color="LEVEL">Varka's Silenos Chief Horus</font> in the <font color="LEVEL">Varka Silenos Barracks</font>, and defeat him. It won't be easy, but you'll be able to do it. When you're done, return to me, and report the situation.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Hahahaha! I knew it! When you killed <font color="LEVEL">Varka's Chief Horus</font>, of course <font color="LEVEL">Kampf</font> showed up. See, what did I tell you? Well done! I will report to my superiors right away.<br>
|
||||||
|
Well, I think that's it for both of us now. Time for some rest.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief 33853-07.html">"No problem."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Hansen:<br>
|
||||||
|
Thank you for your hard work. Our greatest headache <font color="LEVEL">Kampf</font> is gone, and we have even taken out the <font color="LEVEL">Varka Silenos Chief</font> who had colluded with the <font color="LEVEL">Embryo</font>!<br>
|
||||||
|
I'll be sure to let <font color="LEVEL">Kekropus</font> know of your role in these dealings. You will always be honored among us, the Giant's Minions. Thank you.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.ChatType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
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 quests.Q10523_TheAssassinationOfTheVarkaSilenosCommander.Q10523_TheAssassinationOfTheVarkaSilenosCommander;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Assassination of the Varka Silenos Commander Chief (10524)
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-18 - [14:37:41]
|
||||||
|
*/
|
||||||
|
public class Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int HANSEN = 33853;
|
||||||
|
// Monsters
|
||||||
|
private static final int VARKAS_CHIEF_HORUS = 27503;
|
||||||
|
private static final int KAMPF = 27516;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief()
|
||||||
|
{
|
||||||
|
super(10524);
|
||||||
|
addStartNpc(HANSEN);
|
||||||
|
addTalkId(HANSEN);
|
||||||
|
addKillId(VARKAS_CHIEF_HORUS);
|
||||||
|
addCondRace(Race.ERTHEIA, "33853-00.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.FIGHTER_GROUP), "33853-00a.htm");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33853-00.html");
|
||||||
|
addCondCompletedQuest(Q10523_TheAssassinationOfTheVarkaSilenosCommander.class.getSimpleName(), "33853-00.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33853-02.htm":
|
||||||
|
case "33853-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33853-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 351479151, 1839);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33853-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33853-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33853-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.COME_KAMPF_PROTECT_ME);
|
||||||
|
final L2Npc mob = addSpawn(KAMPF, npc, false, 120000);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
Haha. Queen Navari has already contacted me, and I have waiting for you. Have you heard what is happening?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10525_QueenNavarisLetterKetraOrcOutpost 31279-02.htm">"Not Exactly."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
Hahaha. That's what I thought<br>
|
||||||
|
The Ertheia are quite impatient, and tend to rush over without asking too many questions when they're asked for help.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10525_QueenNavarisLetterKetraOrcOutpost 31279-03.htm">"How can I help you?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
I thought that the Ertheia had nothing to do with this, but the Ketra Orcs seem to be up to no good nowadays we have our eyes on them.<br>
|
||||||
|
We have been suspecting collision between the Embryo and the Ketra Orcs for a long time now. Since the Ertheia also have something to do with the Embryo, you have been called on to provide help.<br>
|
||||||
|
For details, find the <font color="LEVEL">Giant's Minion Lugonnes</font> in the <font color="LEVEL">Ketra Orc Outpost</font>.
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>High Priest Gregory:<br>
|
||||||
|
In the Town of Goddard has told you to go to the Giant's Minion Lugonnes in the Ketra Orc Outpost.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
You are... Ertheia. What brings you here?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10525_QueenNavarisLetterKetraOrcOutpost 33853-02.htm">"I have come because of the Delegation's Pledge."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,6 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I was worried that I hadn't received a reply to my request for backup. I was starting to think that it was difficult for the Ertheia to make it all the way out here.<br>
|
||||||
|
I wonder if you have heard about the ancient monster <font color="LEVEL">Sakum</font>. We have gained intelligence that the ancient monster, who should have vanished years ago, was actually cloned by the <font color="LEVEL">Embryo</font> and is currently in the <font color="LEVEL">Ketra Orc Outpost</font>.<br>
|
||||||
|
It appears that the Embryo have colluded with the Ketra Orcs. That means that we need to stop it right away. There is a lot work for us to do. Please come to me when you are done preparing.<br>
|
||||||
|
(You can obtain the next Queen Navari's Letter at Lv. 81.)<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10525_QueenNavarisLetterKetraOrcOutpost;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.model.Location;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.network.NpcStringId;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||||
|
|
||||||
|
import quests.LetterQuest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queen Navari's Letter, Ketra Orc Outpost (10521)
|
||||||
|
* @URL https://l2wiki.com/Queen_Navari%27s_Letter,_Ketra_Orc_Outpost
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class Q10525_QueenNavarisLetterKetraOrcOutpost extends LetterQuest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int GREGORY = 31279;
|
||||||
|
private static final int LUGONNES = 33852;
|
||||||
|
// Items
|
||||||
|
private static final int KETRA_ORC_OUTPOST = 46732;
|
||||||
|
private static final int SOE_TOWN_OF_GODDARD = 46731;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
// Teleport
|
||||||
|
private static final Location TELEPORT_LOC = new Location(147711, -52920, -2728);
|
||||||
|
|
||||||
|
public Q10525_QueenNavarisLetterKetraOrcOutpost()
|
||||||
|
{
|
||||||
|
super(10521);
|
||||||
|
addTalkId(GREGORY, LUGONNES);
|
||||||
|
setIsErtheiaQuest(true);
|
||||||
|
setLevel(MIN_LEVEL, MAX_LEVEL);
|
||||||
|
setStartLocation(SOE_TOWN_OF_GODDARD, TELEPORT_LOC);
|
||||||
|
setStartQuestSound("Npcdialog1.serenia_quest_13");
|
||||||
|
registerQuestItems(SOE_TOWN_OF_GODDARD, KETRA_ORC_OUTPOST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "31279-02.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "31279-03.htm":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
qs.setCond(3, true);
|
||||||
|
giveItems(player, KETRA_ORC_OUTPOST, 1);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-02.htm":
|
||||||
|
{
|
||||||
|
if (qs.isCond(3))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 1277640, 306);
|
||||||
|
giveStoryQuestReward(player, 10);
|
||||||
|
showOnScreenMsg(player, NpcStringId.YOU_HAVE_FINISHED_ALL_OF_QUEEN_NAVARI_S_LETTERS_GROW_STRONGER_HERE_UNTIL_YOU_RECEIVE_LETTERS_FROM_A_MINSTREL_AT_LV_85, ExShowScreenMessage.TOP_CENTER, 8000);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
if (qs.isStarted())
|
||||||
|
{
|
||||||
|
if (npc.getId() == GREGORY)
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(2)) ? "31279-01.htm" : "31279-04.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(3))
|
||||||
|
{
|
||||||
|
htmltext = "33852-01.html";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canShowTutorialMark(L2PcInstance player)
|
||||||
|
{
|
||||||
|
return player.getClassId() == ClassId.STRATOMANCER;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
<html><body>The Queen's Letter:<br>
|
||||||
|
I got an emergency request from the Town of Goddard. Near the Town of Goddard at Ketra Orc Outpost.<br>
|
||||||
|
It's different from the one we came in, but it's worth looking into. Go see <font color="LEVEL">High Priest Gregory</font>.<br>
|
||||||
|
(A <font color="LEVEL">Scroll of Escape</font> is enclosed. If you want to go now, use it to travel immediately.)<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h %teleport%">"Here I go!"</button>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h tutorial_close">Close</button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(This quest may only be undertaken by a Ertheia Wizard class character with Lv. 76 or above.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(The quest is only for Ertheia characters.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
The Kamael and Ertheia have not traditionally been close, but I know very well of the skills of the Ertheia.<br>
|
||||||
|
The Ertheia are sure to bring down <font color="LEVEL">Belos</font>, the clone of Sakum created by the <font color="LEVEL">Embryo</font>. However, before Belos is brought down, something must e done.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10526_TheDarkSecretOfTheKetraOrcs 33852-02.htm">"What do you want me to do?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
First, find the <font color="LEVEL">Embryo</font>, sympathizers among the <font color="LEVEL">Ketra Orcs</font>, and teach them a lesson.<br>
|
||||||
|
This will make the work to follow much easier.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10526_TheDarkSecretOfTheKetraOrcs 33852-03.htm">"How can I find these sympathizers?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
If I am right, the <font color="LEVEL">Embryo Sympathizers</font> will appear when the <font color="LEVEL">Ketra Orcs</font> soldiers are in danger. Wait for this to happen taking out the Embryo Sympathizers.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10526_TheDarkSecretOfTheKetraOrcs 33852-04.htm">"Yes, I understand."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I will explain again.<br>
|
||||||
|
If you kill some <font color="LEVEL">Ketra Orcs</font> here in the <font color="LEVEL">Ketra Orc Outpost</font>, <font color="LEVEL">Ketra Backup Shooters</font> and <font color="LEVEL">Ketra Backup Wizards</font> will appear.<br>
|
||||||
|
Kill <font color="LEVEL">100</font> of each and come back to me.
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
You're not yet done with the mission. I will explain again.<br>
|
||||||
|
If you kill some <font color="LEVEL">Ketra Orcs</font> here in the <font color="LEVEL">Ketra Orc Outpost</font>, <font color="LEVEL">Ketra Backup Shooters</font> and <font color="LEVEL">Ketra Backup Wizards</font> will appear.<br>
|
||||||
|
Kill <font color="LEVEL">100</font> of each and come back to me.
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
You've certainly proved your worth! That was a devastating blow you struck. Now that the situation is desperate, they will bring out <font color="LEVEL">Belos</font>. They've been saving it as a last resort.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10526_TheDarkSecretOfTheKetraOrcs 33852-07.html">"What are you going to do now?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
For now, we should wait, watching their activity. We will soon be able to locate <font color="LEVEL">Belos</font> whereabouts. Get some rest.<br>
|
||||||
|
</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.Q10526_TheDarkSecretOfTheKetraOrcs;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.ChatType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dark Secret of the Ketra Orcs (10526)
|
||||||
|
* @URL https://l2wiki.com/The_Dark_Secret_of_the_Ketra_Orcs
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-20 - [20:03:04]
|
||||||
|
*/
|
||||||
|
public class Q10526_TheDarkSecretOfTheKetraOrcs extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LUGONNES = 33852;
|
||||||
|
// Monsters
|
||||||
|
private static final int KETRA_ORC_ELITE_SOLDIER = 21335;
|
||||||
|
private static final int KETRA_ORC_CENTURION = 21336;
|
||||||
|
private static final int KETRA_ORC_LIEUTENANT = 21332;
|
||||||
|
private static final int KETRA_ORC_RAIDER = 21327;
|
||||||
|
private static final int KETRA_ORC_WARRIOR = 21331;
|
||||||
|
private static final int KETRA_ORC_SCOUT = 21328;
|
||||||
|
private static final int KETRA_ORC_OFFICER = 21339;
|
||||||
|
private static final int KETRA_ORC_BATTALION_COMMANDER = 21340;
|
||||||
|
private static final int KETRA_ORC_HEAD_ROYAL_GUARD = 21346;
|
||||||
|
|
||||||
|
private static final int KETRAS_PROPHET = 21347;
|
||||||
|
private static final int KETRA_ORC_GRAND_PRIEST = 21342;
|
||||||
|
private static final int KETRAS_HEAD_SHAMAN = 21345;
|
||||||
|
private static final int KETRA_ORC_SHAMAN = 21329;
|
||||||
|
private static final int KETRA_ORC_MEDIUM = 21334;
|
||||||
|
|
||||||
|
private static final int KETRA_BACKUP_SHOOTER = 27511;
|
||||||
|
private static final int KETRA_BACKUP_WIZARD = 27512;
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10526_TheDarkSecretOfTheKetraOrcs()
|
||||||
|
{
|
||||||
|
super(10526);
|
||||||
|
addStartNpc(LUGONNES);
|
||||||
|
addTalkId(LUGONNES);
|
||||||
|
addKillId(KETRA_ORC_HEAD_ROYAL_GUARD, KETRA_ORC_WARRIOR, KETRA_ORC_MEDIUM, KETRA_BACKUP_SHOOTER, KETRA_ORC_SHAMAN, KETRAS_HEAD_SHAMAN, KETRA_BACKUP_WIZARD, KETRA_ORC_ELITE_SOLDIER, KETRA_ORC_CENTURION, KETRA_ORC_LIEUTENANT, KETRA_ORC_RAIDER, KETRAS_PROPHET, KETRA_ORC_SCOUT, KETRA_ORC_OFFICER, KETRA_ORC_BATTALION_COMMANDER, KETRA_ORC_GRAND_PRIEST);
|
||||||
|
addCondRace(Race.ERTHEIA, "33852-00a.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.MAGE_GROUP), "33852-00.htm");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33852-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33852-02.htm":
|
||||||
|
case "33852-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 492760460, 5519);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33852-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33852-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33852-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
int killedShooter = qs.getInt("killed_" + KETRA_BACKUP_SHOOTER);
|
||||||
|
int killedWizard = qs.getInt("killed_" + KETRA_BACKUP_WIZARD);
|
||||||
|
|
||||||
|
switch (npc.getId())
|
||||||
|
{
|
||||||
|
case KETRA_ORC_ELITE_SOLDIER:
|
||||||
|
case KETRA_ORC_CENTURION:
|
||||||
|
case KETRA_ORC_LIEUTENANT:
|
||||||
|
case KETRA_ORC_RAIDER:
|
||||||
|
case KETRA_ORC_SCOUT:
|
||||||
|
case KETRA_ORC_OFFICER:
|
||||||
|
case KETRA_ORC_BATTALION_COMMANDER:
|
||||||
|
case KETRA_ORC_HEAD_ROYAL_GUARD:
|
||||||
|
case KETRA_ORC_WARRIOR:
|
||||||
|
{
|
||||||
|
final L2Npc mob = addSpawn(KETRA_BACKUP_SHOOTER, npc, false, 60000);
|
||||||
|
mob.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case KETRAS_PROPHET:
|
||||||
|
case KETRA_ORC_GRAND_PRIEST:
|
||||||
|
case KETRA_ORC_SHAMAN:
|
||||||
|
case KETRAS_HEAD_SHAMAN:
|
||||||
|
case KETRA_ORC_MEDIUM:
|
||||||
|
{
|
||||||
|
final L2Npc mob = addSpawn(KETRA_BACKUP_WIZARD, npc, false, 60000);
|
||||||
|
mob.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case KETRA_BACKUP_SHOOTER:
|
||||||
|
{
|
||||||
|
if (killedShooter < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + KETRA_BACKUP_SHOOTER, ++killedShooter);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case KETRA_BACKUP_WIZARD:
|
||||||
|
{
|
||||||
|
if (killedWizard < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + KETRA_BACKUP_WIZARD, ++killedWizard);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((killedShooter >= 100) && (killedWizard >= 100))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>(2);
|
||||||
|
holder.add(new NpcLogListHolder(KETRA_BACKUP_SHOOTER, false, qs.getInt("killed_" + KETRA_BACKUP_SHOOTER)));
|
||||||
|
holder.add(new NpcLogListHolder(KETRA_BACKUP_WIZARD, false, qs.getInt("killed_" + KETRA_BACKUP_WIZARD)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(The quest is only for Ertheia characters.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(This quest may only be undertaken by an Ertheia Wizard character with Lv. 76 or above who has completed the quest "The Dark Secret of the Ketra Orcs".)
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Hmm... it appears that they are bring extremely cautious.<br>
|
||||||
|
<font color="LEVEL">Belos</font> is nowhere to be found. We need to flush them out.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10527_TheAssassinationOfTheKetraOrcCommander 33852-02.htm">"What should I do?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
We will go after their commander. There's no way they will keep<font color="LEVEL">Belos</font> hidden even when their commander is in danger.<br>
|
||||||
|
After creating a situation where they have no choice but to reveal Belos, we will slay Belos together once he shows himself.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10527_TheAssassinationOfTheKetraOrcCommander 33852-03.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Of course, taking out the<font color="LEVEL">Ketra Orc</font> Commander will not be easy. Also, there is a chance that <font color="LEVEL">Belos</font> will not show himself. However, it is still worth a shot. Even if we only manage to slay their commander, we have nothing to lose from that.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10527_TheAssassinationOfTheKetraOrcCommander 33852-04.htm">"I understand."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I will repeat my Instructions.<br>
|
||||||
|
Find and kill <font color="LEVEL">Ketra's Commander Tayr</font> here at the <font color="LEVEL">Ketra Orc Outpost</font> and report to me.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Have you not found <font color="LEVEL">Ketra's Commander Tayr</font>?<br>
|
||||||
|
Again, find and kill <font color="LEVEL">Ketra's Commander Tayr</font> here at the <font color="LEVEL">Ketra Orc Outpost</font> and report to me.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Hmm... Even after <font color="LEVEL">Ketra's Commander Tayr</font> was killed, <font color="LEVEL">Belos</font> didn't show up. I will think on this. Anyway, it is good that you killed Ketra's Commander Tayr. Now that the alliance between <font color="LEVEL">Embryo</font> and the <font color="LEVEL">Ketra Orcs</font> is proven, it is not good for us to have him alive.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10527_TheAssassinationOfTheKetraOrcCommander 33852-07.html">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Anyways, good work. You may get some rest now. I will devise another plan to bring <font color="LEVEL">Belos</font> out into the open.<br>
|
||||||
|
I will tell you when I come up with a good idea.
|
||||||
|
</body></html>
|
@@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10527_TheAssassinationOfTheKetraOrcCommander;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
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 quests.Q10526_TheDarkSecretOfTheKetraOrcs.Q10526_TheDarkSecretOfTheKetraOrcs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Assassination of the Ketra Orc Commander (10527)
|
||||||
|
* @URL https://l2wiki.com/The_Assassination_of_the_Ketra_Orc_Commander#Ertheia
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-22 - [15:54:21]
|
||||||
|
*/
|
||||||
|
public class Q10527_TheAssassinationOfTheKetraOrcCommander extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LUGONNES = 33852;
|
||||||
|
// Monsters
|
||||||
|
private static final int KETRAS_COMMANDER_TAYR = 27500; // Ketra's Commander Tayr
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10527_TheAssassinationOfTheKetraOrcCommander()
|
||||||
|
{
|
||||||
|
super(10527);
|
||||||
|
addStartNpc(LUGONNES);
|
||||||
|
addTalkId(LUGONNES);
|
||||||
|
addKillId(KETRAS_COMMANDER_TAYR);
|
||||||
|
addCondRace(Race.ERTHEIA, "33852-00.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.MAGE_GROUP), "33852-00a.htm");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33852-00a.html");
|
||||||
|
addCondCompletedQuest(Q10526_TheDarkSecretOfTheKetraOrcs.class.getSimpleName(), "33852-00a.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33852-02.htm":
|
||||||
|
case "33852-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 327446943, 1839);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33852-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33852-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33852-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(The quest is only for Ertheia characters.)
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I admire your valor, but we require someone more adept.<br>
|
||||||
|
(This quest may only be undertaken by an Ertheia Wizard character with Lv. 76 or above who has completed the quest "Assassination of the Ketra Orc Commander".)
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
The situation is not good. Since we took out their commander, their security has been tight. Though this was expected, it's hardly welcome.<br>
|
||||||
|
Of course, giving up now is not an option. We should simply do what we need to do.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10528_TheAssassinationOfTheKetraOrcChief 33852-02.htm">"What should I do?"</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,6 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
The most dangerous thing that we can do may also be the most sure-fire way of bringing Belos out.<br>
|
||||||
|
We should find and slay their chief. Having already lost their Commander, if they also lose their chief to us, the Ketra Orcs will be plunged into confusion.<br>
|
||||||
|
At that point, no matter what agreement they entered into with the Embryo, they'll have no choice but to bring out <font color="LEVEL">Belos</font>.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10528_TheAssassinationOfTheKetraOrcChief 33852-03.htm">"I agree."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
I knew you'd agree with me.<br>
|
||||||
|
Of course, slaying the <font color="LEVEL">Ketra Orcs'</font> chief won't be an easy undertaking. However according to my observations until now, you're up to the task.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10528_TheAssassinationOfTheKetraOrcChief 33852-04.htm">"I'll take care of everything."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Let me repeat my instructions.<br>
|
||||||
|
Find and kill <font color="LEVEL">Ketra's Chief Brakki</font> here at the <font color="LEVEL">Ketra Orc Outpost</font> and report to me.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Have you not slayed <font color="LEVEL">Ketra's Chief Brakki</font> yet?<br>
|
||||||
|
I will give you the instructions again. Find and kill <font color="LEVEL">Ketra's Chief Brakki</font> here at the <font color="LEVEL">Ketra Orc Outpost</font> and report to me.<br>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
Finally! Killing <font color="LEVEL">Ketra's Chief Brakki</font> was exactly what we needed to flush out <font color="LEVEL">Belos</font>. We should have done that first!<br>
|
||||||
|
Well, I think that's it for both of us now. Time for some rest.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10528_TheAssassinationOfTheKetraOrcChief 33852-07.html">"Go on."</Button>
|
||||||
|
</body></html>
|
@@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Giant's Minion Lugonnes:<br>
|
||||||
|
So you got rid of <font color="LEVEL">Belos</font>, and killed the chief of <font color="LEVEL">Ketra Orcs</font>. working with <font color="LEVEL">Embryo</font>, huh? what progress!<br>
|
||||||
|
Of course, that doesn't mean we can let our guard down against <font color="LEVEL">Embryo</font>. They'll be up to on good somewhere else before long!<br>
|
||||||
|
We will not forget the help the Ertheia have given us. Anyway, I'll let <font color="LEVEL">Kekropus</font> know of your valor. He will be grateful as well. We the Giant's Minions will always remember you.
|
||||||
|
</body></html>
|
@@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10528_TheAssassinationOfTheKetraOrcChief;
|
||||||
|
|
||||||
|
import com.l2jmobius.gameserver.enums.CategoryType;
|
||||||
|
import com.l2jmobius.gameserver.enums.ChatType;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestType;
|
||||||
|
import com.l2jmobius.gameserver.enums.Race;
|
||||||
|
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 quests.Q10527_TheAssassinationOfTheKetraOrcCommander.Q10527_TheAssassinationOfTheKetraOrcCommander;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Assassination of the Ketra Orc Chief (10528)
|
||||||
|
* @URL https://l2wiki.com/The_Assassination_of_the_Ketra_Orc_Chief#Ertheia
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2017-11-22 - [21:34:59]
|
||||||
|
*/
|
||||||
|
public class Q10528_TheAssassinationOfTheKetraOrcChief extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LUGONNES = 33852;
|
||||||
|
// Monsters
|
||||||
|
private static final int KETRAS_CHIEF_BRAKKI = 27501;
|
||||||
|
private static final int BELOS = 27513;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 76;
|
||||||
|
private static final int MAX_LEVEL = 80;
|
||||||
|
|
||||||
|
public Q10528_TheAssassinationOfTheKetraOrcChief()
|
||||||
|
{
|
||||||
|
super(10528);
|
||||||
|
addStartNpc(LUGONNES);
|
||||||
|
addTalkId(LUGONNES);
|
||||||
|
addKillId(KETRAS_CHIEF_BRAKKI);
|
||||||
|
addCondRace(Race.ERTHEIA, "33852-00.html");
|
||||||
|
addCondStart(p -> p.isInCategory(CategoryType.MAGE_GROUP), "33852-00a.htm");
|
||||||
|
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33852-00a.htm");
|
||||||
|
addCondCompletedQuest(Q10527_TheAssassinationOfTheKetraOrcCommander.class.getSimpleName(), "33852-00a.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 "33852-02.htm":
|
||||||
|
case "33852-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33852-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 351479151, 1839);
|
||||||
|
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33852-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "33852-05.html";
|
||||||
|
}
|
||||||
|
else if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
htmltext = "33852-06.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, true);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.COME_BELOS_PROTECT_ME);
|
||||||
|
final L2Npc mob = addSpawn(BELOS, npc, false, 120000);
|
||||||
|
addAttackPlayerDesire(mob, killer);
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
}
|
@@ -332,6 +332,14 @@ import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak;
|
|||||||
import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak;
|
import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak;
|
||||||
import quests.Q10504_JewelOfAntharas.Q10504_JewelOfAntharas;
|
import quests.Q10504_JewelOfAntharas.Q10504_JewelOfAntharas;
|
||||||
import quests.Q10505_JewelOfValakas.Q10505_JewelOfValakas;
|
import quests.Q10505_JewelOfValakas.Q10505_JewelOfValakas;
|
||||||
|
import quests.Q10521_QueenNavarisLetterVarkaSilenosBarracks.Q10521_QueenNavarisLetterVarkaSilenosBarracks;
|
||||||
|
import quests.Q10522_TheDarkSecretOfVarkaSilenos.Q10522_TheDarkSecretOfVarkaSilenos;
|
||||||
|
import quests.Q10523_TheAssassinationOfTheVarkaSilenosCommander.Q10523_TheAssassinationOfTheVarkaSilenosCommander;
|
||||||
|
import quests.Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief.Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief;
|
||||||
|
import quests.Q10525_QueenNavarisLetterKetraOrcOutpost.Q10525_QueenNavarisLetterKetraOrcOutpost;
|
||||||
|
import quests.Q10526_TheDarkSecretOfTheKetraOrcs.Q10526_TheDarkSecretOfTheKetraOrcs;
|
||||||
|
import quests.Q10527_TheAssassinationOfTheKetraOrcCommander.Q10527_TheAssassinationOfTheKetraOrcCommander;
|
||||||
|
import quests.Q10528_TheAssassinationOfTheKetraOrcChief.Q10528_TheAssassinationOfTheKetraOrcChief;
|
||||||
import quests.Q10534_HatchlingResearch.Q10534_HatchlingResearch;
|
import quests.Q10534_HatchlingResearch.Q10534_HatchlingResearch;
|
||||||
import quests.Q10541_TrainLikeTheRealThing.Q10541_TrainLikeTheRealThing;
|
import quests.Q10541_TrainLikeTheRealThing.Q10541_TrainLikeTheRealThing;
|
||||||
import quests.Q10542_SearchingForNewPower.Q10542_SearchingForNewPower;
|
import quests.Q10542_SearchingForNewPower.Q10542_SearchingForNewPower;
|
||||||
@@ -754,6 +762,14 @@ public class QuestMasterHandler
|
|||||||
Q10503_FrintezzaEmbroideredSoulCloak.class,
|
Q10503_FrintezzaEmbroideredSoulCloak.class,
|
||||||
Q10504_JewelOfAntharas.class,
|
Q10504_JewelOfAntharas.class,
|
||||||
Q10505_JewelOfValakas.class,
|
Q10505_JewelOfValakas.class,
|
||||||
|
Q10521_QueenNavarisLetterVarkaSilenosBarracks.class,
|
||||||
|
Q10522_TheDarkSecretOfVarkaSilenos.class,
|
||||||
|
Q10523_TheAssassinationOfTheVarkaSilenosCommander.class,
|
||||||
|
Q10524_TheAssassinationOfTheVarkaSilenosCommanderChief.class,
|
||||||
|
Q10525_QueenNavarisLetterKetraOrcOutpost.class,
|
||||||
|
Q10526_TheDarkSecretOfTheKetraOrcs.class,
|
||||||
|
Q10527_TheAssassinationOfTheKetraOrcCommander.class,
|
||||||
|
Q10528_TheAssassinationOfTheKetraOrcChief.class,
|
||||||
Q10534_HatchlingResearch.class,
|
Q10534_HatchlingResearch.class,
|
||||||
Q10541_TrainLikeTheRealThing.class,
|
Q10541_TrainLikeTheRealThing.class,
|
||||||
Q10542_SearchingForNewPower.class,
|
Q10542_SearchingForNewPower.class,
|
||||||
|
Reference in New Issue
Block a user