Quest The Ketra Orc Supporters (10425).

Contributed by Stayway.
This commit is contained in:
MobiusDev 2016-08-07 20:24:45 +00:00
parent aee99b3913
commit c6ce5e1f7f
12 changed files with 259 additions and 1 deletions

View File

@ -93,7 +93,6 @@
10380 The Executioner's Execution
10388 Conspiracy Behind Doors
10389 The Voice of Authority
10425 The Ketra Orc Supporters
10426 Assassination of the Ketra Orc Commander
10427 Assassination of the Ketra Orc Chief
10430 Kekropus' Letter: Tracking the Evil (9/9)

View File

@ -0,0 +1,4 @@
<html><body>Giant's Minion Lugonnes:<br>
If it is true that you defeated <font color="LEVEL">Sakum</font> in the <font color="LEVEL">Wasteland</font> you should have no trouble with <font color="LEVEL">Belos</font>, a clone of Sakum created by <font color="LEVEL">Embryo</font>. But how do I know if it's really you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10425_TheKetraOrcSupporters 33852-02.htm">"How can I prove myself?"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Giant's Minion Lugonnes:<br>
First, hide yourself among the <font color="LEVEL">Ketra Orcs</font>. Then, find and kill those who help <font color="LEVEL">Embryo</font>. That will make things easier.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10425_TheKetraOrcSupporters 33852-03.htm">"Okay. Go on."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Giant's Minion Lugonnes:<br>
If I am right, the helpers sent by <font color="LEVEL">Embryo</font> will appear when the <font color="LEVEL">Ketra Orc</font> soldiers are in danger.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10425_TheKetraOrcSupporters 33852-04.htm">"Go on."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Giant's Minion Lugonnes:<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. Kill <font color="LEVEL">50</font> each and come back to me.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Giant's Minion Lugonnes:<br>You haven't finished the mission yet!<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. Kill <font color="LEVEL">50</font> each and come back to me.
</body></html>

View File

@ -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 Q10425_TheKetraOrcSupporters 33852-07.html">"What should we do now?"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Giant's Minion Lugonnes:<br>
For now, let's wait and observe their movements. That will help us find <font color="LEVEL">Belos</font>. Until then, get some rest.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Giant's Minion Lugonnes:<br>
Maybe you're not prepared after all...<br>
(This quest may only be undertaken by a Wizard class character who is level 76 to 80.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Giant's Minion Lugonnes:<br>
I don't trust you.<br>
(Ertheia classes cannot perform this quest.)
</body></html>

View File

@ -0,0 +1,224 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10425_TheKetraOrcSupporters;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.enums.QuestSound;
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 Ketra Orc Supporters (10425)
* @author Stayway
*/
public final class Q10425_TheKetraOrcSupporters extends Quest
{
// NPCs
private static final int LUGONNES = 33852;
private static final int EMBRYO_SHOOTER = 27514;
private static final int EMBRYO_WIZARD = 27515;
private static final int[] SHOOTER_MONSTERS =
{
21327, // Ketra Orc Raider
21331, // Ketra Orc Warrior
21332, // Ketra Orc Lieutenant
21335, // Ketra Orc Elite Soldier
21336, // Ketra Orc White Captain
21339, // Ketra Orc Officer
21340, // Ketra Orc Battalion Commander
27511, // Ketra Backup Shooter
};
private static final int[] WIZARD_MONSTERS =
{
21334, // Ketra Orc Medium
21338, // Ketra Orc Seer
21342, // Ketra Orc Grand Priest
27512, // Varka Backup Wizard
};
// Items
private static final int EAS = 26353; // Scroll: Enchant Armor (S-grade)
// Misc
private static final int MIN_LEVEL = 76;
private static final int MAX_LEVEL = 80;
public Q10425_TheKetraOrcSupporters()
{
super(10425);
addStartNpc(LUGONNES);
addTalkId(LUGONNES);
addKillId(SHOOTER_MONSTERS);
addKillId(WIZARD_MONSTERS);
addCondNotRace(Race.ERTHEIA, "33852-09.html");
addCondInCategory(CategoryType.WIZARD_GROUP, "33852-08.html");
addCondMinLevel(MIN_LEVEL, "33852-08.html");
addCondMaxLevel(MAX_LEVEL, "33852-08.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))
{
qs.exitQuest(false, true);
giveItems(player, EAS, 2);
giveStoryQuestReward(player, 89);
if ((player.getLevel() >= MIN_LEVEL) && (player.getLevel() <= MAX_LEVEL))
{
addExpAndSp(player, 22_997_520, 5519);
}
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = null;
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "33852-01.htm";
break;
}
case State.STARTED:
{
htmltext = qs.isCond(1) ? "33852-05.html" : "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, false);
if ((qs != null) && qs.isCond(1))
{
if ((npc.getId() == EMBRYO_SHOOTER) || (npc.getId() == EMBRYO_WIZARD))
{
int shooterCount = qs.getInt("KillCount_" + EMBRYO_SHOOTER);
int wizardCount = qs.getInt("KillCount_" + EMBRYO_WIZARD);
if (npc.getId() == EMBRYO_SHOOTER)
{
if (shooterCount < 50)
{
qs.set("KillCount_" + EMBRYO_SHOOTER, ++shooterCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
else
{
if (wizardCount < 50)
{
qs.set("KillCount_" + EMBRYO_WIZARD, ++wizardCount);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((shooterCount >= 50) && (wizardCount >= 50))
{
qs.setCond(2, true);
}
}
else
{
if (CommonUtil.contains(WIZARD_MONSTERS, npc.getId()))
{
if (qs.getInt("KillCount_" + EMBRYO_WIZARD) < 50)
{
final L2Npc embryo = addSpawn(EMBRYO_WIZARD, npc, false, 60000);
addAttackPlayerDesire(embryo, killer);
embryo.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
}
}
else
{
if (qs.getInt("KillCount_" + EMBRYO_SHOOTER) < 50)
{
final L2Npc embryo = addSpawn(EMBRYO_SHOOTER, npc, false, 60000);
addAttackPlayerDesire(embryo, killer);
embryo.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_DARE_INTERFERE_WITH_EMBRYO_SURELY_YOU_WISH_FOR_DEATH);
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance activeChar)
{
final QuestState qs = getQuestState(activeChar, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(EMBRYO_SHOOTER, false, qs.getInt("KillCount_" + EMBRYO_SHOOTER)));
npcLogList.add(new NpcLogListHolder(EMBRYO_WIZARD, false, qs.getInt("KillCount_" + EMBRYO_WIZARD)));
return npcLogList;
}
return super.getNpcLogList(activeChar);
}
}

View File

@ -284,6 +284,7 @@ import quests.Q10420_TheVarkaSilenosSupporters.Q10420_TheVarkaSilenosSupporters;
import quests.Q10421_AssassinationOfTheVarkaSilenosCommander.Q10421_AssassinationOfTheVarkaSilenosCommander;
import quests.Q10422_AssassinationOfTheVarkaSilenosChief.Q10422_AssassinationOfTheVarkaSilenosChief;
import quests.Q10424_KekropusLetterBelosWhereabouts.Q10424_KekropusLetterBelosWhereabouts;
import quests.Q10425_TheKetraOrcSupporters.Q10425_TheKetraOrcSupporters;
import quests.Q10442_TheAnnihilatedPlains1.Q10442_TheAnnihilatedPlains1;
import quests.Q10445_AnImpendingThreat.Q10445_AnImpendingThreat;
import quests.Q10450_ADarkAmbition.Q10450_ADarkAmbition;
@ -650,6 +651,7 @@ public class QuestMasterHandler
Q10421_AssassinationOfTheVarkaSilenosCommander.class,
Q10422_AssassinationOfTheVarkaSilenosChief.class,
Q10424_KekropusLetterBelosWhereabouts.class,
Q10425_TheKetraOrcSupporters.class,
Q10442_TheAnnihilatedPlains1.class,
Q10445_AnImpendingThreat.class,
Q10450_ADarkAmbition.class,