Addition of quest 10457, 10873, 10876 and 10879.

Contributed by Dmitri.
This commit is contained in:
MobiusDevelopment 2020-03-27 12:34:29 +00:00
parent 774bd380da
commit bbb4535a0a
246 changed files with 4892 additions and 897 deletions

View File

@ -17,7 +17,6 @@
10352 Legacy of Cruma Tower 10352 Legacy of Cruma Tower
10357 Altar of Blood that Awakens Destruction 10357 Altar of Blood that Awakens Destruction
10456 Operation: Rescue 10456 Operation: Rescue
10457 Kefensis' Illusion
10458 To the Desert Quarry 10458 To the Desert Quarry
10463 The Soul of a Sword 10463 The Soul of a Sword
10506 Paddy's Request 10506 Paddy's Request

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.<br>
(Only characters with Lv. 99+ and Complete Quest: Elikia's Letter and Blackbird Clan amity level 4 and above.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
Hello Hunter. Have you heard of the rumors that are circulating here?<br>
Truth seeker Devian, who remains on Hell Island, asks to investigate the massive changes that have occurred in the Lost Hill area<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10457_KefensisIllusion 31590-02.htm">keep going</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
the changes in the lost hill are too obvious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-03.htm">"Really?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
To help her, you need to go to the Hill and hunt for monsters.<br>
You will also learn from your own experience what Desert Thirst is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-04.htm">Ask about the agreement</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Have you eliminated the Viper Fish, Oasis Mirage?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-07.html">"I figured out Viper Fish"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Well done. Good job.<br>
If something else is needed, we will contact you for help.
</body></html>

View File

@ -0,0 +1,234 @@
/*
* 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.Q10457_KefensisIllusion;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Kefensis' Illusion (10457)
* @URL https://l2wiki.com/Kefensis%27_Illusion
* @author Dmitri
*/
public class Q10457_KefensisIllusion extends Quest
{
// NPC
private static final int DEVIANNE = 31590;
// Monsters
private static final int VIPER = 23389;
private static final int SMAUG = 23384;
private static final int LUNATIKAN = 23385;
private static final int JABBERWOK = 23386;
private static final int KANZAROTH = 23387;
private static final int KANDILOTH = 23388;
private static final int GARION = 23395;
private static final int GARION_NETI = 23396;
private static final int DESERT_WENDIGO = 23397;
private static final int KORAZA = 23398;
private static final int BEND_BEETLE = 23399;
// Skill
private static final SkillHolder DESERT_THIRST = new SkillHolder(16697, 1);
// Misc
private static final int MIN_LEVEL = 99;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(DEVIANNE);
addTalkId(DEVIANNE);
addKillId(VIPER, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
addCondMinLevel(MIN_LEVEL, "31590-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31590-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31590-02.htm":
case "31590-03.htm":
{
htmltext = event;
break;
}
case "31590-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31590-07.html":
{
// Rewards
giveAdena(player, 2373300, true);
addExpAndSp(player, 3876316782L, 9303137);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31590-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
{
htmltext = "31590-05.html";
break;
}
case 4:
{
htmltext = "31590-06.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() >= 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
switch (qs.getCond())
{
case 1:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
npc.doCast(DESERT_THIRST.getSkill());
qs.setCond(2, true);
}
break;
}
}
}
case 2:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
qs.setCond(3, true);
}
break;
}
}
}
case 3:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
}
break;
}
case VIPER:
{
if (getRandom(100) < 25)
{
qs.setCond(4, true);
}
break;
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -372,6 +372,7 @@ import quests.Q10450_ADarkAmbition.Q10450_ADarkAmbition;
import quests.Q10452_IsItEdible.Q10452_IsItEdible; import quests.Q10452_IsItEdible.Q10452_IsItEdible;
import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon; import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter; import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
import quests.Q10459_ASickAmbition.Q10459_ASickAmbition; import quests.Q10459_ASickAmbition.Q10459_ASickAmbition;
import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter; import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter;
import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin; import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin;
@ -469,7 +470,6 @@ import quests.not_done.Q00789_WaitingForPaagrio;
import quests.not_done.Q10352_LegacyOfCrumaTower; import quests.not_done.Q10352_LegacyOfCrumaTower;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction; import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
import quests.not_done.Q10456_OperationRescue; import quests.not_done.Q10456_OperationRescue;
import quests.not_done.Q10457_KefensisIllusion;
import quests.not_done.Q10458_ToTheDesertQuarry; import quests.not_done.Q10458_ToTheDesertQuarry;
import quests.not_done.Q10463_TheSoulOfASword; import quests.not_done.Q10463_TheSoulOfASword;
import quests.not_done.Q10506_PaddysRequest; import quests.not_done.Q10506_PaddysRequest;
@ -873,7 +873,7 @@ public class QuestMasterHandler
Q10453_StoppingTheWindDragon.class, Q10453_StoppingTheWindDragon.class,
Q10455_ElikiasLetter.class, Q10455_ElikiasLetter.class,
Q10456_OperationRescue.class, // TODO: Not done. Q10456_OperationRescue.class, // TODO: Not done.
Q10457_KefensisIllusion.class, // TODO: Not done. Q10457_KefensisIllusion.class,
Q10458_ToTheDesertQuarry.class, // TODO: Not done. Q10458_ToTheDesertQuarry.class, // TODO: Not done.
Q10459_ASickAmbition.class, Q10459_ASickAmbition.class,
Q10460_ReturnOfTheAlligatorHunter.class, Q10460_ReturnOfTheAlligatorHunter.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10457_KefensisIllusion extends Quest
{
private static final int START_NPC = 31590;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -23,7 +23,6 @@
10352 Legacy of Cruma Tower 10352 Legacy of Cruma Tower
10357 Altar of Blood that Awakens Destruction 10357 Altar of Blood that Awakens Destruction
10456 Operation: Rescue 10456 Operation: Rescue
10457 Kefensis' Illusion
10458 To the Desert Quarry 10458 To the Desert Quarry
10506 Diana's Request 10506 Diana's Request
10712 The Minstrel's Song, Part 1 10712 The Minstrel's Song, Part 1

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.<br>
(Only characters with Lv. 99+ and Complete Quest: Elikia's Letter and Blackbird Clan amity level 4 and above.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
Hello Hunter. Have you heard of the rumors that are circulating here?<br>
Truth seeker Devian, who remains on Hell Island, asks to investigate the massive changes that have occurred in the Lost Hill area<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10457_KefensisIllusion 31590-02.htm">keep going</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
the changes in the lost hill are too obvious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-03.htm">"Really?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
To help her, you need to go to the Hill and hunt for monsters.<br>
You will also learn from your own experience what Desert Thirst is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-04.htm">Ask about the agreement</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Have you eliminated the Viper Fish, Oasis Mirage?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-07.html">"I figured out Viper Fish"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Well done. Good job.<br>
If something else is needed, we will contact you for help.
</body></html>

View File

@ -0,0 +1,234 @@
/*
* 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.Q10457_KefensisIllusion;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Kefensis' Illusion (10457)
* @URL https://l2wiki.com/Kefensis%27_Illusion
* @author Dmitri
*/
public class Q10457_KefensisIllusion extends Quest
{
// NPC
private static final int DEVIANNE = 31590;
// Monsters
private static final int VIPER = 23389;
private static final int SMAUG = 23384;
private static final int LUNATIKAN = 23385;
private static final int JABBERWOK = 23386;
private static final int KANZAROTH = 23387;
private static final int KANDILOTH = 23388;
private static final int GARION = 23395;
private static final int GARION_NETI = 23396;
private static final int DESERT_WENDIGO = 23397;
private static final int KORAZA = 23398;
private static final int BEND_BEETLE = 23399;
// Skill
private static final SkillHolder DESERT_THIRST = new SkillHolder(16697, 1);
// Misc
private static final int MIN_LEVEL = 99;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(DEVIANNE);
addTalkId(DEVIANNE);
addKillId(VIPER, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
addCondMinLevel(MIN_LEVEL, "31590-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31590-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31590-02.htm":
case "31590-03.htm":
{
htmltext = event;
break;
}
case "31590-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31590-07.html":
{
// Rewards
giveAdena(player, 2373300, true);
addExpAndSp(player, 3876316782L, 9303137);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31590-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
{
htmltext = "31590-05.html";
break;
}
case 4:
{
htmltext = "31590-06.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() >= 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
switch (qs.getCond())
{
case 1:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
npc.doCast(DESERT_THIRST.getSkill());
qs.setCond(2, true);
}
break;
}
}
}
case 2:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
qs.setCond(3, true);
}
break;
}
}
}
case 3:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
}
break;
}
case VIPER:
{
if (getRandom(100) < 25)
{
qs.setCond(4, true);
}
break;
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -380,6 +380,7 @@ import quests.Q10450_ADarkAmbition.Q10450_ADarkAmbition;
import quests.Q10452_IsItEdible.Q10452_IsItEdible; import quests.Q10452_IsItEdible.Q10452_IsItEdible;
import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon; import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter; import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
import quests.Q10459_ASickAmbition.Q10459_ASickAmbition; import quests.Q10459_ASickAmbition.Q10459_ASickAmbition;
import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter; import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter;
import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin; import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin;
@ -513,7 +514,6 @@ import quests.not_done.Q00824_AttackTheCommandPost;
import quests.not_done.Q10352_LegacyOfCrumaTower; import quests.not_done.Q10352_LegacyOfCrumaTower;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction; import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
import quests.not_done.Q10456_OperationRescue; import quests.not_done.Q10456_OperationRescue;
import quests.not_done.Q10457_KefensisIllusion;
import quests.not_done.Q10458_ToTheDesertQuarry; import quests.not_done.Q10458_ToTheDesertQuarry;
import quests.not_done.Q10506_DianasRequest; import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10713_TheHerosJourneyBloodySwampland; import quests.not_done.Q10713_TheHerosJourneyBloodySwampland;
@ -923,7 +923,7 @@ public class QuestMasterHandler
Q10453_StoppingTheWindDragon.class, Q10453_StoppingTheWindDragon.class,
Q10455_ElikiasLetter.class, Q10455_ElikiasLetter.class,
Q10456_OperationRescue.class, // TODO: Not done. Q10456_OperationRescue.class, // TODO: Not done.
Q10457_KefensisIllusion.class, // TODO: Not done. Q10457_KefensisIllusion.class,
Q10458_ToTheDesertQuarry.class, // TODO: Not done. Q10458_ToTheDesertQuarry.class, // TODO: Not done.
Q10459_ASickAmbition.class, Q10459_ASickAmbition.class,
Q10460_ReturnOfTheAlligatorHunter.class, Q10460_ReturnOfTheAlligatorHunter.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10457_KefensisIllusion extends Quest
{
private static final int START_NPC = 31590;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -53,7 +53,6 @@
10357 Altar of Blood that Awakens Destruction 10357 Altar of Blood that Awakens Destruction
10373 Exploring the Dimension - Sealing the Dimension 10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores 10396 Witch of Spores
10457 Kefensis' Illusion
10506 Diana's Request 10506 Diana's Request
10712 The Minstrel's Song, Part 1 10712 The Minstrel's Song, Part 1
10717 The Minstrel's Song, Part 2 10717 The Minstrel's Song, Part 2

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.<br>
(Only characters with Lv. 99+ and Complete Quest: Elikia's Letter and Blackbird Clan amity level 4 and above.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
Hello Hunter. Have you heard of the rumors that are circulating here?<br>
Truth seeker Devian, who remains on Hell Island, asks to investigate the massive changes that have occurred in the Lost Hill area<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10457_KefensisIllusion 31590-02.htm">keep going</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
the changes in the lost hill are too obvious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-03.htm">"Really?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
To help her, you need to go to the Hill and hunt for monsters.<br>
You will also learn from your own experience what Desert Thirst is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-04.htm">Ask about the agreement</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Have you eliminated the Viper Fish, Oasis Mirage?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-07.html">"I figured out Viper Fish"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Well done. Good job.<br>
If something else is needed, we will contact you for help.
</body></html>

View File

@ -0,0 +1,236 @@
/*
* 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.Q10457_KefensisIllusion;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Kefensis' Illusion (10457)
* @URL https://l2wiki.com/Kefensis%27_Illusion
* @author Dmitri
*/
public class Q10457_KefensisIllusion extends Quest
{
// NPC
private static final int DEVIANNE = 31590;
// Monsters
private static final int VIPER = 23389;
private static final int SMAUG = 23384;
private static final int LUNATIKAN = 23385;
private static final int JABBERWOK = 23386;
private static final int KANZAROTH = 23387;
private static final int KANDILOTH = 23388;
private static final int GARION = 23395;
private static final int GARION_NETI = 23396;
private static final int DESERT_WENDIGO = 23397;
private static final int KORAZA = 23398;
private static final int BEND_BEETLE = 23399;
// Skill
private static final SkillHolder DESERT_THIRST = new SkillHolder(16697, 1);
// Misc
private static final int MIN_LEVEL = 99;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(DEVIANNE);
addTalkId(DEVIANNE);
addKillId(VIPER, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
addCondMinLevel(MIN_LEVEL, "31590-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31590-00.htm");
addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "31590-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31590-02.htm":
case "31590-03.htm":
{
htmltext = event;
break;
}
case "31590-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31590-07.html":
{
// Rewards
giveAdena(player, 2373300, true);
addExpAndSp(player, 3876316782L, 9303137);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31590-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
{
htmltext = "31590-05.html";
break;
}
case 4:
{
htmltext = "31590-06.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() >= 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
switch (qs.getCond())
{
case 1:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
npc.doCast(DESERT_THIRST.getSkill());
qs.setCond(2, true);
}
break;
}
}
}
case 2:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
qs.setCond(3, true);
}
break;
}
}
}
case 3:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
}
break;
}
case VIPER:
{
if (getRandom(100) < 25)
{
qs.setCond(4, true);
}
break;
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -343,6 +343,7 @@ import quests.Q10452_IsItEdible.Q10452_IsItEdible;
import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon; import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter; import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
import quests.Q10456_OperationRescue.Q10456_OperationRescue; import quests.Q10456_OperationRescue.Q10456_OperationRescue;
import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
import quests.Q10459_ASickAmbition.Q10459_ASickAmbition; import quests.Q10459_ASickAmbition.Q10459_ASickAmbition;
import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter; import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter;
import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin; import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin;
@ -519,7 +520,6 @@ import quests.not_done.Q10298_WastelandQueen;
import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction; import quests.not_done.Q10357_AltarOfBloodThatAwakensDestruction;
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension; import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.not_done.Q10396_WitchOfSpores; import quests.not_done.Q10396_WitchOfSpores;
import quests.not_done.Q10457_KefensisIllusion;
import quests.not_done.Q10506_DianasRequest; import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10748_MysteriousSuggestion1; import quests.not_done.Q10748_MysteriousSuggestion1;
import quests.not_done.Q10749_MysteriousSuggestion2; import quests.not_done.Q10749_MysteriousSuggestion2;
@ -899,7 +899,7 @@ public class QuestMasterHandler
Q10453_StoppingTheWindDragon.class, Q10453_StoppingTheWindDragon.class,
Q10455_ElikiasLetter.class, Q10455_ElikiasLetter.class,
Q10456_OperationRescue.class, Q10456_OperationRescue.class,
Q10457_KefensisIllusion.class, // TODO: Not done. Q10457_KefensisIllusion.class,
Q10459_ASickAmbition.class, Q10459_ASickAmbition.class,
Q10460_ReturnOfTheAlligatorHunter.class, Q10460_ReturnOfTheAlligatorHunter.class,
Q10461_TappingThePowerWithin.class, Q10461_TappingThePowerWithin.class,

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10457_KefensisIllusion extends Quest
{
private static final int START_NPC = 31590;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -112,7 +112,6 @@
10373 Exploring the Dimension - Sealing the Dimension 10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores 10396 Witch of Spores
10423 Embryo Stronghold Ambush 10423 Embryo Stronghold Ambush
10457 Kefensis' Illusion
10506 Diana's Request 10506 Diana's Request
10535 Blacksmith's Soul-awakening Weapon - 3 10535 Blacksmith's Soul-awakening Weapon - 3
10712 The Minstrel's Song, Part 1 10712 The Minstrel's Song, Part 1
@ -129,12 +128,9 @@
10854 To Seize the Fortress 10854 To Seize the Fortress
10858 Queen Ramona, Controller of the Vessel 10858 Queen Ramona, Controller of the Vessel
10859 Own the Earth and the Heavens 10859 Own the Earth and the Heavens
10873 Exalted, Reaching Another Level
10874 Against the New Enemy 10874 Against the New Enemy
10875 For Reputation 10875 For Reputation
10876 Leader's Grace
10877 Break Through Crisis 10877 Break Through Crisis
10879 Exalted, Guide to Power
10880 The Last One Standing 10880 The Last One Standing
10881 For the Pride 10881 For the Pride
10882 Victory Collection 10882 Victory Collection

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.<br>
(Only characters with Lv. 99+ and Complete Quest: Elikia's Letter and Blackbird Clan amity level 4 and above.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
Hello Hunter. Have you heard of the rumors that are circulating here?<br>
Truth seeker Devian, who remains on Hell Island, asks to investigate the massive changes that have occurred in the Lost Hill area<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10457_KefensisIllusion 31590-02.htm">keep going</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
the changes in the lost hill are too obvious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-03.htm">"Really?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
To help her, you need to go to the Hill and hunt for monsters.<br>
You will also learn from your own experience what Desert Thirst is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-04.htm">Ask about the agreement</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Have you eliminated the Viper Fish, Oasis Mirage?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-07.html">"I figured out Viper Fish"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Well done. Good job.<br>
If something else is needed, we will contact you for help.
</body></html>

View File

@ -0,0 +1,236 @@
/*
* 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.Q10457_KefensisIllusion;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Kefensis' Illusion (10457)
* @URL https://l2wiki.com/Kefensis%27_Illusion
* @author Dmitri
*/
public class Q10457_KefensisIllusion extends Quest
{
// NPC
private static final int DEVIANNE = 31590;
// Monsters
private static final int VIPER = 23389;
private static final int SMAUG = 23384;
private static final int LUNATIKAN = 23385;
private static final int JABBERWOK = 23386;
private static final int KANZAROTH = 23387;
private static final int KANDILOTH = 23388;
private static final int GARION = 23395;
private static final int GARION_NETI = 23396;
private static final int DESERT_WENDIGO = 23397;
private static final int KORAZA = 23398;
private static final int BEND_BEETLE = 23399;
// Skill
private static final SkillHolder DESERT_THIRST = new SkillHolder(16697, 1);
// Misc
private static final int MIN_LEVEL = 99;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(DEVIANNE);
addTalkId(DEVIANNE);
addKillId(VIPER, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
addCondMinLevel(MIN_LEVEL, "31590-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31590-00.htm");
addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "31590-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31590-02.htm":
case "31590-03.htm":
{
htmltext = event;
break;
}
case "31590-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31590-07.html":
{
// Rewards
giveAdena(player, 2373300, true);
addExpAndSp(player, 3876316782L, 9303137);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31590-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
{
htmltext = "31590-05.html";
break;
}
case 4:
{
htmltext = "31590-06.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() >= 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
switch (qs.getCond())
{
case 1:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
npc.doCast(DESERT_THIRST.getSkill());
qs.setCond(2, true);
}
break;
}
}
}
case 2:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
qs.setCond(3, true);
}
break;
}
}
}
case 3:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
}
break;
}
case VIPER:
{
if (getRandom(100) < 25)
{
qs.setCond(4, true);
}
break;
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You are not ready to be called by me. Come back when you are ready.<br>
(Only characters who have completed the Exalted, One Who Shatters the Limit quest may take this quest and level 103+.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Great job passing the second test. I knew you would be able to do it.<br>
Now, only the third test is left. Are you ready for it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-03.htm">"Yes, I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
All the efforts you've made so far are simple compared to what you'll have to do now.<br>
You must remember that it is not about overcoming the limit, but about learning that there's no limit at all. Do you understand what I'm saying?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-04.htm">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've already overcome your limit. There's no such thing as a limit now. That's what you will be proving on this third test.<br>
The things you've obtained as you improved will make you even stronger, and what you will obtain from now on will help you prove yourself.<br>
Are you ready to not go back?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-05.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Eva's Knight Lionel Hunter:<br>
This is the third test.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you. It's best that you hear about the tests from them.<br><br><br>
Remember to bring back their certificates.<br>
If you forget who you must go to, refer to the guide I'll be giving you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You haven't finished all the tests. In order to overcome your limit, you must pass all the tests.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you.<br>
It's best that you hear about the tests from them. Remember to bring back their certificates.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
Do you have all the certificates?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-08.html">"Yes, here."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
The power given to us by the gods... we called it Noblesse. But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
Now that you've shattered the limits set by the gods, we will call you <font color="LEVEL">true exalted nobleman</font>. Get access to the next quest Exalted, Guide to Power. Congratulations.
</body></html>

View File

@ -0,0 +1,133 @@
/*
* 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.Q10873_ExaltedReachingAnotherLevel;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10823_ExaltedOneWhoShattersTheLimit.Q10823_ExaltedOneWhoShattersTheLimit;
/**
* Exalted, Reaching Another Level (10873)
* @URL https://l2wiki.com/Exalted,_Reaching_Another_Level
* @author Dmitri
*/
public class Q10873_ExaltedReachingAnotherLevel extends Quest
{
// NPC
private static final int LIONEL = 33907;
// Items
private static final int SPORCHA_CERTIFICATE = 47830;
private static final int KRENAHT_CERTIFICATE = 47831;
private static final int SANTIAGO_SERTIFICATE = 47832;
private static final int ARCTURUS_CERTIFICATE = 47833;
private static final int LIONEL_MISSION_LIST_4 = 47829;
// Rewards
private static final int VITALITY_OF_THE_EXALTED = 47854;
private static final int DIGNITY_OF_THE_EXALTED = 47852;
// Misc
private static final int MIN_LEVEL = 103;
private static final int MIN_COMPLETE_LEVEL = 104;
public Q10873_ExaltedReachingAnotherLevel()
{
super(10873);
addStartNpc(LIONEL);
addTalkId(LIONEL);
addCondMinLevel(MIN_LEVEL, "33907-00.htm");
addCondCompletedQuest(Q10823_ExaltedOneWhoShattersTheLimit.class.getSimpleName(), "33907-00.htm");
registerQuestItems(LIONEL_MISSION_LIST_4, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "33907-03.htm":
case "33907-04.htm":
{
htmltext = event;
break;
}
case "33907-05.html":
{
if (qs.isCreated())
{
giveItems(player, LIONEL_MISSION_LIST_4, 1);
qs.startQuest();
htmltext = event;
}
break;
}
case "33907-08.html":
{
if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
giveItems(player, VITALITY_OF_THE_EXALTED, 1);
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "33907-01.htm";
break;
}
case State.STARTED:
{
if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
htmltext = "33907-07.html";
}
else
{
htmltext = "33907-06.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
You are not ready to be called by me. Come back when you are ready.<br>
(The Exalted, Reaching Another Level quest is is progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Santiago:<br>
Santiago, the Head of the Fisheries Guild, said he needed special qualities to get an Honorary Status.<br>
character traits and even perform work that does not fit the noble face.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10876_LeadersGrace 34138-02.htm">"Yes, I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Santiago:<br>
so how? you are ready? You can, I believe you! become a true foodie!.<br>
you need to try very hard if you want to earn my trust and respect for you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-03.htm">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
Fishing Guild Leader Santiago says the one who seeks out new power should have the grace that matches the power.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-04.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
I charge you to obtain <font color="LEVEL">Special Fish Stew</font> (50 pcs.) <font color="LEVEL">And R-Grade Gems</font> (80)<br>
as soon as you complete the task, come to me.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
I charge you to obtain <font color="LEVEL">Special Fish Stew</font> (50 pcs.) <font color="LEVEL">And R-Grade Gems</font> (80)<br>
as soon as you complete the task, come to me.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Santiago:<br>
You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
here is your reward.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-07.html">"Yes, here."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
The power given to us by the gods... But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
Now that you have violated the restrictions set by the gods, we will call you a master and give you this.
</body></html>

View File

@ -0,0 +1,153 @@
/*
* 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.Q10876_LeadersGrace;
import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
/**
* Leader's Grace (10876)
* @URL https://l2wiki.com/Leader%27s_Grace
* @author Dmitri
*/
public class Q10876_LeadersGrace extends Quest
{
// NPC
private static final int SANTIAGO = 34138;
// Items
private static final int SPECIAL_FISH_STEW = 47887;
private static final int R_GRADE_GEMSTONE = 19440;
private static final ItemHolder LIONEL_HUNTERS_LIST_PART_4 = new ItemHolder(47829, 1);
// Rewards
private static final int SANTIAGO_SERTIFICATE = 47832;
private static final int ELCYUM_CRYSTAL = 36514;
// Misc
private static final int MIN_LEVEL = 103;
public Q10876_LeadersGrace()
{
super(10876);
addStartNpc(SANTIAGO);
addTalkId(SANTIAGO);
addCondMinLevel(MIN_LEVEL, "34138-00.htm");
addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "34138-00.htm");
registerQuestItems(SPECIAL_FISH_STEW, R_GRADE_GEMSTONE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "34138-02.htm":
case "34138-03.htm":
{
htmltext = event;
break;
}
case "34138-04.html":
{
if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
{
qs.startQuest();
htmltext = event;
}
break;
}
case "34138-07.html":
{
if ((getQuestItemsCount(player, SPECIAL_FISH_STEW) >= 50) && (getQuestItemsCount(player, R_GRADE_GEMSTONE) >= 80))
{
takeItems(player, SPECIAL_FISH_STEW, -50);
takeItems(player, R_GRADE_GEMSTONE, -80);
giveItems(player, ELCYUM_CRYSTAL, 1);
giveItems(player, SANTIAGO_SERTIFICATE, 1);
qs.exitQuest(false, true);
final Quest mainQ = QuestManager.getInstance().getQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName());
if (mainQ != null)
{
mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
}
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
{
htmltext = "34138-01.htm";
}
else
{
htmltext = "34138-00.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
if ((getQuestItemsCount(player, SPECIAL_FISH_STEW) >= 50) && (getQuestItemsCount(player, R_GRADE_GEMSTONE) >= 80))
{
htmltext = "34138-06.html";
}
else
{
htmltext = "34138-05.html";
}
break;
}
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You are not ready to be called by me. Come back when you are ready.<br>
(Only characters who have completed the Exalted, Reaching Another Level quest may take this quest and level 105+.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Great job passing the second test. I knew you would be able to do it.<br>
Now, only the third test is left. Are you ready for it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-03.htm">"Yes, I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
All the efforts you've made so far are simple compared to what you'll have to do now.<br>
You must remember that it is not about overcoming the limit, but about learning that there's no limit at all. Do you understand what I'm saying?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-04.htm">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've already overcome your limit. There's no such thing as a limit now. That's what you will be proving on this fifth test.<br>
The things you've obtained as you improved will make you even stronger, and what you will obtain from now on will help you prove yourself.<br>
Are you ready to not go back?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Eva's Knight Lionel Hunter:<br>
This is the third test.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Master Gyphon</font> and <font color="LEVEL">Commissioner Dinford</font> in <font color="LEVEL">Camp Blackbird</font>, <font color="LEVEL">Settlen</font> in the <font color="LEVEL">Underground Kainak</font>, the <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Ketserus Alliance Base</font>, and pass the tests they give you. It's best that you hear about the tests from them.<br><br><br>
Remember to bring back their certificates.<br>
If you forget who you must go to, refer to the guide I'll be giving you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You haven't finished all the tests. In order to overcome your limit, you must pass all the tests.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Master Gyphon</font> and <font color="LEVEL">Commissioner Dinford</font> in <font color="LEVEL">Camp Blackbird</font>, <font color="LEVEL">Settlen</font> in the <font color="LEVEL">Underground Kainak</font>, the <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Ketserus Alliance Base</font>, and pass the tests they give you.<br>
It's best that you hear about the tests from them. Remember to bring back their certificates.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
Do you have all the certificates?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-08.html">"Yes, here."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You have passed a series of tests in order to become a Conductor of Strength.<br>
Get access to the next quest Obtaining a New Power. Congratulations.
</body></html>

View File

@ -0,0 +1,133 @@
/*
* 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.Q10879_ExaltedGuideToPower;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
/**
* Exalted, Guide to Power (10879)
* @URL https://l2wiki.com/Exalted,_Guide_to_Power
* @author Dmitri
*/
public class Q10879_ExaltedGuideToPower extends Quest
{
// NPC
private static final int LIONEL = 33907;
// Items
private static final int MASTER_CYPHONA_CERTIFICATE = 47835;
private static final int DINFORD_CERTIFICATE = 47836;
private static final int SETTLEN_SERTIFICATE = 47837;
private static final int ADMIRAL_KEUCEREUS_CERTIFICATE = 47838;
private static final int LIONEL_MISSION_LIST_5 = 47834;
// Rewards
private static final int VITALITY_OF_THE_EXALTED = 47855;
private static final int DIGNITY_OF_THE_EXALTED = 47853;
// Misc
private static final int MIN_LEVEL = 105;
private static final int MIN_COMPLETE_LEVEL = 104;
public Q10879_ExaltedGuideToPower()
{
super(10879);
addStartNpc(LIONEL);
addTalkId(LIONEL);
addCondMinLevel(MIN_LEVEL, "33907-00.htm");
addCondCompletedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "33907-00.htm");
registerQuestItems(LIONEL_MISSION_LIST_5, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "33907-03.htm":
case "33907-04.htm":
{
htmltext = event;
break;
}
case "33907-05.html":
{
if (qs.isCreated())
{
giveItems(player, LIONEL_MISSION_LIST_5, 1);
qs.startQuest();
htmltext = event;
}
break;
}
case "33907-08.html":
{
if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
giveItems(player, VITALITY_OF_THE_EXALTED, 1);
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "33907-01.htm";
break;
}
case State.STARTED:
{
if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
htmltext = "33907-07.html";
}
else
{
htmltext = "33907-06.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
}

View File

@ -350,6 +350,7 @@ import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10454_FinalEmbryoApostle.Q10454_FinalEmbryoApostle; import quests.Q10454_FinalEmbryoApostle.Q10454_FinalEmbryoApostle;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter; import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
import quests.Q10456_OperationRescue.Q10456_OperationRescue; import quests.Q10456_OperationRescue.Q10456_OperationRescue;
import quests.Q10457_KefensisIllusion.Q10457_KefensisIllusion;
import quests.Q10459_ASickAmbition.Q10459_ASickAmbition; import quests.Q10459_ASickAmbition.Q10459_ASickAmbition;
import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter; import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter;
import quests.Q10462_TemperARustingBlade.Q10462_TemperARustingBlade; import quests.Q10462_TemperARustingBlade.Q10462_TemperARustingBlade;
@ -489,6 +490,9 @@ import quests.Q10851_ElvenBotany.Q10851_ElvenBotany;
import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject; import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProject;
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears; import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
import quests.Q10876_LeadersGrace.Q10876_LeadersGrace;
import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
import quests.not_done.Q00504_CompetitionForTheBanditStronghold; import quests.not_done.Q00504_CompetitionForTheBanditStronghold;
import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts; import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts;
import quests.not_done.Q00667_HowToCoverShilensEyes; import quests.not_done.Q00667_HowToCoverShilensEyes;
@ -527,7 +531,6 @@ import quests.not_done.Q10356_BlacksmithsSoulAwakeningWeapon2;
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension; import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
import quests.not_done.Q10396_WitchOfSpores; import quests.not_done.Q10396_WitchOfSpores;
import quests.not_done.Q10423_EmbryoStrongholdAmbush; import quests.not_done.Q10423_EmbryoStrongholdAmbush;
import quests.not_done.Q10457_KefensisIllusion;
import quests.not_done.Q10506_DianasRequest; import quests.not_done.Q10506_DianasRequest;
import quests.not_done.Q10535_BlacksmithsSoulAwakeningWeapon3; import quests.not_done.Q10535_BlacksmithsSoulAwakeningWeapon3;
import quests.not_done.Q10748_MysteriousSuggestion1; import quests.not_done.Q10748_MysteriousSuggestion1;
@ -538,12 +541,9 @@ import quests.not_done.Q10853_ToWeakenTheGiants;
import quests.not_done.Q10854_ToSeizeTheFortress; import quests.not_done.Q10854_ToSeizeTheFortress;
import quests.not_done.Q10858_QueenRamonaControllerOfTheVessel; import quests.not_done.Q10858_QueenRamonaControllerOfTheVessel;
import quests.not_done.Q10859_OwnTheEarthAndTheHeavens; import quests.not_done.Q10859_OwnTheEarthAndTheHeavens;
import quests.not_done.Q10873_ExaltedReachingAnotherLevel;
import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10874_AgainstTheNewEnemy;
import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10875_ForReputation;
import quests.not_done.Q10876_LeadersGrace;
import quests.not_done.Q10877_BreakThroughCrisis; import quests.not_done.Q10877_BreakThroughCrisis;
import quests.not_done.Q10879_ExaltedGuideToPower;
import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10880_TheLastOneStanding;
import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10881_ForThePride;
import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10882_VictoryCollection;
@ -927,7 +927,7 @@ public class QuestMasterHandler
Q10454_FinalEmbryoApostle.class, Q10454_FinalEmbryoApostle.class,
Q10455_ElikiasLetter.class, Q10455_ElikiasLetter.class,
Q10456_OperationRescue.class, Q10456_OperationRescue.class,
Q10457_KefensisIllusion.class, // TODO: Not done. Q10457_KefensisIllusion.class,
Q10459_ASickAmbition.class, Q10459_ASickAmbition.class,
Q10460_ReturnOfTheAlligatorHunter.class, Q10460_ReturnOfTheAlligatorHunter.class,
Q10462_TemperARustingBlade.class, Q10462_TemperARustingBlade.class,
@ -1077,12 +1077,12 @@ public class QuestMasterHandler
Q10857_SecretTeleport.class, Q10857_SecretTeleport.class,
Q10858_QueenRamonaControllerOfTheVessel.class, // TODO: Not done. Q10858_QueenRamonaControllerOfTheVessel.class, // TODO: Not done.
Q10859_OwnTheEarthAndTheHeavens.class, // TODO: Not done. Q10859_OwnTheEarthAndTheHeavens.class, // TODO: Not done.
Q10873_ExaltedReachingAnotherLevel.class, // TODO: Not done. Q10873_ExaltedReachingAnotherLevel.class,
Q10874_AgainstTheNewEnemy.class, // TODO: Not done. Q10874_AgainstTheNewEnemy.class, // TODO: Not done.
Q10875_ForReputation.class, // TODO: Not done. Q10875_ForReputation.class, // TODO: Not done.
Q10876_LeadersGrace.class, // TODO: Not done. Q10876_LeadersGrace.class,
Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10877_BreakThroughCrisis.class, // TODO: Not done.
Q10879_ExaltedGuideToPower.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class,
Q10880_TheLastOneStanding.class, // TODO: Not done. Q10880_TheLastOneStanding.class, // TODO: Not done.
Q10881_ForThePride.class, // TODO: Not done. Q10881_ForThePride.class, // TODO: Not done.
Q10882_VictoryCollection.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done.

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10457_KefensisIllusion extends Quest
{
private static final int START_NPC = 31590;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10873_ExaltedReachingAnotherLevel extends Quest
{
private static final int START_NPC = 33907;
public Q10873_ExaltedReachingAnotherLevel()
{
super(10873);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10876_LeadersGrace extends Quest
{
private static final int START_NPC = 34138;
public Q10876_LeadersGrace()
{
super(10876);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10879_ExaltedGuideToPower extends Quest
{
private static final int START_NPC = 33907;
public Q10879_ExaltedGuideToPower()
{
super(10879);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@ -117,7 +117,6 @@
10373 Exploring the Dimension - Sealing the Dimension 10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores 10396 Witch of Spores
10423 Embryo Stronghold Ambush 10423 Embryo Stronghold Ambush
10457 Kefensis' Illusion
10506 Diana's Request 10506 Diana's Request
10535 Blacksmith's Soul-awakening Weapon - 3 10535 Blacksmith's Soul-awakening Weapon - 3
10552 Challenge! Balthus Knight! 10552 Challenge! Balthus Knight!
@ -148,12 +147,9 @@
10854 To Seize the Fortress 10854 To Seize the Fortress
10858 Queen Ramona, Controller of the Vessel 10858 Queen Ramona, Controller of the Vessel
10859 Own the Earth and the Heavens 10859 Own the Earth and the Heavens
10873 Exalted, Reaching Another Level
10874 Against the New Enemy 10874 Against the New Enemy
10875 For Reputation 10875 For Reputation
10876 Leader's Grace
10877 Break Through Crisis 10877 Break Through Crisis
10879 Exalted, Guide to Power
10880 The Last One Standing 10880 The Last One Standing
10881 For the Pride 10881 For the Pride
10882 Victory Collection 10882 Victory Collection

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
I don't know where you heard it, but the guild has decided to assign it to a more reliable guild member. Let's talk later when we trust each other more.<br>
(Only characters with Lv. 99+ and Complete Quest: Elikia's Letter and Blackbird Clan amity level 4 and above.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
Hello Hunter. Have you heard of the rumors that are circulating here?<br>
Truth seeker Devian, who remains on Hell Island, asks to investigate the massive changes that have occurred in the Lost Hill area<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10457_KefensisIllusion 31590-02.htm">keep going</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
the changes in the lost hill are too obvious.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-03.htm">"Really?"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Devianne:<br>
To help her, you need to go to the Hill and hunt for monsters.<br>
You will also learn from your own experience what Desert Thirst is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-04.htm">Ask about the agreement</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Go to the Phantasmal Ridge, kill the following mobs: Smaug, Lunatikan, Jabberwok, Kanzaroth, Kandiloth, Garion, Garion Neti, Desert Wendigo, Koraza, Bend Beatle.<br>
and then you need to kill Viper
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Have you eliminated the Viper Fish, Oasis Mirage?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10457_KefensisIllusion 31590-07.html">"I figured out Viper Fish"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Devianne:<br>
Well done. Good job.<br>
If something else is needed, we will contact you for help.
</body></html>

View File

@ -0,0 +1,236 @@
/*
* 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.Q10457_KefensisIllusion;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.Faction;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
/**
* Kefensis' Illusion (10457)
* @URL https://l2wiki.com/Kefensis%27_Illusion
* @author Dmitri
*/
public class Q10457_KefensisIllusion extends Quest
{
// NPC
private static final int DEVIANNE = 31590;
// Monsters
private static final int VIPER = 23389;
private static final int SMAUG = 23384;
private static final int LUNATIKAN = 23385;
private static final int JABBERWOK = 23386;
private static final int KANZAROTH = 23387;
private static final int KANDILOTH = 23388;
private static final int GARION = 23395;
private static final int GARION_NETI = 23396;
private static final int DESERT_WENDIGO = 23397;
private static final int KORAZA = 23398;
private static final int BEND_BEETLE = 23399;
// Skill
private static final SkillHolder DESERT_THIRST = new SkillHolder(16697, 1);
// Misc
private static final int MIN_LEVEL = 99;
public Q10457_KefensisIllusion()
{
super(10457);
addStartNpc(DEVIANNE);
addTalkId(DEVIANNE);
addKillId(VIPER, SMAUG, LUNATIKAN, JABBERWOK, KANZAROTH, KANDILOTH, GARION, GARION_NETI, DESERT_WENDIGO, KORAZA, BEND_BEETLE);
addCondMinLevel(MIN_LEVEL, "31590-00.htm");
addCondCompletedQuest(Q10455_ElikiasLetter.class.getSimpleName(), "31590-00.htm");
addFactionLevel(Faction.BLACKBIRD_CLAN, 4, "31590-00.htm");
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "31590-02.htm":
case "31590-03.htm":
{
htmltext = event;
break;
}
case "31590-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31590-07.html":
{
// Rewards
giveAdena(player, 2373300, true);
addExpAndSp(player, 3876316782L, 9303137);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31590-01.htm";
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
{
htmltext = "31590-05.html";
break;
}
case 4:
{
htmltext = "31590-06.html";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getCond() >= 1) && killer.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
switch (qs.getCond())
{
case 1:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
npc.doCast(DESERT_THIRST.getSkill());
qs.setCond(2, true);
}
break;
}
}
}
case 2:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
qs.setCond(3, true);
}
break;
}
}
}
case 3:
{
switch (npc.getId())
{
case SMAUG:
case LUNATIKAN:
case JABBERWOK:
case KANZAROTH:
case KANDILOTH:
case GARION:
case GARION_NETI:
case DESERT_WENDIGO:
case KORAZA:
case BEND_BEETLE:
{
if (getRandom(100) < 25)
{
final Npc mob = addSpawn(VIPER, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, killer, 5);
}
break;
}
case VIPER:
{
if (getRandom(100) < 25)
{
qs.setCond(4, true);
}
break;
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You are not ready to be called by me. Come back when you are ready.<br>
(Only characters who have completed the Exalted, One Who Shatters the Limit quest may take this quest and level 103+.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Great job passing the second test. I knew you would be able to do it.<br>
Now, only the third test is left. Are you ready for it?<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-03.htm">"Yes, I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
All the efforts you've made so far are simple compared to what you'll have to do now.<br>
You must remember that it is not about overcoming the limit, but about learning that there's no limit at all. Do you understand what I'm saying?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-04.htm">"Yes."</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've already overcome your limit. There's no such thing as a limit now. That's what you will be proving on this third test.<br>
The things you've obtained as you improved will make you even stronger, and what you will obtain from now on will help you prove yourself.<br>
Are you ready to not go back?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-05.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Eva's Knight Lionel Hunter:<br>
This is the third test.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you. It's best that you hear about the tests from them.<br><br><br>
Remember to bring back their certificates.<br>
If you forget who you must go to, refer to the guide I'll be giving you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You haven't finished all the tests. In order to overcome your limit, you must pass all the tests.<br>
You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you.<br>
It's best that you hear about the tests from them. Remember to bring back their certificates.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Eva's Knight Lionel Hunter:<br>
You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
Do you have all the certificates?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-08.html">"Yes, here."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Eva's Knight Lionel Hunter:<br>
The power given to us by the gods... we called it Noblesse. But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
Now that you've shattered the limits set by the gods, we will call you <font color="LEVEL">true exalted nobleman</font>. Get access to the next quest Exalted, Guide to Power. Congratulations.
</body></html>

View File

@ -0,0 +1,133 @@
/*
* 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.Q10873_ExaltedReachingAnotherLevel;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import quests.Q10823_ExaltedOneWhoShattersTheLimit.Q10823_ExaltedOneWhoShattersTheLimit;
/**
* Exalted, Reaching Another Level (10873)
* @URL https://l2wiki.com/Exalted,_Reaching_Another_Level
* @author Dmitri
*/
public class Q10873_ExaltedReachingAnotherLevel extends Quest
{
// NPC
private static final int LIONEL = 33907;
// Items
private static final int SPORCHA_CERTIFICATE = 47830;
private static final int KRENAHT_CERTIFICATE = 47831;
private static final int SANTIAGO_SERTIFICATE = 47832;
private static final int ARCTURUS_CERTIFICATE = 47833;
private static final int LIONEL_MISSION_LIST_4 = 47829;
// Rewards
private static final int VITALITY_OF_THE_EXALTED = 47854;
private static final int DIGNITY_OF_THE_EXALTED = 47852;
// Misc
private static final int MIN_LEVEL = 103;
private static final int MIN_COMPLETE_LEVEL = 104;
public Q10873_ExaltedReachingAnotherLevel()
{
super(10873);
addStartNpc(LIONEL);
addTalkId(LIONEL);
addCondMinLevel(MIN_LEVEL, "33907-00.htm");
addCondCompletedQuest(Q10823_ExaltedOneWhoShattersTheLimit.class.getSimpleName(), "33907-00.htm");
registerQuestItems(LIONEL_MISSION_LIST_4, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (event)
{
case "33907-03.htm":
case "33907-04.htm":
{
htmltext = event;
break;
}
case "33907-05.html":
{
if (qs.isCreated())
{
giveItems(player, LIONEL_MISSION_LIST_4, 1);
qs.startQuest();
htmltext = event;
}
break;
}
case "33907-08.html":
{
if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
giveItems(player, VITALITY_OF_THE_EXALTED, 1);
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "33907-01.htm";
break;
}
case State.STARTED:
{
if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
{
htmltext = "33907-07.html";
}
else
{
htmltext = "33907-06.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Santiago:<br>
You are not ready to be called by me. Come back when you are ready.<br>
(The Exalted, Reaching Another Level quest is is progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Santiago:<br>
Santiago, the Head of the Fisheries Guild, said he needed special qualities to get an Honorary Status.<br>
character traits and even perform work that does not fit the noble face.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10876_LeadersGrace 34138-02.htm">"Yes, I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Santiago:<br>
so how? you are ready? You can, I believe you! become a true foodie!.<br>
you need to try very hard if you want to earn my trust and respect for you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-03.htm">"Yes."</Button>
</body></html>

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