Fixed Kartia and related quests.

This commit is contained in:
MobiusDev 2016-07-15 19:38:31 +00:00
parent a4b2d50539
commit 6e2ad6ded4
62 changed files with 1126 additions and 1 deletions

View File

@ -31,11 +31,19 @@ import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDeath;
import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureSee; import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureSee;
import com.l2jmobius.gameserver.model.holders.SkillHolder; import com.l2jmobius.gameserver.model.holders.SkillHolder;
import com.l2jmobius.gameserver.model.instancezone.Instance; import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.model.zone.L2ZoneType; import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.network.NpcStringId; import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance; import instances.AbstractInstance;
import quests.Q00494_IncarnationOfGreedZellakaGroup.Q00494_IncarnationOfGreedZellakaGroup;
import quests.Q00495_IncarnationOfJealousyPellineGroup.Q00495_IncarnationOfJealousyPellineGroup;
import quests.Q00496_IncarnationOfGluttonyKaliosGroup.Q00496_IncarnationOfGluttonyKaliosGroup;
import quests.Q00497_IncarnationOfGreedZellakaSolo.Q00497_IncarnationOfGreedZellakaSolo;
import quests.Q00498_IncarnationOfJealousyPellineSolo.Q00498_IncarnationOfJealousyPellineSolo;
import quests.Q00499_IncarnationOfGluttonyKaliosSolo.Q00499_IncarnationOfGluttonyKaliosSolo;
/** /**
* Kartia Labyrinth instance zone. * Kartia Labyrinth instance zone.
@ -319,7 +327,7 @@ public final class KartiasLabyrinth extends AbstractInstance
instance.openCloseDoor(instance.getTemplateParameters().getInt("thirdDoorId"), true); instance.openCloseDoor(instance.getTemplateParameters().getInt("thirdDoorId"), true);
instance.setStatus(3); // Used for notify helper's AI instance.setStatus(3); // Used for notify helper's AI
} }
else if (param.getBoolean("CONTINUE_AFTER_KILL", false) && instance.getAliveNpcs(MONSTERS).isEmpty()) else if (param.getBoolean("CONTINUE_AFTER_KILL", false) && (instance.getAliveNpcs(MONSTERS).size() <= 1))
{ {
param.set("CONTINUE_AFTER_KILL", false); param.set("CONTINUE_AFTER_KILL", false);
getTimers().addTimer("CALL_PROGRESS", 5000, n -> manageProgressInInstance(instance)); getTimers().addTimer("CALL_PROGRESS", 5000, n -> manageProgressInInstance(instance));
@ -347,6 +355,69 @@ public final class KartiasLabyrinth extends AbstractInstance
addExpAndSp(player, (xp + getRandom(xp_rnd)), (sp + getRandom(sp_rnd))); addExpAndSp(player, (xp + getRandom(xp_rnd)), (sp + getRandom(sp_rnd)));
}); });
} }
// Check Instance Quests.
instance.getPlayers().forEach(player ->
{
switch (instance.getTemplateId())
{
case TEMPLATE_ID_SOLO_85:
{
final QuestState qs = player.getQuestState(Q00497_IncarnationOfGreedZellakaSolo.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
case TEMPLATE_ID_SOLO_90:
{
final QuestState qs = player.getQuestState(Q00498_IncarnationOfJealousyPellineSolo.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
case TEMPLATE_ID_SOLO_95:
{
final QuestState qs = player.getQuestState(Q00499_IncarnationOfGluttonyKaliosSolo.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
case TEMPLATE_ID_GROUP_85:
{
final QuestState qs = player.getQuestState(Q00494_IncarnationOfGreedZellakaGroup.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
case TEMPLATE_ID_GROUP_90:
{
final QuestState qs = player.getQuestState(Q00495_IncarnationOfJealousyPellineGroup.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
case TEMPLATE_ID_GROUP_95:
{
final QuestState qs = player.getQuestState(Q00496_IncarnationOfGluttonyKaliosGroup.class.getSimpleName());
if ((qs != null) && (qs.getState() == State.STARTED) && qs.isCond(1))
{
qs.setCond(2, true);
}
break;
}
}
});
instance.finishInstance(); instance.finishInstance();
} }
} }
@ -544,61 +615,78 @@ public final class KartiasLabyrinth extends AbstractInstance
switch (wave) switch (wave)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE1")); moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE1"));
param.set("WAVE", 2); param.set("WAVE", 2);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 2: case 2:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE2")); moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE2"));
param.set("WAVE", 3); param.set("WAVE", 3);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 3: case 3:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE3")); moveMonsters(instance.spawnGroup("ROOM1_STAGE1_WAVE3"));
param.set("WAVE", 1); param.set("WAVE", 1);
param.set("STAGE", 2); param.set("STAGE", 2);
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
} }
break; break;
case 2: case 2:
switch (wave) switch (wave)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE1")); moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE1"));
param.set("WAVE", 2); param.set("WAVE", 2);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 2: case 2:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE2")); moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE2"));
param.set("WAVE", 3); param.set("WAVE", 3);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 3: case 3:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE3")); moveMonsters(instance.spawnGroup("ROOM1_STAGE2_WAVE3"));
param.set("WAVE", 1); param.set("WAVE", 1);
param.set("STAGE", 3); param.set("STAGE", 3);
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
} }
break; break;
case 3: case 3:
switch (wave) switch (wave)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE1")); moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE1"));
param.set("WAVE", 2); param.set("WAVE", 2);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 2: case 2:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE2")); moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE2"));
param.set("WAVE", 3); param.set("WAVE", 3);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 3: case 3:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE3")); moveMonsters(instance.spawnGroup("ROOM1_STAGE3_WAVE3"));
if (isSoloKartia(instance)) if (isSoloKartia(instance))
{ {
@ -624,7 +712,9 @@ public final class KartiasLabyrinth extends AbstractInstance
} }
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
case 4: case 4:
{
showOnScreenMsg(instance, NpcStringId.THE_LIFE_PLUNDERER_S_TRUE_FORM_IS_REVEALED, ExShowScreenMessage.TOP_CENTER, 5000, true); showOnScreenMsg(instance, NpcStringId.THE_LIFE_PLUNDERER_S_TRUE_FORM_IS_REVEALED, ExShowScreenMessage.TOP_CENTER, 5000, true);
instance.spawnGroup("ROOM1_STAGE3_WAVE4"); instance.spawnGroup("ROOM1_STAGE3_WAVE4");
instance.getAliveNpcs(BOZ_ENERGY).forEach(npc -> npc.deleteMe()); instance.getAliveNpcs(BOZ_ENERGY).forEach(npc -> npc.deleteMe());
@ -633,40 +723,50 @@ public final class KartiasLabyrinth extends AbstractInstance
param.set("STAGE", 1); param.set("STAGE", 1);
param.set("WAVE", 1); param.set("WAVE", 1);
break; break;
}
} }
break; break;
case 4: case 4:
switch (wave) switch (wave)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE1")); moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE1"));
param.set("WAVE", 2); param.set("WAVE", 2);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 2: case 2:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE2")); moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE2"));
param.set("WAVE", 3); param.set("WAVE", 3);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 3: case 3:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE3")); moveMonsters(instance.spawnGroup("ROOM1_STAGE4_WAVE3"));
param.set("WAVE", 1); param.set("WAVE", 1);
param.set("STAGE", 5); param.set("STAGE", 5);
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
} }
break; break;
case 5: case 5:
switch (wave) switch (wave)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM1_STAGE5_WAVE1")); moveMonsters(instance.spawnGroup("ROOM1_STAGE5_WAVE1"));
param.set("WAVE", 2); param.set("WAVE", 2);
getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance)); getTimers().addTimer("NEXT_WAVE_DELAY", 30000, n -> manageProgressInInstance(instance));
break; break;
}
case 2: case 2:
{
moveMonsters(instance.spawnGroup("ROOM1_STAGE5_WAVE2")); moveMonsters(instance.spawnGroup("ROOM1_STAGE5_WAVE2"));
param.set("ROOM", 2); param.set("ROOM", 2);
param.set("STAGE", 1); param.set("STAGE", 1);
@ -686,6 +786,7 @@ public final class KartiasLabyrinth extends AbstractInstance
}); });
}); });
break; break;
}
} }
break; break;
} }
@ -708,6 +809,7 @@ public final class KartiasLabyrinth extends AbstractInstance
switch (stage) switch (stage)
{ {
case 1: case 1:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM3_STAGE1_WAVE1")); moveMonsters(instance.spawnGroup("ROOM3_STAGE1_WAVE1"));
param.set("STAGE", 2); param.set("STAGE", 2);
@ -721,13 +823,17 @@ public final class KartiasLabyrinth extends AbstractInstance
addSpawn(instance.getTemplateParameters().getInt("helperSurvivor"), loc, false, 0, false, instance.getId()); addSpawn(instance.getTemplateParameters().getInt("helperSurvivor"), loc, false, 0, false, instance.getId());
} }
break; break;
}
case 2: case 2:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM3_STAGE2_WAVE1")); moveMonsters(instance.spawnGroup("ROOM3_STAGE2_WAVE1"));
param.set("STAGE", 3); param.set("STAGE", 3);
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
case 3: case 3:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM3_STAGE3_WAVE1")); moveMonsters(instance.spawnGroup("ROOM3_STAGE3_WAVE1"));
@ -749,13 +855,17 @@ public final class KartiasLabyrinth extends AbstractInstance
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
} }
break; break;
}
case 4: case 4:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM3_STAGE4_WAVE1")); moveMonsters(instance.spawnGroup("ROOM3_STAGE4_WAVE1"));
param.set("STAGE", 5); param.set("STAGE", 5);
param.set("CONTINUE_AFTER_KILL", true); param.set("CONTINUE_AFTER_KILL", true);
break; break;
}
case 5: case 5:
{
showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage)); showOnScreenMsg(instance, NpcStringId.STAGE_S1, ExShowScreenMessage.TOP_CENTER, 5000, true, Integer.toString(stage));
moveMonsters(instance.spawnGroup("ROOM3_STAGE4_WAVE1")); moveMonsters(instance.spawnGroup("ROOM3_STAGE4_WAVE1"));
instance.getAliveNpcs(BOSSES).forEach(npc -> instance.getAliveNpcs(BOSSES).forEach(npc ->
@ -769,6 +879,7 @@ public final class KartiasLabyrinth extends AbstractInstance
addMoveToDesire(npc, moveTo, 23); addMoveToDesire(npc, moveTo, 23);
}); });
break; break;
}
} }
} }
} }

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 85 - 89.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00494_IncarnationOfGreedZellakaGroup 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00494_IncarnationOfGreedZellakaGroup 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Zellaka</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Zellaka</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00494_IncarnationOfGreedZellakaGroup 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00494_IncarnationOfGreedZellakaGroup;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Greed Zellaka (Group) (494)
* @author Mobius
*/
public class Q00494_IncarnationOfGreedZellakaGroup extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_KEEPER_BLUE_BOX = 34927;
// Misc
private static final int MIN_LEVEL = 85;
private static final int MAX_LEVEL = 89;
public Q00494_IncarnationOfGreedZellakaGroup()
{
super(494);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_KEEPER_BLUE_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 90 - 94.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00495_IncarnationOfJealousyPellineGroup 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00495_IncarnationOfJealousyPellineGroup 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Pelline</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Pelline</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00495_IncarnationOfJealousyPellineGroup 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00495_IncarnationOfJealousyPellineGroup;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Jealousy Pelline (Group) (495)
* @author Mobius
*/
public class Q00495_IncarnationOfJealousyPellineGroup extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_KEEPER_RED_BOX = 34928;
// Misc
private static final int MIN_LEVEL = 90;
private static final int MAX_LEVEL = 94;
public Q00495_IncarnationOfJealousyPellineGroup()
{
super(495);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_KEEPER_RED_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 95 - 99.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00496_IncarnationOfGluttonyKaliosGroup 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00496_IncarnationOfGluttonyKaliosGroup 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Kalios</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Kalios</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00496_IncarnationOfGluttonyKaliosGroup 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00496_IncarnationOfGluttonyKaliosGroup;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Gluttony Kalios (Group) (496)
* @author Mobius
*/
public class Q00496_IncarnationOfGluttonyKaliosGroup extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_KEEPER_GOLDEN_BOX = 34929;
// Misc
private static final int MIN_LEVEL = 95;
private static final int MAX_LEVEL = 99;
public Q00496_IncarnationOfGluttonyKaliosGroup()
{
super(496);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_KEEPER_GOLDEN_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 85 - 89.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00497_IncarnationOfGreedZellakaSolo 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00497_IncarnationOfGreedZellakaSolo 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Zellaka</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Zellaka</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00497_IncarnationOfGreedZellakaSolo 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00497_IncarnationOfGreedZellakaSolo;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Greed Zellaka (Solo) (497)
* @author Mobius
*/
public class Q00497_IncarnationOfGreedZellakaSolo extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_TRAVELERS_BLUE_BOX = 34930;
// Misc
private static final int MIN_LEVEL = 85;
private static final int MAX_LEVEL = 89;
public Q00497_IncarnationOfGreedZellakaSolo()
{
super(497);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_TRAVELERS_BLUE_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 90 - 94.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00498_IncarnationOfJealousyPellineSolo 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00498_IncarnationOfJealousyPellineSolo 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Pelline</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Pelline</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00498_IncarnationOfJealousyPellineSolo 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00498_IncarnationOfJealousyPellineSolo;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Jealousy Pelline (Solo) (498)
* @author Mobius
*/
public class Q00498_IncarnationOfJealousyPellineSolo extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_TRAVELERS_RED_BOX = 34931;
// Misc
private static final int MIN_LEVEL = 90;
private static final int MAX_LEVEL = 94;
public Q00498_IncarnationOfJealousyPellineSolo()
{
super(498);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_TRAVELERS_RED_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Don't waste my time. Strong though you may be, I need someone of a specific caliber for this task.<br>
(This quest can be undertaken by characters who are Lv. 95 - 99.)
</body></html>

View File

@ -0,0 +1,2 @@
<html><body>You cannot receive quest rewards as your character's level is lower than the minimum required for the quest.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
What a disaster! Shilen has created dimensional fissures everywhere!<br>
Ever since the Kartia Labyrinth appeared monsters from the dark spirit realm have crossed over to our material plane. If we can't find a way to stop them, I'm afraid we're finished.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00499_IncarnationOfGluttonyKaliosSolo 33647-02.htm">"I assume you have a plan."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Kartia Researcher:<br>
The powerful demons Zellaka, Pelline, and Kalios command Kartia's Labyrinth!<br>
What's worse, they're summoning minions to do their bidding. We can't allow them to bring those friends into the Material Realm. Kill them before we're overrun!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00499_IncarnationOfGluttonyKaliosSolo 33647-03.htm">"I'll have their heads!"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
Really? That's great!<br>
Based on my extensive knowledge of the labyrinth, it should be enough to get rid of the minions and then kill one of more powerful demons--<font color="LEVEL">Kalios</font>.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
I'll leave it to you then. Come back quickly!<br>
Remember, clear out the minions and then kill <font color="LEVEL">Kalios</font>. Easy, right?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
You're back! Well? Did you send the demons back to the darkness where they belong?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00499_IncarnationOfGluttonyKaliosSolo 33647-06.html">"The mission is complete."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Kartia Researcher:<br>
Your brevity is disturbing, though maybe the details would have been more so. At least the demons won't escape from the labyrinth.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Kartia Researcher:<br>
It appears that we are safe for now. Could you come back to check again tomorrow?<br>
(This quest can only be undertaken once a day. It resets everyday at 06:30.)
</body></html>

View File

@ -0,0 +1,132 @@
/*
* 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.Q00499_IncarnationOfGluttonyKaliosSolo;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Incarnation of Gluttony Kalios (Solo) (499)
* @author Mobius
*/
public class Q00499_IncarnationOfGluttonyKaliosSolo extends Quest
{
// NPC
private static final int KARTIA_RESEARCHER = 33647;
// Item
private static final int DIMENSION_TRAVELERS_GOLDEN_BOX = 34932;
// Misc
private static final int MIN_LEVEL = 95;
private static final int MAX_LEVEL = 99;
public Q00499_IncarnationOfGluttonyKaliosSolo()
{
super(499);
addStartNpc(KARTIA_RESEARCHER);
addTalkId(KARTIA_RESEARCHER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
final String htmltext = event;
if (event.equals("33647-03.htm"))
{
qs.startQuest();
}
else if (event.equals("33647-06.html") && qs.isCond(2))
{
rewardItems(player, DIMENSION_TRAVELERS_GOLDEN_BOX, 1);
qs.exitQuest(QuestType.DAILY, true);
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.CREATED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else
{
htmltext = "33647-01.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33647-04.html";
}
else if (qs.isCond(2))
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00a.htm";
}
else
{
htmltext = "33647-05.html";
}
}
break;
}
case State.COMPLETED:
{
if ((player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL))
{
htmltext = "33647-00.htm";
}
else if (!qs.isNowAvailable())
{
htmltext = "33647-07.html";
}
else
{
qs.setState(State.CREATED);
htmltext = "33647-01.htm";
}
break;
}
}
return htmltext;
}
}

View File

@ -127,6 +127,12 @@ import quests.Q00488_WondersOfCaring.Q00488_WondersOfCaring;
import quests.Q00489_InThisQuietPlace.Q00489_InThisQuietPlace; import quests.Q00489_InThisQuietPlace.Q00489_InThisQuietPlace;
import quests.Q00490_DutyOfTheSurvivor.Q00490_DutyOfTheSurvivor; import quests.Q00490_DutyOfTheSurvivor.Q00490_DutyOfTheSurvivor;
import quests.Q00493_KickingOutUnwelcomeGuests.Q00493_KickingOutUnwelcomeGuests; import quests.Q00493_KickingOutUnwelcomeGuests.Q00493_KickingOutUnwelcomeGuests;
import quests.Q00494_IncarnationOfGreedZellakaGroup.Q00494_IncarnationOfGreedZellakaGroup;
import quests.Q00495_IncarnationOfJealousyPellineGroup.Q00495_IncarnationOfJealousyPellineGroup;
import quests.Q00496_IncarnationOfGluttonyKaliosGroup.Q00496_IncarnationOfGluttonyKaliosGroup;
import quests.Q00497_IncarnationOfGreedZellakaSolo.Q00497_IncarnationOfGreedZellakaSolo;
import quests.Q00498_IncarnationOfJealousyPellineSolo.Q00498_IncarnationOfJealousyPellineSolo;
import quests.Q00499_IncarnationOfGluttonyKaliosSolo.Q00499_IncarnationOfGluttonyKaliosSolo;
import quests.Q00501_ProofOfClanAlliance.Q00501_ProofOfClanAlliance; import quests.Q00501_ProofOfClanAlliance.Q00501_ProofOfClanAlliance;
import quests.Q00508_AClansReputation.Q00508_AClansReputation; import quests.Q00508_AClansReputation.Q00508_AClansReputation;
import quests.Q00509_AClansFame.Q00509_AClansFame; import quests.Q00509_AClansFame.Q00509_AClansFame;
@ -446,6 +452,12 @@ public class QuestMasterHandler
Q00489_InThisQuietPlace.class, Q00489_InThisQuietPlace.class,
Q00490_DutyOfTheSurvivor.class, Q00490_DutyOfTheSurvivor.class,
Q00493_KickingOutUnwelcomeGuests.class, Q00493_KickingOutUnwelcomeGuests.class,
Q00494_IncarnationOfGreedZellakaGroup.class,
Q00495_IncarnationOfJealousyPellineGroup.class,
Q00496_IncarnationOfGluttonyKaliosGroup.class,
Q00497_IncarnationOfGreedZellakaSolo.class,
Q00498_IncarnationOfJealousyPellineSolo.class,
Q00499_IncarnationOfGluttonyKaliosSolo.class,
Q00501_ProofOfClanAlliance.class, Q00501_ProofOfClanAlliance.class,
Q00508_AClansReputation.class, Q00508_AClansReputation.class,
Q00509_AClansFame.class, Q00509_AClansFame.class,