/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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.
*
* L2J DataPack 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.Q00230_TestOfTheSummoner;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.enums.QuestSound;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.model.holders.SkillHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.clientpackets.Say2;
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
import com.l2jserver.gameserver.network.serverpackets.SocialAction;
import com.l2jserver.gameserver.util.Broadcast;
import com.l2jserver.gameserver.util.Util;
/**
* Test Of The Summoner (230)
* @author ivantotov
*/
public final class Q00230_TestOfTheSummoner extends Quest
{
// NPCs
private static final int GROCER_LARA = 30063;
private static final int HIGH_SUMMONER_GALATEA = 30634;
private static final int SUMMONER_ALMORS = 30635;
private static final int SUMMONER_CAMONIELL = 30636;
private static final int SUMMONER_BELTHUS = 30637;
private static final int SUMMONER_BASILLA = 30638;
private static final int SUMMONER_CELESTIEL = 30639;
private static final int SUMMONER_BRYNTHEA = 30640;
// Items
private static final int LETOLIZARDMAN_AMULET = 3337;
private static final int SAC_OF_REDSPORES = 3338;
private static final int KARULBUGBEAR_TOTEM = 3339;
private static final int SHARDS_OF_MANASHEN = 3340;
private static final int BREKAORC_TOTEM = 3341;
private static final int CRIMSON_BLOODSTONE = 3342;
private static final int TALONS_OF_TYRANT = 3343;
private static final int WINGS_OF_DRONEANT = 3344;
private static final int TUSK_OF_WINDSUS = 3345;
private static final int FANGS_OF_WYRM = 3346;
private static final int LARAS_1ST_LIST = 3347;
private static final int LARAS_2ND_LIST = 3348;
private static final int LARAS_3RD_LIST = 3349;
private static final int LARAS_4TH_LIST = 3350;
private static final int LARAS_5TH_LIST = 3351;
private static final int GALATEAS_LETTER = 3352;
private static final int BEGINNERS_ARCANA = 3353;
private static final int ALMORS_ARCANA = 3354;
private static final int CAMONIELL_ARCANA = 3355;
private static final int BELTHUS_ARCANA = 3356;
private static final int BASILLIA_ARCANA = 3357;
private static final int CELESTIEL_ARCANA = 3358;
private static final int BRYNTHEA_ARCANA = 3359;
private static final int CRYSTAL_OF_STARTING_1ST = 3360;
private static final int CRYSTAL_OF_INPROGRESS_1ST = 3361;
private static final int CRYSTAL_OF_FOUL_1ST = 3362;
private static final int CRYSTAL_OF_DEFEAT_1ST = 3363;
private static final int CRYSTAL_OF_VICTORY_1ST = 3364;
private static final int CRYSTAL_OF_STARTING_2ND = 3365;
private static final int CRYSTAL_OF_INPROGRESS_2ND = 3366;
private static final int CRYSTAL_OF_FOUL_2ND = 3367;
private static final int CRYSTAL_OF_DEFEAT_2ND = 3368;
private static final int CRYSTAL_OF_VICTORY_2ND = 3369;
private static final int CRYSTAL_OF_STARTING_3RD = 3370;
private static final int CRYSTAL_OF_INPROGRESS_3RD = 3371;
private static final int CRYSTAL_OF_FOUL_3RD = 3372;
private static final int CRYSTAL_OF_DEFEAT_3RD = 3373;
private static final int CRYSTAL_OF_VICTORY_3RD = 3374;
private static final int CRYSTAL_OF_STARTING_4TH = 3375;
private static final int CRYSTAL_OF_INPROGRESS_4TH = 3376;
private static final int CRYSTAL_OF_FOUL_4TH = 3377;
private static final int CRYSTAL_OF_DEFEAT_4TH = 3378;
private static final int CRYSTAL_OF_VICTORY_4TH = 3379;
private static final int CRYSTAL_OF_STARTING_5TH = 3380;
private static final int CRYSTAL_OF_INPROGRESS_5TH = 3381;
private static final int CRYSTAL_OF_FOUL_5TH = 3382;
private static final int CRYSTAL_OF_DEFEAT_5TH = 3383;
private static final int CRYSTAL_OF_VICTORY_5TH = 3384;
private static final int CRYSTAL_OF_STARTING_6TH = 3385;
private static final int CRYSTAL_OF_INPROGRESS_6TH = 3386;
private static final int CRYSTAL_OF_FOUL_6TH = 3387;
private static final int CRYSTAL_OF_DEFEAT_6TH = 3388;
private static final int CRYSTAL_OF_VICTORY_6TH = 3389;
// Reward
private static final int MARK_OF_SUMMONER = 3336;
private static final int DIMENSIONAL_DIAMOND = 7562;
// Monster
private static final int NOBLE_ANT = 20089;
private static final int NOBLE_ANT_LEADER = 20090;
private static final int WYRM = 20176;
private static final int TYRANT = 20192;
private static final int TYRANT_KINGPIN = 20193;
private static final int BREKA_ORC = 20267;
private static final int BREKA_ORC_ARCHER = 20268;
private static final int BREKA_ORC_SHAMAN = 20269;
private static final int BREKA_ORC_OVERLORD = 20270;
private static final int BREKA_ORC_WARRIOR = 20271;
private static final int FETTERED_SOUL = 20552;
private static final int WINDSUS = 20553;
private static final int GIANT_FUNGUS = 20555;
private static final int MANASHEN_GARGOYLE = 20563;
private static final int LETO_LIZARDMAN = 20577;
private static final int LETO_LIZARDMAN_ARCHER = 20578;
private static final int LETO_LIZARDMAN_SOLDIER = 20579;
private static final int LETO_LIZARDMAN_WARRIOR = 20580;
private static final int LETO_LIZARDMAN_SHAMAN = 20581;
private static final int LETO_LIZARDMAN_OVERLORD = 20582;
private static final int KARUL_BUGBEAR = 20600;
// Quest Monster
private static final int PAKO_THE_CAT = 27102;
private static final int UNICORN_RACER = 27103;
private static final int SHADOW_TUREN = 27104;
private static final int MIMI_THE_CAT = 27105;
private static final int UNICORN_PHANTASM = 27106;
private static final int SILHOUETTE_TILFO = 27107;
// Skill
private static final SkillHolder REDUCTION_IN_RECOVERY_TIME = new SkillHolder(4126, 1);
// Misc
private static final int MIN_LEVEL = 39;
private static final Map MONSTERS = new HashMap<>();
static
{
MONSTERS.put(PAKO_THE_CAT, new MonsterData(CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_VICTORY_1ST, NpcStringId.IM_SORRY_LORD));
MONSTERS.put(UNICORN_RACER, new MonsterData(CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_VICTORY_3RD, NpcStringId.I_LOSE));
MONSTERS.put(SHADOW_TUREN, new MonsterData(CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_VICTORY_5TH, NpcStringId.UGH_I_LOST));
MONSTERS.put(MIMI_THE_CAT, new MonsterData(CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_VICTORY_2ND, NpcStringId.LOST_SORRY_LORD));
MONSTERS.put(UNICORN_PHANTASM, new MonsterData(CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_VICTORY_4TH, NpcStringId.I_LOSE));
MONSTERS.put(SILHOUETTE_TILFO, new MonsterData(CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_VICTORY_6TH, NpcStringId.UGH_CAN_THIS_BE_HAPPENING));
}
public Q00230_TestOfTheSummoner()
{
super(230, Q00230_TestOfTheSummoner.class.getSimpleName(), "Test Of The Summoner");
addStartNpc(HIGH_SUMMONER_GALATEA);
addTalkId(HIGH_SUMMONER_GALATEA, GROCER_LARA, SUMMONER_ALMORS, SUMMONER_CAMONIELL, SUMMONER_BELTHUS, SUMMONER_BASILLA, SUMMONER_CELESTIEL, SUMMONER_BRYNTHEA);
addKillId(NOBLE_ANT, NOBLE_ANT_LEADER, WYRM, TYRANT, TYRANT_KINGPIN, BREKA_ORC, BREKA_ORC_ARCHER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, BREKA_ORC_WARRIOR, FETTERED_SOUL, WINDSUS, GIANT_FUNGUS, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, KARUL_BUGBEAR);
addKillId(MONSTERS.keySet());
addAttackId(PAKO_THE_CAT, UNICORN_RACER, SHADOW_TUREN, MIMI_THE_CAT, UNICORN_PHANTASM, SILHOUETTE_TILFO);
registerQuestItems(LETOLIZARDMAN_AMULET, SAC_OF_REDSPORES, KARULBUGBEAR_TOTEM, SHARDS_OF_MANASHEN, BREKAORC_TOTEM, CRIMSON_BLOODSTONE, TALONS_OF_TYRANT, WINGS_OF_DRONEANT, TUSK_OF_WINDSUS, FANGS_OF_WYRM, LARAS_1ST_LIST, LARAS_2ND_LIST, LARAS_3RD_LIST, LARAS_4TH_LIST, LARAS_5TH_LIST, GALATEAS_LETTER, BEGINNERS_ARCANA, ALMORS_ARCANA, CAMONIELL_ARCANA, BELTHUS_ARCANA, BASILLIA_ARCANA, CELESTIEL_ARCANA, BRYNTHEA_ARCANA, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_DEFEAT_1ST, CRYSTAL_OF_VICTORY_1ST, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_DEFEAT_2ND, CRYSTAL_OF_VICTORY_2ND, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_DEFEAT_3RD, CRYSTAL_OF_VICTORY_3RD, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_DEFEAT_4TH, CRYSTAL_OF_VICTORY_4TH, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_DEFEAT_5TH, CRYSTAL_OF_VICTORY_5TH, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_DEFEAT_6TH, CRYSTAL_OF_VICTORY_6TH);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
switch (event)
{
case "DESPAWN":
{
npc.deleteMe();
break;
}
case "KILLED_ATTACKER":
{
final L2Summon summon = npc.getVariables().getObject("ATTACKER", L2Summon.class);
if ((summon != null) && summon.isDead())
{
npc.deleteMe();
}
else
{
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
}
break;
}
}
// For NPC-only timers, player is null and no further checks or actions are required.
if (player == null)
{
return null;
}
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "ACCEPT":
{
if (qs.isCreated())
{
qs.startQuest();
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
giveItems(player, GALATEAS_LETTER, 1);
if (player.getVariables().getInt("2ND_CLASS_DIAMOND_REWARD", 0) == 0)
{
giveItems(player, DIMENSIONAL_DIAMOND, 122);
player.getVariables().set("2ND_CLASS_DIAMOND_REWARD", 1);
htmltext = "30634-08a.htm";
}
else
{
htmltext = "30634-08.htm";
}
}
break;
}
case "30634-04.htm":
case "30634-05.htm":
case "30634-06.htm":
case "30634-07.htm":
case "30634-11.html":
case "30634-11a.html":
case "30634-11b.html":
case "30634-11c.html":
case "30634-11d.html":
{
htmltext = event;
break;
}
case "30063-02.html":
{
switch (getRandom(5))
{
case 0:
{
giveItems(player, LARAS_1ST_LIST, 1);
break;
}
case 1:
{
giveItems(player, LARAS_2ND_LIST, 1);
break;
}
case 2:
{
giveItems(player, LARAS_3RD_LIST, 1);
break;
}
case 3:
{
giveItems(player, LARAS_4TH_LIST, 1);
break;
}
case 4:
{
giveItems(player, LARAS_5TH_LIST, 1);
break;
}
}
qs.setCond(2, true);
takeItems(player, GALATEAS_LETTER, 1);
htmltext = event;
break;
}
case "30063-04.html":
{
switch (getRandom(5))
{
case 0:
{
giveItems(player, LARAS_1ST_LIST, 1);
break;
}
case 1:
{
giveItems(player, LARAS_2ND_LIST, 1);
break;
}
case 2:
{
giveItems(player, LARAS_3RD_LIST, 1);
break;
}
case 3:
{
giveItems(player, LARAS_4TH_LIST, 1);
break;
}
case 4:
{
giveItems(player, LARAS_5TH_LIST, 1);
break;
}
}
htmltext = event;
break;
}
case "30635-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30635-02.html";
}
break;
}
case "30635-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_1ST, 1);
takeItems(player, CRYSTAL_OF_FOUL_1ST, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_1ST, 1);
htmltext = event;
break;
}
case "30636-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30636-02.html";
}
break;
}
case "30636-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_3RD, 1);
takeItems(player, CRYSTAL_OF_FOUL_3RD, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_3RD, 1);
htmltext = event;
break;
}
case "30637-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30637-02.html";
}
break;
}
case "30637-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_5TH, 1);
takeItems(player, CRYSTAL_OF_FOUL_5TH, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_5TH, 1);
htmltext = event;
break;
}
case "30638-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30638-02.html";
}
break;
}
case "30638-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_2ND, 1);
takeItems(player, CRYSTAL_OF_FOUL_2ND, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_2ND, 1);
htmltext = event;
break;
}
case "30639-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30639-02.html";
}
break;
}
case "30639-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_4TH, 1);
takeItems(player, CRYSTAL_OF_FOUL_4TH, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_4TH, 1);
htmltext = event;
break;
}
case "30640-03.html":
{
if (hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = event;
}
else
{
htmltext = "30640-02.html";
}
break;
}
case "30640-04.html":
{
addSkillCastDesire(npc, player, REDUCTION_IN_RECOVERY_TIME, 1000000);
takeItems(player, BEGINNERS_ARCANA, 1);
giveItems(player, CRYSTAL_OF_STARTING_6TH, 1);
takeItems(player, CRYSTAL_OF_FOUL_6TH, 1);
takeItems(player, CRYSTAL_OF_DEFEAT_6TH, 1);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
{
switch (npc.getId())
{
case PAKO_THE_CAT:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_1ST) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.WHHIISSHH));
takeItems(attacker, CRYSTAL_OF_STARTING_1ST, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_1ST, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_1ST) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_1ST) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_1ST, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_1ST, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_1ST, -1);
}
npc.deleteMe();
}
break;
}
}
break;
}
case UNICORN_RACER:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_3RD) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.START_DUEL));
takeItems(attacker, CRYSTAL_OF_STARTING_3RD, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_3RD, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_3RD) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_3RD) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_3RD, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_3RD, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_3RD, -1);
}
npc.deleteMe();
}
break;
}
}
}
case SHADOW_TUREN:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_5TH) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.SO_SHALL_WE_START));
takeItems(attacker, CRYSTAL_OF_STARTING_5TH, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_5TH, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_5TH) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_5TH) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_5TH, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_5TH, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_5TH, -1);
}
npc.deleteMe();
}
break;
}
}
}
case MIMI_THE_CAT:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_2ND) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.WHISH_FIGHT));
takeItems(attacker, CRYSTAL_OF_STARTING_2ND, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_2ND, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_2ND) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_2ND) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_2ND, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_2ND, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_2ND, -1);
}
npc.deleteMe();
}
break;
}
}
}
case UNICORN_PHANTASM:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_4TH) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.START_DUEL));
takeItems(attacker, CRYSTAL_OF_STARTING_4TH, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_4TH, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_4TH) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_4TH) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_4TH, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_4TH, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_4TH, -1);
}
npc.deleteMe();
}
break;
}
}
}
case SILHOUETTE_TILFO:
{
switch (npc.getScriptValue())
{
case 0:
{
if (isSummon)
{
npc.getVariables().set("ATTACKER", attacker.getSummon());
npc.setScriptValue(1);
startQuestTimer("DESPAWN", 120000, npc, null);
startQuestTimer("KILLED_ATTACKER", 5000, npc, null);
final QuestState qs = getQuestState(attacker, false);
if (hasQuestItems(attacker, CRYSTAL_OF_STARTING_6TH) && (qs != null) && qs.isStarted())
{
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.ILL_WALK_ALL_OVER_YOU));
takeItems(attacker, CRYSTAL_OF_STARTING_6TH, -1);
giveItems(attacker, CRYSTAL_OF_INPROGRESS_6TH, 1);
addAttackPlayerDesire(npc, attacker.getSummon(), 100000);
}
}
break;
}
case 1:
{
if (!isSummon || (npc.getVariables().getObject("ATTACKER", L2Summon.class) != attacker.getSummon()))
{
final QuestState qs = getQuestState(attacker, false);
if (!hasQuestItems(attacker, CRYSTAL_OF_STARTING_6TH) && hasQuestItems(attacker, CRYSTAL_OF_INPROGRESS_6TH) && (qs != null) && qs.isStarted())
{
npc.setScriptValue(2);
Broadcast.toKnownPlayers(npc, new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getTemplate().getDisplayId(), NpcStringId.RULE_VIOLATION));
takeItems(attacker, CRYSTAL_OF_INPROGRESS_6TH, -1);
giveItems(attacker, CRYSTAL_OF_FOUL_6TH, 1);
takeItems(attacker, CRYSTAL_OF_STARTING_6TH, -1);
}
npc.deleteMe();
}
break;
}
}
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true))
{
switch (npc.getId())
{
case NOBLE_ANT:
case NOBLE_ANT_LEADER:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_5TH_LIST))
{
giveItemRandomly(killer, npc, WINGS_OF_DRONEANT, 2, 30, 1.0, true);
}
break;
}
case WYRM:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_5TH_LIST))
{
giveItemRandomly(killer, npc, FANGS_OF_WYRM, 3, 30, 1.0, true);
}
break;
}
case TYRANT:
case TYRANT_KINGPIN:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_4TH_LIST))
{
giveItemRandomly(killer, npc, TALONS_OF_TYRANT, 3, 30, 1.0, true);
}
break;
}
case BREKA_ORC:
case BREKA_ORC_ARCHER:
case BREKA_ORC_WARRIOR:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_3RD_LIST))
{
giveItemRandomly(killer, npc, BREKAORC_TOTEM, 1, 30, 1.0, true);
}
break;
}
case BREKA_ORC_SHAMAN:
case BREKA_ORC_OVERLORD:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_3RD_LIST))
{
giveItemRandomly(killer, npc, BREKAORC_TOTEM, 2, 30, 1.0, true);
}
break;
}
case FETTERED_SOUL:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_3RD_LIST))
{
giveItemRandomly(killer, npc, CRIMSON_BLOODSTONE, 6, 30, 1.0, true);
}
break;
}
case WINDSUS:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_4TH_LIST))
{
giveItemRandomly(killer, npc, TUSK_OF_WINDSUS, 3, 30, 1.0, true);
}
break;
}
case GIANT_FUNGUS:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_1ST_LIST))
{
giveItemRandomly(killer, npc, SAC_OF_REDSPORES, 2, 30, 1.0, true);
}
break;
}
case MANASHEN_GARGOYLE:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_2ND_LIST))
{
giveItemRandomly(killer, npc, SHARDS_OF_MANASHEN, 2, 30, 1.0, true);
}
break;
}
case LETO_LIZARDMAN:
case LETO_LIZARDMAN_ARCHER:
case LETO_LIZARDMAN_SOLDIER:
case LETO_LIZARDMAN_WARRIOR:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_1ST_LIST))
{
giveItemRandomly(killer, npc, LETOLIZARDMAN_AMULET, 1, 30, 1.0, true);
}
break;
}
case LETO_LIZARDMAN_SHAMAN:
case LETO_LIZARDMAN_OVERLORD:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_1ST_LIST))
{
giveItemRandomly(killer, npc, LETOLIZARDMAN_AMULET, 2, 30, 1.0, true);
}
break;
}
case KARUL_BUGBEAR:
{
if (!hasQuestItems(killer, GALATEAS_LETTER) && hasQuestItems(killer, LARAS_2ND_LIST))
{
giveItemRandomly(killer, npc, KARULBUGBEAR_TOTEM, 2, 30, 1.0, true);
}
break;
}
case SILHOUETTE_TILFO:
case UNICORN_PHANTASM:
case MIMI_THE_CAT:
case SHADOW_TUREN:
case UNICORN_RACER:
case PAKO_THE_CAT:
{
final MonsterData data = MONSTERS.get(npc.getId());
if (hasQuestItems(killer, data.getCrystalOfInprogress()))
{
npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, data.getNpcStringId()));
takeItems(killer, data.getCrystalOfInprogress(), 1);
giveItems(killer, data.getCrystalOfVictory(), 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
if (npc.getId() == HIGH_SUMMONER_GALATEA)
{
if ((player.getClassId() == ClassId.wizard) || (player.getClassId() == ClassId.elvenWizard) || (player.getClassId() == ClassId.darkWizard))
{
if (player.getLevel() >= MIN_LEVEL)
{
htmltext = "30634-03.htm";
}
else
{
htmltext = "30634-02.html";
}
}
else
{
htmltext = "30634-01.html";
}
}
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case HIGH_SUMMONER_GALATEA:
{
if (hasQuestItems(player, GALATEAS_LETTER))
{
htmltext = "30634-09.html";
}
else if (!hasQuestItems(player, GALATEAS_LETTER))
{
if (!hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA) && !hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = "30634-10.html";
}
else if (!hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA) && hasQuestItems(player, BEGINNERS_ARCANA))
{
htmltext = "30634-11.html";
}
else if (hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA))
{
giveAdena(player, 300960, true);
giveItems(player, MARK_OF_SUMMONER, 1);
addExpAndSp(player, 1664494, 114220);
qs.exitQuest(false, true);
player.sendPacket(new SocialAction(player.getObjectId(), 3));
htmltext = "30634-12.html";
}
}
break;
}
case GROCER_LARA:
{
if (hasQuestItems(player, GALATEAS_LETTER))
{
htmltext = "30063-01.html";
}
else if (!hasQuestItems(player, GALATEAS_LETTER))
{
if (!hasAtLeastOneQuestItem(player, LARAS_1ST_LIST, LARAS_2ND_LIST, LARAS_3RD_LIST, LARAS_4TH_LIST, LARAS_5TH_LIST))
{
htmltext = "30063-03.html";
}
else if (hasQuestItems(player, LARAS_1ST_LIST))
{
if ((getQuestItemsCount(player, LETOLIZARDMAN_AMULET) >= 30) && (getQuestItemsCount(player, SAC_OF_REDSPORES) >= 30))
{
takeItems(player, LETOLIZARDMAN_AMULET, -1);
takeItems(player, SAC_OF_REDSPORES, -1);
takeItems(player, LARAS_1ST_LIST, 1);
giveItems(player, BEGINNERS_ARCANA, 2);
qs.setCond(3, true);
htmltext = "30063-06.html";
}
else
{
htmltext = "30063-05.html";
}
}
else if (hasQuestItems(player, LARAS_2ND_LIST))
{
if ((getQuestItemsCount(player, KARULBUGBEAR_TOTEM) >= 30) && (getQuestItemsCount(player, SHARDS_OF_MANASHEN) >= 30))
{
takeItems(player, KARULBUGBEAR_TOTEM, -1);
takeItems(player, SHARDS_OF_MANASHEN, -1);
takeItems(player, LARAS_2ND_LIST, 1);
giveItems(player, BEGINNERS_ARCANA, 2);
qs.setCond(3, true);
htmltext = "30063-08.html";
}
else
{
htmltext = "30063-07.html";
}
}
else if (hasQuestItems(player, LARAS_3RD_LIST))
{
if ((getQuestItemsCount(player, BREKAORC_TOTEM) >= 30) && (getQuestItemsCount(player, CRIMSON_BLOODSTONE) >= 30))
{
takeItems(player, BREKAORC_TOTEM, -1);
takeItems(player, CRIMSON_BLOODSTONE, -1);
takeItems(player, LARAS_3RD_LIST, 1);
giveItems(player, BEGINNERS_ARCANA, 2);
qs.setCond(3, true);
htmltext = "30063-10.html";
}
else
{
htmltext = "30063-09.html";
}
}
else if (hasQuestItems(player, LARAS_4TH_LIST))
{
if ((getQuestItemsCount(player, TALONS_OF_TYRANT) >= 30) && (getQuestItemsCount(player, TUSK_OF_WINDSUS) >= 30))
{
takeItems(player, TALONS_OF_TYRANT, -1);
takeItems(player, TUSK_OF_WINDSUS, -1);
takeItems(player, LARAS_4TH_LIST, 1);
giveItems(player, BEGINNERS_ARCANA, 2);
qs.setCond(3, true);
htmltext = "30063-12.html";
}
else
{
htmltext = "30063-11.html";
}
}
else if (hasQuestItems(player, LARAS_5TH_LIST))
{
if ((getQuestItemsCount(player, WINGS_OF_DRONEANT) >= 30) && (getQuestItemsCount(player, FANGS_OF_WYRM) >= 30))
{
takeItems(player, WINGS_OF_DRONEANT, -1);
takeItems(player, FANGS_OF_WYRM, -1);
takeItems(player, LARAS_5TH_LIST, 1);
giveItems(player, BEGINNERS_ARCANA, 2);
qs.setCond(3, true);
htmltext = "30063-14.html";
}
else
{
htmltext = "30063-13.html";
}
}
}
break;
}
case SUMMONER_ALMORS:
{
if (!hasQuestItems(player, ALMORS_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_DEFEAT_1ST, CRYSTAL_OF_VICTORY_1ST))
{
htmltext = "30635-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_VICTORY_1ST) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_1ST))
{
htmltext = "30635-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_DEFEAT_1ST, CRYSTAL_OF_VICTORY_1ST) && hasQuestItems(player, CRYSTAL_OF_FOUL_1ST))
{
htmltext = "30635-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_DEFEAT_1ST) && hasQuestItems(player, CRYSTAL_OF_VICTORY_1ST))
{
giveItems(player, ALMORS_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_1ST, 1);
if (hasQuestItems(player, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30635-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_DEFEAT_1ST, CRYSTAL_OF_VICTORY_1ST) && hasQuestItems(player, CRYSTAL_OF_STARTING_1ST))
{
htmltext = "30635-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_FOUL_1ST, CRYSTAL_OF_DEFEAT_1ST, CRYSTAL_OF_VICTORY_1ST) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_1ST))
{
htmltext = "30635-09.html";
}
}
else
{
htmltext = "30635-10.html";
}
break;
}
case SUMMONER_CAMONIELL:
{
if (!hasQuestItems(player, CAMONIELL_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_DEFEAT_3RD, CRYSTAL_OF_VICTORY_3RD))
{
htmltext = "30636-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_VICTORY_3RD) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_3RD))
{
htmltext = "30636-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_DEFEAT_3RD, CRYSTAL_OF_VICTORY_3RD) && hasQuestItems(player, CRYSTAL_OF_FOUL_3RD))
{
htmltext = "30636-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_DEFEAT_3RD) && hasQuestItems(player, CRYSTAL_OF_VICTORY_3RD))
{
giveItems(player, CAMONIELL_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_3RD, 1);
if (hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30636-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_DEFEAT_3RD, CRYSTAL_OF_VICTORY_3RD) && hasQuestItems(player, CRYSTAL_OF_STARTING_3RD))
{
htmltext = "30636-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_FOUL_3RD, CRYSTAL_OF_DEFEAT_3RD, CRYSTAL_OF_VICTORY_3RD) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_3RD))
{
htmltext = "30636-09.html";
}
}
else
{
htmltext = "30636-10.html";
}
break;
}
case SUMMONER_BELTHUS:
{
if (!hasQuestItems(player, BELTHUS_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_DEFEAT_5TH, CRYSTAL_OF_VICTORY_5TH))
{
htmltext = "30637-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_VICTORY_5TH) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_5TH))
{
htmltext = "30637-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_DEFEAT_5TH, CRYSTAL_OF_VICTORY_5TH) && hasQuestItems(player, CRYSTAL_OF_FOUL_5TH))
{
htmltext = "30637-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_DEFEAT_5TH) && hasQuestItems(player, CRYSTAL_OF_VICTORY_5TH))
{
giveItems(player, BELTHUS_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_5TH, 1);
if (hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BRYNTHEA_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30637-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_DEFEAT_5TH, CRYSTAL_OF_VICTORY_5TH) && hasQuestItems(player, CRYSTAL_OF_STARTING_5TH))
{
htmltext = "30637-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_FOUL_5TH, CRYSTAL_OF_DEFEAT_5TH, CRYSTAL_OF_VICTORY_5TH) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_5TH))
{
htmltext = "30637-09.html";
}
}
else
{
htmltext = "30637-10.html";
}
break;
}
case SUMMONER_BASILLA:
{
if (!hasQuestItems(player, BASILLIA_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_DEFEAT_2ND, CRYSTAL_OF_VICTORY_2ND))
{
htmltext = "30638-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_VICTORY_2ND) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_2ND))
{
htmltext = "30638-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_DEFEAT_2ND, CRYSTAL_OF_VICTORY_2ND) && hasQuestItems(player, CRYSTAL_OF_FOUL_2ND))
{
htmltext = "30638-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_DEFEAT_2ND) && hasQuestItems(player, CRYSTAL_OF_VICTORY_2ND))
{
giveItems(player, BASILLIA_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_2ND, 1);
if (hasQuestItems(player, ALMORS_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30638-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_DEFEAT_2ND, CRYSTAL_OF_VICTORY_2ND) && hasQuestItems(player, CRYSTAL_OF_STARTING_2ND))
{
htmltext = "30638-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_FOUL_2ND, CRYSTAL_OF_DEFEAT_2ND, CRYSTAL_OF_VICTORY_2ND) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_2ND))
{
htmltext = "30638-09.html";
}
}
else
{
htmltext = "30638-10.html";
}
break;
}
case SUMMONER_CELESTIEL:
{
if (!hasQuestItems(player, CELESTIEL_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_DEFEAT_4TH, CRYSTAL_OF_VICTORY_4TH))
{
htmltext = "30639-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_VICTORY_4TH) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_4TH))
{
htmltext = "30639-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_DEFEAT_4TH, CRYSTAL_OF_VICTORY_4TH) && hasQuestItems(player, CRYSTAL_OF_FOUL_4TH))
{
htmltext = "30639-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_DEFEAT_4TH) && hasQuestItems(player, CRYSTAL_OF_VICTORY_4TH))
{
giveItems(player, CELESTIEL_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_4TH, 1);
if (hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, BELTHUS_ARCANA, BRYNTHEA_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30639-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_DEFEAT_4TH, CRYSTAL_OF_VICTORY_4TH) && hasQuestItems(player, CRYSTAL_OF_STARTING_4TH))
{
htmltext = "30639-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_FOUL_4TH, CRYSTAL_OF_DEFEAT_4TH, CRYSTAL_OF_VICTORY_4TH) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_4TH))
{
htmltext = "30639-09.html";
}
}
else
{
htmltext = "30639-10.html";
}
break;
}
case SUMMONER_BRYNTHEA:
{
if (!hasQuestItems(player, BRYNTHEA_ARCANA))
{
if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_DEFEAT_6TH, CRYSTAL_OF_VICTORY_6TH))
{
htmltext = "30640-01.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_VICTORY_6TH) && hasQuestItems(player, CRYSTAL_OF_DEFEAT_6TH))
{
htmltext = "30640-05.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_DEFEAT_6TH, CRYSTAL_OF_VICTORY_6TH) && hasQuestItems(player, CRYSTAL_OF_FOUL_6TH))
{
htmltext = "30640-06.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_DEFEAT_6TH) && hasQuestItems(player, CRYSTAL_OF_VICTORY_6TH))
{
giveItems(player, BRYNTHEA_ARCANA, 1);
takeItems(player, CRYSTAL_OF_VICTORY_6TH, 1);
if (hasQuestItems(player, ALMORS_ARCANA, BASILLIA_ARCANA, CAMONIELL_ARCANA, CELESTIEL_ARCANA, BELTHUS_ARCANA))
{
qs.setCond(4, true);
}
htmltext = "30640-07.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_DEFEAT_6TH, CRYSTAL_OF_VICTORY_6TH) && hasQuestItems(player, CRYSTAL_OF_STARTING_6TH))
{
htmltext = "30640-08.html";
}
else if (!hasAtLeastOneQuestItem(player, CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_FOUL_6TH, CRYSTAL_OF_DEFEAT_6TH, CRYSTAL_OF_VICTORY_6TH) && hasQuestItems(player, CRYSTAL_OF_INPROGRESS_6TH))
{
htmltext = "30640-09.html";
}
}
else
{
htmltext = "30640-10.html";
}
break;
}
}
}
else if (qs.isCompleted())
{
if (npc.getId() == HIGH_SUMMONER_GALATEA)
{
htmltext = getAlreadyCompletedMsg(player);
}
}
return htmltext;
}
private static class MonsterData
{
private final int _crystalOfInprogress;
private final int _crystalOfVictory;
private final NpcStringId _npcStringId;
protected MonsterData(int crystalOfInprogress, int crystalOfVictory, NpcStringId npcStringId)
{
_crystalOfInprogress = crystalOfInprogress;
_crystalOfVictory = crystalOfVictory;
_npcStringId = npcStringId;
}
protected int getCrystalOfInprogress()
{
return _crystalOfInprogress;
}
protected int getCrystalOfVictory()
{
return _crystalOfVictory;
}
protected NpcStringId getNpcStringId()
{
return _npcStringId;
}
}
}