NPC related changes.

This commit is contained in:
MobiusDev
2017-08-16 23:36:38 +00:00
parent 1402651b38
commit e4f3e8364c
661 changed files with 660023 additions and 668713 deletions

View File

@@ -1,14 +1,10 @@
245 Come to Me
353 Power of Darkness
480 Another Legacy of Cruma Tower
482 Recertification of Value
504 Competition for the Bandit Stronghold
505 Blood Offering
655 A Grand Plan for Taming Wild Beasts
665 Great Pirate Zaken's Treasure
666 Leona Blackbird's Treasure
667 Queen Beora's Legacy
668 The Gladiator's Treasure
669 High Priest's Treasure
670 Turek Orc's Treasure
750 Seven Flowers
759 The Dwarven Nightmare Continues
767 Banishing Evil
@@ -21,24 +17,15 @@
781 Utilize the Darkness - Seed of Annihilation
782 Utilize the Darkness - Seed of Hellfire
789 Waiting for Pa'agrio
816 Plans to Repair the Stronghold
824 Attack the Command Post
826 In Search of the Secret Weapon
827 Einhasad's Order
828 Eva's Blessing
829 Maphr's Salvation
830 The Way of the Giant's Pawn
831 Sayha's Scheme
833 Devil's Treasure, Tauti
834 Against Dragonclaw
835 Pitiable Melisa
10352 Legacy of Cruma Tower
10357 Altar of Blood that Awakens Destruction
10374 That Place Succubus
10456 Operation: Rescue
10457 Kefensis' Illusion
10458 To the Desert Quarry
10506 Diana's Request
10463 The Soul of a Sword
10506 Paddy's Request
10507 Paddy's Request
10508 Paddy's Request
10713 The Hero's Journey: Bloody Swampland
10714 The Hero's Journey: Seed of Annihilation
10715 The Hero's Journey: Harnak Underground Ruins
@@ -66,7 +53,4 @@
10805 The Dimensional Warp, Part 5
10806 The Dimensional Warp, Part 6
10807 The Dimensional Warp, Part 7
10809 The Hero's Journey: Blazing Swamp
10844 Bloody Battle - Seizing Supplies
10845 Bloody Battle - Rescue the Smiths
10846 Bloody Battle - Meeting the Commander
10809 The Hero's Journey: Blazing Swamp

View File

@@ -1,4 +0,0 @@
<html><body>Maestro Nikola:<br>
Have you given Lorain a great deal of help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30621-02.html">Show him a metal piece and explain the situation to him.</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Maestro Nikola:<br>
Hmm... This damage is too extensive for me to repair, but I know a person who can do work of this kind.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30621-03.html">"Who is it? Tell me."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Maestro Nikola:<br>
<font color="LEVEL">Locksmith Dorothy in Heine</font> is the foremost expert for this kind of work. I know it's a long journey, but I think it would be worth your while to go visit her.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30621-04.html">"I understand. Dorothy, you said?"</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Maestro Nikola:<br>
That's right. <font color="LEVEL">Locksmith Dorothy</font>. I am sure she can help you in this matter.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Maestro Nikola:<br>
Didn't you already tell me that? Go and find <font color="LEVEL">Dorothy</font>.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Researcher Lorain:<br>
Good to see you! I tried to reconstruct these broken metal pieces, but it's beyond my skill. I think we must ask <font color="LEVEL">Nikola</font> for help -- he knows a lot of people, one of whom may be able to repair this. I know I should probably visit him myself, but I'm still a litle worried about the argument we had before. Would you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30673-03.htm">"You can count on me."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Researcher Lorain:<br>
I've been studying the metal plate you brought me. I'm very pleased that I can continue my research...<br>
(Only characters level 41 and above are permitted to undertake this quest.)
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Researcher Lorain:<br>
Tell him these metal fragments are actually parts of an ancient recording device, and ask him if he knows how to restore it. If there's a way to do so, I trust you to see that it gets done.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Researcher Lorain:<br>
Did you visit <font color="LEVEL">Nikola</font>? Please find a way to repair these broken metal pieces.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
Why have you come to see me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30970-02.html">"Nikola thought you might be able to repair these broken metal pieces."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
Hmm, this is badly broken. Where did you get it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00188_SealRemoval 30970-03.html">"I found it on the 2nd floor of Cruma Tower, a place that looked like the Giants' research laboratory."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Locksmith Dorothy:<br>
This might be a recording device... I assume you'd like me to try and repair it so you can recover whatever information it contains?<br>
This is going to take some time, but I'll give it my best.<br>
Come back later and we'll see what we find.
</body></html>

View File

@@ -1,185 +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.Q00188_SealRemoval;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
import quests.Q00186_ContractExecution.Q00186_ContractExecution;
import quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
/**
* Seal Removal (188)
* @author ivantotov
*/
public final class Q00188_SealRemoval extends Quest
{
// NPCs
private static final int MAESTRO_NIKOLA = 30621;
private static final int RESEARCHER_LORAIN = 30673;
private static final int DOROTHY_LOCKSMITH = 30970;
// Items
private static final int LORAINES_CERTIFICATE = 10362;
private static final int BROKEN_METAL_PIECES = 10369;
// Misc
private static final int MIN_LEVEL = 41;
private static final int MAX_LEVEL_FOR_EXP_SP = 47;
public Q00188_SealRemoval()
{
super(188);
addStartNpc(RESEARCHER_LORAIN);
addTalkId(RESEARCHER_LORAIN, MAESTRO_NIKOLA, DOROTHY_LOCKSMITH);
registerQuestItems(BROKEN_METAL_PIECES);
}
@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 "30673-03.htm":
{
if (qs.isCreated())
{
qs.startQuest();
qs.setMemoState(1);
giveItems(player, BROKEN_METAL_PIECES, 1);
htmltext = event;
}
break;
}
case "30621-02.html":
{
if (qs.isMemoState(1))
{
htmltext = event;
}
break;
}
case "30621-03.html":
{
if (qs.isMemoState(1))
{
qs.setMemoState(2);
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "30621-04.html":
{
if (qs.isMemoState(2))
{
htmltext = event;
}
break;
}
case "30970-02.html":
{
if (qs.isMemoState(2))
{
htmltext = event;
}
break;
}
case "30970-03.html":
{
if (qs.isMemoState(2))
{
giveAdena(player, 98583, true);
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
{
addExpAndSp(player, 285935, 18711);
}
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 = getNoQuestMsg(player);
if (qs.isCreated())
{
if ((npc.getId() == RESEARCHER_LORAIN) && !hasQuestItems(player, LORAINES_CERTIFICATE))
{
final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
if (((q184 != null) && q184.isCompleted()) || ((q185 != null) && q185.isCompleted() && (q186 == null) && (q187 == null)))
{
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30673-01.htm" : "30673-02.htm";
}
}
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case RESEARCHER_LORAIN:
{
htmltext = "30673-04.html";
break;
}
case MAESTRO_NIKOLA:
{
if (qs.isMemoState(1))
{
htmltext = "30621-01.html";
}
else if (qs.isMemoState(2))
{
htmltext = "30621-05.html";
}
break;
}
case DOROTHY_LOCKSMITH:
{
if (qs.isMemoState(2))
{
htmltext = "30970-01.html";
}
break;
}
}
}
else if (qs.isCompleted() && (npc.getId() == RESEARCHER_LORAIN))
{
htmltext = getAlreadyCompletedMsg(player);
}
return htmltext;
}
}

View File

@@ -1,4 +0,0 @@
<html><body>Priest Shegfield:<br>
How can I help you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30068-02.html">"I want to know about the last remaining Cruma."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Priest Shegfield:<br>
Cruma...<br>
Where did you hear that name?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30068-03.html">"It was mentioned in an old record of the Giants we recovered from the ruins of the Tower of Cruma."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Priest Shegfield:<br>
Hmm. Unfortunately, the Cruma are extinct.<br>
You know of the ancient war between Elves and Humans? At that time, the Cruma became our greatest ally. But we were overwhelmed by the Humans' sheer numbers and forced to retreat. The Cruma fought a valiant rearguard action, giving us time to reach a safe haven. It was mortally wounded, however, and fell in the place now known as the Sea of Spores. That was the last of its noble kind...
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Priest Shegfield:<br>
I already told you about the fate of the Cruma. Your search is in vain, adventurer. I advise you turn your feet onto another path.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
Long time no see. How is Lorain progressing with her assignment?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30512-02.html">Explain what has happened.</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
I see. Hmm... Researching Cruma, eh? Interesting... Although there is nothing to be gained financially from it, unfortunately... But I suppose the research may still have some value, eh? Thank you for your help. Please take this in exchange for what you've done. I will send word later if I need your further help, adventurer. In the meantime, may Maphr thicken your beard and strengthen your sinews!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Researcher Lorain:<br>
You sure took your time! How did it go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30673-02.html">Show him the repaired metal plate.</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Researcher Lorain:<br>
You decoded it! Amazing...<br>
Hmm... experiments concerning the life force... To think that a Cruma may still exist! We must find it. I'm sure that <font color="LEVEL">Priest Shegfield, the Elven priest for the Town of Dion</font>, knows more about this matter. I'm sorry to impose on you further, but I'm reluctant to leave here right now. Would you seek out Shegfield and question him?
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Researcher Lorain:<br>
Please visit <font color="LEVEL">Priest Shegfield in the Town of Dion</font> and question him about the whereabouts of the Cruma.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Researcher Lorain:<br>
I see... Well, if the Cruma are extinct, then I suppose we don't need the section concerning it. Thank you for your help, though. Please go report all this to <font color="LEVEL">Kusto</font>. I'm sure that he will reward you for your hard work. Farewell, and may the hammer of Maphr make clear your path!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Researcher Lorain:<br>
Many thanks for your trouble. I suppose there's nothing left for you to do here. Please go report all this to <font color="LEVEL">Kusto</font>. Farewell, and may the hammer of Maphr make clear your path!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
Welcome, my young friend! I just now finished the repair work you requested. Do you wish to take the item now?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30970-03.htm">"Yes, thank you."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
I am attempting to repair the metal fragments you brought me. Please wait -- this will take some time.<br>
(Only characters level 42 and above are permitted to undertake this quest.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
I also checked the inner workings of the machine in order to make sure everything is functional. Consider that service on the house... but I am going to have to charge you for the other repair costs.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00191_VainConclusion 30970-04.htm">"Perhaps you could send the bill to Nikola?"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Locksmith Dorothy:<br>
Nikola, you say?<br>
Yes, I think it would be best to charge Nikola for my time. Farewell and good luck!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Locksmith Dorothy:<br>
The task that brought you here before has already been accomplished. Do you have something else for me?
</body></html>

View File

@@ -1,219 +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.Q00191_VainConclusion;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import quests.Q00188_SealRemoval.Q00188_SealRemoval;
/**
* Vain Conclusion (191)
* @author ivantotov
*/
public final class Q00191_VainConclusion extends Quest
{
// NPCs
private static final int SHEGFIELD = 30068;
private static final int HEAD_BLACKSMITH_KUSTO = 30512;
private static final int RESEARCHER_LORAIN = 30673;
private static final int DOROTHY_LOCKSMITH = 30970;
// Items
private static final int REPAIRED_METALLOGRAPH = 10371;
// Misc
private static final int MIN_LEVEL = 42;
private static final int MAX_LEVEL_FOR_EXP_SP = 48;
public Q00191_VainConclusion()
{
super(191);
addStartNpc(DOROTHY_LOCKSMITH);
addTalkId(DOROTHY_LOCKSMITH, HEAD_BLACKSMITH_KUSTO, RESEARCHER_LORAIN, SHEGFIELD);
registerQuestItems(REPAIRED_METALLOGRAPH);
}
@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 "30970-03.htm":
{
htmltext = event;
break;
}
case "30970-04.htm":
{
if (qs.isCreated())
{
qs.startQuest();
qs.setMemoState(1);
giveItems(player, REPAIRED_METALLOGRAPH, 1);
htmltext = event;
}
break;
}
case "30068-02.html":
{
if (qs.isMemoState(2))
{
htmltext = event;
}
break;
}
case "30068-03.html":
{
if (qs.isMemoState(2))
{
qs.setMemoState(3);
qs.setCond(3, true);
htmltext = event;
}
break;
}
case "30512-02.html":
{
if (qs.isMemoState(4))
{
giveAdena(player, 117327, true);
if (player.getLevel() < MAX_LEVEL_FOR_EXP_SP)
{
addExpAndSp(player, 309467, 20614);
}
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
case "30673-02.html":
{
if (qs.isMemoState(1))
{
qs.setMemoState(2);
qs.setCond(2, true);
takeItems(player, REPAIRED_METALLOGRAPH, -1);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
if (npc.getId() == DOROTHY_LOCKSMITH)
{
final QuestState q188 = player.getQuestState(Q00188_SealRemoval.class.getSimpleName());
if ((q188 != null) && q188.isCompleted())
{
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30970-01.htm" : "30970-02.htm";
}
}
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case DOROTHY_LOCKSMITH:
{
if (qs.getMemoState() >= 1)
{
htmltext = "30970-05.html";
}
break;
}
case SHEGFIELD:
{
switch (qs.getCond())
{
case 2:
{
htmltext = "30068-01.html";
break;
}
case 3:
{
htmltext = "30068-04.html";
break;
}
}
break;
}
case HEAD_BLACKSMITH_KUSTO:
{
if (qs.isMemoState(4))
{
htmltext = "30512-01.html";
}
break;
}
case RESEARCHER_LORAIN:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "30673-01.html";
break;
}
case 2:
{
htmltext = "30673-03.html";
break;
}
case 3:
{
qs.setMemoState(4);
qs.setCond(4, true);
htmltext = "30673-04.html";
break;
}
case 4:
{
htmltext = "30673-05.html";
break;
}
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == DOROTHY_LOCKSMITH)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
}

View File

@@ -32,7 +32,7 @@ import com.l2jmobius.gameserver.network.NpcStringId;
/**
* Little Wing (420)
* @author Pandragon / Stayway (Rework Helios)
* @author Pandragon / Stayway
*/
public final class Q00420_LittleWing extends Quest
{
@@ -81,19 +81,22 @@ public final class Q00420_LittleWing extends Quest
private static final int LETO_WARRIOR = 20580;
private static final int[] DELUXE_STONE_BREAKERS =
{
23566, // Nymph Rose
23567, // Nymph Rose
23568, // Nymph Lily
23569, // Nymph Lily
23570, // Nymph Tulip
23571, // Nymph Tulip
23572, // Nymph Cosmos
23573, // Nymph Cosmos
23578, // Nymph Guardian
23579, // Buoyant Seed
23580, // Fluttering Seed
23581, // Apherus
23582, // Nymph Rose
20589, // Fline
20590, // Liele
20591, // Valley Treant
20592, // Satyr
20593, // Unicorn
20594, // Forest Runner
20595, // Fline Elder
20596, // Liele Elder
20597, // Valley Treant Elder
20598, // Satyr Elder
20599, // Unicorn Elder
27185, // Fairy Tree of Wind (Quest Monster)
27186, // Fairy Tree of Star (Quest Monster)
27187, // Fairy Tree of Twilight (Quest Monster)
27188, // Fairy Tree of Abyss (Quest Monster)
27189, // Soul of Tree Guardian (Quest Monster)
};
// Rewards
private static final int DRAGONFLUTE_OF_WIND = 3500;

View File

@@ -1,6 +0,0 @@
<html><body>Captain Kurtiz:<br>
Do you know about <font color="LEVEL">Nightmare Kamaloka</font>? It's a place for those who had to leave their homes, waiting for the right moment to go back.<br>
The way to Nightmare Kamaloka is very dangerous and it changes every time, so it's not just for anyone. The reason why people still went though, is because it was a safe place.<br>
Most of those people were fugitives or those whose lives were threatened.<br>
<button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00760_BlockTheExit 30870-02.htm">"I see."</button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Captain Kurtiz:<br>
Those creatures grew stronger there and whenever the gates opened, they were able to go to the places they wanted.<br>
However, when the <font color="LEVEL">Seal of Punishment</font> was released, it affected multiple dimensions. A lot of things were changed because of that impact, and even Nightmare Kamaloka was affected. I'm not sure about the details, but the various paths to Nightmare Kamaloka stopped working.<br>
The problem is that the dimensional door is linked to a place near Aden.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00760_BlockTheExit 30870-03.htm">"I see..."</button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Captain Kurtiz:<br>
Those creatures in Nightmare Kamaloka have been trying to come out to Aden. That's why we had to plan a battle there. The difference in the dimensions is making it difficult, though. It's because they keep appearing out from the other dimensions, even if we get rid of them.<br>
We have to defeat the creatures from each of the dimensions. In order to do that, we need the help of as many adventurers as possible. Thanks for listening to me.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00760_BlockTheExit 30870-04.html">"I'll help you."</button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Captain Kurtiz:<br>
I'll tell you again. Please don't let them use Aden as an exit. Go to Nightmare Kamaloka and defeat <font color="LEVEL">Tracker Mino, Ill-fated Princess Sola, Fallen Angel Ariar, and Confined Princess Sirra</font>, in that order. Lastly, defeat <font color="LEVEL">Betrayed Dark Rider</font>.<br>
The monsters in Nightmare Kamaloka won't be easy to defeat, so make sure to take your friends with you. I won't say thanks until you come back safe and sound.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Captain Kurtiz:<br>
Glad to see you are safe. How's the Nightmare Kamaloka mission going?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00760_BlockTheExit 30870-06.html">"I've completed it."</button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Captain Kurtiz:<br>
Oh, thank you very much! Aden is a safer place now thanks to you. Please help us next time someone tries to invade again. Go and rest up!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Kurtiz:<br>
Please, go away.<br>
(This quest is available for characters lvls 99-105.)
</body></html>

View File

@@ -1,146 +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.Q00760_BlockTheExit;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Block the Exit (760)
* @author St3eT
*/
public final class Q00760_BlockTheExit extends Quest
{
// NPCs
private static final int KURTIZ = 30870;
private static final int DARK_RIDER = 26102;
// Items
private static final int REWARD_BOX = 46560; // Curtiz's Reward Box
// Misc
private static final int MIN_LEVEL = 99;
public Q00760_BlockTheExit()
{
super(760);
addStartNpc(KURTIZ);
addTalkId(KURTIZ);
addKillId(DARK_RIDER);
addCondMinLevel(MIN_LEVEL, "30870-07.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, false);
if (st == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30870-02.htm":
case "30870-03.htm":
{
htmltext = event;
break;
}
case "30870-04.html":
{
st.startQuest();
htmltext = event;
break;
}
case "30870-06.html":
{
if (st.isCond(2))
{
if (player.getLevel() >= MIN_LEVEL)
{
st.exitQuest(QuestType.DAILY, true);
giveItems(player, REWARD_BOX, 1);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, true);
String htmltext = null;
switch (st.getState())
{
case State.CREATED:
{
htmltext = "30870-01.htm";
break;
}
case State.STARTED:
{
htmltext = st.isCond(2) ? "30870-05.html" : "30870-04.html";
break;
}
case State.COMPLETED:
{
if (st.isNowAvailable())
{
st.setState(State.CREATED);
htmltext = "30870-01.htm";
}
else
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState st = getQuestState(player, false);
if ((st != null) && st.isCond(1))
{
st.setCond(2, true);
}
super.actionForEachPlayer(player, npc, isSummon);
}
}

View File

@@ -1,4 +0,0 @@
<html><body>Leona Blackbird:<br>
The Phantasmal Ridge is one of the most dangerous in Hellbound. If you are not strong enough, it's better for you to not go.<br>
(This quest is only available for characters with Lv. 99 or above who have completed the "Elikia's Letter" quest.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00783_VestigeOfTheMagicPower 31595-02.htm">"NEXT 1"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00783_VestigeOfTheMagicPower 31595-03.htm">"NEXT 2"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00783_VestigeOfTheMagicPower 31595-04.htm">"NEXT 3"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
Starrt Quest
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
Quest Progress
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
Quest Condition 2
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00783_VestigeOfTheMagicPower 31595-07.html">"NEXT 4"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fire Dragon Bride Leona Blackbird:<br>
@TODO Need retail HTML text<br>
Quest Finish
</body></html>

View File

@@ -1,192 +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.Q00783_VestigeOfTheMagicPower;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Vestige of the Magic Power (783)
* @URL https://l2wiki.com/Vestige_of_the_Magic_Power
* @author Gigi
*/
public class Q00783_VestigeOfTheMagicPower extends Quest
{
// NPC's
private static final int LEONA_BLACKBIRD = 31595;
// Monster's
private static final int[] MONSTERS =
{
23384, // Smaug
23385, // Lunatikan
23386, // Jabberwok
23387, // Kanzaroth
23388, // Kandiloth
23395, // Garion
23396, // Garion Neti
23397, // Desert Wendigo
23398, // Koraza
23399 // Bend Beetle
};
// Misc
private static final int MIN_LEVEL = 99;
private static final int HIGH_GRADE_FRAGMENT_OF_CHAOS = 46557;
private static final int LEONAS_REWARD_BOX = 46558;
private static final int BLOODIED_DEMONIC_TOME = 37893;
public Q00783_VestigeOfTheMagicPower()
{
super(783);
addStartNpc(LEONA_BLACKBIRD);
addTalkId(LEONA_BLACKBIRD);
addKillId(MONSTERS);
registerQuestItems(HIGH_GRADE_FRAGMENT_OF_CHAOS);
addCondMinLevel(MIN_LEVEL, "31595-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31595-00.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "31595-02.htm":
case "31595-03.htm":
{
htmltext = event;
break;
}
case "31595-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31595-07.html":
{
if ((getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) >= 250) && (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) < 500))
{
addExpAndSp(player, 3876316782L, 9303137);
giveItems(player, LEONAS_REWARD_BOX, 1);
takeItems(player, HIGH_GRADE_FRAGMENT_OF_CHAOS, -1);
giveItems(player, BLOODIED_DEMONIC_TOME, 1);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
else if ((getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) >= 500) && (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) < 750))
{
addExpAndSp(player, 7752633564L, 18606274);
giveItems(player, LEONAS_REWARD_BOX, 2);
takeItems(player, HIGH_GRADE_FRAGMENT_OF_CHAOS, -1);
giveItems(player, BLOODIED_DEMONIC_TOME, 1);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
else if ((getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) >= 750) && (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) < 1000))
{
addExpAndSp(player, 11628950346L, 27909411);
giveItems(player, LEONAS_REWARD_BOX, 3);
takeItems(player, HIGH_GRADE_FRAGMENT_OF_CHAOS, -1);
giveItems(player, BLOODIED_DEMONIC_TOME, 1);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
else if (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) >= 1000)
{
addExpAndSp(player, 15505267128L, 37212548);
giveItems(player, LEONAS_REWARD_BOX, 4);
takeItems(player, HIGH_GRADE_FRAGMENT_OF_CHAOS, -1);
giveItems(player, BLOODIED_DEMONIC_TOME, 1);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
if (npc.getId() == LEONA_BLACKBIRD)
{
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31595-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "31595-05.html";
}
else if (qs.isCond(2))
{
htmltext = "31595-06.html";
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isStarted() && (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) < 1000))
{
giveItems(player, HIGH_GRADE_FRAGMENT_OF_CHAOS, 1);
if (getQuestItemsCount(player, HIGH_GRADE_FRAGMENT_OF_CHAOS) >= 250)
{
qs.setCond(2, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
return super.onKill(npc, player, isSummon);
}
}

View File

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

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<br>
Are you an adventurer? I don't think we've met, but can you help us? I'll make sure to reward you for your efforts!<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-02.htm">"Yes?"</Button>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-04.html">"This isn't the first time we've met."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-01.htm">"Please tell me about the mission again."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-05.htm">"I know what I've got to do."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Master Cyphona:<br>
We're investigating the area around the Garden of Spirits. However, we are being threatened by the spirits there. That's why we must do something.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-03.htm">"What is it?"</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Master Cyphona:<br>
We know of a way to defeat those spirits, at least temporarily. <br>
I'll make sure to reward you if you do this mission. And each time you complete the mission, I'll give you an item that will prove our trust.<br>
You can prove the level of trust between us. The higher the level, the better the rewards. Also, I'll be able to give you top secret missions. However, these marks do disappear with time, so in order to keep our trust, you must continue doing missions from time to time.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-05.htm">"Alright."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-01.htm">"Yes, tell me about the mission."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<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

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<br>
Like I said, you need to bring back at least <font color="LEVEL">200 Mutated Spirit's Souls</font>. Of course, it would be better if you can bring more.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<br>
You want to finish already? Well, I can still give you a reward... But it won't be something good. Of course I'll give you a Mark of Trust since you helped us... Are you sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-09.html">"Yes, I'm sure."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-09a.html">"Yes, I'm sure."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-09b.html">"Yes, I'm sure."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Master Cyphona:<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 Q00790_ObtainingFerinsTrust 34055-08.html">"I'll keep hunting, then."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00790_ObtainingFerinsTrust 34055-09c.html">"Yes, I'm sure."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<br>
Good idea. The more Mutated Spirit's Souls you bring, the more safely we can investigate, and the better reward you will get.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<br>
Since it's your first time, I'll give you a reward and an item that will prove the trust between us. Here you go. We'll exchange this Mark of Trust (Low-grade) for a higher level one if you keep helping us. If you don't help us for a long time, it will disappear. Please keep that in mind.
</body></html>

View File

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

View File

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

View File

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

View File

@@ -1,3 +0,0 @@
<html><head><body>Master Cyphona:<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

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<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

@@ -1,3 +0,0 @@
<html><body>Master Cyphona:<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

@@ -1,361 +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.Q00790_ObtainingFerinsTrust;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Obtaining Ferin's Trust (00790)
* @URL https://l2wiki.com/Obtaining_Ferin%27s_Trust
* @author Gigi
*/
public class Q00790_ObtainingFerinsTrust extends Quest
{
// NPCs
private static final int CYPHONA = 34055;
// Monsters
private static final int[] MONSTERS =
{
23550, // Kerberos Lager
23551, // Kerberos Fort
23552, // Kerberos Nero
23553, // Fury Sylph Barrena
23555, // Fury Sylph Temptress
23556, // Fury Sylph Purka
23557, // Fury Kerberos Leger
23558 // Fury Kerberos Nero
};
// Misc
private static final int MIN_LEVEL = 100;
// Item's
private static final int MARK_OF_TRUST_LOW_GRADE = 45840;
private static final int MARK_OF_TRUST_MID_GRADE = 45843;
private static final int MARK_OF_TRUST_HIGH_GRADE = 45848;
private static final int MUTATAED_SPIRITS_SOUL = 45849;
private static final int BSOE = 1538;
private static final int ELEXIR_OF_LIFE_R = 30357;
private static final int ELEXIR_OF_MIND_R = 30358;
private static final int ELEXIR_OF_CP_R = 30359;
private static final int FERINS_REWARD_BOX = 46165;
private static final int SUPERIOR_GIANTS_CODEX = 46150;
public Q00790_ObtainingFerinsTrust()
{
super(790);
addStartNpc(CYPHONA);
addTalkId(CYPHONA);
addKillId(MONSTERS);
registerQuestItems(MUTATAED_SPIRITS_SOUL);
addCondMinLevel(MIN_LEVEL, "34055-00.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34055-01.htm":
case "34055-02.htm":
case "34055-03.htm":
case "34055-04.html":
case "34055-08.html":
case "34055-09a.html":
case "34055-09b.html":
case "34055-09c.html":
{
htmltext = event;
break;
}
case "34055-05.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34055-09.html":
{
giveItems(player, MARK_OF_TRUST_LOW_GRADE, 1);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
case "34055-10a.html":
{
if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 200) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 400))
{
giveAdena(player, 119773, true);
addExpAndSp(player, 5932440000L, 14237820);
if (getRandom(100) < 20)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 400) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 600))
{
giveAdena(player, 239546, true);
addExpAndSp(player, 11864880000L, 28475640);
if (getRandom(100) < 40)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 600) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 800))
{
giveAdena(player, 359319, true);
addExpAndSp(player, 17797320000L, 42713460);
if (getRandom(100) < 60)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 800) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 1000))
{
giveAdena(player, 479091, true);
addExpAndSp(player, 23729760000L, 56951280);
if (getRandom(100) < 80)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 1000)
{
giveAdena(player, 598864, true);
addExpAndSp(player, 29662200000L, 71189100);
giveItems(player, FERINS_REWARD_BOX, 1);
}
giveItems(player, MARK_OF_TRUST_MID_GRADE, 1);
giveItems(player, BSOE, 1);
giveItems(player, ELEXIR_OF_LIFE_R, 5);
giveItems(player, ELEXIR_OF_MIND_R, 5);
giveItems(player, ELEXIR_OF_CP_R, 5);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
case "34055-10b.html":
{
if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 200) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 400))
{
giveAdena(player, 119773, true);
addExpAndSp(player, 5932440000L, 14237820);
if (getRandom(100) < 20)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 400) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 600))
{
giveAdena(player, 239546, true);
addExpAndSp(player, 11864880000L, 28475640);
if (getRandom(100) < 40)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 600) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 800))
{
giveAdena(player, 359319, true);
addExpAndSp(player, 17797320000L, 42713460);
if (getRandom(100) < 60)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 800) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 1000))
{
giveAdena(player, 479091, true);
addExpAndSp(player, 23729760000L, 56951280);
if (getRandom(100) < 80)
{
giveItems(player, FERINS_REWARD_BOX, 1);
}
}
else if (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 1000)
{
giveAdena(player, 598864, true);
addExpAndSp(player, 29662200000L, 71189100);
giveItems(player, FERINS_REWARD_BOX, 1);
}
giveItems(player, MARK_OF_TRUST_HIGH_GRADE, 1);
giveItems(player, BSOE, 1);
giveItems(player, ELEXIR_OF_LIFE_R, 5);
giveItems(player, ELEXIR_OF_MIND_R, 5);
giveItems(player, ELEXIR_OF_CP_R, 5);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
case "34055-10c.html":
{
if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 200) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 400))
{
addExpAndSp(player, 5932440000L, 14237820);
giveItems(player, FERINS_REWARD_BOX, 1);
if (getRandom(100) < 1)
{
giveItems(player, SUPERIOR_GIANTS_CODEX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 400) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 600))
{
addExpAndSp(player, 11864880000L, 28475640);
giveItems(player, FERINS_REWARD_BOX, getRandom(1, 2));
if (getRandom(100) < 9)
{
giveItems(player, SUPERIOR_GIANTS_CODEX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 600) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 800))
{
addExpAndSp(player, 17797320000L, 42713460);
giveItems(player, FERINS_REWARD_BOX, 2);
if (getRandom(100) < 20)
{
giveItems(player, SUPERIOR_GIANTS_CODEX, 1);
}
}
else if ((getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 800) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 1000))
{
addExpAndSp(player, 23729760000L, 56951280);
giveItems(player, FERINS_REWARD_BOX, getRandom(2, 3));
if (getRandom(100) < 25)
{
giveItems(player, SUPERIOR_GIANTS_CODEX, 1);
}
}
else if (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) >= 1000)
{
addExpAndSp(player, 29662200000L, 71189100);
giveItems(player, FERINS_REWARD_BOX, 3);
if (getRandom(100) < 33)
{
giveItems(player, SUPERIOR_GIANTS_CODEX, 1);
}
}
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
if (!hasQuestItems(player, MARK_OF_TRUST_LOW_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-01.htm";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_LOW_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-01a.htm";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-01b.htm";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE) && hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-01c.htm";
break;
}
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "34055-06.html";
}
else if (qs.isCond(2))
{
if (!hasQuestItems(player, MARK_OF_TRUST_LOW_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-07.html";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_LOW_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-07a.html";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && !hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-07b.html";
break;
}
else if (hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE) && hasQuestItems(player, MARK_OF_TRUST_MID_GRADE) && hasQuestItems(player, MARK_OF_TRUST_HIGH_GRADE))
{
htmltext = "34055-07c.html";
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
executeForEachPlayer(player, npc, isSummon, true, false);
return super.onKill(npc, player, isSummon);
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && player.isInsideRadius(npc, Config.ALT_PARTY_RANGE, true, true) && (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) < 1000))
{
giveItems(player, MUTATAED_SPIRITS_SOUL, 1);
if (getQuestItemsCount(player, MUTATAED_SPIRITS_SOUL) == 200)
{
qs.setCond(2, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
}

View File

@@ -1,4 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
I'm grateful you want to help, but you will need to get a little stronger to help me.<br>
(This quest is for characters Lv. 101 and higher who have completed the "Deep Inside Atelia Fortress" quest.)
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Oh! Are you here to help me?<br>
I think rumor has spread that I'm in need of help. You heard about that too, right?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00817_BlackAteliaResearch 34051-02.htm">"Yes, I did."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Remember Kelbim?<br>
I did some research on the <font color="LEVEL">Kelbim's Armor Piece</font> you brought back, but it wasn't enough.<br>
I will need some other materials... Do you think you can help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00817_BlackAteliaResearch 34051-03.htm">"What do you need?"</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Will you really help me? Thank you!<br>
I need <font color="LEVEL">Black Atelia Powder</font> now. We have no idea how the Atelia was changed, and Kelbim's Armor Piece isn't enough to find that out.<br>
We will need something else, but defeating Kelbim alone won't be enough.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00817_BlackAteliaResearch 34051-04.htm">"What do you need?"</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
I'm glad you understand.<br>
I heard that Kelbim calls on his pawns. I'm sure that dealing with them will also help us understand how the Atelia transforms.<br>
I heard that <font color="LEVEL">Guardian Sinistra, Guardian Destra, and Kelbim's Clone</font> are summoned. Please get the <font color="LEVEL">Black Atelia Powder</font> from them.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Are you still working on it? When you go defeat Kelbim, make sure to defeat his pawns <font color="LEVEL">Guardian Sinistra, Guardian Destra, and Kelbim's Clone</font>, and get the <font color="LEVEL">Black Atelia Powder</font> from them.<br>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Oh! Is that <font color="LEVEL">Black Atelia Powder</font>?<br>
It seems so familiar, but it's still different. Can I have it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00817_BlackAteliaResearch 34051-07.html">"Here you go."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Shadai's Disciple Kaysia:<br>
Thank you!<br>
Please try to get me another one if you ever go back to the Atelia Castle!<br>
I will make sure to reward you.
</body></html>

View File

@@ -1,135 +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.Q00817_BlackAteliaResearch;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import quests.Q10841_DeepInsideAteliaFortress.Q10841_DeepInsideAteliaFortress;
/**
* Black Atelia Research (817)
* @URL https://l2wiki.com/Black_Atelia_Research
* @author Gigi
*/
public final class Q00817_BlackAteliaResearch extends Quest
{
// NPC
private static final int KAYSYA = 34051;
private static final int[] BOSS =
{
23603, // Guardian Sinistra
23604, // Guardian Destra
26128, // Kelbim's Clone
};
// Items
private static final int BLACK_ATELIA_POWDER = 46145;
private static final int HARDENER_POUCH_R = 32779;
// Misc
private static final int MIN_LEVEL = 101;
public Q00817_BlackAteliaResearch()
{
super(817);
addStartNpc(KAYSYA);
addTalkId(KAYSYA);
addKillId(BOSS);
registerQuestItems(BLACK_ATELIA_POWDER);
addCondMinLevel(MIN_LEVEL, "34051-00.htm");
addCondCompletedQuest(Q10841_DeepInsideAteliaFortress.class.getSimpleName(), "34051-00.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34051-02.htm":
case "34051-03.htm":
{
htmltext = event;
break;
}
case "34051-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "34051-07.html":
{
giveItems(player, HARDENER_POUCH_R, 1);
addExpAndSp(player, 3631150845L, 8714700);
qs.exitQuest(QuestType.REPEATABLE, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "34051-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "34051-05.html";
}
else if (qs.isCond(2) && hasQuestItems(player, BLACK_ATELIA_POWDER))
{
htmltext = "34051-06.html";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, 1, 5, npc);
if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, BLACK_ATELIA_POWDER, 1, 1, 0.6, true))
{
qs.setCond(2, true);
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
The Enchanted Valley has changed, so it's very dangerous.<br>
I don't think you are supposed to be here yet. Come back when you get stronger.<br>
(Only characters above Lv. 100.)
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
All the fairies in the Enchanted Valley disappeared. No one's left.<br>
Oh, me? Well, I meant everyone but me disappeared. It's not like I was shunned by my race or anything. Isn't it strange? But that's not all.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-02.htm">"What else?"</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
I've been going around looking for other fairies, but I ran into some fairies that I had never seen before!<br>
It's not like I know everyone within our race, but I have seriously never seen them before.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-03.htm">"What do you mean?"</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fairy Mimyu:<br>
I think I ran into the Nymphs... I don't think they've ever come into the continent, but that certainly doesn't mean that they don't exist.<br>The <font color="LEVEL">Nymphs</font> are over there, but I ran into some trouble...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-04.htm">"What happened?"</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Fairy Mimyu:<br>
We can't communicate at all. They certainly look like fairies, but they even tried to attack me.<br>
Do you have any idea of how scared I was? I escaped as fast as I could.<br>
At least it looks like they can't come into the center here because of Timiniel's influence... So, are you going to help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-05.htm">"Alright."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
If the Nymphs are really fairies, I might be able to find out what happened in the Enchanted Valley with just a few clues. Please collect something that I could use as clues from the Nymphs.<br>
Please defeat the <font color="LEVEL">Nymph Rose, Nymph Lily, Nymph Tulip, Nymph Cosmos, and the Nymph Guardians</font> and bring the <font color="LEVEL">Nymph Stamens</font>. I'll need at least <font color="LEVEL">300</font> to find out anything from them. The more you bring, the better.<br>
I won't forget to reward you.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fairy Mimyu:<br>
What? This isn't enough.<br>
Please defeat the <font color="LEVEL">Nymph Rose, Nymph Lily, Nimph Tulip, Nymph Cosmos, and the Nymph Guardians</font> and bring at least <font color="LEVEL">300 Nymph Stamens</font>.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
Did you collect everything? This should be enough to find out some information. I believe the Nymphs are flower fairies. So they must leave something in the stamen. If I can investigate the stamen, I should be able to find out some information. Of course, the more you bring back, the more research I can do. What do you say?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-10.html">"I'm done for today."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-09.html">"I'll get some more."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
Wow! You collected all these? Great!<br>
I'll make sure to reward you for your efforts. <br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00823_DisappearedRaceNewFairy 30747-10.html">"Here you go."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Fairy Mimyu:<br>
You'll get more? Thank you!<br>
I was thinking this wasn't enough, but I didn't want to bother you.<br>
Well, I'll reward you as much as you help me!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fairy Mimyu:<br>
Thank you. This isn't that much, but I should be able to find out at least some information.<br>
Well, here's your reward. Also, if you have time, come back tomorrow to get more clues! I get clues and you get more rewards. Sounds great, right?
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Fairy Mimyu:<br>
If you have time, come back tomorrow to get more clues! I get clues and you get more rewards. Sounds great, right?<br>
(You can only undertake this quest once a day. It resets every day at 6:30 AM.)
</body></html>

View File

@@ -1,191 +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.Q00823_DisappearedRaceNewFairy;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Disappeared Race, New Fairy (00823)
* @URL https://l2wiki.com/Disappeared_Race,_New_Fairy
* @author Gigi
*/
public class Q00823_DisappearedRaceNewFairy extends Quest
{
// NPCs
private static final int MIMYU = 30747;
// Monsters
private static final int[] MONSTERS =
{
23566, // Nymph Rose
23567, // Nymph Rose
23568, // Nymph Lily
23569, // Nymph Lily
23570, // Nymph Tulip
23571, // Nymph Tulip
23572, // Nymph Cosmos
23573, // Nymph Cosmos
23578 // Nymph Guardian
};
// Item's
private static final int NYMPH_STAMEN = 46258;
private static final int MIMIUS_REWARD_BOX = 46259;
// Misc
private static final int MIN_LEVEL = 100;
public Q00823_DisappearedRaceNewFairy()
{
super(823);
addStartNpc(MIMYU);
addTalkId(MIMYU);
addKillId(MONSTERS);
registerQuestItems(NYMPH_STAMEN);
addCondMinLevel(MIN_LEVEL, "30747-00.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "30747-02.htm":
case "30747-03.htm":
case "30747-04.htm":
case "30747-09.html":
{
htmltext = event;
break;
}
case "30747-05.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30747-10.html":
{
if ((getQuestItemsCount(player, NYMPH_STAMEN) >= 300) && (getQuestItemsCount(player, NYMPH_STAMEN) < 600))
{
addExpAndSp(player, 3045319200L, 7308474);
giveItems(player, MIMIUS_REWARD_BOX, 1);
}
else if ((getQuestItemsCount(player, NYMPH_STAMEN) >= 600) && (getQuestItemsCount(player, NYMPH_STAMEN) < 900))
{
addExpAndSp(player, 6090638400L, 14617495);
giveItems(player, MIMIUS_REWARD_BOX, 2);
}
else if ((getQuestItemsCount(player, NYMPH_STAMEN) >= 900) && (getQuestItemsCount(player, NYMPH_STAMEN) < 1200))
{
addExpAndSp(player, 9135957600L, 21926243);
giveItems(player, MIMIUS_REWARD_BOX, 3);
}
else if ((getQuestItemsCount(player, NYMPH_STAMEN) >= 1200) && (getQuestItemsCount(player, NYMPH_STAMEN) < 1500))
{
addExpAndSp(player, 12181276800L, 29233986);
giveItems(player, MIMIUS_REWARD_BOX, 4);
}
else if ((getQuestItemsCount(player, NYMPH_STAMEN) >= 1500) && (getQuestItemsCount(player, NYMPH_STAMEN) < 1800))
{
addExpAndSp(player, 15226596000L, 36542370);
giveItems(player, MIMIUS_REWARD_BOX, 5);
}
else if (getQuestItemsCount(player, NYMPH_STAMEN) >= 1800)
{
addExpAndSp(player, 18271915200L, 43852486);
giveItems(player, MIMIUS_REWARD_BOX, 6);
}
qs.exitQuest(QuestType.DAILY, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "30747-11.html";
break;
}
qs.setState(State.CREATED);
}
case State.CREATED:
{
htmltext = "30747-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30747-06.html";
}
else if (qs.isCond(2) && (getQuestItemsCount(player, NYMPH_STAMEN) < 1800))
{
htmltext = "30747-07.html";
}
else
{
htmltext = "30747-08.html";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getCond() > 0) && (getQuestItemsCount(player, NYMPH_STAMEN) < 1800))
{
giveItems(player, NYMPH_STAMEN, 1);
if (getQuestItemsCount(player, NYMPH_STAMEN) == 300)
{
qs.setCond(2, true);
}
else
{
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
return super.onKill(npc, player, isSummon);
}
}

View File

@@ -1,6 +0,0 @@
<html><body>Mystic Tavern Owner Settlen:<br>
Welcome! Welcome to the Mystic Tavern, where you'll find great food, drinks, and stories!<br>
This place is a little out of th way, so we weren't sure how many people would actually visit us. But thank you for visiting us like this.<br>
Now I'll tell you about the things we've prepared. Hahaha!<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10297_GrandOpeningComeToOurPub 34180-02.htm">"What do you have?"</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Mystic Tavern Owner Settlen:<br>
No need to be so hasty. But of course, it's no fun to do all hte talk. How about you go around to meet everyone here?<br>
First, talk to my lovely daughter, <font color="LEVEL">Lollia</font>. A lot of things about our tavern got started thanks to her.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10297_GrandOpeningComeToOurPub 34180-03.htm">"Lollia?"</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Mystic Tavern Owner Settlen:<br>
Lollia is my only daughter. You should go talk to her while you are here. Hahaha.<br>
We had her very late. She's precious to us. She's also very smart and kind... It was Lollia's idea to start telling stories to our customers.<br>
Lollia's helping out a lot in the tavern, and she's also getting ready to meet new customers. Make sure to go to talk to her!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Mystic Tavern Owner Settlen:<br>
Lollia is very excited to meet new customers, so make sure to talk to her while you are here.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Mystic Tavern Owner Settlen:<br>
I'm not sure how you head about this place, but it's dangerous here.<br>
Come visit us again once you get stronger.<br>
(Only characters above Lv. 99.)
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Madame Lailly:<br>
Isn't Lupia cute?<br>
If someone wakes you up from your sweet dreams, come find me. I'll take you into the dream world again.<br>
Isn't our tavern great?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10297_GrandOpeningComeToOurPub 34181-02.html">"Yes, it is."</Button>
</body></html>

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