Quest Request to find Sakum (10335).

Contributed by spider.
This commit is contained in:
MobiusDev 2015-08-02 21:54:03 +00:00
parent c8a3b90ea4
commit 78090f6694
14 changed files with 291 additions and 0 deletions

View File

@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
I got another message from the Ruins of Agony. The monsters that Sakum stirred up are causing trouble everywhere. We have an army near Windmill Hill, but it doesn't seem able to do anything. What can we do?<br>
<button icon=NORMAL action="bypass -h Quest Q10335_RequestToFindSakum 30332-02.htm">"Can i Help?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Captain Bathis:<br>
Sakum has been stirring up other creatures as it moves west of Gludio. I heard there's now another, similar-looking monster...<br>
We do need to take care of the Sakum threat soon, but right now it's more urgent to clear out some of these other violent creatures. Can you leave right away?<br>
<button icon=NORMAL action="bypass -h Quest Q10335_RequestToFindSakum 30332-03.htm">"Yes, I'll go now."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
Thanks for your decisiveness. Talk to the gatekeeper, and go to the <font color="LEVEL">Ruins of agony</font>. When you arrive, look for <font color="LEVEL">Guard Kallesin</font>.<br>
He will give you further instructions.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Captain Bathis:<br>
Talk to the gatekeeper to get to the <font color="LEVEL">Ruins of Agony</font>. When you arrive, look for <font color="LEVEL>Guard Kallesin</font>.<br>
He will give you further instructions.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Guard Kallesin:<br>
Ahh, the support soldier from the village, yes? Welcome. And you are just in time. Perhaps you saw Sakum on your way here? It just passed by. I was... I couldn't help but look, but I didn't dare approach. If you saw it, you'd know what I meant... it just freezes you in your tracks.<br>
Anyway, I intend to draw a sketch of Sakum before I forget what it looked like, in hopes that it'll help someone else track it down. Meanwhile, I hope you can defeat some of the other monsters that have been stirred up by Sakum.<br>
<button icon=NORMAL action="bypass -h Quest Q10335_RequestToFindSakum 33177-02.html">"Yeah, they shouldn't be too hard to take out.</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Guard Kallesin:<br>
Good! I think you're capable enough to take care of them. That will ease the burden on my soldiers a little, protecting the residents of the town.<br>
Please defeat some <font color="LEVEL"> Ruin Zombies, Ruin Zombie Leaders, Skeleton Trackers, Skeleton Bowmen, and Ruin Spartoi</font>in the Ruins of Agony. Then, report to <font color="LEVEL">Guard Zenath</font>, who's located at the far end of the ruins.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Guard Kallesin:<br>
Please defeat some <font color="LEVEL"> Ruin Zombies, Ruin Zombie Leaders, Skeleton Trackers, Skeleton Bowmen, and Ruin Spartoi</font>in the Ruins of Agony. Then, report to <font color="LEVEL">Guard Zenath</font>, who's located at the far end of the ruins.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Guard Zenath:<br>
Have you come from the village? Please... report!<br>
<button icon=NORMAL action="bypass -h Quest Q10335_RequestToFindSakum 33509-02.html">"Well..."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Guard Zenath:<br>
I'm alive thanks to you! I can't believe that you defeated so many monsters in such a short time!<br>
I was doing my best to chase Sakum, but <font color="LEVEL">Kanilov</font> is quite a distraction...<br>
<button icon=NORMAL action="bypass -h Quest Q10335_RequestToFindSakum 33509-03.html">"Oh?"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Guard Zenath:<br>
We're trying to figure out Sakum's movements. However, it's more important we defeat Kanilov than track Sakum.<br>
Kanilov's no pushover either - we'll need to be careful.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Guard Zenath:<br>
Once Kanilov is defeated, I'm going back to the village!<br>
(You have already completed this quest.)
</body></html>

View File

@ -0,0 +1,238 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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.Q10335_RequestToFindSakum;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State;
import com.l2jserver.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jserver.gameserver.util.Util;
/**
* Request to find Sakum (10335)
* @author spider
*/
public class Q10335_RequestToFindSakum extends Quest
{
// NPCs
private static final int BATHIS = 30332;
private static final int KALLESIN = 33177;
private static final int ZENATH = 33509;
// Monsters
private static final int SKELETON_TRACKER = 20035;
private static final int SKELETON_BOWMAN = 20051;
private static final int RUIN_ZOMBIE = 20026;
private static final int RUIN_SPARTOI = 20054;
private static final Map<Integer, Integer> MOBS_REQUIRED = new HashMap<>();
{
MOBS_REQUIRED.put(SKELETON_TRACKER, 10);
MOBS_REQUIRED.put(SKELETON_BOWMAN, 10);
MOBS_REQUIRED.put(RUIN_ZOMBIE, 15);
MOBS_REQUIRED.put(RUIN_SPARTOI, 15);
}
// Rewards
private static final int ADENA_REWARD = 90000;
private static final int EXP_REWARD = 350000;
private static final int SP_REWARD = 84;
// Others
private static final int MIN_LEVEL = 23;
private static final int MAX_LEVEL = 40;
public Q10335_RequestToFindSakum()
{
super(10335, Q10335_RequestToFindSakum.class.getSimpleName(), "Request to find Sakum");
addStartNpc(BATHIS);
addTalkId(BATHIS, KALLESIN, ZENATH);
addKillId(SKELETON_TRACKER, SKELETON_BOWMAN, RUIN_ZOMBIE, RUIN_SPARTOI);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "no_level.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30332-02.htm":
{
htmltext = event;
break;
}
case "30332-03.htm": // start the quest
{
qs.startQuest();
htmltext = event;
break;
}
case "33177-02.html": // next step, killing mobs
{
qs.setCond(2);
qs.set(Integer.toString(SKELETON_TRACKER), 0);
qs.set(Integer.toString(SKELETON_BOWMAN), 0);
qs.set(Integer.toString(RUIN_ZOMBIE), 0);
qs.set(Integer.toString(RUIN_SPARTOI), 0);
htmltext = event;
break;
}
case "33509-02.html":
{
htmltext = event;
break;
}
case "33509-03.html":
{
if (qs.isCond(3))
{ // exit quest.
giveAdena(player, ADENA_REWARD, true);
addExpAndSp(player, EXP_REWARD, SP_REWARD);
qs.exitQuest(false, true);
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:
{
switch (npc.getId())
{
case BATHIS:
{
htmltext = "30332-01.htm";
break;
}
case KALLESIN:
case ZENATH:
{
htmltext = getNoQuestMsg(player);
break;
}
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case BATHIS:
{
htmltext = "30332-04.html";
break;
}
case KALLESIN:
{
if (qs.isCond(1))
{
htmltext = "33177-01.html";
}
else if (qs.isCond(2))
{
htmltext = "33177-03.html";
}
else
{
htmltext = getNoQuestMsg(player);
}
break;
}
case ZENATH:
{
if (qs.isCond(3))
{
htmltext = "33509-01.html";
}
else
{
htmltext = getNoQuestMsg(player);
}
break;
}
}
break;
}
case State.COMPLETED:
{
switch (npc.getId())
{
case BATHIS:
case KALLESIN:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
case ZENATH:
{
htmltext = "33509-04.html";
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if ((qs != null) && qs.isStarted() && qs.isCond(2) && (Util.checkIfInRange(1500, npc, qs.getPlayer(), false)))
{
int kills = qs.getInt(Integer.toString(npc.getId()));
if (kills < MOBS_REQUIRED.get(npc.getId())) // check if killed required number of monsters
{
kills++;
qs.set(Integer.toString(npc.getId()), kills);
}
ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addNpc(SKELETON_TRACKER, qs.getInt(Integer.toString(SKELETON_TRACKER)));
log.addNpc(SKELETON_BOWMAN, qs.getInt(Integer.toString(SKELETON_BOWMAN)));
log.addNpc(RUIN_SPARTOI, qs.getInt(Integer.toString(RUIN_SPARTOI)));
log.addNpc(RUIN_ZOMBIE, qs.getInt(Integer.toString(RUIN_ZOMBIE)));
killer.sendPacket(log);
if ((qs.getInt(Integer.toString(SKELETON_TRACKER)) >= MOBS_REQUIRED.get(SKELETON_TRACKER)) && (qs.getInt(Integer.toString(SKELETON_BOWMAN)) >= MOBS_REQUIRED.get(SKELETON_BOWMAN)) && (qs.getInt(Integer.toString(RUIN_SPARTOI)) >= MOBS_REQUIRED.get(RUIN_SPARTOI)) && (qs.getInt(Integer.toString(RUIN_ZOMBIE)) >= MOBS_REQUIRED.get(RUIN_ZOMBIE)))
{
qs.setCond(3);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -198,6 +198,7 @@ import quests.Q10331_StartOfFate.Q10331_StartOfFate;
import quests.Q10332_ToughRoad.Q10332_ToughRoad; import quests.Q10332_ToughRoad.Q10332_ToughRoad;
import quests.Q10333_DisappearedSakum.Q10333_DisappearedSakum; import quests.Q10333_DisappearedSakum.Q10333_DisappearedSakum;
import quests.Q10334_ReportingTheStatusOfWindmillHill.Q10334_ReportingTheStatusOfWindmillHill; import quests.Q10334_ReportingTheStatusOfWindmillHill.Q10334_ReportingTheStatusOfWindmillHill;
import quests.Q10335_RequestToFindSakum.Q10335_RequestToFindSakum;
import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny; import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter; import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted; import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted;
@ -415,6 +416,7 @@ public class QuestMasterHandler
Q10332_ToughRoad.class, Q10332_ToughRoad.class,
Q10333_DisappearedSakum.class, Q10333_DisappearedSakum.class,
Q10334_ReportingTheStatusOfWindmillHill.class, Q10334_ReportingTheStatusOfWindmillHill.class,
Q10335_RequestToFindSakum.class,
Q10338_SeizeYourDestiny.class, Q10338_SeizeYourDestiny.class,
Q10390_KekropusLetter.class, Q10390_KekropusLetter.class,
Q10393_KekropusLetter_AClueCompleted.class, Q10393_KekropusLetter_AClueCompleted.class,

View File

@ -53923,3 +53923,8 @@ DELETE FROM `spawnlist` WHERE `npc_templateid` = 32868 AND `locx` = 148558 AND `
INSERT INTO `spawnlist` VALUES INSERT INTO `spawnlist` VALUES
('', 1, 33176, -74511, 168718, -3506, 0, 0, 45183, 60, 0, 0, 0), ('', 1, 33176, -74511, 168718, -3506, 0, 0, 45183, 60, 0, 0, 0),
('', 1, 33508, -69545, 170901, -3461, 0, 0, 18939, 60, 0, 0, 0); ('', 1, 33508, -69545, 170901, -3461, 0, 0, 18939, 60, 0, 0, 0);
-- Guard Kallesin & Guard Zenath
INSERT INTO `spawnlist` VALUES
('', 1, 33177, -41021, 122823, -2916, 0, 0, 32767, 60, 0, 0, 0),
('', 1, 33509, -46101, 109354, -3813, 0, 0, 20352, 60, 0, 0, 0);