Some quest additions.

Contributed by hlwrave.
This commit is contained in:
MobiusDev
2016-02-11 22:55:43 +00:00
parent 9239dbfd4f
commit e78681a002
76 changed files with 1334 additions and 2 deletions

View File

@@ -49699,3 +49699,14 @@ INSERT INTO `spawnlist` VALUES
('Harnak Underground', 1, 22942, -111645, 180192, -13800, 0, 0, 61962, 60, 0, 0, 0), ('Harnak Underground', 1, 22942, -111645, 180192, -13800, 0, 0, 61962, 60, 0, 0, 0),
('Harnak Underground', 1, 22939, -111852, 180740, -13800, 0, 0, 59692, 60, 0, 0, 0), ('Harnak Underground', 1, 22939, -111852, 180740, -13800, 0, 0, 59692, 60, 0, 0, 0),
('Harnak Underground', 1, 33323, -111797, 180482, -13784, 0, 0, 0, 60, 0, 0, 0); ('Harnak Underground', 1, 33323, -111797, 180482, -13784, 0, 0, 0, 60, 0, 0, 0);
-- Parnassus
INSERT INTO `spawnlist` VALUES
('Parnassus', 1, 33044, 149369, 174231, -896, 0, 0, 48000, 60, 0, 0, 0), --Fioren
('Parnassus', 1, 33523, 148296, 172792, -976, 0, 0, 48000, 60, 0, 0, 0), -- Crystal Prison Entrance
('Parnassus', 1, 33522, 150463, 172791, -952, 0, 0, 48000, 60, 0, 0, 0), -- Entrance Portal to Crystal Caverns
('Parnassus', 1, 33569, 149806, 173646, -952, 0, 0, 48000, 60, 0, 0, 0), -- Hermuncus Minion GK
('Parnassus', 1, 32359, 148328, 173880, -980, 0, 0, 48000, 60, 0, 0, 0); -- Lahm Blacksmith of Power
-- Isle of The Souls Harbor
INSERT INTO `spawnlist` VALUES ('Stronghold III', 1, 33796, -85919, 37167, -2048, 0, 0, 48000, 60, 0, 0, 0); -- Verda

View File

@@ -0,0 +1,6 @@
<html><body>Fioren:<br>
Not only was Beleth and his adherents, so now threatens the world is also the Goddess of Destruction. In these difficult times we must look for the way of salvation in an alliance with the gods. Hopefully, Eva will not leave you ...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_playMovie 106">Ask about the incident at the Crystal Caverns</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 773">Exchange Certificate of Hell on Items</button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Portal to Crystal Caverns:<br>
You can enter to Crystal Caverns.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_%enter%">Enter</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Crystal prison teleporter:<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_request_Baylor">To Baylor</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_request_vallock">To Valluk</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Aden's Wizard Jenna:<br>
That you defied Lindvior?<br>
(The award is given only to members of the detachment, fought with Lindvior.)
</body></html>

View File

@@ -2,7 +2,7 @@
We completed the force field just in time for the Altar of Sacrifice, but a Wind Dragon appears out of nowhere!<br> We completed the force field just in time for the Altar of Sacrifice, but a Wind Dragon appears out of nowhere!<br>
Have you seen a dragon? You wouldn't believe your eyes!<br> Have you seen a dragon? You wouldn't believe your eyes!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">"Let me see Lindvior's weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">"Let me see Lindvior's weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"I heard I can get rewarded for fighting Lindvior."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 2">"I heard I can get rewarded for fighting Lindvior."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"I heard that Lindvior's Scales are a thing you accept in exchange for items?"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 2046">"I heard that Lindvior's Scales are a thing you accept in exchange for items?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

12
trunk/dist/game/data/multisell/2046.xml vendored Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
<npcs>
<npc>33872</npc> <!-- Aden's Wizard Jenna -->
</npcs>
<item>
<!-- Lindvior's Scale -->
<ingredient count="100" id="37495" />
<!-- Riding Manual: Lyn Draco -->
<production count="1" id="37496" />
</item>
</list>

138
trunk/dist/game/data/multisell/773.xml vendored Normal file
View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
<npcs>
<npc>33044</npc> <!-- Fioren -->
</npcs>
<item>
<!-- Certificate of Hell -->
<ingredient count="587" id="30387" />
<!-- Recipe: Specter Thrower (60%) -->
<production count="1" id="35426" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Stormer (60%) -->
<production count="1" id="35425" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Retributer (60%) -->
<production count="1" id="35430" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Fighter (60%) -->
<production count="1" id="35424" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Caster (60%) -->
<production count="1" id="35429" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Avenger (60%) -->
<production count="1" id="35423" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Shaper (60%) -->
<production count="1" id="35420" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Buster (60%) -->
<production count="1" id="35428" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Cutter (60%) -->
<production count="1" id="35421" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="587" id="30387" />
<!-- Recipe: Specter Shooter (60%) -->
<production count="1" id="35427" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="741" id="30387" />
<!-- Recipe: Specter Slasher (60%) -->
<production count="1" id="35422" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="59" id="30387" />
<!-- Specter Thrower Fragment -->
<production count="1" id="35302" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Stormer Fragment -->
<production count="1" id="35301" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Retributer Fragment -->
<production count="1" id="35306" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Fighter Fragment -->
<production count="1" id="35300" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Caster Fragment -->
<production count="1" id="35305" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Avenger Fragment -->
<production count="1" id="35299" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Shaper Fragment -->
<production count="1" id="35296" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Buster Fragment -->
<production count="1" id="35304" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Cutter Fragment -->
<production count="1" id="35297" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="59" id="30387" />
<!-- Specter Shooter Fragment -->
<production count="1" id="35303" />
</item>
<item>
<!-- Certificate of Hell -->
<ingredient count="74" id="30387" />
<!-- Specter Slasher Fragment -->
<production count="1" id="35298" />
</item>
</list>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The danger posed by Shilen, gradually approaching. If the Queen of Death wake up, I can not imagine to what tip the chaos of this world. And the stronger the influence of Shilen, the stronger her children, dragons. Amid the chaos, the Crystal Maze began to appear powerful demons. I do not know what they are woven intrigue, but there is no reason to doubt that they need to stop.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00180_InfernalFlamesBurningInCrystalPrison 33044-04.htm">Ask about Demons</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The world is caught up in evil and cruelty. We have to constantly train and temper ourselves to survive. I see you are still not ready to fully prepared to meet whatever fate has prepared for you.<br>
(This quest is available after the 97th level.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
We must guard against not only the Goddess of Death. Also represent a threat to "Children of Shilen" and the hordes of demons from hell present themselves here. Need your help is growing. Please do not forget about the development and cultivation.<br>
(Quest is completed.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The Crystal Maze is a kind of prison for those who came not to the liking of Fafurionu. There were these poor horrible torture. However, as we know, has long been Fafurion escaped from these places. Now, Maze became a haven for demons, which has caused Belef. Some of these demons, by the way, supports Shilen in its desire to destroy the world.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00180_InfernalFlamesBurningInCrystalPrison 33044-05.htm">Listen more</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
Now Crystal Caverns is in the hands caused by demons and Belefom Baylor, who directs. I think they're trying to get by with Fafuriona Fanariona Gems, located in the depths of the Crystal Caverns. And demons and minions Shilen represent a huge threat to us, but if they can awaken Fanarion ... Oh, with this disaster, I think we will not cope. We must stop as soon as Baylor and his demons. Please help me.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00180_InfernalFlamesBurningInCrystalPrison 33044-06.html">Agree</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
I ask you to liquidate the Guardian Baylor, located in the depth of the Crystal Caverns, and then bring it to me signs. We will be able to release Parnas from the influence of demons only if the conduct of these signs cleansing ritual. Know the demon Baylor - not a weak opponent, so bring on the battle with him as much as possible allies.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
I ask you to liquidate the Guardian Baylor, located in the depth of the Crystal Caverns, and then bring it to me signs. We will be able to release Parnas from the influence of demons only if the conduct of these signs cleansing ritual. Know the demon Baylor - not a weak opponent, so bring on the battle with him as much as possible allies.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
So, you came, killing Baylor, along with his henchmen. This is good. Now we clean up Parnassus, having brought by ritual on your characters. We mzgonim of these places are evil spirits and demons.<br>
For his feats you deserve a reward. Here, take God be with you the blessing of Eve...
</body></html>

View File

@@ -0,0 +1,122 @@
/*
* 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.Q00180_InfernalFlamesBurningInCrystalPrison;
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.util.Util;
/**
* @author hlwrave
* @URL https://l2wiki.com/Infernal_Flames_Burning_in_Crystal_Prison
*/
public class Q00180_InfernalFlamesBurningInCrystalPrison extends Quest
{
// Npc
public static final int FIOREN = 33044;
// Monster
public static final int BAYLOR = 29213;
// Misc
public static final int MIN_LEVEL = 97;
// Quest Item
private static final int BELETH_MARK = 17591;
// Item
private static final int ENCHANT_SROLL_R = 22428;
public Q00180_InfernalFlamesBurningInCrystalPrison()
{
super(180, Q00180_InfernalFlamesBurningInCrystalPrison.class.getSimpleName(), "Infernal Flames Burning In Crystal Prison");
addStartNpc(FIOREN);
addTalkId(FIOREN);
registerQuestItems(BELETH_MARK);
addKillId(BAYLOR);
addCondMinLevel(MIN_LEVEL, "33044-02.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
if ("33044-06.html".equals(event))
{
qs.startQuest();
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "33044-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "33044-07.html";
}
else if (qs.isCond(2))
{
takeItems(player, BELETH_MARK, -1);
giveItems(player, ENCHANT_SROLL_R, 1);
addExpAndSp(player, 14000000, 6400000);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = "33044-08.html";
}
}
else if (qs.isCompleted())
{
htmltext = "33044-03.html";
}
return htmltext;
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && Util.checkIfInRange(1500, npc, player, false))
{
giveItems(player, BELETH_MARK, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.setCond(2, true);
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
Situation became even more unfavorable. We believed that after the destruction of Baylor everything will be decided by itself…. However, new problem, it seems, arose. And consists it before the fact that the gem Of Fanarion concealed before the crystal labyrinth easily can pass beside the hands Of Beleth and its demons. If this happens, then it is necessary at the point of us tightly. Indeed Beleth - extremely powerful demon. However, first at the point of you one must battle not with it, but with its myrmidon.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00181_DevilsStrikeBackAdventOfBalok 33044-04.htm">To ask about the new devil</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
Peace of before the evil and the cruelty. Is necessary to be trained and to harden itself, in order to survive. You, I see, it is not still ready to fully armed meet everything that the fate prepared for you.<br>
(This Quest is accessible after reaching 97 of level and fulfillment of Quest "Flame Hell in the Crystal Prison")
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
We must be warned not only the goddess of death. They also present threat "Children Of Shillen" and the horde of the demons, which appeared here from hell. The need at the point of your aid all grows. I please not to forget you about the development and the self-perfection.<br>
(Quest is already completed.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
New demon they call Balok. It appeared before the labyrinth immediately after the loss Of Baylor. I, until now, reflect above the fact, who could call him. Certainly, most likely this made Beleth... However, that to sense to consider above this? One should as soon as possible get rid besides this Balok!<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00181_DevilsStrikeBackAdventOfBalok 33044-05.htm">To listen to further</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Fioren:<br>
Only you upset the plans Of Baylor, as appeared new threat before the person Of Balok. Unhappy Parnassus How much still the invasions of demons will be able it to survive?<br>
Oh, great hero, whose might and bravery does not know boundaries… Can I turn down you with the request to destroy the demon Of Balok?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00181_DevilsStrikeBackAdventOfBalok 33044-06.html">To agree</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
It is clear that Balok where is stronger and more dangerous than Baylor, with which you battled earlier. But I believe that for you there is nothing impossible. Indeed you already proved that you do not surrender under no circumstances. Well, then step. But I will meanwhile pray Eva about your victory. By the way After killing Balok, bring, I please, its sign.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
It is clear that Balok where is stronger and more dangerous than Baylor, with which you battled earlier. But I believe that for you there is nothing impossible. Indeed you already proved that you do not surrender under no circumstances. Well, then step. But I will meanwhile pray Eva about your victory. By the way After killing Balok, bring, I please, its sign.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
I greatly worried about you. It does mean, you did destroy Balok and its demons?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00181_DevilsStrikeBackAdventOfBalok reward">To describe about the destruction Of Balok</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
Thanks! Yes stores you Evan!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
You selected the roll of the modification of the armors of rank R, 2 pieces. Here, take, if you please.<br1>
Yes stores you Evan!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
You selected sack with the amplifier of rank R, 2 pieces. Here, take, if you please.<br1>
Yes stores you Evan!
</body></html>

View File

@@ -0,0 +1,155 @@
/*
* 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.Q00181_DevilsStrikeBackAdventOfBalok;
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.util.Util;
import com.l2jmobius.util.Rnd;
/**
* @hlwrave https://l2wiki.com/Devils_Strike_Back,_Advent_of_Balok
*/
public class Q00181_DevilsStrikeBackAdventOfBalok extends Quest
{
// Npc
private static final int FIOREN = 33044;
// Monster
private static final int BALOK = 29218;
// Items
private static final int CONTRACT = 17592;
private static final int EAR = 17527;
private static final int EWR = 17526;
private static final int POUCH = 34861;
// Misc
public static final int MIN_LEVEL = 97;
public Q00181_DevilsStrikeBackAdventOfBalok()
{
super(181, Q00181_DevilsStrikeBackAdventOfBalok.class.getSimpleName(), "Devils Strike Back Advent Of Balok");
addStartNpc(FIOREN);
addTalkId(FIOREN);
addKillId(BALOK);
registerQuestItems(CONTRACT);
addCondMinLevel(MIN_LEVEL, "33044-02.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "33044-06.html":
{
qs.startQuest();
break;
}
case "reward":
{
addExpAndSp(player, 886750000, 414855000);
giveAdena(player, 37128000, true);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.exitQuest(QuestType.ONE_TIME, true);
switch (Rnd.get(2))
{
case 0:
{
giveItems(player, EWR, 2);
return "33044-09.html";
}
case 1:
{
giveItems(player, EAR, 2);
return "33044-10.html";
}
case 2:
{
giveItems(player, POUCH, 2);
return "33044-11.html";
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case FIOREN:
{
if (qs.isCreated())
{
htmltext = "33044-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "33044-07.html";
}
else if (qs.isCond(2))
{
htmltext = "33044-08.html";
}
}
else if (qs.isCompleted())
{
htmltext = "33044-03.html";
}
break;
}
}
return htmltext;
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
giveItems(player, CONTRACT, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.setCond(2, true);
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
I ask you to listen to me. Received a request from the Ivory Tower, and I think that you are best suited for this job.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00471_BreakingThroughTheEmeraldSquare 33044-03.htm">Learn about the request</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
You have not inspire me enough confidence. I can not charge you a job. Someday you will be able to help us, but that time has not come yet.<br>
(This quest is available after the 97th level.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The Ivory Tower of great interest to the monsters of Beleth Crystal Maze. Was asked to destroy appeared in Pearlescent Hall Mignon Beleth, jailers Emambifi Hell, and get proof of his death. As you look at it? Will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00471_BreakingThroughTheEmeraldSquare 33044-04.html">Agree.</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy jailer Hell Emambifi, Mignon Beleth designed to Pearl Hall.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy jailer Hell Emambifi, Mignon Beleth designed to Pearl Hall.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
How is it? You destroyed henchmen Beleth in Pearlescent Hall?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00471_BreakingThroughTheEmeraldSquare 33044-07.html">Report on the destruction</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
I was not wrong when you choose for the job. Here is the promised reward. If you find the time, come back tomorrow. I will have one more request for you.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
If you find the time, come back tomorrow. I will have one more request for you.<br>
(This activity is available once a day. Quest update occurs daily at 6:30 am.)
</body></html>

View File

@@ -0,0 +1,124 @@
/*
* 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.Q00471_BreakingThroughTheEmeraldSquare;
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.util.Util;
/**
* @author hlwrave
* @URL https://l2wiki.com/Breaking_through_the_Emerald_Square
*/
public class Q00471_BreakingThroughTheEmeraldSquare extends Quest
{
// Npc
public static final int FIOREN = 33044;
// Monster
public static final int EMABIFI = 25881;
// Misc
public static final int MIN_LEVEL = 97;
// Items
public static final int CERTIFICATE = 30387;
public Q00471_BreakingThroughTheEmeraldSquare()
{
super(471, Q00471_BreakingThroughTheEmeraldSquare.class.getSimpleName(), "Breaking Through The Emerald Square");
addStartNpc(FIOREN);
addTalkId(FIOREN);
addKillId(EMABIFI);
addCondMinLevel(MIN_LEVEL, "33044-02.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "33044-04.html":
{
qs.startQuest();
break;
}
case "33044-07.html":
{
giveItems(player, CERTIFICATE, 8);
qs.exitQuest(QuestType.DAILY, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "33044-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "33044-05.html";
}
else if (qs.isCond(2))
{
htmltext = "33044-06.html";
}
}
else if (qs.isCompleted())
{
htmltext = "33044-08.html";
}
return htmltext;
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
qs.setCond(2, true);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
I ask you to listen to me. Received a request from the Ivory Tower, and I think that you are best suited for this job.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00472_ChallengeSteamCorridor 33044-03.htm">Learn about the request</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
You have not inspire me enough confidence. I can not charge you a job. Someday you will be able to help us, but that time has not come yet.<br>
(This quest is available after the 97th level.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The Ivory Tower of great interest to the monsters of Beleth Crystal Maze. Was asked to destroy appeared in Fire Corridor Mignon Beleth, the Fire Knight Kechi, and bring proof of his death. As you look at it? Will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00472_ChallengeSteamCorridor 33044-04.html">Agree.</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy the Fire Knight Kechi, Mignon Beleth designed to Fire Corridor.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy the Fire Knight Kechi, Mignon Beleth designed to Fire Corridor.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
How is it? You destroyed henchmen Beleth in the Corridor of Fire?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00472_ChallengeSteamCorridor 33044-07.html">Report about the killing</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
I was not wrong when you choose for the job. Here is the promised reward. If you find the time, come back tomorrow. I will have one more request for you.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
If you find the time, come back tomorrow. I will have one more request for you.<br>
(This activity is available once a day. Quest update occurs daily at 6:30 am.)
</body></html>

View File

@@ -0,0 +1,125 @@
/*
* 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.Q00472_ChallengeSteamCorridor;
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.util.Util;
/**
* @author hlwrave
* @URL https://l2wiki.com/Challenge,_Steam_Corridor
*/
public class Q00472_ChallengeSteamCorridor extends Quest
{
// Npc
public static final int FIOREN = 33044;
// Monster
public static final int KECHI = 25532;
// Mis
public static final int MIN_LEVEL = 97;
// Item
public static final int CERTIFICATE = 30387;
public Q00472_ChallengeSteamCorridor()
{
super(472, Q00472_ChallengeSteamCorridor.class.getSimpleName(), "Challenge Steam Corridor");
addStartNpc(FIOREN);
addTalkId(FIOREN);
addKillId(KECHI);
addCondMinLevel(MIN_LEVEL, "33044-02.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "33044-04.html":
{
qs.startQuest();
break;
}
case "33044-07.html":
{
giveItems(player, CERTIFICATE, 8);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.exitQuest(QuestType.DAILY, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "33044-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "33044-05.html";
}
else if (qs.isCond(2))
{
htmltext = "33044-06.html";
}
}
else if (qs.isCompleted())
{
htmltext = "33044-08.html";
}
return htmltext;
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
qs.setCond(2, true);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
I ask you to listen to me. Received a request from the Ivory Tower, and I think that you are best suited for this job.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00473_InTheCoralGarden 33044-03.htm">Ask about quest</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
You have not inspire me enough confidence. I can not charge you a job. Someday you will be able to help us, but that time has not come yet.<br>
(This quest is available after the 97th level.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
The Ivory Tower of great interest to the monsters of Beleth Crystal Maze. Was asked to destroy appeared in Underwater Garden Mignon Beleth, the Supreme Judge, Michael, and bring proof of his death. As you look at it? Will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00473_InTheCoralGarden 33044-04.html">Agree.</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy the Supreme Judge Michael, Mignon Beleth designed to underwater garden.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
All right. I repeat. Destroy the Supreme Judge Michael, Mignon Beleth designed to underwater garden.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
How is it? You destroyed servants Beleth in Underwater Garden?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00473_InTheCoralGarden 33044-07.html">Say about the killling</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Fioren:<br>
I was not wrong when you choose for the job. Here is the promised reward. If you find the time, come back tomorrow. I will have one more request for you.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Fioren:<br>
If you find the time, come back tomorrow. I will have one more request for you.<br>
(This activity is available once a day. Quest update occurs daily at 6:30 am.)
</body></html>

View File

@@ -0,0 +1,124 @@
/*
* 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.Q00473_InTheCoralGarden;
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.util.Util;
/**
* @author hlwrave
* @URL: https://l2wiki.com/In_the_Coral_Garden
*/
public class Q00473_InTheCoralGarden extends Quest
{
// Npc
public static final int FIOREN = 33044;
// Monster
public static final int MICHAEL = 25799;
// Misc
public static final int MIN_LEVEL = 97;
// Item
public static final int CERTIFICATE = 30387;
public Q00473_InTheCoralGarden()
{
super(473, Q00473_InTheCoralGarden.class.getSimpleName(), "In The Coral Garden");
addStartNpc(FIOREN);
addTalkId(FIOREN);
addKillId(MICHAEL);
addCondMinLevel(MIN_LEVEL, "33044-02.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "33044-04.html":
{
qs.startQuest();
break;
}
case "33044-07.html":
{
giveItems(player, CERTIFICATE, 8);
qs.exitQuest(QuestType.DAILY, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "33044-01.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "33044-05.html";
}
else if (qs.isCond(2))
{
htmltext = "33044-06.html";
}
}
else if (qs.isCompleted())
{
htmltext = "33044-08.html";
}
return htmltext;
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
qs.setCond(2, true);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, false);
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,144 @@
/*
* 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.Q10386_MysteriousJourney;
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;
/**
* @author hlwrave
* @URL https://l2wiki.com/Mysterious_Journey
*/
public class Q10386_MysteriousJourney extends Quest
{
// Npcs
private static final int TOPOI = 30499;
private static final int HESET = 33780;
private static final int BERNA = 33796;
// Misc
public static final int MIN_LEVEL = 93;
public Q10386_MysteriousJourney()
{
super(10386, Q10386_MysteriousJourney.class.getSimpleName(), "Mysterious Journey");
addStartNpc(TOPOI);
addTalkId(TOPOI, HESET, BERNA);
addCondMinLevel(MIN_LEVEL, "nolevel.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "accepted.html":
{
qs.startQuest();
break;
}
case "acceptedHeset.html":
{
qs.setCond(3);
break;
}
case "acceptedBerma.html":
{
qs.setCond(4);
break;
}
case "endquest.html":
{
addExpAndSp(player, 27244350, 2724435);
giveAdena(player, 58707, true);
giveItems(player, 17526, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.exitQuest(QuestType.ONE_TIME, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case TOPOI:
{
if (qs.isCreated())
{
htmltext = "start.htm";
}
else if (qs.isCompleted())
{
htmltext = "completed.html";
}
break;
}
case HESET:
{
if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "hesetCond1.html";
}
else if (qs.isCond(4))
{
htmltext = "collected.html";
}
}
else if (qs.isCompleted())
{
htmltext = "completed.html";
}
break;
}
case BERNA:
{
if (qs.isStarted())
{
if (qs.isCond(3))
{
htmltext = "berna.html";
}
}
else if (qs.isCompleted())
{
htmltext = "completed.html";
}
break;
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>tapas:<br>
Alas, but I do not know about that, they say that the Heceta Island shower knows something about it, but not the fact that tell you something, try something there, good luck!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Bern:<br>
Go with God .. oh .. this Heceta
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Heceta:<br>
Bern is located at the Altar Normil, you must be met for it, so it knows everything, hehe ..
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Bern:<br>
Oh, let guess you sent me to this wonderful Heceta? All he knows only very few people trust you ... I know this will not ask for much, tell him to "cats come in the summer," and he will answer all your questions ..<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10386_MysteriousJourney acceptedBerma.html">"Thank you!"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Heceta:<br>
What people looked to us .. you want me to say something ...?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10386_MysteriousJourney endquest.html">"Cats come in the summer!"</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>
(Quest is already completed.)<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Heceta:<br><br>
I agree with that ... now listen ...<br>
<font color="LEVEL"> 30 minutes later </font><br>
I hope everything is clear, go with God, here's a reward for what you do not tell anyone our secret word.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Heceta:<br>
What? Sorry but you just tell me? You do not know ha ha! I do not quite understand, bring a translation Bernie, I beg of you and waste my precious time.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10386_MysteriousJourney acceptedHeset.html">"Where is she?"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>
You have not inspire me enough confidence. I can not charge you a job. Someday you will be able to help us, but that time has not come yet.<br>
(This quest is available after the 93th level.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>tapas:<br>
No not even tell you ... come .. because you have something important to know, and it's something related to the norm! Am I right oink-oink?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10386_MysteriousJourney accepted.html">"Yes, it's awesome!"</button>
</body></html>

View File

@@ -0,0 +1,116 @@
/*
* 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.Q10453_StoppingTheWindDragon;
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;
/**
* @author hlwrave
*/
public class Q10453_StoppingTheWindDragon extends Quest
{
// NPC
private static final int JENNA = 33872;
// Monsters
private static final int LINDVIOR = 29240;
// Items
private static final int LINDVIOR_SLAYERS_HELMET = 37497;
// Misc
private static final int MIN_LEVEL = 95;
public Q10453_StoppingTheWindDragon()
{
super(10453, Q10453_StoppingTheWindDragon.class.getSimpleName(), "Stopping The Wind Dragon");
addStartNpc(JENNA);
addTalkId(JENNA);
addKillId(LINDVIOR);
addCondMinLevel(MIN_LEVEL, "adens_wizard_jenna_q10453_0.html");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "adens_wizard_jenna_q10453_2.html":
{
qs.startQuest();
break;
}
case "adens_wizard_jenna_q10453_5.html":
{
addExpAndSp(player, 2147483500, 37047780);
giveItems(player, LINDVIOR_SLAYERS_HELMET, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = "adens_wizard_jenna_q10453_1.htm";
}
else if (qs.isStarted())
{
if (qs.isCond(1))
{
htmltext = "adens_wizard_jenna_q10453_3.html";
}
else if (qs.isCond(2))
{
htmltext = "adens_wizard_jenna_q10453_4.html";
}
}
else if (qs.isCompleted())
{
htmltext = "adens_wizard_jenna_q10453_6.html";
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
qs.setCond(2);
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Aden's Wizard Jenna:<br>
You can not cope with the Dragon Lindvior. Please, go away.<br>
(This quest is available after reaching level 99. or Above)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find off text.--><br>
We collect an army of warriors to slay the dragon of the wind.<br>
Are you ready to fight with the Dragon Lindvior?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10453_StoppingTheWindDragon adens_wizard_jenna_q10453_2.html">"I am ready to join the battle!"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find off text--><br>
Excellent! Wish you luck.<br>
After slay the dragon, come back to me for a reward.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find off text.--><br>
Are you here now? Collect army soldiers and battle finally this dragon!
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find of text.--><br>
Oh, you're alive? I am very proud of you and your soldiers that you were able to slay the dragon.<br>
You deserve my reward.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10453_StoppingTheWindDragon adens_wizard_jenna_q10453_5.html">Get reward!</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find off text.--><br>
Keep reward. Now all the soldiers will know that you are a brave killer dragons!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Aden's Wizard Jenna:
<!--TODO: Find off text.--><br>
You already told me that you are a brave warrior and got my reward.
</body></html>

View File

@@ -69,6 +69,8 @@ import quests.Q00143_FallenAngelRequestOfDusk.Q00143_FallenAngelRequestOfDusk;
import quests.Q00144_PailakaInjuredDragon.Q00144_PailakaInjuredDragon; import quests.Q00144_PailakaInjuredDragon.Q00144_PailakaInjuredDragon;
import quests.Q00146_TheZeroHour.Q00146_TheZeroHour; import quests.Q00146_TheZeroHour.Q00146_TheZeroHour;
import quests.Q00177_SplitDestiny.Q00177_SplitDestiny; import quests.Q00177_SplitDestiny.Q00177_SplitDestiny;
import quests.Q00180_InfernalFlamesBurningInCrystalPrison.Q00180_InfernalFlamesBurningInCrystalPrison;
import quests.Q00181_DevilsStrikeBackAdventOfBalok.Q00181_DevilsStrikeBackAdventOfBalok;
import quests.Q00183_RelicExploration.Q00183_RelicExploration; import quests.Q00183_RelicExploration.Q00183_RelicExploration;
import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion; import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation; import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
@@ -125,6 +127,9 @@ import quests.Q00457_LostAndFound.Q00457_LostAndFound;
import quests.Q00458_PerfectForm.Q00458_PerfectForm; import quests.Q00458_PerfectForm.Q00458_PerfectForm;
import quests.Q00463_IMustBeaGenius.Q00463_IMustBeaGenius; import quests.Q00463_IMustBeaGenius.Q00463_IMustBeaGenius;
import quests.Q00464_Oath.Q00464_Oath; import quests.Q00464_Oath.Q00464_Oath;
import quests.Q00471_BreakingThroughTheEmeraldSquare.Q00471_BreakingThroughTheEmeraldSquare;
import quests.Q00472_ChallengeSteamCorridor.Q00472_ChallengeSteamCorridor;
import quests.Q00473_InTheCoralGarden.Q00473_InTheCoralGarden;
import quests.Q00494_IncarnationOfGreedZellakaGroup.Q00494_IncarnationOfGreedZellakaGroup; import quests.Q00494_IncarnationOfGreedZellakaGroup.Q00494_IncarnationOfGreedZellakaGroup;
import quests.Q00495_IncarnationOfJealousyPellineGroup.Q00495_IncarnationOfJealousyPellineGroup; import quests.Q00495_IncarnationOfJealousyPellineGroup.Q00495_IncarnationOfJealousyPellineGroup;
import quests.Q00496_IncarnationOfGluttonyKaliosGroup.Q00496_IncarnationOfGluttonyKaliosGroup; import quests.Q00496_IncarnationOfGluttonyKaliosGroup.Q00496_IncarnationOfGluttonyKaliosGroup;
@@ -231,6 +236,7 @@ import quests.Q10381_ToTheSeedOfHellfire.Q10381_ToTheSeedOfHellfire;
import quests.Q10382_DayOfLiberation.Q10382_DayOfLiberation; import quests.Q10382_DayOfLiberation.Q10382_DayOfLiberation;
import quests.Q10383_FergasonsOffer.Q10383_FergasonsOffer; import quests.Q10383_FergasonsOffer.Q10383_FergasonsOffer;
import quests.Q10384_AnAudienceWithTauti.Q10384_AnAudienceWithTauti; import quests.Q10384_AnAudienceWithTauti.Q10384_AnAudienceWithTauti;
import quests.Q10386_MysteriousJourney.Q10386_MysteriousJourney;
import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor; import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor;
import quests.Q10389_TheVoiceOfAuthority.Q10389_TheVoiceOfAuthority; import quests.Q10389_TheVoiceOfAuthority.Q10389_TheVoiceOfAuthority;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter; import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
@@ -242,6 +248,7 @@ import quests.Q10408_KekropusLetter_TheSwampOfScream.Q10408_KekropusLetter_TheSw
import quests.Q10411_KekropusLetter_TheForestOfTheDead.Q10411_KekropusLetter_TheForestOfTheDead; import quests.Q10411_KekropusLetter_TheForestOfTheDead.Q10411_KekropusLetter_TheForestOfTheDead;
import quests.Q10414_KekropusLetter_WithCourage.Q10414_KekropusLetter_WithCourage; import quests.Q10414_KekropusLetter_WithCourage.Q10414_KekropusLetter_WithCourage;
import quests.Q10415_KekropusLetter_WithWisdom.Q10415_KekropusLetter_WithWisdom; import quests.Q10415_KekropusLetter_WithWisdom.Q10415_KekropusLetter_WithWisdom;
import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10501_ZakenEmbroideredSoulCloak.Q10501_ZakenEmbroideredSoulCloak; import quests.Q10501_ZakenEmbroideredSoulCloak.Q10501_ZakenEmbroideredSoulCloak;
import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak; import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak;
import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak; import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak;
@@ -335,6 +342,8 @@ final class QuestMasterHandler
Q00144_PailakaInjuredDragon.class, Q00144_PailakaInjuredDragon.class,
Q00146_TheZeroHour.class, Q00146_TheZeroHour.class,
Q00177_SplitDestiny.class, Q00177_SplitDestiny.class,
Q00180_InfernalFlamesBurningInCrystalPrison.class,
Q00181_DevilsStrikeBackAdventOfBalok.class,
Q00183_RelicExploration.class, Q00183_RelicExploration.class,
Q00184_ArtOfPersuasion.class, Q00184_ArtOfPersuasion.class,
Q00185_NikolasCooperation.class, Q00185_NikolasCooperation.class,
@@ -391,6 +400,9 @@ final class QuestMasterHandler
Q00458_PerfectForm.class, Q00458_PerfectForm.class,
Q00463_IMustBeaGenius.class, Q00463_IMustBeaGenius.class,
Q00464_Oath.class, Q00464_Oath.class,
Q00471_BreakingThroughTheEmeraldSquare.class,
Q00472_ChallengeSteamCorridor.class,
Q00473_InTheCoralGarden.class,
Q00494_IncarnationOfGreedZellakaGroup.class, Q00494_IncarnationOfGreedZellakaGroup.class,
Q00495_IncarnationOfJealousyPellineGroup.class, Q00495_IncarnationOfJealousyPellineGroup.class,
Q00496_IncarnationOfGluttonyKaliosGroup.class, Q00496_IncarnationOfGluttonyKaliosGroup.class,
@@ -497,6 +509,7 @@ final class QuestMasterHandler
Q10382_DayOfLiberation.class, Q10382_DayOfLiberation.class,
Q10383_FergasonsOffer.class, Q10383_FergasonsOffer.class,
Q10384_AnAudienceWithTauti.class, Q10384_AnAudienceWithTauti.class,
Q10386_MysteriousJourney.class,
Q10388_ConspiracyBehindDoor.class, Q10388_ConspiracyBehindDoor.class,
Q10389_TheVoiceOfAuthority.class, Q10389_TheVoiceOfAuthority.class,
Q10390_KekropusLetter.class, Q10390_KekropusLetter.class,
@@ -508,6 +521,7 @@ final class QuestMasterHandler
Q10411_KekropusLetter_TheForestOfTheDead.class, Q10411_KekropusLetter_TheForestOfTheDead.class,
Q10414_KekropusLetter_WithCourage.class, Q10414_KekropusLetter_WithCourage.class,
Q10415_KekropusLetter_WithWisdom.class, Q10415_KekropusLetter_WithWisdom.class,
Q10453_StoppingTheWindDragon.class,
Q10501_ZakenEmbroideredSoulCloak.class, Q10501_ZakenEmbroideredSoulCloak.class,
Q10502_FreyaEmbroideredSoulCloak.class, Q10502_FreyaEmbroideredSoulCloak.class,
Q10503_FrintezzaEmbroideredSoulCloak.class, Q10503_FrintezzaEmbroideredSoulCloak.class,