ZURSULUS L2

Saga of the Titan

ID
75
Название
Saga of the Titan
start_npcs_json
[]
npc_ids_json
[]
constants_json
{}
Статус разбора
metadata_only; dynamic Java conditions/rewards retained in source; unresolved starts: []
Источник
game/data/scripts/quests/Q00075_SagaOfTheTitan/Q00075_SagaOfTheTitan.java

NPC квеста

Записей нет.

Условия уровней: выражения из Java

if (player.getLevel() < 76)
if (player.getLevel() < 76)
if (player.getLevel() >= 76)

Выдача предметов, адены и опыта: выражения из Java

giveItems(player, _items[10], 1);
addExpAndSp(player, 2299404, 0);
giveAdena(player, 5000000, true);
giveItems(player, 6622, 1);
giveItems(player, _items[1], 1);
giveItems(player, _items[4], 1);
giveItems(player, _items[7], 1);
giveItems(player, _items[9], 1);
giveItems(player, _items[9], 1);
giveItems(player, _items[8], 1);
giveItems(player, _items[5], 1);
giveItems(player, _items[6], 1);
giveItems(player, _items[8], 1);
addExpAndSp(player, 2299404, 0);
giveAdena(player, 5000000, true);
giveItems(player, 6622, 1); // XXX rewardItems?
giveItems(player, _items[3], getRandom(1, 4));

Квесты содержат динамические условия Java. Выражения выдачи включают промежуточные предметы, варианты и случайные награды; это не гарантированная награда. Константы приведены выше. Полные условия — в исходнике.

Тексты квеста

[0-01.htm] Perfect Tazki: Tejarka Pa'agrio! I've been waiting for you! The Hestui totem spirit has revealed many ancient Orcish secrets to me! "What have you learned?" [0-010.htm] Prefect Tazki: Train your body and spark the ancient flame that burns within you! (Only players of level 76 or above may transfer class. Don't abandon quest until class transfer is complete.) [0-02.htm] Perfect Tazki: Tejarka Pa'agrio! Your soul will lead you to enlightenment! Follow the path of Pa'agrio that opens before you! You shall gain unimaginable strength! (This quest may only be undertaken by Destroyers of level 76 and above.) [0-03.htm] Prefect Tazki: Tejarka Pa'agrio! Your spirit shall lead you to the source of ancient Orcish power! Long ago, a legendary warrior abandoned his path, and devoted all his time to training a disciple. The youth thrived, and soon became as strong as his master. Then, without warning, he disappeared! Here's all the information we've been able to gather about him. You should speak with Prefect Lakan of Goddard Castle Town. At one time he was the strongest warrior of the Atuba tribe! [0-04.htm] Prefect Tazki: Find Prefect Lakan in Goddard Castle Town and you'll meet the strongest warrior of the Atuba tribe! [0-05.htm] Prefect Tazki: Tejakar Hestui! In ancient times, only Orcish warriors were strong enough to confront the fearsome giants! Do you wish to receive this power? "Yes!" [0-06.htm] Prefect Tazki: Tejakar Orca! The ancient Orcish fire is on your breath, warrior! Have you achieved the power that can defeat the giants? "I've got the power!" [0-07.htm] Prefect Tazki: Tejakar Pa'agrio! Your soul emits fire and your body rivals those of the ancient giants! Your fighting spirit burns like a volcano! You can't lose! You shall take the name of the legendary fighter who fought so valiantly at the Temple of Giants. Henceforth you shall be known as a Titan! [0-08.htm] Prefect Tazki: Tejakar Pa'agrio! Your soul burns like a volcano, but your body could use some work! Do not neglect your training. Come back when you're stronger! (Only players of level 76 or above may transfer class. Don't abandon the quest until class transfer is complete.) [0-09.htm] Prefect Tazki: Your soul emits fire and your body rivals those of the ancient giants! Your fighting spirit burns like a volcano! You can't lose! You shall take the name of the legendary fighter who fought so valiantly at the Temple of Giants. Henceforth you shall be known as a Titan! [1-01.htm] Chef Donath: Bitter Cold Vodka? Isn't that the Orcish liquor made by mixing the flames of Pa'agrio with the power of 99 dead spirits? You can't just ask me to make such a.... "Well you see, it's like this..." [1-02.htm] Chef Donath: Although it's hard to make genuine Bitter Cold Vodka, I can get pretty close! But I must have a divine ingredient... Find Chef Jeremy nearby and ask him for an ice crystal. I can't make Bitter Cold Vodka without it. [1-03.htm] Chef Donath: You brought the ice crystal! Excellent! Now I'll make the Bitter Cold Vodka. I must warn you, the power of the spirits within the liquor is not that strong, and over time, it loses its effect. Will that be acceptable? "That's OK." [1-04.htm] Chef Donath: Take this Bitter Cold Vodka and return to Prefect Lakan. [1-05.htm] Chef Donath: Hmm... if that's what you want, I'll do it. I should able to get pretty close to the original! It will work for a simple ritual, but not in a formal religious rite. I must have a divine ingredient known as an ice crystal. Chef Jeremy can tell you where to find one. I can't make Bitter Cold Vodka without it. [1-06.htm] Chef Donath: Well, if you say so... Here you go. Take it to Lakan. This should do the trick. [10-01.htm] Tablet of Vision: You hear a disturbance as you approach the tablet. Sounds of rocks crashing, and the roar of a warrior resisting them! No fear of the most awesome opponent, eager for death in battle! They say Orcs were stronger back in the day and I'm inclined to believe them. But I also know that their fiery blood hasn't changed! Is that actually the tablet? The sound of swordplay is carried on the wind. Examine the area. [10-02.htm] Tablet of Vision: A warrior with a tattoo of the Hestui tribe is fighting relics of the era of giants! His passionate bravery is a fiercely blazing flame, inextinguishable! [10-03.htm] Tablet of Vision: The tablet is still and dark. Hestui Warrior Shak Dun looks at the tablet and then at you. [10-04.htm] Tablet of Vision: You feel a presence as you approach the tablet. There's a disturbance going on somewhere. Best not to get involved. [10-05.htm] Tablet of Vision: The Stone of Commune starts emitting light as you draw near the tablet. Commune with the Tablet of Vision. [10-06.htm] Tablet of Vision: Countless thoughts beyond comprehension sear painfully into your brain. I can hear laughter as though coming from the back of my head. A man's voice states, "Another hero is born." A lady, dressed in blue, responds, "No, he has much to learn and experience. I'm afraid I can't give him much power now. But do not worry. My brother's vacancy will be filled by a conjured soul." The ancient Orc was with the flame of Pa'agrio. But the present Orc doesn't have it. The source of all the Flame Races is obviously fire. Fire can create a limitless power with its strong will. It is the power to be able to fight with a Giant. The will of the Flame Race that has a massive power as well as a Giant can not be defeated...!! Is this the power needed, that Perfect Tazki said, to fight against a Giant! Go back to him and tell him about the things that have happened so far. [10-07.htm] Tablet of Vision: Further communion with this tablet would be futile. Go and see Prefect Tazki in Rune Castle Town and show him how an Orc deals with giants! [11-01.htm] Seer Skahi: Duda-Mara! You came to see me again as the spider foretold! I can't give you the Stone of Commune given me by Hestui's child, but I can tell you how to get one. "How?" [11-02.htm] Seer Skahi: Find the Archon of Halisha inside the Four Sepulchers at the Human Imperial Tomb. If entering is too difficult, go to the Shrine of the Loyal and fight Halisha's minions. He'll show up if you kill enough of them! Defeat him and get the Stone of Commune. [11-03.htm] Seer Skahi: Dear Warrior who is looking for the power of the ancient Orcs...! The power of this stone was created by the gods but stolen by devils! Find the Archon of Halisha inside the Four Sepulchers at the Human Imperial Tomb! If entering is too difficult, go to the Shrine of the Loyal and fight Halisha's minions! He'll show up if you kill enough of them. Defeat him and get the Stone of Commune! [2-01.htm] Prefect Lakan: The most powerful warrior? Yeah, right! True, I was once a brave warrior of the Atuba tribe, but that was long ago. Now I'll never live down the shame of my disgrace... "What happened?" [2-02.htm] Prefect Lakan: I've already said too much. If you want to get me talking, bring me some Bitter Cold Vodka! Chef Donath in the hot springs resort can make it. [2-03.htm] Prefect Lakan: This Bitter Cold Vodka is truly the nectar of the gods! It seems like an eternity since I've tasted it! The burn melts my heart and brings back old memories, even though it lacks the true flame of Pa'agrio! I'll tell you my story now, my friend. My mistake was failing in my attempt to seize the Tower of Insolence! I haven't been a warrior since! I tried teaching for a while, but I was abandoned by my disciple. And that's not all! "What else happened to you?" [2-04.htm] Prefect Lakan: Take this stone south of the Tower of Insolence and commune with the tablet there. While you're at it, see if you can find out what happened to my disciple and determine what the exile from the Hestui tribe is up to. [2-05.htm] Prefect Lakan: I can't bear to face my own people! I've even forsaken Oroka since I was betrayed by my disciple, Muhark! I'll tell you what brought me to this sorry state if you bring me some Bitter Cold Vodka, the nectar of the gods! Master Chef Donath in the hot springs area knows how to make it! [2-06.htm] Prefect Lakan: Umarak Buka! Have you heard of the conquest of the Tower of Insolence? Did you know that there was an exile of the Hestui tribe among the conquerors?! That exile was capable of feats that even I, previously known as the strongest of all Orcs, could not do. He followed the path of self-discipline that my disciple abandoned! Now you know the depths of my shame. Take this stone and go south of the Tower of Insolence. You'll find a tablet there. Use the stone to commune with it. While you're at it, try and find out what happened to my disciple and what the exile of the Hestui tribe is up to. [3-01.htm] Seer Skahi: The spidersilk of Duda-Mara told me you would come. This won't be our only meeting. "Tell me about the Stone of Commune." [3-02.htm] Seer Skahi: Go to the Ketra Orc outpost and see Messenger Wahkan. Gain their trust by lending your strength. Show the spirit of a warrior! But don't forget! If you feel betrayed, there is another way. [3-03.htm] Seer Skahi: Meet the Varka Silenos Messenger Naran Ashanuk in their stronghold. Gain their trust by lending your strength! To fight the betrayer Orcs is the spirit of a warrior! If your suffering is too great, there is another way! [3-04.htm] Seer Skahi: Warrior, you must bring the Divine Stone of Wisdom! To get it you must choose sides in this war. Find Messenger Wahkan of the Ketra Orcs or Messenger Naran Ashanuk of the Varka Silenos. [3-05.htm] Seer Skahi: Warrior, you have shown the qualities of a king and passed the test by getting the Divine Stone of Wisdom! Don't forget the people you helped or the blood you spilled. Never forget that Duda-Mara's spidersilk protects you. Hand me the stone! "Here's the stone." [3-06.htm] Seer Skahi: Go to the northe of the Varka Silenos Barracks and commune with the Tablet! [3-07.htm] Seer Skahi: Duda-Mara's spirit is preparing us for the eternal winter. Here is your test. The Ketra Orcs, a lower race who betrayed us long ago, and the Varka Silenos are at war. They each have a Divine Stone of Wisdom, but you must earn their absolute trust to get it. Bring either stone to pass the test. Which side do you choose? Ketra Orcs Varka Silenos [3-08.htm] Seer Skahi: Soul in the stone, wake up and restore the power of the Stone of Commune! Warrior, receive this Stone of Commune that you have restored! Go to the Varka Silenos Barracks and tell the resting Tablet to the north what you have done! Eternal Flame is watching you all the time! [4-01.htm] Sake Dun Zu Hestui: Show me what you're capable of, Destroyer. [4-010.htm] Sake Dun Zu Hestui: No need to tell me, I'm the Orc who was expelled from the Hestui race and who helped conquer the Tower of Insolence! Luckily I'm relieved of those old burdens. I came here to defend my honor and test my strength. Take this stone, you need it more than I. I must give chase, see you again in battle someday! "Thank you." [4-011.htm] Sake Dun Zu Hestui: No need to tell me, I'm the Orc who was expelled from the Hestui race and who helped conquer the Tower of Insolence! Luckily I'm relieved of those old burdens. I came here to defend my honor and test my strength. Take this stone, you need it more than I. [4-02.htm] Sake Dun Zu Hestui: This is dangerous, stand back! [4-03.htm] Sake Dun Zu Hestui: He escaped! [4-04.htm] Sake Dun Zu Hestui: Tejakar Orka! Warrior, raise your sword! [4-05.htm] Sake Dun Zu Hestui: We meet again. It's too dangerous now, stand back! [4-06.htm] Sake Dun Zu Hestui: Not too shabby, Warrior. You've proven yourself by helping me. "Don't I know you?" [4-07.htm] Sake Dun Zu Hestui: Not too shabby, Warrior. You've proven yourself by helping me. "Don't I know you?" [4-08.htm] Shak Dun Hestui: Don't you need the stone to restore the lost flame of Pa'agrio? [4-09.htm] Shak Dun Hestui: Don't you need the stone to restore the lost flame of Pa'agrio? [5-01.htm] Tablet of Vision: The Stone of Commune starts emitting light as soon as you near the Tablet of Vision. Commune with the Tablet of Vision. [5-02.htm] Tablet of Vision: Countless thoughts beyond comprehension sear painfully into your brain. A female voice seems to float on by as if the wind were singing... You sense that the next Stone of Commune is held by many warriors in a place west of the Valley of Saints. [5-03.htm] Tablet of Vision: Further communion with this tablet is futile. The Guardians of Forbidden Knowledge have the next Stone of Commune in the west of the Valley of Saints. Kill the guardians and take their stone! [6-01.htm] Tablet of Vision: The hieroglyphs on the tablet are indecipherable. The Guardians of Forbidden Knowledge possess the Stone of Commune for this Tablet of Vision. [6-02.htm] Tablet of Vision: The Stone of Commune starts emitting light as soon as you near the Tablet of Vision. Commune with the Tablet of Vision. [6-03.htm] Tablet of Vision: Countless thoughts beyond comprehension sear painfully into your brain. A female voice seems to float on by as if she were quietly laughing at you... You sense an Orc named Muhark, who sacrificed his Orcish pride in search of awesome power. He was banned from all tribes for his sacrilege! Now he is preventing the birth of an Orc to rival the Giants, by selling its spirit to the Guil tribe. Muhark is standing beside the Tablet of Vision over the border in the former Northern outpost. [6-04.htm] Tablet of Vision: You scratch your noggin and wonder why nothing else happens with this Tablet. We must prepare by reading books about Fallen Orc Muhar before going into mortal combat with him. He awaits us at the north of the Ancient Battleground which lies yonder over the border. [7-01.htm] Tablet of Vision: As you near the Tablet of Vision, you sense the presence of one who sacrificed his spirit to attain the power to conquer giants! Even though his body remains strong, the flame of Pa'agrio that once burned within him is extinquished. He is a mighty warrior, but can be defeated! "I must find him!" [7-02.htm] Tablet of Vision: Behold! Before your very eyes! Muhark the Destroyer, the Fallen Noble Orc, the Genius Warrior of the Atuba tribe and the only disciple of Prefect Lakan. [7-03.htm] Tablet of Vision: The Tablet of Vision is inscribed with incomprehensible hieroglyphs. Mudaha's attack continues! [7-04.htm] Tablet of Vision: You sense a disturbance near the tablet. The time hasn't yet come for you to prove yourself. [7-05.htm] Tablet of Vision: The Stone of Commune starts emitting light as you near the tablet. Commune with the Tablet of Vision. [7-06.htm] Tablet of Vision: Countless thoughts beyond comprehension sear painfully into your brain. You hear the faint whisper of a woman's voice. A vision appears of a worried man, concerned about the coming winter. He awaits a qualified recruit, and is holding the Stone of Commune! Find Seer Skahi in Goddard Castle Town! [7-07.htm] Tablet of Vision: Further communion with this tablet is futile. Get the next Stone of Commune from Seer Skahi in Goddard Castle Town. [8-01.htm] Tablet of Vision: The Stone of Commune starts emitting light as you approach the Tablet of Vision. Commune with the Tablet of Vision. [8-02.htm] Tablet of Vision: Countless thoughts beyond comprehension sear painfully into your brain. A vision appears of a mysterious dark knight...and there is a warrior meeting with Seer Skahi. The Warrior seems lonely but his mind is strong. After he gives the stone to Skahi, he turns his back and disappears. He must be one of the Hestui tribe, and one of their best! [8-03.htm] Tablet of Vision: Further communion with this tablet would be pointless at this time. Speak with Seer Skahi in Goddard Castle Town. [9-01.htm] Tablet of Vision: The tablet is still and dark. The Stone of Commune that can access this tablet may be obtained at the Imperial Tomb or the Shrine of the Loyal. [9-02.htm] Tablet of Vision: The Stone of Commune starts emitting light as you approach the Tablet of Vision. Commune with the Tablet of Vision. [9-03.htm] Tablet of Vision: A sharp blast of knowlege courses through your cranium! A vision appears of a black knight! And a huge machine, obeying an ancient command... Following orders to protect the giant, it hinders the Orc from gaining the power to confront the giant and tricked Muhark into becoming its personal guardian! The Hestui exile is confronting it with a sword. You can find the Tablet of Vision in the land of the giants, just north of the Forsaken Plains! [9-04.htm] Tablet of Vision: Further communion with this tablet would be futile. The next Stone of Commune is hidden within a giant machine on the Forsaken Plains. Askalius has it.
Исходник условий и наград (Java)
/*
 * 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.Q00075_SagaOfTheTitan;

import quests.AbstractSagaQuest;

/**
 * @author Emperorc
 */
public class Q00075_SagaOfTheTitan extends AbstractSagaQuest
{
	public Q00075_SagaOfTheTitan()
	{
		super(75, "Saga of the Titan");
		_npc = new int[]
		{
			31327,
			31624,
			31289,
			31290,
			31607,
			31646,
			31649,
			31651,
			31654,
			31655,
			31658,
			31290
		};
		_items = new int[]
		{
			7080,
			7539,
			7081,
			7490,
			7273,
			7304,
			7335,
			7366,
			7397,
			7428,
			7098,
			0
		};
		_mob = new int[]
		{
			27292,
			27224,
			27283
		};
		_classId = new int[]
		{
			113
		};
		_prevClass = new int[]
		{
			0x2e
		};
		_x = new int[]
		{
			119518,
			181215,
			181227
		};
		_y = new int[]
		{
			-28658,
			36676,
			36703
		};
		_z = new int[]
		{
			-3811,
			-4812,
			-4816
		};
		_text = new String[]
		{
			"PLAYERNAME! Pursued to here! However, I jumped out of the Banshouren boundaries! You look at the giant as the sign of power!",
			"... Oh ... good! So it was ... let's begin!",
			"I do not have the patience ..! I have been a giant force ...! Cough chatter ah ah ah!",
			"Paying homage to those who disrupt the orderly will be PLAYERNAME's death!",
			"Now, my soul freed from the shackles of the millennium, Halixia, to the back side I come ...",
			"Why do you interfere others' battles?",
			"This is a waste of time.. Say goodbye...!",
			"...That is the enemy",
			"...Goodness! PLAYERNAME you are still looking?",
			"PLAYERNAME ... Not just to whom the victory. Only personnel involved in the fighting are eligible to share in the victory.",
			"Your sword is not an ornament. Don't you think, PLAYERNAME?",
			"Goodness! I no longer sense a battle there now.",
			"let...",
			"Only engaged in the battle to bar their choice. Perhaps you should regret.",
			"The human nation was foolish to try and fight a giant's strength.",
			"Must...Retreat... Too...Strong.",
			"PLAYERNAME. Defeat...by...retaining...and...Mo...Hacker",
			"....! Fight...Defeat...It...Fight...Defeat...It..."
		};
		registerNPCs();
	}
}


// Shared quest dependency: AbstractSagaQuest.java
/*
 * Copyright (c) 2013 L2jMobius
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
 * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package quests;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.l2jmobius.gameserver.config.PlayerConfig;
import org.l2jmobius.gameserver.entity.World;
import org.l2jmobius.gameserver.entity.WorldObject;
import org.l2jmobius.gameserver.entity.actor.Creature;
import org.l2jmobius.gameserver.entity.actor.Npc;
import org.l2jmobius.gameserver.entity.actor.Player;
import org.l2jmobius.gameserver.entity.groups.Party;
import org.l2jmobius.gameserver.mechanics.script.Quest;
import org.l2jmobius.gameserver.mechanics.script.QuestState;
import org.l2jmobius.gameserver.mechanics.skill.Skill;
import org.l2jmobius.gameserver.network.enums.ChatType;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;

public abstract class AbstractSagaQuest extends Quest
{
	protected int[] _npc = {};
	protected int[] _items = {};
	protected int[] _mob = {};
	protected int[] _classId = {};
	protected int[] _prevClass = {};
	protected int[] _x = {};
	protected int[] _y = {};
	protected int[] _z = {};
	protected String[] _text = {};
	private static final Map<Npc, Integer> SPAWN_LIST = new HashMap<>();
	// @formatter:off
	private static final int[][] QUEST_CLASSES =
	{
		{ 0x7f }, { 0x80, 0x81 }, { 0x82 }, { 0x05 }, { 0x14 }, { 0x15 },
		{ 0x02 }, { 0x03 }, { 0x2e }, { 0x30 }, { 0x33 }, { 0x34 }, { 0x08 },
		{ 0x17 }, { 0x24 }, { 0x09 }, { 0x18 }, { 0x25 }, { 0x10 }, { 0x11 },
		{ 0x1e }, { 0x0c }, { 0x1b }, { 0x28 }, { 0x0e }, { 0x1c }, { 0x29 },
		{ 0x0d }, { 0x06 }, { 0x22 }, { 0x21 }, { 0x2b }, { 0x37 }, { 0x39 }
	};
	// @formatter:on
	private static final int[] ARCHON_HALISHA_NORM =
	{
		18212,
		18214,
		18215,
		18216,
		18218
	};
	
	public AbstractSagaQuest(int questId, String description)
	{
		super(questId, description);
	}
	
	public void registerNPCs()
	{
		addStartNpc(_npc[0]);
		addAttackId(_mob[2]);
		addAttackId(_mob[1]);
		addSkillSeeId(_mob[1]);
		addFirstTalkId(_npc[4]);
		addTalkId(_npc);
		addKillId(_mob);
		final int[] questItemIds = _items.clone();
		questItemIds[0] = 0;
		questItemIds[2] = 0; // remove Ice Crystal and Divine Stone of Wisdom
		registerQuestItems(questItemIds);
		for (int archonMinion = 21646; archonMinion < 21652; archonMinion++)
		{
			addKillId(archonMinion);
		}
		
		addKillId(ARCHON_HALISHA_NORM);
		for (int guardianAngel = 27214; guardianAngel < 27217; guardianAngel++)
		{
			addKillId(guardianAngel);
		}
	}
	
	@Override
	public String onEvent(String event, Npc npc, Player player)
	{
		final QuestState st = getQuestState(player, false);
		if (st == null)
		{
			return null;
		}
		
		String htmltext = null;
		switch (event)
		{
			case "0-011.htm":
			case "0-012.htm":
			case "0-013.htm":
			case "0-014.htm":
			case "0-015.htm":
			{
				htmltext = event;
				break;
			}
			case "accept":
			{
				st.startQuest();
				giveItems(player, _items[10], 1);
				htmltext = "0-03.htm";
				break;
			}
			case "0-1":
			{
				if (player.getLevel() < 76)
				{
					htmltext = "0-02.htm";
					if (st.isCreated())
					{
						st.exitQuest(true);
					}
				}
				else
				{
					htmltext = "0-05.htm";
				}
				break;
			}
			case "0-2":
			{
				if (player.getLevel() < 76)
				{
					takeItems(player, _items[10], -1);
					st.setCond(20, true);
					htmltext = "0-08.htm";
				}
				else
				{
					takeItems(player, _items[10], -1);
					addExpAndSp(player, 2299404, 0);
					giveAdena(player, 5000000, true);
					giveItems(player, 6622, 1);
					final int playerClass = getPlayerClass(player);
					final int prevClass = getPrevClass(player);
					player.setPlayerClass(playerClass);
					if (!player.isSubClassActive() && (player.getBaseClass() == prevClass))
					{
						player.setBaseClass(playerClass);
					}
					
					player.broadcastUserInfo();
					cast(npc, player, 4339, 1);
					st.exitQuest(false);
					htmltext = "0-07.htm";
				}
				break;
			}
			case "1-3":
			{
				st.setCond(3);
				htmltext = "1-05.htm";
				break;
			}
			case "1-4":
			{
				st.setCond(4);
				takeItems(player, _items[0], 1);
				if (_items[11] != 0)
				{
					takeItems(player, _items[11], 1);
				}
				
				giveItems(player, _items[1], 1);
				htmltext = "1-06.htm";
				break;
			}
			case "2-1":
			{
				st.setCond(2);
				htmltext = "2-05.htm";
				break;
			}
			case "2-2":
			{
				st.setCond(5);
				takeItems(player, _items[1], 1);
				giveItems(player, _items[4], 1);
				htmltext = "2-06.htm";
				break;
			}
			case "3-5":
			{
				htmltext = "3-07.htm";
				break;
			}
			case "3-6":
			{
				st.setCond(11);
				htmltext = "3-02.htm";
				break;
			}
			case "3-7":
			{
				st.setCond(12);
				htmltext = "3-03.htm";
				break;
			}
			case "3-8":
			{
				st.setCond(13);
				takeItems(player, _items[2], 1);
				giveItems(player, _items[7], 1);
				htmltext = "3-08.htm";
				break;
			}
			case "4-1":
			{
				htmltext = "4-010.htm";
				break;
			}
			case "4-2":
			{
				giveItems(player, _items[9], 1);
				st.setCond(18, true);
				htmltext = "4-011.htm";
				break;
			}
			case "4-3":
			{
				giveItems(player, _items[9], 1);
				st.setCond(18, true);
				autoChat(npc, _text[13].replace("PLAYERNAME", player.getName()));
				st.set("Quest0", "0");
				cancelQuestTimer("Mob_2 has despawned", npc, player);
				deleteSpawn(npc);
				return null;
			}
			case "5-1":
			{
				st.setCond(6, true);
				takeItems(player, _items[4], 1);
				cast(npc, player, 4546, 1);
				htmltext = "5-02.htm";
				break;
			}
			case "6-1":
			{
				st.setCond(8, true);
				st.set("spawned", "0");
				takeItems(player, _items[5], 1);
				cast(npc, player, 4546, 1);
				htmltext = "6-03.htm";
				break;
			}
			case "7-1":
			{
				if (st.getInt("spawned") == 1)
				{
					htmltext = "7-03.htm";
				}
				else if (st.getInt("spawned") == 0)
				{
					final Npc mob1 = addSpawn(_mob[0], _x[0], _y[0], _z[0], -1);
					st.set("spawned", "1");
					startQuestTimer("Mob_1 Timer 1", 500, mob1, player);
					startQuestTimer("Mob_1 has despawned", 300000, mob1, player);
					addSpawn(st, mob1);
					htmltext = "7-02.htm";
				}
				else
				{
					htmltext = "7-04.htm";
				}
				break;
			}
			case "7-2":
			{
				st.setCond(10, true);
				takeItems(player, _items[6], 1);
				cast(npc, player, 4546, 1);
				htmltext = "7-06.htm";
				break;
			}
			case "8-1":
			{
				st.setCond(14, true);
				takeItems(player, _items[7], 1);
				cast(npc, player, 4546, 1);
				htmltext = "8-02.htm";
				break;
			}
			case "9-1":
			{
				st.setCond(17, true);
				st.set("Quest0", "0");
				st.set("Tab", "0");
				takeItems(player, _items[8], 1);
				cast(npc, player, 4546, 1);
				htmltext = "9-03.htm";
				break;
			}
			case "10-1":
			{
				if (st.getInt("Quest0") == 0)
				{
					final Npc mob3 = addSpawn(_mob[2], _x[1], _y[1], _z[1], -1);
					final Npc mob2 = addSpawn(_npc[4], _x[2], _y[2], _z[2], -1);
					addSpawn(st, mob3);
					addSpawn(st, mob2);
					st.set("Mob_2", String.valueOf(mob2.getObjectId()));
					st.set("Quest0", "1");
					st.set("Quest1", "45");
					startQuestTimer("Mob_3 Timer 1", 500, mob3, player, true);
					startQuestTimer("Mob_3 has despawned", 59000, mob3, player);
					startQuestTimer("Mob_2 Timer 1", 500, mob2, player);
					startQuestTimer("Mob_2 has despawned", 60000, mob2, player);
					htmltext = "10-02.htm";
				}
				else if (st.getInt("Quest1") == 45)
				{
					htmltext = "10-03.htm";
				}
				else
				{
					htmltext = "10-04.htm";
				}
				break;
			}
			case "10-2":
			{
				st.setCond(19, true);
				takeItems(player, _items[9], 1);
				cast(npc, player, 4546, 1);
				htmltext = "10-06.htm";
				break;
			}
			case "11-9":
			{
				st.setCond(15);
				htmltext = "11-03.htm";
				break;
			}
			case "Mob_1 Timer 1":
			{
				autoChat(npc, _text[0].replace("PLAYERNAME", player.getName()));
				return null;
			}
			case "Mob_1 has despawned":
			{
				autoChat(npc, _text[1].replace("PLAYERNAME", player.getName()));
				st.set("spawned", "0");
				deleteSpawn(npc);
				return null;
			}
			case "Archon Hellisha has despawned":
			{
				autoChat(npc, _text[6].replace("PLAYERNAME", player.getName()));
				st.set("spawned", "0");
				deleteSpawn(npc);
				return null;
			}
			case "Mob_3 Timer 1":
			{
				final Npc mob2 = findSpawn(player, World.findObject(st.getInt("Mob_2")).asNpc());
				if ((World.getFirstVisibleObject(npc, Npc.class, it -> it == mob2) != null))
				{
					npc.asAttackable().addDamageHate(mob2, 0, 99999);
					npc.getAI().setIntentionAttack(mob2);
					mob2.getAI().setIntentionAttack(npc);
					autoChat(npc, _text[14].replace("PLAYERNAME", player.getName()));
					cancelQuestTimer("Mob_3 Timer 1", npc, player);
				}
				
				return null;
			}
			case "Mob_3 has despawned":
			{
				autoChat(npc, _text[15].replace("PLAYERNAME", player.getName()));
				st.set("Quest0", "2");
				deleteSpawn(npc);
				return null;
			}
			case "Mob_2 Timer 1":
			{
				autoChat(npc, _text[7].replace("PLAYERNAME", player.getName()));
				startQuestTimer("Mob_2 Timer 2", 1500, npc, player);
				if (st.getInt("Quest1") == 45)
				{
					st.set("Quest1", "0");
				}
				
				return null;
			}
			case "Mob_2 Timer 2":
			{
				autoChat(npc, _text[8].replace("PLAYERNAME", player.getName()));
				startQuestTimer("Mob_2 Timer 3", 10000, npc, player);
				return null;
			}
			case "Mob_2 Timer 3":
			{
				if (st.getInt("Quest0") == 0)
				{
					startQuestTimer("Mob_2 Timer 3", 13000, npc, player);
					if (getRandomBoolean())
					{
						autoChat(npc, _text[9].replace("PLAYERNAME", player.getName()));
					}
					else
					{
						autoChat(npc, _text[10].replace("PLAYERNAME", player.getName()));
					}
				}
				
				return null;
			}
			case "Mob_2 has despawned":
			{
				st.set("Quest1", String.valueOf(st.getInt("Quest1") + 1));
				if ((st.getInt("Quest0") == 1) || (st.getInt("Quest0") == 2) || (st.getInt("Quest1") > 3))
				{
					st.set("Quest0", "0");
					
					// TODO: This "if" will never be true.
					if (st.getInt("Quest0") == 1)
					{
						autoChat(npc, _text[11].replace("PLAYERNAME", player.getName()));
					}
					else
					{
						autoChat(npc, _text[12].replace("PLAYERNAME", player.getName()));
					}
					
					deleteSpawn(npc);
				}
				else
				{
					startQuestTimer("Mob_2 has despawned", 1000, npc, player);
				}
				
				return null;
			}
		}
		
		return htmltext;
	}
	
	@Override
	public void onAttack(Npc npc, Player player, int damage, boolean isSummon)
	{
		final QuestState st2 = findRightState(npc);
		if (st2 != null)
		{
			final int cond = st2.getCond();
			final QuestState st = getQuestState(player, false);
			final int npcId = npc.getId();
			if ((npcId == _mob[2]) && (st == st2) && (cond == 17))
			{
				int quest0 = st.getInt("Quest0") + 1;
				if (quest0 == 1)
				{
					autoChat(npc, _text[16].replace("PLAYERNAME", player.getName()));
				}
				
				if (quest0 > 15)
				{
					quest0 = 1;
					autoChat(npc, _text[17].replace("PLAYERNAME", player.getName()));
					cancelQuestTimer("Mob_3 has despawned", npc, st2.getPlayer());
					st.set("Tab", "1");
					deleteSpawn(npc);
				}
				
				st.set("Quest0", Integer.toString(quest0));
			}
			else if ((npcId == _mob[1]) && (cond == 15) && ((st != st2) || player.isInParty()))
			{
				autoChat(npc, _text[5].replace("PLAYERNAME", player.getName()));
				cancelQuestTimer("Archon Hellisha has despawned", npc, st2.getPlayer());
				st2.set("spawned", "0");
				deleteSpawn(npc);
			}
		}
	}
	
	@Override
	public String onFirstTalk(Npc npc, Player player)
	{
		String htmltext = "";
		final QuestState st = getQuestState(player, false);
		final int npcId = npc.getId();
		if ((st != null) && (npcId == _npc[4]))
		{
			final int cond = st.getCond();
			if (cond == 17)
			{
				final QuestState st2 = findRightState(npc);
				if (st2 != null)
				{
					player.setLastQuestNpcObject(npc.getObjectId());
					final int tab = st.getInt("Tab");
					final int quest0 = st.getInt("Quest0");
					if (st == st2)
					{
						if (tab == 1)
						{
							if (quest0 == 0)
							{
								htmltext = "4-04.htm";
							}
							else if (quest0 == 1)
							{
								htmltext = "4-06.htm";
							}
						}
						else if (quest0 == 0)
						{
							htmltext = "4-01.htm";
						}
						else if (quest0 == 1)
						{
							htmltext = "4-03.htm";
						}
					}
					else if (tab == 1)
					{
						if (quest0 == 0)
						{
							htmltext = "4-05.htm";
						}
						else if (quest0 == 1)
						{
							htmltext = "4-07.htm";
						}
					}
					else if (quest0 == 0)
					{
						htmltext = "4-02.htm";
					}
				}
			}
			else if (cond == 18)
			{
				htmltext = "4-08.htm";
			}
		}
		
		if (htmltext.isEmpty())
		{
			npc.showChatWindow(player);
		}
		
		return htmltext;
	}
	
	@Override
	public void onKill(Npc npc, Player player, boolean isSummon)
	{
		final int npcId = npc.getId();
		QuestState st = getQuestState(player, false);
		for (int archonMinion = 21646; archonMinion < 21652; archonMinion++)
		{
			if (npcId == archonMinion)
			{
				final Party party = player.getParty();
				if (party != null)
				{
					final List<QuestState> partyQuestMembers = new ArrayList<>();
					for (Player player1 : party.getMembers())
					{
						final QuestState st1 = findQuest(player1);
						if ((st1 != null) && st1.isCond(15) && player1.isInsideRadius2D(player, PlayerConfig.ALT_PARTY_RANGE))
						{
							partyQuestMembers.add(st1);
						}
					}
					
					if (!partyQuestMembers.isEmpty())
					{
						final QuestState st2 = partyQuestMembers.get(getRandom(partyQuestMembers.size()));
						giveHalishaMark(st2);
					}
				}
				else
				{
					final QuestState st1 = findQuest(player);
					if ((st1 != null) && st1.isCond(15))
					{
						giveHalishaMark(st1);
					}
				}
				return;
			}
		}
		
		for (int element : ARCHON_HALISHA_NORM)
		{
			if (npcId == element)
			{
				final QuestState st1 = findQuest(player);
				if ((st1 != null) && st1.isCond(15))
				{
					// This is just a guess....not really sure what it actually says, if anything
					autoChat(npc, _text[4].replace("PLAYERNAME", st1.getPlayer().getName()));
					giveItems(player, _items[8], 1);
					takeItems(player, _items[3], -1);
					st1.setCond(16, true);
				}
				return;
			}
		}
		
		for (int guardianAngel = 27214; guardianAngel < 27217; guardianAngel++)
		{
			if (npcId == guardianAngel)
			{
				final QuestState st1 = findQuest(player);
				if ((st1 != null) && st1.isCond(6))
				{
					final int kills = st1.getInt("kills");
					if (kills < 9)
					{
						st1.set("kills", Integer.toString(kills + 1));
					}
					else
					{
						giveItems(player, _items[5], 1);
						st.setCond(7, true);
					}
				}
				return;
			}
		}
		
		if ((st != null) && (npcId != _mob[2]))
		{
			final QuestState st2 = findRightState(npc);
			if (st2 != null)
			{
				final int cond = st.getCond();
				if ((npcId == _mob[0]) && (cond == 8))
				{
					if (!player.isInParty() && (st == st2))
					{
						autoChat(npc, _text[12].replace("PLAYERNAME", player.getName()));
						giveItems(player, _items[6], 1);
						st.setCond(9, true);
					}
					
					cancelQuestTimer("Mob_1 has despawned", npc, st2.getPlayer());
					st2.set("spawned", "0");
					deleteSpawn(npc);
				}
				else if ((npcId == _mob[1]) && (cond == 15))
				{
					if (!player.isInParty())
					{
						if (st == st2)
						{
							autoChat(npc, _text[4].replace("PLAYERNAME", player.getName()));
							giveItems(player, _items[8], 1);
							takeItems(player, _items[3], -1);
							st.setCond(16, true);
						}
						else
						{
							autoChat(npc, _text[5].replace("PLAYERNAME", player.getName()));
						}
					}
					
					cancelQuestTimer("Archon Hellisha has despawned", npc, st2.getPlayer());
					st2.set("spawned", "0");
					deleteSpawn(npc);
				}
			}
		}
		else if (npcId == _mob[0])
		{
			st = findRightState(npc);
			if (st != null)
			{
				cancelQuestTimer("Mob_1 has despawned", npc, st.getPlayer());
				st.set("spawned", "0");
				deleteSpawn(npc);
			}
		}
		else if (npcId == _mob[1])
		{
			st = findRightState(npc);
			if (st != null)
			{
				cancelQuestTimer("Archon Hellisha has despawned", npc, st.getPlayer());
				st.set("spawned", "0");
				deleteSpawn(npc);
			}
		}
		else if (npcId == _mob[2])
		{
			st = findRightState(npc);
			if (st != null)
			{
				st.setCond(18, true);
				autoChat(npc, _text[13].replace("PLAYERNAME", player.getName()));
				st.set("Quest0", "0");
				cancelQuestTimer("Mob_2 has despawned", npc, player);
				deleteSpawn(npc);
			}
		}
	}
	
	@Override
	public void onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
	{
		if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) != player.getObjectId()))
		{
			final Player questPlayer = World.findObject(SPAWN_LIST.get(npc)).asPlayer();
			if (questPlayer == null)
			{
				return;
			}
			
			for (WorldObject obj : targets)
			{
				if ((obj == questPlayer) || (obj == npc))
				{
					final QuestState st2 = findRightState(npc);
					if (st2 == null)
					{
						return;
					}
					
					autoChat(npc, _text[5].replace("PLAYERNAME", player.getName()));
					cancelQuestTimer("Archon Hellisha has despawned", npc, st2.getPlayer());
					st2.set("spawned", "0");
					deleteSpawn(npc);
				}
			}
		}
	}
	
	@Override
	public String onTalk(Npc npc, Player player)
	{
		final QuestState st = getQuestState(player, true);
		String htmltext = getNoQuestMsg(player);
		final int npcId = npc.getId();
		if ((npcId == _npc[0]) && st.isCompleted())
		{
			htmltext = getAlreadyCompletedMsg(player);
		}
		else if (player.getPlayerClass().getId() == getPrevClass(player))
		{
			switch (st.getCond())
			{
				case 0:
				{
					if (npcId == _npc[0])
					{
						htmltext = "0-01.htm";
					}
					break;
				}
				case 1:
				{
					if (npcId == _npc[0])
					{
						htmltext = "0-04.htm";
					}
					else if (npcId == _npc[2])
					{
						htmltext = "2-01.htm";
					}
					break;
				}
				case 2:
				{
					if (npcId == _npc[2])
					{
						htmltext = "2-02.htm";
					}
					else if (npcId == _npc[1])
					{
						htmltext = "1-01.htm";
					}
					break;
				}
				case 3:
				{
					if ((npcId == _npc[1]) && hasQuestItems(player, _items[0]))
					{
						if ((_items[11] == 0) || hasQuestItems(player, _items[11]))
						{
							htmltext = "1-03.htm";
						}
						else
						{
							htmltext = "1-02.htm";
						}
					}
					break;
				}
				case 4:
				{
					if (npcId == _npc[1])
					{
						htmltext = "1-04.htm";
					}
					else if (npcId == _npc[2])
					{
						htmltext = "2-03.htm";
					}
					break;
				}
				case 5:
				{
					if (npcId == _npc[2])
					{
						htmltext = "2-04.htm";
					}
					else if (npcId == _npc[5])
					{
						htmltext = "5-01.htm";
					}
					break;
				}
				case 6:
				{
					if (npcId == _npc[5])
					{
						htmltext = "5-03.htm";
					}
					else if (npcId == _npc[6])
					{
						htmltext = "6-01.htm";
					}
					break;
				}
				case 7:
				{
					if (npcId == _npc[6])
					{
						htmltext = "6-02.htm";
					}
					break;
				}
				case 8:
				{
					if (npcId == _npc[6])
					{
						htmltext = "6-04.htm";
					}
					else if (npcId == _npc[7])
					{
						htmltext = "7-01.htm";
					}
					break;
				}
				case 9:
				{
					if (npcId == _npc[7])
					{
						htmltext = "7-05.htm";
					}
					break;
				}
				case 10:
				{
					if (npcId == _npc[7])
					{
						htmltext = "7-07.htm";
					}
					else if (npcId == _npc[3])
					{
						htmltext = "3-01.htm";
					}
					break;
				}
				case 11:
				case 12:
				{
					if (npcId == _npc[3])
					{
						if (hasQuestItems(player, _items[2]))
						{
							htmltext = "3-05.htm";
						}
						else
						{
							htmltext = "3-04.htm";
						}
					}
					break;
				}
				case 13:
				{
					if (npcId == _npc[3])
					{
						htmltext = "3-06.htm";
					}
					else if (npcId == _npc[8])
					{
						htmltext = "8-01.htm";
					}
					break;
				}
				case 14:
				{
					if (npcId == _npc[8])
					{
						htmltext = "8-03.htm";
					}
					else if (npcId == _npc[11])
					{
						htmltext = "11-01.htm";
					}
					break;
				}
				case 15:
				{
					if (npcId == _npc[11])
					{
						htmltext = "11-02.htm";
					}
					else if (npcId == _npc[9])
					{
						htmltext = "9-01.htm";
					}
					break;
				}
				case 16:
				{
					if (npcId == _npc[9])
					{
						htmltext = "9-02.htm";
					}
					break;
				}
				case 17:
				{
					if (npcId == _npc[9])
					{
						htmltext = "9-04.htm";
					}
					else if (npcId == _npc[10])
					{
						htmltext = "10-01.htm";
					}
					break;
				}
				case 18:
				{
					if (npcId == _npc[10])
					{
						htmltext = "10-05.htm";
					}
					break;
				}
				case 19:
				{
					if (npcId == _npc[10])
					{
						htmltext = "10-07.htm";
					}
					else if (npcId == _npc[0])
					{
						htmltext = "0-06.htm";
					}
					break;
				}
				case 20:
				{
					if (npcId == _npc[0])
					{
						if (player.getLevel() >= 76)
						{
							htmltext = "0-09.htm";
							
							st.exitQuest(false);
							addExpAndSp(player, 2299404, 0);
							giveAdena(player, 5000000, true);
							giveItems(player, 6622, 1); // XXX rewardItems?
							final int playerClass = getPlayerClass(player);
							final int prevClass = getPrevClass(player);
							player.setPlayerClass(playerClass);
							if (!player.isSubClassActive() && (player.getBaseClass() == prevClass))
							{
								player.setBaseClass(playerClass);
							}
							
							player.broadcastUserInfo();
							cast(npc, player, 4339, 1);
						}
						else
						{
							htmltext = "0-010.htm";
						}
					}
					break;
				}
			}
		}
		
		return htmltext;
	}
	
	private QuestState findQuest(Player player)
	{
		final QuestState st = getQuestState(player, false);
		if (st != null)
		{
			if (getId() == 68)
			{
				for (int q = 0; q < 2; q++)
				{
					if (player.getPlayerClass().getId() == QUEST_CLASSES[1][q])
					{
						return st;
					}
				}
			}
			else if (player.getPlayerClass().getId() == QUEST_CLASSES[getId() - 67][0])
			{
				return st;
			}
		}
		
		return null;
	}
	
	private void autoChat(Npc npc, String text)
	{
		npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.GENERAL, npc.getId(), text));
	}
	
	private void cast(Npc npc, Creature target, int skillId, int level)
	{
		target.broadcastSkillPacket(new MagicSkillUse(target, target, skillId, level, 6000, 1), target);
		target.broadcastSkillPacket(new MagicSkillUse(npc, npc, skillId, level, 6000, 1), npc);
	}
	
	private void addSpawn(QuestState st, Npc mob)
	{
		SPAWN_LIST.put(mob, st.getPlayer().getObjectId());
	}
	
	private static Npc findSpawn(Player player, Npc npc)
	{
		if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) == player.getObjectId()))
		{
			return npc;
		}
		
		return null;
	}
	
	private void deleteSpawn(Npc npc)
	{
		if (SPAWN_LIST.remove(npc) != null)
		{
			npc.deleteMe();
		}
	}
	
	private QuestState findRightState(Npc npc)
	{
		Player player = null;
		QuestState st = null;
		final Integer spawned = SPAWN_LIST.get(npc);
		if (spawned != null)
		{
			player = World.getPlayer(spawned);
			if (player != null)
			{
				st = player.getQuestState(getName());
			}
		}
		
		return st;
	}
	
	private int getPlayerClass(Player player)
	{
		if (player.getPlayerClass().getId() == 0x81)
		{
			return _classId[1];
		}
		
		return _classId[0];
	}
	
	private int getPrevClass(Player player)
	{
		if (player.getPlayerClass().getId() == 0x81)
		{
			if (_prevClass.length == 1)
			{
				return -1;
			}
			
			return _prevClass[1];
		}
		
		return _prevClass[0];
	}
	
	private void giveHalishaMark(QuestState st)
	{
		if (st.getInt("spawned") == 0)
		{
			final Player player = st.getPlayer();
			if (getQuestItemsCount(player, _items[3]) >= 700)
			{
				takeItems(player, _items[3], 20);
				final int xx = st.getPlayer().getX();
				final int yy = st.getPlayer().getY();
				final int zz = st.getPlayer().getZ();
				final Npc archon = addSpawn(_mob[1], xx, yy, zz, -1);
				addSpawn(st, archon);
				st.set("spawned", "1");
				startQuestTimer("Archon Hellisha has despawned", 600000, archon, player);
				autoChat(archon, _text[13].replace("PLAYERNAME", st.getPlayer().getName()));
				archon.asAttackable().addDamageHate(st.getPlayer(), 0, 99999);
				archon.getAI().setIntentionAttack(st.getPlayer());
			}
			else
			{
				giveItems(player, _items[3], getRandom(1, 4));
			}
		}
	}
}