Initial changes.
This commit is contained in:
parent
508df9c322
commit
13972a64e1
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>L2J_Mobius_Classic_2.4_SecretOfEmpire</name>
|
||||
<name>L2J_Mobius_Classic_3.0_TheKamael</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE xml>
|
||||
<project name="L2J_Mobius_Classic_2.4_SecretOfEmpire" default="cleanup" basedir=".">
|
||||
<project name="L2J_Mobius_Classic_3.0_TheKamael" default="cleanup" basedir=".">
|
||||
<description>
|
||||
This file is part of the L2J Mobius project.
|
||||
|
||||
@ -131,15 +131,15 @@
|
||||
</target>
|
||||
|
||||
<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_2.4_SecretOfEmpire.zip" basedir="${build.dist}" level="9" />
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_3.0_TheKamael.zip" basedir="${build.dist}" level="9" />
|
||||
</target>
|
||||
|
||||
<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_2.4_SecretOfEmpire.zip" basedir="${datapack}" update="true" level="9" />
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_3.0_TheKamael.zip" basedir="${datapack}" update="true" level="9" />
|
||||
</target>
|
||||
|
||||
<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_2.4_SecretOfEmpire.zip" basedir="." includes="readme.txt" update="true" level="9" />
|
||||
<zip destfile="${build}/L2J_Mobius_Classic_3.0_TheKamael.zip" basedir="." includes="readme.txt" update="true" level="9" />
|
||||
</target>
|
||||
|
||||
<target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">
|
||||
|
@ -101,8 +101,8 @@ MaximumOnlineUsers = 2000
|
||||
# Numbers of protocol revisions that server allows to connect.
|
||||
# Delimiter is ;
|
||||
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
|
||||
# Secret of Empire: 166
|
||||
AllowedProtocolRevisions = 166
|
||||
# The Kamael: 228
|
||||
AllowedProtocolRevisions = 228
|
||||
|
||||
# Displays server type next to the server name on character selection.
|
||||
# Notes:
|
||||
|
@ -39,6 +39,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=center><button action="bypass -h admin_html teleports/TownAreas/dwarf_starting.htm" value="Dwarven" width=100 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
|
||||
<td align=center><button action="bypass -h admin_html teleports/TownAreas/kamael_starting.htm" value="Kamael" width=100 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
|
@ -0,0 +1,15 @@
|
||||
<html><title>Admin Teleports</title>
|
||||
<body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td width=40><button value="Main" action="bypass -h admin_admin" width=40 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
|
||||
<td width=180><center>Kamael Village</center></td>
|
||||
<td width=40><button value="Back" action="bypass -h admin_html teleports/TownAreas.htm" width=40 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
|
||||
</tr></table>
|
||||
</center>
|
||||
<br>
|
||||
<center>
|
||||
<font color="aadd77">Kamael Village</font><br>
|
||||
<button action="bypass -h admin_move_to -116934 46616 368" value="Village Center" width=120 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
|
||||
</center>
|
||||
</body></html>
|
@ -37,6 +37,7 @@ public class FleeMonsters extends AbstractNpcAI
|
||||
private static final int[] MOBS =
|
||||
{
|
||||
20002, // Rabbit
|
||||
22228, // Grey Elpy
|
||||
20432, // Elpy
|
||||
};
|
||||
// Misc
|
||||
|
@ -71,7 +71,7 @@ public class PolymorphingOnAttack extends AbstractNpcAI
|
||||
{
|
||||
NpcStringId.PREPARE_TO_DIE,
|
||||
NpcStringId.I_LL_DOUBLE_MY_STRENGTH,
|
||||
NpcStringId.IT_S_STRONGER_THAN_EXPECTED_2
|
||||
NpcStringId.IT_S_STRONGER_THAN_EXPECTED
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
201
|
||||
202
|
||||
203
|
||||
204
|
||||
205
|
||||
206
|
||||
630 Pirate Treasure Hunt
|
||||
664 Quarrels Time
|
||||
910 Request from the Red Libra Guild - Basic
|
||||
@ -5,6 +11,7 @@
|
||||
912 Request from the Red Libra Guild - Advanced
|
||||
913 Request from the Red Libra Guild - Super Advanced
|
||||
914 Request from the Red Libra Guild - Lv. 5
|
||||
10673
|
||||
10861 Monster Arena - The Birth of a Warrior
|
||||
10862 Monster Arena - Challenge: 10 battles
|
||||
10863 Monster Arena - New Challenge: 15 battles
|
||||
@ -13,4 +20,22 @@
|
||||
10867 Gone Missing
|
||||
10868 The Dark Side of Power
|
||||
10870 Unfinished Device
|
||||
10871 Death to the Pirate King!
|
||||
10871 Death to the Pirate King!
|
||||
10960
|
||||
10961
|
||||
10962
|
||||
10963
|
||||
10964
|
||||
10965
|
||||
10966
|
||||
10967
|
||||
10981
|
||||
10982
|
||||
10983
|
||||
10984
|
||||
10985
|
||||
10986
|
||||
10987
|
||||
10988
|
||||
10989
|
||||
10990
|
@ -1,6 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
Find Felix in Hunters Village. He was a Knight of Dion and fell in love with a maiden there.<br>
|
||||
He betrayed his knighthood and ran away with her when the uprising of the peasants led to the oppression of the Knights.<br>
|
||||
The records of the Knights Guild speak of the most powerful Knight being obsessed with his title and disappearing.<br>
|
||||
It could be him.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
My young friend, you do not have enough experience to become a Knight of the Phoenix. I see your passion and I hope that you will keep it in your heart, but it is not enough - only through the experience of battle you can acquire the power that will allow you not to deviate from your faith in the era of untruth.<br>
|
||||
Come back when you are a little older and wiser. When you are ready, I will give you a mission to check if you are ready to become a Knight.<br>
|
||||
(Quest for characters whose level is 76 or higher.)<br>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
Have you not already received the title of the Knight of the Phoenix?
|
||||
My brother, you do not have to go through the test of the squire again.
|
||||
Your duty is to fight for your faith and the glory of the lord.<br>
|
||||
</body></html>
|
@ -1,7 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
Do you want to become a Phoenix Knight?
|
||||
Well, then you must pass <font color="LEVEL">Saga Phoenix Knight</font>,
|
||||
To prove that you are not just a reckless, quick-tempered warrior, but
|
||||
Warrior with the soul of this Knight. It is a form of ritual and the process of training,
|
||||
They must be performed by all who wish to become a Knight of the Phoenix.<br>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Master Sedrick.<br>
|
||||
You seem different.<br>
|
||||
Do you think you know about trust? What is most important is to be trusted by others and to trust yourself. Can you answer my question now?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 30849-05.htm">"I must conduct myself honorably and practice justice."</button>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Grand Master Sedrick.<br>
|
||||
There are many perspectives on justice.<br>
|
||||
You have to fight by the light of the justice in your heart.<br>
|
||||
My traveling days are over. You have transcended your country or religion as a Knight or Paladin with your values.<br>
|
||||
Lead your life by the candle in your heart!
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
You need skill to protect justice.<br>
|
||||
You have obtained enlightenment but still need the protection as a Knight of the temple.<br>
|
||||
(Only a character of level 76 or above can transfer class. Do not abandon the quest until class transfer is complete!)
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
Come back when your body is as strong as your faith.<br>
|
||||
(Only a character of level 76 or above may transfer classes. Don't abandon the quest until class transfer is complete.)
|
||||
</body></html>
|
@ -1,7 +0,0 @@
|
||||
<html><body>Grand Master Sedrick:<br>
|
||||
Long ago, a peasant revolt broke out in a small village in Dion Territory. When talks failed, the local manor lord resorted to force. Obeying their orders, the top Knights of the guild fought for him.<br>
|
||||
However, many young Knights followed their conscience and sided with the peasants. The order was split, each side feeling righteous.<br>
|
||||
I wonder if either side was right.<font color="LEVEL"> Could a Knight just be defending his ego? There is no such thing as true justice.</font> Whether a Paladin or Dark Avenger, one must choose and defend that choice with conviction!<br>
|
||||
Will you take this training journey, as written in the book of ancient rites? Then you'll be able to answer my question!<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 30849-01a.htm">"I will!"</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
To save the daughter of Master Felix, you need a dish, known as the "Ice Flower". He can only cook Gurman Rifken from Aden. Try to contact him
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
Did you bring the "Ice Flower"?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31277-03.htm">Give away the "Ice Flower"</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
You have received the Resonance Amulet. Activate the Stone of Knowledge to the south of the Tower of Insolence.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
Have you come for the third Amulet of Resonance?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31277-05.htm">Yes</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
Master Felix says that the third Amulet of Resonance is in Archon Halisha. <font color="LEVEL"> To summon him, you need to destroy his minions in the Molten Tops and collect the Halish Badges. Destroy these monsters and call Archon Halisha. The aim of the hunt is the Ranger of the Swamp, Burning Drake, Flamey Ifrit, Ikedith</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Felix:<br>
|
||||
My daughter is sick and I need your help.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31277-01.htm">How can I help?</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Eric Ramshart:<br>
|
||||
Now activate the last stone.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Eric Ramshart:<br>
|
||||
Thank you! You helped avenge me, I will give you the fourth amulet.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31631-01.htm">Get the Amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 1:<br>
|
||||
You brought the amulet and the inscription appeared on the stone - <font color="LEVEL">The second Amulet of Resonance is in the Keepers of Forbidden Knowledge next to the second Stone of Knowledge.</font><br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 1:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31646-01.htm">Bring the Amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 2:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 2:<br>
|
||||
Now you can go in search of the third stone.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 2:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31647-04.htm">Bring the Amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 2:<br>
|
||||
The third Amulet of Resonance is in Master Felix from the Village of the Hunters.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 2:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31647-01.htm">Bring the Amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 3:<br>
|
||||
When the activation of the third Stone of Knowledge ended, he showed the location of the next stone. The fourth Stone of Knowledge is on the Speaking Island, and the last Amulet of Resonance is near the stone. Go there.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 3:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31651-01.htm">Bring the Amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Table of Vision 4:<br>
|
||||
Shadow of Beleth appeared nearby.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 4:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31654-03.htm">Bring the Amulet</button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Table of Vision 4:<br>
|
||||
You have successfully activated the last stone.<br>
|
||||
Never forget what you learned during this pilgrimage. Go to Grand Master Cedric in Aden and tell him about your wanderings.
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Table of Vision 4:<br>
|
||||
You came to the stone and he began to vibrate.<br>
|
||||
The last amulet is at <font color="LEVEL">Shadows of Beleth</font><br>
|
||||
Are you ready to fight him?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 31654-01.htm">Yes</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Gourmet Rifken needed to prepare the dish <font color="LEVEL">Fragments of the Crystal of Cold. </font> These fragments can be obtained by destroying the monsters to the southeast of Aden.<font color="LEVEL">The aim of the hunt is Ice Monster, Spirit of the Drowned One, Soul of Coldness, Phantom of Solitude, Cold Beast, Spirit of Cold.</font><br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Did you get all the ingredients?</font><br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 34268-03.htm">Give Shards.</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Rifken prepared the Ice Flower and said that his healing effect is manifested if you apply it to your head. Take the dish to Master Felix in the Village of the Hunters.<br>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
I'll help you make "Ice Flower" but I need<font color="LEVEL">50 Fragments of the Crystal of Cold.</font><br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00070_SagaOfThePhoenixKnight 34268-01.htm">I'll get them!!!</button>
|
||||
</body></html>
|
@ -1,536 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package quests.Q00070_SagaOfThePhoenixKnight;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.base.ClassId;
|
||||
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.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @author QuangNguyen
|
||||
*/
|
||||
public class Q00070_SagaOfThePhoenixKnight extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int SEDRICK = 30849;
|
||||
private static final int FELIX = 31277;
|
||||
private static final int RIFKEN = 34268;
|
||||
private static final int ERIC_RAMSHEART = 31631;
|
||||
private static final int TABLET_OF_VISION_1 = 31646;
|
||||
private static final int TABLET_OF_VISION_2 = 31647;
|
||||
private static final int TABLET_OF_VISION_3 = 31651;
|
||||
private static final int TABLET_OF_VISION_4 = 31654;
|
||||
// Monsters
|
||||
private static final int ICE_MONSTER = 27316;
|
||||
private static final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
private static final int SOUL_OF_COLD = 27318;
|
||||
private static final int GHOST_OF_SOLITUDE = 27319;
|
||||
private static final int FIEND_OF_COLD = 27320;
|
||||
private static final int SPIRIT_OF_COLD = 27321;
|
||||
private static final int SPAMPLAND_WATCHMAN = 21650;
|
||||
private static final int FLAME_DRAKE = 21651;
|
||||
private static final int FIERY_IFRIT = 21652;
|
||||
private static final int IKEDIT = 21653;
|
||||
private static final int GUARDIAN_OF_FOBIDDEN_KNOWLEDGE = 27214; // check drop item
|
||||
private static final int FALLEN_KNIGHT_ADHIL = 27286;
|
||||
private static final int HALISHA_ARCHON = 27219; // blazing spawn
|
||||
private static final int BELETH_SHADOW = 27278; // blazing spawn
|
||||
// Items
|
||||
private static final int ICE_CRYSTAL_FRAGMENT = 49804;
|
||||
private static final int HALISHA_BADGE = 7485;
|
||||
private static final int RESONANCE_AMULET = 7268;
|
||||
private static final int RESONANCE_AMULET_2 = 7299;
|
||||
private static final int RESONANCE_AMULET_3 = 7330;
|
||||
private static final int RESONANCE_AMULET_4 = 7361;
|
||||
private static final int PURE_ICE = 7534;
|
||||
// Reward
|
||||
private static final int BOOK_GOLD_LION = 90038;
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
|
||||
public Q00070_SagaOfThePhoenixKnight()
|
||||
{
|
||||
super(70);
|
||||
addStartNpc(SEDRICK);
|
||||
addTalkId(SEDRICK, FELIX, RIFKEN, ERIC_RAMSHEART, TABLET_OF_VISION_1, TABLET_OF_VISION_2, TABLET_OF_VISION_3, TABLET_OF_VISION_4);
|
||||
addKillId(ICE_MONSTER, SPIRIT_OF_A_DROWNED, SOUL_OF_COLD, GHOST_OF_SOLITUDE, FIEND_OF_COLD, SPIRIT_OF_COLD, SPAMPLAND_WATCHMAN, FLAME_DRAKE, FIERY_IFRIT, IKEDIT, GUARDIAN_OF_FOBIDDEN_KNOWLEDGE, FALLEN_KNIGHT_ADHIL, HALISHA_ARCHON, BELETH_SHADOW);
|
||||
registerQuestItems(PURE_ICE, ICE_CRYSTAL_FRAGMENT, HALISHA_BADGE);
|
||||
addCondMinLevel(76, "30849-nolvl.htm");
|
||||
addCondClassId(ClassId.PALADIN, "30849-checkclass.htm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "30849-02a.htm":
|
||||
{
|
||||
htmltext = "30849-03.htm";
|
||||
break;
|
||||
}
|
||||
case "30849-01a.htm":
|
||||
{
|
||||
if (qs.isCond(0))
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31277-01.htm":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "34268-01.htm":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "34268-03.htm":
|
||||
{
|
||||
if (qs.isCond(4))
|
||||
{
|
||||
qs.setCond(5);
|
||||
takeItems(player, ICE_CRYSTAL_FRAGMENT, -1);
|
||||
giveItems(player, PURE_ICE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31277-03.htm":
|
||||
{
|
||||
if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6);
|
||||
giveItems(player, RESONANCE_AMULET, 1);
|
||||
takeItems(player, PURE_ICE, -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31646-01.htm":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
qs.setCond(7);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31647-01.htm":
|
||||
{
|
||||
if (qs.isCond(8))
|
||||
{
|
||||
addSpawn(FALLEN_KNIGHT_ADHIL, npc, true, 0, true);
|
||||
qs.setCond(9);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31647-04.htm":
|
||||
{
|
||||
if (qs.isCond(10))
|
||||
{
|
||||
qs.setCond(11);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31277-05.htm":
|
||||
{
|
||||
if (qs.isCond(11))
|
||||
{
|
||||
qs.setCond(12);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31651-01.htm":
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
qs.setCond(15);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31654-01.htm":
|
||||
{
|
||||
if (qs.isCond(15))
|
||||
{
|
||||
qs.setCond(16);
|
||||
addSpawn(BELETH_SHADOW, npc, true, 0, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31631-01.htm":
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
qs.setCond(17);
|
||||
giveItems(player, RESONANCE_AMULET_4, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31654-03.htm":
|
||||
{
|
||||
if (qs.isCond(17))
|
||||
{
|
||||
qs.setCond(18);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30849-05.htm":
|
||||
{
|
||||
if (qs.isCond(18))
|
||||
{
|
||||
if ((player.getLevel() < 76) || (player.getBaseClass() != 5))
|
||||
{
|
||||
htmltext = "30849-nolvl.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
addExpAndSp(player, 3100000, 103000);
|
||||
rewardItems(player, BOOK_GOLD_LION, 1);
|
||||
takeItems(player, RESONANCE_AMULET, -1);
|
||||
takeItems(player, RESONANCE_AMULET_2, -1);
|
||||
takeItems(player, RESONANCE_AMULET_3, -1);
|
||||
takeItems(player, RESONANCE_AMULET_4, -1);
|
||||
takeItems(player, HALISHA_BADGE, -1);
|
||||
qs.exitQuest(false, true);
|
||||
player.setClassId(90);
|
||||
player.setBaseClass(90);
|
||||
player.broadcastUserInfo();
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5103, 1, 1000, 0));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance talker)
|
||||
{
|
||||
final QuestState qs = getQuestState(talker, true);
|
||||
String htmltext = getNoQuestMsg(talker);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == SEDRICK)
|
||||
{
|
||||
htmltext = "30849.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SEDRICK:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30849-01a.htm";
|
||||
}
|
||||
else if (qs.isCond(18))
|
||||
{
|
||||
htmltext = "30849-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FELIX:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31277.htm";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31277-01.htm";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "31277-02.htm";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "31277-03.htm";
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
htmltext = "31277-04.htm";
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
htmltext = "31277-05.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RIFKEN:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "34268.htm";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "34268-01.htm";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "34268-02.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_1:
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
htmltext = "31646.htm";
|
||||
}
|
||||
else if (qs.isCond(7))
|
||||
{
|
||||
htmltext = "31646-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_2:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
htmltext = "31647.htm";
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
htmltext = "31647-02.htm";
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
htmltext = "31647-03.htm";
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
htmltext = "31647-04.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_3:
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
htmltext = "31651.htm";
|
||||
}
|
||||
else if (qs.isCond(15))
|
||||
{
|
||||
htmltext = "31651-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_4:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
htmltext = "31654.htm";
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
htmltext = "31654-02.htm";
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
htmltext = "31654-03.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ERIC_RAMSHEART:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
htmltext = "31631.htm";
|
||||
}
|
||||
else if (qs.isCond(17))
|
||||
{
|
||||
htmltext = "31631-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(talker);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ICE_MONSTER:
|
||||
case SPIRIT_OF_A_DROWNED:
|
||||
case SOUL_OF_COLD:
|
||||
case FIEND_OF_COLD:
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FALLEN_KNIGHT_ADHIL:
|
||||
{
|
||||
if (qs.isCond(9))
|
||||
{
|
||||
qs.setCond(10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPAMPLAND_WATCHMAN:
|
||||
case FLAME_DRAKE:
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HALISHA_ARCHON:
|
||||
{
|
||||
if (qs.isCond(13))
|
||||
{
|
||||
giveItems(killer, RESONANCE_AMULET_3, 1, true);
|
||||
qs.setCond(14);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BELETH_SHADOW:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
addSpawn(ERIC_RAMSHEART, npc, true, 20000, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GUARDIAN_OF_FOBIDDEN_KNOWLEDGE:
|
||||
{
|
||||
if (qs.isCond(7))
|
||||
{
|
||||
final int count = qs.getInt(KILL_COUNT_VAR);
|
||||
if (count < 20)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, count + 1);
|
||||
}
|
||||
if (count >= 20)
|
||||
{
|
||||
qs.setCond(8, true);
|
||||
giveItems(killer, RESONANCE_AMULET_2, 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(7))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>(1);
|
||||
|
||||
// guardian of forbidden knowledge
|
||||
final int guardiancount = qs.getInt(KILL_COUNT_VAR);
|
||||
if (guardiancount > 0)
|
||||
{
|
||||
holder.add(new NpcLogListHolder(GUARDIAN_OF_FOBIDDEN_KNOWLEDGE, false, guardiancount));
|
||||
}
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,539 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package quests.Q00071_SagaOfEvasTemplar;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.base.ClassId;
|
||||
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.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @author QuangNguyen
|
||||
*/
|
||||
public class Q00071_SagaOfEvasTemplar extends Quest
|
||||
{
|
||||
// NPCs
|
||||
public final int SINDEN = 30852;
|
||||
public final int STEDMIEL = 30692;
|
||||
public final int RIFKEN = 34268;
|
||||
public final int CERENAS = 31281;
|
||||
public final int TABLET_OF_VISION_1 = 31646;
|
||||
public final int TABLET_OF_VISION_2 = 31648;
|
||||
public final int TABLET_OF_VISION_3 = 31653;
|
||||
public final int TABLET_OF_VISION_4 = 31655;
|
||||
public final int KNIGHT_KASTIEN = 31638;
|
||||
// Monsters
|
||||
public final int ICE_MONSTER = 27316;
|
||||
public final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
public final int SOUL_OF_COLD = 27318;
|
||||
public final int GHOST_OF_SOLITUDE = 27319;
|
||||
public final int FIEND_OF_COLD = 27320;
|
||||
public final int SPIRIT_OF_COLD = 27321;
|
||||
public final int SPAMPLAND_WATCHMAN = 21650;
|
||||
public final int FLAME_DRAKE = 21651;
|
||||
public final int FIERY_IFRIT = 21652;
|
||||
public final int IKEDIT = 21653;
|
||||
public final int GATEKEEPER_OF_THE_HOLY_EDICT = 27215;
|
||||
public final int BOUND_ELF_PANACEA = 27287;
|
||||
public final int HALISHA_ARCHON = 27219;
|
||||
public final int CURSED_KESADEIN = 27279;
|
||||
// Items
|
||||
public final int ICE_CRYSTAL_FRAGMENT = 49805;
|
||||
public final int HALISHA_BADGE = 7486;
|
||||
public final int RESONANCE_AMULET = 7269;
|
||||
public final int RESONANCE_AMULET_2 = 7300;
|
||||
public final int RESONANCE_AMULET_3 = 7331;
|
||||
public final int RESONANCE_AMULET_4 = 7362;
|
||||
public final int PURE_ICE = 7535;
|
||||
// Reward
|
||||
public final int BOOK_PEGASUS = 90039;
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
|
||||
public Q00071_SagaOfEvasTemplar()
|
||||
{
|
||||
super(71);
|
||||
addStartNpc(SINDEN);
|
||||
addTalkId(SINDEN, STEDMIEL, RIFKEN, CERENAS, KNIGHT_KASTIEN, TABLET_OF_VISION_1, TABLET_OF_VISION_2, TABLET_OF_VISION_3, TABLET_OF_VISION_4);
|
||||
addKillId(ICE_MONSTER, SPIRIT_OF_A_DROWNED, SOUL_OF_COLD, GHOST_OF_SOLITUDE, FIEND_OF_COLD, SPIRIT_OF_COLD, SPAMPLAND_WATCHMAN, FLAME_DRAKE, FIERY_IFRIT, IKEDIT, GATEKEEPER_OF_THE_HOLY_EDICT, BOUND_ELF_PANACEA, HALISHA_ARCHON, CURSED_KESADEIN);
|
||||
registerQuestItems(PURE_ICE, ICE_CRYSTAL_FRAGMENT, HALISHA_BADGE);
|
||||
addCondMinLevel(76, "aiken02.htm");
|
||||
addCondClassId(ClassId.TEMPLE_KNIGHT, "aiken03.htm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "aiken02a.htm":
|
||||
{
|
||||
htmltext = "aiken5.htm";
|
||||
break;
|
||||
}
|
||||
case "aiken01s.htm":
|
||||
{
|
||||
if (qs.isCond(0))
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer2.htm":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "rifken2.htm":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "rifken4.htm":
|
||||
{
|
||||
if (qs.isCond(4))
|
||||
{
|
||||
qs.setCond(5);
|
||||
takeItems(player, ICE_CRYSTAL_FRAGMENT, -1);
|
||||
giveItems(player, PURE_ICE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer4.htm":
|
||||
{
|
||||
if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6);
|
||||
giveItems(player, RESONANCE_AMULET, 1);
|
||||
takeItems(player, PURE_ICE, -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone12.htm":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
qs.setCond(7);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone22.htm":
|
||||
{
|
||||
if (qs.isCond(8))
|
||||
{
|
||||
addSpawn(BOUND_ELF_PANACEA, npc, true, 0, true);
|
||||
qs.setCond(9);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone25.htm":
|
||||
{
|
||||
if (qs.isCond(10))
|
||||
{
|
||||
qs.setCond(11);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer6.htm":
|
||||
{
|
||||
if (qs.isCond(11))
|
||||
{
|
||||
qs.setCond(12);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone32.htm":
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
qs.setCond(15);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone41.htm":
|
||||
{
|
||||
if (qs.isCond(15))
|
||||
{
|
||||
qs.setCond(16);
|
||||
addSpawn(CURSED_KESADEIN, npc, true, 0, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "erikrams2.htm":
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
qs.setCond(17);
|
||||
giveItems(player, RESONANCE_AMULET_4, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone43.htm":
|
||||
{
|
||||
if (qs.isCond(17))
|
||||
{
|
||||
qs.setCond(18);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "aiken7.htm":
|
||||
{
|
||||
if (qs.isCond(18))
|
||||
{
|
||||
if ((player.getLevel() < 76) || (player.getBaseClass() != 20))
|
||||
{
|
||||
htmltext = "30849-nolvl.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
addExpAndSp(player, 3100000, 103000);
|
||||
rewardItems(player, BOOK_PEGASUS, 1);
|
||||
takeItems(player, RESONANCE_AMULET, -1);
|
||||
takeItems(player, RESONANCE_AMULET_2, -1);
|
||||
takeItems(player, RESONANCE_AMULET_3, -1);
|
||||
takeItems(player, RESONANCE_AMULET_4, -1);
|
||||
takeItems(player, HALISHA_BADGE, -1);
|
||||
qs.exitQuest(false, true);
|
||||
player.setClassId(99);
|
||||
player.setBaseClass(99);
|
||||
player.broadcastUserInfo();
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5103, 1, 1000, 0));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance talker)
|
||||
{
|
||||
final QuestState qs = getQuestState(talker, true);
|
||||
String htmltext = getNoQuestMsg(talker);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == SINDEN)
|
||||
{
|
||||
htmltext = "aiken01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SINDEN:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "aiken01s.htm";
|
||||
}
|
||||
else if (qs.isCond(18))
|
||||
{
|
||||
htmltext = "aiken6.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case STEDMIEL:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "jer1.htm";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "jer2.htm";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "jer3.htm";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "jer4.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CERENAS:
|
||||
{
|
||||
if (qs.isCond(11))
|
||||
{
|
||||
htmltext = "jer5.htm";
|
||||
}
|
||||
else if (qs.isCond(12))
|
||||
{
|
||||
htmltext = "jer6.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RIFKEN:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "rifken1.htm";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "rifken2.htm";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "rifken3.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_1:
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
htmltext = "stone11.htm";
|
||||
}
|
||||
else if (qs.isCond(7))
|
||||
{
|
||||
htmltext = "stone12.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_2:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
htmltext = "stone21.htm";
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
htmltext = "stone23.htm";
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
htmltext = "stone24.htm";
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
htmltext = "stone25.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_3:
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
htmltext = "stone31.htm";
|
||||
}
|
||||
else if (qs.isCond(15))
|
||||
{
|
||||
htmltext = "stone32.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_4:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
htmltext = "stone40.htm";
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
htmltext = "stone42.htm";
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
htmltext = "stone43.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KNIGHT_KASTIEN:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
htmltext = "erikrams1.htm";
|
||||
}
|
||||
else if (qs.isCond(17))
|
||||
{
|
||||
htmltext = "erikrams2.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(talker);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ICE_MONSTER:
|
||||
case SPIRIT_OF_A_DROWNED:
|
||||
case SOUL_OF_COLD:
|
||||
case FIEND_OF_COLD:
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BOUND_ELF_PANACEA:
|
||||
{
|
||||
if (qs.isCond(9))
|
||||
{
|
||||
qs.setCond(10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPAMPLAND_WATCHMAN:
|
||||
case FLAME_DRAKE:
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HALISHA_ARCHON:
|
||||
{
|
||||
if (qs.isCond(13))
|
||||
{
|
||||
giveItems(killer, RESONANCE_AMULET_3, 1, true);
|
||||
qs.setCond(14);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CURSED_KESADEIN:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
addSpawn(KNIGHT_KASTIEN, npc, true, 20000, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GATEKEEPER_OF_THE_HOLY_EDICT:
|
||||
{
|
||||
if (qs.isCond(7))
|
||||
{
|
||||
final int count = qs.getInt(KILL_COUNT_VAR);
|
||||
if (count < 20)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, count + 1);
|
||||
}
|
||||
if (count >= 20)
|
||||
{
|
||||
qs.setCond(8, true);
|
||||
giveItems(killer, RESONANCE_AMULET_2, 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(7))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>(1);
|
||||
|
||||
// guardian of forbidden knowledge
|
||||
final int guardiancount = qs.getInt(KILL_COUNT_VAR);
|
||||
if (guardiancount > 0)
|
||||
{
|
||||
holder.add(new NpcLogListHolder(GATEKEEPER_OF_THE_HOLY_EDICT, false, guardiancount));
|
||||
}
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
The highest honor amongst Elves is to be a guardian of the Mother Tree. However, we are destined to leave the Mother Tree eventually. You sense this as well since you've been fighting so long.<br>
|
||||
Here many people gather and live preparing the future. We are saddened not to have your skills to protect the Mother Tree, but I feel you could better serve us by going on a pilgrimage that has long been forbidden. Will you do it?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar aiken01s.htm">"Yes!"</button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
This journey may uncover some shameful parts of our Elven history.<br>
|
||||
Read the legend in this book about the guardian of the Mother Tree who vowed to stop this pilgrimage. He felt an Elf should always protect the Mother tree and only help other Elves.<br>
|
||||
Meet with Master Stedmiel, a former guardian. He went into seclusion after relinquishing the fight against Humans.</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
This is too dangerous for you.<br>
|
||||
Brother, don't be too proud! This pilgrimage is the path of legend. No one knows the danger that lies ahead. Come see me when you are better prepared!<br>
|
||||
(This quest may only be undertaken by a Temple Knight of level 76 or above.)
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
Have you not already received the title of Templar of Eve?
|
||||
My brother, you do not have to go through the test of the squire again.
|
||||
Your duty is to fight for your faith and the glory of the lord.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
You're no longer an ordinary Elven Knight! The Mother Tree you're protecting symbolizes the world that produced the tree. You're also guarding that world.<br>
|
||||
You need more experience!<br>
|
||||
(Only a character of level 76 or above is allowed to transfer class. Don't abandon quest before completing transfer!)
|
||||
</body></html>
|
@ -1,7 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
Do you want to become Eve's Templar?
|
||||
Well, then you must pass <font color="LEVEL">Saga of Eva's Templar</font>,
|
||||
To prove that you are not just a reckless, quick-tempered warrior, but
|
||||
Warrior with the soul of the present Templar Eve. This is a form of ritual and the process of training,
|
||||
They must be performed by all who wish to become Eve's Templar.<br>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
Have you learned much?<br>
|
||||
I can't easily forget our past. I understand my limitations. Let me help you to find the right path.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar aiken7.htm">"What should I do now?"</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Master Sinden:<br>
|
||||
You're no longer an ordinary Elven Knight! The Mother Tree you're protecting symbolizes the world that produced the tree. You're also guarding that world. From now on, live your life according to what you feel is right. That is the will of Eva!
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Star Knight Castiel:<br>
|
||||
Thank you! You helped avenge me, I will give you the fourth amulet.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar erikrams2.htm">Get the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Star Knight Castiel:<br>
|
||||
Now activate the last stone.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Steadmiel:<br>
|
||||
To start a pilgrimage, you need a special Amulet. To get it, go to Gourmet Rifken in Aden and take some Pure Ice from him.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar jer2.htm">I'm going</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Steadmiel:<br>
|
||||
To start a pilgrimage, you need a special Amulet. To get it, go to Gourmet Rifken in Aden and take some Pure Ice from him.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Steadmiel:<br>
|
||||
Did you bring Pure Ice?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar jer4.htm">Give</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Steadmiel:<br>
|
||||
You have received the Resonance Amulet. Activate the Stone of Knowledge to the south of the Tower of Insolence.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Kerenas:<br>
|
||||
Have you come for the third Amulet of Resonance?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar jer6.htm">Yes</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Kerenas:<br>
|
||||
Priest Kerenas says that the third Amulet of Resonance is in Archon Halisha.<font color="LEVEL"> To summon him, you need to destroy his minions in the Swollen Tops and collect the Halisha Signs. Destroy these monsters and call Archon Halisha. The aim of the hunt is the Ranger of the Swamp, Burning Drake, Flame Iphreet, Ikedith</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
To get pure ice, you need <font color="LEVEL">Fragments of the Crystal of Cold.</font> They can be obtained by destroying monsters to the southeast of Aden.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar rifken2.htm">I'll get them!!!</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Obtain <font color="LEVEL">Fragments of the Crystal of Cold.</font>. These pieces can be obtained by destroying monsters to the southeast of Aden.<font color="LEVEL">The aim of the hunt is the Ice Monster, the Spirit of the Drowned One, the Soul of Cold, the Phantom of Solitude, the Cold Beast, the Spirit of Cold.</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Did you get all the ingredients?</font><br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar rifken4.htm">Give away Shards.</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Now you have Pure Ice. Take it to Master Steadmiel.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone12.htm">Bring an amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You brought the amulet and the inscription appeared on the stone - <font color="LEVEL">The second Amulet of Resonance is located near the Streets of the Holy Law next to the second Stone of Knowledge.</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone22.htm">Bring the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
As soon as you approached the stone, the Captive Elf Panacea appeared. Obviously, he is trying to stop you. Destroy it.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
Now you can go in search of the third stone.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone25.htm">Bring the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
Activating the stone, you learned that the third Amulet of Resonance is at the Priest of Kerenas in the temple of Einhasad Aden. Get him the Resonance Amulet.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone32.htm">Bring the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
When the activation of the third Stone of Knowledge ended, he showed the location of the next stone. The fourth Stone of Knowledge is in the area of the Elven Village, and the last Amulet of Resonance is near the stone. Go there.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>You came to the stone and he began to vibrate.<br>
|
||||
The last amulet is located at <font color="LEVEL">Cursed Kesadein</font><br>
|
||||
Are you ready to fight him?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone41.htm">Yes</button>
|
||||
</body></html>
|
@ -1,2 +0,0 @@
|
||||
<html><body>Near the Cursed Kesadein appeared
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00071_SagaOfEvasTemplar stone43.htm">Bring an amulet</button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You successfully activated the last stone.<br>
|
||||
During the pilgrimage you learned a lot about your people. Go to Master Sinden and tell him about your wanderings.
|
||||
</body></html>
|
@ -1,539 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package quests.Q00072_SagaOfTheSwordMuse;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.base.ClassId;
|
||||
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.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* @author QuangNguyen
|
||||
*/
|
||||
public class Q00072_SagaOfTheSwordMuse extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RAIEN = 30853;
|
||||
private static final int GALLADUCCI = 30097;
|
||||
private static final int RIFKEN = 34268;
|
||||
private static final int CERENAS = 31281;
|
||||
private static final int TABLET_OF_VISION_1 = 31646;
|
||||
private static final int TABLET_OF_VISION_2 = 31649;
|
||||
private static final int TABLET_OF_VISION_3 = 31650;
|
||||
private static final int TABLET_OF_VISION_4 = 31655;
|
||||
private static final int MOON_VOICE_IRENE = 31618;
|
||||
// Monsters
|
||||
private static final int ICE_MONSTER = 27316;
|
||||
private static final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
private static final int SOUL_OF_COLD = 27318;
|
||||
private static final int GHOST_OF_SOLITUDE = 27319;
|
||||
private static final int FIEND_OF_COLD = 27320;
|
||||
private static final int SPIRIT_OF_COLD = 27321;
|
||||
private static final int SPAMPLAND_WATCHMAN = 21650;
|
||||
private static final int FLAME_DRAKE = 21651;
|
||||
private static final int FIERY_IFRIT = 21652;
|
||||
private static final int IKEDIT = 21653;
|
||||
private static final int WATCHER_OF_ANCIENT_PLEDGE = 27216;
|
||||
private static final int SWORD_PLAYER_BIEL = 27288;
|
||||
private static final int HALISHA_ARCHON = 27219;
|
||||
private static final int FALLEN_ANGEL_NARCISSUS = 27280;
|
||||
// Items
|
||||
private static final int ICE_CRYSTAL_FRAGMENT = 49806;
|
||||
private static final int HALISHA_BADGE = 7487;
|
||||
private static final int RESONANCE_AMULET = 7270;
|
||||
private static final int RESONANCE_AMULET_2 = 7301;
|
||||
private static final int RESONANCE_AMULET_3 = 7332;
|
||||
private static final int RESONANCE_AMULET_4 = 7363;
|
||||
private static final int BITTER_COLD_BEER = 7536;
|
||||
// Reward
|
||||
private static final int BOOK_PEGASUS = 90039;
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
|
||||
public Q00072_SagaOfTheSwordMuse()
|
||||
{
|
||||
super(72);
|
||||
addStartNpc(RAIEN);
|
||||
addTalkId(RAIEN, GALLADUCCI, RIFKEN, CERENAS, MOON_VOICE_IRENE, TABLET_OF_VISION_1, TABLET_OF_VISION_2, TABLET_OF_VISION_3, TABLET_OF_VISION_4);
|
||||
addKillId(ICE_MONSTER, SPIRIT_OF_A_DROWNED, SOUL_OF_COLD, GHOST_OF_SOLITUDE, FIEND_OF_COLD, SPIRIT_OF_COLD, SPAMPLAND_WATCHMAN, FLAME_DRAKE, FIERY_IFRIT, IKEDIT, WATCHER_OF_ANCIENT_PLEDGE, SWORD_PLAYER_BIEL, HALISHA_ARCHON, FALLEN_ANGEL_NARCISSUS);
|
||||
registerQuestItems(BITTER_COLD_BEER, ICE_CRYSTAL_FRAGMENT, HALISHA_BADGE);
|
||||
addCondMinLevel(76, "aiken02.htm");
|
||||
addCondClassId(ClassId.SWORDSINGER, "aiken03.htm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "aiken02a.htm":
|
||||
{
|
||||
htmltext = "aiken5.htm";
|
||||
break;
|
||||
}
|
||||
case "aiken01s.htm":
|
||||
{
|
||||
if (qs.isCond(0))
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer2.htm":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "rifken2.htm":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "rifken4.htm":
|
||||
{
|
||||
if (qs.isCond(4))
|
||||
{
|
||||
qs.setCond(5);
|
||||
takeItems(player, ICE_CRYSTAL_FRAGMENT, -1);
|
||||
giveItems(player, BITTER_COLD_BEER, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer4.htm":
|
||||
{
|
||||
if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6);
|
||||
giveItems(player, RESONANCE_AMULET, 1);
|
||||
takeItems(player, BITTER_COLD_BEER, -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone12.htm":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
qs.setCond(7);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone22.htm":
|
||||
{
|
||||
if (qs.isCond(8))
|
||||
{
|
||||
addSpawn(SWORD_PLAYER_BIEL, npc, true, 0, true);
|
||||
qs.setCond(9);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone25.htm":
|
||||
{
|
||||
if (qs.isCond(10))
|
||||
{
|
||||
qs.setCond(11);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "jer6.htm":
|
||||
{
|
||||
if (qs.isCond(11))
|
||||
{
|
||||
qs.setCond(12);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone32.htm":
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
qs.setCond(15);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone41.htm":
|
||||
{
|
||||
if (qs.isCond(15))
|
||||
{
|
||||
qs.setCond(16);
|
||||
addSpawn(FALLEN_ANGEL_NARCISSUS, npc, true, 0, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "erikrams2.htm":
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
qs.setCond(17);
|
||||
giveItems(player, RESONANCE_AMULET_4, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "stone43.htm":
|
||||
{
|
||||
if (qs.isCond(17))
|
||||
{
|
||||
qs.setCond(18);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "aiken7.htm":
|
||||
{
|
||||
if (qs.isCond(18))
|
||||
{
|
||||
if ((player.getLevel() < 76) || (player.getBaseClass() != 21))
|
||||
{
|
||||
htmltext = "30849-nolvl.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
addExpAndSp(player, 3100000, 103000);
|
||||
rewardItems(player, BOOK_PEGASUS, 1);
|
||||
takeItems(player, RESONANCE_AMULET, -1);
|
||||
takeItems(player, RESONANCE_AMULET_2, -1);
|
||||
takeItems(player, RESONANCE_AMULET_3, -1);
|
||||
takeItems(player, RESONANCE_AMULET_4, -1);
|
||||
takeItems(player, HALISHA_BADGE, -1);
|
||||
qs.exitQuest(false, true);
|
||||
player.setClassId(100);
|
||||
player.setBaseClass(100);
|
||||
player.broadcastUserInfo();
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5103, 1, 1000, 0));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance talker)
|
||||
{
|
||||
final QuestState qs = getQuestState(talker, true);
|
||||
String htmltext = getNoQuestMsg(talker);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == RAIEN)
|
||||
{
|
||||
htmltext = "aiken01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case RAIEN:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "aiken01s.htm";
|
||||
}
|
||||
else if (qs.isCond(18))
|
||||
{
|
||||
htmltext = "aiken6.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GALLADUCCI:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "jer1.htm";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "jer2.htm";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "jer3.htm";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "jer4.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CERENAS:
|
||||
{
|
||||
if (qs.isCond(11))
|
||||
{
|
||||
htmltext = "jer5.htm";
|
||||
}
|
||||
else if (qs.isCond(12))
|
||||
{
|
||||
htmltext = "jer6.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RIFKEN:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
htmltext = "rifken1.htm";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "rifken2.htm";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "rifken3.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_1:
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
htmltext = "stone11.htm";
|
||||
}
|
||||
else if (qs.isCond(7))
|
||||
{
|
||||
htmltext = "stone12.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_2:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
htmltext = "stone21.htm";
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
htmltext = "stone23.htm";
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
htmltext = "stone24.htm";
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
htmltext = "stone25.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_3:
|
||||
{
|
||||
if (qs.isCond(14))
|
||||
{
|
||||
htmltext = "stone31.htm";
|
||||
}
|
||||
else if (qs.isCond(15))
|
||||
{
|
||||
htmltext = "stone32.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLET_OF_VISION_4:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
htmltext = "stone40.htm";
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
htmltext = "stone42.htm";
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
htmltext = "stone43.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MOON_VOICE_IRENE:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
htmltext = "erikrams1.htm";
|
||||
}
|
||||
else if (qs.isCond(17))
|
||||
{
|
||||
htmltext = "erikrams2.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(talker);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ICE_MONSTER:
|
||||
case SPIRIT_OF_A_DROWNED:
|
||||
case SOUL_OF_COLD:
|
||||
case FIEND_OF_COLD:
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SWORD_PLAYER_BIEL:
|
||||
{
|
||||
if (qs.isCond(9))
|
||||
{
|
||||
qs.setCond(10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPAMPLAND_WATCHMAN:
|
||||
case FLAME_DRAKE:
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HALISHA_ARCHON:
|
||||
{
|
||||
if (qs.isCond(13))
|
||||
{
|
||||
giveItems(killer, RESONANCE_AMULET_3, 1, true);
|
||||
qs.setCond(14);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FALLEN_ANGEL_NARCISSUS:
|
||||
{
|
||||
if (qs.isCond(16))
|
||||
{
|
||||
addSpawn(MOON_VOICE_IRENE, npc, true, 20000, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATCHER_OF_ANCIENT_PLEDGE:
|
||||
{
|
||||
if (qs.isCond(7))
|
||||
{
|
||||
final int count = qs.getInt(KILL_COUNT_VAR);
|
||||
if (count < 20)
|
||||
{
|
||||
qs.set(KILL_COUNT_VAR, count + 1);
|
||||
}
|
||||
if (count >= 20)
|
||||
{
|
||||
qs.setCond(8, true);
|
||||
giveItems(killer, RESONANCE_AMULET_2, 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(7))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>(1);
|
||||
|
||||
// guardian of forbidden knowledge
|
||||
final int guardiancount = qs.getInt(KILL_COUNT_VAR);
|
||||
if (guardiancount > 0)
|
||||
{
|
||||
holder.add(new NpcLogListHolder(WATCHER_OF_ANCIENT_PLEDGE, false, guardiancount));
|
||||
}
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
Goddess Eva's songs and poems gave us intelligence, knowledge and magical power.<br>
|
||||
It belonged only to the Elves. The traditional swordsong may be a far cry from its origins after mingling with the Humans, but it is still our tradition.<br>
|
||||
The story tells of a tablet that contains the power of the original song. You'll have to solve one problem...<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse aiken01s.htm">Quest</button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Ryan:<br>
|
||||
Don't mind his grotesque beard and ugly smile,<font color="LEVEL"> Go to Galaducci of Giran Castle Town</font> knows of the source of Eva's songs.<br>
|
||||
Take this book, it tells of the fall of a Swordsinger.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
You must be well qualified to understand the way. I don't think you should do this. I don't think you can talk to him.<br>
|
||||
I don't even want to think about him anymore.
|
||||
(This quest may only be undertaken by characters of level 76 or above.)
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
Have you not already received the title of Sword Muse?
|
||||
My brother, you do not have to go through the test of the squire again.
|
||||
Your duty is to fight for your faith and the glory of the lord.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
You should know better than I.<br>
|
||||
Your soul may be ready, but your body is lacking.<br>
|
||||
(Class transfer is allowed only for characters of level 76 or above. Do not abandon quest before class transfer is complete!)
|
||||
</body></html>
|
@ -1,7 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
Do you want to become a Sword Muse?
|
||||
Well, then you must pass <font color="LEVEL">Saga of Sword Muse</font>,
|
||||
To prove that you are not just a reckless, quick-tempered warrior, but
|
||||
A warrior with the soul of a true sword muse. This is a form of ritual and the process of training,
|
||||
Which all those who wish to become sword muse must perform.<br>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
I dreamed of your return. Do you understand Eva's will?<br>
|
||||
The one who sings her true song is called Eva's Sword Muse.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse aiken7.htm">"What should I do now?"</button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Master Raien:<br>
|
||||
You should know better than I.<br>
|
||||
I only need to give you the title you are due, one who sings Eva's swordsong...
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Irene The Voice of the Moon:<br>
|
||||
Thank you! You helped avenge me, I will give you the fourth amulet.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse erikrams2.htm">Get the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Irene The Voice of the Moon:<br>
|
||||
Now activate the last stone.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Galaducci:<br>
|
||||
Merchant Galaducci the Merchant asks him to bring him some Cold Beer. To get it, go to Gourmet Rifken in Aden.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse jer2.htm"> I'm going</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Galaducci:<br>
|
||||
Merchant Galaducci the Merchant asks him to bring him some Cold Beer. To get it, go to Gourmet Rifken in Aden.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Galaducci:<br>
|
||||
Have you brought Cold Beer?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse jer4.htm">Give</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Galaducci:<br>
|
||||
You have received the Resonance Amulet. Activate the Stone of Knowledge to the south of the Tower of Insolence.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Kerenas:<br>
|
||||
Have you come for the third Amulet of Resonance?<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse jer6.htm">Yes</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Kerenas:<br>
|
||||
Priest Kerenas says that the third Amulet of Resonance is in Archon Halisha.<font color="LEVEL"> To summon him, you need to destroy his minions in the Swollen Tops and collect the Halisha Signs. Destroy these monsters and call Archon Halisha. The aim of the hunt is the Ranger of the Swamp, Burning Drake, Flamey Ifrit, Ikedith</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Gourmet Rifken for making a Cold Beer needs <font color="LEVEL">Fragments of the Crystal of Cold.</font>They can be obtained by destroying monsters to the southeast of Aden.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse rifken2.htm">I'll get them!!!!</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Obtain <font color="LEVEL">Fragments of the Crystal of Cold.</font>.These pieces can be obtained by destroying monsters to the southeast of Aden.<font color="LEVEL">The aim of the hunt is the Ice Monster, the Spirit of the Drowned One, the Soul of Cold, the Phantom of Solitude, the Behemoth of Coldness, the Spirit of Coldness.</font>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Did you get all the ingredients?</font><br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse rifken4.htm">Give away Shards.</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Rifken:<br>
|
||||
Gourmet Rifken cooked Cold Beer. Return to Giran to the Merchant of Galaducci.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You slash like a stone starts to vibrate.<br>
|
||||
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00072_SagaOfTheSwordMuse stone12.htm">Bring the amulet</button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Stone of knowledge:<br>
|
||||
You brought the amulet and the inscription appeared on the stone - <font color="LEVEL">The second Amulet of Resonance is at the Keepers of the Ancient Vow next to the second Stone of Knowledge.</font>
|
||||
</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