Addition of 76 to 85 quests.
Contributed by Dmitri.
This commit is contained in:
parent
8c38079f62
commit
62c251d831
117
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/ChamberOfProphecies.xml
vendored
Normal file
117
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/ChamberOfProphecies.xml
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Chamber of Prophecies-->
|
||||
<instance id="255" maxWorlds="20" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="30" empty="5" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="-88504" y="186552" z="-10476" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="-78696" y="251000" z="-2998" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Level">
|
||||
<param name="min" value="85" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<doorlist>
|
||||
<door id="17230101" />
|
||||
<door id="17230102" />
|
||||
<door id="17230103" />
|
||||
<door id="17230104" />
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="q10753_16_instance_halter_1" spawnByDefault="true">
|
||||
<npc id="31639" x="-88424" y="186904" z="-10476" heading="49151" respawnTime="60sec" /> <!-- Kain van Halter -->
|
||||
<npc id="34001" x="-88584" y="186904" z="-10476" heading="49151" respawnTime="60sec" /> <!-- Ferin -->
|
||||
</group>
|
||||
<group name="q10753_16_instance_halter_1_1" spawnByDefault="false">
|
||||
<npc id="33999" x="-88457" y="184614" z="-10472" heading="49980" respawnTime="60sec" /> <!-- Kain van Halter -->
|
||||
<npc id="34001" x="-88581" y="184785" z="-10472" heading="49980" respawnTime="60sec" /> <!-- Ferin -->
|
||||
</group>
|
||||
<group name="q10753_16_instance_halter_2" spawnByDefault="false">
|
||||
<npc id="31639" x="-88440" y="173352" z="-10476" heading="31287" respawnTime="60sec" /> <!-- Kain van Halter -->
|
||||
<npc id="34001" x="-88440" y="173240" z="-10476" heading="31287" respawnTime="60sec" /> <!-- Ferin -->
|
||||
</group>
|
||||
<group name="q10753_16_instance_grail" spawnByDefault="false">
|
||||
<npc id="33996" x="-88506" y="173283" z="-10410" heading="0" respawnTime="60sec" /> <!-- Grail -->
|
||||
</group>
|
||||
<group name="q10753_16_instance_wizard" spawnByDefault="false">
|
||||
<npc id="33980" x="-88664" y="173283" z="-10476" heading="0" respawnTime="60sec" /> <!-- Mysterious Wizard -->
|
||||
</group>
|
||||
<group name="wof_room1" spawnByDefault="false">
|
||||
<npc id="19569" x="-88312" y="184488" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88136" y="183464" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88280" y="183304" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88152" y="183176" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88872" y="183144" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88776" y="183480" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88792" y="183784" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88840" y="184488" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88920" y="184360" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88952" y="183272" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
</group>
|
||||
<group name="wof_room2" spawnByDefault="false">
|
||||
<npc id="19569" x="-88936" y="180136" z="-10476" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88296" y="179624" z="-10476" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88360" y="179640" z="-10476" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88664" y="179192" z="-10476" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88680" y="179912" z="-10476" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19570" x="-88312" y="180344" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88680" y="180280" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88456" y="180328" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88296" y="180472" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88584" y="180072" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
</group>
|
||||
<group name="wof_room2_1" spawnByDefault="false">
|
||||
<npc id="19569" x="-88504" y="180360" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88680" y="180568" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88808" y="180184" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88856" y="180296" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19570" x="-88952" y="180120" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88120" y="180136" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88312" y="180344" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88680" y="180280" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88456" y="180328" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88296" y="180472" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88584" y="180072" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19568" x="-88504" y="179320" z="-10472" heading="16383" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88840" y="180456" z="-10472" heading="31287" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88616" y="180456" z="-10472" heading="16383" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88904" y="180280" z="-10472" heading="31287" /> <!-- Sacred Wizard -->
|
||||
</group>
|
||||
<group name="wof_room3" spawnByDefault="false">
|
||||
<npc id="19569" x="-88632" y="176568" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88312" y="176328" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88168" y="176168" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88280" y="175704" z="-10472" heading="16383" /> <!-- Sacred Soldier -->
|
||||
<npc id="19569" x="-88248" y="175624" z="-10472" heading="31287" /> <!-- Sacred Soldier -->
|
||||
<npc id="19570" x="-88504" y="176680" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88312" y="176328" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88648" y="176200" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88776" y="176008" z="-10472" heading="31287" /> <!-- Sacred Slayer -->
|
||||
<npc id="19570" x="-88696" y="175960" z="-10472" heading="16383" /> <!-- Sacred Slayer -->
|
||||
<npc id="19568" x="-88696" y="176584" z="-10472" heading="31287" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88488" y="176168" z="-10472" heading="16383" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88584" y="176248" z="-10472" heading="31287" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88760" y="176232" z="-10472" heading="16383" /> <!-- Sacred Wizard -->
|
||||
<npc id="19568" x="-88280" y="175704" z="-10472" heading="31287" /> <!-- Sacred Wizard -->
|
||||
</group>
|
||||
<group name="wof_room3_2" spawnByDefault="false">
|
||||
<npc id="19573" x="-88328" y="176072" z="-10472" heading="31287" /> <!-- Secluded Shadow -->
|
||||
<npc id="19573" x="-88312" y="176328" z="-10472" heading="16383" /> <!-- Secluded Shadow -->
|
||||
<npc id="19573" x="-88344" y="176872" z="-10472" heading="31287" /> <!-- Secluded Shadow -->
|
||||
<npc id="19573" x="-88504" y="176520" z="-10472" heading="16383" /> <!-- Secluded Shadow -->
|
||||
<npc id="19573" x="-88504" y="176296" z="-10472" heading="31287" /> <!-- Secluded Shadow -->
|
||||
<npc id="19572" x="-88296" y="175576" z="-10472" heading="16383" /> <!-- Abyssal Shadow -->
|
||||
<npc id="19572" x="-88392" y="176072" z="-10472" heading="31287" /> <!-- Abyssal Shadow -->
|
||||
<npc id="19572" x="-88792" y="176136" z="-10472" heading="16383" /> <!-- Abyssal Shadow -->
|
||||
<npc id="19572" x="-88808" y="176312" z="-10472" heading="31287" /> <!-- Abyssal Shadow -->
|
||||
<npc id="19572" x="-88344" y="175672" z="-10472" heading="16383" /> <!-- Abyssal Shadow -->
|
||||
</group>
|
||||
<group name="wof_room4" spawnByDefault="false">
|
||||
<npc id="19571" x="-88504" y="176024" z="-10472" heading="16383" spawnAnimation="true" /> <!-- Makkum -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
Took you long enough. I thought you'd be as swift as the wind, but you're slow as molasses. I got here first with <font color="LEVEL">Ferin</font>. She's the daughter of... Venir, was it? We're finally going to find the Grail. Let's get going.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ChamberOfProphecies teleport">"Let's go."</button>
|
||||
</body></html>
|
@ -0,0 +1,7 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
The Grail was literally just a simple grail. it was not what I was looking for.<br>
|
||||
But, I have no regrets about taking this journey with you.<br>
|
||||
If it's not the Grail, I'm not interested in it. Do whatever you wish with it.<br>
|
||||
Let us part ways now.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ChamberOfProphecies exit">"Good bye."</button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/31639.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/31639.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
I hope that the Grail it's talking about is the same one I'm looking for.<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h Quest ChamberOfProphecies status">Quest</button>
|
||||
</body></html>
|
@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Mysterious Wizard:<br>
|
||||
<font color="LEVEL">Nidrah</font>? I have no idea what you're talking about. Oh, you mean thr vampire shouted at me?<br>
|
||||
She was cursed with dark magic and was not herself. You believe her?<br>
|
||||
More importantly, I want to talk about the object you have.<br>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-02.html">"Do you know what this is?"</button>
|
||||
</body></html>
|
@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Mysterious Wizard:<br>
|
||||
This is a extremely rare gem called <font color="LEVEL">Atelia</font>. To my knowledge, it's only found in the Wind Spirit Realm.<br>
|
||||
I heard that an Atelia can recognize its owner. You see how it turned back to its original form when you touched it? That means you are the rightful owner.<br>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-03.html">"Why are You telling me this?"</button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Mysterious Wizard:<br>
|
||||
Do You still suspect me? I'm just helping you so that you won't lose what is yours. The Atelia will only end up in Queen's hands back in town, wich means ir will be the Queen's power. Don't you want the power for yourself?<br>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-04.html">"Don't lie to me. This is not mine."</button>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-04.html">"This is the power I will have?"</button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Mysterious Wizard:<br>
|
||||
Really? Having Atelia's power will make you powerful beyond your imagination. You want to give up your last chance to use this power for yourself?<br>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-05.html">"Do not tempt me to covet what is not mine!"</button>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-05.html">"Well, if you say it's mine, then...hehe"</button>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Mysterious Wizard:<br>
|
||||
I'm sorry to hear that. I wanted to see you become more powerful. That's all time has permitted us. Perhaps I will see you later?
|
||||
</body></html>
|
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/33980.html
vendored
Normal file
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/33980.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Mysterious Wizard:<br>
|
||||
Long time no see. How do you do?<br>
|
||||
<Button ALIGN="LEFT" ICON="Normal" action="bypass -h Quest ChamberOfProphecies 33980-01.html">"You are... Nidhar, was it?"</button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Grail:<br>
|
||||
This is the grail the Prophecy Machine was referring to.<br>
|
||||
Do you think this is THE grail?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ChamberOfProphecies 33996-02.html">Can I touch it?</button>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Grail:<br>
|
||||
The grail disappeared, leaving behind a gem.
|
||||
</body></html>
|
6
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/33996.html
vendored
Normal file
6
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/ChamberOfProphecies/33996.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Grail:<br>
|
||||
<center>The Atelias's powers are sealed here.</center><br1>
|
||||
It will regan its from, when the masters of its power comes.<br1>
|
||||
<center>-Zepharon, King of Ertheia</center><br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h Quest ChamberOfProphecies 33996-01.html">Quest</button>
|
||||
</body></html>
|
@ -0,0 +1,463 @@
|
||||
/*
|
||||
* 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 instances.ChamberOfProphecies;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
import quests.Q11027_PathOfDestinyOvercome.Q11027_PathOfDestinyOvercome;
|
||||
|
||||
/**
|
||||
* Chamber of Prophecies instance.
|
||||
* @author Gigi, Mobius
|
||||
*/
|
||||
public class ChamberOfProphecies extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int KAIN_VAN_HALTER = 31639;
|
||||
private static final int VAN_HALTER = 33999;
|
||||
private static final int FERIN = 34001;
|
||||
private static final int GRAIL = 33996;
|
||||
private static final int MYSTERIOUS_WIZARD = 33980;
|
||||
// Misc
|
||||
private static final int DOOR_2 = 17230102;
|
||||
private static final int DOOR_3 = 17230103;
|
||||
private static final int DOOR_4 = 17230104;
|
||||
private static final int TEMPLATE_ID = 255;
|
||||
private static final int PROPHECY_MACHINE = 39540;
|
||||
private static final int ATELIA = 39542;
|
||||
private static final Location FIRST_ROOM_LOC = new Location(-88503, 184754, -10440, 48891);
|
||||
|
||||
public ChamberOfProphecies()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(KAIN_VAN_HALTER);
|
||||
addFirstTalkId(KAIN_VAN_HALTER, GRAIL, MYSTERIOUS_WIZARD);
|
||||
addTalkId(KAIN_VAN_HALTER, GRAIL, MYSTERIOUS_WIZARD);
|
||||
addSeeCreatureId(FERIN);
|
||||
addSeeCreatureId(VAN_HALTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q11027_PathOfDestinyOvercome.class.getSimpleName());
|
||||
if (qs != null)
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
if (hasQuestItems(player, PROPHECY_MACHINE))
|
||||
{
|
||||
takeItems(player, PROPHECY_MACHINE, 1);
|
||||
}
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (!isInInstance(world))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "31639-01.html":
|
||||
case "33996-01.html":
|
||||
case "33980-01.html":
|
||||
case "33980-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33996-02.html":
|
||||
{
|
||||
world.broadcastPacket(ExShowUsm.USM_Q015_E); // TODO not show usim movie
|
||||
world.despawnGroup("q10753_16_instance_grail");
|
||||
world.spawnGroup("q10753_16_instance_wizard");
|
||||
giveItems(player, ATELIA, 1);
|
||||
showOnScreenMsg(player, NpcStringId.TALK_TO_THE_MYSTERIOUS_WIZARD, ExShowScreenMessage.TOP_CENTER, 6000);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33980-03.html":
|
||||
{
|
||||
showOnScreenMsg(player, NpcStringId.THIS_CHOICE_CANNOT_BE_REVERSED, ExShowScreenMessage.TOP_CENTER, 6000);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33980-04.html":
|
||||
{
|
||||
showOnScreenMsg(player, NpcStringId.THIS_CHOICE_CANNOT_BE_REVERSED, ExShowScreenMessage.TOP_CENTER, 6000);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33980-05.html":
|
||||
{
|
||||
world.spawnGroup("q10753_16_instance_halter_2");
|
||||
world.setStatus(6);
|
||||
startQuestTimer("DESPAWN_WIZARD", 2000, npc, player);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "status":
|
||||
{
|
||||
if (world.isStatus(0))
|
||||
{
|
||||
htmltext = "31639-01.html";
|
||||
break;
|
||||
}
|
||||
htmltext = "31639-02.html";
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
world.getNpc(FERIN).deleteMe(); // probably needs another npc id for initial room
|
||||
world.spawnGroup("q10753_16_instance_halter_1_1");
|
||||
world.spawnGroup("wof_room1");
|
||||
player.teleToLocation(FIRST_ROOM_LOC);
|
||||
cancelQuestTimers("CHECK_STATUS");
|
||||
startQuestTimer("CHECK_STATUS", 7000, world.getNpc(KAIN_VAN_HALTER), null);
|
||||
break;
|
||||
}
|
||||
case "CHECK_STATUS":
|
||||
{
|
||||
switch (world.getStatus())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if (world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
final PlayerInstance pl = world.getFirstPlayer();
|
||||
startQuestTimer("SEY2", 14000, world.getNpc(FERIN), pl);
|
||||
startQuestTimer("SEY_KAIN", 24000, world.getNpc(VAN_HALTER), pl);
|
||||
startQuestTimer("OPEN_DOOR1", 5000, npc, pl);
|
||||
}
|
||||
startQuestTimer("CHECK_STATUS", 7000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if (world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
world.spawnGroup("wof_room2_1");
|
||||
world.setStatus(2);
|
||||
}
|
||||
startQuestTimer("CHECK_STATUS", 7000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
final PlayerInstance pl = world.getFirstPlayer();
|
||||
startQuestTimer("SEY3", 8000, world.getNpc(FERIN), pl);
|
||||
startQuestTimer("OPEN_DOOR2", 5000, npc, pl);
|
||||
}
|
||||
startQuestTimer("CHECK_STATUS", 7000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
world.setStatus(4);
|
||||
world.spawnGroup("wof_room3_2");
|
||||
world.openCloseDoor(DOOR_3, false);
|
||||
startQuestTimer("SEY_KAIN_1", 5000, world.getNpc(VAN_HALTER), world.getFirstPlayer());
|
||||
}
|
||||
startQuestTimer("CHECK_STATUS", 7000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if (world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
world.setStatus(5);
|
||||
world.spawnGroup("wof_room4");
|
||||
final PlayerInstance pl = world.getFirstPlayer();
|
||||
startQuestTimer("SEY_KAIN_2", 3000, world.getNpc(VAN_HALTER), pl);
|
||||
startQuestTimer("SEY4", 7000, world.getNpc(FERIN), pl);
|
||||
}
|
||||
else
|
||||
{
|
||||
startQuestTimer("CHECK_STATUS", 7000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "ATTACK":
|
||||
case "ATTACK1":
|
||||
case "ATTACK2":
|
||||
{
|
||||
npc.setRunning();
|
||||
((Attackable) npc).setCanReturnToSpawnPoint(false);
|
||||
if (npc.isScriptValue(0) && world.getAliveNpcs(MonsterInstance.class).isEmpty())
|
||||
{
|
||||
npc.setTarget(player);
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player);
|
||||
}
|
||||
else if (npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK)
|
||||
{
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 3000, monster ->
|
||||
{
|
||||
addAttackDesire(npc, monster);
|
||||
return;
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "OPEN_DOOR1":
|
||||
{
|
||||
cancelQuestTimers("ATTACK");
|
||||
world.setStatus(1);
|
||||
world.openCloseDoor(DOOR_2, true);
|
||||
world.spawnGroup("wof_room2");
|
||||
break;
|
||||
}
|
||||
case "OPEN_DOOR2":
|
||||
{
|
||||
cancelQuestTimers("ATTACK1");
|
||||
startQuestTimer("ATTACK2", 200, world.getNpc(VAN_HALTER), player, true);
|
||||
world.setStatus(3);
|
||||
world.spawnGroup("wof_room3");
|
||||
world.openCloseDoor(DOOR_3, true);
|
||||
break;
|
||||
}
|
||||
case "BROADCAST_TEXT":
|
||||
{
|
||||
npc.setTarget(player);
|
||||
npc.setRunning();
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player);
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.THAT_GUY_KAIN_HAS_A_SMARMY_FACE));
|
||||
player.sendPacket(new PlaySound(3, "Npcdialog1.apple_quest_7", 0, 0, 0, 0, 0));
|
||||
break;
|
||||
}
|
||||
case "SEY2":
|
||||
{
|
||||
if (npc.getId() == FERIN)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.YOU_CAN_T_DIE_HERE_I_DIDN_T_LEARN_RESURRECT_YET));
|
||||
player.sendPacket(new PlaySound(3, "Npcdialog1.apple_quest_4", 0, 0, 0, 0, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY_KAIN":
|
||||
{
|
||||
if (npc.getId() == VAN_HALTER)
|
||||
{
|
||||
startQuestTimer("ATTACK1", 200, npc, player, true);
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.GISELLE_WAS_SUCH_A_SWEET_CHILD));
|
||||
player.sendPacket(new PlaySound(3, "Npcdialog1.holter_quest_1", 0, 0, 0, 0, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY3":
|
||||
{
|
||||
if (npc.getId() == FERIN)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.DO_YOU_THINK_I_LL_GROW_TALLER_IF_I_EAT_LOTS_AND_LOTS));
|
||||
player.sendPacket(new PlaySound(3, "Npcdialog1.apple_quest_6", 0, 0, 0, 0, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY_KAIN_1":
|
||||
{
|
||||
if (npc.getId() == VAN_HALTER)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.SUCH_MONSTERS_IN_A_PLACE_LIKE_THIS_UNBELIEVABLE));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY_KAIN_2":
|
||||
{
|
||||
if (npc.getId() == VAN_HALTER)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.THAT_S_THE_MONSTER_THAT_ATTACKED_FAERON_YOU_RE_OUTMATCHED_HERE_GO_AHEAD_I_LL_CATCH_UP));
|
||||
player.sendPacket(new PlaySound(3, "Npcdialog1.holter_quest_6", 0, 0, 0, 0, 0));
|
||||
startQuestTimer("SEY_KAIN_3", 7000, npc, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY4":
|
||||
{
|
||||
if (npc.getId() == FERIN)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.GO_NOW_KAIN_CAN_HANDLE_THIS));
|
||||
startQuestTimer("REST", 5000, npc, player);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY_KAIN_3":
|
||||
{
|
||||
if (npc.getId() == VAN_HALTER)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.LEAVE_THIS_TO_ME_GO));
|
||||
startQuestTimer("SEY_KAIN_4", 1000, npc, player);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "REST":
|
||||
{
|
||||
if (npc.getId() == FERIN)
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, player);
|
||||
cancelQuestTimers("BROADCAST_TEXT");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SEY_KAIN_4":
|
||||
{
|
||||
world.setStatus(5);
|
||||
world.spawnGroup("q10753_16_instance_grail");
|
||||
showOnScreenMsg(player, NpcStringId.LEAVE_THIS_PLACE_TO_KAIN_NGO_TO_THE_NEXT_ROOM, ExShowScreenMessage.TOP_CENTER, 6000);
|
||||
world.openCloseDoor(DOOR_4, true);
|
||||
cancelQuestTimers("ATTACK2");
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, player);
|
||||
startQuestTimer("CLOSE", 15000, world.getNpc(GRAIL), player);
|
||||
break;
|
||||
}
|
||||
case "CLOSE":
|
||||
{
|
||||
if (player.calculateDistance2D(world.getNpc(GRAIL)) < 390)
|
||||
{
|
||||
world.openCloseDoor(DOOR_4, false);
|
||||
world.despawnGroup("q10753_16_instance_halter_1_1");
|
||||
world.despawnGroup("wof_room4");
|
||||
}
|
||||
else
|
||||
{
|
||||
startQuestTimer("CLOSE", 3000, npc, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DESPAWN_WIZARD":
|
||||
{
|
||||
world.despawnGroup("q10753_16_instance_wizard");
|
||||
break;
|
||||
}
|
||||
case "exit":
|
||||
{
|
||||
startQuestTimer("finish", 3000, npc, player);
|
||||
player.sendPacket(new SystemMessage(SystemMessageId.THIS_DUNGEON_WILL_EXPIRE_IN_S1_MINUTE_S_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES).addInt((int) 1.0D));
|
||||
final QuestState qs = player.getQuestState(Q11027_PathOfDestinyOvercome.class.getSimpleName());
|
||||
if (qs != null)
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "finish":
|
||||
{
|
||||
world.finishInstance(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q11027_PathOfDestinyOvercome.class.getSimpleName());
|
||||
String htmltext = null;
|
||||
switch (npc.getId())
|
||||
{
|
||||
case KAIN_VAN_HALTER:
|
||||
{
|
||||
if ((qs != null) && qs.isCond(4))
|
||||
{
|
||||
htmltext = "31639.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GRAIL:
|
||||
{
|
||||
htmltext = "33996.html";
|
||||
break;
|
||||
}
|
||||
case MYSTERIOUS_WIZARD:
|
||||
{
|
||||
if ((qs != null) && qs.isCond(4))
|
||||
{
|
||||
htmltext = "33980.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
if (world != null)
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case FERIN:
|
||||
{
|
||||
if (creature.isPlayer() && !creature.isDead() && npc.isScriptValue(0))
|
||||
{
|
||||
startQuestTimer("BROADCAST_TEXT", 12000, npc, (PlayerInstance) creature);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VAN_HALTER:
|
||||
{
|
||||
if (creature.isPlayer() && !creature.isDead() && world.isStatus(0))
|
||||
{
|
||||
startQuestTimer("ATTACK", 2000, npc, (PlayerInstance) creature, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new ChamberOfProphecies();
|
||||
}
|
||||
}
|
@ -232,13 +232,7 @@
|
||||
10900 Path to Strength
|
||||
10901 A Model Adventurer
|
||||
11024 Path of Destiny - Beginning
|
||||
11027 Path of Destiny - Overcome
|
||||
11028 Wind of Destiny - Encounter
|
||||
11029 Wind of Destiny - Promise
|
||||
11030 Wind of Destiny - Choice
|
||||
11041 Check Out the Situation
|
||||
11042 Suspicious Movements
|
||||
11043 Someone's Trace
|
||||
11044 Ketra Orcs...?
|
||||
11045 They Must Be Up to Something
|
||||
11046 Praying for Safety
|
||||
11041 Check Out the Situation
|
@ -1,5 +1,5 @@
|
||||
<html><body>Mysterios Wizard:<br>
|
||||
The deaths of your companions must have been shocking for you. I thought it was strange that Skeletons were appearing near the town.<br>
|
||||
Please let your guard down. I'm just a <font color="LEVEL">wizard passing by</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11025_PathOfDestinyProving 33980-02.html">Didn't you pass by last time too?</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11025_PathOfDestinyProving 1033980-02.html">Didn't you pass by last time too?</Button>
|
||||
</body></html>
|
@ -46,7 +46,7 @@ public class Q11025_PathOfDestinyProving extends Quest
|
||||
private static final int TARTI = 34505;
|
||||
private static final int RAYMOND = 30289;
|
||||
private static final int TERESIA = 33981;
|
||||
private static final int MYSTERIOUS_MAGE = 33980;
|
||||
private static final int MYSTERIOUS_MAGE = 1033980; // TODO: Find proper ID.
|
||||
private static final int SKELETON_ARCHER = 27529;
|
||||
private static final int SKELETON_WARRIOR = 27528;
|
||||
// Items
|
||||
@ -88,7 +88,7 @@ public class Q11025_PathOfDestinyProving extends Quest
|
||||
case "34505-08.html":
|
||||
case "34505-09.html":
|
||||
case "34505-12.html":
|
||||
case "33980-02.html":
|
||||
case "1033980-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
|
@ -1,4 +1,4 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
Who are you? Why would you try to kill Giselle all the way out here?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-02.html">I didn't know that it was Giselle. She attacked first!</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-02.html">I didn't know that it was Giselle. She attacked first!</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
That's not a good reason. The fast that you came all the way here alone is suspicious.<br>
|
||||
You were after Giselle's life in the first place!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-03.html">Tell him about High Priest Raymond</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-03.html">Tell him about High Priest Raymond</Button>
|
||||
</body></html>
|
@ -2,5 +2,5 @@
|
||||
The High Priest of Gludio?<br>
|
||||
Alright, then. Let's say I believe that Giselle has attacked you first. Vampires have a hard time controlling themselves, that's for sure...<br>
|
||||
However, what brings you all the way here? Why have you been looking for Giselle? I can't imagine you having business with her.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-04.html">I am here for you</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-04.html">I am here for you</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
Me?<br>
|
||||
What do you want with a wanderer like me? And I don't see why I should even help you. You tried to harm my sister! Good thing I stopped by to check on her.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-05.html">It's about the Prophecy Machine.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-05.html">It's about the Prophecy Machine.</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
Prophecy Machine?<br>
|
||||
What about the Prophecy Machine?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-06.html">Here, take a look.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-06.html">Here, take a look.</Button>
|
||||
</body></html>
|
@ -7,5 +7,5 @@
|
||||
<font color="LEVEL">The path will open to the Grail</font>.<br>
|
||||
... ...<br>
|
||||
So why are you showing me this?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-07.html">I know that you're interested in the Grail.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-07.html">I know that you're interested in the Grail.</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
I see. Did Karla tell you? So sge still remembers me mentioning the Grail that day.<br>
|
||||
Check this out first.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-08.html">This?</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-08.html">This?</Button>
|
||||
</body></html>
|
@ -2,5 +2,5 @@
|
||||
Surprised? I found it while passing Goddard Territory.<br>
|
||||
This looks similar to the Prophecy Machine that you showed me. It's probably a part of the whole.<br>
|
||||
And about what's written on your machine... I think I know what it's saying.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-09.html">Do tell.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-09.html">Do tell.</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
A red river flows... hard frost upon the earth. You see, Elmore rules over a <font color="LEVEL">cold part of the land</font>, which it once shared with Aden as Elmoreden. Now the whole continent is swarming with Shilen's bloody works.<br>
|
||||
But this part is surprising. When joined by one... the path will open to the Grail. Truly?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-10.html">Who is this one?</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-10.html">Who is this one?</Button>
|
||||
</body></html>
|
@ -3,5 +3,5 @@
|
||||
Ha! Even the prophecy of Ertheia describes me so, huh? Well, it's right. My mother was a commoner. A tragic farce, to be loved by the king! So here I am, a prince only in name. And descending with the winds to deliver from...yes, that is me. I happened to save <font color="LEVEL">Faeron</font> once. <font color="LEVEL">Kain</font> is your man!<br>
|
||||
The <font color="LEVEL">Grail</font>...if it's the same <font color="LEVEL">Grail</font>, then...anyway, you can read the rest of the prophecy with the fragment that I found, right?<br>
|
||||
Take it. Your village needs it more than I.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-11.html">Receive the fragment.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-11.html">Receive the fragment.</Button>
|
||||
</body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
Who are you? Why would you try to kill Giselle all the way out here?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-13.html">I didn't know that it was Giselle. She attacked first!</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-13.html">I didn't know that it was Giselle. She attacked first!</Button>
|
||||
</body></html>
|
@ -1,5 +1,5 @@
|
||||
<html><body>Kain Van Halter:<br>
|
||||
That's not a good reason. The fact that you came all the way here alone is suspicious.<br>
|
||||
You were after Giselle's life in the first place!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 31639-14.html">Tell him about High Priest Raymond</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11026_PathOfDestinyConviction 34339-14.html">Tell him about High Priest Raymond</Button>
|
||||
</body></html>
|
@ -48,7 +48,7 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
// NPCs
|
||||
private static final int TARTI = 34505;
|
||||
private static final int RAYMOND = 30289;
|
||||
private static final int KAIN_VAN_HALTER = 31639;
|
||||
private static final int KAIN_VAN_HALTER = 34339;
|
||||
private static final int MYSTERIOUS_MAGE = 31522;
|
||||
private static final int VAMPIRE_SOLDIER = 21582;
|
||||
private static final int VON_HELLMANN = 19566;
|
||||
@ -68,7 +68,7 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
addFirstTalkId(KAIN_VAN_HALTER, MYSTERIOUS_MAGE);
|
||||
addKillId(VAMPIRE_SOLDIER, VON_HELLMANN);
|
||||
registerQuestItems(WIND_SPIRIT);
|
||||
addCondMinLevel(41, "33963-06.html");
|
||||
addCondMinLevel(41, "33963-06.html"); // Not retail, just don't want to see it as unavailable when picking up next quest.
|
||||
addCondCompletedQuest(Q11025_PathOfDestinyProving.class.getSimpleName(), "33963-06.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_40_PATH_OF_DESTINY_CONVICTION);
|
||||
}
|
||||
@ -89,15 +89,15 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
case "34505-09.html":
|
||||
case "34505-11.html":
|
||||
case "30289-03.html":
|
||||
case "31639-02.html":
|
||||
case "31639-03.html":
|
||||
case "31639-04.html":
|
||||
case "31639-05.html":
|
||||
case "31639-06.html":
|
||||
case "31639-07.html":
|
||||
case "31639-08.html":
|
||||
case "31639-09.html":
|
||||
case "31639-11.html":
|
||||
case "34339-02.html":
|
||||
case "34339-03.html":
|
||||
case "34339-04.html":
|
||||
case "34339-05.html":
|
||||
case "34339-06.html":
|
||||
case "34339-07.html":
|
||||
case "34339-08.html":
|
||||
case "34339-09.html":
|
||||
case "34339-11.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
@ -145,7 +145,7 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31639-10.html":
|
||||
case "34339-10.html":
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
@ -244,7 +244,7 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
htmltext = "31639-01.html";
|
||||
htmltext = "34339-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -252,7 +252,7 @@ public class Q11026_PathOfDestinyConviction extends Quest
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
htmltext = "33980-01.html";
|
||||
htmltext = "31522-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -0,0 +1,5 @@
|
||||
<html><body>High Priest Raymond:<br>
|
||||
You have the Ertheia's prophecy device.<br>
|
||||
Then you must be the one I've been waiting for.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 30289-02.html">Story?</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>High Priest Raymond:<br>
|
||||
I was chosen one day. It was an oracle after so long, but the message was very ambiguous.<br>
|
||||
What I do remember is that someone will come to me with the Ertheia's prophecy device, and I must guide them to some place.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 30289-03.html">Where is it?</Button>
|
||||
</body></html>
|
@ -0,0 +1,7 @@
|
||||
<html><body>High Priest Raymond:<br>
|
||||
That place... Is where the one with noble blood must face eternal pain.<br>
|
||||
No one wants to go to the Fortress of the Dead.<br>
|
||||
But... That man reached that place because he wanted to, and you must go there to meet that man.<br>
|
||||
That's as far as I know from the oracle. All I can do is guide you to that place.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome teleport">Please send me there.</Button>
|
||||
</body></html>
|
@ -0,0 +1,6 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
Were you not able to meet up with Kain? He had come all the way here to find you...you must've just missed each other.<br>
|
||||
I told him that you were off to verify some information on the Prophecy Machine and he said he'd wait for you, but...<br>
|
||||
Were you able to wrap up your work on the Prophecy Machine?<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-02.html">"There was this Lich King."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
Mm. Can you show me the Prophecy Machine?<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-03.html">"Here it is."</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
Nothing seems to be specifically wrong with it. There's a blemish here, and there's nothing written on it.<br>
|
||||
It was probably left behind while it was being shattered in the Material Realm.<br>This is going to require a close look.<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-04.html">"I'll wait."</Button>
|
||||
</body></html>
|
@ -0,0 +1,11 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
<center><font color="LEVEL">A day will come, when</font><br1>
|
||||
<font color="LEVEL">Trapped under twisted skies, the god's voice no longer heard,</font><br>
|
||||
<font color="LEVEL">A red river flows over hard frost upon the earth.</font><br><font color="LEVEL">And One of half-noble blood, descending with the winds to deliver from torment, will come.</font><br1>
|
||||
<font color="LEVEL">The journey was started alone, but<br1>
|
||||
For the child of the Wind, standing at a dead end,</font><br1>
|
||||
<font color="LEVEL">When joined by one of nobility,<br>
|
||||
The path will open to the Grail.</font>.</center><br>
|
||||
So it wasn't a coincidence that you left on your journey.<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-05.html">"What do you mean?"</Button>
|
||||
</body></html>
|
@ -0,0 +1,9 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
This part right here.<br>
|
||||
<center><font color="LEVEL">Your lonely, solitary journey has begun.<br1>
|
||||
A small child in the middle of a blocked road appears</font>.</center><br>
|
||||
This phrase must be referring to you.<br1>
|
||||
This entire situation with you coming through the dimensional rift into the Material Realm alone, getting your abilities sealed in the process...<br>
|
||||
You're the Ertheia who will pursue the <font color="LEVEL">Grail</font> with <font color="LEVEL">Kain Van Halter</font>!<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-06.html">"Whoa, that's weird, but go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,6 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
The way to the grail...<br>
|
||||
I think I can guide you there. The moment I was born, and the moment I became a priest of Sayha, Sayha taught me a single line of prayer...that prayer will certainly lead you to your destination.<br>
|
||||
Now. You should go. I will find <font color="LEVEL">Kain Van Halter</font> and tell him where you went. I will send you to the Chamber of Prophecies.<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest ChamberOfProphecies enterInstance">"Thanks."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
I know you bear a great weight on your shoulders. But, don't give up. I'll send you to the Chamber of Prophecies again.<br>
|
||||
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q11027_PathOfDestinyOvercome 33932-08.html">"Whoa, that's weird, but go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>High Priest Gereth:<br>
|
||||
Did something happen? Kain Van Halter left, saying it was a wasted trip. Was the Grail not inside the Chamber of Prophecies?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome teleport_k">Please send me there.</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
Do you remember what you've heard about the immortality curse in the Ruins of Despair? I've learned about a... let's say, an antidote that might have something to do with this curse.<br>
|
||||
There is a place you can go to investigate it. It's not far from here.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-02.html">"Learn more".</Button>
|
||||
</body></html>
|
@ -0,0 +1,10 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">The land that was once united is now covered in blood</font>.<br>
|
||||
<font color="LEVEL">......</font><br>
|
||||
<font color="LEVEL">A half-blood destined to become a noble hero will descend upon frozen earth following the wind</font>.<br>
|
||||
<font color="LEVEL">......</font><br>
|
||||
<font color="LEVEL">Once his noble blood awakens he will lead you to the Holy Chalice</font>.<br>
|
||||
That's all I could decypher. It's a prophecy so the meaning is not entirely clear.<br>
|
||||
I was thinking about this once I returned from Faeron but my thoughts were interrupted when <font color="LEVEL">High Priest Raymond</font> from the <font color="LEVEL">Einhasad Temple</font> came up to me and told something even stranger.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-03.html">"So what did he say?".</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Tarti:<br>
|
||||
You need to reach level 85 as quickly as possible. If you have already reached level 76, talk to <font color="LEVEL">Tarti</font>, she is waiting for you!.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-04.html">"So what did he say?".</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
He said that all of this is just a challenge for you.<br>
|
||||
And then he added that only a mighty warrior like you can deal with it. And now... here you are. Strange, isn't it?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-05.html">Nod</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
I agree completely.<br>
|
||||
Go to the <font color="LEVEL">Einhasad Temple</font> and find <font color="LEVEL">Raymond</font>.<br>
|
||||
I'm sure this quest won't be easy... But you're strong enough.
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Tarti:<br>
|
||||
The quest can be performed by <font color="LEVEL">Ertheias</font> who have completed their second liberation, and other races who have completed their third profession. Character level must be 76! Requires completed quest <font color="LEVEL">Path of Destiny - Proving</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-07.html">"So what did he say?".</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Tarti:<br>
|
||||
You look so strange... What's happened?<br>
|
||||
Have you met with kain?
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Tarti:<br>
|
||||
Someone else? But it's only been... How did you manage to do it all so quickly?<br>
|
||||
Tell me what happened.
|
||||
</body></html>
|
@ -0,0 +1,280 @@
|
||||
/*
|
||||
* 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.Q11027_PathOfDestinyOvercome;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.data.xml.impl.CategoryData;
|
||||
import org.l2jmobius.gameserver.enums.CategoryType;
|
||||
import org.l2jmobius.gameserver.enums.Race;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.classchange.ExRequestClassChangeUi;
|
||||
|
||||
import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
|
||||
|
||||
/**
|
||||
* Path of Destiny - Overcome (11027)
|
||||
* @URL https://l2wiki.com/Path_of_Destiny_-_Overcome
|
||||
* @author Dmitri, Mobius
|
||||
*/
|
||||
public class Q11027_PathOfDestinyOvercome extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int TARTI = 34505;
|
||||
private static final int RAYMOND = 30289;
|
||||
private static final int GERETH = 33932;
|
||||
// Items
|
||||
private static final int PROPHECY_MACHINE = 39540;
|
||||
private static final int ATELIA = 39542;
|
||||
// Location
|
||||
private static final Location TELEPORT_1 = new Location(-78670, 251026, -2960);
|
||||
private static final Location TELEPORT_2 = new Location(-14180, 123840, -3120);
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 85;
|
||||
|
||||
public Q11027_PathOfDestinyOvercome()
|
||||
{
|
||||
super(11027);
|
||||
addStartNpc(TARTI);
|
||||
addTalkId(TARTI, RAYMOND, GERETH);
|
||||
registerQuestItems(PROPHECY_MACHINE, ATELIA);
|
||||
addCondMinLevel(77, "34505-11.html"); // Not retail, just don't want to see it as unavailable when picking up next quest.
|
||||
addCondCompletedQuest(Q11026_PathOfDestinyConviction.class.getSimpleName(), "34505-11.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_PATH_OF_DESTINY_OVERCOME);
|
||||
}
|
||||
|
||||
@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 "30289-03.html":
|
||||
case "33932-02.html":
|
||||
case "33932-03.html":
|
||||
case "33932-04.html":
|
||||
case "33932-05.html":
|
||||
case "33932-06.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34505-02.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34505-03.html":
|
||||
{
|
||||
htmltext = event;
|
||||
if (player.getLevel() >= MIN_LEVEL)
|
||||
{
|
||||
htmltext = "34505-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "34505-05.html":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30289-02.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
giveItems(player, PROPHECY_MACHINE, 1);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
player.teleToLocation(TELEPORT_1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "teleport_k":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
player.teleToLocation(TELEPORT_2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "34505-07.html":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
addExpAndSp(player, 14281098, 12852);
|
||||
qs.exitQuest(false, true);
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.FOURTH_CLASS_GROUP, player.getClassId().getId()) || //
|
||||
(CategoryData.getInstance().isInCategory(CategoryType.THIRD_CLASS_GROUP, player.getClassId().getId()) && (player.getRace() == Race.ERTHEIA)))
|
||||
{
|
||||
player.sendPacket(ExRequestClassChangeUi.STATIC_PACKET);
|
||||
}
|
||||
giveStoryBuffReward(npc, player);
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == TARTI)
|
||||
{
|
||||
htmltext = "34505-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TARTI:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
if (player.getLevel() >= MIN_LEVEL)
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = "34505-05.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34505-11.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "34505-05.html"; // TODO: Proper second talk dialog.
|
||||
break;
|
||||
}
|
||||
else if (qs.isCond(6) && hasQuestItems(player, ATELIA))
|
||||
{
|
||||
htmltext = "34505-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RAYMOND:
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30289-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GERETH:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
htmltext = "33932-01.html";
|
||||
}
|
||||
else if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6, true);
|
||||
htmltext = "33932-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return npc.getId() + "-01.html";
|
||||
}
|
||||
|
||||
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
public void OnPlayerLogin(OnPlayerLogin event)
|
||||
{
|
||||
if (Config.DISABLE_TUTORIAL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.getRace() == Race.ERTHEIA)
|
||||
{
|
||||
if (!CategoryData.getInstance().isInCategory(CategoryType.THIRD_CLASS_GROUP, player.getClassId().getId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!CategoryData.getInstance().isInCategory(CategoryType.FOURTH_CLASS_GROUP, player.getClassId().getId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCompleted())
|
||||
{
|
||||
player.sendPacket(ExRequestClassChangeUi.STATIC_PACKET);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11041_CheckOutTheSituation 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements 30648-02.html">Do you need help?</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
Do you remember what you've heard about the immortality curse in the Ruins of Despair? I've learned about a... let's say, an antidote that might have something to do with this curse.<br>
|
||||
There is a place you can go to investigate it. It's not far from here.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11041_CheckOutTheSituation 34505-02.html">"Learn more".</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
The place is called <font color="LEVEL">Ruins of Agony</font>. It's somewhat similar to the Ruins of Despair though there are quite a few differences.<br>
|
||||
The immortality curse is pretty common in that region. That's why I think that you should start there if you want to learn about its origins.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11041_CheckOutTheSituation 34505-03.html">So, what should I do?</Button><br>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Tarti:<br>
|
||||
To be honest, I'm not quite sure mysself what you need to look for. What I am sure is that this adventure will benefit you greatly. Consider it training.<br>
|
||||
On you go! Oh!.. You know about <font color="LEVEL">skill</font> training, right?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11041_CheckOutTheSituation 34505-04.html">"Tell me everything!".</Button>
|
||||
</body></html>
|
@ -0,0 +1,7 @@
|
||||
<html><body>Tarti:<br>
|
||||
In the <font color="LEVEL">Ruins of Agony</font> you will find <font color="LEVEL">Carcass Bats</font> and <font color="LEVEL">Vampires</font>.<br>
|
||||
I think Vampires might have something to do with the curse. I've heard that you can gain a <font color="LEVEL">Secret Material</font> if you defeat Carcass Bats and Vampires.<br>
|
||||
Find the Secret Material and give it to <font color="LEVEL">Guard Kallesin</font>.<br>
|
||||
I don't want you to get lost on your way to the ruins so I'll send you right there.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11041_CheckOutTheSituation teleport">Teleport</Button><br>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
@ -0,0 +1,207 @@
|
||||
/*
|
||||
* 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.Q11041_CheckOutTheSituation;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
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.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
|
||||
import quests.Q11042_SuspiciousMovements.Q11042_SuspiciousMovements;
|
||||
|
||||
/**
|
||||
* Check Out the Situation (11041)
|
||||
* @URL https://l2wiki.com/Check_Out_the_Situation
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q11041_CheckOutTheSituation extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int TARTI = 34505;
|
||||
private static final int RECLOUS = 30648;
|
||||
private static final int HOUND_TUREK = 24403;
|
||||
private static final int ORC_INFANTRYMAN_TUREK = 24404;
|
||||
// Items
|
||||
private static final ItemHolder SOE_RECLOUS = new ItemHolder(80682, 1);
|
||||
// Location
|
||||
private static final Location TRAINING_GROUNDS_TELEPORT = new Location(-88074, 112194, -3144);
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
private static final int MIN_LEVEL = 76;
|
||||
|
||||
public Q11041_CheckOutTheSituation()
|
||||
{
|
||||
super(11041);
|
||||
addStartNpc(TARTI);
|
||||
addTalkId(TARTI, RECLOUS);
|
||||
addKillId(HOUND_TUREK, ORC_INFANTRYMAN_TUREK);
|
||||
registerQuestItems(SOE_RECLOUS.getId());
|
||||
addCondMinLevel(MIN_LEVEL, "34505-06.html");
|
||||
addCondCompletedQuest(Q11026_PathOfDestinyConviction.class.getSimpleName(), "34505-06.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_85_CHECK_OUT_THE_SITUATION);
|
||||
}
|
||||
|
||||
@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 "34505-02.html":
|
||||
case "34505-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34505-03.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
player.teleToLocation(TRAINING_GROUNDS_TELEPORT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30648-02.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
addExpAndSp(player, 392513005, 353261);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
|
||||
// Initialize next quest.
|
||||
final Quest nextQuest = QuestManager.getInstance().getQuest(Q11042_SuspiciousMovements.class.getSimpleName());
|
||||
if (nextQuest != null)
|
||||
{
|
||||
nextQuest.newQuestState(player);
|
||||
}
|
||||
}
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == TARTI)
|
||||
{
|
||||
htmltext = "34505-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TARTI:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "34505-03.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RECLOUS:
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30648-01.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.isCond(1))
|
||||
{
|
||||
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
||||
if (killCount < 30)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, killCount);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
qs.unset(KILL_COUNT_VAR);
|
||||
giveItems(killer, SOE_RECLOUS);
|
||||
showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_TUREK_WAR_HOUNDS_AND_FOOTMEN_2.getId(), true, qs.getInt(KILL_COUNT_VAR)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements 30648-03.html">Do you need help?</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements 30648-04.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements teleport">Teleport</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11042_SuspiciousMovements 30648-06.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
@ -0,0 +1,202 @@
|
||||
/*
|
||||
* 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.Q11042_SuspiciousMovements;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
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.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import quests.Q11041_CheckOutTheSituation.Q11041_CheckOutTheSituation;
|
||||
import quests.Q11043_SomeonesTrace.Q11043_SomeonesTrace;
|
||||
|
||||
/**
|
||||
* Suspicious Movements (11042)
|
||||
* @URL https://l2wiki.com/Suspicious_Movements
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q11042_SuspiciousMovements extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RECLOUS = 30648;
|
||||
private static final int ARCHER_ORKOV_TUREK = 24405;
|
||||
private static final int BANDIT_ORKOV_TUREK = 24406;
|
||||
// Items
|
||||
private static final ItemHolder SOE_RECLOUS = new ItemHolder(80682, 1);
|
||||
// Location
|
||||
private static final Location TRAINING_GROUNDS_TELEPORT = new Location(-92290, 116512, -3472);
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
private static final int MIN_LEVEL = 77;
|
||||
|
||||
public Q11042_SuspiciousMovements()
|
||||
{
|
||||
super(11042);
|
||||
addStartNpc(RECLOUS);
|
||||
addTalkId(RECLOUS);
|
||||
addKillId(ARCHER_ORKOV_TUREK, BANDIT_ORKOV_TUREK);
|
||||
registerQuestItems(SOE_RECLOUS.getId());
|
||||
addCondMinLevel(MIN_LEVEL, "30648-07.html");
|
||||
addCondCompletedQuest(Q11041_CheckOutTheSituation.class.getSimpleName(), "30648-07.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_85_SUSPICIOUS_MOVEMENTS);
|
||||
}
|
||||
|
||||
@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 "30648-03.html":
|
||||
case "30648-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30648-02.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
player.teleToLocation(TRAINING_GROUNDS_TELEPORT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30648-06.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
addExpAndSp(player, 581704958, 523534);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
|
||||
// Initialize next quest.
|
||||
final Quest nextQuest = QuestManager.getInstance().getQuest(Q11043_SomeonesTrace.class.getSimpleName());
|
||||
if (nextQuest != null)
|
||||
{
|
||||
nextQuest.newQuestState(player);
|
||||
}
|
||||
}
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == RECLOUS)
|
||||
{
|
||||
htmltext = "30648-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case RECLOUS:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30648-02.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30648-05.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.isCond(1))
|
||||
{
|
||||
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
||||
if (killCount < 30)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, killCount);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
qs.unset(KILL_COUNT_VAR);
|
||||
giveItems(killer, SOE_RECLOUS);
|
||||
showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_TUREK_ARCHERS_AND_SKIRMISHERS_2.getId(), true, qs.getInt(KILL_COUNT_VAR)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-01.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-01.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-02.html
vendored
Normal file
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-02.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace 30648-03.html">Do you need help?</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-03.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-03.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace 30648-04.html">Confirm</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-04.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-04.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace teleport">Teleport</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-05.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-05.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11043_SomeonesTrace 30648-06.html">Confirm</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-06.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-06.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
3
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-07.html
vendored
Normal file
3
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11043_SomeonesTrace/30648-07.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
@ -0,0 +1,176 @@
|
||||
/*
|
||||
* 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.Q11043_SomeonesTrace;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
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 org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import quests.Q11042_SuspiciousMovements.Q11042_SuspiciousMovements;
|
||||
import quests.Q11044_KetraOrcs.Q11044_KetraOrcs;
|
||||
|
||||
/**
|
||||
* Someone's Trace (11043)
|
||||
* @URL https://l2wiki.com/Someone%27s_Trace
|
||||
* @author Dmitri, Mobius
|
||||
*/
|
||||
public class Q11043_SomeonesTrace extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RECLOUS = 30648;
|
||||
private static final int LORD_OF_THE_ORCS_TUREK = 24407;
|
||||
private static final int SEER_ORC_TUREK = 24408;
|
||||
// Items
|
||||
private static final int ORC_EMPOWERING_POTION = 80675;
|
||||
private static final ItemHolder SOE_RECLOUS = new ItemHolder(80682, 1);
|
||||
// Location
|
||||
private static final Location TRAINING_GROUNDS_TELEPORT = new Location(-92680, 112394, -3696);
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 79;
|
||||
|
||||
public Q11043_SomeonesTrace()
|
||||
{
|
||||
super(11043);
|
||||
addStartNpc(RECLOUS);
|
||||
addTalkId(RECLOUS);
|
||||
addKillId(LORD_OF_THE_ORCS_TUREK, SEER_ORC_TUREK);
|
||||
registerQuestItems(SOE_RECLOUS.getId(), ORC_EMPOWERING_POTION);
|
||||
addCondMinLevel(MIN_LEVEL, "30648-07.html");
|
||||
addCondCompletedQuest(Q11042_SuspiciousMovements.class.getSimpleName(), "30648-07.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_85_SOMEONE_S_TRACE);
|
||||
}
|
||||
|
||||
@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 "30648-03.html":
|
||||
case "30648-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30648-02.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
player.teleToLocation(TRAINING_GROUNDS_TELEPORT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30648-06.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
addExpAndSp(player, 750392145, 675352);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
|
||||
// Initialize next quest.
|
||||
final Quest nextQuest = QuestManager.getInstance().getQuest(Q11044_KetraOrcs.class.getSimpleName());
|
||||
if (nextQuest != null)
|
||||
{
|
||||
nextQuest.newQuestState(player);
|
||||
}
|
||||
}
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == RECLOUS)
|
||||
{
|
||||
htmltext = "30648-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case RECLOUS:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30648-02.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30648-05.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.isCond(1))
|
||||
{
|
||||
if (giveItemRandomly(killer, ORC_EMPOWERING_POTION, 1, 15, 0.5, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
giveItems(killer, SOE_RECLOUS);
|
||||
showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-01.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-01.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-02.html
vendored
Normal file
5
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-02.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs 30648-03.html">Do you need help?</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-03.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-03.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs 30648-04.html">Confirm</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-04.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-04.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs teleport">Teleport</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-05.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-05.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11044_KetraOrcs 30648-06.html">Confirm</Button>
|
||||
</body></html>
|
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-06.html
vendored
Normal file
4
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-06.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
3
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-07.html
vendored
Normal file
3
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/30648-07.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
202
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/Q11044_KetraOrcs.java
vendored
Normal file
202
L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q11044_KetraOrcs/Q11044_KetraOrcs.java
vendored
Normal file
@ -0,0 +1,202 @@
|
||||
/*
|
||||
* 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.Q11044_KetraOrcs;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
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.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import quests.Q11043_SomeonesTrace.Q11043_SomeonesTrace;
|
||||
import quests.Q11045_TheyMustBeUpToSomething.Q11045_TheyMustBeUpToSomething;
|
||||
|
||||
/**
|
||||
* Ketra Orcs...? (11044)
|
||||
* @URL https://l2wiki.com/Ketra_Orcs...%3F
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q11044_KetraOrcs extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RECLOUS = 30648;
|
||||
private static final int KETRA_ORC_BANDIT = 24409;
|
||||
private static final int KETRA_ORC_WARRIOR = 24410;
|
||||
// Items
|
||||
private static final ItemHolder SOE_RECLOUS = new ItemHolder(80682, 1);
|
||||
// Location
|
||||
private static final Location TRAINING_GROUNDS_TELEPORT = new Location(-94271, 109153, -3856);
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
private static final int MIN_LEVEL = 81;
|
||||
|
||||
public Q11044_KetraOrcs()
|
||||
{
|
||||
super(11044);
|
||||
addStartNpc(RECLOUS);
|
||||
addTalkId(RECLOUS);
|
||||
addKillId(KETRA_ORC_BANDIT, KETRA_ORC_WARRIOR);
|
||||
registerQuestItems(SOE_RECLOUS.getId());
|
||||
addCondMinLevel(MIN_LEVEL, "30648-07.html");
|
||||
addCondCompletedQuest(Q11043_SomeonesTrace.class.getSimpleName(), "30648-07.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_85_KETRA_ORCS);
|
||||
}
|
||||
|
||||
@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 "30648-03.html":
|
||||
case "30648-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30648-02.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
player.teleToLocation(TRAINING_GROUNDS_TELEPORT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30648-06.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
addExpAndSp(player, 452984693, 407684);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
|
||||
// Initialize next quest.
|
||||
final Quest nextQuest = QuestManager.getInstance().getQuest(Q11045_TheyMustBeUpToSomething.class.getSimpleName());
|
||||
if (nextQuest != null)
|
||||
{
|
||||
nextQuest.newQuestState(player);
|
||||
}
|
||||
}
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == RECLOUS)
|
||||
{
|
||||
htmltext = "30648-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case RECLOUS:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30648-02.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30648-05.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.isCond(1))
|
||||
{
|
||||
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
||||
if (killCount < 30)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, killCount);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
qs.unset(KILL_COUNT_VAR);
|
||||
giveItems(killer, SOE_RECLOUS);
|
||||
showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_KETRA_RAIDERS_AND_WARRIORS_2.getId(), true, qs.getInt(KILL_COUNT_VAR)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething 30648-03.html">Do you need help?</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething 30648-04.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething teleport">Teleport</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11045_TheyMustBeUpToSomething 30648-06.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
@ -0,0 +1,176 @@
|
||||
/*
|
||||
* 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.Q11045_TheyMustBeUpToSomething;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
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 org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import quests.Q11044_KetraOrcs.Q11044_KetraOrcs;
|
||||
import quests.Q11046_PrayingForSafety.Q11046_PrayingForSafety;
|
||||
|
||||
/**
|
||||
* They Must Be Up to Something (11045)
|
||||
* @URL https://l2wiki.com/They_Must_Be_Up_to_Something
|
||||
* @author Dmitri, Mobius
|
||||
*/
|
||||
public class Q11045_TheyMustBeUpToSomething extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RECLOUS = 30648;
|
||||
private static final int KETRA_ORC_SCOUT = 24411;
|
||||
private static final int KETRA_ORC_SEER = 24412;
|
||||
// Items
|
||||
private static final int KETRA_ORDER = 80676;
|
||||
private static final ItemHolder SOE_RECLOUS = new ItemHolder(80682, 1);
|
||||
// Location
|
||||
private static final Location TRAINING_GROUNDS_TELEPORT = new Location(-94258, 102141, -3472);
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 82;
|
||||
|
||||
public Q11045_TheyMustBeUpToSomething()
|
||||
{
|
||||
super(11045);
|
||||
addStartNpc(RECLOUS);
|
||||
addTalkId(RECLOUS);
|
||||
addKillId(KETRA_ORC_SCOUT, KETRA_ORC_SEER);
|
||||
registerQuestItems(SOE_RECLOUS.getId(), KETRA_ORDER);
|
||||
addCondMinLevel(MIN_LEVEL, "30648-07.html");
|
||||
addCondCompletedQuest(Q11044_KetraOrcs.class.getSimpleName(), "30648-07.html");
|
||||
setQuestNameNpcStringId(NpcStringId.LV_76_85_THEY_MUST_BE_UP_TO_SOMETHING);
|
||||
}
|
||||
|
||||
@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 "30648-03.html":
|
||||
case "30648-04.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30648-02.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
player.teleToLocation(TRAINING_GROUNDS_TELEPORT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30648-06.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
addExpAndSp(player, 514892511, 463403);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
|
||||
// Initialize next quest.
|
||||
final Quest nextQuest = QuestManager.getInstance().getQuest(Q11046_PrayingForSafety.class.getSimpleName());
|
||||
if (nextQuest != null)
|
||||
{
|
||||
nextQuest.newQuestState(player);
|
||||
}
|
||||
}
|
||||
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:
|
||||
{
|
||||
if (npc.getId() == RECLOUS)
|
||||
{
|
||||
htmltext = "30648-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case RECLOUS:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30648-02.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30648-05.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.isCond(1))
|
||||
{
|
||||
if (giveItemRandomly(killer, KETRA_ORDER, 1, 15, 0.5, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
giveItems(killer, SOE_RECLOUS);
|
||||
showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety 30648-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, that's you they've sent from Gludio? I use this material to deal with the curse. Thank you!<br>
|
||||
It will be hard to pull this one off, so if you excuse me...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety 30648-03.html">Do you need help?</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety 30648-04.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety teleport">Teleport</Button>
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Tarti:<br>
|
||||
<font color="LEVEL">Artey</font> cannot participate in this quest! The minimum level should be 20, and players who have not completed 2nd profession.<br>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11046_PrayingForSafety 34505-02.html">Confirm</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Guard Kallesin:<br>
|
||||
So, what brings you to me? Ah, is it about the Secret Material?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11027_PathOfDestinyOvercome 34505-02.html">Confirm</Button>
|
||||
</body></html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user