diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-01.htm b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-01.htm
new file mode 100644
index 0000000000..a32cf20ccd
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-01.htm
@@ -0,0 +1,4 @@
+
Captain Bathis:
+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?
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-02.htm b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-02.htm
new file mode 100644
index 0000000000..13aee98d58
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-02.htm
@@ -0,0 +1,5 @@
+Captain Bathis:
+Sakum has been stirring up other creatures as it moves west of Gludio. I heard there's now another, similar-looking monster...
+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?
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-03.htm b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-03.htm
new file mode 100644
index 0000000000..48e97a22e6
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-03.htm
@@ -0,0 +1,4 @@
+Captain Bathis:
+Thanks for your decisiveness. Talk to the gatekeeper, and go to the Ruins of agony. When you arrive, look for Guard Kallesin.
+He will give you further instructions.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-04.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-04.html
new file mode 100644
index 0000000000..673128bf3d
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/30332-04.html
@@ -0,0 +1,4 @@
+Captain Bathis:
+Talk to the gatekeeper to get to the Ruins of Agony. When you arrive, look for "Yeah, they shouldn't be too hard to take out.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-02.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-02.html
new file mode 100644
index 0000000000..96437d024a
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-02.html
@@ -0,0 +1,4 @@
+Guard Kallesin:
+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.
+Please defeat some Ruin Zombies, Ruin Zombie Leaders, Skeleton Trackers, Skeleton Bowmen, and Ruin Spartoiin the Ruins of Agony. Then, report to Guard Zenath, who's located at the far end of the ruins.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-03.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-03.html
new file mode 100644
index 0000000000..4c02c0047b
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33177-03.html
@@ -0,0 +1,3 @@
+Guard Kallesin:
+Please defeat some Ruin Zombies, Ruin Zombie Leaders, Skeleton Trackers, Skeleton Bowmen, and Ruin Spartoiin the Ruins of Agony. Then, report to Guard Zenath, who's located at the far end of the ruins.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-01.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-01.html
new file mode 100644
index 0000000000..b802d700b6
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-01.html
@@ -0,0 +1,4 @@
+Guard Zenath:
+Have you come from the village? Please... report!
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-02.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-02.html
new file mode 100644
index 0000000000..a60afb222c
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-02.html
@@ -0,0 +1,5 @@
+Guard Zenath:
+I'm alive thanks to you! I can't believe that you defeated so many monsters in such a short time!
+I was doing my best to chase Sakum, but Kanilov is quite a distraction...
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-03.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-03.html
new file mode 100644
index 0000000000..18a90e0d21
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-03.html
@@ -0,0 +1,4 @@
+Guard Zenath:
+We're trying to figure out Sakum's movements. However, it's more important we defeat Kanilov than track Sakum.
+Kanilov's no pushover either - we'll need to be careful.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-04.html b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-04.html
new file mode 100644
index 0000000000..553aa310e3
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/33509-04.html
@@ -0,0 +1,4 @@
+Guard Zenath:
+Once Kanilov is defeated, I'm going back to the village!
+(You have already completed this quest.)
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/Q10335_RequestToFindSakum.java b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/Q10335_RequestToFindSakum.java
new file mode 100644
index 0000000000..46527232d7
--- /dev/null
+++ b/trunk/dist/game/data/scripts/quests/Q10335_RequestToFindSakum/Q10335_RequestToFindSakum.java
@@ -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 .
+ */
+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 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);
+ }
+}
diff --git a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java
index fbf2f73808..16db3ea7cd 100644
--- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -198,6 +198,7 @@ import quests.Q10331_StartOfFate.Q10331_StartOfFate;
import quests.Q10332_ToughRoad.Q10332_ToughRoad;
import quests.Q10333_DisappearedSakum.Q10333_DisappearedSakum;
import quests.Q10334_ReportingTheStatusOfWindmillHill.Q10334_ReportingTheStatusOfWindmillHill;
+import quests.Q10335_RequestToFindSakum.Q10335_RequestToFindSakum;
import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted;
@@ -415,6 +416,7 @@ public class QuestMasterHandler
Q10332_ToughRoad.class,
Q10333_DisappearedSakum.class,
Q10334_ReportingTheStatusOfWindmillHill.class,
+ Q10335_RequestToFindSakum.class,
Q10338_SeizeYourDestiny.class,
Q10390_KekropusLetter.class,
Q10393_KekropusLetter_AClueCompleted.class,
diff --git a/trunk/dist/tools/sql/game/spawnlist.sql b/trunk/dist/tools/sql/game/spawnlist.sql
index a853594328..372e7f7b75 100644
--- a/trunk/dist/tools/sql/game/spawnlist.sql
+++ b/trunk/dist/tools/sql/game/spawnlist.sql
@@ -53923,3 +53923,8 @@ DELETE FROM `spawnlist` WHERE `npc_templateid` = 32868 AND `locx` = 148558 AND `
INSERT INTO `spawnlist` VALUES
('', 1, 33176, -74511, 168718, -3506, 0, 0, 45183, 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);