Addition of quest Captive Demons (842).

Contributed by Dmitri.
This commit is contained in:
MobiusDevelopment 2019-12-09 11:14:41 +00:00
parent 100fb4253e
commit 655692df49
180 changed files with 2556 additions and 230 deletions

View File

@ -37,7 +37,6 @@
839 Request from the Unworldly Visitors
840 Request from the Kingdom's Royal Guard
841 Contamination Containment
842 Captive Demons
843 Giant Evolution Control
844 Giant's Treasure
845 Sabotage the Embryo Supplies

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
I don't think you'll be able to complete this. You seem passionate, but you don't have enough experience.<br>
Please come back when you've become stronger.<br>
Unworldly Visitors faction level should be 1<br>
(Only characters above Lv. 100.)
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.<br>
What do you say? if you don't remember what to do, I can tell you again.
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-02.htm">"Please tell me again."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"I know what I should do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Adventurer! Good to see you. Since you've helped us so much already, how about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
I've been waiting for you, adventurer. Well since you are here now, will you listen to me? I know I can trust you, but if you complete this mission, we'll become better allies and your pockets will get heavier. What do you say? Or do you need me to explain the mission again?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-03.htm">"What is it you need to do?"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.<br>
Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.<br>
That's about it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"Yes, sure."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.html"><font color="A62F31">"I'll take the intermediate mission."</font></Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
This isn't the first time we've met? You've completed a mission before? I see... Well, I don't really have a good memory.<br>
If you have completed a mission before, then that means you must have a Mark of Trust. What? You don't have one?<br>
Then you are either a liar, or you haven't been here in a long time. My trust is something you must continously try to maintain. Will you listen to me?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Yes, tell me about the mission."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06a.html">"I'll take the intermediate mission."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Alright. Here's the mission. Hunt the <font color="LEVEL">Kerberos Leger, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and the Fury Kerberos Nero</font>, and collect their <font color="LEVEL">Mutated Spirit's Souls</font> as proof.<br>You can get rewards only if you bring at least 200. Of course, you'll get more rewards if you bring more.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Your Unworldly Visitors Faction Level Must be 3 or above may undertake this mission.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the basic mission to collect 200 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the intermediate mission to collect 400 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07a.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">200 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">400 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
You want to finish already? Well, I can still give you a reward... But it won't be something good. Are you sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-09c.html">"Yes, I'm sure."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">200 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">400 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.<br>
I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10.html">"I did my best to earn your trust."</Button>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-12.html">"Here is the Faction Amity Token."</Button> -->
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10a.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10c.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.<br>
As long as you don't forget us, that is. We thank you for your hard work.
</body></html>

View File

@ -0,0 +1,3 @@
<html><head><body>Sthor:<br>
Here's your reward. We'll be able to maintain our trust. As long as you don't forget about us, that is.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward, I'll remember how you've helped us all those times. Here's a higher level Mark of Trust. Thank you for all of your help.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward for helping us. Although you didn't get all the Marks, I still remember how you helped us. I have no doubt the trust between us has deepened even more.
</body></html>

View File

@ -0,0 +1,301 @@
/*
* 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.Q00842_CaptiveDemons;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* Captive Demons (842)
* @URL https://l2wiki.com/Captive_Demons
* @author Dmitri
*/
public class Q00842_CaptiveDemons extends Quest
{
// NPC
private static final int STHOR = 34219;
// Monsters
private static final int[] MONSTERS =
{
23735, // Captive Familiar Spirit
23736, // Captive Hell Demon
23737, // Captive Succubus
23738 // Captive Phantom
};
// Items
private static final int GIANT_TRACKERS_BASIC_SUPPLY_BOX = 47184;
private static final int GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX = 47185;
private static final int GIANT_TRACKERS_ADVANCED_SUPPLY_BOX = 47186;
// Misc
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEATING_THE_CAPTIVE_DEMONS.getId();
private static final boolean PARTY_QUEST = true;
private static final int MIN_LEVEL = 100;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(STHOR);
addTalkId(STHOR);
addKillId(MONSTERS);
addCondMinLevel(MIN_LEVEL, "34219-00.htm");
addFactionLevel(Faction.GIANT_TRACKERS, 1, "34219-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34219-02.htm":
case "34219-03.htm":
case "34219-04.htm":
case "34219-04a.htm":
case "34219-06.html":
case "34219-06a.html":
{
htmltext = event;
break;
}
case "select_mission":
{
qs.startQuest();
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "return":
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "34219-07.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "34219-07a.html":
{
qs.setCond(3, true);
htmltext = event;
break;
}
case "34219-10.html":
{
final int chance = getRandom(100);
switch (qs.getCond())
{
case 4:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
addExpAndSp(player, 5_536_944_000L, 13_288_590);
addFactionPoints(player, Faction.GIANT_TRACKERS, 100);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
case 5:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
addExpAndSp(player, 11_073_888_000L, 26_577_180);
addFactionPoints(player, Faction.GIANT_TRACKERS, 200);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34219-01.htm";
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case 2:
{
htmltext = "34219-08.html";
break;
}
case 3:
{
htmltext = "34219-08a.html";
break;
}
case 4:
case 5:
{
htmltext = "34219-09.html";
break;
}
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
else
{
qs.setState(State.CREATED);
htmltext = "34219-01.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
if ((qs != null) && (qs.getCond() > 1))
{
switch (qs.getCond())
{
case 2:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 200)
{
qs.setCond(4, true);
}
break;
}
case 3:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 400)
{
qs.setCond(5, true);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getCond() > 1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@ -196,6 +196,7 @@ import quests.Q00830_TheWayOfTheGiantsPawn.Q00830_TheWayOfTheGiantsPawn;
import quests.Q00831_SayhasScheme.Q00831_SayhasScheme;
import quests.Q00833_DevilsTreasureTauti.Q00833_DevilsTreasureTauti;
import quests.Q00835_PitiableMelisa.Q00835_PitiableMelisa;
import quests.Q00842_CaptiveDemons.Q00842_CaptiveDemons;
import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade;
import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra;
import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas;
@ -492,7 +493,6 @@ import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
import quests.not_done.Q00839_RequestFromTheUnworldlyVisitors;
import quests.not_done.Q00840_RequestFromTheKingdomsRoyalGuard;
import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00842_CaptiveDemons;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00844_GiantsTreasure;
import quests.not_done.Q00845_SabotageTheEmbryoSupplies;
@ -740,7 +740,7 @@ public class QuestMasterHandler
Q00839_RequestFromTheUnworldlyVisitors.class, // TODO: Not done.
Q00840_RequestFromTheKingdomsRoyalGuard.class, // TODO: Not done.
Q00841_ContaminationContainment.class, // TODO: Not done.
Q00842_CaptiveDemons.class, // TODO: Not done.
Q00842_CaptiveDemons.class,
Q00843_GiantEvolutionControl.class, // TODO: Not done.
Q00844_GiantsTreasure.class, // TODO: Not done.
Q00845_SabotageTheEmbryoSupplies.class, // TODO: Not done.

View File

@ -1,36 +0,0 @@
/*
* 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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q00842_CaptiveDemons extends Quest
{
private static final int START_NPC = 34219;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -91,7 +91,6 @@
839 Request from the Unworldly Visitors
840 Request from the Kingdom's Royal Guard
841 Contamination Containment
842 Captive Demons
843 Giant Evolution Control
844 Giant's Treasure
845 Sabotage the Embryo Supplies

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
I don't think you'll be able to complete this. You seem passionate, but you don't have enough experience.<br>
Please come back when you've become stronger.<br>
Unworldly Visitors faction level should be 1<br>
(Only characters above Lv. 100.)
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.<br>
What do you say? if you don't remember what to do, I can tell you again.
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-02.htm">"Please tell me again."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"I know what I should do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Adventurer! Good to see you. Since you've helped us so much already, how about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
I've been waiting for you, adventurer. Well since you are here now, will you listen to me? I know I can trust you, but if you complete this mission, we'll become better allies and your pockets will get heavier. What do you say? Or do you need me to explain the mission again?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-03.htm">"What is it you need to do?"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.<br>
Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.<br>
That's about it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"Yes, sure."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.html"><font color="A62F31">"I'll take the intermediate mission."</font></Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
This isn't the first time we've met? You've completed a mission before? I see... Well, I don't really have a good memory.<br>
If you have completed a mission before, then that means you must have a Mark of Trust. What? You don't have one?<br>
Then you are either a liar, or you haven't been here in a long time. My trust is something you must continously try to maintain. Will you listen to me?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Yes, tell me about the mission."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06a.html">"I'll take the intermediate mission."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Alright. Here's the mission. Hunt the <font color="LEVEL">Kerberos Leger, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and the Fury Kerberos Nero</font>, and collect their <font color="LEVEL">Mutated Spirit's Souls</font> as proof.<br>You can get rewards only if you bring at least 200. Of course, you'll get more rewards if you bring more.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Your Unworldly Visitors Faction Level Must be 3 or above may undertake this mission.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the basic mission to collect 200 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the intermediate mission to collect 400 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07a.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">200 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">400 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
You want to finish already? Well, I can still give you a reward... But it won't be something good. Are you sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-09c.html">"Yes, I'm sure."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">200 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">400 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.<br>
I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10.html">"I did my best to earn your trust."</Button>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-12.html">"Here is the Faction Amity Token."</Button> -->
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10a.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10c.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.<br>
As long as you don't forget us, that is. We thank you for your hard work.
</body></html>

View File

@ -0,0 +1,3 @@
<html><head><body>Sthor:<br>
Here's your reward. We'll be able to maintain our trust. As long as you don't forget about us, that is.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward, I'll remember how you've helped us all those times. Here's a higher level Mark of Trust. Thank you for all of your help.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward for helping us. Although you didn't get all the Marks, I still remember how you helped us. I have no doubt the trust between us has deepened even more.
</body></html>

View File

@ -0,0 +1,301 @@
/*
* 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.Q00842_CaptiveDemons;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* Captive Demons (842)
* @URL https://l2wiki.com/Captive_Demons
* @author Dmitri
*/
public class Q00842_CaptiveDemons extends Quest
{
// NPC
private static final int STHOR = 34219;
// Monsters
private static final int[] MONSTERS =
{
23735, // Captive Familiar Spirit
23736, // Captive Hell Demon
23737, // Captive Succubus
23738 // Captive Phantom
};
// Items
private static final int GIANT_TRACKERS_BASIC_SUPPLY_BOX = 47184;
private static final int GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX = 47185;
private static final int GIANT_TRACKERS_ADVANCED_SUPPLY_BOX = 47186;
// Misc
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEATING_THE_CAPTIVE_DEMONS.getId();
private static final boolean PARTY_QUEST = true;
private static final int MIN_LEVEL = 100;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(STHOR);
addTalkId(STHOR);
addKillId(MONSTERS);
addCondMinLevel(MIN_LEVEL, "34219-00.htm");
addFactionLevel(Faction.GIANT_TRACKERS, 1, "34219-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34219-02.htm":
case "34219-03.htm":
case "34219-04.htm":
case "34219-04a.htm":
case "34219-06.html":
case "34219-06a.html":
{
htmltext = event;
break;
}
case "select_mission":
{
qs.startQuest();
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "return":
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "34219-07.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "34219-07a.html":
{
qs.setCond(3, true);
htmltext = event;
break;
}
case "34219-10.html":
{
final int chance = getRandom(100);
switch (qs.getCond())
{
case 4:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
addExpAndSp(player, 5_536_944_000L, 13_288_590);
addFactionPoints(player, Faction.GIANT_TRACKERS, 100);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
case 5:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
addExpAndSp(player, 11_073_888_000L, 26_577_180);
addFactionPoints(player, Faction.GIANT_TRACKERS, 200);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34219-01.htm";
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case 2:
{
htmltext = "34219-08.html";
break;
}
case 3:
{
htmltext = "34219-08a.html";
break;
}
case 4:
case 5:
{
htmltext = "34219-09.html";
break;
}
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
else
{
qs.setState(State.CREATED);
htmltext = "34219-01.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
if ((qs != null) && (qs.getCond() > 1))
{
switch (qs.getCond())
{
case 2:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 200)
{
qs.setCond(4, true);
}
break;
}
case 3:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 400)
{
qs.setCond(5, true);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getCond() > 1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@ -197,6 +197,7 @@ import quests.Q00830_TheWayOfTheGiantsPawn.Q00830_TheWayOfTheGiantsPawn;
import quests.Q00831_SayhasScheme.Q00831_SayhasScheme;
import quests.Q00833_DevilsTreasureTauti.Q00833_DevilsTreasureTauti;
import quests.Q00835_PitiableMelisa.Q00835_PitiableMelisa;
import quests.Q00842_CaptiveDemons.Q00842_CaptiveDemons;
import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade;
import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra;
import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas;
@ -498,7 +499,6 @@ import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
import quests.not_done.Q00839_RequestFromTheUnworldlyVisitors;
import quests.not_done.Q00840_RequestFromTheKingdomsRoyalGuard;
import quests.not_done.Q00841_ContaminationContainment;
import quests.not_done.Q00842_CaptiveDemons;
import quests.not_done.Q00843_GiantEvolutionControl;
import quests.not_done.Q00844_GiantsTreasure;
import quests.not_done.Q00845_SabotageTheEmbryoSupplies;
@ -768,7 +768,7 @@ public class QuestMasterHandler
Q00839_RequestFromTheUnworldlyVisitors.class, // TODO: Not done.
Q00840_RequestFromTheKingdomsRoyalGuard.class, // TODO: Not done.
Q00841_ContaminationContainment.class, // TODO: Not done.
Q00842_CaptiveDemons.class, // TODO: Not done.
Q00842_CaptiveDemons.class,
Q00843_GiantEvolutionControl.class, // TODO: Not done.
Q00844_GiantsTreasure.class, // TODO: Not done.
Q00845_SabotageTheEmbryoSupplies.class, // TODO: Not done.

View File

@ -1,36 +0,0 @@
/*
* 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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q00842_CaptiveDemons extends Quest
{
private static final int START_NPC = 34219;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -110,7 +110,6 @@
839 Request from the Unworldly Visitors
840 Request from the Kingdom's Royal Guard
841 Contamination Containment
842 Captive Demons
843 Giant Evolution Control
844 Giant's Treasure
845 Sabotage the Embryo Supplies

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
I don't think you'll be able to complete this. You seem passionate, but you don't have enough experience.<br>
Please come back when you've become stronger.<br>
Unworldly Visitors faction level should be 1<br>
(Only characters above Lv. 100.)
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.<br>
What do you say? if you don't remember what to do, I can tell you again.
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-02.htm">"Please tell me again."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"I know what I should do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Adventurer! Good to see you. Since you've helped us so much already, how about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
I've been waiting for you, adventurer. Well since you are here now, will you listen to me? I know I can trust you, but if you complete this mission, we'll become better allies and your pockets will get heavier. What do you say? Or do you need me to explain the mission again?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-03.htm">"What is it you need to do?"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.<br>
Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.<br>
That's about it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"Yes, sure."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.html"><font color="A62F31">"I'll take the intermediate mission."</font></Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
This isn't the first time we've met? You've completed a mission before? I see... Well, I don't really have a good memory.<br>
If you have completed a mission before, then that means you must have a Mark of Trust. What? You don't have one?<br>
Then you are either a liar, or you haven't been here in a long time. My trust is something you must continously try to maintain. Will you listen to me?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Yes, tell me about the mission."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06a.html">"I'll take the intermediate mission."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Alright. Here's the mission. Hunt the <font color="LEVEL">Kerberos Leger, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and the Fury Kerberos Nero</font>, and collect their <font color="LEVEL">Mutated Spirit's Souls</font> as proof.<br>You can get rewards only if you bring at least 200. Of course, you'll get more rewards if you bring more.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Your Unworldly Visitors Faction Level Must be 3 or above may undertake this mission.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the basic mission to collect 200 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
You have chosen the intermediate mission to collect 400 Mutated Spirit's Souls. Once you have selected the difficulty of the mission, you must meet the requirements in order to complete it. Choose wisely.<br>
Are you sure you want to proceed with this mission?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-07a.html">"Yes, I've made my decision."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Q00842_CaptiveDemons return">"Let me reconsider."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">200 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Good. Left me explain the details. Go to the <font color="LEVEL">Garden of Spirits</font>, defeat the <font color="LEVEL">Kerberos Lager, Kerberos Fort, Kerberos Nero, Fury Sylph Barrena, Fury Sylph Labido, Fury Sylph Purka, Fury Kerberos Leger, and Fury Kerberos Nero</font>, and put them to rest.<br>
As evidence, please bring back <font color="LEVEL">400 Mutated Spirit's Souls</font>. It should be manageable.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
You want to finish already? Well, I can still give you a reward... But it won't be something good. Are you sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-09c.html">"Yes, I'm sure."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">200 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Go to the <font color="LEVEL">Garden of Spirits</font> and defeat all type monsters until you collect <font color="LEVEL">400 Mutated Spirit's Souls</font>.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Toy have collected all of the Mutated Spirit's Souls. You have completed the mission successfully.<br>
I would like to congratulate you on completing the mission. Here's your reward. If you have a Faction Amity Token, I can give You more rewards.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10.html">"I did my best to earn your trust."</Button>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-12.html">"Here is the Faction Amity Token."</Button> -->
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10a.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
You completed the mission! <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-10c.html">"I did my best."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
Here is your reward. This will also help to improve the trust between you and us at the Unworldly Visitors.<br>
As long as you don't forget us, that is. We thank you for your hard work.
</body></html>

View File

@ -0,0 +1,3 @@
<html><head><body>Sthor:<br>
Here's your reward. We'll be able to maintain our trust. As long as you don't forget about us, that is.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward, I'll remember how you've helped us all those times. Here's a higher level Mark of Trust. Thank you for all of your help.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Sthor:<br>
Here's your reward for helping us. Although you didn't get all the Marks, I still remember how you helped us. I have no doubt the trust between us has deepened even more.
</body></html>

View File

@ -0,0 +1,301 @@
/*
* 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.Q00842_CaptiveDemons;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* Captive Demons (842)
* @URL https://l2wiki.com/Captive_Demons
* @author Dmitri
*/
public class Q00842_CaptiveDemons extends Quest
{
// NPC
private static final int STHOR = 34219;
// Monsters
private static final int[] MONSTERS =
{
23735, // Captive Familiar Spirit
23736, // Captive Hell Demon
23737, // Captive Succubus
23738 // Captive Phantom
};
// Items
private static final int GIANT_TRACKERS_BASIC_SUPPLY_BOX = 47184;
private static final int GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX = 47185;
private static final int GIANT_TRACKERS_ADVANCED_SUPPLY_BOX = 47186;
// Misc
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEATING_THE_CAPTIVE_DEMONS.getId();
private static final boolean PARTY_QUEST = true;
private static final int MIN_LEVEL = 100;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(STHOR);
addTalkId(STHOR);
addKillId(MONSTERS);
addCondMinLevel(MIN_LEVEL, "34219-00.htm");
addFactionLevel(Faction.GIANT_TRACKERS, 1, "34219-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34219-02.htm":
case "34219-03.htm":
case "34219-04.htm":
case "34219-04a.htm":
case "34219-06.html":
case "34219-06a.html":
{
htmltext = event;
break;
}
case "select_mission":
{
qs.startQuest();
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "return":
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case "34219-07.html":
{
qs.setCond(2, true);
htmltext = event;
break;
}
case "34219-07a.html":
{
qs.setCond(3, true);
htmltext = event;
break;
}
case "34219-10.html":
{
final int chance = getRandom(100);
switch (qs.getCond())
{
case 4:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
addExpAndSp(player, 5_536_944_000L, 13_288_590);
addFactionPoints(player, Faction.GIANT_TRACKERS, 100);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
case 5:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (chance < 2)
{
giveItems(player, GIANT_TRACKERS_ADVANCED_SUPPLY_BOX, 1);
}
else if (chance < 20)
{
giveItems(player, GIANT_TRACKERS_BASIC_SUPPLY_BOX, 1);
}
else if (chance < 100)
{
giveItems(player, GIANT_TRACKERS_INTERMEDIATE_SUPPLY_BOX, 1);
}
addExpAndSp(player, 11_073_888_000L, 26_577_180);
addFactionPoints(player, Faction.GIANT_TRACKERS, 200);
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34219-01.htm";
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
if (player.getFactionLevel(Faction.GIANT_TRACKERS) >= 3)
{
htmltext = "34219-04a.htm";
break;
}
htmltext = "34219-04.htm";
break;
}
case 2:
{
htmltext = "34219-08.html";
break;
}
case 3:
{
htmltext = "34219-08a.html";
break;
}
case 4:
case 5:
{
htmltext = "34219-09.html";
break;
}
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
else
{
qs.setState(State.CREATED);
htmltext = "34219-01.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
if ((qs != null) && (qs.getCond() > 1))
{
switch (qs.getCond())
{
case 2:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 200)
{
qs.setCond(4, true);
}
break;
}
case 3:
{
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
qs.set("AncientGhosts", killedGhosts);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (killedGhosts >= 400)
{
qs.setCond(5, true);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getCond() > 1))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@ -205,6 +205,7 @@ import quests.Q00830_TheWayOfTheGiantsPawn.Q00830_TheWayOfTheGiantsPawn;
import quests.Q00831_SayhasScheme.Q00831_SayhasScheme;
import quests.Q00833_DevilsTreasureTauti.Q00833_DevilsTreasureTauti;
import quests.Q00835_PitiableMelisa.Q00835_PitiableMelisa;
import quests.Q00842_CaptiveDemons.Q00842_CaptiveDemons;
import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade;
import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra;
import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas;
@ -723,7 +724,7 @@ public class QuestMasterHandler
Q00839_RequestFromTheUnworldlyVisitors.class, // TODO: Not done.
Q00840_RequestFromTheKingdomsRoyalGuard.class, // TODO: Not done.
Q00841_ContaminationContainment.class, // TODO: Not done.
Q00842_CaptiveDemons.class, // TODO: Not done.
Q00842_CaptiveDemons.class,
Q00843_GiantEvolutionControl.class, // TODO: Not done.
Q00844_GiantsTreasure.class, // TODO: Not done.
Q00845_SabotageTheEmbryoSupplies.class, // TODO: Not done.

View File

@ -1,36 +0,0 @@
/*
* 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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q00842_CaptiveDemons extends Quest
{
private static final int START_NPC = 34219;
public Q00842_CaptiveDemons()
{
super(842);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -120,7 +120,6 @@
839 Request from the Unworldly Visitors
840 Request from the Kingdom's Royal Guard
841 Contamination Containment
842 Captive Demons
843 Giant Evolution Control
844 Giant's Treasure
845 Sabotage the Embryo Supplies

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
I don't think you'll be able to complete this. You seem passionate, but you don't have enough experience.<br>
Please come back when you've become stronger.<br>
Unworldly Visitors faction level should be 1<br>
(Only characters above Lv. 100.)
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? if you do, you can deepen the mutual trust with us and Ferin.<br>
What do you say? if you don't remember what to do, I can tell you again.
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-02.htm">"Please tell me again."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"I know what I should do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Ah, adventurer! There you are again. How about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
Adventurer! Good to see you. Since you've helped us so much already, how about helping us some more? <br>
What do you say? If you don't remember what the mission was, I can tell you again.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Sthor:<br>
I've been waiting for you, adventurer. Well since you are here now, will you listen to me? I know I can trust you, but if you complete this mission, we'll become better allies and your pockets will get heavier. What do you say? Or do you need me to explain the mission again?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Sthor:<br>
We've begun an investigation in the Garden of Spirits starting from here. However, we are being threatened by the spirits there, so something must be done.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons 34219-03.htm">"What is it you need to do?"</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
We know of a way to defeat those spirits, at least temporarily. This way, we'll be able to put the spirits at rest, even if it's just for a little while.<br>
Of course, we will give you a reward for your help. And there is one more thing. While you are helping us, you'll build trust with us. The more we trust you, the more rewards we will give you, and there are some secret missions that we only give to those we trust.<br>
That's about it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00842_CaptiveDemons select_mission">"Yes, sure."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Sthor:<br>
Good. Let me tell you what to do. Just choose the mission that you are capable of doing.<br>
Basic Mission - Collect <font color="LEVEL">200</font> Mutated Spirit's Souls.<br1>
Intermediate Mission - Collect <font color="LEVEL">400</font> Mutated Spirit's Souls.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-06.html">"I'll take the basic mission."</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-05.html"><font color="A62F31">"I'll take the intermediate mission."</font></Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Sthor:<br>
This isn't the first time we've met? You've completed a mission before? I see... Well, I don't really have a good memory.<br>
If you have completed a mission before, then that means you must have a Mark of Trust. What? You don't have one?<br>
Then you are either a liar, or you haven't been here in a long time. My trust is something you must continously try to maintain. Will you listen to me?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00842_CaptiveDemons 34219-01.htm">"Yes, tell me about the mission."</Button>
</body></html>

Some files were not shown because too many files have changed in this diff Show More