Addition of quest The Zero Hour (640).

Author: Sacrifice
Source: https://gitlab.com/L2JDevs
This commit is contained in:
MobiusDevelopment 2019-08-14 09:21:24 +00:00
parent 0794364c4d
commit 3b0c031157
13 changed files with 345 additions and 0 deletions

View File

@ -0,0 +1,4 @@
<html><body>Mercenary Kahman:<br>
Hate to say it, but you don't have the skills to work with me. Run along before you get hurt!<br>
(Only characters of level 66 and above may undertake this quest.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mercenary Kahman:<br>
Welcome back! We'd never have found that Stakato's Nest without your help! Finally, we can quash the unrest! Will you join our assault on the Stakato's?<br><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-02.htm">"Let's do it"</a>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mercenary Kahman:<br>
Perfect! I trust your skills, so I know you'll have our backs. Go to the <font color="LEVEL">Stakato's Nest</font> and kill them! It won't be an easy battle, so bring plenty of supplies with you. Don't forget to collect <font color="LEVEL">Fang of Stakato</font>. Now get going!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mercenary Kahman:<br>
What are you doing? There are no cowards in the Golden Ram Mercenaries! Suck it up, soldier, and show us what you're made of! Slaughter the <font color="LEVEL">Spiked Stakato, Spiked Stakato Worker, Spiked Stakato Guard, Male Spiked Stakato, Female Spiked Stakato, Spiked Stakato Sorcerer, Cannibalistic Stakato Leader, Spiked Stakato Soldier, Spiked Stakato Drone, Spiked Stakato Captain, Spiked Stakato Nurse and the Spiked Stakato Shaman.</font>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mercenary Kahman:<br>
You showed real bravery in the face of those filthy Stakato's. Victory is ours! Give me your Stakato's Fang and then choose your reward!<br><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-05.htm">"Here they are!"</a>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Mercenary Kahman:<br>
Which reward would you like?<br>
<a action="bypass -h Quest Q00640_TheZeroHour 1">1 Enria (12 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 2">1 Asofe (6 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 3">1 Thons (6 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 4">10 Varnish of Purity (81 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 5">5 Synthetic Cokes (33 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 6">10 Compound Braid (30 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 7">10 Durable Metal Plate (150 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 8">10 Mithril Alloy (131 Fang of Stakato)</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 9">5 Oriharukon (123 Fang of Stakato)</a>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Mercenary Kahman:<br>
Where are the Fangs you said you had? You won't get money for nothing in this business, soldier! Don't even think about insulting the honor of the Golden Ram Mercenaries!<br><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-07.htm">"I won't! I'll go and fight again"</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-08.htm">"I'm done with this"</a>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mercenary Kahman:<br>
Had enough? No? Then get back out here and fight!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Mercenary Kahman:<br>
Suit yourself. Goodbye.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Mercenary Kahman:<br>
I gave you your reward. What else do you want?<br><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-07.htm">"I'll bring more Fangs."</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-05.htm">"I'll looks somewhere else."</a><br>
<a action="bypass -h Quest Q00640_TheZeroHour 31554-08.htm">"I'm done with this."</a>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Mercenary Kahman:<br>
We haven't finished our investigation, so there's nothing for you right now. Come back later!.<br>
(Only characters who have completed "In Search of the Nest" can undertake this quest.)
</body></html>

View File

@ -0,0 +1,292 @@
/*
* 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.Q00640_TheZeroHour;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q00109_InSearchOfTheNest.Q00109_InSearchOfTheNest;
/**
* The Zero Hour (640)<br>
* @author Sacrifice
*/
public class Q00640_TheZeroHour extends Quest
{
// NPCs
private static final int KAHMAN = 31554;
private static final int[] MONSTERS_TO_HUNT =
{
22617, // Spiked Stakato
22618, // Spiked Stakato Worker
22619, // Spiked Stakato Guard
22620, // Female Spiked Stakato
22621, // Male Spiked Stakato
22622, // Male Spiked Stakato
22623, // Spiked Stakato Sorcerer
22625, // Cannibalistic Stakato Leader
22626, // Cannibalistic Stakato Leader
22627, // Spiked Stakato Soldier
22628, // Spiked Stakato Drone
22629, // Spiked Stakato Captain
22630, // Spike Stakato Nurse
22631, // Spike Stakato Nurse
22633 // Spiked Stakato Shaman
};
// Item
private static final int FANG_OF_STAKATO = 8085;
// Misc
private static final int MIN_LEVEL = 66;
public Q00640_TheZeroHour()
{
super(640);
addStartNpc(KAHMAN);
addTalkId(KAHMAN);
addKillId(MONSTERS_TO_HUNT);
registerQuestItems(FANG_OF_STAKATO);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
String htmltext = null;
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31554-02.htm":
{
qs.startQuest();
break;
}
case "31554-05.htm":
{
htmltext = "31554-05.htm";
break;
}
case "31554-08.htm":
{
qs.exitQuest(true, true);
break;
}
case "1":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 12)
{
takeItems(player, FANG_OF_STAKATO, 12);
rewardItems(player, 4042, 1); // Enria
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "2":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 6)
{
takeItems(player, FANG_OF_STAKATO, 6);
rewardItems(player, 4043, 1); // Asofe
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "3":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 6)
{
takeItems(player, FANG_OF_STAKATO, 6);
rewardItems(player, 4044, 1); // Thons
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "4":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 81)
{
takeItems(player, FANG_OF_STAKATO, 81);
rewardItems(player, 1887, 10); // Varnish of Purity
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "5":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 33)
{
takeItems(player, FANG_OF_STAKATO, 33);
rewardItems(player, 1888, 5); // Synthetic Cokes
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "6":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 30)
{
takeItems(player, FANG_OF_STAKATO, 30);
rewardItems(player, 1889, 10); // Compound Braid
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "7":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 150)
{
takeItems(player, FANG_OF_STAKATO, 150);
rewardItems(player, 5550, 10); // Durable Metal Plate
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "8":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 131)
{
takeItems(player, FANG_OF_STAKATO, 131);
rewardItems(player, 1890, 10); // Mithril Alloy
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
case "9":
{
if (getQuestItemsCount(player, FANG_OF_STAKATO) >= 123)
{
takeItems(player, FANG_OF_STAKATO, 123);
rewardItems(player, 1893, 5); // Oriharukon
htmltext = "31554-09.htm";
}
else
{
htmltext = "31554-07.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance talker)
{
final QuestState qs = getQuestState(talker, true);
String htmlText = getNoQuestMsg(talker);
switch (qs.getState())
{
case State.CREATED:
{
if (talker.getLevel() >= MIN_LEVEL)
{
final QuestState questState2 = qs.getPlayer().getQuestState(Q00109_InSearchOfTheNest.class.getSimpleName());
if ((questState2 != null) && (questState2.getState() == State.COMPLETED))
{
htmlText = "31554-01.htm";
}
else
{
htmlText = "31554-10.htm";
}
}
else
{
htmlText = "31554-00.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
if (getQuestItemsCount(talker, FANG_OF_STAKATO) >= 1)
{
htmlText = "31554-04.htm";
}
else
{
htmlText = "31554-03.htm";
}
}
break;
}
}
return htmlText;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final PlayerInstance partyMember = getRandomPartyMemberState(killer, State.STARTED);
if (partyMember == null)
{
return super.onKill(npc, killer, isSummon);
}
if (partyMember.getQuestState(Q00640_TheZeroHour.class.getSimpleName()) == null)
{
return super.onKill(npc, killer, isSummon);
}
giveItems(partyMember, FANG_OF_STAKATO, (long) Config.RATE_QUEST_DROP);
playSound(partyMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -437,6 +437,7 @@ import quests.Q00636_TruthBeyond.Q00636_TruthBeyond;
import quests.Q00637_ThroughOnceMore.Q00637_ThroughOnceMore;
import quests.Q00638_SeekersOfTheHolyGrail.Q00638_SeekersOfTheHolyGrail;
import quests.Q00639_GuardiansOfTheHolyGrail.Q00639_GuardiansOfTheHolyGrail;
import quests.Q00640_TheZeroHour.Q00640_TheZeroHour;
import quests.Q00641_AttackSailren.Q00641_AttackSailren;
import quests.Q00642_APowerfulPrimevalCreature.Q00642_APowerfulPrimevalCreature;
import quests.Q00643_RiseAndFallOfTheElrokiTribe.Q00643_RiseAndFallOfTheElrokiTribe;
@ -953,6 +954,7 @@ public class QuestMasterHandler
Q00637_ThroughOnceMore.class,
Q00638_SeekersOfTheHolyGrail.class,
Q00639_GuardiansOfTheHolyGrail.class,
Q00640_TheZeroHour.class,
Q00641_AttackSailren.class,
Q00642_APowerfulPrimevalCreature.class,
Q00643_RiseAndFallOfTheElrokiTribe.class,