/*
* 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 .
*/
package quests.SagasScripts;
import com.l2jserver.Config;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2Party;
import com.l2jserver.gameserver.model.L2Skill;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State;
import com.l2jserver.gameserver.model.quest.jython.QuestJython;
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
import com.l2jserver.util.L2FastList;
import com.l2jserver.util.L2FastMap;
import com.l2jserver.util.Rnd;
public class SagasSuperClass extends QuestJython
{
private static L2FastList _scripts = new L2FastList();
public String qn = "SagasSuperClass";
public int qnu;
public int[] NPC = {};
public int[] Items = {};
public int[] Mob = {};
public int[] classid = {};
public int[] prevclass = {};
public int[] X = {};
public int[] Y = {};
public int[] Z = {};
public String[] Text = {};
L2FastMap _SpawnList = new L2FastMap();
int[] QuestClass[] = { { 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 } };
public SagasSuperClass(int id, String name, String descr)
{
super(id, name, descr);
qnu = id;
}
public void registerNPCs()
{
addStartNpc(NPC[0]);
addAttackId(Mob[2]);
addAttackId(Mob[1]);
addSkillSeeId(Mob[1]);
addFirstTalkId(NPC[4]);
for (int npc : NPC)
addTalkId(npc);
for (int mobid : Mob)
addKillId(mobid);
questItemIds = Items.clone();
questItemIds[0] = 0;
questItemIds[2] = 0; //remove Ice Crystal and Divine Stone of Wisdom
for (int Archon_Minion = 21646; Archon_Minion < 21652; Archon_Minion++)
addKillId(Archon_Minion);
int[] Archon_Hellisha_Norm = { 18212, 18214, 18215, 18216, 18218 };
for (int i = 0; i < Archon_Hellisha_Norm.length; i++)
addKillId(Archon_Hellisha_Norm[i]);
for (int Guardian_Angel = 27214; Guardian_Angel < 27217; Guardian_Angel++)
addKillId(Guardian_Angel);
}
public void Cast(L2Npc npc, L2Character target, int skillId, int level)
{
target.broadcastPacket(new MagicSkillUse(target, target, skillId, level, 6000, 1));
target.broadcastPacket(new MagicSkillUse(npc, npc, skillId, level, 6000, 1));
}
public void AutoChat(L2Npc npc, String text)
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), 0, npc.getNpcId(), text));
}
public void AddSpawn(QuestState st, L2Npc mob)
{
_SpawnList.put(mob, st.getPlayer().getObjectId());
}
public L2Npc FindSpawn(L2PcInstance player, L2Npc npc)
{
if (_SpawnList.containsKey(npc) && _SpawnList.get(npc) == player.getObjectId())
return npc;
return null;
}
public void DeleteSpawn(QuestState st, L2Npc npc)
{
if (_SpawnList.containsKey(npc))
{
_SpawnList.remove(npc);
npc.deleteMe();
}
}
public QuestState findRightState(L2Npc npc)
{
L2PcInstance player = null;
QuestState st = null;
if (_SpawnList.containsKey(npc))
{
player = L2World.getInstance().getPlayer(_SpawnList.get(npc));
if (player != null)
st = player.getQuestState(qn);
}
return st;
}
public void giveHallishaMark(QuestState st2)
{
if (st2.getInt("spawned") == 0)
{
if (st2.getQuestItemsCount(Items[3]) >= 700)
{
st2.takeItems(Items[3], 20);
int xx = st2.getPlayer().getX();
int yy = st2.getPlayer().getY();
int zz = st2.getPlayer().getZ();
L2Npc Archon = st2.addSpawn(Mob[1], xx, yy, zz);
AddSpawn(st2, Archon);
st2.set("spawned", "1");
st2.startQuestTimer("Archon Hellisha has despawned", 600000, Archon);
AutoChat(Archon, Text[13].replace("PLAYERNAME", st2.getPlayer().getName()));
((L2Attackable) Archon).addDamageHate(st2.getPlayer(), 0, 99999);
Archon.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, st2.getPlayer(), null);
}
else
st2.giveItems(Items[3], Rnd.get(1, 4));
}
}
public QuestState findQuest(L2PcInstance player)
{
QuestState st = player.getQuestState(qn);
if (st != null)
{
if (qnu != 68)
{
if (player.getClassId().getId() == QuestClass[qnu - 67][0])
return st;
}
else
{
for (int q = 0; q < 2; q++)
{
if (player.getClassId().getId() == QuestClass[1][q])
return st;
}
}
}
return null;
}
public int getClassId(L2PcInstance player)
{
if (player.getClassId().getId() == 0x81)
{
return classid[1];
}
return classid[0];
}
public int getPrevClass(L2PcInstance player)
{
if (player.getClassId().getId() == 0x81)
{
if (prevclass.length == 1)
return -1;
else
return prevclass[1];
}
return prevclass[0];
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
QuestState st = player.getQuestState(qn);
String htmltext = "";
if (st != null)
{
if (event.equalsIgnoreCase("0-011.htm") || event.equalsIgnoreCase("0-012.htm") || event.equalsIgnoreCase("0-013.htm") || event.equalsIgnoreCase("0-014.htm") || event.equalsIgnoreCase("0-015.htm"))
htmltext = event;
else if (event.equalsIgnoreCase("accept"))
{
st.set("cond", "1");
st.setState(State.STARTED);
st.playSound("ItemSound.quest_accept");
st.giveItems(Items[10], 1);
htmltext = "0-03.htm";
}
else if (event.equalsIgnoreCase("0-1"))
{
if (player.getLevel() < 76)
{
htmltext = "0-02.htm";
if (st.getState() == State.CREATED)
st.exitQuest(true);
}
else
htmltext = "0-05.htm";
}
else if (event.equalsIgnoreCase("0-2"))
{
if (player.getLevel() >= 76)
{
st.exitQuest(false);
st.set("cond", "0");
htmltext = "0-07.htm";
st.takeItems(Items[10], -1);
st.addExpAndSp(2586527, 0);
st.giveItems(57, 5000000);
st.giveItems(6622, 1);
int Class = getClassId(player);
int prevClass = getPrevClass(player);
player.setClassId(Class);
if (!player.isSubClassActive() && player.getBaseClass() == prevClass)
player.setBaseClass(Class);
player.broadcastUserInfo();
Cast(npc, player, 4339, 1);
Quest q = QuestManager.getInstance().getQuest("SkillTransfer");
if (q != null)
q.startQuestTimer("givePormanders", 1, npc, player);
}
else
{
st.takeItems(Items[10], -1);
st.playSound("ItemSound.quest_middle");
st.set("cond", "20");
htmltext = "0-08.htm";
}
}
else if (event.equalsIgnoreCase("1-3"))
{
st.set("cond", "3");
htmltext = "1-05.htm";
}
else if (event.equalsIgnoreCase("1-4"))
{
st.set("cond", "4");
st.takeItems(Items[0], 1);
if (Items[11] != 0)
st.takeItems(Items[11], 1);
st.giveItems(Items[1], 1);
htmltext = "1-06.htm";
}
else if (event.equalsIgnoreCase("2-1"))
{
st.set("cond", "2");
htmltext = "2-05.htm";
}
else if (event.equalsIgnoreCase("2-2"))
{
st.set("cond", "5");
st.takeItems(Items[1], 1);
st.giveItems(Items[4], 1);
htmltext = "2-06.htm";
}
else if (event.equalsIgnoreCase("3-5"))
{
htmltext = "3-07.htm";
}
else if (event.equalsIgnoreCase("3-6"))
{
st.set("cond", "11");
htmltext = "3-02.htm";
}
else if (event.equalsIgnoreCase("3-7"))
{
st.set("cond", "12");
htmltext = "3-03.htm";
}
else if (event.equalsIgnoreCase("3-8"))
{
st.set("cond", "13");
st.takeItems(Items[2], 1);
st.giveItems(Items[7], 1);
htmltext = "3-08.htm";
}
else if (event.equalsIgnoreCase("4-1"))
{
htmltext = "4-010.htm";
}
else if (event.equalsIgnoreCase("4-2"))
{
st.giveItems(Items[9], 1);
st.set("cond", "18");
st.playSound("ItemSound.quest_middle");
htmltext = "4-011.htm";
}
else if (event.equalsIgnoreCase("4-3"))
{
st.giveItems(Items[9], 1);
st.set("cond", "18");
AutoChat(npc, Text[13].replace("PLAYERNAME", player.getName()));
st.set("Quest0", "0");
cancelQuestTimer("Mob_2 has despawned", npc, player);
st.playSound("ItemSound.quest_middle");
DeleteSpawn(st, npc);
return null;
}
else if (event.equalsIgnoreCase("5-1"))
{
st.set("cond", "6");
st.takeItems(Items[4], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "5-02.htm";
}
else if (event.equalsIgnoreCase("6-1"))
{
st.set("cond", "8");
st.takeItems(Items[5], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "6-03.htm";
}
else if (event.equalsIgnoreCase("7-1"))
{
if (st.getInt("spawned") == 1)
htmltext = "7-03.htm";
else if (st.getInt("spawned") == 0)
{
L2Npc Mob_1 = st.addSpawn(Mob[0], X[0], Y[0], Z[0]);
st.set("spawned", "1");
st.startQuestTimer("Mob_1 Timer 1", 500, Mob_1);
st.startQuestTimer("Mob_1 has despawned", 300000, Mob_1);
AddSpawn(st, Mob_1);
htmltext = "7-02.htm";
}
else
htmltext = "7-04.htm";
}
else if (event.equalsIgnoreCase("7-2"))
{
st.set("cond", "10");
st.takeItems(Items[6], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "7-06.htm";
}
else if (event.equalsIgnoreCase("8-1"))
{
st.set("cond", "14");
st.takeItems(Items[7], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "8-02.htm";
}
else if (event.equalsIgnoreCase("9-1"))
{
st.set("cond", "17");
st.takeItems(Items[8], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "9-03.htm";
}
else if (event.equalsIgnoreCase("10-1"))
{
if (st.getInt("Quest0") == 0)
{
L2Npc Mob_3 = st.addSpawn(Mob[2], X[1], Y[1], Z[1]);
L2Npc Mob_2 = st.addSpawn(NPC[4], X[2], Y[2], Z[2]);
AddSpawn(st, Mob_3);
AddSpawn(st, Mob_2);
st.set("Mob_2", String.valueOf(Mob_2.getObjectId()));
st.set("Quest0", "1");
st.set("Quest1", "45");
st.startRepeatingQuestTimer("Mob_3 Timer 1", 500, Mob_3);
st.startQuestTimer("Mob_3 has despawned", 59000, Mob_3);
st.startQuestTimer("Mob_2 Timer 1", 500, Mob_2);
st.startQuestTimer("Mob_2 has despawned", 60000, Mob_2);
htmltext = "10-02.htm";
}
else if (st.getInt("Quest1") == 45)
htmltext = "10-03.htm";
else
htmltext = "10-04.htm";
}
else if (event.equalsIgnoreCase("10-2"))
{
st.set("cond", "19");
st.takeItems(Items[9], 1);
Cast(npc, player, 4546, 1);
st.playSound("ItemSound.quest_middle");
htmltext = "10-06.htm";
}
else if (event.equalsIgnoreCase("11-9"))
{
st.set("cond", "15");
htmltext = "11-03.htm";
}
else if (event.equalsIgnoreCase("Mob_1 Timer 1"))
{
AutoChat(npc, Text[0].replace("PLAYERNAME", player.getName()));
return null;
}
else if (event.equalsIgnoreCase("Mob_1 has despawned"))
{
AutoChat(npc, Text[1].replace("PLAYERNAME", player.getName()));
st.set("spawned", "0");
DeleteSpawn(st, npc);
return null;
}
else if (event.equalsIgnoreCase("Archon Hellisha has despawned"))
{
AutoChat(npc, Text[6].replace("PLAYERNAME", player.getName()));
st.set("spawned", "0");
DeleteSpawn(st, npc);
return null;
}
else if (event.equalsIgnoreCase("Mob_3 Timer 1"))
{
L2Npc Mob_2 = FindSpawn(player, (L2Npc) L2World.getInstance().findObject(st.getInt("Mob_2")));
if (npc.getKnownList().knowsObject(Mob_2))
{
((L2Attackable) npc).addDamageHate(Mob_2, 0, 99999);
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, Mob_2, null);
Mob_2.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, npc, null);
AutoChat(npc, Text[14].replace("PLAYERNAME", player.getName()));
cancelQuestTimer("Mob_3 Timer 1", npc, player);
}
return null;
}
else if (event.equalsIgnoreCase("Mob_3 has despawned"))
{
AutoChat(npc, Text[15].replace("PLAYERNAME", player.getName()));
st.set("Quest0", "2");
DeleteSpawn(st, npc);
return null;
}
else if (event.equalsIgnoreCase("Mob_2 Timer 1"))
{
AutoChat(npc, Text[7].replace("PLAYERNAME", player.getName()));
st.startQuestTimer("Mob_2 Timer 2", 1500, npc);
if (st.getInt("Quest1") == 45)
st.set("Quest1", "0");
return null;
}
else if (event.equalsIgnoreCase("Mob_2 Timer 2"))
{
AutoChat(npc, Text[8].replace("PLAYERNAME", player.getName()));
st.startQuestTimer("Mob_2 Timer 3", 10000, npc);
return null;
}
else if (event.equalsIgnoreCase("Mob_2 Timer 3"))
{
if (st.getInt("Quest0") == 0)
{
st.startQuestTimer("Mob_2 Timer 3", 13000, npc);
if (st.getRandom(2) == 0)
AutoChat(npc, Text[9].replace("PLAYERNAME", player.getName()));
else
AutoChat(npc, Text[10].replace("PLAYERNAME", player.getName()));
}
return null;
}
else if (event.equalsIgnoreCase("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");
if (st.getInt("Quest0") == 1)
AutoChat(npc, Text[11].replace("PLAYERNAME", player.getName()));
else
AutoChat(npc, Text[12].replace("PLAYERNAME", player.getName()));
DeleteSpawn(st, npc);
}
else
st.startQuestTimer("Mob_2 has despawned", 1000, npc);
return null;
}
}
else
return null;
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
QuestState st = player.getQuestState(qn);
if (st != null)
{
int npcId = npc.getNpcId();
int cond = st.getInt("cond");
if (st.getState() == State.COMPLETED && npcId == NPC[0])
htmltext = "You have already completed this quest!";
else if (player.getClassId().getId() == getPrevClass(player))
{
if (cond == 0)
{
if (npcId == NPC[0])
htmltext = "0-01.htm";
}
else if (cond == 1)
{
if (npcId == NPC[0])
htmltext = "0-04.htm";
else if (npcId == NPC[2])
htmltext = "2-01.htm";
}
else if (cond == 2)
{
if (npcId == NPC[2])
htmltext = "2-02.htm";
else if (npcId == NPC[1])
htmltext = "1-01.htm";
}
else if (cond == 3)
{
if (npcId == NPC[1] && st.getQuestItemsCount(Items[0]) != 0)
{
htmltext = "1-02.htm";
if (Items[11] == 0 || st.getQuestItemsCount(Items[11]) != 0)
htmltext = "1-03.htm";
}
}
else if (cond == 4)
{
if (npcId == NPC[1])
htmltext = "1-04.htm";
else if (npcId == NPC[2])
htmltext = "2-03.htm";
}
else if (cond == 5)
{
if (npcId == NPC[2])
htmltext = "2-04.htm";
else if (npcId == NPC[5])
htmltext = "5-01.htm";
}
else if (cond == 6)
{
if (npcId == NPC[5])
htmltext = "5-03.htm";
else if (npcId == NPC[6])
htmltext = "6-01.htm";
}
else if (cond == 7)
{
if (npcId == NPC[6])
htmltext = "6-02.htm";
}
else if (cond == 8)
{
if (npcId == NPC[6])
htmltext = "6-04.htm";
else if (npcId == NPC[7])
htmltext = "7-01.htm";
}
else if (cond == 9)
{
if (npcId == NPC[7])
htmltext = "7-05.htm";
}
else if (cond == 10)
{
if (npcId == NPC[7])
htmltext = "7-07.htm";
else if (npcId == NPC[3])
htmltext = "3-01.htm";
}
else if (cond == 11 || cond == 12)
{
if (npcId == NPC[3])
{
if (st.getQuestItemsCount(Items[2]) > 0)
htmltext = "3-05.htm";
else
htmltext = "3-04.htm";
}
}
else if (cond == 13)
{
if (npcId == NPC[3])
htmltext = "3-06.htm";
else if (npcId == NPC[8])
htmltext = "8-01.htm";
}
else if (cond == 14)
{
if (npcId == NPC[8])
htmltext = "8-03.htm";
else if (npcId == NPC[11])
htmltext = "11-01.htm";
}
else if (cond == 15)
{
if (npcId == NPC[11])
htmltext = "11-02.htm";
else if (npcId == NPC[9])
htmltext = "9-01.htm";
}
else if (cond == 16)
{
if (npcId == NPC[9])
htmltext = "9-02.htm";
}
else if (cond == 17)
{
if (npcId == NPC[9])
htmltext = "9-04.htm";
else if (npcId == NPC[10])
htmltext = "10-01.htm";
}
else if (cond == 18)
{
if (npcId == NPC[10])
htmltext = "10-05.htm";
}
else if (cond == 19)
{
if (npcId == NPC[10])
htmltext = "10-07.htm";
else if (npcId == NPC[0])
htmltext = "0-06.htm";
}
else if (cond == 20)
{
if (npcId == NPC[0])
{
if (player.getLevel() >= 76)
{
htmltext = "0-09.htm";
if (getClassId(player) < 131 || getClassId(player) > 135) //in Kamael quests, npc wants to chat for a bit before changing class
{
st.exitQuest(false);
st.set("cond", "0");
st.addExpAndSp(2299404, 0);
st.giveItems(57, 5000000);
st.giveItems(6622, 1);
int Class = getClassId(player);
int prevClass = getPrevClass(player);
player.setClassId(Class);
if (!player.isSubClassActive() && player.getBaseClass() == prevClass)
player.setBaseClass(Class);
player.broadcastUserInfo();
Cast(npc, player, 4339, 1);
Quest q = QuestManager.getInstance().getQuest("SkillTransfer");
if (q != null)
q.startQuestTimer("givePormanders", 1, npc, player);
}
}
else
htmltext = "0-010.htm";
}
}
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(qn);
int npcId = npc.getNpcId();
if (st != null)
{
int cond = st.getInt("cond");
if (npcId == NPC[4])
{
if (cond == 17)
{
QuestState st2 = findRightState(npc);
if (st2 != null)
{
player.setLastQuestNpcObject(npc.getObjectId());
if (st == st2)
{
if (st.getInt("Tab") == 1)
{
if (st.getInt("Quest0") == 0)
htmltext = "4-04.htm";
else if (st.getInt("Quest0") == 1)
htmltext = "4-06.htm";
}
else
{
if (st.getInt("Quest0") == 0)
htmltext = "4-01.htm";
else if (st.getInt("Quest0") == 1)
htmltext = "4-03.htm";
}
}
else
{
if (st.getInt("Tab") == 1)
{
if (st.getInt("Quest0") == 0)
htmltext = "4-05.htm";
else if (st.getInt("Quest0") == 1)
htmltext = "4-07.htm";
}
else
{
if (st.getInt("Quest0") == 0)
htmltext = "4-02.htm";
}
}
}
}
else if (cond == 18)
htmltext = "4-08.htm";
}
}
if (htmltext == "")
npc.showChatWindow(player);
return htmltext;
}
@Override
public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
{
QuestState st2 = findRightState(npc);
if (st2 == null)
return super.onAttack(npc, player, damage, isPet);
int cond = st2.getInt("cond");
QuestState st = player.getQuestState(qn);
int npcId = npc.getNpcId();
if (npcId == Mob[2] && st == st2 && cond == 17)
{
st.set("Quest0", String.valueOf(st.getInt("Quest0") + 1));
if (st.getInt("Quest0") == 1)
AutoChat(npc, Text[16].replace("PLAYERNAME", player.getName()));
if (st.getInt("Quest0") > 15)
{
st.set("Quest0", "1");
AutoChat(npc, Text[17].replace("PLAYERNAME", player.getName()));
cancelQuestTimer("Mob_3 has despawned", npc, st2.getPlayer());
st.set("Tab", "1");
DeleteSpawn(st, npc);
}
}
else if (npcId == Mob[1] && cond == 15)
{
if (st != st2 || (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(st2, npc);
}
}
return super.onAttack(npc, player, damage, isPet);
}
@Override
public String onSkillSee(L2Npc npc, L2PcInstance player, L2Skill skill, L2Object[] targets, boolean isPet)
{
if (_SpawnList.containsKey(npc) && _SpawnList.get(npc) != player.getObjectId())
{
L2PcInstance quest_player = (L2PcInstance) L2World.getInstance().findObject(_SpawnList.get(npc));
if (quest_player == null)
return null;
else
{
for (L2Object obj : targets)
{
if (obj == quest_player || obj == npc)
{
QuestState st2 = findRightState(npc);
if (st2 == null)
return null;
AutoChat(npc, Text[5].replace("PLAYERNAME", player.getName()));
cancelQuestTimer("Archon Hellisha has despawned", npc, st2.getPlayer());
st2.set("spawned", "0");
DeleteSpawn(st2, npc);
}
}
}
}
return super.onSkillSee(npc, player, skill, targets, isPet);
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
{
int npcId = npc.getNpcId();
QuestState st = player.getQuestState(qn);
for (int Archon_Minion = 21646; Archon_Minion < 21652; Archon_Minion++)
{
if (npcId == Archon_Minion)
{
L2Party party = player.getParty();
if (party != null)
{
L2FastList PartyQuestMembers = new L2FastList();
for (L2PcInstance player1 : party.getPartyMembers())
{
QuestState st1 = findQuest(player1);
if (st1 != null && player1.isInsideRadius(player, Config.ALT_PARTY_RANGE2, false, false))
{
if (st1.getInt("cond") == 15)
PartyQuestMembers.add(st1);
}
}
if (PartyQuestMembers.size() > 0)
{
QuestState st2 = PartyQuestMembers.get(Rnd.get(PartyQuestMembers.size()));
giveHallishaMark(st2);
}
}
else
{
QuestState st1 = findQuest(player);
if (st1 != null)
{
if (st1.getInt("cond") == 15)
giveHallishaMark(st1);
}
}
return super.onKill(npc, player, isPet);
}
}
int[] Archon_Hellisha_Norm = { 18212, 18214, 18215, 18216, 18218 };
for (int i = 0; i < Archon_Hellisha_Norm.length; i++)
{
if (npcId == Archon_Hellisha_Norm[i])
{
QuestState st1 = findQuest(player);
if (st1 != null)
{
if (st1.getInt("cond") == 15)
{
//This is just a guess....not really sure what it actually says, if anything
AutoChat(npc, Text[4].replace("PLAYERNAME", st1.getPlayer().getName()));
st1.giveItems(Items[8], 1);
st1.takeItems(Items[3], -1);
st1.set("cond", "16");
st1.playSound("ItemSound.quest_middle");
}
}
return super.onKill(npc, player, isPet);
}
}
for (int Guardian_Angel = 27214; Guardian_Angel < 27217; Guardian_Angel++)
{
if (npcId == Guardian_Angel)
{
QuestState st1 = findQuest(player);
if (st1 != null)
{
if (st1.getInt("cond") == 6)
{
if (st1.getInt("kills") < 9)
st1.set("kills", String.valueOf(st1.getInt("kills") + 1));
else
{
st1.playSound("ItemSound.quest_middle");
st1.giveItems(Items[5], 1);
st1.set("cond", "7");
}
}
}
return super.onKill(npc, player, isPet);
}
}
if (st != null && npcId != Mob[2])
{
QuestState st2 = findRightState(npc);
if (st2 == null)
return super.onKill(npc, player, isPet);
int cond = st.getInt("cond");
if (npcId == Mob[0] && cond == 8)
{
if (!player.isInParty())
{
if (st == st2)
{
AutoChat(npc, Text[12].replace("PLAYERNAME", player.getName()));
st.giveItems(Items[6], 1);
st.set("cond", "9");
st.playSound("ItemSound.quest_middle");
}
}
cancelQuestTimer("Mob_1 has despawned", npc, st2.getPlayer());
st2.set("spawned", "0");
DeleteSpawn(st2, npc);
}
else if (npcId == Mob[1] && cond == 15)
{
if (!player.isInParty())
{
if (st == st2)
{
AutoChat(npc, Text[4].replace("PLAYERNAME", player.getName()));
st.giveItems(Items[8], 1);
st.takeItems(Items[3], -1);
st.set("cond", "16");
st.playSound("ItemSound.quest_middle");
}
else
AutoChat(npc, Text[5].replace("PLAYERNAME", player.getName()));
}
cancelQuestTimer("Archon Hellisha has despawned", npc, st2.getPlayer());
st2.set("spawned", "0");
DeleteSpawn(st2, 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(st, 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(st, npc);
}
}
}
return super.onKill(npc, player, isPet);
}
@Override
public boolean unload()
{
// if sub classes aren't loaded, just unload superclass
if (_scripts.size() == 0)
return super.unload();
// unload all subclasses
for (int index = 0; index < _scripts.size(); index++)
{
if (_scripts.get(index) == null)
continue;
QuestManager.getInstance().removeQuest(_scripts.get(index));
}
_scripts.clear();
// now unload superclass
return super.unload();
}
public static void main(String[] args)
{
// initialize superclass
new SagasSuperClass(-1, "SagasSuperClass", "Saga's SuperClass");
// initialize subclasses
_scripts.add(new SagaOfEvasSaint());
_scripts.add(new SagaOfEvasTemplar());
_scripts.add(new SagaOfTheAdventurer());
_scripts.add(new SagaOfTheArcanaLord());
_scripts.add(new SagaOfTheArchmage());
_scripts.add(new SagaOfTheCardinal());
_scripts.add(new SagaOfTheDominator());
_scripts.add(new SagaOfTheDoombringer());
_scripts.add(new SagaOfTheDoomcryer());
_scripts.add(new SagaOfTheDreadnoughts());
_scripts.add(new SagaOfTheDuelist());
_scripts.add(new SagaOfTheElementalMaster());
_scripts.add(new SagaOfTheFortuneSeeker());
_scripts.add(new SagaOfTheGhostHunter());
_scripts.add(new SagaOfTheGhostSentinel());
_scripts.add(new SagaOfTheGrandKhavatari());
_scripts.add(new SagaOfTheHellKnight());
_scripts.add(new SagaOfTheHierophant());
_scripts.add(new SagaOfTheMaestro());
_scripts.add(new SagaOfTheMoonlightSentinel());
_scripts.add(new SagaOfTheMysticMuse());
_scripts.add(new SagaOfThePhoenixKnight());
_scripts.add(new SagaOfTheSagittarius());
_scripts.add(new SagaOfTheShillienSaint());
_scripts.add(new SagaOfTheShillienTemplar());
_scripts.add(new SagaOfTheSoulHound());
_scripts.add(new SagaOfTheSoultaker());
_scripts.add(new SagaOfTheSpectralDancer());
_scripts.add(new SagaOfTheSpectralMaster());
_scripts.add(new SagaOfTheStormScreamer());
_scripts.add(new SagaOfTheSwordMuse());
_scripts.add(new SagaOfTheTitan());
_scripts.add(new SagaOfTheTrickster());
_scripts.add(new SagaOfTheWindRider());
}
}