Quest The Man of Mystery (10791).

Contributed by Stayway.
This commit is contained in:
MobiusDev 2016-04-11 06:21:36 +00:00
parent c4ff79cf7b
commit b5a5f9ce4b
18 changed files with 331 additions and 37 deletions

View File

@ -50048,4 +50048,13 @@ INSERT INTO `spawnlist` VALUES
('Seed of Annihilation', '1', '32738', '-184735', '179369', '-10424', '0', '0', '50804', '60', '0', '0', '0'),
('Seed of Annihilation', '1', '32738', '-175193', '179068', '-10304', '0', '0', '27153', '60', '0', '0', '0'),
('Seed of Annihilation', '1', '32738', '-175144', '178477', '-15800', '0', '0', '52696', '60', '0', '0', '0'),
('Seed of Annihilation', '1', '33561', '-178464', '154320', '2576', '0', '0', '48958', '60', '0', '0', '0');
('Seed of Annihilation', '1', '33561', '-178464', '154320', '2576', '0', '0', '48958', '60', '0', '0', '0');
-- Suspicious Cocoon
INSERT INTO `spawnlist` VALUES
("Swamp of Screams", 1, 27536, 70294, -42974, -3200, 0, 0, 25794, 60, 0, 0, 0),
("Swamp of Screams", 1, 27538, 70178, -42536, -3080, 0, 0, 38898, 60, 0, 0, 0),
("Swamp of Screams", 1, 27536, 71222, -42828, -3176, 0, 0, 22418, 60, 0, 0, 0),
("Swamp of Screams", 1, 27537, 70758, -42244, -3136, 0, 0, 50170, 60, 0, 0, 0),
("Swamp of Screams", 1, 27537, 69946, -42390, -3136, 0, 0, 32080, 60, 0, 0, 0),
("Swamp of Screams", 1, 27538, 69946, -43704, -3032, 0, 0, 61288, 60, 0, 0, 0);

View File

@ -541,7 +541,8 @@ MobsSpawnNotRandom = 18812,18813,18814,\
18221,18222,18226,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,\
18242,18243,18256,31452,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,\
31479,31480,31481,31482,31483,31484,31485,31486,31487,\
23537,23588,23586,23587
23537,23588,23586,23587,\
27536,27537,27538
# ---------------------------------------------------------------------------
# Minimum Range for Private Stores

View File

@ -0,0 +1,4 @@
<html><body>Tracker Dokara:<br>
Wait! I thought if we felled that many Stakatos it'd be enough, but there's more of them. We'll need to find a better solution to this.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10791_TheManOfMystery 33847-02.htm">"What do you want me to do?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Tracker Dokara:<br>
I thought for sure that we'd gotten rid of them all...Were you really as thorough as you claim?<br>
No, someone recommended by Innocentin wouldn't be so careless. Did you happen to discover anything strange while fighting the Stakatos?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10791_TheManOfMystery 33847-03.htm">"I did hear about a Suspicious Cocoon."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Tracker Dokara:<br>
A cocoon? No!<br>
Are all these Stakatos being born out of cocoons? Wait, it sounds plausible. This means we need to get rid of more than just the Stakatos!<br>
I need your help again, in that case.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10791_TheManOfMystery 33847-04.htm">"Don't tell me..."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Tracker Dokara:<br>
I'm guessing that these Suspicious Cocoons are the real problem. If we got rid of them, we'd be rid of the Stakato problem as well.<br>
Go get rid of 5 <font color="LEVEL">Suspicious Cocoons.</font>That shouldn't be too difficult.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Tracker Dokara:<br>
You're a few monsters short.<br1>
You weren't trying to fast talk me like everyone else, were you?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Tracker Dokara:<br>
I think that takes care of it. Did anything happen while you were getting rid of those Suspicious Cocoons?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10791_TheManOfMystery 33847-07.html">"Kinda..."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Tracker Dokara:<br>
So, this Kain has appeared and helped you again? Pa'agrio always shows the way to outstanding warriors.<br>
Anyway, we know that those Suspicious Cocoons are the root of our problems, and you've gotten rid of a high number of them, so there's no longer a need to worry. Of course, this Kain fellow helped you, but to me, the outcome is all the same.<br>
Thank you for your help.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Kain:<br>
What are Stakatos doing here?<br>
Huh? You're Ertheia. Faeron must be stable enough for you to leave town, eh?<br>
But what are you doing here? Did Stakatos attack you?
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10791_TheManOfMystery">"Yes, Thank you for helping me."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kain:<br>
You aren't strong enough to be out here alone.<br>
I stopped by because someone was having trouble with Stakato. How funny it's another Ertheia.<br>
</body></html>

View File

@ -0,0 +1,220 @@
/*
* 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.Q10791_TheManOfMystery;
import quests.Q10790_AMercenaryHelper.Q10790_AMercenaryHelper;
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.base.ClassId;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
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.serverpackets.ExQuestNpcLogList;
/**
* The Man of Mystery (10791)
* @author Stayway
*/
public class Q10791_TheManOfMystery extends Quest
{
// NPC
private static final int DOKARA = 33847;
private static final int VAN_HALTER = 33993;
// Monsters
private static final int SUSPICIOUS_COCOON = 27536;
private static final int SUSPICIOUS_COCOON1 = 27537;
private static final int SUSPICIOUS_COCOON2 = 27538;
private static final int NEEDLE_STAKATO_CAPTAIN = 27542;
private static final int NEEDLE_STAKATO = 27543;
// Item
private static final ItemHolder GUILD_COIN = new ItemHolder(37045, 63);
private static final ItemHolder ENCHANT_ARMOR_A = new ItemHolder(26351, 5);
// Rewards
private static final int EXP_REWARD = 16968420;
private static final int SP_REWARD = 4072;
// Other
private static final int MIN_LEVEL = 65;
private static final int MAX_LEVEL = 70;
private static final String KILL_VAR = "KillCount";
public Q10791_TheManOfMystery()
{
super(10791, Q10791_TheManOfMystery.class.getSimpleName(), "The Man of Mystery");
addStartNpc(DOKARA);
addTalkId(DOKARA, VAN_HALTER);
addKillId(SUSPICIOUS_COCOON, SUSPICIOUS_COCOON1, SUSPICIOUS_COCOON2, NEEDLE_STAKATO_CAPTAIN, NEEDLE_STAKATO);
addFirstTalkId(VAN_HALTER);
addCondRace(Race.ERTHEIA, "noErtheia.html");
addCondClassId(ClassId.MARAUDER, "no_class.html");
addCondCompletedQuest(Q10790_AMercenaryHelper.class.getSimpleName(), "no_quest.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 "33847-02.htm":
case "33847-03.htm":
{
htmltext = event;
break;
}
case "33847-04.htm": // start the quest
{
qs.startQuest();
qs.set(Integer.toString(SUSPICIOUS_COCOON), 0);
htmltext = event;
break;
}
case "33847-07.html":
{
if (qs.isCond(3))
{
giveItems(player, GUILD_COIN);
giveItems(player, ENCHANT_ARMOR_A);
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;
final int npcId = npc.getId();
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "no_level.html";
}
else
{
htmltext = "33847-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33847-05.html";
}
else if ((qs.isCond(3) && (npcId == DOKARA)))
{
htmltext = "33847-06.html";
}
else if ((qs.isCond(3) && (npcId == VAN_HALTER)))
{
htmltext = "33993-02.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = null;
switch (npc.getId())
{
case VAN_HALTER:
{
if (qs.isCond(3))
{
htmltext = "33993-01.html";
}
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))
{
switch (npc.getId())
{
case SUSPICIOUS_COCOON:
case SUSPICIOUS_COCOON1:
case SUSPICIOUS_COCOON2:
{
int kills = qs.getInt(Integer.toString(SUSPICIOUS_COCOON));
kills++;
qs.set(Integer.toString(SUSPICIOUS_COCOON), kills);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addNpc(SUSPICIOUS_COCOON, kills);
killer.sendPacket(log);
if (kills >= 5)
{
qs.setCond(2);
addAttackDesire(addSpawn(NEEDLE_STAKATO_CAPTAIN, npc.getLocation()), killer);
addAttackDesire(addSpawn(NEEDLE_STAKATO, npc.getLocation()), killer);
addAttackDesire(addSpawn(NEEDLE_STAKATO, npc.getLocation()), killer);
addAttackDesire(addSpawn(NEEDLE_STAKATO, npc.getLocation()), killer);
addAttackDesire(addSpawn(NEEDLE_STAKATO, npc.getLocation()), killer);
}
}
case NEEDLE_STAKATO_CAPTAIN:
{
final int killCount = qs.getInt(KILL_VAR) + 1;
if ((killCount == 1) && (qs.isCond(2)))
{
qs.unset(Integer.toString(SUSPICIOUS_COCOON));
addSpawn(VAN_HALTER, npc.getX() + 20, npc.getY() + 20, npc.getZ(), npc.getHeading(), false, 80000);
qs.setCond(3);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,3 @@
<html><body>Vorbos:<br>
You are not Ertheia, this quest is not for you.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>You don't meet class requirements<br>
(Quest available for Ertheia Marauder.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
(Quest available from level 65 to 70)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>You don't meet requirements<br>
(This quest is available for Ertheia Marauders who's completed quest A Mercenary helper. )
</body></html>

View File

@ -302,6 +302,8 @@ import quests.Q10775_InSearchOfAnAncientGiant.Q10775_InSearchOfAnAncientGiant;
import quests.Q10782_LettersFromTheQueen_ForsakenPlains.Q10782_LettersFromTheQueen_ForsakenPlains;
import quests.Q10785_LettersFromTheQueen_FieldsOfMassacre.Q10785_LettersFromTheQueen_FieldsOfMassacre;
import quests.Q10789_LettersFromTheQueen_SwampOfScreams.Q10789_LettersFromTheQueen_SwampOfScreams;
import quests.Q10790_AMercenaryHelper.Q10790_AMercenaryHelper;
import quests.Q10791_TheManOfMystery.Q10791_TheManOfMystery;
import quests.Q10792_LettersFromTheQueen_ForestOfTheDead.Q10792_LettersFromTheQueen_ForestOfTheDead;
/**
@ -596,6 +598,8 @@ final class QuestMasterHandler
Q10782_LettersFromTheQueen_ForsakenPlains.class,
Q10785_LettersFromTheQueen_FieldsOfMassacre.class,
Q10789_LettersFromTheQueen_SwampOfScreams.class,
Q10790_AMercenaryHelper.class,
Q10791_TheManOfMystery.class,
Q10792_LettersFromTheQueen_ForestOfTheDead.class
};

View File

@ -799,52 +799,52 @@
<height normal="44" />
</collision>
</npc>
<npc id="27536" level="65" type="L2Npc" name="Suspicious Cocoon" title="Quest Monster">
<npc id="27536" level="65" type="L2Monster" name="Suspicious Cocoon" title="Quest Monster">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<race>ETC</race>
<stats>
<vitals hp="3476" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<vitals hp="2345.76698" hpRegen="7.5" mp="1282.4" mpRegen="2.7" />
<defence physical="286.3615" magical="209.54692" />
<speed>
<walk ground="50" />
<run ground="120" />
</speed>
</stats>
<status attackable="false" />
<status attackable="true" />
<collision>
<radius normal="10" />
<height normal="27" />
</collision>
</npc>
<npc id="27537" level="65" type="L2Npc" name="Suspicious Cocoon" title="Quest Monster">
<npc id="27537" level="65" type="L2Monster" name="Suspicious Cocoon" title="Quest Monster">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<race>ETC</race>
<stats>
<vitals hp="3476" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<vitals hp="2345.76698" hpRegen="7.5" mp="1282.4" mpRegen="2.7" />
<defence physical="286.3615" magical="209.54692" />
<speed>
<walk ground="50" />
<run ground="120" />
</speed>
</stats>
<status attackable="false" />
<status attackable="true" />
<collision>
<radius normal="35" />
<height normal="27" />
</collision>
</npc>
<npc id="27538" level="65" type="L2Npc" name="Suspicious Cocoon" title="Quest Monster">
<npc id="27538" level="65" type="L2Monster" name="Suspicious Cocoon" title="Quest Monster">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<race>ETC</race>
<stats>
<vitals hp="3476" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<vitals hp="2345.76698" hpRegen="7.5" mp="1282.4" mpRegen="2.7" />
<defence physical="286.3615" magical="209.54692" />
<speed>
<walk ground="50" />
<run ground="120" />
</speed>
</stats>
<status attackable="false" />
<status attackable="true" />
<collision>
<radius normal="48" />
<height normal="27" />
@ -901,38 +901,44 @@
<height normal="22.5" />
</collision>
</npc>
<npc id="27542" level="68" type="L2Npc" name="Needle Stakato Captain" title="Quest Monster">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<npc id="27542" level="68" type="L2Monster" name="Needle Stakato Captain" title="Quest Monster">
<race>HUMANOID</race>
<sex>MALE</sex>
<stats>
<vitals hp="33462" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<defence physical="356.991435" magical="348.3" evasion="-18" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="50" />
<run ground="120" />
<walk ground="50" /> <!-- TODO: FIX IT -->
<run ground="120" /> <!-- TODO: FIX IT -->
</speed>
</stats>
<status attackable="false" />
<status attackable="true" />
<collision>
<radius normal="18" />
<height normal="40" />
<radius normal="18" /> <!-- TODO: FIX IT -->
<height normal="40" /> <!-- TODO: FIX IT -->
</collision>
</npc>
<npc id="27543" level="66" type="L2Npc" name="Needle Stakato" title="Quest Monster">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<npc id="27543" level="66" type="L2Monster" name="Needle Stakato" title="Quest Monster">
<race>HUMANOID</race>
<sex>MALE</sex>
<stats>
<vitals hp="3557" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<defence physical="223.6362" magical="148.899508363765" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="50" />
<run ground="120" />
<walk ground="50" /> <!-- TODO: FIX IT -->
<run ground="120" /> <!-- TODO: FIX IT -->
</speed>
</stats>
<status attackable="false" />
<status attackable="true" />
<collision>
<radius normal="15" />
<height normal="36" />
<radius normal="15" /> <!-- TODO: FIX IT -->
<height normal="36" /> <!-- TODO: FIX IT -->
</collision>
</npc>
<npc id="27544" level="85" type="L2Npc" name="Nebulite Eye" title="Quest Monster">
@ -959,8 +965,8 @@
<stats>
<vitals hp="6710" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<speed>
<walk ground="50" />
<run ground="120" />
<walk ground="50" />
<run ground="120" />
</speed>
</stats>
<status attackable="false" />